// $ANTLR 3.4
package org.emftext.term.propositional.expression.resource.expression.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 ExpressionParser extends ExpressionANTLRParserBase {
public static final String[] tokenNames = new String[] {
"<invalid>", "<EOR>", "<DOWN>", "<UP>", "LINEBREAK", "TEXT", "WHITESPACE", "'('", "')'", "'and'", "'not'", "'or'"
};
public static final int EOF=-1;
public static final int T__7=7;
public static final int T__8=8;
public static final int T__9=9;
public static final int T__10=10;
public static final int T__11=11;
public static final int LINEBREAK=4;
public static final int TEXT=5;
public static final int WHITESPACE=6;
// delegates
public ExpressionANTLRParserBase[] getDelegates() {
return new ExpressionANTLRParserBase[] {};
}
// delegators
public ExpressionParser(TokenStream input) {
this(input, new RecognizerSharedState());
}
public ExpressionParser(TokenStream input, RecognizerSharedState state) {
super(input, state);
this.state.initializeRuleMemo(15 + 1);
}
public String[] getTokenNames() { return ExpressionParser.tokenNames; }
public String getGrammarFileName() { return "Expression.g"; }
private org.emftext.term.propositional.expression.resource.expression.IExpressionTokenResolverFactory tokenResolverFactory = new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionTokenResolverFactory();
/**
* 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<org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectedTerminal> expectedElements = new java.util.ArrayList<org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectedTerminal>();
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 org.emftext.term.propositional.expression.resource.expression.IExpressionCommand<org.emftext.term.propositional.expression.resource.expression.IExpressionTextResource>() {
public boolean execute(org.emftext.term.propositional.expression.resource.expression.IExpressionTextResource resource) {
if (resource == null) {
// the resource can be null if the parser is used for code completion
return true;
}
resource.addProblem(new org.emftext.term.propositional.expression.resource.expression.IExpressionProblem() {
public org.emftext.term.propositional.expression.resource.expression.ExpressionEProblemSeverity getSeverity() {
return org.emftext.term.propositional.expression.resource.expression.ExpressionEProblemSeverity.ERROR;
}
public org.emftext.term.propositional.expression.resource.expression.ExpressionEProblemType getType() {
return org.emftext.term.propositional.expression.resource.expression.ExpressionEProblemType.SYNTAX_ERROR;
}
public String getMessage() {
return errorMessage;
}
public java.util.Collection<org.emftext.term.propositional.expression.resource.expression.IExpressionQuickFix> 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];
org.emftext.term.propositional.expression.resource.expression.IExpressionExpectedElement terminal = org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionFollowSetProvider.TERMINALS[terminalID];
org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionContainedFeature[] containmentFeatures = new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionContainedFeature[ids.length - 2];
for (int i = 2; i < ids.length; i++) {
containmentFeatures[i - 2] = org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionFollowSetProvider.LINKS[ids[i]];
}
org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionContainmentTrace containmentTrace = new org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionContainmentTrace(eClass, containmentFeatures);
org.eclipse.emf.ecore.EObject container = getLastIncompleteElement();
org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectedTerminal expectedElement = new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectedTerminal(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 org.emftext.term.propositional.expression.resource.expression.IExpressionCommand<org.emftext.term.propositional.expression.resource.expression.IExpressionTextResource>() {
public boolean execute(org.emftext.term.propositional.expression.resource.expression.IExpressionTextResource resource) {
org.emftext.term.propositional.expression.resource.expression.IExpressionLocationMap 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 org.emftext.term.propositional.expression.resource.expression.IExpressionCommand<org.emftext.term.propositional.expression.resource.expression.IExpressionTextResource>() {
public boolean execute(org.emftext.term.propositional.expression.resource.expression.IExpressionTextResource resource) {
org.emftext.term.propositional.expression.resource.expression.IExpressionLocationMap 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<org.emftext.term.propositional.expression.resource.expression.IExpressionCommand<org.emftext.term.propositional.expression.resource.expression.IExpressionTextResource>> postParseCommands , final org.eclipse.emf.ecore.EObject object, final int endChar, final int endLine) {
if (disableLocationMap) {
return;
}
postParseCommands.add(new org.emftext.term.propositional.expression.resource.expression.IExpressionCommand<org.emftext.term.propositional.expression.resource.expression.IExpressionTextResource>() {
public boolean execute(org.emftext.term.propositional.expression.resource.expression.IExpressionTextResource resource) {
org.emftext.term.propositional.expression.resource.expression.IExpressionLocationMap 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 org.emftext.term.propositional.expression.resource.expression.IExpressionTextParser createInstance(java.io.InputStream actualInputStream, String encoding) {
try {
if (encoding == null) {
return new ExpressionParser(new org.antlr.runtime3_4_0.CommonTokenStream(new ExpressionLexer(new org.antlr.runtime3_4_0.ANTLRInputStream(actualInputStream))));
} else {
return new ExpressionParser(new org.antlr.runtime3_4_0.CommonTokenStream(new ExpressionLexer(new org.antlr.runtime3_4_0.ANTLRInputStream(actualInputStream, encoding))));
}
} catch (java.io.IOException e) {
new org.emftext.term.propositional.expression.resource.expression.util.ExpressionRuntimeUtil().logError("Error while creating parser.", e);
return null;
}
}
/**
* This default constructor is only used to call createInstance() on it.
*/
public ExpressionParser() {
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
((ExpressionLexer) getTokenStream().getTokenSource()).lexerExceptions = lexerExceptions;
((ExpressionLexer) 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() == org.emftext.term.propositional.expression.Constraint.class) {
return parse_org_emftext_term_propositional_expression_Constraint();
}
}
throw new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionUnexpectedContentTypeException(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(org.emftext.term.propositional.expression.resource.expression.IExpressionOptions.RESOURCE_CONTENT_TYPE);
}
return typeObject;
}
/**
* Implementation that calls {@link #doParse()} and handles the thrown
* RecognitionExceptions.
*/
public org.emftext.term.propositional.expression.resource.expression.IExpressionParseResult parse() {
terminateParsing = false;
postParseCommands = new java.util.ArrayList<org.emftext.term.propositional.expression.resource.expression.IExpressionCommand<org.emftext.term.propositional.expression.resource.expression.IExpressionTextResource>>();
org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionParseResult parseResult = new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionParseResult();
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<org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectedTerminal> parseToExpectedElements(org.eclipse.emf.ecore.EClass type, org.emftext.term.propositional.expression.resource.expression.IExpressionTextResource 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();
org.emftext.term.propositional.expression.resource.expression.IExpressionParseResult 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 (org.emftext.term.propositional.expression.resource.expression.IExpressionCommand<org.emftext.term.propositional.expression.resource.expression.IExpressionTextResource> 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<org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectedTerminal> currentFollowSet = new java.util.LinkedHashSet<org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectedTerminal>();
java.util.List<org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectedTerminal> newFollowSet = new java.util.ArrayList<org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectedTerminal>();
for (int i = expectedElementsIndexOfLastCompleteElement; i >= 0; i--) {
org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectedTerminal expectedElementI = expectedElements.get(i);
if (expectedElementI.getFollowSetID() == lastFollowSetID) {
currentFollowSet.add(expectedElementI);
} else {
break;
}
}
int followSetID = 9;
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 (org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectedTerminal 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 (org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectedTerminal nextFollow : currentFollowSet) {
if (nextFollow.getTerminal().getTokenNames().contains(getTokenNames()[nextToken.getType()])) {
// keep this one - it matches
java.util.Collection<org.emftext.term.propositional.expression.resource.expression.util.ExpressionPair<org.emftext.term.propositional.expression.resource.expression.IExpressionExpectedElement, org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionContainedFeature[]>> newFollowers = nextFollow.getTerminal().getFollowers();
for (org.emftext.term.propositional.expression.resource.expression.util.ExpressionPair<org.emftext.term.propositional.expression.resource.expression.IExpressionExpectedElement, org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionContainedFeature[]> newFollowerPair : newFollowers) {
org.emftext.term.propositional.expression.resource.expression.IExpressionExpectedElement newFollower = newFollowerPair.getLeft();
org.eclipse.emf.ecore.EObject container = getLastIncompleteElement();
org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionContainmentTrace containmentTrace = new org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionContainmentTrace(null, newFollowerPair.getRight());
org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectedTerminal newFollowTerminal = new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectedTerminal(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 (org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectedTerminal nextFollow : newFollowSet) {
lastTokenIndex = 0;
setPosition(nextFollow, i);
}
return this.expectedElements;
}
public void setPosition(org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectedTerminal 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"
// Expression.g:499:1: start returns [ org.eclipse.emf.ecore.EObject element = null] : (c0= parse_org_emftext_term_propositional_expression_Constraint ) EOF ;
public final org.eclipse.emf.ecore.EObject start() throws RecognitionException {
org.eclipse.emf.ecore.EObject element = null;
int start_StartIndex = input.index();
org.emftext.term.propositional.expression.Constraint c0 =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 1) ) { return element; }
// Expression.g:500:2: ( (c0= parse_org_emftext_term_propositional_expression_Constraint ) EOF )
// Expression.g:501:2: (c0= parse_org_emftext_term_propositional_expression_Constraint ) EOF
{
if ( state.backtracking==0 ) {
// follow set for start rule(s)
addExpectedElement(org.emftext.term.propositional.expression.TermPackage.eINSTANCE.getConstraint(), org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[0]);
addExpectedElement(org.emftext.term.propositional.expression.TermPackage.eINSTANCE.getConstraint(), org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[1]);
addExpectedElement(org.emftext.term.propositional.expression.TermPackage.eINSTANCE.getConstraint(), org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[2]);
expectedElementsIndexOfLastCompleteElement = 0;
}
// Expression.g:508:2: (c0= parse_org_emftext_term_propositional_expression_Constraint )
// Expression.g:509:3: c0= parse_org_emftext_term_propositional_expression_Constraint
{
pushFollow(FOLLOW_parse_org_emftext_term_propositional_expression_Constraint_in_start82);
c0=parse_org_emftext_term_propositional_expression_Constraint();
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_org_emftext_term_propositional_expression_Constraint"
// Expression.g:517:1: parse_org_emftext_term_propositional_expression_Constraint returns [org.emftext.term.propositional.expression.Constraint element = null] : (a0_0= parse_org_emftext_term_propositional_expression_Term ) ;
public final org.emftext.term.propositional.expression.Constraint parse_org_emftext_term_propositional_expression_Constraint() throws RecognitionException {
org.emftext.term.propositional.expression.Constraint element = null;
int parse_org_emftext_term_propositional_expression_Constraint_StartIndex = input.index();
org.emftext.term.propositional.expression.Term a0_0 =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 2) ) { return element; }
// Expression.g:520:2: ( (a0_0= parse_org_emftext_term_propositional_expression_Term ) )
// Expression.g:521:2: (a0_0= parse_org_emftext_term_propositional_expression_Term )
{
// Expression.g:521:2: (a0_0= parse_org_emftext_term_propositional_expression_Term )
// Expression.g:522:3: a0_0= parse_org_emftext_term_propositional_expression_Term
{
pushFollow(FOLLOW_parse_org_emftext_term_propositional_expression_Term_in_parse_org_emftext_term_propositional_expression_Constraint119);
a0_0=parse_org_emftext_term_propositional_expression_Term();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionTerminateParsingException();
}
if (element == null) {
element = org.emftext.term.propositional.expression.TermFactory.eINSTANCE.createConstraint();
startIncompleteElement(element);
}
if (a0_0 != null) {
if (a0_0 != null) {
Object value = a0_0;
element.eSet(element.eClass().getEStructuralFeature(org.emftext.term.propositional.expression.TermPackage.CONSTRAINT__TERM), value);
completedElement(value, true);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionGrammarInformationProvider.EXPRESSION_0_0_0_0, a0_0, true);
copyLocalizationInfos(a0_0, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 2, parse_org_emftext_term_propositional_expression_Constraint_StartIndex); }
}
return element;
}
// $ANTLR end "parse_org_emftext_term_propositional_expression_Constraint"
// $ANTLR start "parseop_Term_level_1"
// Expression.g:548:1: parseop_Term_level_1 returns [org.emftext.term.propositional.expression.Term element = null] : leftArg= parseop_Term_level_2 ( ( () a0= 'or' rightArg= parseop_Term_level_2 )+ |) ;
public final org.emftext.term.propositional.expression.Term parseop_Term_level_1() throws RecognitionException {
org.emftext.term.propositional.expression.Term element = null;
int parseop_Term_level_1_StartIndex = input.index();
Token a0=null;
org.emftext.term.propositional.expression.Term leftArg =null;
org.emftext.term.propositional.expression.Term rightArg =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 3) ) { return element; }
// Expression.g:551:2: (leftArg= parseop_Term_level_2 ( ( () a0= 'or' rightArg= parseop_Term_level_2 )+ |) )
// Expression.g:552:2: leftArg= parseop_Term_level_2 ( ( () a0= 'or' rightArg= parseop_Term_level_2 )+ |)
{
pushFollow(FOLLOW_parseop_Term_level_2_in_parseop_Term_level_1152);
leftArg=parseop_Term_level_2();
state._fsp--;
if (state.failed) return element;
// Expression.g:552:33: ( ( () a0= 'or' rightArg= parseop_Term_level_2 )+ |)
int alt2=2;
int LA2_0 = input.LA(1);
if ( (LA2_0==11) ) {
alt2=1;
}
else if ( (LA2_0==EOF||LA2_0==8) ) {
alt2=2;
}
else {
if (state.backtracking>0) {state.failed=true; return element;}
NoViableAltException nvae =
new NoViableAltException("", 2, 0, input);
throw nvae;
}
switch (alt2) {
case 1 :
// Expression.g:552:34: ( () a0= 'or' rightArg= parseop_Term_level_2 )+
{
// Expression.g:552:34: ( () a0= 'or' rightArg= parseop_Term_level_2 )+
int cnt1=0;
loop1:
do {
int alt1=2;
int LA1_0 = input.LA(1);
if ( (LA1_0==11) ) {
alt1=1;
}
switch (alt1) {
case 1 :
// Expression.g:553:3: () a0= 'or' rightArg= parseop_Term_level_2
{
// Expression.g:553:3: ()
// Expression.g:553:4:
{
}
if ( state.backtracking==0 ) { element = null; }
a0=(Token)match(input,11,FOLLOW_11_in_parseop_Term_level_1172); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = org.emftext.term.propositional.expression.TermFactory.eINSTANCE.createOr();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionGrammarInformationProvider.EXPRESSION_1_0_0_1, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(org.emftext.term.propositional.expression.TermPackage.eINSTANCE.getOr(), org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[3]);
addExpectedElement(org.emftext.term.propositional.expression.TermPackage.eINSTANCE.getOr(), org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[4]);
addExpectedElement(org.emftext.term.propositional.expression.TermPackage.eINSTANCE.getOr(), org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[5]);
}
pushFollow(FOLLOW_parseop_Term_level_2_in_parseop_Term_level_1189);
rightArg=parseop_Term_level_2();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionTerminateParsingException();
}
if (element == null) {
element = org.emftext.term.propositional.expression.TermFactory.eINSTANCE.createOr();
startIncompleteElement(element);
}
if (leftArg != null) {
if (leftArg != null) {
Object value = leftArg;
element.eSet(element.eClass().getEStructuralFeature(org.emftext.term.propositional.expression.TermPackage.OR__OPERAND1), value);
completedElement(value, true);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionGrammarInformationProvider.EXPRESSION_1_0_0_0, leftArg, true);
copyLocalizationInfos(leftArg, element);
}
}
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionTerminateParsingException();
}
if (element == null) {
element = org.emftext.term.propositional.expression.TermFactory.eINSTANCE.createOr();
startIncompleteElement(element);
}
if (rightArg != null) {
if (rightArg != null) {
Object value = rightArg;
element.eSet(element.eClass().getEStructuralFeature(org.emftext.term.propositional.expression.TermPackage.OR__OPERAND2), value);
completedElement(value, true);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionGrammarInformationProvider.EXPRESSION_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 ( cnt1 >= 1 ) break loop1;
if (state.backtracking>0) {state.failed=true; return element;}
EarlyExitException eee =
new EarlyExitException(1, input);
throw eee;
}
cnt1++;
} while (true);
}
break;
case 2 :
// Expression.g:610: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_Term_level_1_StartIndex); }
}
return element;
}
// $ANTLR end "parseop_Term_level_1"
// $ANTLR start "parseop_Term_level_2"
// Expression.g:615:1: parseop_Term_level_2 returns [org.emftext.term.propositional.expression.Term element = null] : leftArg= parseop_Term_level_3 ( ( () a0= 'and' rightArg= parseop_Term_level_3 )+ |) ;
public final org.emftext.term.propositional.expression.Term parseop_Term_level_2() throws RecognitionException {
org.emftext.term.propositional.expression.Term element = null;
int parseop_Term_level_2_StartIndex = input.index();
Token a0=null;
org.emftext.term.propositional.expression.Term leftArg =null;
org.emftext.term.propositional.expression.Term rightArg =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 4) ) { return element; }
// Expression.g:618:9: (leftArg= parseop_Term_level_3 ( ( () a0= 'and' rightArg= parseop_Term_level_3 )+ |) )
// Expression.g:619:9: leftArg= parseop_Term_level_3 ( ( () a0= 'and' rightArg= parseop_Term_level_3 )+ |)
{
pushFollow(FOLLOW_parseop_Term_level_3_in_parseop_Term_level_2235);
leftArg=parseop_Term_level_3();
state._fsp--;
if (state.failed) return element;
// Expression.g:619:31: ( ( () a0= 'and' rightArg= parseop_Term_level_3 )+ |)
int alt4=2;
int LA4_0 = input.LA(1);
if ( (LA4_0==9) ) {
alt4=1;
}
else if ( (LA4_0==EOF||LA4_0==8||LA4_0==11) ) {
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 :
// Expression.g:619:32: ( () a0= 'and' rightArg= parseop_Term_level_3 )+
{
// Expression.g:619:32: ( () a0= 'and' rightArg= parseop_Term_level_3 )+
int cnt3=0;
loop3:
do {
int alt3=2;
int LA3_0 = input.LA(1);
if ( (LA3_0==9) ) {
alt3=1;
}
switch (alt3) {
case 1 :
// Expression.g:620:2: () a0= 'and' rightArg= parseop_Term_level_3
{
// Expression.g:620:2: ()
// Expression.g:620:3:
{
}
if ( state.backtracking==0 ) { element = null; }
a0=(Token)match(input,9,FOLLOW_9_in_parseop_Term_level_2251); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = org.emftext.term.propositional.expression.TermFactory.eINSTANCE.createAnd();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionGrammarInformationProvider.EXPRESSION_2_0_0_1, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(org.emftext.term.propositional.expression.TermPackage.eINSTANCE.getAnd(), org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[6]);
addExpectedElement(org.emftext.term.propositional.expression.TermPackage.eINSTANCE.getAnd(), org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[7]);
addExpectedElement(org.emftext.term.propositional.expression.TermPackage.eINSTANCE.getAnd(), org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[8]);
}
pushFollow(FOLLOW_parseop_Term_level_3_in_parseop_Term_level_2265);
rightArg=parseop_Term_level_3();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionTerminateParsingException();
}
if (element == null) {
element = org.emftext.term.propositional.expression.TermFactory.eINSTANCE.createAnd();
startIncompleteElement(element);
}
if (leftArg != null) {
if (leftArg != null) {
Object value = leftArg;
element.eSet(element.eClass().getEStructuralFeature(org.emftext.term.propositional.expression.TermPackage.AND__OPERAND1), value);
completedElement(value, true);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionGrammarInformationProvider.EXPRESSION_2_0_0_0, leftArg, true);
copyLocalizationInfos(leftArg, element);
}
}
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionTerminateParsingException();
}
if (element == null) {
element = org.emftext.term.propositional.expression.TermFactory.eINSTANCE.createAnd();
startIncompleteElement(element);
}
if (rightArg != null) {
if (rightArg != null) {
Object value = rightArg;
element.eSet(element.eClass().getEStructuralFeature(org.emftext.term.propositional.expression.TermPackage.AND__OPERAND2), value);
completedElement(value, true);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionGrammarInformationProvider.EXPRESSION_2_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 ( cnt3 >= 1 ) break loop3;
if (state.backtracking>0) {state.failed=true; return element;}
EarlyExitException eee =
new EarlyExitException(3, input);
throw eee;
}
cnt3++;
} while (true);
}
break;
case 2 :
// Expression.g:677:20:
{
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, 4, parseop_Term_level_2_StartIndex); }
}
return element;
}
// $ANTLR end "parseop_Term_level_2"
// $ANTLR start "parseop_Term_level_3"
// Expression.g:682:1: parseop_Term_level_3 returns [org.emftext.term.propositional.expression.Term element = null] : (a0= 'not' arg= parseop_Term_level_4 |arg= parseop_Term_level_4 );
public final org.emftext.term.propositional.expression.Term parseop_Term_level_3() throws RecognitionException {
org.emftext.term.propositional.expression.Term element = null;
int parseop_Term_level_3_StartIndex = input.index();
Token a0=null;
org.emftext.term.propositional.expression.Term arg =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 5) ) { return element; }
// Expression.g:685:0: (a0= 'not' arg= parseop_Term_level_4 |arg= parseop_Term_level_4 )
int alt5=2;
int LA5_0 = input.LA(1);
if ( (LA5_0==10) ) {
alt5=1;
}
else if ( (LA5_0==TEXT||LA5_0==7) ) {
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 :
// Expression.g:686:0: a0= 'not' arg= parseop_Term_level_4
{
a0=(Token)match(input,10,FOLLOW_10_in_parseop_Term_level_3306); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = org.emftext.term.propositional.expression.TermFactory.eINSTANCE.createNot();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionGrammarInformationProvider.EXPRESSION_3_0_0_0, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(org.emftext.term.propositional.expression.TermPackage.eINSTANCE.getNot(), org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[9]);
addExpectedElement(org.emftext.term.propositional.expression.TermPackage.eINSTANCE.getNot(), org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[10]);
addExpectedElement(org.emftext.term.propositional.expression.TermPackage.eINSTANCE.getNot(), org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[11]);
}
pushFollow(FOLLOW_parseop_Term_level_4_in_parseop_Term_level_3317);
arg=parseop_Term_level_4();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionTerminateParsingException();
}
if (element == null) {
element = org.emftext.term.propositional.expression.TermFactory.eINSTANCE.createNot();
startIncompleteElement(element);
}
if (arg != null) {
if (arg != null) {
Object value = arg;
element.eSet(element.eClass().getEStructuralFeature(org.emftext.term.propositional.expression.TermPackage.NOT__OPERAND), value);
completedElement(value, true);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionGrammarInformationProvider.EXPRESSION_3_0_0_1, arg, true);
copyLocalizationInfos(arg, element);
}
}
}
break;
case 2 :
// Expression.g:723:5: arg= parseop_Term_level_4
{
pushFollow(FOLLOW_parseop_Term_level_4_in_parseop_Term_level_3327);
arg=parseop_Term_level_4();
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, 5, parseop_Term_level_3_StartIndex); }
}
return element;
}
// $ANTLR end "parseop_Term_level_3"
// $ANTLR start "parseop_Term_level_4"
// Expression.g:726:1: parseop_Term_level_4 returns [org.emftext.term.propositional.expression.Term element = null] : (c0= parse_org_emftext_term_propositional_expression_Nested |c1= parse_org_emftext_term_propositional_expression_FeatureRef );
public final org.emftext.term.propositional.expression.Term parseop_Term_level_4() throws RecognitionException {
org.emftext.term.propositional.expression.Term element = null;
int parseop_Term_level_4_StartIndex = input.index();
org.emftext.term.propositional.expression.Nested c0 =null;
org.emftext.term.propositional.expression.FeatureRef c1 =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 6) ) { return element; }
// Expression.g:729:0: (c0= parse_org_emftext_term_propositional_expression_Nested |c1= parse_org_emftext_term_propositional_expression_FeatureRef )
int alt6=2;
int LA6_0 = input.LA(1);
if ( (LA6_0==7) ) {
alt6=1;
}
else if ( (LA6_0==TEXT) ) {
alt6=2;
}
else {
if (state.backtracking>0) {state.failed=true; return element;}
NoViableAltException nvae =
new NoViableAltException("", 6, 0, input);
throw nvae;
}
switch (alt6) {
case 1 :
// Expression.g:730:0: c0= parse_org_emftext_term_propositional_expression_Nested
{
pushFollow(FOLLOW_parse_org_emftext_term_propositional_expression_Nested_in_parseop_Term_level_4349);
c0=parse_org_emftext_term_propositional_expression_Nested();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
}
break;
case 2 :
// Expression.g:731:2: c1= parse_org_emftext_term_propositional_expression_FeatureRef
{
pushFollow(FOLLOW_parse_org_emftext_term_propositional_expression_FeatureRef_in_parseop_Term_level_4357);
c1=parse_org_emftext_term_propositional_expression_FeatureRef();
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, 6, parseop_Term_level_4_StartIndex); }
}
return element;
}
// $ANTLR end "parseop_Term_level_4"
// $ANTLR start "parse_org_emftext_term_propositional_expression_Nested"
// Expression.g:734:1: parse_org_emftext_term_propositional_expression_Nested returns [org.emftext.term.propositional.expression.Nested element = null] : a0= '(' (a1_0= parse_org_emftext_term_propositional_expression_Term ) a2= ')' ;
public final org.emftext.term.propositional.expression.Nested parse_org_emftext_term_propositional_expression_Nested() throws RecognitionException {
org.emftext.term.propositional.expression.Nested element = null;
int parse_org_emftext_term_propositional_expression_Nested_StartIndex = input.index();
Token a0=null;
Token a2=null;
org.emftext.term.propositional.expression.Term a1_0 =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 7) ) { return element; }
// Expression.g:737:4: (a0= '(' (a1_0= parse_org_emftext_term_propositional_expression_Term ) a2= ')' )
// Expression.g:738:4: a0= '(' (a1_0= parse_org_emftext_term_propositional_expression_Term ) a2= ')'
{
a0=(Token)match(input,7,FOLLOW_7_in_parse_org_emftext_term_propositional_expression_Nested379); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = org.emftext.term.propositional.expression.TermFactory.eINSTANCE.createNested();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionGrammarInformationProvider.EXPRESSION_4_0_0_0, null, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(org.emftext.term.propositional.expression.TermPackage.eINSTANCE.getNested(), org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[12]);
addExpectedElement(org.emftext.term.propositional.expression.TermPackage.eINSTANCE.getNested(), org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[13]);
addExpectedElement(org.emftext.term.propositional.expression.TermPackage.eINSTANCE.getNested(), org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[14]);
}
// Expression.g:754:6: (a1_0= parse_org_emftext_term_propositional_expression_Term )
// Expression.g:755:6: a1_0= parse_org_emftext_term_propositional_expression_Term
{
pushFollow(FOLLOW_parse_org_emftext_term_propositional_expression_Term_in_parse_org_emftext_term_propositional_expression_Nested392);
a1_0=parse_org_emftext_term_propositional_expression_Term();
state._fsp--;
if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionTerminateParsingException();
}
if (element == null) {
element = org.emftext.term.propositional.expression.TermFactory.eINSTANCE.createNested();
startIncompleteElement(element);
}
if (a1_0 != null) {
if (a1_0 != null) {
Object value = a1_0;
element.eSet(element.eClass().getEStructuralFeature(org.emftext.term.propositional.expression.TermPackage.NESTED__OPERAND), value);
completedElement(value, true);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionGrammarInformationProvider.EXPRESSION_4_0_0_1, a1_0, true);
copyLocalizationInfos(a1_0, element);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[15]);
}
a2=(Token)match(input,8,FOLLOW_8_in_parse_org_emftext_term_propositional_expression_Nested404); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (element == null) {
element = org.emftext.term.propositional.expression.TermFactory.eINSTANCE.createNested();
startIncompleteElement(element);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionGrammarInformationProvider.EXPRESSION_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, org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[16]);
addExpectedElement(null, org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[17]);
addExpectedElement(null, org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[18]);
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 7, parse_org_emftext_term_propositional_expression_Nested_StartIndex); }
}
return element;
}
// $ANTLR end "parse_org_emftext_term_propositional_expression_Nested"
// $ANTLR start "parse_org_emftext_term_propositional_expression_FeatureRef"
// Expression.g:798:1: parse_org_emftext_term_propositional_expression_FeatureRef returns [org.emftext.term.propositional.expression.FeatureRef element = null] : (a0= TEXT ) ;
public final org.emftext.term.propositional.expression.FeatureRef parse_org_emftext_term_propositional_expression_FeatureRef() throws RecognitionException {
org.emftext.term.propositional.expression.FeatureRef element = null;
int parse_org_emftext_term_propositional_expression_FeatureRef_StartIndex = input.index();
Token a0=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 8) ) { return element; }
// Expression.g:801:4: ( (a0= TEXT ) )
// Expression.g:802:4: (a0= TEXT )
{
// Expression.g:802:4: (a0= TEXT )
// Expression.g:803:4: a0= TEXT
{
a0=(Token)match(input,TEXT,FOLLOW_TEXT_in_parse_org_emftext_term_propositional_expression_FeatureRef432); if (state.failed) return element;
if ( state.backtracking==0 ) {
if (terminateParsing) {
throw new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionTerminateParsingException();
}
if (element == null) {
element = org.emftext.term.propositional.expression.TermFactory.eINSTANCE.createFeatureRef();
startIncompleteElement(element);
}
if (a0 != null) {
org.emftext.term.propositional.expression.resource.expression.IExpressionTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("TEXT");
tokenResolver.setOptions(getOptions());
org.emftext.term.propositional.expression.resource.expression.IExpressionTokenResolveResult result = getFreshTokenResolveResult();
tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.term.propositional.expression.TermPackage.FEATURE_REF__FEATURE), result);
Object resolvedObject = result.getResolvedToken();
if (resolvedObject == null) {
addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
}
String resolved = (String) resolvedObject;
org.js.model.feature.Feature proxy = org.js.model.feature.FeatureFactory.eINSTANCE.createFeature();
collectHiddenTokens(element);
registerContextDependentProxy(new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionContextDependentURIFragmentFactory<org.emftext.term.propositional.expression.FeatureRef, org.js.model.feature.Feature>(getReferenceResolverSwitch() == null ? null : getReferenceResolverSwitch().getFeatureRefFeatureReferenceResolver()), element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(org.emftext.term.propositional.expression.TermPackage.FEATURE_REF__FEATURE), resolved, proxy);
if (proxy != null) {
Object value = proxy;
element.eSet(element.eClass().getEStructuralFeature(org.emftext.term.propositional.expression.TermPackage.FEATURE_REF__FEATURE), value);
completedElement(value, false);
}
collectHiddenTokens(element);
retrieveLayoutInformation(element, org.emftext.term.propositional.expression.resource.expression.grammar.ExpressionGrammarInformationProvider.EXPRESSION_5_0_0_0, proxy, true);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, proxy);
}
}
}
if ( state.backtracking==0 ) {
// expected elements (follow set)
addExpectedElement(null, org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[19]);
addExpectedElement(null, org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[20]);
addExpectedElement(null, org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionExpectationConstants.EXPECTATIONS[21]);
}
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
// do for sure before leaving
if ( state.backtracking>0 ) { memoize(input, 8, parse_org_emftext_term_propositional_expression_FeatureRef_StartIndex); }
}
return element;
}
// $ANTLR end "parse_org_emftext_term_propositional_expression_FeatureRef"
// $ANTLR start "parse_org_emftext_term_propositional_expression_Term"
// Expression.g:846:1: parse_org_emftext_term_propositional_expression_Term returns [org.emftext.term.propositional.expression.Term element = null] : c= parseop_Term_level_1 ;
public final org.emftext.term.propositional.expression.Term parse_org_emftext_term_propositional_expression_Term() throws RecognitionException {
org.emftext.term.propositional.expression.Term element = null;
int parse_org_emftext_term_propositional_expression_Term_StartIndex = input.index();
org.emftext.term.propositional.expression.Term c =null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 9) ) { return element; }
// Expression.g:847:3: (c= parseop_Term_level_1 )
// Expression.g:848:3: c= parseop_Term_level_1
{
pushFollow(FOLLOW_parseop_Term_level_1_in_parse_org_emftext_term_propositional_expression_Term456);
c=parseop_Term_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, 9, parse_org_emftext_term_propositional_expression_Term_StartIndex); }
}
return element;
}
// $ANTLR end "parse_org_emftext_term_propositional_expression_Term"
// Delegated rules
public static final BitSet FOLLOW_parse_org_emftext_term_propositional_expression_Constraint_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_org_emftext_term_propositional_expression_Term_in_parse_org_emftext_term_propositional_expression_Constraint119 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parseop_Term_level_2_in_parseop_Term_level_1152 = new BitSet(new long[]{0x0000000000000802L});
public static final BitSet FOLLOW_11_in_parseop_Term_level_1172 = new BitSet(new long[]{0x00000000000004A0L});
public static final BitSet FOLLOW_parseop_Term_level_2_in_parseop_Term_level_1189 = new BitSet(new long[]{0x0000000000000802L});
public static final BitSet FOLLOW_parseop_Term_level_3_in_parseop_Term_level_2235 = new BitSet(new long[]{0x0000000000000202L});
public static final BitSet FOLLOW_9_in_parseop_Term_level_2251 = new BitSet(new long[]{0x00000000000004A0L});
public static final BitSet FOLLOW_parseop_Term_level_3_in_parseop_Term_level_2265 = new BitSet(new long[]{0x0000000000000202L});
public static final BitSet FOLLOW_10_in_parseop_Term_level_3306 = new BitSet(new long[]{0x00000000000000A0L});
public static final BitSet FOLLOW_parseop_Term_level_4_in_parseop_Term_level_3317 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parseop_Term_level_4_in_parseop_Term_level_3327 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parse_org_emftext_term_propositional_expression_Nested_in_parseop_Term_level_4349 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parse_org_emftext_term_propositional_expression_FeatureRef_in_parseop_Term_level_4357 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_7_in_parse_org_emftext_term_propositional_expression_Nested379 = new BitSet(new long[]{0x00000000000004A0L});
public static final BitSet FOLLOW_parse_org_emftext_term_propositional_expression_Term_in_parse_org_emftext_term_propositional_expression_Nested392 = new BitSet(new long[]{0x0000000000000100L});
public static final BitSet FOLLOW_8_in_parse_org_emftext_term_propositional_expression_Nested404 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TEXT_in_parse_org_emftext_term_propositional_expression_FeatureRef432 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_parseop_Term_level_1_in_parse_org_emftext_term_propositional_expression_Term456 = new BitSet(new long[]{0x0000000000000002L});
}