/*
* generated by Xtext
*/
grammar InternalSText;

options {
	superClass=AbstractInternalContentAssistParser;
	backtrack=true;
	
}

@lexer::header {
package org.yakindu.sct.model.stext.ui.contentassist.antlr.internal;

// Hack: Use our own Lexer superclass by means of import. 
// Currently there is no other way to specify the superclass for the lexer.
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
}

@parser::header {
package org.yakindu.sct.model.stext.ui.contentassist.antlr.internal; 

import java.io.InputStream;
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.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
import org.yakindu.sct.model.stext.services.STextGrammarAccess;

}

@parser::members {
 
 	private STextGrammarAccess grammarAccess;
 	
    public void setGrammarAccess(STextGrammarAccess grammarAccess) {
    	this.grammarAccess = grammarAccess;
    }
    
    @Override
    protected Grammar getGrammar() {
    	return grammarAccess.getGrammar();
    }
    
    @Override
    protected String getValueForTokenName(String tokenName) {
    	return tokenName;
    }

}




// Entry rule entryRuleRoot
entryRuleRoot 
:
{ before(grammarAccess.getRootRule()); }
	 ruleRoot
{ after(grammarAccess.getRootRule()); } 
	 EOF 
;

// Rule Root
ruleRoot
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getRootAccess().getRootsAssignment()); }
(rule__Root__RootsAssignment)*
{ after(grammarAccess.getRootAccess().getRootsAssignment()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleDefRoot
entryRuleDefRoot 
:
{ before(grammarAccess.getDefRootRule()); }
	 ruleDefRoot
{ after(grammarAccess.getDefRootRule()); } 
	 EOF 
;

// Rule DefRoot
ruleDefRoot
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getDefRootAccess().getAlternatives()); }
(rule__DefRoot__Alternatives)
{ after(grammarAccess.getDefRootAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleStatechartRoot
entryRuleStatechartRoot 
:
{ before(grammarAccess.getStatechartRootRule()); }
	 ruleStatechartRoot
{ after(grammarAccess.getStatechartRootRule()); } 
	 EOF 
;

// Rule StatechartRoot
ruleStatechartRoot
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getStatechartRootAccess().getGroup()); }
(rule__StatechartRoot__Group__0)
{ after(grammarAccess.getStatechartRootAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleStateRoot
entryRuleStateRoot 
:
{ before(grammarAccess.getStateRootRule()); }
	 ruleStateRoot
{ after(grammarAccess.getStateRootRule()); } 
	 EOF 
;

// Rule StateRoot
ruleStateRoot
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getStateRootAccess().getGroup()); }
(rule__StateRoot__Group__0)
{ after(grammarAccess.getStateRootAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleTransitionRoot
entryRuleTransitionRoot 
:
{ before(grammarAccess.getTransitionRootRule()); }
	 ruleTransitionRoot
{ after(grammarAccess.getTransitionRootRule()); } 
	 EOF 
;

// Rule TransitionRoot
ruleTransitionRoot
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getTransitionRootAccess().getGroup()); }
(rule__TransitionRoot__Group__0)
{ after(grammarAccess.getTransitionRootAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}





// Entry rule entryRuleStatechartSpecification
entryRuleStatechartSpecification 
:
{ before(grammarAccess.getStatechartSpecificationRule()); }
	 ruleStatechartSpecification
{ after(grammarAccess.getStatechartSpecificationRule()); } 
	 EOF 
;

// Rule StatechartSpecification
ruleStatechartSpecification
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getStatechartSpecificationAccess().getGroup()); }
(rule__StatechartSpecification__Group__0)
{ after(grammarAccess.getStatechartSpecificationAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleStateSpecification
entryRuleStateSpecification 
:
{ before(grammarAccess.getStateSpecificationRule()); }
	 ruleStateSpecification
{ after(grammarAccess.getStateSpecificationRule()); } 
	 EOF 
;

// Rule StateSpecification
ruleStateSpecification
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getStateSpecificationAccess().getScopeAssignment()); }
(rule__StateSpecification__ScopeAssignment)
{ after(grammarAccess.getStateSpecificationAccess().getScopeAssignment()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleTransitionSpecification
entryRuleTransitionSpecification 
:
{ before(grammarAccess.getTransitionSpecificationRule()); }
	 ruleTransitionSpecification
{ after(grammarAccess.getTransitionSpecificationRule()); } 
	 EOF 
;

// Rule TransitionSpecification
ruleTransitionSpecification
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getTransitionSpecificationAccess().getReactionAssignment()); }
(rule__TransitionSpecification__ReactionAssignment)
{ after(grammarAccess.getTransitionSpecificationAccess().getReactionAssignment()); }
)

;
finally {
	restoreStackSize(stackSize);
}





// Entry rule entryRuleStateScope
entryRuleStateScope 
:
{ before(grammarAccess.getStateScopeRule()); }
	 ruleStateScope
{ after(grammarAccess.getStateScopeRule()); } 
	 EOF 
;

// Rule StateScope
ruleStateScope
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getStateScopeAccess().getGroup()); }
(rule__StateScope__Group__0)
{ after(grammarAccess.getStateScopeAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleStatechartScope
entryRuleStatechartScope 
:
{ before(grammarAccess.getStatechartScopeRule()); }
	 ruleStatechartScope
{ after(grammarAccess.getStatechartScopeRule()); } 
	 EOF 
;

// Rule StatechartScope
ruleStatechartScope
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getStatechartScopeAccess().getAlternatives()); }
(rule__StatechartScope__Alternatives)
{ after(grammarAccess.getStatechartScopeAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}





// Entry rule entryRuleInterfaceScope
entryRuleInterfaceScope 
:
{ before(grammarAccess.getInterfaceScopeRule()); }
	 ruleInterfaceScope
{ after(grammarAccess.getInterfaceScopeRule()); } 
	 EOF 
;

// Rule InterfaceScope
ruleInterfaceScope
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getInterfaceScopeAccess().getGroup()); }
(rule__InterfaceScope__Group__0)
{ after(grammarAccess.getInterfaceScopeAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleInternalScope
entryRuleInternalScope 
:
{ before(grammarAccess.getInternalScopeRule()); }
	 ruleInternalScope
{ after(grammarAccess.getInternalScopeRule()); } 
	 EOF 
;

// Rule InternalScope
ruleInternalScope
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getInternalScopeAccess().getGroup()); }
(rule__InternalScope__Group__0)
{ after(grammarAccess.getInternalScopeAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}





// Entry rule entryRuleEventDeclarartion
entryRuleEventDeclarartion 
:
{ before(grammarAccess.getEventDeclarartionRule()); }
	 ruleEventDeclarartion
{ after(grammarAccess.getEventDeclarartionRule()); } 
	 EOF 
;

// Rule EventDeclarartion
ruleEventDeclarartion
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getEventDeclarartionAccess().getEventDefinitionParserRuleCall()); }
	ruleEventDefinition
{ after(grammarAccess.getEventDeclarartionAccess().getEventDefinitionParserRuleCall()); }
)

;
finally {
	restoreStackSize(stackSize);
}





// Entry rule entryRuleEventDefinition
entryRuleEventDefinition 
:
{ before(grammarAccess.getEventDefinitionRule()); }
	 ruleEventDefinition
{ after(grammarAccess.getEventDefinitionRule()); } 
	 EOF 
;

// Rule EventDefinition
ruleEventDefinition
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getEventDefinitionAccess().getGroup()); }
(rule__EventDefinition__Group__0)
{ after(grammarAccess.getEventDefinitionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleVariableDeclaration
entryRuleVariableDeclaration 
:
{ before(grammarAccess.getVariableDeclarationRule()); }
	 ruleVariableDeclaration
{ after(grammarAccess.getVariableDeclarationRule()); } 
	 EOF 
;

// Rule VariableDeclaration
ruleVariableDeclaration
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getVariableDeclarationAccess().getVariableDefinitionParserRuleCall()); }
	ruleVariableDefinition
{ after(grammarAccess.getVariableDeclarationAccess().getVariableDefinitionParserRuleCall()); }
)

;
finally {
	restoreStackSize(stackSize);
}





// Entry rule entryRuleVariableDefinition
entryRuleVariableDefinition 
:
{ before(grammarAccess.getVariableDefinitionRule()); }
	 ruleVariableDefinition
{ after(grammarAccess.getVariableDefinitionRule()); } 
	 EOF 
;

// Rule VariableDefinition
ruleVariableDefinition
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getVariableDefinitionAccess().getGroup()); }
(rule__VariableDefinition__Group__0)
{ after(grammarAccess.getVariableDefinitionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleOperationDeclaration
entryRuleOperationDeclaration 
:
{ before(grammarAccess.getOperationDeclarationRule()); }
	 ruleOperationDeclaration
{ after(grammarAccess.getOperationDeclarationRule()); } 
	 EOF 
;

// Rule OperationDeclaration
ruleOperationDeclaration
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getOperationDeclarationAccess().getOperationDefinitionParserRuleCall()); }
	ruleOperationDefinition
{ after(grammarAccess.getOperationDeclarationAccess().getOperationDefinitionParserRuleCall()); }
)

;
finally {
	restoreStackSize(stackSize);
}





// Entry rule entryRuleOperationDefinition
entryRuleOperationDefinition 
:
{ before(grammarAccess.getOperationDefinitionRule()); }
	 ruleOperationDefinition
{ after(grammarAccess.getOperationDefinitionRule()); } 
	 EOF 
;

