// $ANTLR 3.4
package robot.resource.robot.mopp;
import org.antlr.runtime3_4_0.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
@SuppressWarnings({"all", "warnings", "unchecked"})
public class RobotParser extends RobotANTLRParserBase {
public static final String[] tokenNames = new String[] {
"<invalid>", "<EOR>", "<DOWN>", "<UP>", "BOOLEAN_LITERAL", "INT_LITERAL", "LINEBREAK", "STRING_LITERAL", "TEXT", "WHITESPACE", "'('", "')'", "','", "'='", "'and'", "'angle'", "'bip'", "'col'", "'display'", "'distance'", "'do'", "'duration'", "'else'", "'end'", "'hasTurned'", "'if'", "'line'", "'move'", "'msg'", "'not'", "'obstacle'", "'power'", "'repeat'", "'setTurnAngle'", "'stopEngine'", "'stopProgram'", "'then'", "'turn'", "'while'"
};
public static final int EOF=-1;
public static final int T__10=10;
public static final int T__11=11;
public static final int T__12=12;
public static final int T__13=13;
public static final int T__14=14;
public static final int T__15=15;
public static final int T__16=16;
public static final int T__17=17;
public static final int T__18=18;
public static final int T__19=19;
public static final int T__20=20;
public static final int T__21=21;
public static final int T__22=22;
public static final int T__23=23;
public static final int T__24=24;
public static final int T__25=25;
public static final int T__26=26;
public static final int T__27=27;
public static final int T__28=28;
public static final int T__29=29;
public static final int T__30=30;
public static final int T__31=31;
public static final int T__32=32;
public static final int T__33=33;
public static final int T__34=34;
public static final int T__35=35;
public static final int T__36=36;
public static final int T__37=37;
public static final int T__38=38;
public static final int BOOLEAN_LITERAL=4;
public static final int INT_LITERAL=5;
public static final int LINEBREAK=6;
public static final int STRING_LITERAL=7;
public static final int TEXT=8;
public static final int WHITESPACE=9;
// delegates
public RobotANTLRParserBase[] getDelegates() {
return new RobotANTLRParserBase[] {};
}
// delegators
public RobotParser(TokenStream input) {
this(input, new RecognizerSharedState());
}
public RobotParser(TokenStream input, RecognizerSharedState state) {
super(input, state);
this.state.initializeRuleMemo(36 + 1);
}
public String[] getTokenNames() { return RobotParser.tokenNames; }
public String getGrammarFileName() { return "Robot.g"; }
private robot.resource.robot.IRobotTokenResolverFactory tokenResolverFactory = new robot.resource.robot.mopp.RobotTokenResolverFactory();
/**
* the index of the last token that was handled by collectHiddenTokens()
*/
private int lastPosition;
/**
* A flag that indicates whether the parser should remember all expected elements.
* This flag is set to true when using the parse for code completion. Otherwise it
* is set to false.
*/
private boolean rememberExpectedElements = false;
private Object parseToIndexTypeObject;
private int lastTokenIndex = 0;
/**
* A list of expected elements the were collected while parsing the input stream.
* This list is only filled if <code>rememberExpectedElements</code> is set to
* true.
*/
private java.util.List<robot.resource.robot.mopp.RobotExpectedTerminal> expectedElements = new java.util.ArrayList<robot.resource.robot.mopp.RobotExpectedTerminal>();
private int mismatchedTokenRecoveryTries = 0;
/**
* A helper list to allow a lexer to pass errors to its parser
*/
protected java.util.List<org.antlr.runtime3_4_0.RecognitionException> lexerExceptions = java.util.Collections.synchronizedList(new java.util.ArrayList<org.antlr.runtime3_4_0.RecognitionException>());
/**
* Another helper list to allow a lexer to pass positions of errors to its parser
*/
protected java.util.List<Integer> lexerExceptionsPosition = java.util.Collections.synchronizedList(new java.util.ArrayList<Integer>());
/**
* A stack for incomplete objects. This stack is used filled when the parser is
* used for code completion. Whenever the parser starts to read an object it is
* pushed on the stack. Once the element was parser completely it is popped from
* the stack.
*/
java.util.List<org.eclipse.emf.ecore.EObject> incompleteObjects = new java.util.ArrayList<org.eclipse.emf.ecore.EObject>();
private int stopIncludingHiddenTokens;
private int stopExcludingHiddenTokens;
private int tokenIndexOfLastCompleteElement;
private int expectedElementsIndexOfLastCompleteElement;
/**
* The offset indicating the cursor position when the parser is used for code
* completion by calling parseToExpectedElements().
*/
private int cursorOffset;
/**
* The offset of the first hidden token of the last expected element. This offset
* is used to discard expected elements, which are not needed for code completion.
*/
private int lastStartIncludingHidden;
protected void addErrorToResource(final String errorMessage, final int column, final int line, final int startIndex, final int stopIndex) {
postParseCommands.add(new robot.resource.robot.IRobotCommand<robot.resource.robot.IRobotTextResource>() {
public boolean execute(robot.resource.robot.IRobotTextResource resource) {
if (resource == null) {
// the resource can be null if the parser is used for code completion
return true;
}
resource.addProblem(new robot.resource.robot.IRobotProblem() {
public robot.resource.robot.RobotEProblemSeverity getSeverity() {
return robot.resource.robot.RobotEProblemSeverity.ERROR;
}
public robot.resource.robot.RobotEProblemType getType() {
return robot.resource.robot.RobotEProblemType.SYNTAX_ERROR;
}
public String getMessage() {
return errorMessage;
}
public java.util.Collection<robot.resource.robot.IRobotQuickFix> getQuickFixes() {
return null;
}
}, column, line, startIndex, stopIndex);
return true;
}
});
}
public void addExpectedElement(org.eclipse.emf.ecore.EClass eClass, int[] ids) {
if (!this.rememberExpectedElements) {
return;
}
int terminalID = ids[0];
int followSetID = ids[1];
robot.resource.robot.IRobotExpectedElement terminal = robot.resource.robot.grammar.RobotFollowSetProvider.TERMINALS[terminalID];
robot.resource.robot.mopp.RobotContainedFeature[] containmentFeatures = new robot.resource.robot.mopp.RobotContainedFeature[ids.length - 2];
for (int i = 2; i < ids.length; i++) {
containmentFeatures[i - 2] = robot.resource.robot.grammar.RobotFollowSetProvider.LINKS[ids[i]];
}
robot.resource.robot.grammar.RobotContainmentTrace containmentTrace = new robot.resource.robot.grammar.RobotContainmentTrace(eClass, containmentFeatures);
org.eclipse.emf.ecore.EObject container = getLastIncompleteElement();
robot.resource.robot.mopp.RobotExpectedTerminal expectedElement = new robot.resource.robot.mopp.RobotExpectedTerminal(container, terminal, followSetID, containmentTrace);
setPosition(expectedElement, input.index());
int startIncludingHiddenTokens = expectedElement.getStartIncludingHiddenTokens();
if (lastStartIncludingHidden >= 0 && lastStartIncludingHidden < startIncludingHiddenTokens && cursorOffset > startIncludingHiddenTokens) {
// clear list of expected elements
this.expectedElements.clear();
this.expectedElementsIndexOfLastCompleteElement = 0;
}
lastStartIncludingHidden = startIncludingHiddenTokens;
this.expectedElements.add(expectedElement);
}
protected void collectHiddenTokens(org.eclipse.emf.ecore.EObject element) {
}
protected void copyLocalizationInfos(final org.eclipse.emf.ecore.EObject source, final org.eclipse.emf.ecore.EObject target) {
if (disableLocationMap) {
return;
}
postParseCommands.add(new robot.resource.robot.IRobotCommand<robot.resource.robot.IRobotTextResource>() {
public boolean execute(robot.resource.robot.IRobotTextResource resource) {
robot.resource.robot.IRobotLocationMap locationMap = resource.getLocationMap();
if (locationMap == null) {
// the locationMap can be null if the parser is used for code completion
return true;
}
locationMap.setCharStart(target, locationMap.getCharStart(source));
locationMap.setCharEnd(target, locationMap.getCharEnd(source));
locationMap.setColumn(target, locationMap.getColumn(source));
locationMap.setLine(target, locationMap.getLine(source));
return true;
}
});
}
protected void copyLocalizationInfos(final org.antlr.runtime3_4_0.CommonToken source, final org.eclipse.emf.ecore.EObject target) {
if (disableLocationMap) {
return;
}
postParseCommands.add(new robot.resource.robot.IRobotCommand<robot.resource.robot.IRobotTextResource>() {
public boolean execute(robot.resource.robot.IRobotTextResource resource) {
robot.resource.robot.IRobotLocationMap locationMap = resource.getLocationMap();
if (locationMap == null) {
// the locationMap can be null if the parser is used for code completion
return true;
}
if (source == null) {
return true;
}
locationMap.setCharStart(target, source.getStartIndex());
locationMap.setCharEnd(target, source.getStopIndex());
locationMap.setColumn(target, source.getCharPositionInLine());
locationMap.setLine(target, source.getLine());
return true;
}
});
}
/**
* Sets the end character index and the last line for the given object in the
* location map.
*/
protected void setLocalizationEnd(java.util.Collection<robot.resource.robot.IRobotCommand<robot.resource.robot.IRobotTextResource>> postParseCommands , final org.eclipse.emf.ecore.EObject object, final int endChar, final int endLine) {
if (disableLocationMap) {
return;
}
postParseCommands.add(new robot.resource.robot.IRobotCommand<robot.resource.robot.IRobotTextResource>() {
public boolean execute(robot.resource.robot.IRobotTextResource resource) {
robot.resource.robot.IRobotLocationMap locationMap = resource.getLocationMap();
if (locationMap == null) {
// the locationMap can be null if the parser is used for code completion
return true;
}
locationMap.setCharEnd(object, endChar);
locationMap.setLine(object, endLine);
return true;
}
});
}
public robot.resource.robot.IRobotTextParser createInstance(java.io.InputStream actualInputStream, String encoding) {
try {
if (encoding == null) {
return new RobotParser(new org.antlr.runtime3_4_0.CommonTokenStream(new RobotLexer(new org.antlr.runtime3_4_0.ANTLRInputStream(actualInputStream))));
} else {
return new RobotParser(new org.antlr.runtime3_4_0.CommonTokenStream(new RobotLexer(new org.antlr.runtime3_4_0.ANTLRInputStream(actualInputStream, encoding))));
}
} catch (java.io.IOException e) {
new robot.resource.robot.util.RobotRuntimeUtil().logError("Error while creating parser.", e);
return null;
}
}
/**
* This default constructor is only used to call createInstance() on it.
*/
public RobotParser() {
super(null);
}
protected org.eclipse.emf.ecore.EObject doParse() throws org.antlr.runtime3_4_0.RecognitionException {
this.lastPosition = 0;
// required because the lexer class can not be subclassed
((RobotLexer) getTokenStream().getTokenSource()).lexerExceptions = lexerExceptions;
((RobotLexer) getTokenStream().getTokenSource()).lexerExceptionsPosition = lexerExceptionsPosition;
Object typeObject = getTypeObject();
if (typeObject == null) {
return start();
} else if (typeObject instanceof org.eclipse.emf.ecore.EClass) {
org.eclipse.emf.ecore.EClass type = (org.eclipse.emf.ecore.EClass) typeObject;
if (type.getInstanceClass() == robot.robot.ProgramUnit.class) {
return parse_robot_robot_ProgramUnit();
}
}
throw new robot.resource.robot.mopp.RobotUnexpectedContentTypeException(typeObject);
}
public int getMismatchedTokenRecoveryTries() {
return mismatchedTokenRecoveryTries;
}
public Object getMissingSymbol(org.antlr.runtime3_4_0.IntStream arg0, org.antlr.runtime3_4_0.RecognitionException arg1, int arg2, org.antlr.runtime3_4_0.BitSet arg3) {
mismatchedTokenRecoveryTries++;
return super.getMissingSymbol(arg0, arg1, arg2, arg3);
}
public Object getParseToIndexTypeObject() {
return parseToIndexTypeObject;
}
protected Object getTypeObject() {
Object typeObject = getParseToIndexTypeObject();
if (typeObject != null) {
return typeObject;
}
java.util.Map<?,?> options = getOptions();
if (options != null) {
typeObject = options.get(robot.resource.robot.IRobotOptions.RESOURCE_CONTENT_TYPE);
}
return typeObject;
}
/**
* Implementation that calls {@link #doParse()} and handles the thrown
* RecognitionExceptions.
*/
public robot.resource.robot.IRobotParseResult parse() {
terminateParsing = false;
postParseCommands = new java.util.ArrayList<robot.resource.robot.IRobotCommand<robot.resource.robot.IRobotTextResource>>();
robot.resource.robot.mopp.RobotParseResult parseResult = new robot.resource.robot.mopp.RobotParseResult();
try {
org.eclipse.emf.ecore.EObject result = doParse();
if (lexerExceptions.isEmpty()) {
parseResult.setRoot(result);
}
} catch (org.antlr.runtime3_4_0.RecognitionException re) {
reportError(re);
} catch (java.lang.IllegalArgumentException iae) {
if ("The 'no null' constraint is violated".equals(iae.getMessage())) {
// can be caused if a null is set on EMF models where not allowed. this will just
// happen if other errors occurred before
} else {
iae.printStackTrace();
}
}
for (org.antlr.runtime3_4_0.RecognitionException re : lexerExceptions) {
reportLexicalError(re);
}
parseResult.getPostParseCommands().addAll(postParseCommands);
return parseResult;
}
public java.util.List<robot.resource.robot.mopp.RobotExpectedTerminal> parseToExpectedElements(org.eclipse.emf.ecore.EClass type, robot.resource.robot.IRobotTextResource dummyResource, int cursorOffset) {
this.rememberExpectedElements = true;
this.parseToIndexTypeObject = type;
this.cursorOffset = cursorOffset;
this.lastStartIncludingHidden = -1;
final org.antlr.runtime3_4_0.CommonTokenStream tokenStream = (org.antlr.runtime3_4_0.CommonTokenStream) getTokenStream();
robot.resource.robot.IRobotParseResult result = parse();
for (org.eclipse.emf.ecore.EObject incompleteObject : incompleteObjects) {
org.antlr.runtime3_4_0.Lexer lexer = (org.antlr.runtime3_4_0.Lexer) tokenStream.getTokenSource();
int endChar = lexer.getCharIndex();
int endLine = lexer.getLine();
setLocalizationEnd(result.getPostParseCommands(), incompleteObject, endChar, endLine);
}
if (result != null) {
org.eclipse.emf.ecore.EObject root = result.getRoot();
if (root != null) {
dummyResource.getContentsInternal().add(root);
}
for (robot.resource.robot.IRobotCommand<robot.resource.robot.IRobotTextResource> command : result.getPostParseCommands()) {
command.execute(dummyResource);
}
}
// remove all expected elements that were added after the last complete element
expectedElements = expectedElements.subList(0, expectedElementsIndexOfLastCompleteElement + 1);
int lastFollowSetID = expectedElements.get(expectedElementsIndexOfLastCompleteElement).getFollowSetID();
java.util.Set<robot.resource.robot.mopp.RobotExpectedTerminal> currentFollowSet = new java.util.LinkedHashSet<robot.resource.robot.mopp.RobotExpectedTerminal>();
java.util.List<robot.resource.robot.mopp.RobotExpectedTerminal> newFollowSet = new java.util.ArrayList<robot.resource.robot.mopp.RobotExpectedTerminal>();
for (int i = expectedElementsIndexOfLastCompleteElement; i >= 0; i--) {
robot.resource.robot.mopp.RobotExpectedTerminal expectedElementI = expectedElements.get(i);
if (expectedElementI.getFollowSetID() == lastFollowSetID) {
currentFollowSet.add(expectedElementI);
} else {
break;
}
}
int followSetID = 85;
int i;
for (i = tokenIndexOfLastCompleteElement; i < tokenStream.size(); i++) {
org.antlr.runtime3_4_0.CommonToken nextToken = (org.antlr.runtime3_4_0.CommonToken) tokenStream.get(i);
if (nextToken.getType() < 0) {
break;
}
if (nextToken.getChannel() == 99) {
// hidden tokens do not reduce the follow set
} else {
// now that we have found the next visible token the position for that expected
// terminals can be set
for (robot.resource.robot.mopp.RobotExpectedTerminal nextFollow : newFollowSet) {
lastTokenIndex = 0;
setPosition(nextFollow, i);
}
newFollowSet.clear();
// normal tokens do reduce the follow set - only elements that match the token are
// kept
for (robot.resource.robot.mopp.RobotExpectedTerminal nextFollow : currentFollowSet) {
if (nextFollow.getTerminal().getTokenNames().contains(getTokenNames()[nextToken.getType()])) {
// keep this one - it matches
java.util.Collection<robot.resource.robot.util.RobotPair<robot.resource.robot.IRobotExpectedElement, robot.resource.robot.mopp.RobotContainedFeature[]>> newFollowers = nextFollow.getTerminal().getFollowers();
for (robot.resource.robot.util.RobotPair<robot.resource.robot.IRobotExpectedElement, robot.resource.robot.mopp.RobotContainedFeature[]> newFollowerPair : newFollowers) {
robot.resource.robot.IRobotExpectedElement newFollower = newFollowerPair.getLeft();
org.eclipse.emf.ecore.EObject container = getLastIncompleteElement();
robot.resource.robot.grammar.RobotContainmentTrace containmentTrace = new robot.resource.robot.grammar.RobotContainmentTrace(null, newFollowerPair.getRight());
robot.resource.robot.mopp.RobotExpectedTerminal newFollowTerminal = new robot.resource.robot.mopp.RobotExpectedTerminal(container, newFollower, followSetID, containmentTrace);
newFollowSet.add(newFollowTerminal);
expectedElements.add(newFollowTerminal);
}
}
}
currentFollowSet.clear();
currentFollowSet.addAll(newFollowSet);
}
followSetID++;
}
// after the last token in the stream we must set the position for the elements
// that were added during the last iteration of the loop
for (robot.resource.robot.mopp.RobotExpectedTerminal nextFollow : newFollowSet) {
lastTokenIndex = 0;
setPosition(nextFollow, i);
}
return this.expectedElements;
}
public void setPosition(robot.resource.robot.mopp.RobotExpectedTerminal expectedElement, int tokenIndex) {
int currentIndex = Math.max(0, tokenIndex);
for (int index = lastTokenIndex; index < currentIndex; index++) {
if (index >= input.size()) {
break;
}
org.antlr.runtime3_4_0.CommonToken tokenAtIndex = (org.antlr.runtime3_4_0.CommonToken) input.get(index);
stopIncludingHiddenTokens = tokenAtIndex.getStopIndex() + 1;
if (tokenAtIndex.getChannel() != 99 && !anonymousTokens.contains(tokenAtIndex)) {
stopExcludingHiddenTokens = tokenAtIndex.getStopIndex() + 1;
}
}
lastTokenIndex = Math.max(0, currentIndex);
expectedElement.setPosition(stopExcludingHiddenTokens, stopIncludingHiddenTokens);
}
public Object recoverFromMismatchedToken(org.antlr.runtime3_4_0.IntStream input, int ttype, org.antlr.runtime3_4_0.BitSet follow) throws org.antlr.runtime3_4_0.RecognitionException {
if (!rememberExpectedElements) {
return super.recoverFromMismatchedToken(input, ttype, follow);
} else {
return null;
}
}
/**
* Translates errors thrown by the parser into human readable messages.
*/
public void reportError(final org.antlr.runtime3_4_0.RecognitionException e) {
String message = e.getMessage();
if (e instanceof org.antlr.runtime3_4_0.MismatchedTokenException) {
org.antlr.runtime3_4_0.MismatchedTokenException mte = (org.antlr.runtime3_4_0.MismatchedTokenException) e;
String expectedTokenName = formatTokenName(mte.expecting);
String actualTokenName = formatTokenName(e.token.getType());
message = "Syntax error on token \"" + e.token.getText() + " (" + actualTokenName + ")\", \"" + expectedTokenName + "\" expected";
} else if (e instanceof org.antlr.runtime3_4_0.MismatchedTreeNodeException) {
org.antlr.runtime3_4_0.MismatchedTreeNodeException mtne = (org.antlr.runtime3_4_0.MismatchedTreeNodeException) e;
String expectedTokenName = formatTokenName(mtne.expecting);
message = "mismatched tree node: " + "xxx" + "; tokenName " + expectedTokenName;
} else if (e instanceof org.antlr.runtime3_4_0.NoViableAltException) {
message = "Syntax error on token \"" + e.token.getText() + "\", check following tokens";
} else if (e instanceof org.antlr.runtime3_4_0.EarlyExitException) {
message = "Syntax error on token \"" + e.token.getText() + "\", delete this token";
} else if (e instanceof org.antlr.runtime3_4_0.MismatchedSetException) {
org.antlr.runtime3_4_0.MismatchedSetException mse = (org.antlr.runtime3_4_0.MismatchedSetException) e;
message = "mismatched token: " + e.token + "; expecting set " + mse.expecting;
} else if (e instanceof org.antlr.runtime3_4_0.MismatchedNotSetException) {
org.antlr.runtime3_4_0.MismatchedNotSetException mse = (org.antlr.runtime3_4_0.MismatchedNotSetException) e;
message = "mismatched token: " + e.token + "; expecting set " + mse.expecting;
} else if (e instanceof org.antlr.runtime3_4_0.FailedPredicateException) {
org.antlr.runtime3_4_0.FailedPredicateException fpe = (org.antlr.runtime3_4_0.FailedPredicateException) e;
message = "rule " + fpe.ruleName + " failed predicate: {" + fpe.predicateText + "}?";
}
// the resource may be null if the parser is used for code completion
final String finalMessage = message;
if (e.token instanceof org.antlr.runtime3_4_0.CommonToken) {
final org.antlr.runtime3_4_0.CommonToken ct = (org.antlr.runtime3_4_0.CommonToken) e.token;
addErrorToResource(finalMessage, ct.getCharPositionInLine(), ct.getLine(), ct.getStartIndex(), ct.getStopIndex());
} else {
addErrorToResource(finalMessage, e.token.getCharPositionInLine(), e.token.getLine(), 1, 5);
}
}
/**
* Translates errors thrown by the lexer into human readable messages.
*/
public void reportLexicalError(final org.antlr.runtime3_4_0.RecognitionException e) {
String message = "";
if (e instanceof org.antlr.runtime3_4_0.MismatchedTokenException) {
org.antlr.runtime3_4_0.MismatchedTokenException mte = (org.antlr.runtime3_4_0.MismatchedTokenException) e;
message = "Syntax error on token \"" + ((char) e.c) + "\", \"" + (char) mte.expecting + "\" expected";
} else if (e instanceof org.antlr.runtime3_4_0.NoViableAltException) {
message = "Syntax error on token \"" + ((char) e.c) + "\", delete this token";
} else if (e instanceof org.antlr.runtime3_4_0.EarlyExitException) {
org.antlr.runtime3_4_0.EarlyExitException eee = (org.antlr.runtime3_4_0.EarlyExitException) e;
message = "required (...)+ loop (decision=" + eee.decisionNumber + ") did not match anything; on line " + e.line + ":" + e.charPositionInLine + " char=" + ((char) e.c) + "'";
} else if (e instanceof org.antlr.runtime3_4_0.MismatchedSetException) {
org.antlr.runtime3_4_0.MismatchedSetException mse = (org.antlr.runtime3_4_0.MismatchedSetException) e;
message = "mismatched char: '" + ((char) e.c) + "' on line " + e.line + ":" + e.charPositionInLine + "; expecting set " + mse.expecting;
} else if (e instanceof org.antlr.runtime3_4_0.MismatchedNotSetException) {
org.antlr.runtime3_4_0.MismatchedNotSetException mse = (org.antlr.runtime3_4_0.MismatchedNotSetException) e;
message = "mismatched char: '" + ((char) e.c) + "' on line " + e.line + ":" + e.charPositionInLine + "; expecting set " + mse.expecting;
} else if (e instanceof org.antlr.runtime3_4_0.MismatchedRangeException) {
org.antlr.runtime3_4_0.MismatchedRangeException mre = (org.antlr.runtime3_4_0.MismatchedRangeException) e;
message = "mismatched char: '" + ((char) e.c) + "' on line " + e.line + ":" + e.charPositionInLine + "; expecting set '" + (char) mre.a + "'..'" + (char) mre.b + "'";
} else if (e instanceof org.antlr.runtime3_4_0.FailedPredicateException) {
org.antlr.runtime3_4_0.FailedPredicateException fpe = (org.antlr.runtime3_4_0.FailedPredicateException) e;
message = "rule " + fpe.ruleName + " failed predicate: {" + fpe.predicateText + "}?";
}
addErrorToResource(message, e.charPositionInLine, e.line, lexerExceptionsPosition.get(lexerExceptions.indexOf(e)), lexerExceptionsPosition.get(lexerExceptions.indexOf(e)));
}
private void startIncompleteElement(Object object) {
if (object instanceof org.eclipse.emf.ecore.EObject) {
this.incompleteObjects.add((org.eclipse.emf.ecore.EObject) object);
}
}
private void completedElement(Object object, boolean isContainment) {
if (isContainment && !this.incompleteObjects.isEmpty()) {
boolean exists = this.incompleteObjects.remove(object);
if (!exists) {
}
}
if (object instanceof org.eclipse.emf.ecore.EObject) {
this.tokenIndexOfLastCompleteElement = getTokenStream().index();
this.expectedElementsIndexOfLastCompleteElement = expectedElements.size() - 1;
}
}
private org.eclipse.emf.ecore.EObject getLastIncompleteElement() {
if (incompleteObjects.isEmpty()) {
return null;
}
return incompleteObjects.get(incompleteObjects.size() - 1);
}
// $ANTLR start "start"
// Robot.g:499:1: start returns [ org.eclipse.emf.ecore.EObject element = null] : (c0= parse_robot_robot_ProgramUnit ) EOF ;
public final org.eclipse.emf.ecore.EObject start() throws RecognitionException {
org.eclipse.emf.ecore.EObject element = null;
int start_StartIndex = input.index();
robot.robot.ProgramUnit c0 =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 1) ) { return element; }
// Robot.g:500:2: ( (c0= parse_robot_robot_ProgramUnit ) EOF )
// Robot.g:501:2: (c0= parse_robot_robot_ProgramUnit ) EOF
{
if ( state.backtracking==0 ) {
// follow set for start rule(s)
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[0]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[1]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[2]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[3]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[4]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[5]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[6]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[7]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[8]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[9]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[10]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[11]);
expectedElementsIndexOfLastCompleteElement = 0;
}
// Robot.g:517:2: (c0= parse_robot_robot_ProgramUnit )
// Robot.g:518:3: c0= parse_robot_robot_ProgramUnit
{
pushFollow(FOLLOW_parse_robot_robot_ProgramUnit_in_start82);
c0=parse_robot_robot_ProgramUnit();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) { element = c0; }
}
match(input,EOF,FOLLOW_EOF_in_start89); if (state.failed) return element;
if ( state.backtracking==0 ) {
retrieveLayoutInformation(element, null, null, false);
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 1, start_StartIndex); }
}
return element;
}
// $ANTLR end "start"
// $ANTLR start "parse_robot_robot_ProgramUnit"
// Robot.g:526:1: parse_robot_robot_ProgramUnit returns [robot.robot.ProgramUnit element = null] : ( (a0_0= parse_robot_FlotCtrl_Expression ) )* ;
public final robot.robot.ProgramUnit parse_robot_robot_ProgramUnit() throws RecognitionException {
robot.robot.ProgramUnit element = null;
int parse_robot_robot_ProgramUnit_StartIndex = input.index();
robot.FlotCtrl.Expression a0_0 =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 2) ) { return element; }
// Robot.g:529:2: ( ( (a0_0= parse_robot_FlotCtrl_Expression ) )* )
// Robot.g:530:2: ( (a0_0= parse_robot_FlotCtrl_Expression ) )*
{
// Robot.g:530:2: ( (a0_0= parse_robot_FlotCtrl_Expression ) )*
loop1:
do {
int alt1=2;
int LA1_0 = input.LA(1);
if ( (LA1_0==16||LA1_0==18||LA1_0==25||LA1_0==27||(LA1_0 >= 33 && LA1_0 <= 35)||(LA1_0 >= 37 && LA1_0 <= 38)) ) {
alt1=1;
}
switch (alt1) {
case 1 :
// Robot.g:531:3: (a0_0= parse_robot_FlotCtrl_Expression )
{
// Robot.g:531:3: (a0_0= parse_robot_FlotCtrl_Expression )
// Robot.g:532:4: a0_0= parse_robot_FlotCtrl_Expression
{
pushFollow(FOLLOW_parse_robot_FlotCtrl_Expression_in_parse_robot_robot_ProgramUnit124);
a0_0=parse_robot_FlotCtrl_Expression();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createProgramUnit();
startIncompleteElement(element);
}
if (a0_0 != null) {
if (a0_0 != null) {
Object value = a0_0;
addObjectToList(element, robot.robot.RobotPackage.PROGRAM_UNIT__BLOCK, value);
completedElement(value, true);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_0_0_0_0, a0_0, true);
copyLocalizationInfos(a0_0, element);
}
}
}
}
break;
default :
break loop1;
}
} while (true);
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[12]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[13]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[14]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[15]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[16]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[17]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[18]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[19]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[20]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[21]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[22]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[23]);
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 2, parse_robot_robot_ProgramUnit_StartIndex); }
}
return element;
}
// $ANTLR end "parse_robot_robot_ProgramUnit"
// $ANTLR start "parseop_BoolExp_level_1"
// Robot.g:571:1: parseop_BoolExp_level_1 returns [robot.FlotCtrl.BoolExp element = null] : leftArg= parseop_BoolExp_level_2 ( ( () a0= 'and' rightArg= parseop_BoolExp_level_2 )+ |) ;
public final robot.FlotCtrl.BoolExp parseop_BoolExp_level_1() throws RecognitionException {
robot.FlotCtrl.BoolExp element = null;
int parseop_BoolExp_level_1_StartIndex = input.index();
Token a0=null;
robot.FlotCtrl.BoolExp leftArg =null;
robot.FlotCtrl.BoolExp rightArg =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 3) ) { return element; }
// Robot.g:574:2: (leftArg= parseop_BoolExp_level_2 ( ( () a0= 'and' rightArg= parseop_BoolExp_level_2 )+ |) )
// Robot.g:575:2: leftArg= parseop_BoolExp_level_2 ( ( () a0= 'and' rightArg= parseop_BoolExp_level_2 )+ |)
{
pushFollow(FOLLOW_parseop_BoolExp_level_2_in_parseop_BoolExp_level_1165);
leftArg=parseop_BoolExp_level_2();
state._fsp--;
if (state.failed) return element;
// Robot.g:575:36: ( ( () a0= 'and' rightArg= parseop_BoolExp_level_2 )+ |)
int alt3=2;
int LA3_0 = input.LA(1);
if ( (LA3_0==14) ) {
alt3=1;
}
else if ( (LA3_0==20||LA3_0==36) ) {
alt3=2;
}
else {
if (state.backtracking>0) {state.failed=true; return element;}
NoViableAltException nvae =
new NoViableAltException("", 3, 0, input);
throw nvae;
}
switch (alt3) {
case 1 :
// Robot.g:575:37: ( () a0= 'and' rightArg= parseop_BoolExp_level_2 )+
{
// Robot.g:575:37: ( () a0= 'and' rightArg= parseop_BoolExp_level_2 )+
int cnt2=0;
loop2:
do {
int alt2=2;
int LA2_0 = input.LA(1);
if ( (LA2_0==14) ) {
alt2=1;
}
switch (alt2) {
case 1 :
// Robot.g:576:3: () a0= 'and' rightArg= parseop_BoolExp_level_2
{
// Robot.g:576:3: ()
// Robot.g:576:4:
{
}
if ( state.backtracking==0 ) { element = null; }
a0=(Token)match(input,14,FOLLOW_14_in_parseop_BoolExp_level_1185); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createAndExp();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_1_0_0_1, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getAndExp(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[24]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getAndExp(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[25]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getAndExp(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[26]);
}
pushFollow(FOLLOW_parseop_BoolExp_level_2_in_parseop_BoolExp_level_1202);
rightArg=parseop_BoolExp_level_2();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createAndExp();
startIncompleteElement(element);
}
if (leftArg != null) {
if (leftArg != null) {
Object value = leftArg;
element.eSet(element.eClass().getEStructuralFeature(robot.FlotCtrl.FlotCtrlPackage.AND_EXP__LEFT_EXP), value);
completedElement(value, true);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_1_0_0_0, leftArg, true);
copyLocalizationInfos(leftArg, element);
}
}
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createAndExp();
startIncompleteElement(element);
}
if (rightArg != null) {
if (rightArg != null) {
Object value = rightArg;
element.eSet(element.eClass().getEStructuralFeature(robot.FlotCtrl.FlotCtrlPackage.AND_EXP__RIGHT_EXP), value);
completedElement(value, true);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_1_0_0_2, rightArg, true);
copyLocalizationInfos(rightArg, element);
}
}
if ( state.backtracking==0 ) { leftArg = element; /* this may become an argument in the next iteration */ }
}
break;
default :
if ( cnt2 >= 1 ) break loop2;
if (state.backtracking>0) {state.failed=true; return element;}
EarlyExitException eee =
new EarlyExitException(2, input);
throw eee;
}
cnt2++;
} while (true);
}
break;
case 2 :
// Robot.g:633:21:
{
if ( state.backtracking==0 ) { element = leftArg; }
}
break;
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 3, parseop_BoolExp_level_1_StartIndex); }
}
return element;
}
// $ANTLR end "parseop_BoolExp_level_1"
// $ANTLR start "parseop_BoolExp_level_2"
// Robot.g:638:1: parseop_BoolExp_level_2 returns [robot.FlotCtrl.BoolExp element = null] : (a0= 'not' arg= parseop_BoolExp_level_3 |arg= parseop_BoolExp_level_3 );
public final robot.FlotCtrl.BoolExp parseop_BoolExp_level_2() throws RecognitionException {
robot.FlotCtrl.BoolExp element = null;
int parseop_BoolExp_level_2_StartIndex = input.index();
Token a0=null;
robot.FlotCtrl.BoolExp arg =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 4) ) { return element; }
// Robot.g:641:0: (a0= 'not' arg= parseop_BoolExp_level_3 |arg= parseop_BoolExp_level_3 )
int alt4=2;
int LA4_0 = input.LA(1);
if ( (LA4_0==29) ) {
alt4=1;
}
else if ( (LA4_0==24||LA4_0==30) ) {
alt4=2;
}
else {
if (state.backtracking>0) {state.failed=true; return element;}
NoViableAltException nvae =
new NoViableAltException("", 4, 0, input);
throw nvae;
}
switch (alt4) {
case 1 :
// Robot.g:642:0: a0= 'not' arg= parseop_BoolExp_level_3
{
a0=(Token)match(input,29,FOLLOW_29_in_parseop_BoolExp_level_2248); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createNegExp();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_2_0_0_0, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getNegExp(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[27]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getNegExp(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[28]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getNegExp(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[29]);
}
pushFollow(FOLLOW_parseop_BoolExp_level_3_in_parseop_BoolExp_level_2259);
arg=parseop_BoolExp_level_3();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createNegExp();
startIncompleteElement(element);
}
if (arg != null) {
if (arg != null) {
Object value = arg;
element.eSet(element.eClass().getEStructuralFeature(robot.FlotCtrl.FlotCtrlPackage.NEG_EXP__EXP), value);
completedElement(value, true);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_2_0_0_1, arg, true);
copyLocalizationInfos(arg, element);
}
}
}
break;
case 2 :
// Robot.g:679:5: arg= parseop_BoolExp_level_3
{
pushFollow(FOLLOW_parseop_BoolExp_level_3_in_parseop_BoolExp_level_2269);
arg=parseop_BoolExp_level_3();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) { element = arg; }
}
break;
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 4, parseop_BoolExp_level_2_StartIndex); }
}
return element;
}
// $ANTLR end "parseop_BoolExp_level_2"
// $ANTLR start "parseop_BoolExp_level_3"
// Robot.g:682:1: parseop_BoolExp_level_3 returns [robot.FlotCtrl.BoolExp element = null] : (c0= parse_robot_robot_HasTurnedCmd |c1= parse_robot_robot_ObstacleCmd );
public final robot.FlotCtrl.BoolExp parseop_BoolExp_level_3() throws RecognitionException {
robot.FlotCtrl.BoolExp element = null;
int parseop_BoolExp_level_3_StartIndex = input.index();
robot.robot.HasTurnedCmd c0 =null;
robot.robot.ObstacleCmd c1 =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 5) ) { return element; }
// Robot.g:685:0: (c0= parse_robot_robot_HasTurnedCmd |c1= parse_robot_robot_ObstacleCmd )
int alt5=2;
int LA5_0 = input.LA(1);
if ( (LA5_0==24) ) {
alt5=1;
}
else if ( (LA5_0==30) ) {
alt5=2;
}
else {
if (state.backtracking>0) {state.failed=true; return element;}
NoViableAltException nvae =
new NoViableAltException("", 5, 0, input);
throw nvae;
}
switch (alt5) {
case 1 :
// Robot.g:686:0: c0= parse_robot_robot_HasTurnedCmd
{
pushFollow(FOLLOW_parse_robot_robot_HasTurnedCmd_in_parseop_BoolExp_level_3291);
c0=parse_robot_robot_HasTurnedCmd();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
}
break;
case 2 :
// Robot.g:687:2: c1= parse_robot_robot_ObstacleCmd
{
pushFollow(FOLLOW_parse_robot_robot_ObstacleCmd_in_parseop_BoolExp_level_3299);
c1=parse_robot_robot_ObstacleCmd();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
}
break;
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 5, parseop_BoolExp_level_3_StartIndex); }
}
return element;
}
// $ANTLR end "parseop_BoolExp_level_3"
// $ANTLR start "parse_robot_robot_HasTurnedCmd"
// Robot.g:690:1: parse_robot_robot_HasTurnedCmd returns [robot.robot.HasTurnedCmd element = null] : a0= 'hasTurned' a1= '(' a2= 'angle' a3= '=' (a4= INT_LITERAL ) a5= ')' ;
public final robot.robot.HasTurnedCmd parse_robot_robot_HasTurnedCmd() throws RecognitionException {
robot.robot.HasTurnedCmd element = null;
int parse_robot_robot_HasTurnedCmd_StartIndex = input.index();
Token a0=null;
Token a1=null;
Token a2=null;
Token a3=null;
Token a4=null;
Token a5=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 6) ) { return element; }
// Robot.g:693:4: (a0= 'hasTurned' a1= '(' a2= 'angle' a3= '=' (a4= INT_LITERAL ) a5= ')' )
// Robot.g:694:4: a0= 'hasTurned' a1= '(' a2= 'angle' a3= '=' (a4= INT_LITERAL ) a5= ')'
{
a0=(Token)match(input,24,FOLLOW_24_in_parse_robot_robot_HasTurnedCmd321); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createHasTurnedCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_3_0_0_0, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[30]);
}
a1=(Token)match(input,10,FOLLOW_10_in_parse_robot_robot_HasTurnedCmd332); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createHasTurnedCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_3_0_0_1, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[31]);
}
a2=(Token)match(input,15,FOLLOW_15_in_parse_robot_robot_HasTurnedCmd343); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createHasTurnedCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_3_0_0_2, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[32]);
}
a3=(Token)match(input,13,FOLLOW_13_in_parse_robot_robot_HasTurnedCmd354); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createHasTurnedCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_3_0_0_3, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[33]);
}
// Robot.g:750:2: (a4= INT_LITERAL )
// Robot.g:751:2: a4= INT_LITERAL
{
a4=(Token)match(input,INT_LITERAL,FOLLOW_INT_LITERAL_in_parse_robot_robot_HasTurnedCmd368); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createHasTurnedCmd();
startIncompleteElement(element);
}
if (a4 != null) {
robot.resource.robot.IRobotTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("INT_LITERAL");
tokenResolver.setOptions(getOptions());
robot.resource.robot.IRobotTokenResolveResult result = getFreshTokenResolveResult();
tokenResolver.resolve(a4.getText(), element.eClass().getEStructuralFeature(robot.robot.RobotPackage.HAS_TURNED_CMD__ANGLE), result);
Object resolvedObject = result.getResolvedToken();
if (resolvedObject == null) {
addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a4).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStopIndex());
}
java.lang.Double resolved = (java.lang.Double) resolvedObject;
if (resolved != null) {
Object value = resolved;
element.eSet(element.eClass().getEStructuralFeature(robot.robot.RobotPackage.HAS_TURNED_CMD__ANGLE), value);
completedElement(value, false);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_3_0_0_4, resolved, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a4, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[34]);
}
a5=(Token)match(input,11,FOLLOW_11_in_parse_robot_robot_HasTurnedCmd383); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createHasTurnedCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_3_0_0_5, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[35]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[36]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[37]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[38]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[39]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[40]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[41]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[42]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[43]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[44]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[45]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[46]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[47]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[48]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[49]);
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 6, parse_robot_robot_HasTurnedCmd_StartIndex); }
}
return element;
}
// $ANTLR end "parse_robot_robot_HasTurnedCmd"
// $ANTLR start "parse_robot_robot_ObstacleCmd"
// Robot.g:816:1: parse_robot_robot_ObstacleCmd returns [robot.robot.ObstacleCmd element = null] : a0= 'obstacle' a1= '(' a2= 'distance' a3= '=' (a4= INT_LITERAL ) a5= ')' ;
public final robot.robot.ObstacleCmd parse_robot_robot_ObstacleCmd() throws RecognitionException {
robot.robot.ObstacleCmd element = null;
int parse_robot_robot_ObstacleCmd_StartIndex = input.index();
Token a0=null;
Token a1=null;
Token a2=null;
Token a3=null;
Token a4=null;
Token a5=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 7) ) { return element; }
// Robot.g:819:4: (a0= 'obstacle' a1= '(' a2= 'distance' a3= '=' (a4= INT_LITERAL ) a5= ')' )
// Robot.g:820:4: a0= 'obstacle' a1= '(' a2= 'distance' a3= '=' (a4= INT_LITERAL ) a5= ')'
{
a0=(Token)match(input,30,FOLLOW_30_in_parse_robot_robot_ObstacleCmd409); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createObstacleCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_4_0_0_0, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[50]);
}
a1=(Token)match(input,10,FOLLOW_10_in_parse_robot_robot_ObstacleCmd420); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createObstacleCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_4_0_0_1, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[51]);
}
a2=(Token)match(input,19,FOLLOW_19_in_parse_robot_robot_ObstacleCmd431); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createObstacleCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_4_0_0_2, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[52]);
}
a3=(Token)match(input,13,FOLLOW_13_in_parse_robot_robot_ObstacleCmd442); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createObstacleCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_4_0_0_3, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[53]);
}
// Robot.g:876:2: (a4= INT_LITERAL )
// Robot.g:877:2: a4= INT_LITERAL
{
a4=(Token)match(input,INT_LITERAL,FOLLOW_INT_LITERAL_in_parse_robot_robot_ObstacleCmd456); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createObstacleCmd();
startIncompleteElement(element);
}
if (a4 != null) {
robot.resource.robot.IRobotTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("INT_LITERAL");
tokenResolver.setOptions(getOptions());
robot.resource.robot.IRobotTokenResolveResult result = getFreshTokenResolveResult();
tokenResolver.resolve(a4.getText(), element.eClass().getEStructuralFeature(robot.robot.RobotPackage.OBSTACLE_CMD__DISTANCE), result);
Object resolvedObject = result.getResolvedToken();
if (resolvedObject == null) {
addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a4).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStopIndex());
}
java.lang.Double resolved = (java.lang.Double) resolvedObject;
if (resolved != null) {
Object value = resolved;
element.eSet(element.eClass().getEStructuralFeature(robot.robot.RobotPackage.OBSTACLE_CMD__DISTANCE), value);
completedElement(value, false);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_4_0_0_4, resolved, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a4, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[54]);
}
a5=(Token)match(input,11,FOLLOW_11_in_parse_robot_robot_ObstacleCmd471); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createObstacleCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_4_0_0_5, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[55]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[56]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[57]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[58]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[59]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[60]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[61]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[62]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[63]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[64]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[65]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[66]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[67]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[68]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[69]);
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 7, parse_robot_robot_ObstacleCmd_StartIndex); }
}
return element;
}
// $ANTLR end "parse_robot_robot_ObstacleCmd"
// $ANTLR start "parseop_Expression_level_3"
// Robot.g:942:1: parseop_Expression_level_3 returns [robot.FlotCtrl.Expression element = null] : (c0= parse_robot_FlotCtrl_WhileLoop |c1= parse_robot_FlotCtrl_IfBlock |c2= parse_robot_robot_Bip |c3= parse_robot_robot_MoveCmd |c4= parse_robot_robot_PrintCmd |c5= parse_robot_robot_SetTurnAngleCmd |c6= parse_robot_robot_StopEngineCmd |c7= parse_robot_robot_StopProgramCmd |c8= parse_robot_robot_TurnCmd );
public final robot.FlotCtrl.Expression parseop_Expression_level_3() throws RecognitionException {
robot.FlotCtrl.Expression element = null;
int parseop_Expression_level_3_StartIndex = input.index();
robot.FlotCtrl.WhileLoop c0 =null;
robot.FlotCtrl.IfBlock c1 =null;
robot.robot.Bip c2 =null;
robot.robot.MoveCmd c3 =null;
robot.robot.PrintCmd c4 =null;
robot.robot.SetTurnAngleCmd c5 =null;
robot.robot.StopEngineCmd c6 =null;
robot.robot.StopProgramCmd c7 =null;
robot.robot.TurnCmd c8 =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 8) ) { return element; }
// Robot.g:945:0: (c0= parse_robot_FlotCtrl_WhileLoop |c1= parse_robot_FlotCtrl_IfBlock |c2= parse_robot_robot_Bip |c3= parse_robot_robot_MoveCmd |c4= parse_robot_robot_PrintCmd |c5= parse_robot_robot_SetTurnAngleCmd |c6= parse_robot_robot_StopEngineCmd |c7= parse_robot_robot_StopProgramCmd |c8= parse_robot_robot_TurnCmd )
int alt6=9;
switch ( input.LA(1) ) {
case 38:
{
alt6=1;
}
break;
case 25:
{
alt6=2;
}
break;
case 16:
{
alt6=3;
}
break;
case 27:
{
alt6=4;
}
break;
case 18:
{
alt6=5;
}
break;
case 33:
{
alt6=6;
}
break;
case 34:
{
alt6=7;
}
break;
case 35:
{
alt6=8;
}
break;
case 37:
{
alt6=9;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return element;}
NoViableAltException nvae =
new NoViableAltException("", 6, 0, input);
throw nvae;
}
switch (alt6) {
case 1 :
// Robot.g:946:0: c0= parse_robot_FlotCtrl_WhileLoop
{
pushFollow(FOLLOW_parse_robot_FlotCtrl_WhileLoop_in_parseop_Expression_level_3497);
c0=parse_robot_FlotCtrl_WhileLoop();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
}
break;
case 2 :
// Robot.g:947:2: c1= parse_robot_FlotCtrl_IfBlock
{
pushFollow(FOLLOW_parse_robot_FlotCtrl_IfBlock_in_parseop_Expression_level_3505);
c1=parse_robot_FlotCtrl_IfBlock();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
}
break;
case 3 :
// Robot.g:948:2: c2= parse_robot_robot_Bip
{
pushFollow(FOLLOW_parse_robot_robot_Bip_in_parseop_Expression_level_3513);
c2=parse_robot_robot_Bip();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
}
break;
case 4 :
// Robot.g:949:2: c3= parse_robot_robot_MoveCmd
{
pushFollow(FOLLOW_parse_robot_robot_MoveCmd_in_parseop_Expression_level_3521);
c3=parse_robot_robot_MoveCmd();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) { element = c3; /* this is a subclass or primitive expression choice */ }
}
break;
case 5 :
// Robot.g:950:2: c4= parse_robot_robot_PrintCmd
{
pushFollow(FOLLOW_parse_robot_robot_PrintCmd_in_parseop_Expression_level_3529);
c4=parse_robot_robot_PrintCmd();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) { element = c4; /* this is a subclass or primitive expression choice */ }
}
break;
case 6 :
// Robot.g:951:2: c5= parse_robot_robot_SetTurnAngleCmd
{
pushFollow(FOLLOW_parse_robot_robot_SetTurnAngleCmd_in_parseop_Expression_level_3537);
c5=parse_robot_robot_SetTurnAngleCmd();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) { element = c5; /* this is a subclass or primitive expression choice */ }
}
break;
case 7 :
// Robot.g:952:2: c6= parse_robot_robot_StopEngineCmd
{
pushFollow(FOLLOW_parse_robot_robot_StopEngineCmd_in_parseop_Expression_level_3545);
c6=parse_robot_robot_StopEngineCmd();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) { element = c6; /* this is a subclass or primitive expression choice */ }
}
break;
case 8 :
// Robot.g:953:2: c7= parse_robot_robot_StopProgramCmd
{
pushFollow(FOLLOW_parse_robot_robot_StopProgramCmd_in_parseop_Expression_level_3553);
c7=parse_robot_robot_StopProgramCmd();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) { element = c7; /* this is a subclass or primitive expression choice */ }
}
break;
case 9 :
// Robot.g:954:2: c8= parse_robot_robot_TurnCmd
{
pushFollow(FOLLOW_parse_robot_robot_TurnCmd_in_parseop_Expression_level_3561);
c8=parse_robot_robot_TurnCmd();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) { element = c8; /* this is a subclass or primitive expression choice */ }
}
break;
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 8, parseop_Expression_level_3_StartIndex); }
}
return element;
}
// $ANTLR end "parseop_Expression_level_3"
// $ANTLR start "parse_robot_FlotCtrl_WhileLoop"
// Robot.g:957:1: parse_robot_FlotCtrl_WhileLoop returns [robot.FlotCtrl.WhileLoop element = null] : a0= 'while' (a1_0= parse_robot_FlotCtrl_BoolExp ) a2= 'do' ( (a3_0= parse_robot_FlotCtrl_Expression ) )* a4= 'end' ;
public final robot.FlotCtrl.WhileLoop parse_robot_FlotCtrl_WhileLoop() throws RecognitionException {
robot.FlotCtrl.WhileLoop element = null;
int parse_robot_FlotCtrl_WhileLoop_StartIndex = input.index();
Token a0=null;
Token a2=null;
Token a4=null;
robot.FlotCtrl.BoolExp a1_0 =null;
robot.FlotCtrl.Expression a3_0 =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 9) ) { return element; }
// Robot.g:960:4: (a0= 'while' (a1_0= parse_robot_FlotCtrl_BoolExp ) a2= 'do' ( (a3_0= parse_robot_FlotCtrl_Expression ) )* a4= 'end' )
// Robot.g:961:4: a0= 'while' (a1_0= parse_robot_FlotCtrl_BoolExp ) a2= 'do' ( (a3_0= parse_robot_FlotCtrl_Expression ) )* a4= 'end'
{
a0=(Token)match(input,38,FOLLOW_38_in_parse_robot_FlotCtrl_WhileLoop583); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createWhileLoop();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_5_0_0_0, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[70]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[71]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[72]);
}
// Robot.g:977:2: (a1_0= parse_robot_FlotCtrl_BoolExp )
// Robot.g:978:2: a1_0= parse_robot_FlotCtrl_BoolExp
{
pushFollow(FOLLOW_parse_robot_FlotCtrl_BoolExp_in_parse_robot_FlotCtrl_WhileLoop597);
a1_0=parse_robot_FlotCtrl_BoolExp();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createWhileLoop();
startIncompleteElement(element);
}
if (a1_0 != null) {
if (a1_0 != null) {
Object value = a1_0;
element.eSet(element.eClass().getEStructuralFeature(robot.FlotCtrl.FlotCtrlPackage.WHILE_LOOP__LOOP_COND), value);
completedElement(value, true);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_5_0_0_1, a1_0, true);
copyLocalizationInfos(a1_0, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[73]);
}
a2=(Token)match(input,20,FOLLOW_20_in_parse_robot_FlotCtrl_WhileLoop610); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createWhileLoop();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_5_0_0_2, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[74]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[75]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[76]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[77]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[78]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[79]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[80]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[81]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[82]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[83]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[84]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[85]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[86]);
}
// Robot.g:1029:2: ( (a3_0= parse_robot_FlotCtrl_Expression ) )*
loop7:
do {
int alt7=2;
int LA7_0 = input.LA(1);
if ( (LA7_0==16||LA7_0==18||LA7_0==25||LA7_0==27||(LA7_0 >= 33 && LA7_0 <= 35)||(LA7_0 >= 37 && LA7_0 <= 38)) ) {
alt7=1;
}
switch (alt7) {
case 1 :
// Robot.g:1030:2: (a3_0= parse_robot_FlotCtrl_Expression )
{
// Robot.g:1030:2: (a3_0= parse_robot_FlotCtrl_Expression )
// Robot.g:1031:3: a3_0= parse_robot_FlotCtrl_Expression
{
pushFollow(FOLLOW_parse_robot_FlotCtrl_Expression_in_parse_robot_FlotCtrl_WhileLoop628);
a3_0=parse_robot_FlotCtrl_Expression();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createWhileLoop();
startIncompleteElement(element);
}
if (a3_0 != null) {
if (a3_0 != null) {
Object value = a3_0;
addObjectToList(element, robot.FlotCtrl.FlotCtrlPackage.WHILE_LOOP__BLOCK, value);
completedElement(value, true);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_5_0_0_3, a3_0, true);
copyLocalizationInfos(a3_0, element);
}
}
}
}
break;
default :
break loop7;
}
} while (true);
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[87]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[88]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[89]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[90]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[91]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[92]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[93]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[94]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[95]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[96]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[97]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getWhileLoop(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[98]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[99]);
}
a4=(Token)match(input,23,FOLLOW_23_in_parse_robot_FlotCtrl_WhileLoop647); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createWhileLoop();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_5_0_0_4, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[100]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[101]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[102]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[103]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[104]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[105]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[106]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[107]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[108]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[109]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[110]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[111]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[112]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[113]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[114]);
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 9, parse_robot_FlotCtrl_WhileLoop_StartIndex); }
}
return element;
}
// $ANTLR end "parse_robot_FlotCtrl_WhileLoop"
// $ANTLR start "parse_robot_FlotCtrl_IfBlock"
// Robot.g:1099:1: parse_robot_FlotCtrl_IfBlock returns [robot.FlotCtrl.IfBlock element = null] : a0= 'if' (a1_0= parse_robot_FlotCtrl_BoolExp ) a2= 'then' ( (a3_0= parse_robot_FlotCtrl_Expression ) )+ ( (a4= 'else' ( (a5_0= parse_robot_FlotCtrl_Expression ) )* ) )? a6= 'end' ;
public final robot.FlotCtrl.IfBlock parse_robot_FlotCtrl_IfBlock() throws RecognitionException {
robot.FlotCtrl.IfBlock element = null;
int parse_robot_FlotCtrl_IfBlock_StartIndex = input.index();
Token a0=null;
Token a2=null;
Token a4=null;
Token a6=null;
robot.FlotCtrl.BoolExp a1_0 =null;
robot.FlotCtrl.Expression a3_0 =null;
robot.FlotCtrl.Expression a5_0 =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 10) ) { return element; }
// Robot.g:1102:4: (a0= 'if' (a1_0= parse_robot_FlotCtrl_BoolExp ) a2= 'then' ( (a3_0= parse_robot_FlotCtrl_Expression ) )+ ( (a4= 'else' ( (a5_0= parse_robot_FlotCtrl_Expression ) )* ) )? a6= 'end' )
// Robot.g:1103:4: a0= 'if' (a1_0= parse_robot_FlotCtrl_BoolExp ) a2= 'then' ( (a3_0= parse_robot_FlotCtrl_Expression ) )+ ( (a4= 'else' ( (a5_0= parse_robot_FlotCtrl_Expression ) )* ) )? a6= 'end'
{
a0=(Token)match(input,25,FOLLOW_25_in_parse_robot_FlotCtrl_IfBlock673); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createIfBlock();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_6_0_0_0, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[115]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[116]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[117]);
}
// Robot.g:1119:2: (a1_0= parse_robot_FlotCtrl_BoolExp )
// Robot.g:1120:2: a1_0= parse_robot_FlotCtrl_BoolExp
{
pushFollow(FOLLOW_parse_robot_FlotCtrl_BoolExp_in_parse_robot_FlotCtrl_IfBlock687);
a1_0=parse_robot_FlotCtrl_BoolExp();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createIfBlock();
startIncompleteElement(element);
}
if (a1_0 != null) {
if (a1_0 != null) {
Object value = a1_0;
element.eSet(element.eClass().getEStructuralFeature(robot.FlotCtrl.FlotCtrlPackage.IF_BLOCK__CONDITION), value);
completedElement(value, true);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_6_0_0_1, a1_0, true);
copyLocalizationInfos(a1_0, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[118]);
}
a2=(Token)match(input,36,FOLLOW_36_in_parse_robot_FlotCtrl_IfBlock700); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createIfBlock();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_6_0_0_2, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[119]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[120]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[121]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[122]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[123]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[124]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[125]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[126]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[127]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[128]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[129]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[130]);
}
// Robot.g:1170:2: ( (a3_0= parse_robot_FlotCtrl_Expression ) )+
int cnt8=0;
loop8:
do {
int alt8=2;
int LA8_0 = input.LA(1);
if ( (LA8_0==16||LA8_0==18||LA8_0==25||LA8_0==27||(LA8_0 >= 33 && LA8_0 <= 35)||(LA8_0 >= 37 && LA8_0 <= 38)) ) {
alt8=1;
}
switch (alt8) {
case 1 :
// Robot.g:1171:2: (a3_0= parse_robot_FlotCtrl_Expression )
{
// Robot.g:1171:2: (a3_0= parse_robot_FlotCtrl_Expression )
// Robot.g:1172:3: a3_0= parse_robot_FlotCtrl_Expression
{
pushFollow(FOLLOW_parse_robot_FlotCtrl_Expression_in_parse_robot_FlotCtrl_IfBlock718);
a3_0=parse_robot_FlotCtrl_Expression();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createIfBlock();
startIncompleteElement(element);
}
if (a3_0 != null) {
if (a3_0 != null) {
Object value = a3_0;
addObjectToList(element, robot.FlotCtrl.FlotCtrlPackage.IF_BLOCK__THEN_BLOCK, value);
completedElement(value, true);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_6_0_0_3, a3_0, true);
copyLocalizationInfos(a3_0, element);
}
}
}
}
break;
default :
if ( cnt8 >= 1 ) break loop8;
if (state.backtracking>0) {state.failed=true; return element;}
EarlyExitException eee =
new EarlyExitException(8, input);
throw eee;
}
cnt8++;
} while (true);
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[131]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[132]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[133]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[134]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[135]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[136]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[137]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[138]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[139]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[140]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[141]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[142]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[143]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[144]);
}
// Robot.g:1211:2: ( (a4= 'else' ( (a5_0= parse_robot_FlotCtrl_Expression ) )* ) )?
int alt10=2;
int LA10_0 = input.LA(1);
if ( (LA10_0==22) ) {
alt10=1;
}
switch (alt10) {
case 1 :
// Robot.g:1212:2: (a4= 'else' ( (a5_0= parse_robot_FlotCtrl_Expression ) )* )
{
// Robot.g:1212:2: (a4= 'else' ( (a5_0= parse_robot_FlotCtrl_Expression ) )* )
// Robot.g:1213:3: a4= 'else' ( (a5_0= parse_robot_FlotCtrl_Expression ) )*
{
a4=(Token)match(input,22,FOLLOW_22_in_parse_robot_FlotCtrl_IfBlock744); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createIfBlock();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_6_0_0_4_0_0_0, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[145]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[146]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[147]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[148]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[149]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[150]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[151]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[152]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[153]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[154]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[155]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[156]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[157]);
}
// Robot.g:1239:3: ( (a5_0= parse_robot_FlotCtrl_Expression ) )*
loop9:
do {
int alt9=2;
int LA9_0 = input.LA(1);
if ( (LA9_0==16||LA9_0==18||LA9_0==25||LA9_0==27||(LA9_0 >= 33 && LA9_0 <= 35)||(LA9_0 >= 37 && LA9_0 <= 38)) ) {
alt9=1;
}
switch (alt9) {
case 1 :
// Robot.g:1240:4: (a5_0= parse_robot_FlotCtrl_Expression )
{
// Robot.g:1240:4: (a5_0= parse_robot_FlotCtrl_Expression )
// Robot.g:1241:5: a5_0= parse_robot_FlotCtrl_Expression
{
pushFollow(FOLLOW_parse_robot_FlotCtrl_Expression_in_parse_robot_FlotCtrl_IfBlock772);
a5_0=parse_robot_FlotCtrl_Expression();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createIfBlock();
startIncompleteElement(element);
}
if (a5_0 != null) {
if (a5_0 != null) {
Object value = a5_0;
addObjectToList(element, robot.FlotCtrl.FlotCtrlPackage.IF_BLOCK__ELSE_BLOCK, value);
completedElement(value, true);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_6_0_0_4_0_0_1, a5_0, true);
copyLocalizationInfos(a5_0, element);
}
}
}
}
break;
default :
break loop9;
}
} while (true);
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[158]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[159]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[160]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[161]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[162]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[163]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[164]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[165]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[166]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[167]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[168]);
addExpectedElement(robot.FlotCtrl.FlotCtrlPackage.eINSTANCE.getIfBlock(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[169]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[170]);
}
}
}
break;
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[171]);
}
a6=(Token)match(input,23,FOLLOW_23_in_parse_robot_FlotCtrl_IfBlock813); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.FlotCtrl.FlotCtrlFactory.eINSTANCE.createIfBlock();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_6_0_0_5, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a6, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[172]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[173]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[174]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[175]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[176]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[177]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[178]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[179]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[180]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[181]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[182]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[183]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[184]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[185]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[186]);
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 10, parse_robot_FlotCtrl_IfBlock_StartIndex); }
}
return element;
}
// $ANTLR end "parse_robot_FlotCtrl_IfBlock"
// $ANTLR start "parse_robot_robot_Bip"
// Robot.g:1316:1: parse_robot_robot_Bip returns [robot.robot.Bip element = null] : a0= 'bip' a1= '(' a2= 'duration' a3= '=' (a4= INT_LITERAL ) a5= ',' a6= 'power' a7= '=' (a8= INT_LITERAL ) a9= ',' a10= 'repeat' a11= '=' (a12= BOOLEAN_LITERAL ) a13= ')' ;
public final robot.robot.Bip parse_robot_robot_Bip() throws RecognitionException {
robot.robot.Bip element = null;
int parse_robot_robot_Bip_StartIndex = input.index();
Token a0=null;
Token a1=null;
Token a2=null;
Token a3=null;
Token a4=null;
Token a5=null;
Token a6=null;
Token a7=null;
Token a8=null;
Token a9=null;
Token a10=null;
Token a11=null;
Token a12=null;
Token a13=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 11) ) { return element; }
// Robot.g:1319:4: (a0= 'bip' a1= '(' a2= 'duration' a3= '=' (a4= INT_LITERAL ) a5= ',' a6= 'power' a7= '=' (a8= INT_LITERAL ) a9= ',' a10= 'repeat' a11= '=' (a12= BOOLEAN_LITERAL ) a13= ')' )
// Robot.g:1320:4: a0= 'bip' a1= '(' a2= 'duration' a3= '=' (a4= INT_LITERAL ) a5= ',' a6= 'power' a7= '=' (a8= INT_LITERAL ) a9= ',' a10= 'repeat' a11= '=' (a12= BOOLEAN_LITERAL ) a13= ')'
{
a0=(Token)match(input,16,FOLLOW_16_in_parse_robot_robot_Bip839); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createBip();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_7_0_0_0, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[187]);
}
a1=(Token)match(input,10,FOLLOW_10_in_parse_robot_robot_Bip850); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createBip();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_7_0_0_1, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[188]);
}
a2=(Token)match(input,21,FOLLOW_21_in_parse_robot_robot_Bip861); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createBip();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_7_0_0_2, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[189]);
}
a3=(Token)match(input,13,FOLLOW_13_in_parse_robot_robot_Bip872); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createBip();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_7_0_0_3, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[190]);
}
// Robot.g:1376:2: (a4= INT_LITERAL )
// Robot.g:1377:2: a4= INT_LITERAL
{
a4=(Token)match(input,INT_LITERAL,FOLLOW_INT_LITERAL_in_parse_robot_robot_Bip886); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createBip();
startIncompleteElement(element);
}
if (a4 != null) {
robot.resource.robot.IRobotTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("INT_LITERAL");
tokenResolver.setOptions(getOptions());
robot.resource.robot.IRobotTokenResolveResult result = getFreshTokenResolveResult();
tokenResolver.resolve(a4.getText(), element.eClass().getEStructuralFeature(robot.robot.RobotPackage.BIP__DURATION), result);
Object resolvedObject = result.getResolvedToken();
if (resolvedObject == null) {
addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a4).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStopIndex());
}
java.lang.Integer resolved = (java.lang.Integer) resolvedObject;
if (resolved != null) {
Object value = resolved;
element.eSet(element.eClass().getEStructuralFeature(robot.robot.RobotPackage.BIP__DURATION), value);
completedElement(value, false);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_7_0_0_4, resolved, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a4, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[191]);
}
a5=(Token)match(input,12,FOLLOW_12_in_parse_robot_robot_Bip901); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createBip();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_7_0_0_5, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[192]);
}
a6=(Token)match(input,31,FOLLOW_31_in_parse_robot_robot_Bip912); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createBip();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_7_0_0_6, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a6, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[193]);
}
a7=(Token)match(input,13,FOLLOW_13_in_parse_robot_robot_Bip923); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createBip();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_7_0_0_7, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a7, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[194]);
}
// Robot.g:1454:2: (a8= INT_LITERAL )
// Robot.g:1455:2: a8= INT_LITERAL
{
a8=(Token)match(input,INT_LITERAL,FOLLOW_INT_LITERAL_in_parse_robot_robot_Bip937); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createBip();
startIncompleteElement(element);
}
if (a8 != null) {
robot.resource.robot.IRobotTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("INT_LITERAL");
tokenResolver.setOptions(getOptions());
robot.resource.robot.IRobotTokenResolveResult result = getFreshTokenResolveResult();
tokenResolver.resolve(a8.getText(), element.eClass().getEStructuralFeature(robot.robot.RobotPackage.BIP__POWER), result);
Object resolvedObject = result.getResolvedToken();
if (resolvedObject == null) {
addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a8).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStopIndex());
}
java.lang.Double resolved = (java.lang.Double) resolvedObject;
if (resolved != null) {
Object value = resolved;
element.eSet(element.eClass().getEStructuralFeature(robot.robot.RobotPackage.BIP__POWER), value);
completedElement(value, false);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_7_0_0_8, resolved, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a8, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[195]);
}
a9=(Token)match(input,12,FOLLOW_12_in_parse_robot_robot_Bip952); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createBip();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_7_0_0_9, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a9, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[196]);
}
a10=(Token)match(input,32,FOLLOW_32_in_parse_robot_robot_Bip963); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createBip();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_7_0_0_10, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a10, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[197]);
}
a11=(Token)match(input,13,FOLLOW_13_in_parse_robot_robot_Bip974); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createBip();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_7_0_0_11, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a11, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[198]);
}
// Robot.g:1532:2: (a12= BOOLEAN_LITERAL )
// Robot.g:1533:2: a12= BOOLEAN_LITERAL
{
a12=(Token)match(input,BOOLEAN_LITERAL,FOLLOW_BOOLEAN_LITERAL_in_parse_robot_robot_Bip988); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createBip();
startIncompleteElement(element);
}
if (a12 != null) {
robot.resource.robot.IRobotTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("BOOLEAN_LITERAL");
tokenResolver.setOptions(getOptions());
robot.resource.robot.IRobotTokenResolveResult result = getFreshTokenResolveResult();
tokenResolver.resolve(a12.getText(), element.eClass().getEStructuralFeature(robot.robot.RobotPackage.BIP__REPET), result);
Object resolvedObject = result.getResolvedToken();
if (resolvedObject == null) {
addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a12).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a12).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a12).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a12).getStopIndex());
}
java.lang.Boolean resolved = (java.lang.Boolean) resolvedObject;
if (resolved != null) {
Object value = resolved;
element.eSet(element.eClass().getEStructuralFeature(robot.robot.RobotPackage.BIP__REPET), value);
completedElement(value, false);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_7_0_0_12, resolved, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a12, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[199]);
}
a13=(Token)match(input,11,FOLLOW_11_in_parse_robot_robot_Bip1003); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createBip();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_7_0_0_13, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a13, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[200]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[201]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[202]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[203]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[204]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[205]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[206]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[207]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[208]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[209]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[210]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[211]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[212]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[213]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[214]);
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 11, parse_robot_robot_Bip_StartIndex); }
}
return element;
}
// $ANTLR end "parse_robot_robot_Bip"
// $ANTLR start "parse_robot_robot_MoveCmd"
// Robot.g:1598:1: parse_robot_robot_MoveCmd returns [robot.robot.MoveCmd element = null] : a0= 'move' a1= '(' a2= 'power' a3= '=' (a4= INT_LITERAL ) a5= ')' ;
public final robot.robot.MoveCmd parse_robot_robot_MoveCmd() throws RecognitionException {
robot.robot.MoveCmd element = null;
int parse_robot_robot_MoveCmd_StartIndex = input.index();
Token a0=null;
Token a1=null;
Token a2=null;
Token a3=null;
Token a4=null;
Token a5=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 12) ) { return element; }
// Robot.g:1601:4: (a0= 'move' a1= '(' a2= 'power' a3= '=' (a4= INT_LITERAL ) a5= ')' )
// Robot.g:1602:4: a0= 'move' a1= '(' a2= 'power' a3= '=' (a4= INT_LITERAL ) a5= ')'
{
a0=(Token)match(input,27,FOLLOW_27_in_parse_robot_robot_MoveCmd1029); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createMoveCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_8_0_0_0, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[215]);
}
a1=(Token)match(input,10,FOLLOW_10_in_parse_robot_robot_MoveCmd1040); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createMoveCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_8_0_0_1, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[216]);
}
a2=(Token)match(input,31,FOLLOW_31_in_parse_robot_robot_MoveCmd1051); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createMoveCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_8_0_0_2, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[217]);
}
a3=(Token)match(input,13,FOLLOW_13_in_parse_robot_robot_MoveCmd1062); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createMoveCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_8_0_0_3, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[218]);
}
// Robot.g:1658:2: (a4= INT_LITERAL )
// Robot.g:1659:2: a4= INT_LITERAL
{
a4=(Token)match(input,INT_LITERAL,FOLLOW_INT_LITERAL_in_parse_robot_robot_MoveCmd1076); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createMoveCmd();
startIncompleteElement(element);
}
if (a4 != null) {
robot.resource.robot.IRobotTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("INT_LITERAL");
tokenResolver.setOptions(getOptions());
robot.resource.robot.IRobotTokenResolveResult result = getFreshTokenResolveResult();
tokenResolver.resolve(a4.getText(), element.eClass().getEStructuralFeature(robot.robot.RobotPackage.MOVE_CMD__POWER), result);
Object resolvedObject = result.getResolvedToken();
if (resolvedObject == null) {
addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a4).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStopIndex());
}
java.lang.Double resolved = (java.lang.Double) resolvedObject;
if (resolved != null) {
Object value = resolved;
element.eSet(element.eClass().getEStructuralFeature(robot.robot.RobotPackage.MOVE_CMD__POWER), value);
completedElement(value, false);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_8_0_0_4, resolved, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a4, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[219]);
}
a5=(Token)match(input,11,FOLLOW_11_in_parse_robot_robot_MoveCmd1091); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createMoveCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_8_0_0_5, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[220]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[221]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[222]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[223]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[224]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[225]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[226]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[227]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[228]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[229]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[230]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[231]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[232]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[233]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[234]);
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 12, parse_robot_robot_MoveCmd_StartIndex); }
}
return element;
}
// $ANTLR end "parse_robot_robot_MoveCmd"
// $ANTLR start "parse_robot_robot_PrintCmd"
// Robot.g:1724:1: parse_robot_robot_PrintCmd returns [robot.robot.PrintCmd element = null] : a0= 'display' a1= '(' a2= 'msg' a3= '=' (a4= STRING_LITERAL ) a5= ',' a6= 'duration' a7= '=' (a8= INT_LITERAL ) a9= ',' a10= 'line' a11= '=' (a12= INT_LITERAL ) a13= ',' a14= 'col' a15= '=' (a16= INT_LITERAL ) a17= ')' ;
public final robot.robot.PrintCmd parse_robot_robot_PrintCmd() throws RecognitionException {
robot.robot.PrintCmd element = null;
int parse_robot_robot_PrintCmd_StartIndex = input.index();
Token a0=null;
Token a1=null;
Token a2=null;
Token a3=null;
Token a4=null;
Token a5=null;
Token a6=null;
Token a7=null;
Token a8=null;
Token a9=null;
Token a10=null;
Token a11=null;
Token a12=null;
Token a13=null;
Token a14=null;
Token a15=null;
Token a16=null;
Token a17=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 13) ) { return element; }
// Robot.g:1727:4: (a0= 'display' a1= '(' a2= 'msg' a3= '=' (a4= STRING_LITERAL ) a5= ',' a6= 'duration' a7= '=' (a8= INT_LITERAL ) a9= ',' a10= 'line' a11= '=' (a12= INT_LITERAL ) a13= ',' a14= 'col' a15= '=' (a16= INT_LITERAL ) a17= ')' )
// Robot.g:1728:4: a0= 'display' a1= '(' a2= 'msg' a3= '=' (a4= STRING_LITERAL ) a5= ',' a6= 'duration' a7= '=' (a8= INT_LITERAL ) a9= ',' a10= 'line' a11= '=' (a12= INT_LITERAL ) a13= ',' a14= 'col' a15= '=' (a16= INT_LITERAL ) a17= ')'
{
a0=(Token)match(input,18,FOLLOW_18_in_parse_robot_robot_PrintCmd1117); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_0, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[235]);
}
a1=(Token)match(input,10,FOLLOW_10_in_parse_robot_robot_PrintCmd1128); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_1, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[236]);
}
a2=(Token)match(input,28,FOLLOW_28_in_parse_robot_robot_PrintCmd1139); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_2, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[237]);
}
a3=(Token)match(input,13,FOLLOW_13_in_parse_robot_robot_PrintCmd1150); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_3, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[238]);
}
// Robot.g:1784:2: (a4= STRING_LITERAL )
// Robot.g:1785:2: a4= STRING_LITERAL
{
a4=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_parse_robot_robot_PrintCmd1164); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
if (a4 != null) {
robot.resource.robot.IRobotTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("STRING_LITERAL");
tokenResolver.setOptions(getOptions());
robot.resource.robot.IRobotTokenResolveResult result = getFreshTokenResolveResult();
tokenResolver.resolve(a4.getText(), element.eClass().getEStructuralFeature(robot.robot.RobotPackage.PRINT_CMD__MSG), result);
Object resolvedObject = result.getResolvedToken();
if (resolvedObject == null) {
addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a4).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStopIndex());
}
java.lang.String resolved = (java.lang.String) resolvedObject;
if (resolved != null) {
Object value = resolved;
element.eSet(element.eClass().getEStructuralFeature(robot.robot.RobotPackage.PRINT_CMD__MSG), value);
completedElement(value, false);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_4, resolved, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a4, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[239]);
}
a5=(Token)match(input,12,FOLLOW_12_in_parse_robot_robot_PrintCmd1179); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_5, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[240]);
}
a6=(Token)match(input,21,FOLLOW_21_in_parse_robot_robot_PrintCmd1190); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_6, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a6, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[241]);
}
a7=(Token)match(input,13,FOLLOW_13_in_parse_robot_robot_PrintCmd1201); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_7, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a7, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[242]);
}
// Robot.g:1862:2: (a8= INT_LITERAL )
// Robot.g:1863:2: a8= INT_LITERAL
{
a8=(Token)match(input,INT_LITERAL,FOLLOW_INT_LITERAL_in_parse_robot_robot_PrintCmd1215); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
if (a8 != null) {
robot.resource.robot.IRobotTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("INT_LITERAL");
tokenResolver.setOptions(getOptions());
robot.resource.robot.IRobotTokenResolveResult result = getFreshTokenResolveResult();
tokenResolver.resolve(a8.getText(), element.eClass().getEStructuralFeature(robot.robot.RobotPackage.PRINT_CMD__DURATION), result);
Object resolvedObject = result.getResolvedToken();
if (resolvedObject == null) {
addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a8).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStopIndex());
}
java.lang.Integer resolved = (java.lang.Integer) resolvedObject;
if (resolved != null) {
Object value = resolved;
element.eSet(element.eClass().getEStructuralFeature(robot.robot.RobotPackage.PRINT_CMD__DURATION), value);
completedElement(value, false);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_8, resolved, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a8, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[243]);
}
a9=(Token)match(input,12,FOLLOW_12_in_parse_robot_robot_PrintCmd1230); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_9, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a9, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[244]);
}
a10=(Token)match(input,26,FOLLOW_26_in_parse_robot_robot_PrintCmd1241); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_10, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a10, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[245]);
}
a11=(Token)match(input,13,FOLLOW_13_in_parse_robot_robot_PrintCmd1252); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_11, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a11, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[246]);
}
// Robot.g:1940:2: (a12= INT_LITERAL )
// Robot.g:1941:2: a12= INT_LITERAL
{
a12=(Token)match(input,INT_LITERAL,FOLLOW_INT_LITERAL_in_parse_robot_robot_PrintCmd1266); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
if (a12 != null) {
robot.resource.robot.IRobotTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("INT_LITERAL");
tokenResolver.setOptions(getOptions());
robot.resource.robot.IRobotTokenResolveResult result = getFreshTokenResolveResult();
tokenResolver.resolve(a12.getText(), element.eClass().getEStructuralFeature(robot.robot.RobotPackage.PRINT_CMD__LINE), result);
Object resolvedObject = result.getResolvedToken();
if (resolvedObject == null) {
addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a12).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a12).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a12).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a12).getStopIndex());
}
java.lang.Integer resolved = (java.lang.Integer) resolvedObject;
if (resolved != null) {
Object value = resolved;
element.eSet(element.eClass().getEStructuralFeature(robot.robot.RobotPackage.PRINT_CMD__LINE), value);
completedElement(value, false);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_12, resolved, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a12, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[247]);
}
a13=(Token)match(input,12,FOLLOW_12_in_parse_robot_robot_PrintCmd1281); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_13, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a13, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[248]);
}
a14=(Token)match(input,17,FOLLOW_17_in_parse_robot_robot_PrintCmd1292); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_14, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a14, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[249]);
}
a15=(Token)match(input,13,FOLLOW_13_in_parse_robot_robot_PrintCmd1303); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_15, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a15, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[250]);
}
// Robot.g:2018:2: (a16= INT_LITERAL )
// Robot.g:2019:2: a16= INT_LITERAL
{
a16=(Token)match(input,INT_LITERAL,FOLLOW_INT_LITERAL_in_parse_robot_robot_PrintCmd1317); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
if (a16 != null) {
robot.resource.robot.IRobotTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("INT_LITERAL");
tokenResolver.setOptions(getOptions());
robot.resource.robot.IRobotTokenResolveResult result = getFreshTokenResolveResult();
tokenResolver.resolve(a16.getText(), element.eClass().getEStructuralFeature(robot.robot.RobotPackage.PRINT_CMD__COL), result);
Object resolvedObject = result.getResolvedToken();
if (resolvedObject == null) {
addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a16).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a16).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a16).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a16).getStopIndex());
}
java.lang.Integer resolved = (java.lang.Integer) resolvedObject;
if (resolved != null) {
Object value = resolved;
element.eSet(element.eClass().getEStructuralFeature(robot.robot.RobotPackage.PRINT_CMD__COL), value);
completedElement(value, false);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_16, resolved, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a16, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[251]);
}
a17=(Token)match(input,11,FOLLOW_11_in_parse_robot_robot_PrintCmd1332); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createPrintCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_9_0_0_17, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a17, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[252]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[253]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[254]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[255]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[256]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[257]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[258]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[259]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[260]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[261]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[262]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[263]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[264]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[265]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[266]);
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 13, parse_robot_robot_PrintCmd_StartIndex); }
}
return element;
}
// $ANTLR end "parse_robot_robot_PrintCmd"
// $ANTLR start "parse_robot_robot_SetTurnAngleCmd"
// Robot.g:2084:1: parse_robot_robot_SetTurnAngleCmd returns [robot.robot.SetTurnAngleCmd element = null] : a0= 'setTurnAngle' a1= '(' a2= 'angle' a3= '=' (a4= INT_LITERAL ) a5= ')' ;
public final robot.robot.SetTurnAngleCmd parse_robot_robot_SetTurnAngleCmd() throws RecognitionException {
robot.robot.SetTurnAngleCmd element = null;
int parse_robot_robot_SetTurnAngleCmd_StartIndex = input.index();
Token a0=null;
Token a1=null;
Token a2=null;
Token a3=null;
Token a4=null;
Token a5=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 14) ) { return element; }
// Robot.g:2087:4: (a0= 'setTurnAngle' a1= '(' a2= 'angle' a3= '=' (a4= INT_LITERAL ) a5= ')' )
// Robot.g:2088:4: a0= 'setTurnAngle' a1= '(' a2= 'angle' a3= '=' (a4= INT_LITERAL ) a5= ')'
{
a0=(Token)match(input,33,FOLLOW_33_in_parse_robot_robot_SetTurnAngleCmd1358); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createSetTurnAngleCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_10_0_0_0, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[267]);
}
a1=(Token)match(input,10,FOLLOW_10_in_parse_robot_robot_SetTurnAngleCmd1369); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createSetTurnAngleCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_10_0_0_1, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[268]);
}
a2=(Token)match(input,15,FOLLOW_15_in_parse_robot_robot_SetTurnAngleCmd1380); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createSetTurnAngleCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_10_0_0_2, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[269]);
}
a3=(Token)match(input,13,FOLLOW_13_in_parse_robot_robot_SetTurnAngleCmd1391); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createSetTurnAngleCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_10_0_0_3, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[270]);
}
// Robot.g:2144:2: (a4= INT_LITERAL )
// Robot.g:2145:2: a4= INT_LITERAL
{
a4=(Token)match(input,INT_LITERAL,FOLLOW_INT_LITERAL_in_parse_robot_robot_SetTurnAngleCmd1405); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createSetTurnAngleCmd();
startIncompleteElement(element);
}
if (a4 != null) {
robot.resource.robot.IRobotTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("INT_LITERAL");
tokenResolver.setOptions(getOptions());
robot.resource.robot.IRobotTokenResolveResult result = getFreshTokenResolveResult();
tokenResolver.resolve(a4.getText(), element.eClass().getEStructuralFeature(robot.robot.RobotPackage.SET_TURN_ANGLE_CMD__ANGLE), result);
Object resolvedObject = result.getResolvedToken();
if (resolvedObject == null) {
addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a4).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStopIndex());
}
java.lang.Double resolved = (java.lang.Double) resolvedObject;
if (resolved != null) {
Object value = resolved;
element.eSet(element.eClass().getEStructuralFeature(robot.robot.RobotPackage.SET_TURN_ANGLE_CMD__ANGLE), value);
completedElement(value, false);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_10_0_0_4, resolved, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a4, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[271]);
}
a5=(Token)match(input,11,FOLLOW_11_in_parse_robot_robot_SetTurnAngleCmd1420); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createSetTurnAngleCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_10_0_0_5, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[272]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[273]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[274]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[275]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[276]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[277]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[278]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[279]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[280]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[281]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[282]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[283]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[284]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[285]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[286]);
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 14, parse_robot_robot_SetTurnAngleCmd_StartIndex); }
}
return element;
}
// $ANTLR end "parse_robot_robot_SetTurnAngleCmd"
// $ANTLR start "parse_robot_robot_StopEngineCmd"
// Robot.g:2210:1: parse_robot_robot_StopEngineCmd returns [robot.robot.StopEngineCmd element = null] : a0= 'stopEngine' ;
public final robot.robot.StopEngineCmd parse_robot_robot_StopEngineCmd() throws RecognitionException {
robot.robot.StopEngineCmd element = null;
int parse_robot_robot_StopEngineCmd_StartIndex = input.index();
Token a0=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 15) ) { return element; }
// Robot.g:2213:4: (a0= 'stopEngine' )
// Robot.g:2214:4: a0= 'stopEngine'
{
a0=(Token)match(input,34,FOLLOW_34_in_parse_robot_robot_StopEngineCmd1446); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createStopEngineCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_11_0_0_0, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[287]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[288]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[289]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[290]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[291]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[292]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[293]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[294]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[295]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[296]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[297]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[298]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[299]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[300]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[301]);
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 15, parse_robot_robot_StopEngineCmd_StartIndex); }
}
return element;
}
// $ANTLR end "parse_robot_robot_StopEngineCmd"
// $ANTLR start "parse_robot_robot_StopProgramCmd"
// Robot.g:2244:1: parse_robot_robot_StopProgramCmd returns [robot.robot.StopProgramCmd element = null] : a0= 'stopProgram' ;
public final robot.robot.StopProgramCmd parse_robot_robot_StopProgramCmd() throws RecognitionException {
robot.robot.StopProgramCmd element = null;
int parse_robot_robot_StopProgramCmd_StartIndex = input.index();
Token a0=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 16) ) { return element; }
// Robot.g:2247:4: (a0= 'stopProgram' )
// Robot.g:2248:4: a0= 'stopProgram'
{
a0=(Token)match(input,35,FOLLOW_35_in_parse_robot_robot_StopProgramCmd1472); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createStopProgramCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_12_0_0_0, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[302]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[303]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[304]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[305]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[306]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[307]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[308]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[309]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[310]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[311]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[312]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[313]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[314]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[315]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[316]);
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 16, parse_robot_robot_StopProgramCmd_StartIndex); }
}
return element;
}
// $ANTLR end "parse_robot_robot_StopProgramCmd"
// $ANTLR start "parse_robot_robot_TurnCmd"
// Robot.g:2278:1: parse_robot_robot_TurnCmd returns [robot.robot.TurnCmd element = null] : a0= 'turn' a1= '(' a2= 'power' a3= '=' (a4= INT_LITERAL ) a5= ',' a6= 'angle' a7= '=' (a8= INT_LITERAL ) a9= ')' ;
public final robot.robot.TurnCmd parse_robot_robot_TurnCmd() throws RecognitionException {
robot.robot.TurnCmd element = null;
int parse_robot_robot_TurnCmd_StartIndex = input.index();
Token a0=null;
Token a1=null;
Token a2=null;
Token a3=null;
Token a4=null;
Token a5=null;
Token a6=null;
Token a7=null;
Token a8=null;
Token a9=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 17) ) { return element; }
// Robot.g:2281:4: (a0= 'turn' a1= '(' a2= 'power' a3= '=' (a4= INT_LITERAL ) a5= ',' a6= 'angle' a7= '=' (a8= INT_LITERAL ) a9= ')' )
// Robot.g:2282:4: a0= 'turn' a1= '(' a2= 'power' a3= '=' (a4= INT_LITERAL ) a5= ',' a6= 'angle' a7= '=' (a8= INT_LITERAL ) a9= ')'
{
a0=(Token)match(input,37,FOLLOW_37_in_parse_robot_robot_TurnCmd1498); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createTurnCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_13_0_0_0, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[317]);
}
a1=(Token)match(input,10,FOLLOW_10_in_parse_robot_robot_TurnCmd1509); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createTurnCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_13_0_0_1, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[318]);
}
a2=(Token)match(input,31,FOLLOW_31_in_parse_robot_robot_TurnCmd1520); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createTurnCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_13_0_0_2, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[319]);
}
a3=(Token)match(input,13,FOLLOW_13_in_parse_robot_robot_TurnCmd1531); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createTurnCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_13_0_0_3, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[320]);
}
// Robot.g:2338:2: (a4= INT_LITERAL )
// Robot.g:2339:2: a4= INT_LITERAL
{
a4=(Token)match(input,INT_LITERAL,FOLLOW_INT_LITERAL_in_parse_robot_robot_TurnCmd1545); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createTurnCmd();
startIncompleteElement(element);
}
if (a4 != null) {
robot.resource.robot.IRobotTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("INT_LITERAL");
tokenResolver.setOptions(getOptions());
robot.resource.robot.IRobotTokenResolveResult result = getFreshTokenResolveResult();
tokenResolver.resolve(a4.getText(), element.eClass().getEStructuralFeature(robot.robot.RobotPackage.TURN_CMD__POWER), result);
Object resolvedObject = result.getResolvedToken();
if (resolvedObject == null) {
addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a4).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStopIndex());
}
java.lang.Double resolved = (java.lang.Double) resolvedObject;
if (resolved != null) {
Object value = resolved;
element.eSet(element.eClass().getEStructuralFeature(robot.robot.RobotPackage.TURN_CMD__POWER), value);
completedElement(value, false);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_13_0_0_4, resolved, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a4, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[321]);
}
a5=(Token)match(input,12,FOLLOW_12_in_parse_robot_robot_TurnCmd1560); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createTurnCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_13_0_0_5, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[322]);
}
a6=(Token)match(input,15,FOLLOW_15_in_parse_robot_robot_TurnCmd1571); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createTurnCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_13_0_0_6, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a6, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[323]);
}
a7=(Token)match(input,13,FOLLOW_13_in_parse_robot_robot_TurnCmd1582); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createTurnCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_13_0_0_7, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a7, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[324]);
}
// Robot.g:2416:2: (a8= INT_LITERAL )
// Robot.g:2417:2: a8= INT_LITERAL
{
a8=(Token)match(input,INT_LITERAL,FOLLOW_INT_LITERAL_in_parse_robot_robot_TurnCmd1596); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new robot.resource.robot.mopp.RobotTerminateParsingException();
}
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createTurnCmd();
startIncompleteElement(element);
}
if (a8 != null) {
robot.resource.robot.IRobotTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("INT_LITERAL");
tokenResolver.setOptions(getOptions());
robot.resource.robot.IRobotTokenResolveResult result = getFreshTokenResolveResult();
tokenResolver.resolve(a8.getText(), element.eClass().getEStructuralFeature(robot.robot.RobotPackage.TURN_CMD__ANGLE), result);
Object resolvedObject = result.getResolvedToken();
if (resolvedObject == null) {
addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a8).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStopIndex());
}
java.lang.Double resolved = (java.lang.Double) resolvedObject;
if (resolved != null) {
Object value = resolved;
element.eSet(element.eClass().getEStructuralFeature(robot.robot.RobotPackage.TURN_CMD__ANGLE), value);
completedElement(value, false);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_13_0_0_8, resolved, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a8, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[325]);
}
a9=(Token)match(input,11,FOLLOW_11_in_parse_robot_robot_TurnCmd1611); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = robot.robot.RobotFactory.eINSTANCE.createTurnCmd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, robot.resource.robot.grammar.RobotGrammarInformationProvider.ROBOT_13_0_0_9, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a9, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[326]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[327]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[328]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[329]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[330]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[331]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[332]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[333]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[334]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[335]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[336]);
addExpectedElement(robot.robot.RobotPackage.eINSTANCE.getProgramUnit(), robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[337]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[338]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[339]);
addExpectedElement(null, robot.resource.robot.mopp.RobotExpectationConstants.EXPECTATIONS[340]);
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 17, parse_robot_robot_TurnCmd_StartIndex); }
}
return element;
}
// $ANTLR end "parse_robot_robot_TurnCmd"
// $ANTLR start "parse_robot_FlotCtrl_Expression"
// Robot.g:2482:1: parse_robot_FlotCtrl_Expression returns [robot.FlotCtrl.Expression element = null] : c= parseop_Expression_level_3 ;
public final robot.FlotCtrl.Expression parse_robot_FlotCtrl_Expression() throws RecognitionException {
robot.FlotCtrl.Expression element = null;
int parse_robot_FlotCtrl_Expression_StartIndex = input.index();
robot.FlotCtrl.Expression c =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 18) ) { return element; }
// Robot.g:2483:3: (c= parseop_Expression_level_3 )
// Robot.g:2484:3: c= parseop_Expression_level_3
{
pushFollow(FOLLOW_parseop_Expression_level_3_in_parse_robot_FlotCtrl_Expression1633);
c=parseop_Expression_level_3();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) { element = c; /* this rule is an expression root */ }
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 18, parse_robot_FlotCtrl_Expression_StartIndex); }
}
return element;
}
// $ANTLR end "parse_robot_FlotCtrl_Expression"
// $ANTLR start "parse_robot_FlotCtrl_BoolExp"
// Robot.g:2488:1: parse_robot_FlotCtrl_BoolExp returns [robot.FlotCtrl.BoolExp element = null] : c= parseop_BoolExp_level_1 ;
public final robot.FlotCtrl.BoolExp parse_robot_FlotCtrl_BoolExp() throws RecognitionException {
robot.FlotCtrl.BoolExp element = null;
int parse_robot_FlotCtrl_BoolExp_StartIndex = input.index();
robot.FlotCtrl.BoolExp c =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 19) ) { return element; }
// Robot.g:2489:3: (c= parseop_BoolExp_level_1 )
// Robot.g:2490:3: c= parseop_BoolExp_level_1
{
pushFollow(FOLLOW_parseop_BoolExp_level_1_in_parse_robot_FlotCtrl_BoolExp1652);
c=parseop_BoolExp_level_1();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) { element = c; /* this rule is an expression root */ }
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 19, parse_robot_FlotCtrl_BoolExp_StartIndex); }
}
return element;
}
// $ANTLR end "parse_robot_FlotCtrl_BoolExp"
// Delegated rules
public static final BitSet FOLLOW_parse_robot_robot_ProgramUnit_in_start82 = new BitSet(new long[]{0x0000000000000000L});
public static final BitSet FOLLOW_EOF_in_start89 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parse_robot_FlotCtrl_Expression_in_parse_robot_robot_ProgramUnit124 = new BitSet(new long[]{0x0000006E0A050002L});
public static final BitSet FOLLOW_parseop_BoolExp_level_2_in_parseop_BoolExp_level_1165 = new BitSet(new long[]{0x0000000000004002L});
public static final BitSet FOLLOW_14_in_parseop_BoolExp_level_1185 = new BitSet(new long[]{0x0000000061000000L});
public static final BitSet FOLLOW_parseop_BoolExp_level_2_in_parseop_BoolExp_level_1202 = new BitSet(new long[]{0x0000000000004002L});
public static final BitSet FOLLOW_29_in_parseop_BoolExp_level_2248 = new BitSet(new long[]{0x0000000041000000L});
public static final BitSet FOLLOW_parseop_BoolExp_level_3_in_parseop_BoolExp_level_2259 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parseop_BoolExp_level_3_in_parseop_BoolExp_level_2269 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parse_robot_robot_HasTurnedCmd_in_parseop_BoolExp_level_3291 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parse_robot_robot_ObstacleCmd_in_parseop_BoolExp_level_3299 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_24_in_parse_robot_robot_HasTurnedCmd321 = new BitSet(new long[]{0x0000000000000400L});
public static final BitSet FOLLOW_10_in_parse_robot_robot_HasTurnedCmd332 = new BitSet(new long[]{0x0000000000008000L});
public static final BitSet FOLLOW_15_in_parse_robot_robot_HasTurnedCmd343 = new BitSet(new long[]{0x0000000000002000L});
public static final BitSet FOLLOW_13_in_parse_robot_robot_HasTurnedCmd354 = new BitSet(new long[]{0x0000000000000020L});
public static final BitSet FOLLOW_INT_LITERAL_in_parse_robot_robot_HasTurnedCmd368 = new BitSet(new long[]{0x0000000000000800L});
public static final BitSet FOLLOW_11_in_parse_robot_robot_HasTurnedCmd383 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_30_in_parse_robot_robot_ObstacleCmd409 = new BitSet(new long[]{0x0000000000000400L});
public static final BitSet FOLLOW_10_in_parse_robot_robot_ObstacleCmd420 = new BitSet(new long[]{0x0000000000080000L});
public static final BitSet FOLLOW_19_in_parse_robot_robot_ObstacleCmd431 = new BitSet(new long[]{0x0000000000002000L});
public static final BitSet FOLLOW_13_in_parse_robot_robot_ObstacleCmd442 = new BitSet(new long[]{0x0000000000000020L});
public static final BitSet FOLLOW_INT_LITERAL_in_parse_robot_robot_ObstacleCmd456 = new BitSet(new long[]{0x0000000000000800L});
public static final BitSet FOLLOW_11_in_parse_robot_robot_ObstacleCmd471 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parse_robot_FlotCtrl_WhileLoop_in_parseop_Expression_level_3497 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parse_robot_FlotCtrl_IfBlock_in_parseop_Expression_level_3505 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parse_robot_robot_Bip_in_parseop_Expression_level_3513 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parse_robot_robot_MoveCmd_in_parseop_Expression_level_3521 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parse_robot_robot_PrintCmd_in_parseop_Expression_level_3529 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parse_robot_robot_SetTurnAngleCmd_in_parseop_Expression_level_3537 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parse_robot_robot_StopEngineCmd_in_parseop_Expression_level_3545 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parse_robot_robot_StopProgramCmd_in_parseop_Expression_level_3553 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parse_robot_robot_TurnCmd_in_parseop_Expression_level_3561 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_38_in_parse_robot_FlotCtrl_WhileLoop583 = new BitSet(new long[]{0x0000000061000000L});
public static final BitSet FOLLOW_parse_robot_FlotCtrl_BoolExp_in_parse_robot_FlotCtrl_WhileLoop597 = new BitSet(new long[]{0x0000000000100000L});
public static final BitSet FOLLOW_20_in_parse_robot_FlotCtrl_WhileLoop610 = new BitSet(new long[]{0x0000006E0A850000L});
public static final BitSet FOLLOW_parse_robot_FlotCtrl_Expression_in_parse_robot_FlotCtrl_WhileLoop628 = new BitSet(new long[]{0x0000006E0A850000L});
public static final BitSet FOLLOW_23_in_parse_robot_FlotCtrl_WhileLoop647 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_25_in_parse_robot_FlotCtrl_IfBlock673 = new BitSet(new long[]{0x0000000061000000L});
public static final BitSet FOLLOW_parse_robot_FlotCtrl_BoolExp_in_parse_robot_FlotCtrl_IfBlock687 = new BitSet(new long[]{0x0000001000000000L});
public static final BitSet FOLLOW_36_in_parse_robot_FlotCtrl_IfBlock700 = new BitSet(new long[]{0x0000006E0A050000L});
public static final BitSet FOLLOW_parse_robot_FlotCtrl_Expression_in_parse_robot_FlotCtrl_IfBlock718 = new BitSet(new long[]{0x0000006E0AC50000L});
public static final BitSet FOLLOW_22_in_parse_robot_FlotCtrl_IfBlock744 = new BitSet(new long[]{0x0000006E0A850000L});
public static final BitSet FOLLOW_parse_robot_FlotCtrl_Expression_in_parse_robot_FlotCtrl_IfBlock772 = new BitSet(new long[]{0x0000006E0A850000L});
public static final BitSet FOLLOW_23_in_parse_robot_FlotCtrl_IfBlock813 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_16_in_parse_robot_robot_Bip839 = new BitSet(new long[]{0x0000000000000400L});
public static final BitSet FOLLOW_10_in_parse_robot_robot_Bip850 = new BitSet(new long[]{0x0000000000200000L});
public static final BitSet FOLLOW_21_in_parse_robot_robot_Bip861 = new BitSet(new long[]{0x0000000000002000L});
public static final BitSet FOLLOW_13_in_parse_robot_robot_Bip872 = new BitSet(new long[]{0x0000000000000020L});
public static final BitSet FOLLOW_INT_LITERAL_in_parse_robot_robot_Bip886 = new BitSet(new long[]{0x0000000000001000L});
public static final BitSet FOLLOW_12_in_parse_robot_robot_Bip901 = new BitSet(new long[]{0x0000000080000000L});
public static final BitSet FOLLOW_31_in_parse_robot_robot_Bip912 = new BitSet(new long[]{0x0000000000002000L});
public static final BitSet FOLLOW_13_in_parse_robot_robot_Bip923 = new BitSet(new long[]{0x0000000000000020L});
public static final BitSet FOLLOW_INT_LITERAL_in_parse_robot_robot_Bip937 = new BitSet(new long[]{0x0000000000001000L});
public static final BitSet FOLLOW_12_in_parse_robot_robot_Bip952 = new BitSet(new long[]{0x0000000100000000L});
public static final BitSet FOLLOW_32_in_parse_robot_robot_Bip963 = new BitSet(new long[]{0x0000000000002000L});
public static final BitSet FOLLOW_13_in_parse_robot_robot_Bip974 = new BitSet(new long[]{0x0000000000000010L});
public static final BitSet FOLLOW_BOOLEAN_LITERAL_in_parse_robot_robot_Bip988 = new BitSet(new long[]{0x0000000000000800L});
public static final BitSet FOLLOW_11_in_parse_robot_robot_Bip1003 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_27_in_parse_robot_robot_MoveCmd1029 = new BitSet(new long[]{0x0000000000000400L});
public static final BitSet FOLLOW_10_in_parse_robot_robot_MoveCmd1040 = new BitSet(new long[]{0x0000000080000000L});
public static final BitSet FOLLOW_31_in_parse_robot_robot_MoveCmd1051 = new BitSet(new long[]{0x0000000000002000L});
public static final BitSet FOLLOW_13_in_parse_robot_robot_MoveCmd1062 = new BitSet(new long[]{0x0000000000000020L});
public static final BitSet FOLLOW_INT_LITERAL_in_parse_robot_robot_MoveCmd1076 = new BitSet(new long[]{0x0000000000000800L});
public static final BitSet FOLLOW_11_in_parse_robot_robot_MoveCmd1091 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_18_in_parse_robot_robot_PrintCmd1117 = new BitSet(new long[]{0x0000000000000400L});
public static final BitSet FOLLOW_10_in_parse_robot_robot_PrintCmd1128 = new BitSet(new long[]{0x0000000010000000L});
public static final BitSet FOLLOW_28_in_parse_robot_robot_PrintCmd1139 = new BitSet(new long[]{0x0000000000002000L});
public static final BitSet FOLLOW_13_in_parse_robot_robot_PrintCmd1150 = new BitSet(new long[]{0x0000000000000080L});
public static final BitSet FOLLOW_STRING_LITERAL_in_parse_robot_robot_PrintCmd1164 = new BitSet(new long[]{0x0000000000001000L});
public static final BitSet FOLLOW_12_in_parse_robot_robot_PrintCmd1179 = new BitSet(new long[]{0x0000000000200000L});
public static final BitSet FOLLOW_21_in_parse_robot_robot_PrintCmd1190 = new BitSet(new long[]{0x0000000000002000L});
public static final BitSet FOLLOW_13_in_parse_robot_robot_PrintCmd1201 = new BitSet(new long[]{0x0000000000000020L});
public static final BitSet FOLLOW_INT_LITERAL_in_parse_robot_robot_PrintCmd1215 = new BitSet(new long[]{0x0000000000001000L});
public static final BitSet FOLLOW_12_in_parse_robot_robot_PrintCmd1230 = new BitSet(new long[]{0x0000000004000000L});
public static final BitSet FOLLOW_26_in_parse_robot_robot_PrintCmd1241 = new BitSet(new long[]{0x0000000000002000L});
public static final BitSet FOLLOW_13_in_parse_robot_robot_PrintCmd1252 = new BitSet(new long[]{0x0000000000000020L});
public static final BitSet FOLLOW_INT_LITERAL_in_parse_robot_robot_PrintCmd1266 = new BitSet(new long[]{0x0000000000001000L});
public static final BitSet FOLLOW_12_in_parse_robot_robot_PrintCmd1281 = new BitSet(new long[]{0x0000000000020000L});
public static final BitSet FOLLOW_17_in_parse_robot_robot_PrintCmd1292 = new BitSet(new long[]{0x0000000000002000L});
public static final BitSet FOLLOW_13_in_parse_robot_robot_PrintCmd1303 = new BitSet(new long[]{0x0000000000000020L});
public static final BitSet FOLLOW_INT_LITERAL_in_parse_robot_robot_PrintCmd1317 = new BitSet(new long[]{0x0000000000000800L});
public static final BitSet FOLLOW_11_in_parse_robot_robot_PrintCmd1332 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_33_in_parse_robot_robot_SetTurnAngleCmd1358 = new BitSet(new long[]{0x0000000000000400L});
public static final BitSet FOLLOW_10_in_parse_robot_robot_SetTurnAngleCmd1369 = new BitSet(new long[]{0x0000000000008000L});
public static final BitSet FOLLOW_15_in_parse_robot_robot_SetTurnAngleCmd1380 = new BitSet(new long[]{0x0000000000002000L});
public static final BitSet FOLLOW_13_in_parse_robot_robot_SetTurnAngleCmd1391 = new BitSet(new long[]{0x0000000000000020L});
public static final BitSet FOLLOW_INT_LITERAL_in_parse_robot_robot_SetTurnAngleCmd1405 = new BitSet(new long[]{0x0000000000000800L});
public static final BitSet FOLLOW_11_in_parse_robot_robot_SetTurnAngleCmd1420 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_34_in_parse_robot_robot_StopEngineCmd1446 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_35_in_parse_robot_robot_StopProgramCmd1472 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_37_in_parse_robot_robot_TurnCmd1498 = new BitSet(new long[]{0x0000000000000400L});
public static final BitSet FOLLOW_10_in_parse_robot_robot_TurnCmd1509 = new BitSet(new long[]{0x0000000080000000L});
public static final BitSet FOLLOW_31_in_parse_robot_robot_TurnCmd1520 = new BitSet(new long[]{0x0000000000002000L});
public static final BitSet FOLLOW_13_in_parse_robot_robot_TurnCmd1531 = new BitSet(new long[]{0x0000000000000020L});
public static final BitSet FOLLOW_INT_LITERAL_in_parse_robot_robot_TurnCmd1545 = new BitSet(new long[]{0x0000000000001000L});
public static final BitSet FOLLOW_12_in_parse_robot_robot_TurnCmd1560 = new BitSet(new long[]{0x0000000000008000L});
public static final BitSet FOLLOW_15_in_parse_robot_robot_TurnCmd1571 = new BitSet(new long[]{0x0000000000002000L});
public static final BitSet FOLLOW_13_in_parse_robot_robot_TurnCmd1582 = new BitSet(new long[]{0x0000000000000020L});
public static final BitSet FOLLOW_INT_LITERAL_in_parse_robot_robot_TurnCmd1596 = new BitSet(new long[]{0x0000000000000800L});
public static final BitSet FOLLOW_11_in_parse_robot_robot_TurnCmd1611 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parseop_Expression_level_3_in_parse_robot_FlotCtrl_Expression1633 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parseop_BoolExp_level_1_in_parse_robot_FlotCtrl_BoolExp1652 = new BitSet(new long[]{0x0000000000000002L});
}