/* * generated by Xtext 2.21.0 */ parser grammar InternalSolverLanguageParser; options { tokenVocab=InternalSolverLanguageLexer; superClass=AbstractInternalAntlrParser; } @header { package org.eclipse.viatra.solver.language.parser.antlr.internal; import org.eclipse.xtext.*; import org.eclipse.xtext.parser.*; import org.eclipse.xtext.parser.impl.*; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.common.util.Enumerator; import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser; import org.eclipse.xtext.parser.antlr.XtextTokenStream; import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens; import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken; import org.eclipse.viatra.solver.language.services.SolverLanguageGrammarAccess; } @members { private SolverLanguageGrammarAccess grammarAccess; public InternalSolverLanguageParser(TokenStream input, SolverLanguageGrammarAccess grammarAccess) { this(input); this.grammarAccess = grammarAccess; registerRules(grammarAccess.getGrammar()); } @Override protected String getFirstRuleName() { return "Problem"; } @Override protected SolverLanguageGrammarAccess getGrammarAccess() { return grammarAccess; } } @rulecatch { catch (RecognitionException re) { recover(input,re); appendSkippedTokens(); } } // Entry rule entryRuleProblem entryRuleProblem returns [EObject current=null]: { newCompositeNode(grammarAccess.getProblemRule()); } iv_ruleProblem=ruleProblem { $current=$iv_ruleProblem.current; } EOF; // Rule Problem ruleProblem returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( otherlv_0=Problem { newLeafNode(otherlv_0, grammarAccess.getProblemAccess().getProblemKeyword_0_0()); } ( ( { newCompositeNode(grammarAccess.getProblemAccess().getNameQualifiedNameParserRuleCall_0_1_0()); } lv_name_1_0=ruleQualifiedName { if ($current==null) { $current = createModelElementForParent(grammarAccess.getProblemRule()); } set( $current, "name", lv_name_1_0, "org.eclipse.viatra.solver.language.SolverLanguage.QualifiedName"); afterParserOrEnumRuleCall(); } ) ) this_FULL_STOP_2=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_2, grammarAccess.getProblemAccess().getFULL_STOPTerminalRuleCall_0_2()); } )? ( ( { newCompositeNode(grammarAccess.getProblemAccess().getImportsImportParserRuleCall_1_0()); } lv_imports_3_0=ruleImport { if ($current==null) { $current = createModelElementForParent(grammarAccess.getProblemRule()); } add( $current, "imports", lv_imports_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.Import"); afterParserOrEnumRuleCall(); } ) )* ( ( { newCompositeNode(grammarAccess.getProblemAccess().getStatementsStatementParserRuleCall_2_0()); } lv_statements_4_0=ruleStatement { if ($current==null) { $current = createModelElementForParent(grammarAccess.getProblemRule()); } add( $current, "statements", lv_statements_4_0, "org.eclipse.viatra.solver.language.SolverLanguage.Statement"); afterParserOrEnumRuleCall(); } ) )* ) ; // Entry rule entryRuleStatement entryRuleStatement returns [EObject current=null]: { newCompositeNode(grammarAccess.getStatementRule()); } iv_ruleStatement=ruleStatement { $current=$iv_ruleStatement.current; } EOF; // Rule Statement ruleStatement returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getStatementAccess().getAssertionOrDefinitionParserRuleCall_0()); } this_AssertionOrDefinition_0=ruleAssertionOrDefinition { $current = $this_AssertionOrDefinition_0.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getStatementAccess().getPredicateDefinitionParserRuleCall_1()); } this_PredicateDefinition_1=rulePredicateDefinition { $current = $this_PredicateDefinition_1.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getStatementAccess().getUnnamedErrorPredicateDefintionParserRuleCall_2()); } this_UnnamedErrorPredicateDefintion_2=ruleUnnamedErrorPredicateDefintion { $current = $this_UnnamedErrorPredicateDefintion_2.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getStatementAccess().getDefaultAssertionParserRuleCall_3()); } this_DefaultAssertion_3=ruleDefaultAssertion { $current = $this_DefaultAssertion_3.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getStatementAccess().getFunctionDefinitionParserRuleCall_4()); } this_FunctionDefinition_4=ruleFunctionDefinition { $current = $this_FunctionDefinition_4.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getStatementAccess().getAttributeParserRuleCall_5()); } this_Attribute_5=ruleAttribute { $current = $this_Attribute_5.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getStatementAccess().getExternDeclarationParserRuleCall_6()); } this_ExternDeclaration_6=ruleExternDeclaration { $current = $this_ExternDeclaration_6.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getStatementAccess().getScopeDeclarationParserRuleCall_7()); } this_ScopeDeclaration_7=ruleScopeDeclaration { $current = $this_ScopeDeclaration_7.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getStatementAccess().getObjectiveDeclarationParserRuleCall_8()); } this_ObjectiveDeclaration_8=ruleObjectiveDeclaration { $current = $this_ObjectiveDeclaration_8.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getStatementAccess().getClassDeclarationParserRuleCall_9()); } this_ClassDeclaration_9=ruleClassDeclaration { $current = $this_ClassDeclaration_9.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getStatementAccess().getEnumDeclarationParserRuleCall_10()); } this_EnumDeclaration_10=ruleEnumDeclaration { $current = $this_EnumDeclaration_10.current; afterParserOrEnumRuleCall(); } ) ; // Entry rule entryRuleImport entryRuleImport returns [EObject current=null]: { newCompositeNode(grammarAccess.getImportRule()); } iv_ruleImport=ruleImport { $current=$iv_ruleImport.current; } EOF; // Rule Import ruleImport returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getImportAccess().getUriImportParserRuleCall_0()); } this_UriImport_0=ruleUriImport { $current = $this_UriImport_0.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getImportAccess().getNamespaceImportParserRuleCall_1()); } this_NamespaceImport_1=ruleNamespaceImport { $current = $this_NamespaceImport_1.current; afterParserOrEnumRuleCall(); } ) ; // Entry rule entryRuleUriImport entryRuleUriImport returns [EObject current=null]: { newCompositeNode(grammarAccess.getUriImportRule()); } iv_ruleUriImport=ruleUriImport { $current=$iv_ruleUriImport.current; } EOF; // Rule UriImport ruleUriImport returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=Import { newLeafNode(otherlv_0, grammarAccess.getUriImportAccess().getImportKeyword_0()); } ( ( lv_uri_1_0=RULE_STRING { newLeafNode(lv_uri_1_0, grammarAccess.getUriImportAccess().getUriSTRINGTerminalRuleCall_1_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getUriImportRule()); } setWithLastConsumed( $current, "uri", lv_uri_1_0, "org.eclipse.viatra.solver.language.SolverLanguage.STRING"); } ) ) ( otherlv_2=As { newLeafNode(otherlv_2, grammarAccess.getUriImportAccess().getAsKeyword_2_0()); } ( ( { newCompositeNode(grammarAccess.getUriImportAccess().getAliasQualifiedNameParserRuleCall_2_1_0()); } lv_alias_3_0=ruleQualifiedName { if ($current==null) { $current = createModelElementForParent(grammarAccess.getUriImportRule()); } set( $current, "alias", lv_alias_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.QualifiedName"); afterParserOrEnumRuleCall(); } ) ) ) this_FULL_STOP_4=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_4, grammarAccess.getUriImportAccess().getFULL_STOPTerminalRuleCall_3()); } ) ; // Entry rule entryRuleNamespaceImport entryRuleNamespaceImport returns [EObject current=null]: { newCompositeNode(grammarAccess.getNamespaceImportRule()); } iv_ruleNamespaceImport=ruleNamespaceImport { $current=$iv_ruleNamespaceImport.current; } EOF; // Rule NamespaceImport ruleNamespaceImport returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=Import { newLeafNode(otherlv_0, grammarAccess.getNamespaceImportAccess().getImportKeyword_0()); } ( ( { newCompositeNode(grammarAccess.getNamespaceImportAccess().getImportedNamespaceQualifiedNameParserRuleCall_1_0()); } lv_importedNamespace_1_0=ruleQualifiedName { if ($current==null) { $current = createModelElementForParent(grammarAccess.getNamespaceImportRule()); } set( $current, "importedNamespace", lv_importedNamespace_1_0, "org.eclipse.viatra.solver.language.SolverLanguage.QualifiedName"); afterParserOrEnumRuleCall(); } ) ) ( otherlv_2=As { newLeafNode(otherlv_2, grammarAccess.getNamespaceImportAccess().getAsKeyword_2_0()); } ( ( { newCompositeNode(grammarAccess.getNamespaceImportAccess().getAliasQualifiedNameParserRuleCall_2_1_0()); } lv_alias_3_0=ruleQualifiedName { if ($current==null) { $current = createModelElementForParent(grammarAccess.getNamespaceImportRule()); } set( $current, "alias", lv_alias_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.QualifiedName"); afterParserOrEnumRuleCall(); } ) ) ) this_FULL_STOP_4=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_4, grammarAccess.getNamespaceImportAccess().getFULL_STOPTerminalRuleCall_3()); } ) ; // Entry rule entryRuleAssertionOrDefinition entryRuleAssertionOrDefinition returns [EObject current=null]: { newCompositeNode(grammarAccess.getAssertionOrDefinitionRule()); } iv_ruleAssertionOrDefinition=ruleAssertionOrDefinition { $current=$iv_ruleAssertionOrDefinition.current; } EOF; // Rule AssertionOrDefinition ruleAssertionOrDefinition returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getAssertionOrDefinitionAccess().getExpressionParserRuleCall_0()); } this_Expression_0=ruleExpression { $current = $this_Expression_0.current; afterParserOrEnumRuleCall(); } ( ( ( { $current = forceCreateModelElementAndSet( grammarAccess.getAssertionOrDefinitionAccess().getAssertionExpressionAction_1_0_0(), $current); } ) ( otherlv_2=Colon { newLeafNode(otherlv_2, grammarAccess.getAssertionOrDefinitionAccess().getColonKeyword_1_0_1_0()); } ( ( { newCompositeNode(grammarAccess.getAssertionOrDefinitionAccess().getRangeExpressionParserRuleCall_1_0_1_1_0()); } lv_range_3_0=ruleExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getAssertionOrDefinitionRule()); } set( $current, "range", lv_range_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); afterParserOrEnumRuleCall(); } ) ) )? ) | ( ( { $current = forceCreateModelElementAndSet( grammarAccess.getAssertionOrDefinitionAccess().getPredicateDefinitionHeadAction_1_1_0(), $current); } ) otherlv_5=ColonHyphenMinus { newLeafNode(otherlv_5, grammarAccess.getAssertionOrDefinitionAccess().getColonHyphenMinusKeyword_1_1_1()); } ( ( { newCompositeNode(grammarAccess.getAssertionOrDefinitionAccess().getBodyExpressionParserRuleCall_1_1_2_0()); } lv_body_6_0=ruleExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getAssertionOrDefinitionRule()); } set( $current, "body", lv_body_6_0, "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); afterParserOrEnumRuleCall(); } ) ) ) | ( ( { $current = forceCreateModelElementAndSet( grammarAccess.getAssertionOrDefinitionAccess().getFunctionDefinitionHeadAction_1_2_0(), $current); } ) otherlv_8=ColonEqualsSign { newLeafNode(otherlv_8, grammarAccess.getAssertionOrDefinitionAccess().getColonEqualsSignKeyword_1_2_1()); } ( ( { newCompositeNode(grammarAccess.getAssertionOrDefinitionAccess().getBodyExpressionParserRuleCall_1_2_2_0()); } lv_body_9_0=ruleExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getAssertionOrDefinitionRule()); } set( $current, "body", lv_body_9_0, "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); afterParserOrEnumRuleCall(); } ) ) ) ) this_FULL_STOP_10=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_10, grammarAccess.getAssertionOrDefinitionAccess().getFULL_STOPTerminalRuleCall_2()); } ) ; // Entry rule entryRulePredicateDefinition entryRulePredicateDefinition returns [EObject current=null]: { newCompositeNode(grammarAccess.getPredicateDefinitionRule()); } iv_rulePredicateDefinition=rulePredicateDefinition { $current=$iv_rulePredicateDefinition.current; } EOF; // Rule PredicateDefinition rulePredicateDefinition returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( ( ( ( lv_functional_0_0=Functional { newLeafNode(lv_functional_0_0, grammarAccess.getPredicateDefinitionAccess().getFunctionalFunctionalKeyword_0_0_0_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getPredicateDefinitionRule()); } setWithLastConsumed($current, "functional", true, "functional"); } ) ) ( ( lv_error_1_0=Error { newLeafNode(lv_error_1_0, grammarAccess.getPredicateDefinitionAccess().getErrorErrorKeyword_0_0_1_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getPredicateDefinitionRule()); } setWithLastConsumed($current, "error", true, "error"); } ) )? ) | ( ( ( lv_error_2_0=Error { newLeafNode(lv_error_2_0, grammarAccess.getPredicateDefinitionAccess().getErrorErrorKeyword_0_1_0_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getPredicateDefinitionRule()); } setWithLastConsumed($current, "error", true, "error"); } ) ) ( ( lv_functional_3_0=Functional { newLeafNode(lv_functional_3_0, grammarAccess.getPredicateDefinitionAccess().getFunctionalFunctionalKeyword_0_1_1_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getPredicateDefinitionRule()); } setWithLastConsumed($current, "functional", true, "functional"); } ) )? ) ) ( ( { newCompositeNode(grammarAccess.getPredicateDefinitionAccess().getHeadCallParserRuleCall_1_0()); } lv_head_4_0=ruleCall { if ($current==null) { $current = createModelElementForParent(grammarAccess.getPredicateDefinitionRule()); } set( $current, "head", lv_head_4_0, "org.eclipse.viatra.solver.language.SolverLanguage.Call"); afterParserOrEnumRuleCall(); } ) ) otherlv_5=ColonHyphenMinus { newLeafNode(otherlv_5, grammarAccess.getPredicateDefinitionAccess().getColonHyphenMinusKeyword_2()); } ( ( { newCompositeNode(grammarAccess.getPredicateDefinitionAccess().getBodyExpressionParserRuleCall_3_0()); } lv_body_6_0=ruleExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getPredicateDefinitionRule()); } set( $current, "body", lv_body_6_0, "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); afterParserOrEnumRuleCall(); } ) ) this_FULL_STOP_7=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_7, grammarAccess.getPredicateDefinitionAccess().getFULL_STOPTerminalRuleCall_4()); } ) ; // Entry rule entryRuleUnnamedErrorPredicateDefintion entryRuleUnnamedErrorPredicateDefintion returns [EObject current=null]: { newCompositeNode(grammarAccess.getUnnamedErrorPredicateDefintionRule()); } iv_ruleUnnamedErrorPredicateDefintion=ruleUnnamedErrorPredicateDefintion { $current=$iv_ruleUnnamedErrorPredicateDefintion.current; } EOF; // Rule UnnamedErrorPredicateDefintion ruleUnnamedErrorPredicateDefintion returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=Error { newLeafNode(otherlv_0, grammarAccess.getUnnamedErrorPredicateDefintionAccess().getErrorKeyword_0()); } ( ( { newCompositeNode(grammarAccess.getUnnamedErrorPredicateDefintionAccess().getArgumentListArgumentListParserRuleCall_1_0()); } lv_argumentList_1_0=ruleArgumentList { if ($current==null) { $current = createModelElementForParent(grammarAccess.getUnnamedErrorPredicateDefintionRule()); } set( $current, "argumentList", lv_argumentList_1_0, "org.eclipse.viatra.solver.language.SolverLanguage.ArgumentList"); afterParserOrEnumRuleCall(); } ) ) otherlv_2=ColonHyphenMinus { newLeafNode(otherlv_2, grammarAccess.getUnnamedErrorPredicateDefintionAccess().getColonHyphenMinusKeyword_2()); } ( ( { newCompositeNode(grammarAccess.getUnnamedErrorPredicateDefintionAccess().getBodyExpressionParserRuleCall_3_0()); } lv_body_3_0=ruleExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getUnnamedErrorPredicateDefintionRule()); } set( $current, "body", lv_body_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); afterParserOrEnumRuleCall(); } ) ) this_FULL_STOP_4=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_4, grammarAccess.getUnnamedErrorPredicateDefintionAccess().getFULL_STOPTerminalRuleCall_4()); } ) ; // Entry rule entryRuleDefaultAssertion entryRuleDefaultAssertion returns [EObject current=null]: { newCompositeNode(grammarAccess.getDefaultAssertionRule()); } iv_ruleDefaultAssertion=ruleDefaultAssertion { $current=$iv_ruleDefaultAssertion.current; } EOF; // Rule DefaultAssertion ruleDefaultAssertion returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=Default { newLeafNode(otherlv_0, grammarAccess.getDefaultAssertionAccess().getDefaultKeyword_0()); } ( ( { newCompositeNode(grammarAccess.getDefaultAssertionAccess().getExpressionCallParserRuleCall_1_0()); } lv_expression_1_0=ruleCall { if ($current==null) { $current = createModelElementForParent(grammarAccess.getDefaultAssertionRule()); } set( $current, "expression", lv_expression_1_0, "org.eclipse.viatra.solver.language.SolverLanguage.Call"); afterParserOrEnumRuleCall(); } ) ) ( otherlv_2=Colon { newLeafNode(otherlv_2, grammarAccess.getDefaultAssertionAccess().getColonKeyword_2_0()); } ( ( { newCompositeNode(grammarAccess.getDefaultAssertionAccess().getRangeExpressionParserRuleCall_2_1_0()); } lv_range_3_0=ruleExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getDefaultAssertionRule()); } set( $current, "range", lv_range_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); afterParserOrEnumRuleCall(); } ) ) )? this_FULL_STOP_4=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_4, grammarAccess.getDefaultAssertionAccess().getFULL_STOPTerminalRuleCall_3()); } ) ; // Entry rule entryRuleFunctionDefinition entryRuleFunctionDefinition returns [EObject current=null]: { newCompositeNode(grammarAccess.getFunctionDefinitionRule()); } iv_ruleFunctionDefinition=ruleFunctionDefinition { $current=$iv_ruleFunctionDefinition.current; } EOF; // Rule FunctionDefinition ruleFunctionDefinition returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getFunctionDefinitionRule()); } } { newCompositeNode(grammarAccess.getFunctionDefinitionAccess().getResultTypeSymbolCrossReference_0_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) ( ( { newCompositeNode(grammarAccess.getFunctionDefinitionAccess().getHeadCallParserRuleCall_1_0()); } lv_head_1_0=ruleCall { if ($current==null) { $current = createModelElementForParent(grammarAccess.getFunctionDefinitionRule()); } set( $current, "head", lv_head_1_0, "org.eclipse.viatra.solver.language.SolverLanguage.Call"); afterParserOrEnumRuleCall(); } ) ) otherlv_2=ColonEqualsSign { newLeafNode(otherlv_2, grammarAccess.getFunctionDefinitionAccess().getColonEqualsSignKeyword_2()); } ( ( { newCompositeNode(grammarAccess.getFunctionDefinitionAccess().getBodyExpressionParserRuleCall_3_0()); } lv_body_3_0=ruleExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getFunctionDefinitionRule()); } set( $current, "body", lv_body_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); afterParserOrEnumRuleCall(); } ) ) this_FULL_STOP_4=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_4, grammarAccess.getFunctionDefinitionAccess().getFULL_STOPTerminalRuleCall_4()); } ) ; // Entry rule entryRuleTypeReference entryRuleTypeReference returns [EObject current=null]: { newCompositeNode(grammarAccess.getTypeReferenceRule()); } iv_ruleTypeReference=ruleTypeReference { $current=$iv_ruleTypeReference.current; } EOF; // Rule TypeReference ruleTypeReference returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getTypeReferenceRule()); } } { newCompositeNode(grammarAccess.getTypeReferenceAccess().getTypeSymbolCrossReference_0_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) ( ( lv_forceObjectType_1_0=Object { newLeafNode(lv_forceObjectType_1_0, grammarAccess.getTypeReferenceAccess().getForceObjectTypeObjectKeyword_1_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getTypeReferenceRule()); } setWithLastConsumed($current, "forceObjectType", true, "object"); } ) )? ) ; // Entry rule entryRuleAttribute entryRuleAttribute returns [EObject current=null]: { newCompositeNode(grammarAccess.getAttributeRule()); } iv_ruleAttribute=ruleAttribute { $current=$iv_ruleAttribute.current; } EOF; // Rule Attribute ruleAttribute returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( ( { newCompositeNode(grammarAccess.getAttributeAccess().getKindAttributeKindEnumRuleCall_0_0()); } lv_kind_0_0=ruleAttributeKind { if ($current==null) { $current = createModelElementForParent(grammarAccess.getAttributeRule()); } set( $current, "kind", lv_kind_0_0, "org.eclipse.viatra.solver.language.SolverLanguage.AttributeKind"); afterParserOrEnumRuleCall(); } ) ) ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getAttributeRule()); } } { newCompositeNode(grammarAccess.getAttributeAccess().getTargetSymbolCrossReference_1_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) this_FULL_STOP_2=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_2, grammarAccess.getAttributeAccess().getFULL_STOPTerminalRuleCall_2()); } ) ; // Entry rule entryRuleExternDeclaration entryRuleExternDeclaration returns [EObject current=null]: { newCompositeNode(grammarAccess.getExternDeclarationRule()); } iv_ruleExternDeclaration=ruleExternDeclaration { $current=$iv_ruleExternDeclaration.current; } EOF; // Rule ExternDeclaration ruleExternDeclaration returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getExternDeclarationAccess().getExternPredicateDeclarationParserRuleCall_0()); } this_ExternPredicateDeclaration_0=ruleExternPredicateDeclaration { $current = $this_ExternPredicateDeclaration_0.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getExternDeclarationAccess().getExternFunctionDeclarationParserRuleCall_1()); } this_ExternFunctionDeclaration_1=ruleExternFunctionDeclaration { $current = $this_ExternFunctionDeclaration_1.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getExternDeclarationAccess().getExternAggregationOperatorDeclarationParserRuleCall_2()); } this_ExternAggregationOperatorDeclaration_2=ruleExternAggregationOperatorDeclaration { $current = $this_ExternAggregationOperatorDeclaration_2.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getExternDeclarationAccess().getExternDatatypeDeclarationParserRuleCall_3()); } this_ExternDatatypeDeclaration_3=ruleExternDatatypeDeclaration { $current = $this_ExternDatatypeDeclaration_3.current; afterParserOrEnumRuleCall(); } ) ; // Entry rule entryRuleExternPredicateDeclaration entryRuleExternPredicateDeclaration returns [EObject current=null]: { newCompositeNode(grammarAccess.getExternPredicateDeclarationRule()); } iv_ruleExternPredicateDeclaration=ruleExternPredicateDeclaration { $current=$iv_ruleExternPredicateDeclaration.current; } EOF; // Rule ExternPredicateDeclaration ruleExternPredicateDeclaration returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=Extern { newLeafNode(otherlv_0, grammarAccess.getExternPredicateDeclarationAccess().getExternKeyword_0()); } ( ( { getUnorderedGroupHelper().enter(grammarAccess.getExternPredicateDeclarationAccess().getUnorderedGroup_1()); } ( ( ( {getUnorderedGroupHelper().canSelect(grammarAccess.getExternPredicateDeclarationAccess().getUnorderedGroup_1(), 0)}?=>( { getUnorderedGroupHelper().select(grammarAccess.getExternPredicateDeclarationAccess().getUnorderedGroup_1(), 0); } ({true}?=>(( lv_functional_2_0=Functional { newLeafNode(lv_functional_2_0, grammarAccess.getExternPredicateDeclarationAccess().getFunctionalFunctionalKeyword_1_0_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getExternPredicateDeclarationRule()); } setWithLastConsumed($current, "functional", true, "functional"); } ) )) { getUnorderedGroupHelper().returnFromSelection(grammarAccess.getExternPredicateDeclarationAccess().getUnorderedGroup_1()); } ) )| ( {getUnorderedGroupHelper().canSelect(grammarAccess.getExternPredicateDeclarationAccess().getUnorderedGroup_1(), 1)}?=>( { getUnorderedGroupHelper().select(grammarAccess.getExternPredicateDeclarationAccess().getUnorderedGroup_1(), 1); } ({true}?=>(( lv_error_3_0=Error { newLeafNode(lv_error_3_0, grammarAccess.getExternPredicateDeclarationAccess().getErrorErrorKeyword_1_1_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getExternPredicateDeclarationRule()); } setWithLastConsumed($current, "error", true, "error"); } ) )) { getUnorderedGroupHelper().returnFromSelection(grammarAccess.getExternPredicateDeclarationAccess().getUnorderedGroup_1()); } ) ) )* ) ) { getUnorderedGroupHelper().leave(grammarAccess.getExternPredicateDeclarationAccess().getUnorderedGroup_1()); } ) ( ( { newCompositeNode(grammarAccess.getExternPredicateDeclarationAccess().getNameQualifiedNameParserRuleCall_2_0()); } lv_name_4_0=ruleQualifiedName { if ($current==null) { $current = createModelElementForParent(grammarAccess.getExternPredicateDeclarationRule()); } set( $current, "name", lv_name_4_0, "org.eclipse.viatra.solver.language.SolverLanguage.QualifiedName"); afterParserOrEnumRuleCall(); } ) ) ( ( { newCompositeNode(grammarAccess.getExternPredicateDeclarationAccess().getArgumentListArgumentListParserRuleCall_3_0()); } lv_argumentList_5_0=ruleArgumentList { if ($current==null) { $current = createModelElementForParent(grammarAccess.getExternPredicateDeclarationRule()); } set( $current, "argumentList", lv_argumentList_5_0, "org.eclipse.viatra.solver.language.SolverLanguage.ArgumentList"); afterParserOrEnumRuleCall(); } ) ) this_FULL_STOP_6=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_6, grammarAccess.getExternPredicateDeclarationAccess().getFULL_STOPTerminalRuleCall_4()); } ) ; // Entry rule entryRuleExternFunctionDeclaration entryRuleExternFunctionDeclaration returns [EObject current=null]: { newCompositeNode(grammarAccess.getExternFunctionDeclarationRule()); } iv_ruleExternFunctionDeclaration=ruleExternFunctionDeclaration { $current=$iv_ruleExternFunctionDeclaration.current; } EOF; // Rule ExternFunctionDeclaration ruleExternFunctionDeclaration returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=Extern { newLeafNode(otherlv_0, grammarAccess.getExternFunctionDeclarationAccess().getExternKeyword_0()); } ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getExternFunctionDeclarationRule()); } } { newCompositeNode(grammarAccess.getExternFunctionDeclarationAccess().getResultTypeSymbolCrossReference_1_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) ( ( { newCompositeNode(grammarAccess.getExternFunctionDeclarationAccess().getNameQualifiedNameParserRuleCall_2_0()); } lv_name_2_0=ruleQualifiedName { if ($current==null) { $current = createModelElementForParent(grammarAccess.getExternFunctionDeclarationRule()); } set( $current, "name", lv_name_2_0, "org.eclipse.viatra.solver.language.SolverLanguage.QualifiedName"); afterParserOrEnumRuleCall(); } ) ) ( ( { newCompositeNode(grammarAccess.getExternFunctionDeclarationAccess().getArgumentListArgumentListParserRuleCall_3_0()); } lv_argumentList_3_0=ruleArgumentList { if ($current==null) { $current = createModelElementForParent(grammarAccess.getExternFunctionDeclarationRule()); } set( $current, "argumentList", lv_argumentList_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.ArgumentList"); afterParserOrEnumRuleCall(); } ) ) this_FULL_STOP_4=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_4, grammarAccess.getExternFunctionDeclarationAccess().getFULL_STOPTerminalRuleCall_4()); } ) ; // Entry rule entryRuleExternAggregationOperatorDeclaration entryRuleExternAggregationOperatorDeclaration returns [EObject current=null]: { newCompositeNode(grammarAccess.getExternAggregationOperatorDeclarationRule()); } iv_ruleExternAggregationOperatorDeclaration=ruleExternAggregationOperatorDeclaration { $current=$iv_ruleExternAggregationOperatorDeclaration.current; } EOF; // Rule ExternAggregationOperatorDeclaration ruleExternAggregationOperatorDeclaration returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=Extern { newLeafNode(otherlv_0, grammarAccess.getExternAggregationOperatorDeclarationAccess().getExternKeyword_0()); } ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getExternAggregationOperatorDeclarationRule()); } } { newCompositeNode(grammarAccess.getExternAggregationOperatorDeclarationAccess().getResultTypeSymbolCrossReference_1_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) ( ( { newCompositeNode(grammarAccess.getExternAggregationOperatorDeclarationAccess().getNameQualifiedNameParserRuleCall_2_0()); } lv_name_2_0=ruleQualifiedName { if ($current==null) { $current = createModelElementForParent(grammarAccess.getExternAggregationOperatorDeclarationRule()); } set( $current, "name", lv_name_2_0, "org.eclipse.viatra.solver.language.SolverLanguage.QualifiedName"); afterParserOrEnumRuleCall(); } ) ) otherlv_3=LeftCurlyBracket { newLeafNode(otherlv_3, grammarAccess.getExternAggregationOperatorDeclarationAccess().getLeftCurlyBracketKeyword_3()); } ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getExternAggregationOperatorDeclarationRule()); } } { newCompositeNode(grammarAccess.getExternAggregationOperatorDeclarationAccess().getArgumentTypeSymbolCrossReference_4_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) otherlv_5=FullStopFullStopFullStop { newLeafNode(otherlv_5, grammarAccess.getExternAggregationOperatorDeclarationAccess().getFullStopFullStopFullStopKeyword_5()); } otherlv_6=RightCurlyBracket { newLeafNode(otherlv_6, grammarAccess.getExternAggregationOperatorDeclarationAccess().getRightCurlyBracketKeyword_6()); } this_FULL_STOP_7=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_7, grammarAccess.getExternAggregationOperatorDeclarationAccess().getFULL_STOPTerminalRuleCall_7()); } ) ; // Entry rule entryRuleExternDatatypeDeclaration entryRuleExternDatatypeDeclaration returns [EObject current=null]: { newCompositeNode(grammarAccess.getExternDatatypeDeclarationRule()); } iv_ruleExternDatatypeDeclaration=ruleExternDatatypeDeclaration { $current=$iv_ruleExternDatatypeDeclaration.current; } EOF; // Rule ExternDatatypeDeclaration ruleExternDatatypeDeclaration returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=Extern { newLeafNode(otherlv_0, grammarAccess.getExternDatatypeDeclarationAccess().getExternKeyword_0()); } otherlv_1=Datatype { newLeafNode(otherlv_1, grammarAccess.getExternDatatypeDeclarationAccess().getDatatypeKeyword_1()); } ( ( { newCompositeNode(grammarAccess.getExternDatatypeDeclarationAccess().getNameQualifiedNameParserRuleCall_2_0()); } lv_name_2_0=ruleQualifiedName { if ($current==null) { $current = createModelElementForParent(grammarAccess.getExternDatatypeDeclarationRule()); } set( $current, "name", lv_name_2_0, "org.eclipse.viatra.solver.language.SolverLanguage.QualifiedName"); afterParserOrEnumRuleCall(); } ) ) this_FULL_STOP_3=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_3, grammarAccess.getExternDatatypeDeclarationAccess().getFULL_STOPTerminalRuleCall_3()); } ) ; // Entry rule entryRuleExpression entryRuleExpression returns [EObject current=null]: { newCompositeNode(grammarAccess.getExpressionRule()); } iv_ruleExpression=ruleExpression { $current=$iv_ruleExpression.current; } EOF; // Rule Expression ruleExpression returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getExpressionAccess().getConditionalExpressionParserRuleCall_0()); } this_ConditionalExpression_0=ruleConditionalExpression { $current = $this_ConditionalExpression_0.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getExpressionAccess().getLetExpressionParserRuleCall_1()); } this_LetExpression_1=ruleLetExpression { $current = $this_LetExpression_1.current; afterParserOrEnumRuleCall(); } | ( { newCompositeNode(grammarAccess.getExpressionAccess().getDisjunctiveExpressionParserRuleCall_2_0()); } this_DisjunctiveExpression_2=ruleDisjunctiveExpression { $current = $this_DisjunctiveExpression_2.current; afterParserOrEnumRuleCall(); } ( ( { $current = forceCreateModelElementAndSet( grammarAccess.getExpressionAccess().getForallConditionAction_2_1_0(), $current); } ) otherlv_4=EqualsSignGreaterThanSign { newLeafNode(otherlv_4, grammarAccess.getExpressionAccess().getEqualsSignGreaterThanSignKeyword_2_1_1()); } ( ( { newCompositeNode(grammarAccess.getExpressionAccess().getBodyDisjunctiveExpressionParserRuleCall_2_1_2_0()); } lv_body_5_0=ruleDisjunctiveExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getExpressionRule()); } set( $current, "body", lv_body_5_0, "org.eclipse.viatra.solver.language.SolverLanguage.DisjunctiveExpression"); afterParserOrEnumRuleCall(); } ) ) )? ) ) ; // Entry rule entryRuleConditionalExpression entryRuleConditionalExpression returns [EObject current=null]: { newCompositeNode(grammarAccess.getConditionalExpressionRule()); } iv_ruleConditionalExpression=ruleConditionalExpression { $current=$iv_ruleConditionalExpression.current; } EOF; // Rule ConditionalExpression ruleConditionalExpression returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=If { newLeafNode(otherlv_0, grammarAccess.getConditionalExpressionAccess().getIfKeyword_0()); } ( ( { newCompositeNode(grammarAccess.getConditionalExpressionAccess().getConditionDisjunctiveExpressionParserRuleCall_1_0()); } lv_condition_1_0=ruleDisjunctiveExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getConditionalExpressionRule()); } set( $current, "condition", lv_condition_1_0, "org.eclipse.viatra.solver.language.SolverLanguage.DisjunctiveExpression"); afterParserOrEnumRuleCall(); } ) ) otherlv_2=Then { newLeafNode(otherlv_2, grammarAccess.getConditionalExpressionAccess().getThenKeyword_2()); } ( ( { newCompositeNode(grammarAccess.getConditionalExpressionAccess().getThenExpressionParserRuleCall_3_0()); } lv_then_3_0=ruleExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getConditionalExpressionRule()); } set( $current, "then", lv_then_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); afterParserOrEnumRuleCall(); } ) ) otherlv_4=Else { newLeafNode(otherlv_4, grammarAccess.getConditionalExpressionAccess().getElseKeyword_4()); } ( ( { newCompositeNode(grammarAccess.getConditionalExpressionAccess().getElseExpressionParserRuleCall_5_0()); } lv_else_5_0=ruleExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getConditionalExpressionRule()); } set( $current, "else", lv_else_5_0, "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); afterParserOrEnumRuleCall(); } ) ) ) ; // Entry rule entryRuleLetExpression entryRuleLetExpression returns [EObject current=null]: { newCompositeNode(grammarAccess.getLetExpressionRule()); } iv_ruleLetExpression=ruleLetExpression { $current=$iv_ruleLetExpression.current; } EOF; // Rule LetExpression ruleLetExpression returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=Let { newLeafNode(otherlv_0, grammarAccess.getLetExpressionAccess().getLetKeyword_0()); } ( ( { newCompositeNode(grammarAccess.getLetExpressionAccess().getBindingsLetBindingParserRuleCall_1_0()); } lv_bindings_1_0=ruleLetBinding { if ($current==null) { $current = createModelElementForParent(grammarAccess.getLetExpressionRule()); } add( $current, "bindings", lv_bindings_1_0, "org.eclipse.viatra.solver.language.SolverLanguage.LetBinding"); afterParserOrEnumRuleCall(); } ) ) ( otherlv_2=Comma { newLeafNode(otherlv_2, grammarAccess.getLetExpressionAccess().getCommaKeyword_2_0()); } ( ( { newCompositeNode(grammarAccess.getLetExpressionAccess().getBindingsLetBindingParserRuleCall_2_1_0()); } lv_bindings_3_0=ruleLetBinding { if ($current==null) { $current = createModelElementForParent(grammarAccess.getLetExpressionRule()); } add( $current, "bindings", lv_bindings_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.LetBinding"); afterParserOrEnumRuleCall(); } ) ) )* otherlv_4=In { newLeafNode(otherlv_4, grammarAccess.getLetExpressionAccess().getInKeyword_3()); } ( ( { newCompositeNode(grammarAccess.getLetExpressionAccess().getBodyExpressionParserRuleCall_4_0()); } lv_body_5_0=ruleExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getLetExpressionRule()); } set( $current, "body", lv_body_5_0, "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); afterParserOrEnumRuleCall(); } ) ) ) ; // Entry rule entryRuleLetBinding entryRuleLetBinding returns [EObject current=null]: { newCompositeNode(grammarAccess.getLetBindingRule()); } iv_ruleLetBinding=ruleLetBinding { $current=$iv_ruleLetBinding.current; } EOF; // Rule LetBinding ruleLetBinding returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getLetBindingRule()); } } { newCompositeNode(grammarAccess.getLetBindingAccess().getTypeSymbolCrossReference_0_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) )? ( ( lv_name_1_0=RULE_ID { newLeafNode(lv_name_1_0, grammarAccess.getLetBindingAccess().getNameIDTerminalRuleCall_1_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getLetBindingRule()); } setWithLastConsumed( $current, "name", lv_name_1_0, "org.eclipse.xtext.common.Terminals.ID"); } ) ) otherlv_2=EqualsSign { newLeafNode(otherlv_2, grammarAccess.getLetBindingAccess().getEqualsSignKeyword_2()); } ( ( { newCompositeNode(grammarAccess.getLetBindingAccess().getValueAdditiveExpressionParserRuleCall_3_0()); } lv_value_3_0=ruleAdditiveExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getLetBindingRule()); } set( $current, "value", lv_value_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.AdditiveExpression"); afterParserOrEnumRuleCall(); } ) ) ) ; // Entry rule entryRuleDisjunctiveExpression entryRuleDisjunctiveExpression returns [EObject current=null]: { newCompositeNode(grammarAccess.getDisjunctiveExpressionRule()); } iv_ruleDisjunctiveExpression=ruleDisjunctiveExpression { $current=$iv_ruleDisjunctiveExpression.current; } EOF; // Rule DisjunctiveExpression ruleDisjunctiveExpression returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getDisjunctiveExpressionAccess().getConjunctiveExpressionParserRuleCall_0()); } this_ConjunctiveExpression_0=ruleConjunctiveExpression { $current = $this_ConjunctiveExpression_0.current; afterParserOrEnumRuleCall(); } ( ( ( { $current = forceCreateModelElementAndAdd( grammarAccess.getDisjunctiveExpressionAccess().getDisjunctionChildrenAction_1_0_0(), $current); } ) ( otherlv_2=Semicolon { newLeafNode(otherlv_2, grammarAccess.getDisjunctiveExpressionAccess().getSemicolonKeyword_1_0_1_0()); } ( ( { newCompositeNode(grammarAccess.getDisjunctiveExpressionAccess().getChildrenConjunctiveExpressionParserRuleCall_1_0_1_1_0()); } lv_children_3_0=ruleConjunctiveExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getDisjunctiveExpressionRule()); } add( $current, "children", lv_children_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.ConjunctiveExpression"); afterParserOrEnumRuleCall(); } ) ) )+ ) | ( ( { $current = forceCreateModelElementAndSet( grammarAccess.getDisjunctiveExpressionAccess().getCaseConditionAction_1_1_0(), $current); } ) otherlv_5=HyphenMinusGreaterThanSign { newLeafNode(otherlv_5, grammarAccess.getDisjunctiveExpressionAccess().getHyphenMinusGreaterThanSignKeyword_1_1_1()); } ( ( { newCompositeNode(grammarAccess.getDisjunctiveExpressionAccess().getBodyConjunctiveExpressionParserRuleCall_1_1_2_0()); } lv_body_6_0=ruleConjunctiveExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getDisjunctiveExpressionRule()); } set( $current, "body", lv_body_6_0, "org.eclipse.viatra.solver.language.SolverLanguage.ConjunctiveExpression"); afterParserOrEnumRuleCall(); } ) ) ( { $current = forceCreateModelElementAndAdd( grammarAccess.getDisjunctiveExpressionAccess().getSwitchCasesAction_1_1_3(), $current); } ) ( otherlv_8=Semicolon { newLeafNode(otherlv_8, grammarAccess.getDisjunctiveExpressionAccess().getSemicolonKeyword_1_1_4_0()); } ( ( { newCompositeNode(grammarAccess.getDisjunctiveExpressionAccess().getCasesCaseParserRuleCall_1_1_4_1_0()); } lv_cases_9_0=ruleCase { if ($current==null) { $current = createModelElementForParent(grammarAccess.getDisjunctiveExpressionRule()); } add( $current, "cases", lv_cases_9_0, "org.eclipse.viatra.solver.language.SolverLanguage.Case"); afterParserOrEnumRuleCall(); } ) ) )* ) )? ) ; // Entry rule entryRuleCase entryRuleCase returns [EObject current=null]: { newCompositeNode(grammarAccess.getCaseRule()); } iv_ruleCase=ruleCase { $current=$iv_ruleCase.current; } EOF; // Rule Case ruleCase returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( ( { newCompositeNode(grammarAccess.getCaseAccess().getConditionConjunctiveExpressionParserRuleCall_0_0()); } lv_condition_0_0=ruleConjunctiveExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getCaseRule()); } set( $current, "condition", lv_condition_0_0, "org.eclipse.viatra.solver.language.SolverLanguage.ConjunctiveExpression"); afterParserOrEnumRuleCall(); } ) ) otherlv_1=HyphenMinusGreaterThanSign { newLeafNode(otherlv_1, grammarAccess.getCaseAccess().getHyphenMinusGreaterThanSignKeyword_1()); } ( ( { newCompositeNode(grammarAccess.getCaseAccess().getBodyConjunctiveExpressionParserRuleCall_2_0()); } lv_body_2_0=ruleConjunctiveExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getCaseRule()); } set( $current, "body", lv_body_2_0, "org.eclipse.viatra.solver.language.SolverLanguage.ConjunctiveExpression"); afterParserOrEnumRuleCall(); } ) ) ) ; // Entry rule entryRuleConjunctiveExpression entryRuleConjunctiveExpression returns [EObject current=null]: { newCompositeNode(grammarAccess.getConjunctiveExpressionRule()); } iv_ruleConjunctiveExpression=ruleConjunctiveExpression { $current=$iv_ruleConjunctiveExpression.current; } EOF; // Rule ConjunctiveExpression ruleConjunctiveExpression returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getConjunctiveExpressionAccess().getComparisonExpressionParserRuleCall_0()); } this_ComparisonExpression_0=ruleComparisonExpression { $current = $this_ComparisonExpression_0.current; afterParserOrEnumRuleCall(); } ( ( { $current = forceCreateModelElementAndAdd( grammarAccess.getConjunctiveExpressionAccess().getConjunctionChildrenAction_1_0(), $current); } ) ( otherlv_2=Comma { newLeafNode(otherlv_2, grammarAccess.getConjunctiveExpressionAccess().getCommaKeyword_1_1_0()); } ( ( { newCompositeNode(grammarAccess.getConjunctiveExpressionAccess().getChildrenComparisonExpressionParserRuleCall_1_1_1_0()); } lv_children_3_0=ruleComparisonExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getConjunctiveExpressionRule()); } add( $current, "children", lv_children_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.ComparisonExpression"); afterParserOrEnumRuleCall(); } ) ) )+ )? ) ; // Entry rule entryRuleComparisonExpression entryRuleComparisonExpression returns [EObject current=null]: { newCompositeNode(grammarAccess.getComparisonExpressionRule()); } iv_ruleComparisonExpression=ruleComparisonExpression { $current=$iv_ruleComparisonExpression.current; } EOF; // Rule ComparisonExpression ruleComparisonExpression returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getComparisonExpressionAccess().getAdditiveExpressionParserRuleCall_0()); } this_AdditiveExpression_0=ruleAdditiveExpression { $current = $this_AdditiveExpression_0.current; afterParserOrEnumRuleCall(); } ( ( { $current = forceCreateModelElementAndSet( grammarAccess.getComparisonExpressionAccess().getBinaryExpressionLeftAction_1_0(), $current); } ) ( ( { newCompositeNode(grammarAccess.getComparisonExpressionAccess().getOpComparisonOperatorEnumRuleCall_1_1_0()); } lv_op_2_0=ruleComparisonOperator { if ($current==null) { $current = createModelElementForParent(grammarAccess.getComparisonExpressionRule()); } set( $current, "op", lv_op_2_0, "org.eclipse.viatra.solver.language.SolverLanguage.ComparisonOperator"); afterParserOrEnumRuleCall(); } ) ) ( ( { newCompositeNode(grammarAccess.getComparisonExpressionAccess().getRightAdditiveExpressionParserRuleCall_1_2_0()); } lv_right_3_0=ruleAdditiveExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getComparisonExpressionRule()); } set( $current, "right", lv_right_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.AdditiveExpression"); afterParserOrEnumRuleCall(); } ) ) )? ) ; // Entry rule entryRuleAdditiveExpression entryRuleAdditiveExpression returns [EObject current=null]: { newCompositeNode(grammarAccess.getAdditiveExpressionRule()); } iv_ruleAdditiveExpression=ruleAdditiveExpression { $current=$iv_ruleAdditiveExpression.current; } EOF; // Rule AdditiveExpression ruleAdditiveExpression returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getMultiplicativeExpressionParserRuleCall_0()); } this_MultiplicativeExpression_0=ruleMultiplicativeExpression { $current = $this_MultiplicativeExpression_0.current; afterParserOrEnumRuleCall(); } ( ( { $current = forceCreateModelElementAndSet( grammarAccess.getAdditiveExpressionAccess().getBinaryExpressionLeftAction_1_0(), $current); } ) ( ( { newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getOpAdditiveBinaryOperatorEnumRuleCall_1_1_0()); } lv_op_2_0=ruleAdditiveBinaryOperator { if ($current==null) { $current = createModelElementForParent(grammarAccess.getAdditiveExpressionRule()); } set( $current, "op", lv_op_2_0, "org.eclipse.viatra.solver.language.SolverLanguage.AdditiveBinaryOperator"); afterParserOrEnumRuleCall(); } ) ) ( ( { newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getRightMultiplicativeExpressionParserRuleCall_1_2_0()); } lv_right_3_0=ruleMultiplicativeExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getAdditiveExpressionRule()); } set( $current, "right", lv_right_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.MultiplicativeExpression"); afterParserOrEnumRuleCall(); } ) ) )* ) ; // Entry rule entryRuleMultiplicativeExpression entryRuleMultiplicativeExpression returns [EObject current=null]: { newCompositeNode(grammarAccess.getMultiplicativeExpressionRule()); } iv_ruleMultiplicativeExpression=ruleMultiplicativeExpression { $current=$iv_ruleMultiplicativeExpression.current; } EOF; // Rule MultiplicativeExpression ruleMultiplicativeExpression returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getMultiplicativeExpressionAccess().getExponentialExpressionParserRuleCall_0()); } this_ExponentialExpression_0=ruleExponentialExpression { $current = $this_ExponentialExpression_0.current; afterParserOrEnumRuleCall(); } ( ( { $current = forceCreateModelElementAndSet( grammarAccess.getMultiplicativeExpressionAccess().getBinaryExpressionLeftAction_1_0(), $current); } ) ( ( { newCompositeNode(grammarAccess.getMultiplicativeExpressionAccess().getOpMultiplicativeBinaryOperatorEnumRuleCall_1_1_0()); } lv_op_2_0=ruleMultiplicativeBinaryOperator { if ($current==null) { $current = createModelElementForParent(grammarAccess.getMultiplicativeExpressionRule()); } set( $current, "op", lv_op_2_0, "org.eclipse.viatra.solver.language.SolverLanguage.MultiplicativeBinaryOperator"); afterParserOrEnumRuleCall(); } ) ) ( ( { newCompositeNode(grammarAccess.getMultiplicativeExpressionAccess().getRightExponentialExpressionParserRuleCall_1_2_0()); } lv_right_3_0=ruleExponentialExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getMultiplicativeExpressionRule()); } set( $current, "right", lv_right_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.ExponentialExpression"); afterParserOrEnumRuleCall(); } ) ) )* ) ; // Entry rule entryRuleExponentialExpression entryRuleExponentialExpression returns [EObject current=null]: { newCompositeNode(grammarAccess.getExponentialExpressionRule()); } iv_ruleExponentialExpression=ruleExponentialExpression { $current=$iv_ruleExponentialExpression.current; } EOF; // Rule ExponentialExpression ruleExponentialExpression returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getExponentialExpressionAccess().getCastExpressionParserRuleCall_0()); } this_CastExpression_0=ruleCastExpression { $current = $this_CastExpression_0.current; afterParserOrEnumRuleCall(); } ( ( { $current = forceCreateModelElementAndSet( grammarAccess.getExponentialExpressionAccess().getBinaryExpressionLeftAction_1_0(), $current); } ) ( ( { newCompositeNode(grammarAccess.getExponentialExpressionAccess().getOpExponentialOpEnumRuleCall_1_1_0()); } lv_op_2_0=ruleExponentialOp { if ($current==null) { $current = createModelElementForParent(grammarAccess.getExponentialExpressionRule()); } set( $current, "op", lv_op_2_0, "org.eclipse.viatra.solver.language.SolverLanguage.ExponentialOp"); afterParserOrEnumRuleCall(); } ) ) ( ( { newCompositeNode(grammarAccess.getExponentialExpressionAccess().getRightCastExpressionParserRuleCall_1_2_0()); } lv_right_3_0=ruleCastExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getExponentialExpressionRule()); } set( $current, "right", lv_right_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.CastExpression"); afterParserOrEnumRuleCall(); } ) ) )? ) ; // Entry rule entryRuleCastExpression entryRuleCastExpression returns [EObject current=null]: { newCompositeNode(grammarAccess.getCastExpressionRule()); } iv_ruleCastExpression=ruleCastExpression { $current=$iv_ruleCastExpression.current; } EOF; // Rule CastExpression ruleCastExpression returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getCastExpressionAccess().getUnaryExpressionParserRuleCall_0()); } this_UnaryExpression_0=ruleUnaryExpression { $current = $this_UnaryExpression_0.current; afterParserOrEnumRuleCall(); } ( ( { $current = forceCreateModelElementAndSet( grammarAccess.getCastExpressionAccess().getCastExpressionBodyAction_1_0(), $current); } ) otherlv_2=As { newLeafNode(otherlv_2, grammarAccess.getCastExpressionAccess().getAsKeyword_1_1()); } ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getCastExpressionRule()); } } { newCompositeNode(grammarAccess.getCastExpressionAccess().getTargetTypeSymbolCrossReference_1_2_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) )? ) ; // Entry rule entryRuleUnaryExpression entryRuleUnaryExpression returns [EObject current=null]: { newCompositeNode(grammarAccess.getUnaryExpressionRule()); } iv_ruleUnaryExpression=ruleUnaryExpression { $current=$iv_ruleUnaryExpression.current; } EOF; // Rule UnaryExpression ruleUnaryExpression returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getUnaryExpressionAccess().getBracedAggregateExpressionParserRuleCall_0()); } this_BracedAggregateExpression_0=ruleBracedAggregateExpression { $current = $this_BracedAggregateExpression_0.current; afterParserOrEnumRuleCall(); } | ( ( { $current = forceCreateModelElement( grammarAccess.getUnaryExpressionAccess().getUnaryExpressionAction_1_0(), $current); } ) ( ( { newCompositeNode(grammarAccess.getUnaryExpressionAccess().getOpUnaryOperatorEnumRuleCall_1_1_0()); } lv_op_2_0=ruleUnaryOperator { if ($current==null) { $current = createModelElementForParent(grammarAccess.getUnaryExpressionRule()); } set( $current, "op", lv_op_2_0, "org.eclipse.viatra.solver.language.SolverLanguage.UnaryOperator"); afterParserOrEnumRuleCall(); } ) ) ( ( { newCompositeNode(grammarAccess.getUnaryExpressionAccess().getBodyBracedAggregateExpressionParserRuleCall_1_2_0()); } lv_body_3_0=ruleBracedAggregateExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getUnaryExpressionRule()); } set( $current, "body", lv_body_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.BracedAggregateExpression"); afterParserOrEnumRuleCall(); } ) ) ) ) ; // Entry rule entryRuleBracedAggregateExpression entryRuleBracedAggregateExpression returns [EObject current=null]: { newCompositeNode(grammarAccess.getBracedAggregateExpressionRule()); } iv_ruleBracedAggregateExpression=ruleBracedAggregateExpression { $current=$iv_ruleBracedAggregateExpression.current; } EOF; // Rule BracedAggregateExpression ruleBracedAggregateExpression returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getBracedAggregateExpressionAccess().getAtomicExpressionParserRuleCall_0()); } this_AtomicExpression_0=ruleAtomicExpression { $current = $this_AtomicExpression_0.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getBracedAggregateExpressionAccess().getAggregationParserRuleCall_1()); } this_Aggregation_1=ruleAggregation { $current = $this_Aggregation_1.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getBracedAggregateExpressionAccess().getCountParserRuleCall_2()); } this_Count_2=ruleCount { $current = $this_Count_2.current; afterParserOrEnumRuleCall(); } ) ; // Entry rule entryRuleAggregation entryRuleAggregation returns [EObject current=null]: { newCompositeNode(grammarAccess.getAggregationRule()); } iv_ruleAggregation=ruleAggregation { $current=$iv_ruleAggregation.current; } EOF; // Rule Aggregation ruleAggregation returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getAggregationRule()); } } { newCompositeNode(grammarAccess.getAggregationAccess().getOpSymbolCrossReference_0_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) otherlv_1=LeftCurlyBracket { newLeafNode(otherlv_1, grammarAccess.getAggregationAccess().getLeftCurlyBracketKeyword_1()); } ( ( { newCompositeNode(grammarAccess.getAggregationAccess().getValueExpressionParserRuleCall_2_0()); } lv_value_2_0=ruleExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getAggregationRule()); } set( $current, "value", lv_value_2_0, "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); afterParserOrEnumRuleCall(); } ) ) otherlv_3=VerticalLine { newLeafNode(otherlv_3, grammarAccess.getAggregationAccess().getVerticalLineKeyword_3()); } ( ( { newCompositeNode(grammarAccess.getAggregationAccess().getConditionExpressionParserRuleCall_4_0()); } lv_condition_4_0=ruleExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getAggregationRule()); } set( $current, "condition", lv_condition_4_0, "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); afterParserOrEnumRuleCall(); } ) ) otherlv_5=RightCurlyBracket { newLeafNode(otherlv_5, grammarAccess.getAggregationAccess().getRightCurlyBracketKeyword_5()); } ) ; // Entry rule entryRuleCount entryRuleCount returns [EObject current=null]: { newCompositeNode(grammarAccess.getCountRule()); } iv_ruleCount=ruleCount { $current=$iv_ruleCount.current; } EOF; // Rule Count ruleCount returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=Count { newLeafNode(otherlv_0, grammarAccess.getCountAccess().getCountKeyword_0()); } otherlv_1=LeftCurlyBracket { newLeafNode(otherlv_1, grammarAccess.getCountAccess().getLeftCurlyBracketKeyword_1()); } ( ( { newCompositeNode(grammarAccess.getCountAccess().getConditionExpressionParserRuleCall_2_0()); } lv_condition_2_0=ruleExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getCountRule()); } set( $current, "condition", lv_condition_2_0, "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); afterParserOrEnumRuleCall(); } ) ) otherlv_3=RightCurlyBracket { newLeafNode(otherlv_3, grammarAccess.getCountAccess().getRightCurlyBracketKeyword_3()); } ) ; // Entry rule entryRuleAtomicExpression entryRuleAtomicExpression returns [EObject current=null]: { newCompositeNode(grammarAccess.getAtomicExpressionRule()); } iv_ruleAtomicExpression=ruleAtomicExpression { $current=$iv_ruleAtomicExpression.current; } EOF; // Rule AtomicExpression ruleAtomicExpression returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getAtomicExpressionAccess().getReferenceParserRuleCall_0()); } this_Reference_0=ruleReference { $current = $this_Reference_0.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getAtomicExpressionAccess().getCallParserRuleCall_1()); } this_Call_1=ruleCall { $current = $this_Call_1.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getAtomicExpressionAccess().getIntervalParserRuleCall_2()); } this_Interval_2=ruleInterval { $current = $this_Interval_2.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getAtomicExpressionAccess().getLiteralParserRuleCall_3()); } this_Literal_3=ruleLiteral { $current = $this_Literal_3.current; afterParserOrEnumRuleCall(); } | ( otherlv_4=LeftParenthesis { newLeafNode(otherlv_4, grammarAccess.getAtomicExpressionAccess().getLeftParenthesisKeyword_4_0()); } { newCompositeNode(grammarAccess.getAtomicExpressionAccess().getExpressionParserRuleCall_4_1()); } this_Expression_5=ruleExpression { $current = $this_Expression_5.current; afterParserOrEnumRuleCall(); } otherlv_6=RightParenthesis { newLeafNode(otherlv_6, grammarAccess.getAtomicExpressionAccess().getRightParenthesisKeyword_4_2()); } ) ) ; // Entry rule entryRuleCall entryRuleCall returns [EObject current=null]: { newCompositeNode(grammarAccess.getCallRule()); } iv_ruleCall=ruleCall { $current=$iv_ruleCall.current; } EOF; // Rule Call ruleCall returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( ( { newCompositeNode(grammarAccess.getCallAccess().getFunctorReferenceParserRuleCall_0_0()); } lv_functor_0_0=ruleReference { if ($current==null) { $current = createModelElementForParent(grammarAccess.getCallRule()); } set( $current, "functor", lv_functor_0_0, "org.eclipse.viatra.solver.language.SolverLanguage.Reference"); afterParserOrEnumRuleCall(); } ) ) ( ( { newCompositeNode(grammarAccess.getCallAccess().getArgumentListArgumentListParserRuleCall_1_0()); } lv_argumentList_1_0=ruleArgumentList { if ($current==null) { $current = createModelElementForParent(grammarAccess.getCallRule()); } set( $current, "argumentList", lv_argumentList_1_0, "org.eclipse.viatra.solver.language.SolverLanguage.ArgumentList"); afterParserOrEnumRuleCall(); } ) ) ) ; // Entry rule entryRuleArgumentList entryRuleArgumentList returns [EObject current=null]: { newCompositeNode(grammarAccess.getArgumentListRule()); } iv_ruleArgumentList=ruleArgumentList { $current=$iv_ruleArgumentList.current; } EOF; // Rule ArgumentList ruleArgumentList returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( { $current = forceCreateModelElement( grammarAccess.getArgumentListAccess().getArgumentListAction_0(), $current); } ) otherlv_1=LeftParenthesis { newLeafNode(otherlv_1, grammarAccess.getArgumentListAccess().getLeftParenthesisKeyword_1()); } ( ( ( { newCompositeNode(grammarAccess.getArgumentListAccess().getArgumentsArgumentParserRuleCall_2_0_0()); } lv_arguments_2_0=ruleArgument { if ($current==null) { $current = createModelElementForParent(grammarAccess.getArgumentListRule()); } add( $current, "arguments", lv_arguments_2_0, "org.eclipse.viatra.solver.language.SolverLanguage.Argument"); afterParserOrEnumRuleCall(); } ) ) ( otherlv_3=Comma { newLeafNode(otherlv_3, grammarAccess.getArgumentListAccess().getCommaKeyword_2_1_0()); } ( ( { newCompositeNode(grammarAccess.getArgumentListAccess().getArgumentsArgumentParserRuleCall_2_1_1_0()); } lv_arguments_4_0=ruleArgument { if ($current==null) { $current = createModelElementForParent(grammarAccess.getArgumentListRule()); } add( $current, "arguments", lv_arguments_4_0, "org.eclipse.viatra.solver.language.SolverLanguage.Argument"); afterParserOrEnumRuleCall(); } ) ) )* )? otherlv_5=RightParenthesis { newLeafNode(otherlv_5, grammarAccess.getArgumentListAccess().getRightParenthesisKeyword_3()); } ) ; // Entry rule entryRuleArgument entryRuleArgument returns [EObject current=null]: { newCompositeNode(grammarAccess.getArgumentRule()); } iv_ruleArgument=ruleArgument { $current=$iv_ruleArgument.current; } EOF; // Rule Argument ruleArgument returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getArgumentAccess().getExpressionArgumentParserRuleCall_0()); } this_ExpressionArgument_0=ruleExpressionArgument { $current = $this_ExpressionArgument_0.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getArgumentAccess().getStarArgumentParserRuleCall_1()); } this_StarArgument_1=ruleStarArgument { $current = $this_StarArgument_1.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getArgumentAccess().getTypedVariableArgumentParserRuleCall_2()); } this_TypedVariableArgument_2=ruleTypedVariableArgument { $current = $this_TypedVariableArgument_2.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getArgumentAccess().getTypedStarArgumentParserRuleCall_3()); } this_TypedStarArgument_3=ruleTypedStarArgument { $current = $this_TypedStarArgument_3.current; afterParserOrEnumRuleCall(); } ) ; // Entry rule entryRuleExpressionArgument entryRuleExpressionArgument returns [EObject current=null]: { newCompositeNode(grammarAccess.getExpressionArgumentRule()); } iv_ruleExpressionArgument=ruleExpressionArgument { $current=$iv_ruleExpressionArgument.current; } EOF; // Rule ExpressionArgument ruleExpressionArgument returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( { newCompositeNode(grammarAccess.getExpressionArgumentAccess().getExpressionComparisonExpressionParserRuleCall_0()); } lv_expression_0_0=ruleComparisonExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getExpressionArgumentRule()); } set( $current, "expression", lv_expression_0_0, "org.eclipse.viatra.solver.language.SolverLanguage.ComparisonExpression"); afterParserOrEnumRuleCall(); } ) ) ; // Entry rule entryRuleStarArgument entryRuleStarArgument returns [EObject current=null]: { newCompositeNode(grammarAccess.getStarArgumentRule()); } iv_ruleStarArgument=ruleStarArgument { $current=$iv_ruleStarArgument.current; } EOF; // Rule StarArgument ruleStarArgument returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( { $current = forceCreateModelElement( grammarAccess.getStarArgumentAccess().getStarArgumentAction_0(), $current); } ) otherlv_1=Asterisk { newLeafNode(otherlv_1, grammarAccess.getStarArgumentAccess().getAsteriskKeyword_1()); } ) ; // Entry rule entryRuleTypedVariableArgument entryRuleTypedVariableArgument returns [EObject current=null]: { newCompositeNode(grammarAccess.getTypedVariableArgumentRule()); } iv_ruleTypedVariableArgument=ruleTypedVariableArgument { $current=$iv_ruleTypedVariableArgument.current; } EOF; // Rule TypedVariableArgument ruleTypedVariableArgument returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( ( { newCompositeNode(grammarAccess.getTypedVariableArgumentAccess().getTypeReferenceTypeReferenceParserRuleCall_0_0()); } lv_typeReference_0_0=ruleTypeReference { if ($current==null) { $current = createModelElementForParent(grammarAccess.getTypedVariableArgumentRule()); } set( $current, "typeReference", lv_typeReference_0_0, "org.eclipse.viatra.solver.language.SolverLanguage.TypeReference"); afterParserOrEnumRuleCall(); } ) ) ( ( lv_name_1_0=RULE_ID { newLeafNode(lv_name_1_0, grammarAccess.getTypedVariableArgumentAccess().getNameIDTerminalRuleCall_1_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getTypedVariableArgumentRule()); } setWithLastConsumed( $current, "name", lv_name_1_0, "org.eclipse.xtext.common.Terminals.ID"); } ) ) ) ; // Entry rule entryRuleTypedStarArgument entryRuleTypedStarArgument returns [EObject current=null]: { newCompositeNode(grammarAccess.getTypedStarArgumentRule()); } iv_ruleTypedStarArgument=ruleTypedStarArgument { $current=$iv_ruleTypedStarArgument.current; } EOF; // Rule TypedStarArgument ruleTypedStarArgument returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( ( { newCompositeNode(grammarAccess.getTypedStarArgumentAccess().getTypeReferenceTypeReferenceParserRuleCall_0_0()); } lv_typeReference_0_0=ruleTypeReference { if ($current==null) { $current = createModelElementForParent(grammarAccess.getTypedStarArgumentRule()); } set( $current, "typeReference", lv_typeReference_0_0, "org.eclipse.viatra.solver.language.SolverLanguage.TypeReference"); afterParserOrEnumRuleCall(); } ) ) otherlv_1=Asterisk { newLeafNode(otherlv_1, grammarAccess.getTypedStarArgumentAccess().getAsteriskKeyword_1()); } ) ; // Entry rule entryRuleReference entryRuleReference returns [EObject current=null]: { newCompositeNode(grammarAccess.getReferenceRule()); } iv_ruleReference=ruleReference { $current=$iv_ruleReference.current; } EOF; // Rule Reference ruleReference returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( ( { newCompositeNode(grammarAccess.getReferenceAccess().getComponentsPathComponentParserRuleCall_0_0()); } lv_components_0_0=rulePathComponent { if ($current==null) { $current = createModelElementForParent(grammarAccess.getReferenceRule()); } add( $current, "components", lv_components_0_0, "org.eclipse.viatra.solver.language.SolverLanguage.PathComponent"); afterParserOrEnumRuleCall(); } ) ) ( otherlv_1=FullStop { newLeafNode(otherlv_1, grammarAccess.getReferenceAccess().getFullStopKeyword_1_0()); } ( ( { newCompositeNode(grammarAccess.getReferenceAccess().getComponentsPathComponentParserRuleCall_1_1_0()); } lv_components_2_0=rulePathComponent { if ($current==null) { $current = createModelElementForParent(grammarAccess.getReferenceRule()); } add( $current, "components", lv_components_2_0, "org.eclipse.viatra.solver.language.SolverLanguage.PathComponent"); afterParserOrEnumRuleCall(); } ) ) )* ) ; // Entry rule entryRulePathComponent entryRulePathComponent returns [EObject current=null]: { newCompositeNode(grammarAccess.getPathComponentRule()); } iv_rulePathComponent=rulePathComponent { $current=$iv_rulePathComponent.current; } EOF; // Rule PathComponent rulePathComponent returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( ( lv_inverse_0_0=Tilde { newLeafNode(lv_inverse_0_0, grammarAccess.getPathComponentAccess().getInverseTildeKeyword_0_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getPathComponentRule()); } setWithLastConsumed($current, "inverse", true, "~"); } ) )? ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getPathComponentRule()); } } { newCompositeNode(grammarAccess.getPathComponentAccess().getSymbolSymbolCrossReference_1_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) ( ( ( lv_transitiveClosure_2_0=RULE_TRANSITIVE_CLOSURE { newLeafNode(lv_transitiveClosure_2_0, grammarAccess.getPathComponentAccess().getTransitiveClosureTRANSITIVE_CLOSURETerminalRuleCall_2_0_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getPathComponentRule()); } setWithLastConsumed( $current, "transitiveClosure", true, "org.eclipse.viatra.solver.language.SolverLanguage.TRANSITIVE_CLOSURE"); } ) ) | ( ( lv_reflexiveTransitiveClosure_3_0=RULE_REFLEXIVE_TRANSITIVE_CLOSURE { newLeafNode(lv_reflexiveTransitiveClosure_3_0, grammarAccess.getPathComponentAccess().getReflexiveTransitiveClosureREFLEXIVE_TRANSITIVE_CLOSURETerminalRuleCall_2_1_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getPathComponentRule()); } setWithLastConsumed( $current, "reflexiveTransitiveClosure", true, "org.eclipse.viatra.solver.language.SolverLanguage.REFLEXIVE_TRANSITIVE_CLOSURE"); } ) ) )? ) ; // Entry rule entryRuleInterval entryRuleInterval returns [EObject current=null]: { newCompositeNode(grammarAccess.getIntervalRule()); } iv_ruleInterval=ruleInterval { $current=$iv_ruleInterval.current; } EOF; // Rule Interval ruleInterval returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=LeftSquareBracket { newLeafNode(otherlv_0, grammarAccess.getIntervalAccess().getLeftSquareBracketKeyword_0()); } ( ( { newCompositeNode(grammarAccess.getIntervalAccess().getLowerBoundAdditiveExpressionParserRuleCall_1_0()); } lv_lowerBound_1_0=ruleAdditiveExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getIntervalRule()); } set( $current, "lowerBound", lv_lowerBound_1_0, "org.eclipse.viatra.solver.language.SolverLanguage.AdditiveExpression"); afterParserOrEnumRuleCall(); } ) ) otherlv_2=Comma { newLeafNode(otherlv_2, grammarAccess.getIntervalAccess().getCommaKeyword_2()); } ( ( { newCompositeNode(grammarAccess.getIntervalAccess().getUpperBoundAdditiveExpressionParserRuleCall_3_0()); } lv_upperBound_3_0=ruleAdditiveExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getIntervalRule()); } set( $current, "upperBound", lv_upperBound_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.AdditiveExpression"); afterParserOrEnumRuleCall(); } ) ) otherlv_4=RightSquareBracket { newLeafNode(otherlv_4, grammarAccess.getIntervalAccess().getRightSquareBracketKeyword_4()); } ) ; // Entry rule entryRuleLiteral entryRuleLiteral returns [EObject current=null]: { newCompositeNode(grammarAccess.getLiteralRule()); } iv_ruleLiteral=ruleLiteral { $current=$iv_ruleLiteral.current; } EOF; // Rule Literal ruleLiteral returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getLiteralAccess().getLogicLiteralParserRuleCall_0()); } this_LogicLiteral_0=ruleLogicLiteral { $current = $this_LogicLiteral_0.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getLiteralAccess().getIntLiteralParserRuleCall_1()); } this_IntLiteral_1=ruleIntLiteral { $current = $this_IntLiteral_1.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getLiteralAccess().getRealLiteralParserRuleCall_2()); } this_RealLiteral_2=ruleRealLiteral { $current = $this_RealLiteral_2.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getLiteralAccess().getInfinityLiteralParserRuleCall_3()); } this_InfinityLiteral_3=ruleInfinityLiteral { $current = $this_InfinityLiteral_3.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getLiteralAccess().getEmptyLiteralParserRuleCall_4()); } this_EmptyLiteral_4=ruleEmptyLiteral { $current = $this_EmptyLiteral_4.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getLiteralAccess().getStringLiteralParserRuleCall_5()); } this_StringLiteral_5=ruleStringLiteral { $current = $this_StringLiteral_5.current; afterParserOrEnumRuleCall(); } ) ; // Entry rule entryRuleLogicLiteral entryRuleLogicLiteral returns [EObject current=null]: { newCompositeNode(grammarAccess.getLogicLiteralRule()); } iv_ruleLogicLiteral=ruleLogicLiteral { $current=$iv_ruleLogicLiteral.current; } EOF; // Rule LogicLiteral ruleLogicLiteral returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( { newCompositeNode(grammarAccess.getLogicLiteralAccess().getValueLogicValueEnumRuleCall_0()); } lv_value_0_0=ruleLogicValue { if ($current==null) { $current = createModelElementForParent(grammarAccess.getLogicLiteralRule()); } set( $current, "value", lv_value_0_0, "org.eclipse.viatra.solver.language.SolverLanguage.LogicValue"); afterParserOrEnumRuleCall(); } ) ) ; // Entry rule entryRuleIntLiteral entryRuleIntLiteral returns [EObject current=null]: { newCompositeNode(grammarAccess.getIntLiteralRule()); } iv_ruleIntLiteral=ruleIntLiteral { $current=$iv_ruleIntLiteral.current; } EOF; // Rule IntLiteral ruleIntLiteral returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( lv_value_0_0=RULE_INT { newLeafNode(lv_value_0_0, grammarAccess.getIntLiteralAccess().getValueINTTerminalRuleCall_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getIntLiteralRule()); } setWithLastConsumed( $current, "value", lv_value_0_0, "org.eclipse.xtext.common.Terminals.INT"); } ) ) ; // Entry rule entryRuleRealLiteral entryRuleRealLiteral returns [EObject current=null]: { newCompositeNode(grammarAccess.getRealLiteralRule()); } iv_ruleRealLiteral=ruleRealLiteral { $current=$iv_ruleRealLiteral.current; } EOF; // Rule RealLiteral ruleRealLiteral returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( { newCompositeNode(grammarAccess.getRealLiteralAccess().getValueRealParserRuleCall_0()); } lv_value_0_0=ruleReal { if ($current==null) { $current = createModelElementForParent(grammarAccess.getRealLiteralRule()); } set( $current, "value", lv_value_0_0, "org.eclipse.viatra.solver.language.SolverLanguage.Real"); afterParserOrEnumRuleCall(); } ) ) ; // Entry rule entryRuleInfinityLiteral entryRuleInfinityLiteral returns [EObject current=null]: { newCompositeNode(grammarAccess.getInfinityLiteralRule()); } iv_ruleInfinityLiteral=ruleInfinityLiteral { $current=$iv_ruleInfinityLiteral.current; } EOF; // Rule InfinityLiteral ruleInfinityLiteral returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( { $current = forceCreateModelElement( grammarAccess.getInfinityLiteralAccess().getInfinityLiteralAction_0(), $current); } ) otherlv_1=Inf { newLeafNode(otherlv_1, grammarAccess.getInfinityLiteralAccess().getInfKeyword_1()); } ) ; // Entry rule entryRuleEmptyLiteral entryRuleEmptyLiteral returns [EObject current=null]: { newCompositeNode(grammarAccess.getEmptyLiteralRule()); } iv_ruleEmptyLiteral=ruleEmptyLiteral { $current=$iv_ruleEmptyLiteral.current; } EOF; // Rule EmptyLiteral ruleEmptyLiteral returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( { $current = forceCreateModelElement( grammarAccess.getEmptyLiteralAccess().getEmptyLiteralAction_0(), $current); } ) otherlv_1=Empty { newLeafNode(otherlv_1, grammarAccess.getEmptyLiteralAccess().getEmptyKeyword_1()); } ) ; // Entry rule entryRuleStringLiteral entryRuleStringLiteral returns [EObject current=null]: { newCompositeNode(grammarAccess.getStringLiteralRule()); } iv_ruleStringLiteral=ruleStringLiteral { $current=$iv_ruleStringLiteral.current; } EOF; // Rule StringLiteral ruleStringLiteral returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( lv_value_0_0=RULE_STRING { newLeafNode(lv_value_0_0, grammarAccess.getStringLiteralAccess().getValueSTRINGTerminalRuleCall_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getStringLiteralRule()); } setWithLastConsumed( $current, "value", lv_value_0_0, "org.eclipse.viatra.solver.language.SolverLanguage.STRING"); } ) ) ; // Entry rule entryRuleClassDeclaration entryRuleClassDeclaration returns [EObject current=null]: { newCompositeNode(grammarAccess.getClassDeclarationRule()); } iv_ruleClassDeclaration=ruleClassDeclaration { $current=$iv_ruleClassDeclaration.current; } EOF; // Rule ClassDeclaration ruleClassDeclaration returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( ( { getUnorderedGroupHelper().enter(grammarAccess.getClassDeclarationAccess().getUnorderedGroup_0()); } ( ( ( {getUnorderedGroupHelper().canSelect(grammarAccess.getClassDeclarationAccess().getUnorderedGroup_0(), 0)}?=>( { getUnorderedGroupHelper().select(grammarAccess.getClassDeclarationAccess().getUnorderedGroup_0(), 0); } ({true}?=>(( lv_abstract_1_0=Abstract { newLeafNode(lv_abstract_1_0, grammarAccess.getClassDeclarationAccess().getAbstractAbstractKeyword_0_0_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getClassDeclarationRule()); } setWithLastConsumed($current, "abstract", true, "abstract"); } ) )) { getUnorderedGroupHelper().returnFromSelection(grammarAccess.getClassDeclarationAccess().getUnorderedGroup_0()); } ) )| ( {getUnorderedGroupHelper().canSelect(grammarAccess.getClassDeclarationAccess().getUnorderedGroup_0(), 1)}?=>( { getUnorderedGroupHelper().select(grammarAccess.getClassDeclarationAccess().getUnorderedGroup_0(), 1); } ({true}?=>(( lv_root_2_0=Root { newLeafNode(lv_root_2_0, grammarAccess.getClassDeclarationAccess().getRootRootKeyword_0_1_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getClassDeclarationRule()); } setWithLastConsumed($current, "root", true, "root"); } ) )) { getUnorderedGroupHelper().returnFromSelection(grammarAccess.getClassDeclarationAccess().getUnorderedGroup_0()); } ) ) )* ) ) { getUnorderedGroupHelper().leave(grammarAccess.getClassDeclarationAccess().getUnorderedGroup_0()); } ) otherlv_3=Class { newLeafNode(otherlv_3, grammarAccess.getClassDeclarationAccess().getClassKeyword_1()); } ( ( lv_name_4_0=RULE_ID { newLeafNode(lv_name_4_0, grammarAccess.getClassDeclarationAccess().getNameIDTerminalRuleCall_2_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getClassDeclarationRule()); } setWithLastConsumed( $current, "name", lv_name_4_0, "org.eclipse.xtext.common.Terminals.ID"); } ) ) ( otherlv_5=Extends { newLeafNode(otherlv_5, grammarAccess.getClassDeclarationAccess().getExtendsKeyword_3_0()); } ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getClassDeclarationRule()); } } { newCompositeNode(grammarAccess.getClassDeclarationAccess().getSupertypesSymbolCrossReference_3_1_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) ( otherlv_7=Comma { newLeafNode(otherlv_7, grammarAccess.getClassDeclarationAccess().getCommaKeyword_3_2_0()); } ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getClassDeclarationRule()); } } { newCompositeNode(grammarAccess.getClassDeclarationAccess().getSupertypesSymbolCrossReference_3_2_1_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) )* )? ( ( otherlv_9=LeftCurlyBracket { newLeafNode(otherlv_9, grammarAccess.getClassDeclarationAccess().getLeftCurlyBracketKeyword_4_0_0()); } ( ( { newCompositeNode(grammarAccess.getClassDeclarationAccess().getFieldsFieldParserRuleCall_4_0_1_0()); } lv_fields_10_0=ruleField { if ($current==null) { $current = createModelElementForParent(grammarAccess.getClassDeclarationRule()); } add( $current, "fields", lv_fields_10_0, "org.eclipse.viatra.solver.language.SolverLanguage.Field"); afterParserOrEnumRuleCall(); } ) )* otherlv_11=RightCurlyBracket { newLeafNode(otherlv_11, grammarAccess.getClassDeclarationAccess().getRightCurlyBracketKeyword_4_0_2()); } ) | this_FULL_STOP_12=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_12, grammarAccess.getClassDeclarationAccess().getFULL_STOPTerminalRuleCall_4_1()); } ) ) ; // Entry rule entryRuleField entryRuleField returns [EObject current=null]: { newCompositeNode(grammarAccess.getFieldRule()); } iv_ruleField=ruleField { $current=$iv_ruleField.current; } EOF; // Rule Field ruleField returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( ( ( lv_containment_0_0=Contains { newLeafNode(lv_containment_0_0, grammarAccess.getFieldAccess().getContainmentContainsKeyword_0_0_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getFieldRule()); } setWithLastConsumed($current, "containment", true, "contains"); } ) ) | ( ( lv_crossReference_1_0=Refers { newLeafNode(lv_crossReference_1_0, grammarAccess.getFieldAccess().getCrossReferenceRefersKeyword_0_1_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getFieldRule()); } setWithLastConsumed($current, "crossReference", true, "refers"); } ) ) )? ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getFieldRule()); } } { newCompositeNode(grammarAccess.getFieldAccess().getTypeSymbolCrossReference_1_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) ( ( { newCompositeNode(grammarAccess.getFieldAccess().getMultiplicityMultiplicityParserRuleCall_2_0()); } lv_multiplicity_3_0=ruleMultiplicity { if ($current==null) { $current = createModelElementForParent(grammarAccess.getFieldRule()); } set( $current, "multiplicity", lv_multiplicity_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.Multiplicity"); afterParserOrEnumRuleCall(); } ) )? ( ( lv_name_4_0=RULE_ID { newLeafNode(lv_name_4_0, grammarAccess.getFieldAccess().getNameIDTerminalRuleCall_3_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getFieldRule()); } setWithLastConsumed( $current, "name", lv_name_4_0, "org.eclipse.xtext.common.Terminals.ID"); } ) ) ( otherlv_5=Opposite { newLeafNode(otherlv_5, grammarAccess.getFieldAccess().getOppositeKeyword_4_0()); } ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getFieldRule()); } } { newCompositeNode(grammarAccess.getFieldAccess().getOppositeSymbolCrossReference_4_1_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) )? ( otherlv_7=Semicolon { newLeafNode(otherlv_7, grammarAccess.getFieldAccess().getSemicolonKeyword_5()); } )? ) ; // Entry rule entryRuleMultiplicity entryRuleMultiplicity returns [EObject current=null]: { newCompositeNode(grammarAccess.getMultiplicityRule()); } iv_ruleMultiplicity=ruleMultiplicity { $current=$iv_ruleMultiplicity.current; } EOF; // Rule Multiplicity ruleMultiplicity returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getMultiplicityAccess().getUnboundedMultiplicityParserRuleCall_0()); } this_UnboundedMultiplicity_0=ruleUnboundedMultiplicity { $current = $this_UnboundedMultiplicity_0.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getMultiplicityAccess().getExactMultiplicityParserRuleCall_1()); } this_ExactMultiplicity_1=ruleExactMultiplicity { $current = $this_ExactMultiplicity_1.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getMultiplicityAccess().getBoundedMultiplicityParserRuleCall_2()); } this_BoundedMultiplicity_2=ruleBoundedMultiplicity { $current = $this_BoundedMultiplicity_2.current; afterParserOrEnumRuleCall(); } ) ; // Entry rule entryRuleUnboundedMultiplicity entryRuleUnboundedMultiplicity returns [EObject current=null]: { newCompositeNode(grammarAccess.getUnboundedMultiplicityRule()); } iv_ruleUnboundedMultiplicity=ruleUnboundedMultiplicity { $current=$iv_ruleUnboundedMultiplicity.current; } EOF; // Rule UnboundedMultiplicity ruleUnboundedMultiplicity returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( { $current = forceCreateModelElement( grammarAccess.getUnboundedMultiplicityAccess().getUnboundedMultiplicityAction_0(), $current); } ) otherlv_1=LeftSquareBracket { newLeafNode(otherlv_1, grammarAccess.getUnboundedMultiplicityAccess().getLeftSquareBracketKeyword_1()); } otherlv_2=RightSquareBracket { newLeafNode(otherlv_2, grammarAccess.getUnboundedMultiplicityAccess().getRightSquareBracketKeyword_2()); } ) ; // Entry rule entryRuleExactMultiplicity entryRuleExactMultiplicity returns [EObject current=null]: { newCompositeNode(grammarAccess.getExactMultiplicityRule()); } iv_ruleExactMultiplicity=ruleExactMultiplicity { $current=$iv_ruleExactMultiplicity.current; } EOF; // Rule ExactMultiplicity ruleExactMultiplicity returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=LeftSquareBracket { newLeafNode(otherlv_0, grammarAccess.getExactMultiplicityAccess().getLeftSquareBracketKeyword_0()); } ( ( { newCompositeNode(grammarAccess.getExactMultiplicityAccess().getValueUpperMultiplictyParserRuleCall_1_0()); } lv_value_1_0=ruleUpperMultiplicty { if ($current==null) { $current = createModelElementForParent(grammarAccess.getExactMultiplicityRule()); } set( $current, "value", lv_value_1_0, "org.eclipse.viatra.solver.language.SolverLanguage.UpperMultiplicty"); afterParserOrEnumRuleCall(); } ) ) otherlv_2=RightSquareBracket { newLeafNode(otherlv_2, grammarAccess.getExactMultiplicityAccess().getRightSquareBracketKeyword_2()); } ) ; // Entry rule entryRuleBoundedMultiplicity entryRuleBoundedMultiplicity returns [EObject current=null]: { newCompositeNode(grammarAccess.getBoundedMultiplicityRule()); } iv_ruleBoundedMultiplicity=ruleBoundedMultiplicity { $current=$iv_ruleBoundedMultiplicity.current; } EOF; // Rule BoundedMultiplicity ruleBoundedMultiplicity returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=LeftSquareBracket { newLeafNode(otherlv_0, grammarAccess.getBoundedMultiplicityAccess().getLeftSquareBracketKeyword_0()); } ( ( lv_lowerBound_1_0=RULE_INT { newLeafNode(lv_lowerBound_1_0, grammarAccess.getBoundedMultiplicityAccess().getLowerBoundINTTerminalRuleCall_1_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getBoundedMultiplicityRule()); } setWithLastConsumed( $current, "lowerBound", lv_lowerBound_1_0, "org.eclipse.xtext.common.Terminals.INT"); } ) ) otherlv_2=Comma { newLeafNode(otherlv_2, grammarAccess.getBoundedMultiplicityAccess().getCommaKeyword_2()); } ( ( { newCompositeNode(grammarAccess.getBoundedMultiplicityAccess().getUpperBoundUpperMultiplictyParserRuleCall_3_0()); } lv_upperBound_3_0=ruleUpperMultiplicty { if ($current==null) { $current = createModelElementForParent(grammarAccess.getBoundedMultiplicityRule()); } set( $current, "upperBound", lv_upperBound_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.UpperMultiplicty"); afterParserOrEnumRuleCall(); } ) ) otherlv_4=RightSquareBracket { newLeafNode(otherlv_4, grammarAccess.getBoundedMultiplicityAccess().getRightSquareBracketKeyword_4()); } ) ; // Entry rule entryRuleEnumDeclaration entryRuleEnumDeclaration returns [EObject current=null]: { newCompositeNode(grammarAccess.getEnumDeclarationRule()); } iv_ruleEnumDeclaration=ruleEnumDeclaration { $current=$iv_ruleEnumDeclaration.current; } EOF; // Rule EnumDeclaration ruleEnumDeclaration returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=Enum { newLeafNode(otherlv_0, grammarAccess.getEnumDeclarationAccess().getEnumKeyword_0()); } ( ( lv_name_1_0=RULE_ID { newLeafNode(lv_name_1_0, grammarAccess.getEnumDeclarationAccess().getNameIDTerminalRuleCall_1_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getEnumDeclarationRule()); } setWithLastConsumed( $current, "name", lv_name_1_0, "org.eclipse.xtext.common.Terminals.ID"); } ) ) ( ( otherlv_2=LeftCurlyBracket { newLeafNode(otherlv_2, grammarAccess.getEnumDeclarationAccess().getLeftCurlyBracketKeyword_2_0_0()); } ( ( ( { newCompositeNode(grammarAccess.getEnumDeclarationAccess().getLiteralsEnumLiteralParserRuleCall_2_0_1_0_0()); } lv_literals_3_0=ruleEnumLiteral { if ($current==null) { $current = createModelElementForParent(grammarAccess.getEnumDeclarationRule()); } add( $current, "literals", lv_literals_3_0, "org.eclipse.viatra.solver.language.SolverLanguage.EnumLiteral"); afterParserOrEnumRuleCall(); } ) ) ( ( otherlv_4=Comma { newLeafNode(otherlv_4, grammarAccess.getEnumDeclarationAccess().getCommaKeyword_2_0_1_1_0()); } )? ( ( { newCompositeNode(grammarAccess.getEnumDeclarationAccess().getLiteralsEnumLiteralParserRuleCall_2_0_1_1_1_0()); } lv_literals_5_0=ruleEnumLiteral { if ($current==null) { $current = createModelElementForParent(grammarAccess.getEnumDeclarationRule()); } add( $current, "literals", lv_literals_5_0, "org.eclipse.viatra.solver.language.SolverLanguage.EnumLiteral"); afterParserOrEnumRuleCall(); } ) ) )* )? otherlv_6=RightCurlyBracket { newLeafNode(otherlv_6, grammarAccess.getEnumDeclarationAccess().getRightCurlyBracketKeyword_2_0_2()); } ) | this_FULL_STOP_7=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_7, grammarAccess.getEnumDeclarationAccess().getFULL_STOPTerminalRuleCall_2_1()); } ) ) ; // Entry rule entryRuleEnumLiteral entryRuleEnumLiteral returns [EObject current=null]: { newCompositeNode(grammarAccess.getEnumLiteralRule()); } iv_ruleEnumLiteral=ruleEnumLiteral { $current=$iv_ruleEnumLiteral.current; } EOF; // Rule EnumLiteral ruleEnumLiteral returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( lv_name_0_0=RULE_ID { newLeafNode(lv_name_0_0, grammarAccess.getEnumLiteralAccess().getNameIDTerminalRuleCall_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getEnumLiteralRule()); } setWithLastConsumed( $current, "name", lv_name_0_0, "org.eclipse.xtext.common.Terminals.ID"); } ) ) ; // Entry rule entryRuleScopeDeclaration entryRuleScopeDeclaration returns [EObject current=null]: { newCompositeNode(grammarAccess.getScopeDeclarationRule()); } iv_ruleScopeDeclaration=ruleScopeDeclaration { $current=$iv_ruleScopeDeclaration.current; } EOF; // Rule ScopeDeclaration ruleScopeDeclaration returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getScopeDeclarationAccess().getExactScopeParserRuleCall_0()); } this_ExactScope_0=ruleExactScope { $current = $this_ExactScope_0.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getScopeDeclarationAccess().getBoundedScopeParserRuleCall_1()); } this_BoundedScope_1=ruleBoundedScope { $current = $this_BoundedScope_1.current; afterParserOrEnumRuleCall(); } | { newCompositeNode(grammarAccess.getScopeDeclarationAccess().getLowerBoundedScopeParserRuleCall_2()); } this_LowerBoundedScope_2=ruleLowerBoundedScope { $current = $this_LowerBoundedScope_2.current; afterParserOrEnumRuleCall(); } ) ; // Entry rule entryRuleExactScope entryRuleExactScope returns [EObject current=null]: { newCompositeNode(grammarAccess.getExactScopeRule()); } iv_ruleExactScope=ruleExactScope { $current=$iv_ruleExactScope.current; } EOF; // Rule ExactScope ruleExactScope returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=Scope { newLeafNode(otherlv_0, grammarAccess.getExactScopeAccess().getScopeKeyword_0()); } ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getExactScopeRule()); } } { newCompositeNode(grammarAccess.getExactScopeAccess().getTypeSymbolCrossReference_1_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) otherlv_2=EqualsSignEqualsSign { newLeafNode(otherlv_2, grammarAccess.getExactScopeAccess().getEqualsSignEqualsSignKeyword_2()); } ( ( lv_size_3_0=RULE_INT { newLeafNode(lv_size_3_0, grammarAccess.getExactScopeAccess().getSizeINTTerminalRuleCall_3_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getExactScopeRule()); } setWithLastConsumed( $current, "size", lv_size_3_0, "org.eclipse.xtext.common.Terminals.INT"); } ) ) this_FULL_STOP_4=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_4, grammarAccess.getExactScopeAccess().getFULL_STOPTerminalRuleCall_4()); } ) ; // Entry rule entryRuleBoundedScope entryRuleBoundedScope returns [EObject current=null]: { newCompositeNode(grammarAccess.getBoundedScopeRule()); } iv_ruleBoundedScope=ruleBoundedScope { $current=$iv_ruleBoundedScope.current; } EOF; // Rule BoundedScope ruleBoundedScope returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=Scope { newLeafNode(otherlv_0, grammarAccess.getBoundedScopeAccess().getScopeKeyword_0()); } ( ( ( ( ( lv_lowerBound_1_0=RULE_INT { newLeafNode(lv_lowerBound_1_0, grammarAccess.getBoundedScopeAccess().getLowerBoundINTTerminalRuleCall_1_0_0_0_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getBoundedScopeRule()); } setWithLastConsumed( $current, "lowerBound", lv_lowerBound_1_0, "org.eclipse.xtext.common.Terminals.INT"); } ) ) otherlv_2=LessThanSignEqualsSign { newLeafNode(otherlv_2, grammarAccess.getBoundedScopeAccess().getLessThanSignEqualsSignKeyword_1_0_0_1()); } )? ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getBoundedScopeRule()); } } { newCompositeNode(grammarAccess.getBoundedScopeAccess().getTypeSymbolCrossReference_1_0_1_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) otherlv_4=LessThanSignEqualsSign { newLeafNode(otherlv_4, grammarAccess.getBoundedScopeAccess().getLessThanSignEqualsSignKeyword_1_0_2()); } ( ( lv_upperBound_5_0=RULE_INT { newLeafNode(lv_upperBound_5_0, grammarAccess.getBoundedScopeAccess().getUpperBoundINTTerminalRuleCall_1_0_3_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getBoundedScopeRule()); } setWithLastConsumed( $current, "upperBound", lv_upperBound_5_0, "org.eclipse.xtext.common.Terminals.INT"); } ) ) ) | ( ( ( lv_upperBound_6_0=RULE_INT { newLeafNode(lv_upperBound_6_0, grammarAccess.getBoundedScopeAccess().getUpperBoundINTTerminalRuleCall_1_1_0_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getBoundedScopeRule()); } setWithLastConsumed( $current, "upperBound", lv_upperBound_6_0, "org.eclipse.xtext.common.Terminals.INT"); } ) ) otherlv_7=GreaterThanSignEqualsSign { newLeafNode(otherlv_7, grammarAccess.getBoundedScopeAccess().getGreaterThanSignEqualsSignKeyword_1_1_1()); } ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getBoundedScopeRule()); } } { newCompositeNode(grammarAccess.getBoundedScopeAccess().getTypeSymbolCrossReference_1_1_2_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) ( otherlv_9=GreaterThanSignEqualsSign { newLeafNode(otherlv_9, grammarAccess.getBoundedScopeAccess().getGreaterThanSignEqualsSignKeyword_1_1_3_0()); } ( ( lv_lowerBound_10_0=RULE_INT { newLeafNode(lv_lowerBound_10_0, grammarAccess.getBoundedScopeAccess().getLowerBoundINTTerminalRuleCall_1_1_3_1_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getBoundedScopeRule()); } setWithLastConsumed( $current, "lowerBound", lv_lowerBound_10_0, "org.eclipse.xtext.common.Terminals.INT"); } ) ) )? ) ) this_FULL_STOP_11=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_11, grammarAccess.getBoundedScopeAccess().getFULL_STOPTerminalRuleCall_2()); } ) ; // Entry rule entryRuleLowerBoundedScope entryRuleLowerBoundedScope returns [EObject current=null]: { newCompositeNode(grammarAccess.getLowerBoundedScopeRule()); } iv_ruleLowerBoundedScope=ruleLowerBoundedScope { $current=$iv_ruleLowerBoundedScope.current; } EOF; // Rule LowerBoundedScope ruleLowerBoundedScope returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( otherlv_0=Scope { newLeafNode(otherlv_0, grammarAccess.getLowerBoundedScopeAccess().getScopeKeyword_0()); } ( ( ( ( lv_lowerBound_1_0=RULE_INT { newLeafNode(lv_lowerBound_1_0, grammarAccess.getLowerBoundedScopeAccess().getLowerBoundINTTerminalRuleCall_1_0_0_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getLowerBoundedScopeRule()); } setWithLastConsumed( $current, "lowerBound", lv_lowerBound_1_0, "org.eclipse.xtext.common.Terminals.INT"); } ) ) otherlv_2=LessThanSignEqualsSign { newLeafNode(otherlv_2, grammarAccess.getLowerBoundedScopeAccess().getLessThanSignEqualsSignKeyword_1_0_1()); } ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getLowerBoundedScopeRule()); } } { newCompositeNode(grammarAccess.getLowerBoundedScopeAccess().getTypeSymbolCrossReference_1_0_2_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) ) | ( ( ( { if ($current==null) { $current = createModelElement(grammarAccess.getLowerBoundedScopeRule()); } } { newCompositeNode(grammarAccess.getLowerBoundedScopeAccess().getTypeSymbolCrossReference_1_1_0_0()); } ruleQualifiedName { afterParserOrEnumRuleCall(); } ) ) otherlv_5=GreaterThanSignEqualsSign { newLeafNode(otherlv_5, grammarAccess.getLowerBoundedScopeAccess().getGreaterThanSignEqualsSignKeyword_1_1_1()); } ( ( lv_lowerBound_6_0=RULE_INT { newLeafNode(lv_lowerBound_6_0, grammarAccess.getLowerBoundedScopeAccess().getLowerBoundINTTerminalRuleCall_1_1_2_0()); } { if ($current==null) { $current = createModelElement(grammarAccess.getLowerBoundedScopeRule()); } setWithLastConsumed( $current, "lowerBound", lv_lowerBound_6_0, "org.eclipse.xtext.common.Terminals.INT"); } ) ) ) ) this_FULL_STOP_7=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_7, grammarAccess.getLowerBoundedScopeAccess().getFULL_STOPTerminalRuleCall_2()); } ) ; // Entry rule entryRuleObjectiveDeclaration entryRuleObjectiveDeclaration returns [EObject current=null]: { newCompositeNode(grammarAccess.getObjectiveDeclarationRule()); } iv_ruleObjectiveDeclaration=ruleObjectiveDeclaration { $current=$iv_ruleObjectiveDeclaration.current; } EOF; // Rule ObjectiveDeclaration ruleObjectiveDeclaration returns [EObject current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( ( { newCompositeNode(grammarAccess.getObjectiveDeclarationAccess().getKindObjectiveKindEnumRuleCall_0_0()); } lv_kind_0_0=ruleObjectiveKind { if ($current==null) { $current = createModelElementForParent(grammarAccess.getObjectiveDeclarationRule()); } set( $current, "kind", lv_kind_0_0, "org.eclipse.viatra.solver.language.SolverLanguage.ObjectiveKind"); afterParserOrEnumRuleCall(); } ) ) ( ( { newCompositeNode(grammarAccess.getObjectiveDeclarationAccess().getObjectiveExpressionParserRuleCall_1_0()); } lv_objective_1_0=ruleExpression { if ($current==null) { $current = createModelElementForParent(grammarAccess.getObjectiveDeclarationRule()); } set( $current, "objective", lv_objective_1_0, "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); afterParserOrEnumRuleCall(); } ) ) this_FULL_STOP_2=RULE_FULL_STOP { newLeafNode(this_FULL_STOP_2, grammarAccess.getObjectiveDeclarationAccess().getFULL_STOPTerminalRuleCall_2()); } ) ; // Entry rule entryRuleUpperMultiplicty entryRuleUpperMultiplicty returns [String current=null]: { newCompositeNode(grammarAccess.getUpperMultiplictyRule()); } iv_ruleUpperMultiplicty=ruleUpperMultiplicty { $current=$iv_ruleUpperMultiplicty.current.getText(); } EOF; // Rule UpperMultiplicty ruleUpperMultiplicty returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] @init { enterRule(); } @after { leaveRule(); }: ( this_INT_0=RULE_INT { $current.merge(this_INT_0); } { newLeafNode(this_INT_0, grammarAccess.getUpperMultiplictyAccess().getINTTerminalRuleCall_0()); } | kw=Asterisk { $current.merge(kw); newLeafNode(kw, grammarAccess.getUpperMultiplictyAccess().getAsteriskKeyword_1()); } ) ; // Entry rule entryRuleReal entryRuleReal returns [String current=null]@init { HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens(); }: { newCompositeNode(grammarAccess.getRealRule()); } iv_ruleReal=ruleReal { $current=$iv_ruleReal.current.getText(); } EOF; finally { myHiddenTokenState.restore(); } // Rule Real ruleReal returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] @init { enterRule(); HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens(); } @after { leaveRule(); }: ( this_INT_0=RULE_INT { $current.merge(this_INT_0); } { newLeafNode(this_INT_0, grammarAccess.getRealAccess().getINTTerminalRuleCall_0()); } kw=FullStop { $current.merge(kw); newLeafNode(kw, grammarAccess.getRealAccess().getFullStopKeyword_1()); } this_INT_2=RULE_INT { $current.merge(this_INT_2); } { newLeafNode(this_INT_2, grammarAccess.getRealAccess().getINTTerminalRuleCall_2()); } ) ; finally { myHiddenTokenState.restore(); } // Entry rule entryRuleQualifiedNameSegment entryRuleQualifiedNameSegment returns [String current=null]: { newCompositeNode(grammarAccess.getQualifiedNameSegmentRule()); } iv_ruleQualifiedNameSegment=ruleQualifiedNameSegment { $current=$iv_ruleQualifiedNameSegment.current.getText(); } EOF; // Rule QualifiedNameSegment ruleQualifiedNameSegment returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] @init { enterRule(); } @after { leaveRule(); }: ( this_ID_0=RULE_ID { $current.merge(this_ID_0); } { newLeafNode(this_ID_0, grammarAccess.getQualifiedNameSegmentAccess().getIDTerminalRuleCall_0()); } | this_QUOTED_ID_1=RULE_QUOTED_ID { $current.merge(this_QUOTED_ID_1); } { newLeafNode(this_QUOTED_ID_1, grammarAccess.getQualifiedNameSegmentAccess().getQUOTED_IDTerminalRuleCall_1()); } | kw=Object { $current.merge(kw); newLeafNode(kw, grammarAccess.getQualifiedNameSegmentAccess().getObjectKeyword_2()); } ) ; // Entry rule entryRuleQualifiedName entryRuleQualifiedName returns [String current=null]@init { HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens(); }: { newCompositeNode(grammarAccess.getQualifiedNameRule()); } iv_ruleQualifiedName=ruleQualifiedName { $current=$iv_ruleQualifiedName.current.getText(); } EOF; finally { myHiddenTokenState.restore(); } // Rule QualifiedName ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] @init { enterRule(); HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens(); } @after { leaveRule(); }: ( { newCompositeNode(grammarAccess.getQualifiedNameAccess().getQualifiedNameSegmentParserRuleCall_0()); } this_QualifiedNameSegment_0=ruleQualifiedNameSegment { $current.merge(this_QualifiedNameSegment_0); } { afterParserOrEnumRuleCall(); } ( kw=ColonColon { $current.merge(kw); newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getColonColonKeyword_1_0()); } { newCompositeNode(grammarAccess.getQualifiedNameAccess().getQualifiedNameSegmentParserRuleCall_1_1()); } this_QualifiedNameSegment_2=ruleQualifiedNameSegment { $current.merge(this_QualifiedNameSegment_2); } { afterParserOrEnumRuleCall(); } )* ) ; finally { myHiddenTokenState.restore(); } // Rule AttributeKind ruleAttributeKind returns [Enumerator current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( enumLiteral_0=Functional { $current = grammarAccess.getAttributeKindAccess().getFUNCTIONALEnumLiteralDeclaration_0().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_0, grammarAccess.getAttributeKindAccess().getFUNCTIONALEnumLiteralDeclaration_0()); } ) | ( enumLiteral_1=Error { $current = grammarAccess.getAttributeKindAccess().getERROREnumLiteralDeclaration_1().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_1, grammarAccess.getAttributeKindAccess().getERROREnumLiteralDeclaration_1()); } ) | ( enumLiteral_2=Root { $current = grammarAccess.getAttributeKindAccess().getROOTEnumLiteralDeclaration_2().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_2, grammarAccess.getAttributeKindAccess().getROOTEnumLiteralDeclaration_2()); } ) | ( enumLiteral_3=Containment { $current = grammarAccess.getAttributeKindAccess().getCONTAINMENTEnumLiteralDeclaration_3().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_3, grammarAccess.getAttributeKindAccess().getCONTAINMENTEnumLiteralDeclaration_3()); } ) ) ; // Rule ComparisonOperator ruleComparisonOperator returns [Enumerator current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( enumLiteral_0=EqualsSignEqualsSign { $current = grammarAccess.getComparisonOperatorAccess().getEQUALSEnumLiteralDeclaration_0().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_0, grammarAccess.getComparisonOperatorAccess().getEQUALSEnumLiteralDeclaration_0()); } ) | ( enumLiteral_1=ExclamationMarkEqualsSign { $current = grammarAccess.getComparisonOperatorAccess().getNOT_EQUALSEnumLiteralDeclaration_1().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_1, grammarAccess.getComparisonOperatorAccess().getNOT_EQUALSEnumLiteralDeclaration_1()); } ) | ( enumLiteral_2=LessThanSign { $current = grammarAccess.getComparisonOperatorAccess().getLESSEnumLiteralDeclaration_2().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_2, grammarAccess.getComparisonOperatorAccess().getLESSEnumLiteralDeclaration_2()); } ) | ( enumLiteral_3=LessThanSignEqualsSign { $current = grammarAccess.getComparisonOperatorAccess().getLESS_EQUALSEnumLiteralDeclaration_3().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_3, grammarAccess.getComparisonOperatorAccess().getLESS_EQUALSEnumLiteralDeclaration_3()); } ) | ( enumLiteral_4=GreaterThanSign { $current = grammarAccess.getComparisonOperatorAccess().getGREATEREnumLiteralDeclaration_4().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_4, grammarAccess.getComparisonOperatorAccess().getGREATEREnumLiteralDeclaration_4()); } ) | ( enumLiteral_5=GreaterThanSignEqualsSign { $current = grammarAccess.getComparisonOperatorAccess().getGREATER_EQUALSEnumLiteralDeclaration_5().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_5, grammarAccess.getComparisonOperatorAccess().getGREATER_EQUALSEnumLiteralDeclaration_5()); } ) | ( enumLiteral_6=In { $current = grammarAccess.getComparisonOperatorAccess().getINEnumLiteralDeclaration_6().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_6, grammarAccess.getComparisonOperatorAccess().getINEnumLiteralDeclaration_6()); } ) ) ; // Rule AdditiveBinaryOperator ruleAdditiveBinaryOperator returns [Enumerator current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( enumLiteral_0=PlusSign { $current = grammarAccess.getAdditiveBinaryOperatorAccess().getPLUSEnumLiteralDeclaration_0().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_0, grammarAccess.getAdditiveBinaryOperatorAccess().getPLUSEnumLiteralDeclaration_0()); } ) | ( enumLiteral_1=HyphenMinus { $current = grammarAccess.getAdditiveBinaryOperatorAccess().getMINUSEnumLiteralDeclaration_1().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_1, grammarAccess.getAdditiveBinaryOperatorAccess().getMINUSEnumLiteralDeclaration_1()); } ) ) ; // Rule MultiplicativeBinaryOperator ruleMultiplicativeBinaryOperator returns [Enumerator current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( enumLiteral_0=Asterisk { $current = grammarAccess.getMultiplicativeBinaryOperatorAccess().getMULTIPLYEnumLiteralDeclaration_0().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_0, grammarAccess.getMultiplicativeBinaryOperatorAccess().getMULTIPLYEnumLiteralDeclaration_0()); } ) | ( enumLiteral_1=Solidus { $current = grammarAccess.getMultiplicativeBinaryOperatorAccess().getDIVIDEEnumLiteralDeclaration_1().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_1, grammarAccess.getMultiplicativeBinaryOperatorAccess().getDIVIDEEnumLiteralDeclaration_1()); } ) ) ; // Rule ExponentialOp ruleExponentialOp returns [Enumerator current=null] @init { enterRule(); } @after { leaveRule(); }: ( enumLiteral_0=CircumflexAccent { $current = grammarAccess.getExponentialOpAccess().getPOWEnumLiteralDeclaration().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_0, grammarAccess.getExponentialOpAccess().getPOWEnumLiteralDeclaration()); } ) ; // Rule UnaryOperator ruleUnaryOperator returns [Enumerator current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( enumLiteral_0=ExclamationMark { $current = grammarAccess.getUnaryOperatorAccess().getNOTEnumLiteralDeclaration_0().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_0, grammarAccess.getUnaryOperatorAccess().getNOTEnumLiteralDeclaration_0()); } ) | ( enumLiteral_1=PlusSign { $current = grammarAccess.getUnaryOperatorAccess().getPLUSEnumLiteralDeclaration_1().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_1, grammarAccess.getUnaryOperatorAccess().getPLUSEnumLiteralDeclaration_1()); } ) | ( enumLiteral_2=HyphenMinus { $current = grammarAccess.getUnaryOperatorAccess().getMINUSEnumLiteralDeclaration_2().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_2, grammarAccess.getUnaryOperatorAccess().getMINUSEnumLiteralDeclaration_2()); } ) | ( enumLiteral_3=QuestionMark { $current = grammarAccess.getUnaryOperatorAccess().getMAYBEEnumLiteralDeclaration_3().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_3, grammarAccess.getUnaryOperatorAccess().getMAYBEEnumLiteralDeclaration_3()); } ) ) ; // Rule LogicValue ruleLogicValue returns [Enumerator current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( enumLiteral_0=True { $current = grammarAccess.getLogicValueAccess().getTRUEEnumLiteralDeclaration_0().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_0, grammarAccess.getLogicValueAccess().getTRUEEnumLiteralDeclaration_0()); } ) | ( enumLiteral_1=False { $current = grammarAccess.getLogicValueAccess().getFALSEEnumLiteralDeclaration_1().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_1, grammarAccess.getLogicValueAccess().getFALSEEnumLiteralDeclaration_1()); } ) | ( enumLiteral_2=Unknown { $current = grammarAccess.getLogicValueAccess().getUNKNOWNEnumLiteralDeclaration_2().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_2, grammarAccess.getLogicValueAccess().getUNKNOWNEnumLiteralDeclaration_2()); } ) | ( enumLiteral_3=Error { $current = grammarAccess.getLogicValueAccess().getERROREnumLiteralDeclaration_3().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_3, grammarAccess.getLogicValueAccess().getERROREnumLiteralDeclaration_3()); } ) ) ; // Rule ObjectiveKind ruleObjectiveKind returns [Enumerator current=null] @init { enterRule(); } @after { leaveRule(); }: ( ( enumLiteral_0=Minimize { $current = grammarAccess.getObjectiveKindAccess().getMINIMIZATIONEnumLiteralDeclaration_0().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_0, grammarAccess.getObjectiveKindAccess().getMINIMIZATIONEnumLiteralDeclaration_0()); } ) | ( enumLiteral_1=Maximize { $current = grammarAccess.getObjectiveKindAccess().getMAXIMIZATIONEnumLiteralDeclaration_1().getEnumLiteral().getInstance(); newLeafNode(enumLiteral_1, grammarAccess.getObjectiveKindAccess().getMAXIMIZATIONEnumLiteralDeclaration_1()); } ) ) ;