// Rule OperationDefinition
ruleOperationDefinition
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getOperationDefinitionAccess().getGroup()); }
(rule__OperationDefinition__Group__0)
{ after(grammarAccess.getOperationDefinitionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleParameter
entryRuleParameter 
:
{ before(grammarAccess.getParameterRule()); }
	 ruleParameter
{ after(grammarAccess.getParameterRule()); } 
	 EOF 
;

// Rule Parameter
ruleParameter
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getParameterAccess().getGroup()); }
(rule__Parameter__Group__0)
{ after(grammarAccess.getParameterAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleXID
entryRuleXID 
:
{ before(grammarAccess.getXIDRule()); }
	 ruleXID
{ after(grammarAccess.getXIDRule()); } 
	 EOF 
;

// Rule XID
ruleXID
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getXIDAccess().getAlternatives()); }
(rule__XID__Alternatives)
{ after(grammarAccess.getXIDAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleFQN
entryRuleFQN 
:
{ before(grammarAccess.getFQNRule()); }
	 ruleFQN
{ after(grammarAccess.getFQNRule()); } 
	 EOF 
;

// Rule FQN
ruleFQN
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getFQNAccess().getGroup()); }
(rule__FQN__Group__0)
{ after(grammarAccess.getFQNAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}





// Entry rule entryRuleLocalReaction
entryRuleLocalReaction 
:
{ before(grammarAccess.getLocalReactionRule()); }
	 ruleLocalReaction
{ after(grammarAccess.getLocalReactionRule()); } 
	 EOF 
;

// Rule LocalReaction
ruleLocalReaction
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getLocalReactionAccess().getGroup()); }
(rule__LocalReaction__Group__0)
{ after(grammarAccess.getLocalReactionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleTransitionReaction
entryRuleTransitionReaction 
:
{ before(grammarAccess.getTransitionReactionRule()); }
	 ruleTransitionReaction
{ after(grammarAccess.getTransitionReactionRule()); } 
	 EOF 
;

// Rule TransitionReaction
ruleTransitionReaction
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getTransitionReactionAccess().getGroup()); }
(rule__TransitionReaction__Group__0)
{ after(grammarAccess.getTransitionReactionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleStextTrigger
entryRuleStextTrigger 
:
{ before(grammarAccess.getStextTriggerRule()); }
	 ruleStextTrigger
{ after(grammarAccess.getStextTriggerRule()); } 
	 EOF 
;

// Rule StextTrigger
ruleStextTrigger
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getStextTriggerAccess().getAlternatives()); }
(rule__StextTrigger__Alternatives)
{ after(grammarAccess.getStextTriggerAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleReactionTrigger
entryRuleReactionTrigger 
:
{ before(grammarAccess.getReactionTriggerRule()); }
	 ruleReactionTrigger
{ after(grammarAccess.getReactionTriggerRule()); } 
	 EOF 
;

// Rule ReactionTrigger
ruleReactionTrigger
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getReactionTriggerAccess().getGroup()); }
(rule__ReactionTrigger__Group__0)
{ after(grammarAccess.getReactionTriggerAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleDefaultTrigger
entryRuleDefaultTrigger 
:
{ before(grammarAccess.getDefaultTriggerRule()); }
	 ruleDefaultTrigger
{ after(grammarAccess.getDefaultTriggerRule()); } 
	 EOF 
;

// Rule DefaultTrigger
ruleDefaultTrigger
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getDefaultTriggerAccess().getGroup()); }
(rule__DefaultTrigger__Group__0)
{ after(grammarAccess.getDefaultTriggerAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleGuard
entryRuleGuard 
:
{ before(grammarAccess.getGuardRule()); }
	 ruleGuard
{ after(grammarAccess.getGuardRule()); } 
	 EOF 
;

// Rule Guard
ruleGuard
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getGuardAccess().getGroup()); }
(rule__Guard__Group__0)
{ after(grammarAccess.getGuardAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleReactionEffect
entryRuleReactionEffect 
:
{ before(grammarAccess.getReactionEffectRule()); }
	 ruleReactionEffect
{ after(grammarAccess.getReactionEffectRule()); } 
	 EOF 
;

// Rule ReactionEffect
ruleReactionEffect
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getReactionEffectAccess().getGroup()); }
(rule__ReactionEffect__Group__0)
{ after(grammarAccess.getReactionEffectAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleTransitionProperty
entryRuleTransitionProperty 
:
{ before(grammarAccess.getTransitionPropertyRule()); }
	 ruleTransitionProperty
{ after(grammarAccess.getTransitionPropertyRule()); } 
	 EOF 
;

// Rule TransitionProperty
ruleTransitionProperty
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getTransitionPropertyAccess().getAlternatives()); }
(rule__TransitionProperty__Alternatives)
{ after(grammarAccess.getTransitionPropertyAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleEntryPointSpec
entryRuleEntryPointSpec 
:
{ before(grammarAccess.getEntryPointSpecRule()); }
	 ruleEntryPointSpec
{ after(grammarAccess.getEntryPointSpecRule()); } 
	 EOF 
;

// Rule EntryPointSpec
ruleEntryPointSpec
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getEntryPointSpecAccess().getGroup()); }
(rule__EntryPointSpec__Group__0)
{ after(grammarAccess.getEntryPointSpecAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleExitPointSpec
entryRuleExitPointSpec 
:
{ before(grammarAccess.getExitPointSpecRule()); }
	 ruleExitPointSpec
{ after(grammarAccess.getExitPointSpecRule()); } 
	 EOF 
;

// Rule ExitPointSpec
ruleExitPointSpec
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getExitPointSpecAccess().getGroup()); }
(rule__ExitPointSpec__Group__0)
{ after(grammarAccess.getExitPointSpecAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleEventSpec
entryRuleEventSpec 
:
{ before(grammarAccess.getEventSpecRule()); }
	 ruleEventSpec
{ after(grammarAccess.getEventSpecRule()); } 
	 EOF 
;

// Rule EventSpec
ruleEventSpec
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getEventSpecAccess().getAlternatives()); }
(rule__EventSpec__Alternatives)
{ after(grammarAccess.getEventSpecAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleRegularEventSpec
entryRuleRegularEventSpec 
:
{ before(grammarAccess.getRegularEventSpecRule()); }
	 ruleRegularEventSpec
{ after(grammarAccess.getRegularEventSpecRule()); } 
	 EOF 
;

// Rule RegularEventSpec
ruleRegularEventSpec
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getRegularEventSpecAccess().getEventAssignment()); }
(rule__RegularEventSpec__EventAssignment)
{ after(grammarAccess.getRegularEventSpecAccess().getEventAssignment()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleTimeEventSpec
entryRuleTimeEventSpec 
:
{ before(grammarAccess.getTimeEventSpecRule()); }
	 ruleTimeEventSpec
{ after(grammarAccess.getTimeEventSpecRule()); } 
	 EOF 
;

// Rule TimeEventSpec
ruleTimeEventSpec
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getTimeEventSpecAccess().getGroup()); }
(rule__TimeEventSpec__Group__0)
{ after(grammarAccess.getTimeEventSpecAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleBuiltinEventSpec
entryRuleBuiltinEventSpec 
:
{ before(grammarAccess.getBuiltinEventSpecRule()); }
	 ruleBuiltinEventSpec
{ after(grammarAccess.getBuiltinEventSpecRule()); } 
	 EOF 
;

// Rule BuiltinEventSpec
ruleBuiltinEventSpec
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getBuiltinEventSpecAccess().getAlternatives()); }
(rule__BuiltinEventSpec__Alternatives)
{ after(grammarAccess.getBuiltinEventSpecAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleEntryEvent
entryRuleEntryEvent 
:
{ before(grammarAccess.getEntryEventRule()); }
	 ruleEntryEvent
{ after(grammarAccess.getEntryEventRule()); } 
	 EOF 
;

// Rule EntryEvent
ruleEntryEvent
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getEntryEventAccess().getGroup()); }
(rule__EntryEvent__Group__0)
{ after(grammarAccess.getEntryEventAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleExitEvent
entryRuleExitEvent 
:
{ before(grammarAccess.getExitEventRule()); }
	 ruleExitEvent
{ after(grammarAccess.getExitEventRule()); } 
	 EOF 
;

// Rule ExitEvent
ruleExitEvent
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getExitEventAccess().getGroup()); }
(rule__ExitEvent__Group__0)
{ after(grammarAccess.getExitEventAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleAlwaysEvent
entryRuleAlwaysEvent 
:
{ before(grammarAccess.getAlwaysEventRule()); }
	 ruleAlwaysEvent
{ after(grammarAccess.getAlwaysEventRule()); } 
	 EOF 
;

// Rule AlwaysEvent
ruleAlwaysEvent
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getAlwaysEventAccess().getGroup()); }
(rule__AlwaysEvent__Group__0)
{ after(grammarAccess.getAlwaysEventAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleEventRaisingExpression
entryRuleEventRaisingExpression 
:
{ before(grammarAccess.getEventRaisingExpressionRule()); }
	 ruleEventRaisingExpression
{ after(grammarAccess.getEventRaisingExpressionRule()); } 
	 EOF 
;

// Rule EventRaisingExpression
ruleEventRaisingExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getEventRaisingExpressionAccess().getGroup()); }
(rule__EventRaisingExpression__Group__0)
{ after(grammarAccess.getEventRaisingExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleEventValueReferenceExpression
entryRuleEventValueReferenceExpression 
:
{ before(grammarAccess.getEventValueReferenceExpressionRule()); }
	 ruleEventValueReferenceExpression
{ after(grammarAccess.getEventValueReferenceExpressionRule()); } 
	 EOF 
;

// Rule EventValueReferenceExpression
ruleEventValueReferenceExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getEventValueReferenceExpressionAccess().getGroup()); }
(rule__EventValueReferenceExpression__Group__0)
{ after(grammarAccess.getEventValueReferenceExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleActiveStateReferenceExpression
entryRuleActiveStateReferenceExpression 
:
{ before(grammarAccess.getActiveStateReferenceExpressionRule()); }
	 ruleActiveStateReferenceExpression
{ after(grammarAccess.getActiveStateReferenceExpressionRule()); } 
	 EOF 
;

// Rule ActiveStateReferenceExpression
ruleActiveStateReferenceExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getActiveStateReferenceExpressionAccess().getGroup()); }
(rule__ActiveStateReferenceExpression__Group__0)
{ after(grammarAccess.getActiveStateReferenceExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRulePrimaryExpression
entryRulePrimaryExpression 
:
{ before(grammarAccess.getPrimaryExpressionRule()); }
	 rulePrimaryExpression
{ after(grammarAccess.getPrimaryExpressionRule()); } 
	 EOF 
;

// Rule PrimaryExpression
rulePrimaryExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getPrimaryExpressionAccess().getAlternatives()); }
(rule__PrimaryExpression__Alternatives)
{ after(grammarAccess.getPrimaryExpressionAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleExpression
entryRuleExpression 
:
{ before(grammarAccess.getExpressionRule()); }
	 ruleExpression
{ after(grammarAccess.getExpressionRule()); } 
	 EOF 
;

// Rule Expression
ruleExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getExpressionAccess().getAssignmentExpressionParserRuleCall()); }
	ruleAssignmentExpression
{ after(grammarAccess.getExpressionAccess().getAssignmentExpressionParserRuleCall()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleAssignmentExpression
entryRuleAssignmentExpression 
:
{ before(grammarAccess.getAssignmentExpressionRule()); }
	 ruleAssignmentExpression
{ after(grammarAccess.getAssignmentExpressionRule()); } 
	 EOF 
;

// Rule AssignmentExpression
ruleAssignmentExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getAssignmentExpressionAccess().getGroup()); }
(rule__AssignmentExpression__Group__0)
{ after(grammarAccess.getAssignmentExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleConditionalExpression
entryRuleConditionalExpression 
:
{ before(grammarAccess.getConditionalExpressionRule()); }
	 ruleConditionalExpression
{ after(grammarAccess.getConditionalExpressionRule()); } 
	 EOF 
;

// Rule ConditionalExpression
ruleConditionalExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getConditionalExpressionAccess().getGroup()); }
(rule__ConditionalExpression__Group__0)
{ after(grammarAccess.getConditionalExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleLogicalOrExpression
entryRuleLogicalOrExpression 
:
{ before(grammarAccess.getLogicalOrExpressionRule()); }
	 ruleLogicalOrExpression
{ after(grammarAccess.getLogicalOrExpressionRule()); } 
	 EOF 
;

// Rule LogicalOrExpression
ruleLogicalOrExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getLogicalOrExpressionAccess().getGroup()); }
(rule__LogicalOrExpression__Group__0)
{ after(grammarAccess.getLogicalOrExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleLogicalAndExpression
entryRuleLogicalAndExpression 
:
{ before(grammarAccess.getLogicalAndExpressionRule()); }
	 ruleLogicalAndExpression
{ after(grammarAccess.getLogicalAndExpressionRule()); } 
	 EOF 
;

// Rule LogicalAndExpression
ruleLogicalAndExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getLogicalAndExpressionAccess().getGroup()); }
(rule__LogicalAndExpression__Group__0)
{ after(grammarAccess.getLogicalAndExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleLogicalNotExpression
entryRuleLogicalNotExpression 
:
{ before(grammarAccess.getLogicalNotExpressionRule()); }
	 ruleLogicalNotExpression
{ after(grammarAccess.getLogicalNotExpressionRule()); } 
	 EOF 
;

// Rule LogicalNotExpression
ruleLogicalNotExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getLogicalNotExpressionAccess().getAlternatives()); }
(rule__LogicalNotExpression__Alternatives)
{ after(grammarAccess.getLogicalNotExpressionAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleBitwiseXorExpression
entryRuleBitwiseXorExpression 
:
{ before(grammarAccess.getBitwiseXorExpressionRule()); }
	 ruleBitwiseXorExpression
{ after(grammarAccess.getBitwiseXorExpressionRule()); } 
	 EOF 
;

// Rule BitwiseXorExpression
ruleBitwiseXorExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getBitwiseXorExpressionAccess().getGroup()); }
(rule__BitwiseXorExpression__Group__0)
{ after(grammarAccess.getBitwiseXorExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleBitwiseOrExpression
entryRuleBitwiseOrExpression 
:
{ before(grammarAccess.getBitwiseOrExpressionRule()); }
	 ruleBitwiseOrExpression
{ after(grammarAccess.getBitwiseOrExpressionRule()); } 
	 EOF 
;

// Rule BitwiseOrExpression
ruleBitwiseOrExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getBitwiseOrExpressionAccess().getGroup()); }
(rule__BitwiseOrExpression__Group__0)
{ after(grammarAccess.getBitwiseOrExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleBitwiseAndExpression
entryRuleBitwiseAndExpression 
:
{ before(grammarAccess.getBitwiseAndExpressionRule()); }
	 ruleBitwiseAndExpression
{ after(grammarAccess.getBitwiseAndExpressionRule()); } 
	 EOF 
;

// Rule BitwiseAndExpression
ruleBitwiseAndExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getBitwiseAndExpressionAccess().getGroup()); }
(rule__BitwiseAndExpression__Group__0)
{ after(grammarAccess.getBitwiseAndExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleLogicalRelationExpression
entryRuleLogicalRelationExpression 
:
{ before(grammarAccess.getLogicalRelationExpressionRule()); }
	 ruleLogicalRelationExpression
{ after(grammarAccess.getLogicalRelationExpressionRule()); } 
	 EOF 
;

// Rule LogicalRelationExpression
ruleLogicalRelationExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getLogicalRelationExpressionAccess().getGroup()); }
(rule__LogicalRelationExpression__Group__0)
{ after(grammarAccess.getLogicalRelationExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleShiftExpression
entryRuleShiftExpression 
:
{ before(grammarAccess.getShiftExpressionRule()); }
	 ruleShiftExpression
{ after(grammarAccess.getShiftExpressionRule()); } 
	 EOF 
;

// Rule ShiftExpression
ruleShiftExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getShiftExpressionAccess().getGroup()); }
(rule__ShiftExpression__Group__0)
{ after(grammarAccess.getShiftExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleNumericalAddSubtractExpression
entryRuleNumericalAddSubtractExpression 
:
{ before(grammarAccess.getNumericalAddSubtractExpressionRule()); }
	 ruleNumericalAddSubtractExpression
{ after(grammarAccess.getNumericalAddSubtractExpressionRule()); } 
	 EOF 
;

// Rule NumericalAddSubtractExpression
ruleNumericalAddSubtractExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getNumericalAddSubtractExpressionAccess().getGroup()); }
(rule__NumericalAddSubtractExpression__Group__0)
{ after(grammarAccess.getNumericalAddSubtractExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleNumericalMultiplyDivideExpression
entryRuleNumericalMultiplyDivideExpression 
:
{ before(grammarAccess.getNumericalMultiplyDivideExpressionRule()); }
	 ruleNumericalMultiplyDivideExpression
{ after(grammarAccess.getNumericalMultiplyDivideExpressionRule()); } 
	 EOF 
;

// Rule NumericalMultiplyDivideExpression
ruleNumericalMultiplyDivideExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getGroup()); }
(rule__NumericalMultiplyDivideExpression__Group__0)
{ after(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleNumericalUnaryExpression
entryRuleNumericalUnaryExpression 
:
{ before(grammarAccess.getNumericalUnaryExpressionRule()); }
	 ruleNumericalUnaryExpression
{ after(grammarAccess.getNumericalUnaryExpressionRule()); } 
	 EOF 
;

// Rule NumericalUnaryExpression
ruleNumericalUnaryExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getNumericalUnaryExpressionAccess().getAlternatives()); }
(rule__NumericalUnaryExpression__Alternatives)
{ after(grammarAccess.getNumericalUnaryExpressionAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRulePrimitiveValueExpression
entryRulePrimitiveValueExpression 
:
{ before(grammarAccess.getPrimitiveValueExpressionRule()); }
	 rulePrimitiveValueExpression
{ after(grammarAccess.getPrimitiveValueExpressionRule()); } 
	 EOF 
;

// Rule PrimitiveValueExpression
rulePrimitiveValueExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getPrimitiveValueExpressionAccess().getGroup()); }
(rule__PrimitiveValueExpression__Group__0)
{ after(grammarAccess.getPrimitiveValueExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleFeatureCall
entryRuleFeatureCall 
:
{ before(grammarAccess.getFeatureCallRule()); }
	 ruleFeatureCall
{ after(grammarAccess.getFeatureCallRule()); } 
	 EOF 
;

// Rule FeatureCall
ruleFeatureCall
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getFeatureCallAccess().getGroup()); }
(rule__FeatureCall__Group__0)
{ after(grammarAccess.getFeatureCallAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleElementReferenceExpression
entryRuleElementReferenceExpression 
:
{ before(grammarAccess.getElementReferenceExpressionRule()); }
	 ruleElementReferenceExpression
{ after(grammarAccess.getElementReferenceExpressionRule()); } 
	 EOF 
;

// Rule ElementReferenceExpression
ruleElementReferenceExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getGroup()); }
(rule__ElementReferenceExpression__Group__0)
{ after(grammarAccess.getElementReferenceExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleParenthesizedExpression
entryRuleParenthesizedExpression 
:
{ before(grammarAccess.getParenthesizedExpressionRule()); }
	 ruleParenthesizedExpression
{ after(grammarAccess.getParenthesizedExpressionRule()); } 
	 EOF 
;

// Rule ParenthesizedExpression
ruleParenthesizedExpression
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getParenthesizedExpressionAccess().getGroup()); }
(rule__ParenthesizedExpression__Group__0)
{ after(grammarAccess.getParenthesizedExpressionAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleLiteral
entryRuleLiteral 
:
{ before(grammarAccess.getLiteralRule()); }
	 ruleLiteral
{ after(grammarAccess.getLiteralRule()); } 
	 EOF 
;

// Rule Literal
ruleLiteral
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getLiteralAccess().getAlternatives()); }
(rule__Literal__Alternatives)
{ after(grammarAccess.getLiteralAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleBoolLiteral
entryRuleBoolLiteral 
:
{ before(grammarAccess.getBoolLiteralRule()); }
	 ruleBoolLiteral
{ after(grammarAccess.getBoolLiteralRule()); } 
	 EOF 
;

// Rule BoolLiteral
ruleBoolLiteral
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getBoolLiteralAccess().getGroup()); }
(rule__BoolLiteral__Group__0)
{ after(grammarAccess.getBoolLiteralAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleIntLiteral
entryRuleIntLiteral 
:
{ before(grammarAccess.getIntLiteralRule()); }
	 ruleIntLiteral
{ after(grammarAccess.getIntLiteralRule()); } 
	 EOF 
;

// Rule IntLiteral
ruleIntLiteral
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getIntLiteralAccess().getGroup()); }
(rule__IntLiteral__Group__0)
{ after(grammarAccess.getIntLiteralAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleRealLiteral
entryRuleRealLiteral 
:
{ before(grammarAccess.getRealLiteralRule()); }
	 ruleRealLiteral
{ after(grammarAccess.getRealLiteralRule()); } 
	 EOF 
;

// Rule RealLiteral
ruleRealLiteral
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getRealLiteralAccess().getGroup()); }
(rule__RealLiteral__Group__0)
{ after(grammarAccess.getRealLiteralAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleHexLiteral
entryRuleHexLiteral 
:
{ before(grammarAccess.getHexLiteralRule()); }
	 ruleHexLiteral
{ after(grammarAccess.getHexLiteralRule()); } 
	 EOF 
;

// Rule HexLiteral
ruleHexLiteral
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getHexLiteralAccess().getGroup()); }
(rule__HexLiteral__Group__0)
{ after(grammarAccess.getHexLiteralAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleStringLiteral
entryRuleStringLiteral 
:
{ before(grammarAccess.getStringLiteralRule()); }
	 ruleStringLiteral
{ after(grammarAccess.getStringLiteralRule()); } 
	 EOF 
;

// Rule StringLiteral
ruleStringLiteral
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getStringLiteralAccess().getGroup()); }
(rule__StringLiteral__Group__0)
{ after(grammarAccess.getStringLiteralAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}




// Rule Direction
ruleDirection
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getDirectionAccess().getAlternatives()); }
(rule__Direction__Alternatives)
{ after(grammarAccess.getDirectionAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Rule TimeEventType
ruleTimeEventType
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTimeEventTypeAccess().getAlternatives()); }
(rule__TimeEventType__Alternatives)
{ after(grammarAccess.getTimeEventTypeAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Rule TimeUnit
ruleTimeUnit
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTimeUnitAccess().getAlternatives()); }
(rule__TimeUnit__Alternatives)
{ after(grammarAccess.getTimeUnitAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Rule AssignmentOperator
ruleAssignmentOperator
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getAssignmentOperatorAccess().getAlternatives()); }
(rule__AssignmentOperator__Alternatives)
{ after(grammarAccess.getAssignmentOperatorAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Rule ShiftOperator
ruleShiftOperator
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getShiftOperatorAccess().getAlternatives()); }
(rule__ShiftOperator__Alternatives)
{ after(grammarAccess.getShiftOperatorAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Rule AdditiveOperator
ruleAdditiveOperator
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getAdditiveOperatorAccess().getAlternatives()); }
(rule__AdditiveOperator__Alternatives)
{ after(grammarAccess.getAdditiveOperatorAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Rule MultiplicativeOperator
ruleMultiplicativeOperator
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getMultiplicativeOperatorAccess().getAlternatives()); }
(rule__MultiplicativeOperator__Alternatives)
{ after(grammarAccess.getMultiplicativeOperatorAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Rule UnaryOperator
ruleUnaryOperator
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getUnaryOperatorAccess().getAlternatives()); }
(rule__UnaryOperator__Alternatives)
{ after(grammarAccess.getUnaryOperatorAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Rule RelationalOperator
ruleRelationalOperator
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getRelationalOperatorAccess().getAlternatives()); }
(rule__RelationalOperator__Alternatives)
{ after(grammarAccess.getRelationalOperatorAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



rule__DefRoot__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getDefRootAccess().getStatechartRootParserRuleCall_0()); }
	ruleStatechartRoot
{ after(grammarAccess.getDefRootAccess().getStatechartRootParserRuleCall_0()); }
)

    |(
{ before(grammarAccess.getDefRootAccess().getStateRootParserRuleCall_1()); }
	ruleStateRoot
{ after(grammarAccess.getDefRootAccess().getStateRootParserRuleCall_1()); }
)

    |(
{ before(grammarAccess.getDefRootAccess().getTransitionRootParserRuleCall_2()); }
	ruleTransitionRoot
{ after(grammarAccess.getDefRootAccess().getTransitionRootParserRuleCall_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__StatechartScope__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStatechartScopeAccess().getInterfaceScopeParserRuleCall_0()); }
	ruleInterfaceScope
{ after(grammarAccess.getStatechartScopeAccess().getInterfaceScopeParserRuleCall_0()); }
)

    |(
{ before(grammarAccess.getStatechartScopeAccess().getInternalScopeParserRuleCall_1()); }
	ruleInternalScope
{ after(grammarAccess.getStatechartScopeAccess().getInternalScopeParserRuleCall_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__InterfaceScope__DeclarationsAlternatives_4_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getInterfaceScopeAccess().getDeclarationsEventDeclarartionParserRuleCall_4_0_0()); }
	ruleEventDeclarartion
{ after(grammarAccess.getInterfaceScopeAccess().getDeclarationsEventDeclarartionParserRuleCall_4_0_0()); }
)

    |(
{ before(grammarAccess.getInterfaceScopeAccess().getDeclarationsVariableDeclarationParserRuleCall_4_0_1()); }
	ruleVariableDeclaration
{ after(grammarAccess.getInterfaceScopeAccess().getDeclarationsVariableDeclarationParserRuleCall_4_0_1()); }
)

    |(
{ before(grammarAccess.getInterfaceScopeAccess().getDeclarationsOperationDeclarationParserRuleCall_4_0_2()); }
	ruleOperationDeclaration
{ after(grammarAccess.getInterfaceScopeAccess().getDeclarationsOperationDeclarationParserRuleCall_4_0_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__InternalScope__DeclarationsAlternatives_3_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getInternalScopeAccess().getDeclarationsEventDeclarartionParserRuleCall_3_0_0()); }
	ruleEventDeclarartion
{ after(grammarAccess.getInternalScopeAccess().getDeclarationsEventDeclarartionParserRuleCall_3_0_0()); }
)

    |(
{ before(grammarAccess.getInternalScopeAccess().getDeclarationsVariableDeclarationParserRuleCall_3_0_1()); }
	ruleVariableDeclaration
{ after(grammarAccess.getInternalScopeAccess().getDeclarationsVariableDeclarationParserRuleCall_3_0_1()); }
)

    |(
{ before(grammarAccess.getInternalScopeAccess().getDeclarationsOperationDeclarationParserRuleCall_3_0_2()); }
	ruleOperationDeclaration
{ after(grammarAccess.getInternalScopeAccess().getDeclarationsOperationDeclarationParserRuleCall_3_0_2()); }
)

    |(
{ before(grammarAccess.getInternalScopeAccess().getDeclarationsLocalReactionParserRuleCall_3_0_3()); }
	ruleLocalReaction
{ after(grammarAccess.getInternalScopeAccess().getDeclarationsLocalReactionParserRuleCall_3_0_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__XID__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getXIDAccess().getIDTerminalRuleCall_0()); }
	RULE_ID
{ after(grammarAccess.getXIDAccess().getIDTerminalRuleCall_0()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getNamespaceKeyword_1()); }

	'namespace' 

{ after(grammarAccess.getXIDAccess().getNamespaceKeyword_1()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getInterfaceKeyword_2()); }

	'interface' 

{ after(grammarAccess.getXIDAccess().getInterfaceKeyword_2()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getInternalKeyword_3()); }

	'internal' 

{ after(grammarAccess.getXIDAccess().getInternalKeyword_3()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getEventKeyword_4()); }

	'event' 

{ after(grammarAccess.getXIDAccess().getEventKeyword_4()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getLocalKeyword_5()); }

	'local' 

{ after(grammarAccess.getXIDAccess().getLocalKeyword_5()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getInKeyword_6()); }

	'in' 

{ after(grammarAccess.getXIDAccess().getInKeyword_6()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getOutKeyword_7()); }

	'out' 

{ after(grammarAccess.getXIDAccess().getOutKeyword_7()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getVarKeyword_8()); }

	'var' 

{ after(grammarAccess.getXIDAccess().getVarKeyword_8()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getReadonlyKeyword_9()); }

	'readonly' 

{ after(grammarAccess.getXIDAccess().getReadonlyKeyword_9()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getExternalKeyword_10()); }

	'external' 

{ after(grammarAccess.getXIDAccess().getExternalKeyword_10()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getOperationKeyword_11()); }

	'operation' 

{ after(grammarAccess.getXIDAccess().getOperationKeyword_11()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getDefaultKeyword_12()); }

	'default' 

{ after(grammarAccess.getXIDAccess().getDefaultKeyword_12()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getElseKeyword_13()); }

	'else' 

{ after(grammarAccess.getXIDAccess().getElseKeyword_13()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getEntryKeyword_14()); }

	'entry' 

{ after(grammarAccess.getXIDAccess().getEntryKeyword_14()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getExitKeyword_15()); }

	'exit' 

{ after(grammarAccess.getXIDAccess().getExitKeyword_15()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getAlwaysKeyword_16()); }

	'always' 

{ after(grammarAccess.getXIDAccess().getAlwaysKeyword_16()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getOncycleKeyword_17()); }

	'oncycle' 

{ after(grammarAccess.getXIDAccess().getOncycleKeyword_17()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getRaiseKeyword_18()); }

	'raise' 

{ after(grammarAccess.getXIDAccess().getRaiseKeyword_18()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getValueofKeyword_19()); }

	'valueof' 

{ after(grammarAccess.getXIDAccess().getValueofKeyword_19()); }
)

    |(
{ before(grammarAccess.getXIDAccess().getActiveKeyword_20()); }

	'active' 

{ after(grammarAccess.getXIDAccess().getActiveKeyword_20()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__StextTrigger__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStextTriggerAccess().getReactionTriggerParserRuleCall_0()); }
	ruleReactionTrigger
{ after(grammarAccess.getStextTriggerAccess().getReactionTriggerParserRuleCall_0()); }
)

    |(
{ before(grammarAccess.getStextTriggerAccess().getDefaultTriggerParserRuleCall_1()); }
	ruleDefaultTrigger
{ after(grammarAccess.getStextTriggerAccess().getDefaultTriggerParserRuleCall_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__Alternatives_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getGroup_1_0()); }
(rule__ReactionTrigger__Group_1_0__0)
{ after(grammarAccess.getReactionTriggerAccess().getGroup_1_0()); }
)

    |(
{ before(grammarAccess.getReactionTriggerAccess().getGroup_1_1()); }
(rule__ReactionTrigger__Group_1_1__0)
{ after(grammarAccess.getReactionTriggerAccess().getGroup_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__DefaultTrigger__Alternatives_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getDefaultTriggerAccess().getDefaultKeyword_1_0()); }

	'default' 

{ after(grammarAccess.getDefaultTriggerAccess().getDefaultKeyword_1_0()); }
)

    |(
{ before(grammarAccess.getDefaultTriggerAccess().getElseKeyword_1_1()); }

	'else' 

{ after(grammarAccess.getDefaultTriggerAccess().getElseKeyword_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionEffect__ActionsAlternatives_1_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionEffectAccess().getActionsExpressionParserRuleCall_1_0_0()); }
	ruleExpression
{ after(grammarAccess.getReactionEffectAccess().getActionsExpressionParserRuleCall_1_0_0()); }
)

    |(
{ before(grammarAccess.getReactionEffectAccess().getActionsEventRaisingExpressionParserRuleCall_1_0_1()); }
	ruleEventRaisingExpression
{ after(grammarAccess.getReactionEffectAccess().getActionsEventRaisingExpressionParserRuleCall_1_0_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionEffect__ActionsAlternatives_2_1_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionEffectAccess().getActionsExpressionParserRuleCall_2_1_0_0()); }
	ruleExpression
{ after(grammarAccess.getReactionEffectAccess().getActionsExpressionParserRuleCall_2_1_0_0()); }
)

    |(
{ before(grammarAccess.getReactionEffectAccess().getActionsEventRaisingExpressionParserRuleCall_2_1_0_1()); }
	ruleEventRaisingExpression
{ after(grammarAccess.getReactionEffectAccess().getActionsEventRaisingExpressionParserRuleCall_2_1_0_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__TransitionProperty__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTransitionPropertyAccess().getEntryPointSpecParserRuleCall_0()); }
	ruleEntryPointSpec
{ after(grammarAccess.getTransitionPropertyAccess().getEntryPointSpecParserRuleCall_0()); }
)

    |(
{ before(grammarAccess.getTransitionPropertyAccess().getExitPointSpecParserRuleCall_1()); }
	ruleExitPointSpec
{ after(grammarAccess.getTransitionPropertyAccess().getExitPointSpecParserRuleCall_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__EventSpec__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventSpecAccess().getRegularEventSpecParserRuleCall_0()); }
	ruleRegularEventSpec
{ after(grammarAccess.getEventSpecAccess().getRegularEventSpecParserRuleCall_0()); }
)

    |(
{ before(grammarAccess.getEventSpecAccess().getTimeEventSpecParserRuleCall_1()); }
	ruleTimeEventSpec
{ after(grammarAccess.getEventSpecAccess().getTimeEventSpecParserRuleCall_1()); }
)

    |(
{ before(grammarAccess.getEventSpecAccess().getBuiltinEventSpecParserRuleCall_2()); }
	ruleBuiltinEventSpec
{ after(grammarAccess.getEventSpecAccess().getBuiltinEventSpecParserRuleCall_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__BuiltinEventSpec__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBuiltinEventSpecAccess().getEntryEventParserRuleCall_0()); }
	ruleEntryEvent
{ after(grammarAccess.getBuiltinEventSpecAccess().getEntryEventParserRuleCall_0()); }
)

    |(
{ before(grammarAccess.getBuiltinEventSpecAccess().getExitEventParserRuleCall_1()); }
	ruleExitEvent
{ after(grammarAccess.getBuiltinEventSpecAccess().getExitEventParserRuleCall_1()); }
)

    |(
{ before(grammarAccess.getBuiltinEventSpecAccess().getAlwaysEventParserRuleCall_2()); }
	ruleAlwaysEvent
{ after(grammarAccess.getBuiltinEventSpecAccess().getAlwaysEventParserRuleCall_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__AlwaysEvent__Alternatives_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getAlwaysEventAccess().getAlwaysKeyword_1_0()); }

	'always' 

{ after(grammarAccess.getAlwaysEventAccess().getAlwaysKeyword_1_0()); }
)

    |(
{ before(grammarAccess.getAlwaysEventAccess().getOncycleKeyword_1_1()); }

	'oncycle' 

{ after(grammarAccess.getAlwaysEventAccess().getOncycleKeyword_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__PrimaryExpression__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getPrimaryExpressionAccess().getPrimitiveValueExpressionParserRuleCall_0()); }
	rulePrimitiveValueExpression
{ after(grammarAccess.getPrimaryExpressionAccess().getPrimitiveValueExpressionParserRuleCall_0()); }
)

    |(
{ before(grammarAccess.getPrimaryExpressionAccess().getFeatureCallParserRuleCall_1()); }
	ruleFeatureCall
{ after(grammarAccess.getPrimaryExpressionAccess().getFeatureCallParserRuleCall_1()); }
)

    |(
{ before(grammarAccess.getPrimaryExpressionAccess().getActiveStateReferenceExpressionParserRuleCall_2()); }
	ruleActiveStateReferenceExpression
{ after(grammarAccess.getPrimaryExpressionAccess().getActiveStateReferenceExpressionParserRuleCall_2()); }
)

    |(
{ before(grammarAccess.getPrimaryExpressionAccess().getEventValueReferenceExpressionParserRuleCall_3()); }
	ruleEventValueReferenceExpression
{ after(grammarAccess.getPrimaryExpressionAccess().getEventValueReferenceExpressionParserRuleCall_3()); }
)

    |(
{ before(grammarAccess.getPrimaryExpressionAccess().getParenthesizedExpressionParserRuleCall_4()); }
	ruleParenthesizedExpression
{ after(grammarAccess.getPrimaryExpressionAccess().getParenthesizedExpressionParserRuleCall_4()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalNotExpression__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalNotExpressionAccess().getBitwiseXorExpressionParserRuleCall_0()); }
	ruleBitwiseXorExpression
{ after(grammarAccess.getLogicalNotExpressionAccess().getBitwiseXorExpressionParserRuleCall_0()); }
)

    |(
{ before(grammarAccess.getLogicalNotExpressionAccess().getGroup_1()); }
(rule__LogicalNotExpression__Group_1__0)
{ after(grammarAccess.getLogicalNotExpressionAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalUnaryExpression__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalUnaryExpressionAccess().getPrimaryExpressionParserRuleCall_0()); }
	rulePrimaryExpression
{ after(grammarAccess.getNumericalUnaryExpressionAccess().getPrimaryExpressionParserRuleCall_0()); }
)

    |(
{ before(grammarAccess.getNumericalUnaryExpressionAccess().getGroup_1()); }
(rule__NumericalUnaryExpression__Group_1__0)
{ after(grammarAccess.getNumericalUnaryExpressionAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__Literal__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLiteralAccess().getBoolLiteralParserRuleCall_0()); }
	ruleBoolLiteral
{ after(grammarAccess.getLiteralAccess().getBoolLiteralParserRuleCall_0()); }
)

    |(
{ before(grammarAccess.getLiteralAccess().getIntLiteralParserRuleCall_1()); }
	ruleIntLiteral
{ after(grammarAccess.getLiteralAccess().getIntLiteralParserRuleCall_1()); }
)

    |(
{ before(grammarAccess.getLiteralAccess().getHexLiteralParserRuleCall_2()); }
	ruleHexLiteral
{ after(grammarAccess.getLiteralAccess().getHexLiteralParserRuleCall_2()); }
)

    |(
{ before(grammarAccess.getLiteralAccess().getRealLiteralParserRuleCall_3()); }
	ruleRealLiteral
{ after(grammarAccess.getLiteralAccess().getRealLiteralParserRuleCall_3()); }
)

    |(
{ before(grammarAccess.getLiteralAccess().getStringLiteralParserRuleCall_4()); }
	ruleStringLiteral
{ after(grammarAccess.getLiteralAccess().getStringLiteralParserRuleCall_4()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__Direction__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getDirectionAccess().getLOCALEnumLiteralDeclaration_0()); }
(	'local' 
)
{ after(grammarAccess.getDirectionAccess().getLOCALEnumLiteralDeclaration_0()); }
)

    |(
{ before(grammarAccess.getDirectionAccess().getINEnumLiteralDeclaration_1()); }
(	'in' 
)
{ after(grammarAccess.getDirectionAccess().getINEnumLiteralDeclaration_1()); }
)

    |(
{ before(grammarAccess.getDirectionAccess().getOUTEnumLiteralDeclaration_2()); }
(	'out' 
)
{ after(grammarAccess.getDirectionAccess().getOUTEnumLiteralDeclaration_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__TimeEventType__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTimeEventTypeAccess().getAfterEnumLiteralDeclaration_0()); }
(	'after' 
)
{ after(grammarAccess.getTimeEventTypeAccess().getAfterEnumLiteralDeclaration_0()); }
)

    |(
{ before(grammarAccess.getTimeEventTypeAccess().getEveryEnumLiteralDeclaration_1()); }
(	'every' 
)
{ after(grammarAccess.getTimeEventTypeAccess().getEveryEnumLiteralDeclaration_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__TimeUnit__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTimeUnitAccess().getSecondEnumLiteralDeclaration_0()); }
(	's' 
)
{ after(grammarAccess.getTimeUnitAccess().getSecondEnumLiteralDeclaration_0()); }
)

    |(
{ before(grammarAccess.getTimeUnitAccess().getMillisecondEnumLiteralDeclaration_1()); }
(	'ms' 
)
{ after(grammarAccess.getTimeUnitAccess().getMillisecondEnumLiteralDeclaration_1()); }
)

    |(
{ before(grammarAccess.getTimeUnitAccess().getMicrosecondEnumLiteralDeclaration_2()); }
(	'us' 
)
{ after(grammarAccess.getTimeUnitAccess().getMicrosecondEnumLiteralDeclaration_2()); }
)

    |(
{ before(grammarAccess.getTimeUnitAccess().getNanosecondEnumLiteralDeclaration_3()); }
(	'ns' 
)
{ after(grammarAccess.getTimeUnitAccess().getNanosecondEnumLiteralDeclaration_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__AssignmentOperator__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getAssignmentOperatorAccess().getAssignEnumLiteralDeclaration_0()); }
(	'=' 
)
{ after(grammarAccess.getAssignmentOperatorAccess().getAssignEnumLiteralDeclaration_0()); }
)

    |(
{ before(grammarAccess.getAssignmentOperatorAccess().getMultAssignEnumLiteralDeclaration_1()); }
(	'*=' 
)
{ after(grammarAccess.getAssignmentOperatorAccess().getMultAssignEnumLiteralDeclaration_1()); }
)

    |(
{ before(grammarAccess.getAssignmentOperatorAccess().getDivAssignEnumLiteralDeclaration_2()); }
(	'/=' 
)
{ after(grammarAccess.getAssignmentOperatorAccess().getDivAssignEnumLiteralDeclaration_2()); }
)

    |(
{ before(grammarAccess.getAssignmentOperatorAccess().getModAssignEnumLiteralDeclaration_3()); }
(	'%=' 
)
{ after(grammarAccess.getAssignmentOperatorAccess().getModAssignEnumLiteralDeclaration_3()); }
)

    |(
{ before(grammarAccess.getAssignmentOperatorAccess().getAddAssignEnumLiteralDeclaration_4()); }
(	'+=' 
)
{ after(grammarAccess.getAssignmentOperatorAccess().getAddAssignEnumLiteralDeclaration_4()); }
)

    |(
{ before(grammarAccess.getAssignmentOperatorAccess().getSubAssignEnumLiteralDeclaration_5()); }
(	'-=' 
)
{ after(grammarAccess.getAssignmentOperatorAccess().getSubAssignEnumLiteralDeclaration_5()); }
)

    |(
{ before(grammarAccess.getAssignmentOperatorAccess().getLeftShiftAssignEnumLiteralDeclaration_6()); }
(	'<<=' 
)
{ after(grammarAccess.getAssignmentOperatorAccess().getLeftShiftAssignEnumLiteralDeclaration_6()); }
)

    |(
{ before(grammarAccess.getAssignmentOperatorAccess().getRightShiftAssignEnumLiteralDeclaration_7()); }
(	'>>=' 
)
{ after(grammarAccess.getAssignmentOperatorAccess().getRightShiftAssignEnumLiteralDeclaration_7()); }
)

    |(
{ before(grammarAccess.getAssignmentOperatorAccess().getAndAssignEnumLiteralDeclaration_8()); }
(	'&=' 
)
{ after(grammarAccess.getAssignmentOperatorAccess().getAndAssignEnumLiteralDeclaration_8()); }
)

    |(
{ before(grammarAccess.getAssignmentOperatorAccess().getXorAssignEnumLiteralDeclaration_9()); }
(	'^=' 
)
{ after(grammarAccess.getAssignmentOperatorAccess().getXorAssignEnumLiteralDeclaration_9()); }
)

    |(
{ before(grammarAccess.getAssignmentOperatorAccess().getOrAssignEnumLiteralDeclaration_10()); }
(	'|=' 
)
{ after(grammarAccess.getAssignmentOperatorAccess().getOrAssignEnumLiteralDeclaration_10()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ShiftOperator__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getShiftOperatorAccess().getLeftEnumLiteralDeclaration_0()); }
(	'<<' 
)
{ after(grammarAccess.getShiftOperatorAccess().getLeftEnumLiteralDeclaration_0()); }
)

    |(
{ before(grammarAccess.getShiftOperatorAccess().getRightEnumLiteralDeclaration_1()); }
(	'>>' 
)
{ after(grammarAccess.getShiftOperatorAccess().getRightEnumLiteralDeclaration_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__AdditiveOperator__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getAdditiveOperatorAccess().getPlusEnumLiteralDeclaration_0()); }
(	'+' 
)
{ after(grammarAccess.getAdditiveOperatorAccess().getPlusEnumLiteralDeclaration_0()); }
)

    |(
{ before(grammarAccess.getAdditiveOperatorAccess().getMinusEnumLiteralDeclaration_1()); }
(	'-' 
)
{ after(grammarAccess.getAdditiveOperatorAccess().getMinusEnumLiteralDeclaration_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__MultiplicativeOperator__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getMultiplicativeOperatorAccess().getMulEnumLiteralDeclaration_0()); }
(	'*' 
)
{ after(grammarAccess.getMultiplicativeOperatorAccess().getMulEnumLiteralDeclaration_0()); }
)

    |(
{ before(grammarAccess.getMultiplicativeOperatorAccess().getDivEnumLiteralDeclaration_1()); }
(	'/' 
)
{ after(grammarAccess.getMultiplicativeOperatorAccess().getDivEnumLiteralDeclaration_1()); }
)

    |(
{ before(grammarAccess.getMultiplicativeOperatorAccess().getModEnumLiteralDeclaration_2()); }
(	'%' 
)
{ after(grammarAccess.getMultiplicativeOperatorAccess().getModEnumLiteralDeclaration_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__UnaryOperator__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getUnaryOperatorAccess().getPositiveEnumLiteralDeclaration_0()); }
(	'+' 
)
{ after(grammarAccess.getUnaryOperatorAccess().getPositiveEnumLiteralDeclaration_0()); }
)

    |(
{ before(grammarAccess.getUnaryOperatorAccess().getNegativeEnumLiteralDeclaration_1()); }
(	'-' 
)
{ after(grammarAccess.getUnaryOperatorAccess().getNegativeEnumLiteralDeclaration_1()); }
)

    |(
{ before(grammarAccess.getUnaryOperatorAccess().getComplementEnumLiteralDeclaration_2()); }
(	'~' 
)
{ after(grammarAccess.getUnaryOperatorAccess().getComplementEnumLiteralDeclaration_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__RelationalOperator__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getRelationalOperatorAccess().getSmallerEnumLiteralDeclaration_0()); }
(	'<' 
)
{ after(grammarAccess.getRelationalOperatorAccess().getSmallerEnumLiteralDeclaration_0()); }
)

    |(
{ before(grammarAccess.getRelationalOperatorAccess().getSmallerEqualEnumLiteralDeclaration_1()); }
(	'<=' 
)
{ after(grammarAccess.getRelationalOperatorAccess().getSmallerEqualEnumLiteralDeclaration_1()); }
)

    |(
{ before(grammarAccess.getRelationalOperatorAccess().getGreaterEnumLiteralDeclaration_2()); }
(	'>' 
)
{ after(grammarAccess.getRelationalOperatorAccess().getGreaterEnumLiteralDeclaration_2()); }
)

    |(
{ before(grammarAccess.getRelationalOperatorAccess().getGreaterEqualEnumLiteralDeclaration_3()); }
(	'>=' 
)
{ after(grammarAccess.getRelationalOperatorAccess().getGreaterEqualEnumLiteralDeclaration_3()); }
)

    |(
{ before(grammarAccess.getRelationalOperatorAccess().getEqualsEnumLiteralDeclaration_4()); }
(	'==' 
)
{ after(grammarAccess.getRelationalOperatorAccess().getEqualsEnumLiteralDeclaration_4()); }
)

    |(
{ before(grammarAccess.getRelationalOperatorAccess().getNotEqualsEnumLiteralDeclaration_5()); }
(	'!=' 
)
{ after(grammarAccess.getRelationalOperatorAccess().getNotEqualsEnumLiteralDeclaration_5()); }
)

