/*******************************************************************************
* Copyright (c) 2008 SAP
* see https://research.qkal.sap.corp/mediawiki/index.php/CoMONET
*
* Date: $Date: 2009-04-23 14:54:43 +0200 (Do, 23 Apr 2009) $
* @version $Revision: 6272 $
* @author: $Author: c5106462 $
*******************************************************************************/
package com.sap.furcas.parsergenerator.tcs.t2m.grammar.rules;
import com.sap.furcas.parsergenerator.tcs.t2m.grammar.ObservationDirectivesHelper;
import com.sap.furcas.parsergenerator.util.VarStringBuffer;
/**
* defines an ANTLR rule for TCS operatorTemplates.
*/
public class OperatorTemplateProductionRule extends ClassProductionRule {
private int additionalLength;
private String parameters;
public OperatorTemplateProductionRule(String ruleHead, String parameters, String initString,
String rulebody, String returnDeclaration) {
super(ruleHead, initString, rulebody, returnDeclaration, ObservationDirectivesHelper.getExitTemplateNotification());
// nullify emptys
if (parameters != null && ! parameters.trim().equals(EMPTY)) {
this.parameters = parameters;
additionalLength += parameters.length() + 2;
} else {
this.parameters = null;
additionalLength = 0;
}
}
@Override
protected void addReturnAndInit(VarStringBuffer buf) {
if (parameters != null) {
buf.append('[');
buf.append(parameters);
buf.append(']');
}
super.addReturnAndInit(buf);
}
/* (non-Javadoc)
* @see com.sap.mi.textual.grammar.impl.tcs.t2m.grammar.rules.IAntlr3Rule#getLength()
*/
@Override
public int getLength() {
return super.getLength() + this.additionalLength;
}
}