/* * generated by Xtext 2.21.0 */ package org.eclipse.viatra.solver.language.serializer; import com.google.inject.Inject; import java.util.List; import org.eclipse.emf.ecore.EObject; import org.eclipse.viatra.solver.language.services.SolverLanguageGrammarAccess; import org.eclipse.xtext.IGrammarAccess; import org.eclipse.xtext.RuleCall; import org.eclipse.xtext.nodemodel.INode; import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias; import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias; import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynNavigable; import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition; import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer; @SuppressWarnings("all") public class SolverLanguageSyntacticSequencer extends AbstractSyntacticSequencer { protected SolverLanguageGrammarAccess grammarAccess; protected AbstractElementAlias match_AtomicExpression_LeftParenthesisKeyword_4_0_a; protected AbstractElementAlias match_AtomicExpression_LeftParenthesisKeyword_4_0_p; protected AbstractElementAlias match_MemberDefinition_SemicolonKeyword_5_q; @Inject protected void init(IGrammarAccess access) { grammarAccess = (SolverLanguageGrammarAccess) access; match_AtomicExpression_LeftParenthesisKeyword_4_0_a = new TokenAlias(true, true, grammarAccess.getAtomicExpressionAccess().getLeftParenthesisKeyword_4_0()); match_AtomicExpression_LeftParenthesisKeyword_4_0_p = new TokenAlias(true, false, grammarAccess.getAtomicExpressionAccess().getLeftParenthesisKeyword_4_0()); match_MemberDefinition_SemicolonKeyword_5_q = new TokenAlias(false, true, grammarAccess.getMemberDefinitionAccess().getSemicolonKeyword_5()); } @Override protected String getUnassignedRuleCallToken(EObject semanticObject, RuleCall ruleCall, INode node) { if (ruleCall.getRule() == grammarAccess.getFULL_STOPRule()) return getFULL_STOPToken(semanticObject, ruleCall, node); else if (ruleCall.getRule() == grammarAccess.getREFLEXIVE_TRANSITIVE_CLOSURERule()) return getREFLEXIVE_TRANSITIVE_CLOSUREToken(semanticObject, ruleCall, node); else if (ruleCall.getRule() == grammarAccess.getTRANSITIVE_CLOSURERule()) return getTRANSITIVE_CLOSUREToken(semanticObject, ruleCall, node); return ""; } /** * Synthetic terminal rule. The concrete syntax is to be specified by clients. * Defaults to the empty string. */ protected String getFULL_STOPToken(EObject semanticObject, RuleCall ruleCall, INode node) { return ""; } /** * Synthetic terminal rule. The concrete syntax is to be specified by clients. * Defaults to the empty string. */ protected String getREFLEXIVE_TRANSITIVE_CLOSUREToken(EObject semanticObject, RuleCall ruleCall, INode node) { return ""; } /** * Synthetic terminal rule. The concrete syntax is to be specified by clients. * Defaults to the empty string. */ protected String getTRANSITIVE_CLOSUREToken(EObject semanticObject, RuleCall ruleCall, INode node) { return ""; } @Override protected void emitUnassignedTokens(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) { if (transition.getAmbiguousSyntaxes().isEmpty()) return; List transitionNodes = collectNodes(fromNode, toNode); for (AbstractElementAlias syntax : transition.getAmbiguousSyntaxes()) { List syntaxNodes = getNodesFor(transitionNodes, syntax); if (match_AtomicExpression_LeftParenthesisKeyword_4_0_a.equals(syntax)) emit_AtomicExpression_LeftParenthesisKeyword_4_0_a(semanticObject, getLastNavigableState(), syntaxNodes); else if (match_AtomicExpression_LeftParenthesisKeyword_4_0_p.equals(syntax)) emit_AtomicExpression_LeftParenthesisKeyword_4_0_p(semanticObject, getLastNavigableState(), syntaxNodes); else if (match_MemberDefinition_SemicolonKeyword_5_q.equals(syntax)) emit_MemberDefinition_SemicolonKeyword_5_q(semanticObject, getLastNavigableState(), syntaxNodes); else acceptNodes(getLastNavigableState(), syntaxNodes); } } /** * Ambiguous syntax: * '('* * * This ambiguous syntax occurs at: * (rule start) (ambiguity) '[' lowerBound=Expression * (rule start) (ambiguity) 'count' '{' body=Expression * (rule start) (ambiguity) 'empty' (rule start) * (rule start) (ambiguity) 'if' condition=Expression * (rule start) (ambiguity) 'inf' (rule start) * (rule start) (ambiguity) functor=Reference * (rule start) (ambiguity) op=AggregationOp * (rule start) (ambiguity) op=UnaryOp * (rule start) (ambiguity) referred=[NamedElement|QualifiedName] * (rule start) (ambiguity) value=LogicValue * (rule start) (ambiguity) value=Real * (rule start) (ambiguity) value=STRING * (rule start) (ambiguity) {BinaryExpression.left=} * (rule start) (ambiguity) {Comparison.left=} * (rule start) (ambiguity) {Conjunction.children+=} * (rule start) (ambiguity) {Disjunction.children+=} * (rule start) (ambiguity) {Switch.cases+=} */ protected void emit_AtomicExpression_LeftParenthesisKeyword_4_0_a(EObject semanticObject, ISynNavigable transition, List nodes) { acceptNodes(transition, nodes); } /** * Ambiguous syntax: * '('+ * * This ambiguous syntax occurs at: * (rule start) (ambiguity) 'count' '{' body=Expression * (rule start) (ambiguity) 'if' condition=Expression * (rule start) (ambiguity) op=AggregationOp * (rule start) (ambiguity) op=UnaryOp * (rule start) (ambiguity) {BinaryExpression.left=} * (rule start) (ambiguity) {Comparison.left=} * (rule start) (ambiguity) {Conjunction.children+=} * (rule start) (ambiguity) {Disjunction.children+=} * (rule start) (ambiguity) {Switch.cases+=} */ protected void emit_AtomicExpression_LeftParenthesisKeyword_4_0_p(EObject semanticObject, ISynNavigable transition, List nodes) { acceptNodes(transition, nodes); } /** * Ambiguous syntax: * ';'? * * This ambiguous syntax occurs at: * name=ID (ambiguity) (rule end) * opposite=[NamedElement|QualifiedName] (ambiguity) (rule end) */ protected void emit_MemberDefinition_SemicolonKeyword_5_q(EObject semanticObject, ISynNavigable transition, List nodes) { acceptNodes(transition, nodes); } }