;
finally {
	restoreStackSize(stackSize);
}



rule__StatechartRoot__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__StatechartRoot__Group__0__Impl
	rule__StatechartRoot__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__StatechartRoot__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStatechartRootAccess().getStatechartKeyword_0()); }

	'@@statechart@@' 

{ after(grammarAccess.getStatechartRootAccess().getStatechartKeyword_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__StatechartRoot__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__StatechartRoot__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__StatechartRoot__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStatechartRootAccess().getDefAssignment_1()); }
(rule__StatechartRoot__DefAssignment_1)
{ after(grammarAccess.getStatechartRootAccess().getDefAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__StateRoot__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__StateRoot__Group__0__Impl
	rule__StateRoot__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__StateRoot__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStateRootAccess().getStateKeyword_0()); }

	'@@state@@' 

{ after(grammarAccess.getStateRootAccess().getStateKeyword_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__StateRoot__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__StateRoot__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__StateRoot__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStateRootAccess().getDefAssignment_1()); }
(rule__StateRoot__DefAssignment_1)
{ after(grammarAccess.getStateRootAccess().getDefAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__TransitionRoot__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__TransitionRoot__Group__0__Impl
	rule__TransitionRoot__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__TransitionRoot__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTransitionRootAccess().getTransitionKeyword_0()); }

	'@@transition@@' 

{ after(grammarAccess.getTransitionRootAccess().getTransitionKeyword_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__TransitionRoot__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__TransitionRoot__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__TransitionRoot__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTransitionRootAccess().getDefAssignment_1()); }
(rule__TransitionRoot__DefAssignment_1)
{ after(grammarAccess.getTransitionRootAccess().getDefAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__StatechartSpecification__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__StatechartSpecification__Group__0__Impl
	rule__StatechartSpecification__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__StatechartSpecification__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStatechartSpecificationAccess().getStatechartSpecificationAction_0()); }
(

)
{ after(grammarAccess.getStatechartSpecificationAccess().getStatechartSpecificationAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__StatechartSpecification__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__StatechartSpecification__Group__1__Impl
	rule__StatechartSpecification__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__StatechartSpecification__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStatechartSpecificationAccess().getGroup_1()); }
(rule__StatechartSpecification__Group_1__0)?
{ after(grammarAccess.getStatechartSpecificationAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__StatechartSpecification__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__StatechartSpecification__Group__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__StatechartSpecification__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStatechartSpecificationAccess().getScopesAssignment_2()); }
(rule__StatechartSpecification__ScopesAssignment_2)*
{ after(grammarAccess.getStatechartSpecificationAccess().getScopesAssignment_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__StatechartSpecification__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__StatechartSpecification__Group_1__0__Impl
	rule__StatechartSpecification__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__StatechartSpecification__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStatechartSpecificationAccess().getNamespaceKeyword_1_0()); }

	'namespace' 

{ after(grammarAccess.getStatechartSpecificationAccess().getNamespaceKeyword_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__StatechartSpecification__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__StatechartSpecification__Group_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__StatechartSpecification__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStatechartSpecificationAccess().getNamespaceAssignment_1_1()); }
(rule__StatechartSpecification__NamespaceAssignment_1_1)
{ after(grammarAccess.getStatechartSpecificationAccess().getNamespaceAssignment_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__StateScope__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__StateScope__Group__0__Impl
	rule__StateScope__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__StateScope__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStateScopeAccess().getSimpleScopeAction_0()); }
(

)
{ after(grammarAccess.getStateScopeAccess().getSimpleScopeAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__StateScope__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__StateScope__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__StateScope__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStateScopeAccess().getDeclarationsAssignment_1()); }
(rule__StateScope__DeclarationsAssignment_1)*
{ after(grammarAccess.getStateScopeAccess().getDeclarationsAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__InterfaceScope__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__InterfaceScope__Group__0__Impl
	rule__InterfaceScope__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__InterfaceScope__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getInterfaceScopeAccess().getInterfaceScopeAction_0()); }
(

)
{ after(grammarAccess.getInterfaceScopeAccess().getInterfaceScopeAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__InterfaceScope__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__InterfaceScope__Group__1__Impl
	rule__InterfaceScope__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__InterfaceScope__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getInterfaceScopeAccess().getInterfaceKeyword_1()); }

	'interface' 

{ after(grammarAccess.getInterfaceScopeAccess().getInterfaceKeyword_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__InterfaceScope__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__InterfaceScope__Group__2__Impl
	rule__InterfaceScope__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__InterfaceScope__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getInterfaceScopeAccess().getNameAssignment_2()); }
(rule__InterfaceScope__NameAssignment_2)?
{ after(grammarAccess.getInterfaceScopeAccess().getNameAssignment_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__InterfaceScope__Group__3
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__InterfaceScope__Group__3__Impl
	rule__InterfaceScope__Group__4
;
finally {
	restoreStackSize(stackSize);
}

rule__InterfaceScope__Group__3__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getInterfaceScopeAccess().getColonKeyword_3()); }

	':' 

{ after(grammarAccess.getInterfaceScopeAccess().getColonKeyword_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__InterfaceScope__Group__4
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__InterfaceScope__Group__4__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__InterfaceScope__Group__4__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getInterfaceScopeAccess().getDeclarationsAssignment_4()); }
(rule__InterfaceScope__DeclarationsAssignment_4)*
{ after(grammarAccess.getInterfaceScopeAccess().getDeclarationsAssignment_4()); }
)

;
finally {
	restoreStackSize(stackSize);
}












rule__InternalScope__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__InternalScope__Group__0__Impl
	rule__InternalScope__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__InternalScope__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getInternalScopeAccess().getInternalScopeAction_0()); }
(

)
{ after(grammarAccess.getInternalScopeAccess().getInternalScopeAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__InternalScope__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__InternalScope__Group__1__Impl
	rule__InternalScope__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__InternalScope__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getInternalScopeAccess().getInternalKeyword_1()); }

	'internal' 

{ after(grammarAccess.getInternalScopeAccess().getInternalKeyword_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__InternalScope__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__InternalScope__Group__2__Impl
	rule__InternalScope__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__InternalScope__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getInternalScopeAccess().getColonKeyword_2()); }

	':' 

{ after(grammarAccess.getInternalScopeAccess().getColonKeyword_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__InternalScope__Group__3
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__InternalScope__Group__3__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__InternalScope__Group__3__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getInternalScopeAccess().getDeclarationsAssignment_3()); }
(rule__InternalScope__DeclarationsAssignment_3)*
{ after(grammarAccess.getInternalScopeAccess().getDeclarationsAssignment_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}










rule__EventDefinition__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventDefinition__Group__0__Impl
	rule__EventDefinition__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__EventDefinition__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventDefinitionAccess().getDirectionAssignment_0()); }
(rule__EventDefinition__DirectionAssignment_0)?
{ after(grammarAccess.getEventDefinitionAccess().getDirectionAssignment_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__EventDefinition__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventDefinition__Group__1__Impl
	rule__EventDefinition__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__EventDefinition__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventDefinitionAccess().getEventKeyword_1()); }

	'event' 

{ after(grammarAccess.getEventDefinitionAccess().getEventKeyword_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__EventDefinition__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventDefinition__Group__2__Impl
	rule__EventDefinition__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__EventDefinition__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventDefinitionAccess().getNameAssignment_2()); }
(rule__EventDefinition__NameAssignment_2)
{ after(grammarAccess.getEventDefinitionAccess().getNameAssignment_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__EventDefinition__Group__3
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventDefinition__Group__3__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__EventDefinition__Group__3__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventDefinitionAccess().getGroup_3()); }
(rule__EventDefinition__Group_3__0)?
{ after(grammarAccess.getEventDefinitionAccess().getGroup_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}










rule__EventDefinition__Group_3__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventDefinition__Group_3__0__Impl
	rule__EventDefinition__Group_3__1
;
finally {
	restoreStackSize(stackSize);
}

rule__EventDefinition__Group_3__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventDefinitionAccess().getColonKeyword_3_0()); }

	':' 

{ after(grammarAccess.getEventDefinitionAccess().getColonKeyword_3_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__EventDefinition__Group_3__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventDefinition__Group_3__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__EventDefinition__Group_3__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventDefinitionAccess().getTypeAssignment_3_1()); }
(rule__EventDefinition__TypeAssignment_3_1)
{ after(grammarAccess.getEventDefinitionAccess().getTypeAssignment_3_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__VariableDefinition__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__VariableDefinition__Group__0__Impl
	rule__VariableDefinition__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__VariableDefinition__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getVariableDefinitionAccess().getVariableDefinitionAction_0()); }
(

)
{ after(grammarAccess.getVariableDefinitionAccess().getVariableDefinitionAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__VariableDefinition__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__VariableDefinition__Group__1__Impl
	rule__VariableDefinition__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__VariableDefinition__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getVariableDefinitionAccess().getVarKeyword_1()); }

	'var' 

{ after(grammarAccess.getVariableDefinitionAccess().getVarKeyword_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__VariableDefinition__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__VariableDefinition__Group__2__Impl
	rule__VariableDefinition__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__VariableDefinition__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getVariableDefinitionAccess().getUnorderedGroup_2()); }
(rule__VariableDefinition__UnorderedGroup_2)
{ after(grammarAccess.getVariableDefinitionAccess().getUnorderedGroup_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__VariableDefinition__Group__3
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__VariableDefinition__Group__3__Impl
	rule__VariableDefinition__Group__4
;
finally {
	restoreStackSize(stackSize);
}

rule__VariableDefinition__Group__3__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getVariableDefinitionAccess().getNameAssignment_3()); }
(rule__VariableDefinition__NameAssignment_3)
{ after(grammarAccess.getVariableDefinitionAccess().getNameAssignment_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__VariableDefinition__Group__4
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__VariableDefinition__Group__4__Impl
	rule__VariableDefinition__Group__5
;
finally {
	restoreStackSize(stackSize);
}

rule__VariableDefinition__Group__4__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getVariableDefinitionAccess().getColonKeyword_4()); }

	':' 

{ after(grammarAccess.getVariableDefinitionAccess().getColonKeyword_4()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__VariableDefinition__Group__5
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__VariableDefinition__Group__5__Impl
	rule__VariableDefinition__Group__6
;
finally {
	restoreStackSize(stackSize);
}

rule__VariableDefinition__Group__5__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getVariableDefinitionAccess().getTypeAssignment_5()); }
(rule__VariableDefinition__TypeAssignment_5)
{ after(grammarAccess.getVariableDefinitionAccess().getTypeAssignment_5()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__VariableDefinition__Group__6
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__VariableDefinition__Group__6__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__VariableDefinition__Group__6__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getVariableDefinitionAccess().getGroup_6()); }
(rule__VariableDefinition__Group_6__0)?
{ after(grammarAccess.getVariableDefinitionAccess().getGroup_6()); }
)

;
finally {
	restoreStackSize(stackSize);
}
















rule__VariableDefinition__Group_6__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__VariableDefinition__Group_6__0__Impl
	rule__VariableDefinition__Group_6__1
;
finally {
	restoreStackSize(stackSize);
}

rule__VariableDefinition__Group_6__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getVariableDefinitionAccess().getEqualsSignKeyword_6_0()); }

	'=' 

{ after(grammarAccess.getVariableDefinitionAccess().getEqualsSignKeyword_6_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__VariableDefinition__Group_6__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__VariableDefinition__Group_6__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__VariableDefinition__Group_6__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getVariableDefinitionAccess().getInitialValueAssignment_6_1()); }
(rule__VariableDefinition__InitialValueAssignment_6_1)
{ after(grammarAccess.getVariableDefinitionAccess().getInitialValueAssignment_6_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__OperationDefinition__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__OperationDefinition__Group__0__Impl
	rule__OperationDefinition__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getOperationDefinitionAction_0()); }
(

)
{ after(grammarAccess.getOperationDefinitionAccess().getOperationDefinitionAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__OperationDefinition__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__OperationDefinition__Group__1__Impl
	rule__OperationDefinition__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getOperationKeyword_1()); }

	'operation' 

{ after(grammarAccess.getOperationDefinitionAccess().getOperationKeyword_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__OperationDefinition__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__OperationDefinition__Group__2__Impl
	rule__OperationDefinition__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getNameAssignment_2()); }
(rule__OperationDefinition__NameAssignment_2)
{ after(grammarAccess.getOperationDefinitionAccess().getNameAssignment_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__OperationDefinition__Group__3
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__OperationDefinition__Group__3__Impl
	rule__OperationDefinition__Group__4
;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__Group__3__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getLeftParenthesisKeyword_3()); }

	'(' 

{ after(grammarAccess.getOperationDefinitionAccess().getLeftParenthesisKeyword_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__OperationDefinition__Group__4
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__OperationDefinition__Group__4__Impl
	rule__OperationDefinition__Group__5
;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__Group__4__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getGroup_4()); }
(rule__OperationDefinition__Group_4__0)?
{ after(grammarAccess.getOperationDefinitionAccess().getGroup_4()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__OperationDefinition__Group__5
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__OperationDefinition__Group__5__Impl
	rule__OperationDefinition__Group__6
;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__Group__5__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getRightParenthesisKeyword_5()); }

	')' 

{ after(grammarAccess.getOperationDefinitionAccess().getRightParenthesisKeyword_5()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__OperationDefinition__Group__6
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__OperationDefinition__Group__6__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__Group__6__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getGroup_6()); }
(rule__OperationDefinition__Group_6__0)?
{ after(grammarAccess.getOperationDefinitionAccess().getGroup_6()); }
)

;
finally {
	restoreStackSize(stackSize);
}
















rule__OperationDefinition__Group_4__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__OperationDefinition__Group_4__0__Impl
	rule__OperationDefinition__Group_4__1
;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__Group_4__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getParametersAssignment_4_0()); }
(rule__OperationDefinition__ParametersAssignment_4_0)
{ after(grammarAccess.getOperationDefinitionAccess().getParametersAssignment_4_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__OperationDefinition__Group_4__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__OperationDefinition__Group_4__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__Group_4__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getGroup_4_1()); }
(rule__OperationDefinition__Group_4_1__0)*
{ after(grammarAccess.getOperationDefinitionAccess().getGroup_4_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__OperationDefinition__Group_4_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__OperationDefinition__Group_4_1__0__Impl
	rule__OperationDefinition__Group_4_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__Group_4_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getCommaKeyword_4_1_0()); }

	',' 

{ after(grammarAccess.getOperationDefinitionAccess().getCommaKeyword_4_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__OperationDefinition__Group_4_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__OperationDefinition__Group_4_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__Group_4_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getParametersAssignment_4_1_1()); }
(rule__OperationDefinition__ParametersAssignment_4_1_1)
{ after(grammarAccess.getOperationDefinitionAccess().getParametersAssignment_4_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__OperationDefinition__Group_6__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__OperationDefinition__Group_6__0__Impl
	rule__OperationDefinition__Group_6__1
;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__Group_6__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getColonKeyword_6_0()); }

	':' 

{ after(grammarAccess.getOperationDefinitionAccess().getColonKeyword_6_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__OperationDefinition__Group_6__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__OperationDefinition__Group_6__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__Group_6__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getTypeAssignment_6_1()); }
(rule__OperationDefinition__TypeAssignment_6_1)
{ after(grammarAccess.getOperationDefinitionAccess().getTypeAssignment_6_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__Parameter__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__Parameter__Group__0__Impl
	rule__Parameter__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Parameter__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getParameterAccess().getNameAssignment_0()); }
(rule__Parameter__NameAssignment_0)
{ after(grammarAccess.getParameterAccess().getNameAssignment_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__Parameter__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__Parameter__Group__1__Impl
	rule__Parameter__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__Parameter__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getParameterAccess().getColonKeyword_1()); }

	':' 

{ after(grammarAccess.getParameterAccess().getColonKeyword_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__Parameter__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__Parameter__Group__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Parameter__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getParameterAccess().getTypeAssignment_2()); }
(rule__Parameter__TypeAssignment_2)
{ after(grammarAccess.getParameterAccess().getTypeAssignment_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__FQN__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FQN__Group__0__Impl
	rule__FQN__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__FQN__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFQNAccess().getXIDParserRuleCall_0()); }
	ruleXID
{ after(grammarAccess.getFQNAccess().getXIDParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FQN__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FQN__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__FQN__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFQNAccess().getGroup_1()); }
(rule__FQN__Group_1__0)*
{ after(grammarAccess.getFQNAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__FQN__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FQN__Group_1__0__Impl
	rule__FQN__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__FQN__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFQNAccess().getFullStopKeyword_1_0()); }

	'.' 

{ after(grammarAccess.getFQNAccess().getFullStopKeyword_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FQN__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FQN__Group_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__FQN__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFQNAccess().getXIDParserRuleCall_1_1()); }
	ruleXID
{ after(grammarAccess.getFQNAccess().getXIDParserRuleCall_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__LocalReaction__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LocalReaction__Group__0__Impl
	rule__LocalReaction__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__LocalReaction__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLocalReactionAccess().getTriggerAssignment_0()); }
(rule__LocalReaction__TriggerAssignment_0)
{ after(grammarAccess.getLocalReactionAccess().getTriggerAssignment_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__LocalReaction__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LocalReaction__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__LocalReaction__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLocalReactionAccess().getGroup_1()); }
(rule__LocalReaction__Group_1__0)
{ after(grammarAccess.getLocalReactionAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__LocalReaction__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LocalReaction__Group_1__0__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__LocalReaction__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLocalReactionAccess().getGroup_1_0()); }
(rule__LocalReaction__Group_1_0__0)
{ after(grammarAccess.getLocalReactionAccess().getGroup_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}




rule__LocalReaction__Group_1_0__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LocalReaction__Group_1_0__0__Impl
	rule__LocalReaction__Group_1_0__1
;
finally {
	restoreStackSize(stackSize);
}

rule__LocalReaction__Group_1_0__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLocalReactionAccess().getSolidusKeyword_1_0_0()); }

	'/' 

{ after(grammarAccess.getLocalReactionAccess().getSolidusKeyword_1_0_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__LocalReaction__Group_1_0__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LocalReaction__Group_1_0__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__LocalReaction__Group_1_0__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLocalReactionAccess().getEffectAssignment_1_0_1()); }
(rule__LocalReaction__EffectAssignment_1_0_1)
{ after(grammarAccess.getLocalReactionAccess().getEffectAssignment_1_0_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__TransitionReaction__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__TransitionReaction__Group__0__Impl
	rule__TransitionReaction__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__TransitionReaction__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTransitionReactionAccess().getTransitionReactionAction_0()); }
(

)
{ after(grammarAccess.getTransitionReactionAccess().getTransitionReactionAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__TransitionReaction__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__TransitionReaction__Group__1__Impl
	rule__TransitionReaction__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__TransitionReaction__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTransitionReactionAccess().getTriggerAssignment_1()); }
(rule__TransitionReaction__TriggerAssignment_1)?
{ after(grammarAccess.getTransitionReactionAccess().getTriggerAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__TransitionReaction__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__TransitionReaction__Group__2__Impl
	rule__TransitionReaction__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__TransitionReaction__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTransitionReactionAccess().getGroup_2()); }
(rule__TransitionReaction__Group_2__0)?
{ after(grammarAccess.getTransitionReactionAccess().getGroup_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__TransitionReaction__Group__3
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__TransitionReaction__Group__3__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__TransitionReaction__Group__3__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTransitionReactionAccess().getGroup_3()); }
(rule__TransitionReaction__Group_3__0)?
{ after(grammarAccess.getTransitionReactionAccess().getGroup_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}










rule__TransitionReaction__Group_2__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__TransitionReaction__Group_2__0__Impl
	rule__TransitionReaction__Group_2__1
;
finally {
	restoreStackSize(stackSize);
}

rule__TransitionReaction__Group_2__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTransitionReactionAccess().getSolidusKeyword_2_0()); }

	'/' 

{ after(grammarAccess.getTransitionReactionAccess().getSolidusKeyword_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__TransitionReaction__Group_2__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__TransitionReaction__Group_2__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__TransitionReaction__Group_2__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTransitionReactionAccess().getEffectAssignment_2_1()); }
(rule__TransitionReaction__EffectAssignment_2_1)
{ after(grammarAccess.getTransitionReactionAccess().getEffectAssignment_2_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__TransitionReaction__Group_3__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__TransitionReaction__Group_3__0__Impl
	rule__TransitionReaction__Group_3__1
;
finally {
	restoreStackSize(stackSize);
}

rule__TransitionReaction__Group_3__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTransitionReactionAccess().getNumberSignKeyword_3_0()); }

	'#' 

{ after(grammarAccess.getTransitionReactionAccess().getNumberSignKeyword_3_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__TransitionReaction__Group_3__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__TransitionReaction__Group_3__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__TransitionReaction__Group_3__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTransitionReactionAccess().getPropertiesAssignment_3_1()); }
(rule__TransitionReaction__PropertiesAssignment_3_1)*
{ after(grammarAccess.getTransitionReactionAccess().getPropertiesAssignment_3_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__ReactionTrigger__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionTrigger__Group__0__Impl
	rule__ReactionTrigger__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getReactionTriggerAction_0()); }
(

)
{ after(grammarAccess.getReactionTriggerAccess().getReactionTriggerAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ReactionTrigger__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionTrigger__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getAlternatives_1()); }
(rule__ReactionTrigger__Alternatives_1)
{ after(grammarAccess.getReactionTriggerAccess().getAlternatives_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__ReactionTrigger__Group_1_0__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionTrigger__Group_1_0__0__Impl
	rule__ReactionTrigger__Group_1_0__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__Group_1_0__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getTriggersAssignment_1_0_0()); }
(rule__ReactionTrigger__TriggersAssignment_1_0_0)
{ after(grammarAccess.getReactionTriggerAccess().getTriggersAssignment_1_0_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ReactionTrigger__Group_1_0__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionTrigger__Group_1_0__1__Impl
	rule__ReactionTrigger__Group_1_0__2
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__Group_1_0__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getGroup_1_0_1()); }
(rule__ReactionTrigger__Group_1_0_1__0)*
{ after(grammarAccess.getReactionTriggerAccess().getGroup_1_0_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ReactionTrigger__Group_1_0__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionTrigger__Group_1_0__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__Group_1_0__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getGroup_1_0_2()); }
(rule__ReactionTrigger__Group_1_0_2__0)?
{ after(grammarAccess.getReactionTriggerAccess().getGroup_1_0_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__ReactionTrigger__Group_1_0_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionTrigger__Group_1_0_1__0__Impl
	rule__ReactionTrigger__Group_1_0_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__Group_1_0_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getCommaKeyword_1_0_1_0()); }

	',' 

{ after(grammarAccess.getReactionTriggerAccess().getCommaKeyword_1_0_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ReactionTrigger__Group_1_0_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionTrigger__Group_1_0_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__Group_1_0_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getTriggersAssignment_1_0_1_1()); }
(rule__ReactionTrigger__TriggersAssignment_1_0_1_1)
{ after(grammarAccess.getReactionTriggerAccess().getTriggersAssignment_1_0_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__ReactionTrigger__Group_1_0_2__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionTrigger__Group_1_0_2__0__Impl
	rule__ReactionTrigger__Group_1_0_2__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__Group_1_0_2__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getLeftSquareBracketKeyword_1_0_2_0()); }
(
	'[' 
)
{ after(grammarAccess.getReactionTriggerAccess().getLeftSquareBracketKeyword_1_0_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ReactionTrigger__Group_1_0_2__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionTrigger__Group_1_0_2__1__Impl
	rule__ReactionTrigger__Group_1_0_2__2
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__Group_1_0_2__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getGuardAssignment_1_0_2_1()); }
(rule__ReactionTrigger__GuardAssignment_1_0_2_1)
{ after(grammarAccess.getReactionTriggerAccess().getGuardAssignment_1_0_2_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ReactionTrigger__Group_1_0_2__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionTrigger__Group_1_0_2__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__Group_1_0_2__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getRightSquareBracketKeyword_1_0_2_2()); }

	']' 

{ after(grammarAccess.getReactionTriggerAccess().getRightSquareBracketKeyword_1_0_2_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__ReactionTrigger__Group_1_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionTrigger__Group_1_1__0__Impl
	rule__ReactionTrigger__Group_1_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__Group_1_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getLeftSquareBracketKeyword_1_1_0()); }

	'[' 

{ after(grammarAccess.getReactionTriggerAccess().getLeftSquareBracketKeyword_1_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ReactionTrigger__Group_1_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionTrigger__Group_1_1__1__Impl
	rule__ReactionTrigger__Group_1_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__Group_1_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getGuardAssignment_1_1_1()); }
(rule__ReactionTrigger__GuardAssignment_1_1_1)
{ after(grammarAccess.getReactionTriggerAccess().getGuardAssignment_1_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ReactionTrigger__Group_1_1__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionTrigger__Group_1_1__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__Group_1_1__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getRightSquareBracketKeyword_1_1_2()); }

	']' 

{ after(grammarAccess.getReactionTriggerAccess().getRightSquareBracketKeyword_1_1_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__DefaultTrigger__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__DefaultTrigger__Group__0__Impl
	rule__DefaultTrigger__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__DefaultTrigger__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getDefaultTriggerAccess().getDefaultTriggerAction_0()); }
(

)
{ after(grammarAccess.getDefaultTriggerAccess().getDefaultTriggerAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__DefaultTrigger__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__DefaultTrigger__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__DefaultTrigger__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getDefaultTriggerAccess().getAlternatives_1()); }
(rule__DefaultTrigger__Alternatives_1)
{ after(grammarAccess.getDefaultTriggerAccess().getAlternatives_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__Guard__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__Guard__Group__0__Impl
	rule__Guard__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Guard__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGuardAccess().getGuardAction_0()); }
(

)
{ after(grammarAccess.getGuardAccess().getGuardAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__Guard__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__Guard__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Guard__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGuardAccess().getExpressionAssignment_1()); }
(rule__Guard__ExpressionAssignment_1)
{ after(grammarAccess.getGuardAccess().getExpressionAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__ReactionEffect__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionEffect__Group__0__Impl
	rule__ReactionEffect__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionEffect__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionEffectAccess().getReactionEffectAction_0()); }
(

)
{ after(grammarAccess.getReactionEffectAccess().getReactionEffectAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ReactionEffect__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionEffect__Group__1__Impl
	rule__ReactionEffect__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionEffect__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionEffectAccess().getActionsAssignment_1()); }
(rule__ReactionEffect__ActionsAssignment_1)
{ after(grammarAccess.getReactionEffectAccess().getActionsAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ReactionEffect__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionEffect__Group__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionEffect__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionEffectAccess().getGroup_2()); }
(rule__ReactionEffect__Group_2__0)*
{ after(grammarAccess.getReactionEffectAccess().getGroup_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__ReactionEffect__Group_2__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionEffect__Group_2__0__Impl
	rule__ReactionEffect__Group_2__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionEffect__Group_2__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionEffectAccess().getSemicolonKeyword_2_0()); }
(
	';' 
)
{ after(grammarAccess.getReactionEffectAccess().getSemicolonKeyword_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ReactionEffect__Group_2__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ReactionEffect__Group_2__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionEffect__Group_2__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionEffectAccess().getActionsAssignment_2_1()); }
(rule__ReactionEffect__ActionsAssignment_2_1)
{ after(grammarAccess.getReactionEffectAccess().getActionsAssignment_2_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__EntryPointSpec__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EntryPointSpec__Group__0__Impl
	rule__EntryPointSpec__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__EntryPointSpec__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEntryPointSpecAccess().getGreaterThanSignKeyword_0()); }

	'>' 

{ after(grammarAccess.getEntryPointSpecAccess().getGreaterThanSignKeyword_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__EntryPointSpec__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EntryPointSpec__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__EntryPointSpec__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEntryPointSpecAccess().getEntrypointAssignment_1()); }
(rule__EntryPointSpec__EntrypointAssignment_1)
{ after(grammarAccess.getEntryPointSpecAccess().getEntrypointAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__ExitPointSpec__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ExitPointSpec__Group__0__Impl
	rule__ExitPointSpec__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ExitPointSpec__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getExitPointSpecAccess().getExitpointAssignment_0()); }
(rule__ExitPointSpec__ExitpointAssignment_0)
{ after(grammarAccess.getExitPointSpecAccess().getExitpointAssignment_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ExitPointSpec__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ExitPointSpec__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ExitPointSpec__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getExitPointSpecAccess().getGreaterThanSignKeyword_1()); }

	'>' 

{ after(grammarAccess.getExitPointSpecAccess().getGreaterThanSignKeyword_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__TimeEventSpec__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__TimeEventSpec__Group__0__Impl
	rule__TimeEventSpec__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__TimeEventSpec__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTimeEventSpecAccess().getTypeAssignment_0()); }
(rule__TimeEventSpec__TypeAssignment_0)
{ after(grammarAccess.getTimeEventSpecAccess().getTypeAssignment_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__TimeEventSpec__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__TimeEventSpec__Group__1__Impl
	rule__TimeEventSpec__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__TimeEventSpec__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTimeEventSpecAccess().getValueAssignment_1()); }
(rule__TimeEventSpec__ValueAssignment_1)
{ after(grammarAccess.getTimeEventSpecAccess().getValueAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__TimeEventSpec__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__TimeEventSpec__Group__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__TimeEventSpec__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTimeEventSpecAccess().getUnitAssignment_2()); }
(rule__TimeEventSpec__UnitAssignment_2)
{ after(grammarAccess.getTimeEventSpecAccess().getUnitAssignment_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__EntryEvent__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EntryEvent__Group__0__Impl
	rule__EntryEvent__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__EntryEvent__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEntryEventAccess().getEntryEventAction_0()); }
(

)
{ after(grammarAccess.getEntryEventAccess().getEntryEventAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__EntryEvent__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EntryEvent__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__EntryEvent__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEntryEventAccess().getEntryKeyword_1()); }

	'entry' 

{ after(grammarAccess.getEntryEventAccess().getEntryKeyword_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__ExitEvent__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ExitEvent__Group__0__Impl
	rule__ExitEvent__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ExitEvent__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getExitEventAccess().getExitEventAction_0()); }
(

)
{ after(grammarAccess.getExitEventAccess().getExitEventAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ExitEvent__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ExitEvent__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ExitEvent__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getExitEventAccess().getExitKeyword_1()); }

	'exit' 

{ after(grammarAccess.getExitEventAccess().getExitKeyword_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__AlwaysEvent__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__AlwaysEvent__Group__0__Impl
	rule__AlwaysEvent__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__AlwaysEvent__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getAlwaysEventAccess().getAlwaysEventAction_0()); }
(

)
{ after(grammarAccess.getAlwaysEventAccess().getAlwaysEventAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__AlwaysEvent__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__AlwaysEvent__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__AlwaysEvent__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getAlwaysEventAccess().getAlternatives_1()); }
(rule__AlwaysEvent__Alternatives_1)
{ after(grammarAccess.getAlwaysEventAccess().getAlternatives_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__EventRaisingExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventRaisingExpression__Group__0__Impl
	rule__EventRaisingExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__EventRaisingExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventRaisingExpressionAccess().getEventRaisingExpressionAction_0()); }
(

)
{ after(grammarAccess.getEventRaisingExpressionAccess().getEventRaisingExpressionAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__EventRaisingExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventRaisingExpression__Group__1__Impl
	rule__EventRaisingExpression__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__EventRaisingExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventRaisingExpressionAccess().getRaiseKeyword_1()); }

	'raise' 

{ after(grammarAccess.getEventRaisingExpressionAccess().getRaiseKeyword_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__EventRaisingExpression__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventRaisingExpression__Group__2__Impl
	rule__EventRaisingExpression__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__EventRaisingExpression__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventRaisingExpressionAccess().getEventAssignment_2()); }
(rule__EventRaisingExpression__EventAssignment_2)
{ after(grammarAccess.getEventRaisingExpressionAccess().getEventAssignment_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__EventRaisingExpression__Group__3
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventRaisingExpression__Group__3__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__EventRaisingExpression__Group__3__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventRaisingExpressionAccess().getGroup_3()); }
(rule__EventRaisingExpression__Group_3__0)?
{ after(grammarAccess.getEventRaisingExpressionAccess().getGroup_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}










rule__EventRaisingExpression__Group_3__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventRaisingExpression__Group_3__0__Impl
	rule__EventRaisingExpression__Group_3__1
;
finally {
	restoreStackSize(stackSize);
}

rule__EventRaisingExpression__Group_3__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventRaisingExpressionAccess().getColonKeyword_3_0()); }

	':' 

{ after(grammarAccess.getEventRaisingExpressionAccess().getColonKeyword_3_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__EventRaisingExpression__Group_3__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventRaisingExpression__Group_3__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__EventRaisingExpression__Group_3__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventRaisingExpressionAccess().getValueAssignment_3_1()); }
(rule__EventRaisingExpression__ValueAssignment_3_1)
{ after(grammarAccess.getEventRaisingExpressionAccess().getValueAssignment_3_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__EventValueReferenceExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventValueReferenceExpression__Group__0__Impl
	rule__EventValueReferenceExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__EventValueReferenceExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventValueReferenceExpressionAccess().getEventValueReferenceExpressionAction_0()); }
(

)
{ after(grammarAccess.getEventValueReferenceExpressionAccess().getEventValueReferenceExpressionAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__EventValueReferenceExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventValueReferenceExpression__Group__1__Impl
	rule__EventValueReferenceExpression__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__EventValueReferenceExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventValueReferenceExpressionAccess().getValueofKeyword_1()); }

	'valueof' 

{ after(grammarAccess.getEventValueReferenceExpressionAccess().getValueofKeyword_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__EventValueReferenceExpression__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventValueReferenceExpression__Group__2__Impl
	rule__EventValueReferenceExpression__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__EventValueReferenceExpression__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventValueReferenceExpressionAccess().getLeftParenthesisKeyword_2()); }

	'(' 

{ after(grammarAccess.getEventValueReferenceExpressionAccess().getLeftParenthesisKeyword_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__EventValueReferenceExpression__Group__3
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventValueReferenceExpression__Group__3__Impl
	rule__EventValueReferenceExpression__Group__4
;
finally {
	restoreStackSize(stackSize);
}

rule__EventValueReferenceExpression__Group__3__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventValueReferenceExpressionAccess().getValueAssignment_3()); }
(rule__EventValueReferenceExpression__ValueAssignment_3)
{ after(grammarAccess.getEventValueReferenceExpressionAccess().getValueAssignment_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__EventValueReferenceExpression__Group__4
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__EventValueReferenceExpression__Group__4__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__EventValueReferenceExpression__Group__4__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventValueReferenceExpressionAccess().getRightParenthesisKeyword_4()); }

	')' 

{ after(grammarAccess.getEventValueReferenceExpressionAccess().getRightParenthesisKeyword_4()); }
)

;
finally {
	restoreStackSize(stackSize);
}












rule__ActiveStateReferenceExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ActiveStateReferenceExpression__Group__0__Impl
	rule__ActiveStateReferenceExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ActiveStateReferenceExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getActiveStateReferenceExpressionAccess().getActiveStateReferenceExpressionAction_0()); }
(

)
{ after(grammarAccess.getActiveStateReferenceExpressionAccess().getActiveStateReferenceExpressionAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ActiveStateReferenceExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ActiveStateReferenceExpression__Group__1__Impl
	rule__ActiveStateReferenceExpression__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__ActiveStateReferenceExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getActiveStateReferenceExpressionAccess().getActiveKeyword_1()); }

	'active' 

{ after(grammarAccess.getActiveStateReferenceExpressionAccess().getActiveKeyword_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ActiveStateReferenceExpression__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ActiveStateReferenceExpression__Group__2__Impl
	rule__ActiveStateReferenceExpression__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__ActiveStateReferenceExpression__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getActiveStateReferenceExpressionAccess().getLeftParenthesisKeyword_2()); }

	'(' 

{ after(grammarAccess.getActiveStateReferenceExpressionAccess().getLeftParenthesisKeyword_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ActiveStateReferenceExpression__Group__3
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ActiveStateReferenceExpression__Group__3__Impl
	rule__ActiveStateReferenceExpression__Group__4
;
finally {
	restoreStackSize(stackSize);
}

rule__ActiveStateReferenceExpression__Group__3__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getActiveStateReferenceExpressionAccess().getValueAssignment_3()); }
(rule__ActiveStateReferenceExpression__ValueAssignment_3)
{ after(grammarAccess.getActiveStateReferenceExpressionAccess().getValueAssignment_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ActiveStateReferenceExpression__Group__4
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ActiveStateReferenceExpression__Group__4__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ActiveStateReferenceExpression__Group__4__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getActiveStateReferenceExpressionAccess().getRightParenthesisKeyword_4()); }

	')' 

{ after(grammarAccess.getActiveStateReferenceExpressionAccess().getRightParenthesisKeyword_4()); }
)

;
finally {
	restoreStackSize(stackSize);
}












rule__AssignmentExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__AssignmentExpression__Group__0__Impl
	rule__AssignmentExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__AssignmentExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getAssignmentExpressionAccess().getConditionalExpressionParserRuleCall_0()); }
	ruleConditionalExpression
{ after(grammarAccess.getAssignmentExpressionAccess().getConditionalExpressionParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__AssignmentExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__AssignmentExpression__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__AssignmentExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getAssignmentExpressionAccess().getGroup_1()); }
(rule__AssignmentExpression__Group_1__0)*
{ after(grammarAccess.getAssignmentExpressionAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__AssignmentExpression__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__AssignmentExpression__Group_1__0__Impl
	rule__AssignmentExpression__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__AssignmentExpression__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getAssignmentExpressionAccess().getAssignmentExpressionVarRefAction_1_0()); }
(

)
{ after(grammarAccess.getAssignmentExpressionAccess().getAssignmentExpressionVarRefAction_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__AssignmentExpression__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__AssignmentExpression__Group_1__1__Impl
	rule__AssignmentExpression__Group_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__AssignmentExpression__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getAssignmentExpressionAccess().getOperatorAssignment_1_1()); }
(rule__AssignmentExpression__OperatorAssignment_1_1)
{ after(grammarAccess.getAssignmentExpressionAccess().getOperatorAssignment_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__AssignmentExpression__Group_1__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__AssignmentExpression__Group_1__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__AssignmentExpression__Group_1__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getAssignmentExpressionAccess().getExpressionAssignment_1_2()); }
(rule__AssignmentExpression__ExpressionAssignment_1_2)
{ after(grammarAccess.getAssignmentExpressionAccess().getExpressionAssignment_1_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__ConditionalExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ConditionalExpression__Group__0__Impl
	rule__ConditionalExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ConditionalExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getConditionalExpressionAccess().getLogicalOrExpressionParserRuleCall_0()); }
	ruleLogicalOrExpression
{ after(grammarAccess.getConditionalExpressionAccess().getLogicalOrExpressionParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ConditionalExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ConditionalExpression__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ConditionalExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getConditionalExpressionAccess().getGroup_1()); }
(rule__ConditionalExpression__Group_1__0)?
{ after(grammarAccess.getConditionalExpressionAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__ConditionalExpression__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ConditionalExpression__Group_1__0__Impl
	rule__ConditionalExpression__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ConditionalExpression__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getConditionalExpressionAccess().getConditionalExpressionConditionAction_1_0()); }
(

)
{ after(grammarAccess.getConditionalExpressionAccess().getConditionalExpressionConditionAction_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ConditionalExpression__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ConditionalExpression__Group_1__1__Impl
	rule__ConditionalExpression__Group_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__ConditionalExpression__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getConditionalExpressionAccess().getQuestionMarkKeyword_1_1()); }

	'?' 

{ after(grammarAccess.getConditionalExpressionAccess().getQuestionMarkKeyword_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ConditionalExpression__Group_1__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ConditionalExpression__Group_1__2__Impl
	rule__ConditionalExpression__Group_1__3
;
finally {
	restoreStackSize(stackSize);
}

rule__ConditionalExpression__Group_1__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getConditionalExpressionAccess().getTrueCaseAssignment_1_2()); }
(rule__ConditionalExpression__TrueCaseAssignment_1_2)
{ after(grammarAccess.getConditionalExpressionAccess().getTrueCaseAssignment_1_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ConditionalExpression__Group_1__3
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ConditionalExpression__Group_1__3__Impl
	rule__ConditionalExpression__Group_1__4
;
finally {
	restoreStackSize(stackSize);
}

rule__ConditionalExpression__Group_1__3__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getConditionalExpressionAccess().getColonKeyword_1_3()); }

	':' 

{ after(grammarAccess.getConditionalExpressionAccess().getColonKeyword_1_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ConditionalExpression__Group_1__4
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ConditionalExpression__Group_1__4__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ConditionalExpression__Group_1__4__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getConditionalExpressionAccess().getFalseCaseAssignment_1_4()); }
(rule__ConditionalExpression__FalseCaseAssignment_1_4)
{ after(grammarAccess.getConditionalExpressionAccess().getFalseCaseAssignment_1_4()); }
)

;
finally {
	restoreStackSize(stackSize);
}












rule__LogicalOrExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalOrExpression__Group__0__Impl
	rule__LogicalOrExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalOrExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalOrExpressionAccess().getLogicalAndExpressionParserRuleCall_0()); }
	ruleLogicalAndExpression
{ after(grammarAccess.getLogicalOrExpressionAccess().getLogicalAndExpressionParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__LogicalOrExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalOrExpression__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalOrExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalOrExpressionAccess().getGroup_1()); }
(rule__LogicalOrExpression__Group_1__0)*
{ after(grammarAccess.getLogicalOrExpressionAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__LogicalOrExpression__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalOrExpression__Group_1__0__Impl
	rule__LogicalOrExpression__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalOrExpression__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalOrExpressionAccess().getLogicalOrExpressionLeftOperandAction_1_0()); }
(

)
{ after(grammarAccess.getLogicalOrExpressionAccess().getLogicalOrExpressionLeftOperandAction_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__LogicalOrExpression__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalOrExpression__Group_1__1__Impl
	rule__LogicalOrExpression__Group_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalOrExpression__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalOrExpressionAccess().getVerticalLineVerticalLineKeyword_1_1()); }

	'||' 

{ after(grammarAccess.getLogicalOrExpressionAccess().getVerticalLineVerticalLineKeyword_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__LogicalOrExpression__Group_1__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalOrExpression__Group_1__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalOrExpression__Group_1__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalOrExpressionAccess().getRightOperandAssignment_1_2()); }
(rule__LogicalOrExpression__RightOperandAssignment_1_2)
{ after(grammarAccess.getLogicalOrExpressionAccess().getRightOperandAssignment_1_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__LogicalAndExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalAndExpression__Group__0__Impl
	rule__LogicalAndExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalAndExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalAndExpressionAccess().getLogicalNotExpressionParserRuleCall_0()); }
	ruleLogicalNotExpression
{ after(grammarAccess.getLogicalAndExpressionAccess().getLogicalNotExpressionParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__LogicalAndExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalAndExpression__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalAndExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalAndExpressionAccess().getGroup_1()); }
(rule__LogicalAndExpression__Group_1__0)*
{ after(grammarAccess.getLogicalAndExpressionAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__LogicalAndExpression__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalAndExpression__Group_1__0__Impl
	rule__LogicalAndExpression__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalAndExpression__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalAndExpressionAccess().getLogicalAndExpressionLeftOperandAction_1_0()); }
(

)
{ after(grammarAccess.getLogicalAndExpressionAccess().getLogicalAndExpressionLeftOperandAction_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__LogicalAndExpression__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalAndExpression__Group_1__1__Impl
	rule__LogicalAndExpression__Group_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalAndExpression__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalAndExpressionAccess().getAmpersandAmpersandKeyword_1_1()); }

	'&&' 

{ after(grammarAccess.getLogicalAndExpressionAccess().getAmpersandAmpersandKeyword_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__LogicalAndExpression__Group_1__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalAndExpression__Group_1__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalAndExpression__Group_1__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalAndExpressionAccess().getRightOperandAssignment_1_2()); }
(rule__LogicalAndExpression__RightOperandAssignment_1_2)
{ after(grammarAccess.getLogicalAndExpressionAccess().getRightOperandAssignment_1_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__LogicalNotExpression__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalNotExpression__Group_1__0__Impl
	rule__LogicalNotExpression__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalNotExpression__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalNotExpressionAccess().getLogicalNotExpressionAction_1_0()); }
(

)
{ after(grammarAccess.getLogicalNotExpressionAccess().getLogicalNotExpressionAction_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__LogicalNotExpression__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalNotExpression__Group_1__1__Impl
	rule__LogicalNotExpression__Group_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalNotExpression__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalNotExpressionAccess().getExclamationMarkKeyword_1_1()); }

	'!' 

{ after(grammarAccess.getLogicalNotExpressionAccess().getExclamationMarkKeyword_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__LogicalNotExpression__Group_1__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalNotExpression__Group_1__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalNotExpression__Group_1__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalNotExpressionAccess().getOperandAssignment_1_2()); }
(rule__LogicalNotExpression__OperandAssignment_1_2)
{ after(grammarAccess.getLogicalNotExpressionAccess().getOperandAssignment_1_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__BitwiseXorExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BitwiseXorExpression__Group__0__Impl
	rule__BitwiseXorExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseXorExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseXorExpressionAccess().getBitwiseOrExpressionParserRuleCall_0()); }
	ruleBitwiseOrExpression
{ after(grammarAccess.getBitwiseXorExpressionAccess().getBitwiseOrExpressionParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__BitwiseXorExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BitwiseXorExpression__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseXorExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseXorExpressionAccess().getGroup_1()); }
(rule__BitwiseXorExpression__Group_1__0)*
{ after(grammarAccess.getBitwiseXorExpressionAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__BitwiseXorExpression__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BitwiseXorExpression__Group_1__0__Impl
	rule__BitwiseXorExpression__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseXorExpression__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseXorExpressionAccess().getBitwiseXorExpressionLeftOperandAction_1_0()); }
(

)
{ after(grammarAccess.getBitwiseXorExpressionAccess().getBitwiseXorExpressionLeftOperandAction_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__BitwiseXorExpression__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BitwiseXorExpression__Group_1__1__Impl
	rule__BitwiseXorExpression__Group_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseXorExpression__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseXorExpressionAccess().getCircumflexAccentKeyword_1_1()); }

	'^' 

{ after(grammarAccess.getBitwiseXorExpressionAccess().getCircumflexAccentKeyword_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__BitwiseXorExpression__Group_1__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BitwiseXorExpression__Group_1__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseXorExpression__Group_1__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseXorExpressionAccess().getRightOperandAssignment_1_2()); }
(rule__BitwiseXorExpression__RightOperandAssignment_1_2)
{ after(grammarAccess.getBitwiseXorExpressionAccess().getRightOperandAssignment_1_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__BitwiseOrExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BitwiseOrExpression__Group__0__Impl
	rule__BitwiseOrExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseOrExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseOrExpressionAccess().getBitwiseAndExpressionParserRuleCall_0()); }
	ruleBitwiseAndExpression
{ after(grammarAccess.getBitwiseOrExpressionAccess().getBitwiseAndExpressionParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__BitwiseOrExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BitwiseOrExpression__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseOrExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseOrExpressionAccess().getGroup_1()); }
(rule__BitwiseOrExpression__Group_1__0)*
{ after(grammarAccess.getBitwiseOrExpressionAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__BitwiseOrExpression__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BitwiseOrExpression__Group_1__0__Impl
	rule__BitwiseOrExpression__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseOrExpression__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseOrExpressionAccess().getBitwiseOrExpressionLeftOperandAction_1_0()); }
(

)
{ after(grammarAccess.getBitwiseOrExpressionAccess().getBitwiseOrExpressionLeftOperandAction_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__BitwiseOrExpression__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BitwiseOrExpression__Group_1__1__Impl
	rule__BitwiseOrExpression__Group_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseOrExpression__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseOrExpressionAccess().getVerticalLineKeyword_1_1()); }

	'|' 

{ after(grammarAccess.getBitwiseOrExpressionAccess().getVerticalLineKeyword_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__BitwiseOrExpression__Group_1__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BitwiseOrExpression__Group_1__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseOrExpression__Group_1__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseOrExpressionAccess().getRightOperandAssignment_1_2()); }
(rule__BitwiseOrExpression__RightOperandAssignment_1_2)
{ after(grammarAccess.getBitwiseOrExpressionAccess().getRightOperandAssignment_1_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__BitwiseAndExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BitwiseAndExpression__Group__0__Impl
	rule__BitwiseAndExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseAndExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseAndExpressionAccess().getLogicalRelationExpressionParserRuleCall_0()); }
	ruleLogicalRelationExpression
{ after(grammarAccess.getBitwiseAndExpressionAccess().getLogicalRelationExpressionParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__BitwiseAndExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BitwiseAndExpression__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseAndExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseAndExpressionAccess().getGroup_1()); }
(rule__BitwiseAndExpression__Group_1__0)*
{ after(grammarAccess.getBitwiseAndExpressionAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__BitwiseAndExpression__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BitwiseAndExpression__Group_1__0__Impl
	rule__BitwiseAndExpression__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseAndExpression__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseAndExpressionAccess().getBitwiseAndExpressionLeftOperandAction_1_0()); }
(

)
{ after(grammarAccess.getBitwiseAndExpressionAccess().getBitwiseAndExpressionLeftOperandAction_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__BitwiseAndExpression__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BitwiseAndExpression__Group_1__1__Impl
	rule__BitwiseAndExpression__Group_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseAndExpression__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseAndExpressionAccess().getAmpersandKeyword_1_1()); }

	'&' 

{ after(grammarAccess.getBitwiseAndExpressionAccess().getAmpersandKeyword_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__BitwiseAndExpression__Group_1__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BitwiseAndExpression__Group_1__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseAndExpression__Group_1__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseAndExpressionAccess().getRightOperandAssignment_1_2()); }
(rule__BitwiseAndExpression__RightOperandAssignment_1_2)
{ after(grammarAccess.getBitwiseAndExpressionAccess().getRightOperandAssignment_1_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__LogicalRelationExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalRelationExpression__Group__0__Impl
	rule__LogicalRelationExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalRelationExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalRelationExpressionAccess().getShiftExpressionParserRuleCall_0()); }
	ruleShiftExpression
{ after(grammarAccess.getLogicalRelationExpressionAccess().getShiftExpressionParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__LogicalRelationExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalRelationExpression__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalRelationExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalRelationExpressionAccess().getGroup_1()); }
(rule__LogicalRelationExpression__Group_1__0)*
{ after(grammarAccess.getLogicalRelationExpressionAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__LogicalRelationExpression__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalRelationExpression__Group_1__0__Impl
	rule__LogicalRelationExpression__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalRelationExpression__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalRelationExpressionAccess().getLogicalRelationExpressionLeftOperandAction_1_0()); }
(

)
{ after(grammarAccess.getLogicalRelationExpressionAccess().getLogicalRelationExpressionLeftOperandAction_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__LogicalRelationExpression__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalRelationExpression__Group_1__1__Impl
	rule__LogicalRelationExpression__Group_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalRelationExpression__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalRelationExpressionAccess().getOperatorAssignment_1_1()); }
(rule__LogicalRelationExpression__OperatorAssignment_1_1)
{ after(grammarAccess.getLogicalRelationExpressionAccess().getOperatorAssignment_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__LogicalRelationExpression__Group_1__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__LogicalRelationExpression__Group_1__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalRelationExpression__Group_1__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalRelationExpressionAccess().getRightOperandAssignment_1_2()); }
(rule__LogicalRelationExpression__RightOperandAssignment_1_2)
{ after(grammarAccess.getLogicalRelationExpressionAccess().getRightOperandAssignment_1_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__ShiftExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ShiftExpression__Group__0__Impl
	rule__ShiftExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ShiftExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getShiftExpressionAccess().getNumericalAddSubtractExpressionParserRuleCall_0()); }
	ruleNumericalAddSubtractExpression
{ after(grammarAccess.getShiftExpressionAccess().getNumericalAddSubtractExpressionParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ShiftExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ShiftExpression__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ShiftExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getShiftExpressionAccess().getGroup_1()); }
(rule__ShiftExpression__Group_1__0)*
{ after(grammarAccess.getShiftExpressionAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__ShiftExpression__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ShiftExpression__Group_1__0__Impl
	rule__ShiftExpression__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ShiftExpression__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getShiftExpressionAccess().getShiftExpressionLeftOperandAction_1_0()); }
(

)
{ after(grammarAccess.getShiftExpressionAccess().getShiftExpressionLeftOperandAction_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ShiftExpression__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ShiftExpression__Group_1__1__Impl
	rule__ShiftExpression__Group_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__ShiftExpression__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getShiftExpressionAccess().getOperatorAssignment_1_1()); }
(rule__ShiftExpression__OperatorAssignment_1_1)
{ after(grammarAccess.getShiftExpressionAccess().getOperatorAssignment_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ShiftExpression__Group_1__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ShiftExpression__Group_1__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ShiftExpression__Group_1__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getShiftExpressionAccess().getRightOperandAssignment_1_2()); }
(rule__ShiftExpression__RightOperandAssignment_1_2)
{ after(grammarAccess.getShiftExpressionAccess().getRightOperandAssignment_1_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__NumericalAddSubtractExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__NumericalAddSubtractExpression__Group__0__Impl
	rule__NumericalAddSubtractExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalAddSubtractExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalAddSubtractExpressionAccess().getNumericalMultiplyDivideExpressionParserRuleCall_0()); }
	ruleNumericalMultiplyDivideExpression
{ after(grammarAccess.getNumericalAddSubtractExpressionAccess().getNumericalMultiplyDivideExpressionParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__NumericalAddSubtractExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__NumericalAddSubtractExpression__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalAddSubtractExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalAddSubtractExpressionAccess().getGroup_1()); }
(rule__NumericalAddSubtractExpression__Group_1__0)*
{ after(grammarAccess.getNumericalAddSubtractExpressionAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__NumericalAddSubtractExpression__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__NumericalAddSubtractExpression__Group_1__0__Impl
	rule__NumericalAddSubtractExpression__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalAddSubtractExpression__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalAddSubtractExpressionAccess().getNumericalAddSubtractExpressionLeftOperandAction_1_0()); }
(

)
{ after(grammarAccess.getNumericalAddSubtractExpressionAccess().getNumericalAddSubtractExpressionLeftOperandAction_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__NumericalAddSubtractExpression__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__NumericalAddSubtractExpression__Group_1__1__Impl
	rule__NumericalAddSubtractExpression__Group_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalAddSubtractExpression__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalAddSubtractExpressionAccess().getOperatorAssignment_1_1()); }
(rule__NumericalAddSubtractExpression__OperatorAssignment_1_1)
{ after(grammarAccess.getNumericalAddSubtractExpressionAccess().getOperatorAssignment_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__NumericalAddSubtractExpression__Group_1__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__NumericalAddSubtractExpression__Group_1__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalAddSubtractExpression__Group_1__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalAddSubtractExpressionAccess().getRightOperandAssignment_1_2()); }
(rule__NumericalAddSubtractExpression__RightOperandAssignment_1_2)
{ after(grammarAccess.getNumericalAddSubtractExpressionAccess().getRightOperandAssignment_1_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__NumericalMultiplyDivideExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__NumericalMultiplyDivideExpression__Group__0__Impl
	rule__NumericalMultiplyDivideExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalMultiplyDivideExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getNumericalUnaryExpressionParserRuleCall_0()); }
	ruleNumericalUnaryExpression
{ after(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getNumericalUnaryExpressionParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__NumericalMultiplyDivideExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__NumericalMultiplyDivideExpression__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalMultiplyDivideExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getGroup_1()); }
(rule__NumericalMultiplyDivideExpression__Group_1__0)*
{ after(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__NumericalMultiplyDivideExpression__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__NumericalMultiplyDivideExpression__Group_1__0__Impl
	rule__NumericalMultiplyDivideExpression__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalMultiplyDivideExpression__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getNumericalMultiplyDivideExpressionLeftOperandAction_1_0()); }
(

)
{ after(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getNumericalMultiplyDivideExpressionLeftOperandAction_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__NumericalMultiplyDivideExpression__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__NumericalMultiplyDivideExpression__Group_1__1__Impl
	rule__NumericalMultiplyDivideExpression__Group_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalMultiplyDivideExpression__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getOperatorAssignment_1_1()); }
(rule__NumericalMultiplyDivideExpression__OperatorAssignment_1_1)
{ after(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getOperatorAssignment_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__NumericalMultiplyDivideExpression__Group_1__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__NumericalMultiplyDivideExpression__Group_1__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalMultiplyDivideExpression__Group_1__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getRightOperandAssignment_1_2()); }
(rule__NumericalMultiplyDivideExpression__RightOperandAssignment_1_2)
{ after(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getRightOperandAssignment_1_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__NumericalUnaryExpression__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__NumericalUnaryExpression__Group_1__0__Impl
	rule__NumericalUnaryExpression__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalUnaryExpression__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalUnaryExpressionAccess().getNumericalUnaryExpressionAction_1_0()); }
(

)
{ after(grammarAccess.getNumericalUnaryExpressionAccess().getNumericalUnaryExpressionAction_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__NumericalUnaryExpression__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__NumericalUnaryExpression__Group_1__1__Impl
	rule__NumericalUnaryExpression__Group_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalUnaryExpression__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalUnaryExpressionAccess().getOperatorAssignment_1_1()); }
(rule__NumericalUnaryExpression__OperatorAssignment_1_1)
{ after(grammarAccess.getNumericalUnaryExpressionAccess().getOperatorAssignment_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__NumericalUnaryExpression__Group_1__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__NumericalUnaryExpression__Group_1__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalUnaryExpression__Group_1__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalUnaryExpressionAccess().getOperandAssignment_1_2()); }
(rule__NumericalUnaryExpression__OperandAssignment_1_2)
{ after(grammarAccess.getNumericalUnaryExpressionAccess().getOperandAssignment_1_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__PrimitiveValueExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__PrimitiveValueExpression__Group__0__Impl
	rule__PrimitiveValueExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PrimitiveValueExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getPrimitiveValueExpressionAccess().getPrimitiveValueExpressionAction_0()); }
(

)
{ after(grammarAccess.getPrimitiveValueExpressionAccess().getPrimitiveValueExpressionAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__PrimitiveValueExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__PrimitiveValueExpression__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PrimitiveValueExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getPrimitiveValueExpressionAccess().getValueAssignment_1()); }
(rule__PrimitiveValueExpression__ValueAssignment_1)
{ after(grammarAccess.getPrimitiveValueExpressionAccess().getValueAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__FeatureCall__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureCall__Group__0__Impl
	rule__FeatureCall__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getElementReferenceExpressionParserRuleCall_0()); }
	ruleElementReferenceExpression
{ after(grammarAccess.getFeatureCallAccess().getElementReferenceExpressionParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FeatureCall__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureCall__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getGroup_1()); }
(rule__FeatureCall__Group_1__0)*
{ after(grammarAccess.getFeatureCallAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__FeatureCall__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureCall__Group_1__0__Impl
	rule__FeatureCall__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getFeatureCallOwnerAction_1_0()); }
(

)
{ after(grammarAccess.getFeatureCallAccess().getFeatureCallOwnerAction_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FeatureCall__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureCall__Group_1__1__Impl
	rule__FeatureCall__Group_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getFullStopKeyword_1_1()); }

	'.' 

{ after(grammarAccess.getFeatureCallAccess().getFullStopKeyword_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FeatureCall__Group_1__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureCall__Group_1__2__Impl
	rule__FeatureCall__Group_1__3
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__Group_1__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getFeatureAssignment_1_2()); }
(rule__FeatureCall__FeatureAssignment_1_2)
{ after(grammarAccess.getFeatureCallAccess().getFeatureAssignment_1_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FeatureCall__Group_1__3
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureCall__Group_1__3__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__Group_1__3__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getGroup_1_3()); }
(rule__FeatureCall__Group_1_3__0)?
{ after(grammarAccess.getFeatureCallAccess().getGroup_1_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}










rule__FeatureCall__Group_1_3__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureCall__Group_1_3__0__Impl
	rule__FeatureCall__Group_1_3__1
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__Group_1_3__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getOperationCallAssignment_1_3_0()); }
(rule__FeatureCall__OperationCallAssignment_1_3_0)
{ after(grammarAccess.getFeatureCallAccess().getOperationCallAssignment_1_3_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FeatureCall__Group_1_3__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureCall__Group_1_3__1__Impl
	rule__FeatureCall__Group_1_3__2
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__Group_1_3__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getGroup_1_3_1()); }
(rule__FeatureCall__Group_1_3_1__0)?
{ after(grammarAccess.getFeatureCallAccess().getGroup_1_3_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FeatureCall__Group_1_3__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureCall__Group_1_3__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__Group_1_3__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getRightParenthesisKeyword_1_3_2()); }

	')' 

{ after(grammarAccess.getFeatureCallAccess().getRightParenthesisKeyword_1_3_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__FeatureCall__Group_1_3_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureCall__Group_1_3_1__0__Impl
	rule__FeatureCall__Group_1_3_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__Group_1_3_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getArgsAssignment_1_3_1_0()); }
(rule__FeatureCall__ArgsAssignment_1_3_1_0)
{ after(grammarAccess.getFeatureCallAccess().getArgsAssignment_1_3_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FeatureCall__Group_1_3_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureCall__Group_1_3_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__Group_1_3_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getGroup_1_3_1_1()); }
(rule__FeatureCall__Group_1_3_1_1__0)*
{ after(grammarAccess.getFeatureCallAccess().getGroup_1_3_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__FeatureCall__Group_1_3_1_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureCall__Group_1_3_1_1__0__Impl
	rule__FeatureCall__Group_1_3_1_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__Group_1_3_1_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getCommaKeyword_1_3_1_1_0()); }

	',' 

{ after(grammarAccess.getFeatureCallAccess().getCommaKeyword_1_3_1_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FeatureCall__Group_1_3_1_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureCall__Group_1_3_1_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__Group_1_3_1_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getArgsAssignment_1_3_1_1_1()); }
(rule__FeatureCall__ArgsAssignment_1_3_1_1_1)
{ after(grammarAccess.getFeatureCallAccess().getArgsAssignment_1_3_1_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__ElementReferenceExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ElementReferenceExpression__Group__0__Impl
	rule__ElementReferenceExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ElementReferenceExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getElementReferenceExpressionAction_0()); }
(

)
{ after(grammarAccess.getElementReferenceExpressionAccess().getElementReferenceExpressionAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ElementReferenceExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ElementReferenceExpression__Group__1__Impl
	rule__ElementReferenceExpression__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__ElementReferenceExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getReferenceAssignment_1()); }
(rule__ElementReferenceExpression__ReferenceAssignment_1)
{ after(grammarAccess.getElementReferenceExpressionAccess().getReferenceAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ElementReferenceExpression__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ElementReferenceExpression__Group__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ElementReferenceExpression__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getGroup_2()); }
(rule__ElementReferenceExpression__Group_2__0)?
{ after(grammarAccess.getElementReferenceExpressionAccess().getGroup_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__ElementReferenceExpression__Group_2__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ElementReferenceExpression__Group_2__0__Impl
	rule__ElementReferenceExpression__Group_2__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ElementReferenceExpression__Group_2__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getOperationCallAssignment_2_0()); }
(rule__ElementReferenceExpression__OperationCallAssignment_2_0)
{ after(grammarAccess.getElementReferenceExpressionAccess().getOperationCallAssignment_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ElementReferenceExpression__Group_2__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ElementReferenceExpression__Group_2__1__Impl
	rule__ElementReferenceExpression__Group_2__2
;
finally {
	restoreStackSize(stackSize);
}

rule__ElementReferenceExpression__Group_2__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getGroup_2_1()); }
(rule__ElementReferenceExpression__Group_2_1__0)?
{ after(grammarAccess.getElementReferenceExpressionAccess().getGroup_2_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ElementReferenceExpression__Group_2__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ElementReferenceExpression__Group_2__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ElementReferenceExpression__Group_2__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getRightParenthesisKeyword_2_2()); }

	')' 

{ after(grammarAccess.getElementReferenceExpressionAccess().getRightParenthesisKeyword_2_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}








rule__ElementReferenceExpression__Group_2_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ElementReferenceExpression__Group_2_1__0__Impl
	rule__ElementReferenceExpression__Group_2_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ElementReferenceExpression__Group_2_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getArgsAssignment_2_1_0()); }
(rule__ElementReferenceExpression__ArgsAssignment_2_1_0)
{ after(grammarAccess.getElementReferenceExpressionAccess().getArgsAssignment_2_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ElementReferenceExpression__Group_2_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ElementReferenceExpression__Group_2_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ElementReferenceExpression__Group_2_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getGroup_2_1_1()); }
(rule__ElementReferenceExpression__Group_2_1_1__0)*
{ after(grammarAccess.getElementReferenceExpressionAccess().getGroup_2_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__ElementReferenceExpression__Group_2_1_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ElementReferenceExpression__Group_2_1_1__0__Impl
	rule__ElementReferenceExpression__Group_2_1_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ElementReferenceExpression__Group_2_1_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getCommaKeyword_2_1_1_0()); }

	',' 

{ after(grammarAccess.getElementReferenceExpressionAccess().getCommaKeyword_2_1_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ElementReferenceExpression__Group_2_1_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ElementReferenceExpression__Group_2_1_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ElementReferenceExpression__Group_2_1_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getArgsAssignment_2_1_1_1()); }
(rule__ElementReferenceExpression__ArgsAssignment_2_1_1_1)
{ after(grammarAccess.getElementReferenceExpressionAccess().getArgsAssignment_2_1_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__ParenthesizedExpression__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ParenthesizedExpression__Group__0__Impl
	rule__ParenthesizedExpression__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ParenthesizedExpression__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getParenthesizedExpressionAccess().getParenthesizedExpressionAction_0()); }
(

)
{ after(grammarAccess.getParenthesizedExpressionAccess().getParenthesizedExpressionAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ParenthesizedExpression__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ParenthesizedExpression__Group__1__Impl
	rule__ParenthesizedExpression__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__ParenthesizedExpression__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getParenthesizedExpressionAccess().getLeftParenthesisKeyword_1()); }

	'(' 

{ after(grammarAccess.getParenthesizedExpressionAccess().getLeftParenthesisKeyword_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ParenthesizedExpression__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ParenthesizedExpression__Group__2__Impl
	rule__ParenthesizedExpression__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__ParenthesizedExpression__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getParenthesizedExpressionAccess().getExpressionAssignment_2()); }
(rule__ParenthesizedExpression__ExpressionAssignment_2)
{ after(grammarAccess.getParenthesizedExpressionAccess().getExpressionAssignment_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__ParenthesizedExpression__Group__3
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__ParenthesizedExpression__Group__3__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ParenthesizedExpression__Group__3__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getParenthesizedExpressionAccess().getRightParenthesisKeyword_3()); }

	')' 

{ after(grammarAccess.getParenthesizedExpressionAccess().getRightParenthesisKeyword_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}










rule__BoolLiteral__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BoolLiteral__Group__0__Impl
	rule__BoolLiteral__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__BoolLiteral__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBoolLiteralAccess().getBoolLiteralAction_0()); }
(

)
{ after(grammarAccess.getBoolLiteralAccess().getBoolLiteralAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__BoolLiteral__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BoolLiteral__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__BoolLiteral__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBoolLiteralAccess().getValueAssignment_1()); }
(rule__BoolLiteral__ValueAssignment_1)
{ after(grammarAccess.getBoolLiteralAccess().getValueAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__IntLiteral__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__IntLiteral__Group__0__Impl
	rule__IntLiteral__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__IntLiteral__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getIntLiteralAccess().getIntLiteralAction_0()); }
(

)
{ after(grammarAccess.getIntLiteralAccess().getIntLiteralAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__IntLiteral__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__IntLiteral__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__IntLiteral__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getIntLiteralAccess().getValueAssignment_1()); }
(rule__IntLiteral__ValueAssignment_1)
{ after(grammarAccess.getIntLiteralAccess().getValueAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__RealLiteral__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__RealLiteral__Group__0__Impl
	rule__RealLiteral__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__RealLiteral__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getRealLiteralAccess().getRealLiteralAction_0()); }
(

)
{ after(grammarAccess.getRealLiteralAccess().getRealLiteralAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__RealLiteral__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__RealLiteral__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__RealLiteral__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getRealLiteralAccess().getValueAssignment_1()); }
(rule__RealLiteral__ValueAssignment_1)
{ after(grammarAccess.getRealLiteralAccess().getValueAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__HexLiteral__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__HexLiteral__Group__0__Impl
	rule__HexLiteral__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__HexLiteral__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getHexLiteralAccess().getHexLiteralAction_0()); }
(

)
{ after(grammarAccess.getHexLiteralAccess().getHexLiteralAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__HexLiteral__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__HexLiteral__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__HexLiteral__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getHexLiteralAccess().getValueAssignment_1()); }
(rule__HexLiteral__ValueAssignment_1)
{ after(grammarAccess.getHexLiteralAccess().getValueAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__StringLiteral__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__StringLiteral__Group__0__Impl
	rule__StringLiteral__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__StringLiteral__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStringLiteralAccess().getStringLiteralAction_0()); }
(

)
{ after(grammarAccess.getStringLiteralAccess().getStringLiteralAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__StringLiteral__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__StringLiteral__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__StringLiteral__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStringLiteralAccess().getValueAssignment_1()); }
(rule__StringLiteral__ValueAssignment_1)
{ after(grammarAccess.getStringLiteralAccess().getValueAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}







rule__VariableDefinition__UnorderedGroup_2
    @init {
    	int stackSize = keepStackSize();
		getUnorderedGroupHelper().enter(grammarAccess.getVariableDefinitionAccess().getUnorderedGroup_2());
    }
:
	rule__VariableDefinition__UnorderedGroup_2__0
	?
	
;
finally {
	getUnorderedGroupHelper().leave(grammarAccess.getVariableDefinitionAccess().getUnorderedGroup_2());
	restoreStackSize(stackSize);
}


rule__VariableDefinition__UnorderedGroup_2__Impl
	@init {
		int stackSize = keepStackSize();
		boolean selected = false;
    }
:
		(

			( 
				{getUnorderedGroupHelper().canSelect(grammarAccess.getVariableDefinitionAccess().getUnorderedGroup_2(), 0)}?=>(
					{ 
	 				  getUnorderedGroupHelper().select(grammarAccess.getVariableDefinitionAccess().getUnorderedGroup_2(), 0);
	 				}
	 				{
	 				  selected = true;
	 				}
					(
					
						{ before(grammarAccess.getVariableDefinitionAccess().getReadonlyAssignment_2_0()); }
						(rule__VariableDefinition__ReadonlyAssignment_2_0)
						{ after(grammarAccess.getVariableDefinitionAccess().getReadonlyAssignment_2_0()); }
					)
 				)
			)  |

			( 
				{getUnorderedGroupHelper().canSelect(grammarAccess.getVariableDefinitionAccess().getUnorderedGroup_2(), 1)}?=>(
					{ 
	 				  getUnorderedGroupHelper().select(grammarAccess.getVariableDefinitionAccess().getUnorderedGroup_2(), 1);
	 				}
	 				{
	 				  selected = true;
	 				}
					(
					
						{ before(grammarAccess.getVariableDefinitionAccess().getExternalAssignment_2_1()); }
						(rule__VariableDefinition__ExternalAssignment_2_1)
						{ after(grammarAccess.getVariableDefinitionAccess().getExternalAssignment_2_1()); }
					)
 				)
			)  

		)
;
finally {
	if (selected)
		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getVariableDefinitionAccess().getUnorderedGroup_2());
	restoreStackSize(stackSize);
}


rule__VariableDefinition__UnorderedGroup_2__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__VariableDefinition__UnorderedGroup_2__Impl
	rule__VariableDefinition__UnorderedGroup_2__1?
;
finally {
	restoreStackSize(stackSize);
}


rule__VariableDefinition__UnorderedGroup_2__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__VariableDefinition__UnorderedGroup_2__Impl
;
finally {
	restoreStackSize(stackSize);
}






rule__Root__RootsAssignment
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getRootAccess().getRootsDefRootParserRuleCall_0()); }
	ruleDefRoot{ after(grammarAccess.getRootAccess().getRootsDefRootParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__StatechartRoot__DefAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStatechartRootAccess().getDefStatechartSpecificationParserRuleCall_1_0()); }
	ruleStatechartSpecification{ after(grammarAccess.getStatechartRootAccess().getDefStatechartSpecificationParserRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__StateRoot__DefAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStateRootAccess().getDefStateSpecificationParserRuleCall_1_0()); }
	ruleStateSpecification{ after(grammarAccess.getStateRootAccess().getDefStateSpecificationParserRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__TransitionRoot__DefAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTransitionRootAccess().getDefTransitionSpecificationParserRuleCall_1_0()); }
	ruleTransitionSpecification{ after(grammarAccess.getTransitionRootAccess().getDefTransitionSpecificationParserRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__StatechartSpecification__NamespaceAssignment_1_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStatechartSpecificationAccess().getNamespaceFQNParserRuleCall_1_1_0()); }
	ruleFQN{ after(grammarAccess.getStatechartSpecificationAccess().getNamespaceFQNParserRuleCall_1_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__StatechartSpecification__ScopesAssignment_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStatechartSpecificationAccess().getScopesStatechartScopeParserRuleCall_2_0()); }
	ruleStatechartScope{ after(grammarAccess.getStatechartSpecificationAccess().getScopesStatechartScopeParserRuleCall_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__StateSpecification__ScopeAssignment
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStateSpecificationAccess().getScopeStateScopeParserRuleCall_0()); }
	ruleStateScope{ after(grammarAccess.getStateSpecificationAccess().getScopeStateScopeParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__TransitionSpecification__ReactionAssignment
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTransitionSpecificationAccess().getReactionTransitionReactionParserRuleCall_0()); }
	ruleTransitionReaction{ after(grammarAccess.getTransitionSpecificationAccess().getReactionTransitionReactionParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__StateScope__DeclarationsAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStateScopeAccess().getDeclarationsLocalReactionParserRuleCall_1_0()); }
	ruleLocalReaction{ after(grammarAccess.getStateScopeAccess().getDeclarationsLocalReactionParserRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__InterfaceScope__NameAssignment_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getInterfaceScopeAccess().getNameXIDParserRuleCall_2_0()); }
	ruleXID{ after(grammarAccess.getInterfaceScopeAccess().getNameXIDParserRuleCall_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__InterfaceScope__DeclarationsAssignment_4
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getInterfaceScopeAccess().getDeclarationsAlternatives_4_0()); }
(rule__InterfaceScope__DeclarationsAlternatives_4_0)
{ after(grammarAccess.getInterfaceScopeAccess().getDeclarationsAlternatives_4_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__InternalScope__DeclarationsAssignment_3
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getInternalScopeAccess().getDeclarationsAlternatives_3_0()); }
(rule__InternalScope__DeclarationsAlternatives_3_0)
{ after(grammarAccess.getInternalScopeAccess().getDeclarationsAlternatives_3_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__EventDefinition__DirectionAssignment_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventDefinitionAccess().getDirectionDirectionEnumRuleCall_0_0()); }
	ruleDirection{ after(grammarAccess.getEventDefinitionAccess().getDirectionDirectionEnumRuleCall_0_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__EventDefinition__NameAssignment_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventDefinitionAccess().getNameXIDParserRuleCall_2_0()); }
	ruleXID{ after(grammarAccess.getEventDefinitionAccess().getNameXIDParserRuleCall_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__EventDefinition__TypeAssignment_3_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventDefinitionAccess().getTypeTypeCrossReference_3_1_0()); }
(
{ before(grammarAccess.getEventDefinitionAccess().getTypeTypeFQNParserRuleCall_3_1_0_1()); }
	ruleFQN{ after(grammarAccess.getEventDefinitionAccess().getTypeTypeFQNParserRuleCall_3_1_0_1()); }
)
{ after(grammarAccess.getEventDefinitionAccess().getTypeTypeCrossReference_3_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__VariableDefinition__ReadonlyAssignment_2_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getVariableDefinitionAccess().getReadonlyReadonlyKeyword_2_0_0()); }
(
{ before(grammarAccess.getVariableDefinitionAccess().getReadonlyReadonlyKeyword_2_0_0()); }

	'readonly' 

{ after(grammarAccess.getVariableDefinitionAccess().getReadonlyReadonlyKeyword_2_0_0()); }
)

{ after(grammarAccess.getVariableDefinitionAccess().getReadonlyReadonlyKeyword_2_0_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__VariableDefinition__ExternalAssignment_2_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getVariableDefinitionAccess().getExternalExternalKeyword_2_1_0()); }
(
{ before(grammarAccess.getVariableDefinitionAccess().getExternalExternalKeyword_2_1_0()); }

	'external' 

{ after(grammarAccess.getVariableDefinitionAccess().getExternalExternalKeyword_2_1_0()); }
)

{ after(grammarAccess.getVariableDefinitionAccess().getExternalExternalKeyword_2_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__VariableDefinition__NameAssignment_3
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getVariableDefinitionAccess().getNameXIDParserRuleCall_3_0()); }
	ruleXID{ after(grammarAccess.getVariableDefinitionAccess().getNameXIDParserRuleCall_3_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__VariableDefinition__TypeAssignment_5
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getVariableDefinitionAccess().getTypeTypeCrossReference_5_0()); }
(
{ before(grammarAccess.getVariableDefinitionAccess().getTypeTypeFQNParserRuleCall_5_0_1()); }
	ruleFQN{ after(grammarAccess.getVariableDefinitionAccess().getTypeTypeFQNParserRuleCall_5_0_1()); }
)
{ after(grammarAccess.getVariableDefinitionAccess().getTypeTypeCrossReference_5_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__VariableDefinition__InitialValueAssignment_6_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getVariableDefinitionAccess().getInitialValueExpressionParserRuleCall_6_1_0()); }
	ruleExpression{ after(grammarAccess.getVariableDefinitionAccess().getInitialValueExpressionParserRuleCall_6_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__NameAssignment_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getNameXIDParserRuleCall_2_0()); }
	ruleXID{ after(grammarAccess.getOperationDefinitionAccess().getNameXIDParserRuleCall_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__ParametersAssignment_4_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getParametersParameterParserRuleCall_4_0_0()); }
	ruleParameter{ after(grammarAccess.getOperationDefinitionAccess().getParametersParameterParserRuleCall_4_0_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__ParametersAssignment_4_1_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getParametersParameterParserRuleCall_4_1_1_0()); }
	ruleParameter{ after(grammarAccess.getOperationDefinitionAccess().getParametersParameterParserRuleCall_4_1_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__OperationDefinition__TypeAssignment_6_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getOperationDefinitionAccess().getTypeTypeCrossReference_6_1_0()); }
(
{ before(grammarAccess.getOperationDefinitionAccess().getTypeTypeFQNParserRuleCall_6_1_0_1()); }
	ruleFQN{ after(grammarAccess.getOperationDefinitionAccess().getTypeTypeFQNParserRuleCall_6_1_0_1()); }
)
{ after(grammarAccess.getOperationDefinitionAccess().getTypeTypeCrossReference_6_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__Parameter__NameAssignment_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getParameterAccess().getNameXIDParserRuleCall_0_0()); }
	ruleXID{ after(grammarAccess.getParameterAccess().getNameXIDParserRuleCall_0_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__Parameter__TypeAssignment_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getParameterAccess().getTypeTypeCrossReference_2_0()); }
(
{ before(grammarAccess.getParameterAccess().getTypeTypeFQNParserRuleCall_2_0_1()); }
	ruleFQN{ after(grammarAccess.getParameterAccess().getTypeTypeFQNParserRuleCall_2_0_1()); }
)
{ after(grammarAccess.getParameterAccess().getTypeTypeCrossReference_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__LocalReaction__TriggerAssignment_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLocalReactionAccess().getTriggerReactionTriggerParserRuleCall_0_0()); }
	ruleReactionTrigger{ after(grammarAccess.getLocalReactionAccess().getTriggerReactionTriggerParserRuleCall_0_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__LocalReaction__EffectAssignment_1_0_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLocalReactionAccess().getEffectReactionEffectParserRuleCall_1_0_1_0()); }
	ruleReactionEffect{ after(grammarAccess.getLocalReactionAccess().getEffectReactionEffectParserRuleCall_1_0_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__TransitionReaction__TriggerAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTransitionReactionAccess().getTriggerStextTriggerParserRuleCall_1_0()); }
	ruleStextTrigger{ after(grammarAccess.getTransitionReactionAccess().getTriggerStextTriggerParserRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__TransitionReaction__EffectAssignment_2_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTransitionReactionAccess().getEffectReactionEffectParserRuleCall_2_1_0()); }
	ruleReactionEffect{ after(grammarAccess.getTransitionReactionAccess().getEffectReactionEffectParserRuleCall_2_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__TransitionReaction__PropertiesAssignment_3_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTransitionReactionAccess().getPropertiesTransitionPropertyParserRuleCall_3_1_0()); }
	ruleTransitionProperty{ after(grammarAccess.getTransitionReactionAccess().getPropertiesTransitionPropertyParserRuleCall_3_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__TriggersAssignment_1_0_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getTriggersEventSpecParserRuleCall_1_0_0_0()); }
	ruleEventSpec{ after(grammarAccess.getReactionTriggerAccess().getTriggersEventSpecParserRuleCall_1_0_0_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__TriggersAssignment_1_0_1_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getTriggersEventSpecParserRuleCall_1_0_1_1_0()); }
	ruleEventSpec{ after(grammarAccess.getReactionTriggerAccess().getTriggersEventSpecParserRuleCall_1_0_1_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__GuardAssignment_1_0_2_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getGuardGuardParserRuleCall_1_0_2_1_0()); }
	ruleGuard{ after(grammarAccess.getReactionTriggerAccess().getGuardGuardParserRuleCall_1_0_2_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionTrigger__GuardAssignment_1_1_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionTriggerAccess().getGuardGuardParserRuleCall_1_1_1_0()); }
	ruleGuard{ after(grammarAccess.getReactionTriggerAccess().getGuardGuardParserRuleCall_1_1_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__Guard__ExpressionAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGuardAccess().getExpressionExpressionParserRuleCall_1_0()); }
	ruleExpression{ after(grammarAccess.getGuardAccess().getExpressionExpressionParserRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionEffect__ActionsAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionEffectAccess().getActionsAlternatives_1_0()); }
(rule__ReactionEffect__ActionsAlternatives_1_0)
{ after(grammarAccess.getReactionEffectAccess().getActionsAlternatives_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ReactionEffect__ActionsAssignment_2_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getReactionEffectAccess().getActionsAlternatives_2_1_0()); }
(rule__ReactionEffect__ActionsAlternatives_2_1_0)
{ after(grammarAccess.getReactionEffectAccess().getActionsAlternatives_2_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__EntryPointSpec__EntrypointAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEntryPointSpecAccess().getEntrypointIDTerminalRuleCall_1_0()); }
	RULE_ID{ after(grammarAccess.getEntryPointSpecAccess().getEntrypointIDTerminalRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ExitPointSpec__ExitpointAssignment_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getExitPointSpecAccess().getExitpointIDTerminalRuleCall_0_0()); }
	RULE_ID{ after(grammarAccess.getExitPointSpecAccess().getExitpointIDTerminalRuleCall_0_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__RegularEventSpec__EventAssignment
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getRegularEventSpecAccess().getEventFeatureCallParserRuleCall_0()); }
	ruleFeatureCall{ after(grammarAccess.getRegularEventSpecAccess().getEventFeatureCallParserRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__TimeEventSpec__TypeAssignment_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTimeEventSpecAccess().getTypeTimeEventTypeEnumRuleCall_0_0()); }
	ruleTimeEventType{ after(grammarAccess.getTimeEventSpecAccess().getTypeTimeEventTypeEnumRuleCall_0_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__TimeEventSpec__ValueAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTimeEventSpecAccess().getValueConditionalExpressionParserRuleCall_1_0()); }
	ruleConditionalExpression{ after(grammarAccess.getTimeEventSpecAccess().getValueConditionalExpressionParserRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__TimeEventSpec__UnitAssignment_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getTimeEventSpecAccess().getUnitTimeUnitEnumRuleCall_2_0()); }
	ruleTimeUnit{ after(grammarAccess.getTimeEventSpecAccess().getUnitTimeUnitEnumRuleCall_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__EventRaisingExpression__EventAssignment_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventRaisingExpressionAccess().getEventFeatureCallParserRuleCall_2_0()); }
	ruleFeatureCall{ after(grammarAccess.getEventRaisingExpressionAccess().getEventFeatureCallParserRuleCall_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__EventRaisingExpression__ValueAssignment_3_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventRaisingExpressionAccess().getValueExpressionParserRuleCall_3_1_0()); }
	ruleExpression{ after(grammarAccess.getEventRaisingExpressionAccess().getValueExpressionParserRuleCall_3_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__EventValueReferenceExpression__ValueAssignment_3
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getEventValueReferenceExpressionAccess().getValueFeatureCallParserRuleCall_3_0()); }
	ruleFeatureCall{ after(grammarAccess.getEventValueReferenceExpressionAccess().getValueFeatureCallParserRuleCall_3_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ActiveStateReferenceExpression__ValueAssignment_3
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getActiveStateReferenceExpressionAccess().getValueStateCrossReference_3_0()); }
(
{ before(grammarAccess.getActiveStateReferenceExpressionAccess().getValueStateFQNParserRuleCall_3_0_1()); }
	ruleFQN{ after(grammarAccess.getActiveStateReferenceExpressionAccess().getValueStateFQNParserRuleCall_3_0_1()); }
)
{ after(grammarAccess.getActiveStateReferenceExpressionAccess().getValueStateCrossReference_3_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__AssignmentExpression__OperatorAssignment_1_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getAssignmentExpressionAccess().getOperatorAssignmentOperatorEnumRuleCall_1_1_0()); }
	ruleAssignmentOperator{ after(grammarAccess.getAssignmentExpressionAccess().getOperatorAssignmentOperatorEnumRuleCall_1_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__AssignmentExpression__ExpressionAssignment_1_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getAssignmentExpressionAccess().getExpressionConditionalExpressionParserRuleCall_1_2_0()); }
	ruleConditionalExpression{ after(grammarAccess.getAssignmentExpressionAccess().getExpressionConditionalExpressionParserRuleCall_1_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ConditionalExpression__TrueCaseAssignment_1_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getConditionalExpressionAccess().getTrueCaseLogicalOrExpressionParserRuleCall_1_2_0()); }
	ruleLogicalOrExpression{ after(grammarAccess.getConditionalExpressionAccess().getTrueCaseLogicalOrExpressionParserRuleCall_1_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ConditionalExpression__FalseCaseAssignment_1_4
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getConditionalExpressionAccess().getFalseCaseLogicalOrExpressionParserRuleCall_1_4_0()); }
	ruleLogicalOrExpression{ after(grammarAccess.getConditionalExpressionAccess().getFalseCaseLogicalOrExpressionParserRuleCall_1_4_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalOrExpression__RightOperandAssignment_1_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalOrExpressionAccess().getRightOperandLogicalAndExpressionParserRuleCall_1_2_0()); }
	ruleLogicalAndExpression{ after(grammarAccess.getLogicalOrExpressionAccess().getRightOperandLogicalAndExpressionParserRuleCall_1_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalAndExpression__RightOperandAssignment_1_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalAndExpressionAccess().getRightOperandLogicalNotExpressionParserRuleCall_1_2_0()); }
	ruleLogicalNotExpression{ after(grammarAccess.getLogicalAndExpressionAccess().getRightOperandLogicalNotExpressionParserRuleCall_1_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalNotExpression__OperandAssignment_1_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalNotExpressionAccess().getOperandBitwiseXorExpressionParserRuleCall_1_2_0()); }
	ruleBitwiseXorExpression{ after(grammarAccess.getLogicalNotExpressionAccess().getOperandBitwiseXorExpressionParserRuleCall_1_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseXorExpression__RightOperandAssignment_1_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseXorExpressionAccess().getRightOperandBitwiseOrExpressionParserRuleCall_1_2_0()); }
	ruleBitwiseOrExpression{ after(grammarAccess.getBitwiseXorExpressionAccess().getRightOperandBitwiseOrExpressionParserRuleCall_1_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseOrExpression__RightOperandAssignment_1_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseOrExpressionAccess().getRightOperandBitwiseAndExpressionParserRuleCall_1_2_0()); }
	ruleBitwiseAndExpression{ after(grammarAccess.getBitwiseOrExpressionAccess().getRightOperandBitwiseAndExpressionParserRuleCall_1_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__BitwiseAndExpression__RightOperandAssignment_1_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBitwiseAndExpressionAccess().getRightOperandLogicalRelationExpressionParserRuleCall_1_2_0()); }
	ruleLogicalRelationExpression{ after(grammarAccess.getBitwiseAndExpressionAccess().getRightOperandLogicalRelationExpressionParserRuleCall_1_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalRelationExpression__OperatorAssignment_1_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalRelationExpressionAccess().getOperatorRelationalOperatorEnumRuleCall_1_1_0()); }
	ruleRelationalOperator{ after(grammarAccess.getLogicalRelationExpressionAccess().getOperatorRelationalOperatorEnumRuleCall_1_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__LogicalRelationExpression__RightOperandAssignment_1_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLogicalRelationExpressionAccess().getRightOperandShiftExpressionParserRuleCall_1_2_0()); }
	ruleShiftExpression{ after(grammarAccess.getLogicalRelationExpressionAccess().getRightOperandShiftExpressionParserRuleCall_1_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ShiftExpression__OperatorAssignment_1_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getShiftExpressionAccess().getOperatorShiftOperatorEnumRuleCall_1_1_0()); }
	ruleShiftOperator{ after(grammarAccess.getShiftExpressionAccess().getOperatorShiftOperatorEnumRuleCall_1_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ShiftExpression__RightOperandAssignment_1_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getShiftExpressionAccess().getRightOperandNumericalAddSubtractExpressionParserRuleCall_1_2_0()); }
	ruleNumericalAddSubtractExpression{ after(grammarAccess.getShiftExpressionAccess().getRightOperandNumericalAddSubtractExpressionParserRuleCall_1_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalAddSubtractExpression__OperatorAssignment_1_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalAddSubtractExpressionAccess().getOperatorAdditiveOperatorEnumRuleCall_1_1_0()); }
	ruleAdditiveOperator{ after(grammarAccess.getNumericalAddSubtractExpressionAccess().getOperatorAdditiveOperatorEnumRuleCall_1_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalAddSubtractExpression__RightOperandAssignment_1_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalAddSubtractExpressionAccess().getRightOperandNumericalMultiplyDivideExpressionParserRuleCall_1_2_0()); }
	ruleNumericalMultiplyDivideExpression{ after(grammarAccess.getNumericalAddSubtractExpressionAccess().getRightOperandNumericalMultiplyDivideExpressionParserRuleCall_1_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalMultiplyDivideExpression__OperatorAssignment_1_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getOperatorMultiplicativeOperatorEnumRuleCall_1_1_0()); }
	ruleMultiplicativeOperator{ after(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getOperatorMultiplicativeOperatorEnumRuleCall_1_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalMultiplyDivideExpression__RightOperandAssignment_1_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getRightOperandNumericalUnaryExpressionParserRuleCall_1_2_0()); }
	ruleNumericalUnaryExpression{ after(grammarAccess.getNumericalMultiplyDivideExpressionAccess().getRightOperandNumericalUnaryExpressionParserRuleCall_1_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalUnaryExpression__OperatorAssignment_1_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalUnaryExpressionAccess().getOperatorUnaryOperatorEnumRuleCall_1_1_0()); }
	ruleUnaryOperator{ after(grammarAccess.getNumericalUnaryExpressionAccess().getOperatorUnaryOperatorEnumRuleCall_1_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__NumericalUnaryExpression__OperandAssignment_1_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getNumericalUnaryExpressionAccess().getOperandPrimaryExpressionParserRuleCall_1_2_0()); }
	rulePrimaryExpression{ after(grammarAccess.getNumericalUnaryExpressionAccess().getOperandPrimaryExpressionParserRuleCall_1_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__PrimitiveValueExpression__ValueAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getPrimitiveValueExpressionAccess().getValueLiteralParserRuleCall_1_0()); }
	ruleLiteral{ after(grammarAccess.getPrimitiveValueExpressionAccess().getValueLiteralParserRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__FeatureAssignment_1_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getFeatureEObjectCrossReference_1_2_0()); }
(
{ before(grammarAccess.getFeatureCallAccess().getFeatureEObjectIDTerminalRuleCall_1_2_0_1()); }
	RULE_ID{ after(grammarAccess.getFeatureCallAccess().getFeatureEObjectIDTerminalRuleCall_1_2_0_1()); }
)
{ after(grammarAccess.getFeatureCallAccess().getFeatureEObjectCrossReference_1_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__OperationCallAssignment_1_3_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getOperationCallLeftParenthesisKeyword_1_3_0_0()); }
(
{ before(grammarAccess.getFeatureCallAccess().getOperationCallLeftParenthesisKeyword_1_3_0_0()); }

	'(' 

{ after(grammarAccess.getFeatureCallAccess().getOperationCallLeftParenthesisKeyword_1_3_0_0()); }
)

{ after(grammarAccess.getFeatureCallAccess().getOperationCallLeftParenthesisKeyword_1_3_0_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__ArgsAssignment_1_3_1_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getArgsExpressionParserRuleCall_1_3_1_0_0()); }
	ruleExpression{ after(grammarAccess.getFeatureCallAccess().getArgsExpressionParserRuleCall_1_3_1_0_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureCall__ArgsAssignment_1_3_1_1_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureCallAccess().getArgsExpressionParserRuleCall_1_3_1_1_1_0()); }
	ruleExpression{ after(grammarAccess.getFeatureCallAccess().getArgsExpressionParserRuleCall_1_3_1_1_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ElementReferenceExpression__ReferenceAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getReferenceEObjectCrossReference_1_0()); }
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getReferenceEObjectIDTerminalRuleCall_1_0_1()); }
	RULE_ID{ after(grammarAccess.getElementReferenceExpressionAccess().getReferenceEObjectIDTerminalRuleCall_1_0_1()); }
)
{ after(grammarAccess.getElementReferenceExpressionAccess().getReferenceEObjectCrossReference_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ElementReferenceExpression__OperationCallAssignment_2_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getOperationCallLeftParenthesisKeyword_2_0_0()); }
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getOperationCallLeftParenthesisKeyword_2_0_0()); }

	'(' 

{ after(grammarAccess.getElementReferenceExpressionAccess().getOperationCallLeftParenthesisKeyword_2_0_0()); }
)

{ after(grammarAccess.getElementReferenceExpressionAccess().getOperationCallLeftParenthesisKeyword_2_0_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ElementReferenceExpression__ArgsAssignment_2_1_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getArgsExpressionParserRuleCall_2_1_0_0()); }
	ruleExpression{ after(grammarAccess.getElementReferenceExpressionAccess().getArgsExpressionParserRuleCall_2_1_0_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ElementReferenceExpression__ArgsAssignment_2_1_1_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getElementReferenceExpressionAccess().getArgsExpressionParserRuleCall_2_1_1_1_0()); }
	ruleExpression{ after(grammarAccess.getElementReferenceExpressionAccess().getArgsExpressionParserRuleCall_2_1_1_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__ParenthesizedExpression__ExpressionAssignment_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getParenthesizedExpressionAccess().getExpressionExpressionParserRuleCall_2_0()); }
	ruleExpression{ after(grammarAccess.getParenthesizedExpressionAccess().getExpressionExpressionParserRuleCall_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__BoolLiteral__ValueAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBoolLiteralAccess().getValueBOOLTerminalRuleCall_1_0()); }
	RULE_BOOL{ after(grammarAccess.getBoolLiteralAccess().getValueBOOLTerminalRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__IntLiteral__ValueAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getIntLiteralAccess().getValueINTTerminalRuleCall_1_0()); }
	RULE_INT{ after(grammarAccess.getIntLiteralAccess().getValueINTTerminalRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__RealLiteral__ValueAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getRealLiteralAccess().getValueFLOATTerminalRuleCall_1_0()); }
	RULE_FLOAT{ after(grammarAccess.getRealLiteralAccess().getValueFLOATTerminalRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__HexLiteral__ValueAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getHexLiteralAccess().getValueHEXTerminalRuleCall_1_0()); }
	RULE_HEX{ after(grammarAccess.getHexLiteralAccess().getValueHEXTerminalRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__StringLiteral__ValueAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); }
	RULE_STRING{ after(grammarAccess.getStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


RULE_BOOL : ('true'|'false'|'yes'|'no');

RULE_HEX : '0' ('x'|'X') ('0'..'9'|'a'..'f'|'A'..'F')+;

RULE_FLOAT : RULE_INT '.' RULE_INT ('e' ('-'|'+') RULE_INT)? ('f'|'F'|'d'|'D')?;

RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;

RULE_INT : ('0'..'9')+;

RULE_STRING : ('"' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'"')))* '"'|'\'' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'\'')))* '\'');

RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';

RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;

RULE_WS : (' '|'\t'|'\r'|'\n')+;

RULE_ANY_OTHER : .;


