/*
 * generated by Xtext 2.26.0
 */
grammar InternalRDL;

options {
	superClass=AbstractInternalContentAssistParser;
	backtrack=true;
}

@lexer::header {
package com.minres.rdl.ide.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.ide.editor.contentassist.antlr.internal.Lexer;
}

@parser::header {
package com.minres.rdl.ide.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.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.DFA;
import com.minres.rdl.services.RDLGrammarAccess;

}
@parser::members {
	private RDLGrammarAccess grammarAccess;

	public void setGrammarAccess(RDLGrammarAccess 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().getAlternatives()); }
		(rule__Root__Alternatives)*
		{ after(grammarAccess.getRootAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleInclude
entryRuleInclude
:
{ before(grammarAccess.getIncludeRule()); }
	 ruleInclude
{ after(grammarAccess.getIncludeRule()); } 
	 EOF 
;

// Rule Include
ruleInclude 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getIncludeAccess().getGroup()); }
		(rule__Include__Group__0)
		{ after(grammarAccess.getIncludeAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRulePropertyDefinition
entryRulePropertyDefinition
:
{ before(grammarAccess.getPropertyDefinitionRule()); }
	 rulePropertyDefinition
{ after(grammarAccess.getPropertyDefinitionRule()); } 
	 EOF 
;

// Rule PropertyDefinition
rulePropertyDefinition 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getGroup()); }
		(rule__PropertyDefinition__Group__0)
		{ after(grammarAccess.getPropertyDefinitionAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRulePropertyDefault
entryRulePropertyDefault
:
{ before(grammarAccess.getPropertyDefaultRule()); }
	 rulePropertyDefault
{ after(grammarAccess.getPropertyDefaultRule()); } 
	 EOF 
;

// Rule PropertyDefault
rulePropertyDefault 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getPropertyDefaultAccess().getGroup()); }
		(rule__PropertyDefault__Group__0)
		{ after(grammarAccess.getPropertyDefaultAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRulePropertyUsage
entryRulePropertyUsage
:
{ before(grammarAccess.getPropertyUsageRule()); }
	 rulePropertyUsage
{ after(grammarAccess.getPropertyUsageRule()); } 
	 EOF 
;

// Rule PropertyUsage
rulePropertyUsage 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getPropertyUsageAccess().getGroup()); }
		(rule__PropertyUsage__Group__0)
		{ after(grammarAccess.getPropertyUsageAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleComponentDefinition
entryRuleComponentDefinition
:
{ before(grammarAccess.getComponentDefinitionRule()); }
	 ruleComponentDefinition
{ after(grammarAccess.getComponentDefinitionRule()); } 
	 EOF 
;

// Rule ComponentDefinition
ruleComponentDefinition 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getComponentDefinitionAccess().getGroup()); }
		(rule__ComponentDefinition__Group__0)
		{ after(grammarAccess.getComponentDefinitionAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleInstantiation
entryRuleInstantiation
:
{ before(grammarAccess.getInstantiationRule()); }
	 ruleInstantiation
{ after(grammarAccess.getInstantiationRule()); } 
	 EOF 
;

// Rule Instantiation
ruleInstantiation 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getInstantiationAccess().getGroup()); }
		(rule__Instantiation__Group__0)
		{ after(grammarAccess.getInstantiationAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleComponentInstance
entryRuleComponentInstance
:
{ before(grammarAccess.getComponentInstanceRule()); }
	 ruleComponentInstance
{ after(grammarAccess.getComponentInstanceRule()); } 
	 EOF 
;

// Rule ComponentInstance
ruleComponentInstance 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getComponentInstanceAccess().getGroup()); }
		(rule__ComponentInstance__Group__0)
		{ after(grammarAccess.getComponentInstanceAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleRange
entryRuleRange
:
{ before(grammarAccess.getRangeRule()); }
	 ruleRange
{ after(grammarAccess.getRangeRule()); } 
	 EOF 
;

// Rule Range
ruleRange 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getRangeAccess().getGroup()); }
		(rule__Range__Group__0)
		{ after(grammarAccess.getRangeAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRulePropertyAssignment
entryRulePropertyAssignment
:
{ before(grammarAccess.getPropertyAssignmentRule()); }
	 rulePropertyAssignment
{ after(grammarAccess.getPropertyAssignmentRule()); } 
	 EOF 
;

// Rule PropertyAssignment
rulePropertyAssignment 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getPropertyAssignmentAccess().getAlternatives()); }
		(rule__PropertyAssignment__Alternatives)
		{ after(grammarAccess.getPropertyAssignmentAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleDefaultProperyAssignment
entryRuleDefaultProperyAssignment
:
{ before(grammarAccess.getDefaultProperyAssignmentRule()); }
	 ruleDefaultProperyAssignment
{ after(grammarAccess.getDefaultProperyAssignmentRule()); } 
	 EOF 
;

// Rule DefaultProperyAssignment
ruleDefaultProperyAssignment 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getDefaultProperyAssignmentAccess().getGroup()); }
		(rule__DefaultProperyAssignment__Group__0)
		{ after(grammarAccess.getDefaultProperyAssignmentAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleExplicitPropertyAssignment
entryRuleExplicitPropertyAssignment
:
{ before(grammarAccess.getExplicitPropertyAssignmentRule()); }
	 ruleExplicitPropertyAssignment
{ after(grammarAccess.getExplicitPropertyAssignmentRule()); } 
	 EOF 
;

// Rule ExplicitPropertyAssignment
ruleExplicitPropertyAssignment 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getExplicitPropertyAssignmentAccess().getAlternatives()); }
		(rule__ExplicitPropertyAssignment__Alternatives)
		{ after(grammarAccess.getExplicitPropertyAssignmentAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRulePostPropertyAssignment
entryRulePostPropertyAssignment
:
{ before(grammarAccess.getPostPropertyAssignmentRule()); }
	 rulePostPropertyAssignment
{ after(grammarAccess.getPostPropertyAssignmentRule()); } 
	 EOF 
;

// Rule PostPropertyAssignment
rulePostPropertyAssignment 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getPostPropertyAssignmentAccess().getGroup()); }
		(rule__PostPropertyAssignment__Group__0)
		{ after(grammarAccess.getPostPropertyAssignmentAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleInstancePropertyRef
entryRuleInstancePropertyRef
:
{ before(grammarAccess.getInstancePropertyRefRule()); }
	 ruleInstancePropertyRef
{ after(grammarAccess.getInstancePropertyRefRule()); } 
	 EOF 
;

// Rule InstancePropertyRef
ruleInstancePropertyRef 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getInstancePropertyRefAccess().getGroup()); }
		(rule__InstancePropertyRef__Group__0)
		{ after(grammarAccess.getInstancePropertyRefAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleInstanceRef
entryRuleInstanceRef
:
{ before(grammarAccess.getInstanceRefRule()); }
	 ruleInstanceRef
{ after(grammarAccess.getInstanceRefRule()); } 
	 EOF 
;

// Rule InstanceRef
ruleInstanceRef 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getInstanceRefAccess().getGroup()); }
		(rule__InstanceRef__Group__0)
		{ after(grammarAccess.getInstanceRefAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleHierInstanceRef
entryRuleHierInstanceRef
:
{ before(grammarAccess.getHierInstanceRefRule()); }
	 ruleHierInstanceRef
{ after(grammarAccess.getHierInstanceRefRule()); } 
	 EOF 
;

// Rule HierInstanceRef
ruleHierInstanceRef 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getHierInstanceRefAccess().getGroup()); }
		(rule__HierInstanceRef__Group__0)
		{ after(grammarAccess.getHierInstanceRefAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRulePropertyAssignmentRhs
entryRulePropertyAssignmentRhs
:
{ before(grammarAccess.getPropertyAssignmentRhsRule()); }
	 rulePropertyAssignmentRhs
{ after(grammarAccess.getPropertyAssignmentRhsRule()); } 
	 EOF 
;

// Rule PropertyAssignmentRhs
rulePropertyAssignmentRhs 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getPropertyAssignmentRhsAccess().getAlternatives()); }
		(rule__PropertyAssignmentRhs__Alternatives)
		{ after(grammarAccess.getPropertyAssignmentRhsAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleConcat
entryRuleConcat
:
{ before(grammarAccess.getConcatRule()); }
	 ruleConcat
{ after(grammarAccess.getConcatRule()); } 
	 EOF 
;

// Rule Concat
ruleConcat 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getConcatAccess().getGroup()); }
		(rule__Concat__Group__0)
		{ after(grammarAccess.getConcatAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleConcatElem
entryRuleConcatElem
:
{ before(grammarAccess.getConcatElemRule()); }
	 ruleConcatElem
{ after(grammarAccess.getConcatElemRule()); } 
	 EOF 
;

// Rule ConcatElem
ruleConcatElem 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getConcatElemAccess().getAlternatives()); }
		(rule__ConcatElem__Alternatives)
		{ after(grammarAccess.getConcatElemAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRulePropertyRvalueConstant
entryRulePropertyRvalueConstant
:
{ before(grammarAccess.getPropertyRvalueConstantRule()); }
	 rulePropertyRvalueConstant
{ after(grammarAccess.getPropertyRvalueConstantRule()); } 
	 EOF 
;

// Rule PropertyRvalueConstant
rulePropertyRvalueConstant 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getPropertyRvalueConstantAccess().getAlternatives()); }
		(rule__PropertyRvalueConstant__Alternatives)
		{ after(grammarAccess.getPropertyRvalueConstantAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleEnumDefinition
entryRuleEnumDefinition
:
{ before(grammarAccess.getEnumDefinitionRule()); }
	 ruleEnumDefinition
{ after(grammarAccess.getEnumDefinitionRule()); } 
	 EOF 
;

// Rule EnumDefinition
ruleEnumDefinition 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getEnumDefinitionAccess().getGroup()); }
		(rule__EnumDefinition__Group__0)
		{ after(grammarAccess.getEnumDefinitionAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleEnumBody
entryRuleEnumBody
:
{ before(grammarAccess.getEnumBodyRule()); }
	 ruleEnumBody
{ after(grammarAccess.getEnumBodyRule()); } 
	 EOF 
;

// Rule EnumBody
ruleEnumBody 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getEnumBodyAccess().getGroup()); }
		(rule__EnumBody__Group__0)
		{ after(grammarAccess.getEnumBodyAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleEnumEntry
entryRuleEnumEntry
:
{ before(grammarAccess.getEnumEntryRule()); }
	 ruleEnumEntry
{ after(grammarAccess.getEnumEntryRule()); } 
	 EOF 
;

// Rule EnumEntry
ruleEnumEntry 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getEnumEntryAccess().getGroup()); }
		(rule__EnumEntry__Group__0)
		{ after(grammarAccess.getEnumEntryAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleEnumProperty
entryRuleEnumProperty
:
{ before(grammarAccess.getEnumPropertyRule()); }
	 ruleEnumProperty
{ after(grammarAccess.getEnumPropertyRule()); } 
	 EOF 
;

// Rule EnumProperty
ruleEnumProperty 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getEnumPropertyAccess().getGroup()); }
		(rule__EnumProperty__Group__0)
		{ after(grammarAccess.getEnumPropertyAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleEnumInstanceType
entryRuleEnumInstanceType
:
{ before(grammarAccess.getEnumInstanceTypeRule()); }
	 ruleEnumInstanceType
{ after(grammarAccess.getEnumInstanceTypeRule()); } 
	 EOF 
;

// Rule EnumInstanceType
ruleEnumInstanceType 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getEnumInstanceTypeAccess().getAlternatives()); }
		(rule__EnumInstanceType__Alternatives)
		{ after(grammarAccess.getEnumInstanceTypeAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Rule PropertyTypeName
rulePropertyTypeName
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyTypeNameAccess().getAlternatives()); }
		(rule__PropertyTypeName__Alternatives)
		{ after(grammarAccess.getPropertyTypeNameAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Rule PropertyComponent
rulePropertyComponent
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyComponentAccess().getAlternatives()); }
		(rule__PropertyComponent__Alternatives)
		{ after(grammarAccess.getPropertyComponentAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Rule ComponentDefinitionType
ruleComponentDefinitionType
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getComponentDefinitionTypeAccess().getAlternatives()); }
		(rule__ComponentDefinitionType__Alternatives)
		{ after(grammarAccess.getComponentDefinitionTypeAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Rule Property
ruleProperty
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyAccess().getAlternatives()); }
		(rule__Property__Alternatives)
		{ after(grammarAccess.getPropertyAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Rule RValueConstant
ruleRValueConstant
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getRValueConstantAccess().getAlternatives()); }
		(rule__RValueConstant__Alternatives)
		{ after(grammarAccess.getRValueConstantAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Rule PropertyModifier
rulePropertyModifier
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyModifierAccess().getAlternatives()); }
		(rule__PropertyModifier__Alternatives)
		{ after(grammarAccess.getPropertyModifierAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getRootAccess().getIncludesAssignment_0()); }
		(rule__Root__IncludesAssignment_0)
		{ after(grammarAccess.getRootAccess().getIncludesAssignment_0()); }
	)
	|
	(
		{ before(grammarAccess.getRootAccess().getGroup_1()); }
		(rule__Root__Group_1__0)
		{ after(grammarAccess.getRootAccess().getGroup_1()); }
	)
	|
	(
		{ before(grammarAccess.getRootAccess().getGroup_2()); }
		(rule__Root__Group_2__0)
		{ after(grammarAccess.getRootAccess().getGroup_2()); }
	)
	|
	(
		{ before(grammarAccess.getRootAccess().getGroup_3()); }
		(rule__Root__Group_3__0)
		{ after(grammarAccess.getRootAccess().getGroup_3()); }
	)
	|
	(
		{ before(grammarAccess.getRootAccess().getGroup_4()); }
		(rule__Root__Group_4__0)
		{ after(grammarAccess.getRootAccess().getGroup_4()); }
	)
	|
	(
		{ before(grammarAccess.getRootAccess().getGroup_5()); }
		(rule__Root__Group_5__0)
		{ after(grammarAccess.getRootAccess().getGroup_5()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Alternatives_3
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getGroup_3_0()); }
		(rule__PropertyDefinition__Group_3_0__0)
		{ after(grammarAccess.getPropertyDefinitionAccess().getGroup_3_0()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getGroup_3_1()); }
		(rule__PropertyDefinition__Group_3_1__0)
		{ after(grammarAccess.getPropertyDefinitionAccess().getGroup_3_1()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getGroup_3_2()); }
		(rule__PropertyDefinition__Group_3_2__0)
		{ after(grammarAccess.getPropertyDefinitionAccess().getGroup_3_2()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Alternatives_3_0_4
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getGroup_3_0_4_0()); }
		(rule__PropertyDefinition__Group_3_0_4_0__0)
		{ after(grammarAccess.getPropertyDefinitionAccess().getGroup_3_0_4_0()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getGroup_3_0_4_1()); }
		(rule__PropertyDefinition__Group_3_0_4_1__0)
		{ after(grammarAccess.getPropertyDefinitionAccess().getGroup_3_0_4_1()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Alternatives_3_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getGroup_3_1_1_0()); }
		(rule__PropertyDefinition__Group_3_1_1_0__0)
		{ after(grammarAccess.getPropertyDefinitionAccess().getGroup_3_1_1_0()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getGroup_3_1_1_1()); }
		(rule__PropertyDefinition__Group_3_1_1_1__0)
		{ after(grammarAccess.getPropertyDefinitionAccess().getGroup_3_1_1_1()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Alternatives_3_2_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getGroup_3_2_1_0()); }
		(rule__PropertyDefinition__Group_3_2_1_0__0)
		{ after(grammarAccess.getPropertyDefinitionAccess().getGroup_3_2_1_0()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getGroup_3_2_1_1()); }
		(rule__PropertyDefinition__Group_3_2_1_1__0)
		{ after(grammarAccess.getPropertyDefinitionAccess().getGroup_3_2_1_1()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefault__Alternatives_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefaultAccess().getStringAssignment_2_0()); }
		(rule__PropertyDefault__StringAssignment_2_0)
		{ after(grammarAccess.getPropertyDefaultAccess().getStringAssignment_2_0()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyDefaultAccess().getValueAssignment_2_1()); }
		(rule__PropertyDefault__ValueAssignment_2_1)
		{ after(grammarAccess.getPropertyDefaultAccess().getValueAssignment_2_1()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyDefaultAccess().getStringAssignment_2_2()); }
		(rule__PropertyDefault__StringAssignment_2_2)
		{ after(grammarAccess.getPropertyDefaultAccess().getStringAssignment_2_2()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyDefaultAccess().getStringAssignment_2_3()); }
		(rule__PropertyDefault__StringAssignment_2_3)
		{ after(grammarAccess.getPropertyDefaultAccess().getStringAssignment_2_3()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Alternatives_3
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getComponentDefinitionAccess().getGroup_3_0()); }
		(rule__ComponentDefinition__Group_3_0__0)
		{ after(grammarAccess.getComponentDefinitionAccess().getGroup_3_0()); }
	)
	|
	(
		{ before(grammarAccess.getComponentDefinitionAccess().getGroup_3_1()); }
		(rule__ComponentDefinition__Group_3_1__0)
		{ after(grammarAccess.getComponentDefinitionAccess().getGroup_3_1()); }
	)
	|
	(
		{ before(grammarAccess.getComponentDefinitionAccess().getGroup_3_2()); }
		(rule__ComponentDefinition__Group_3_2__0)
		{ after(grammarAccess.getComponentDefinitionAccess().getGroup_3_2()); }
	)
	|
	(
		{ before(grammarAccess.getComponentDefinitionAccess().getGroup_3_3()); }
		(rule__ComponentDefinition__Group_3_3__0)
		{ after(grammarAccess.getComponentDefinitionAccess().getGroup_3_3()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Alternatives_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getInstantiationAccess().getGroup_0_0()); }
		(rule__Instantiation__Group_0_0__0)
		{ after(grammarAccess.getInstantiationAccess().getGroup_0_0()); }
	)
	|
	(
		{ before(grammarAccess.getInstantiationAccess().getGroup_0_1()); }
		(rule__Instantiation__Group_0_1__0)
		{ after(grammarAccess.getInstantiationAccess().getGroup_0_1()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Range__Alternatives_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getRangeAccess().getGroup_1_0()); }
		(rule__Range__Group_1_0__0)
		{ after(grammarAccess.getRangeAccess().getGroup_1_0()); }
	)
	|
	(
		{ before(grammarAccess.getRangeAccess().getSizeAssignment_1_1()); }
		(rule__Range__SizeAssignment_1_1)
		{ after(grammarAccess.getRangeAccess().getSizeAssignment_1_1()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyAssignment__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyAssignmentAccess().getDefaultProperyAssignmentParserRuleCall_0()); }
		ruleDefaultProperyAssignment
		{ after(grammarAccess.getPropertyAssignmentAccess().getDefaultProperyAssignmentParserRuleCall_0()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAssignmentAccess().getExplicitPropertyAssignmentParserRuleCall_1()); }
		ruleExplicitPropertyAssignment
		{ after(grammarAccess.getPropertyAssignmentAccess().getExplicitPropertyAssignmentParserRuleCall_1()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAssignmentAccess().getPostPropertyAssignmentParserRuleCall_2()); }
		rulePostPropertyAssignment
		{ after(grammarAccess.getPropertyAssignmentAccess().getPostPropertyAssignmentParserRuleCall_2()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ExplicitPropertyAssignment__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getExplicitPropertyAssignmentAccess().getGroup_0()); }
		(rule__ExplicitPropertyAssignment__Group_0__0)
		{ after(grammarAccess.getExplicitPropertyAssignmentAccess().getGroup_0()); }
	)
	|
	(
		{ before(grammarAccess.getExplicitPropertyAssignmentAccess().getGroup_1()); }
		(rule__ExplicitPropertyAssignment__Group_1__0)
		{ after(grammarAccess.getExplicitPropertyAssignmentAccess().getGroup_1()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__Alternatives_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPostPropertyAssignmentAccess().getGroup_0_0()); }
		(rule__PostPropertyAssignment__Group_0_0__0)
		{ after(grammarAccess.getPostPropertyAssignmentAccess().getGroup_0_0()); }
	)
	|
	(
		{ before(grammarAccess.getPostPropertyAssignmentAccess().getPropertyAssignment_0_1()); }
		(rule__PostPropertyAssignment__PropertyAssignment_0_1)
		{ after(grammarAccess.getPostPropertyAssignmentAccess().getPropertyAssignment_0_1()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__Alternatives_0_0_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPostPropertyAssignmentAccess().getPropertyEnumAssignment_0_0_2_0()); }
		(rule__PostPropertyAssignment__PropertyEnumAssignment_0_0_2_0)
		{ after(grammarAccess.getPostPropertyAssignmentAccess().getPropertyEnumAssignment_0_0_2_0()); }
	)
	|
	(
		{ before(grammarAccess.getPostPropertyAssignmentAccess().getPropertyAssignment_0_0_2_1()); }
		(rule__PostPropertyAssignment__PropertyAssignment_0_0_2_1)
		{ after(grammarAccess.getPostPropertyAssignmentAccess().getPropertyAssignment_0_0_2_1()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__InstancePropertyRef__Alternatives_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getInstancePropertyRefAccess().getPropertyEnumAssignment_1_1_0()); }
		(rule__InstancePropertyRef__PropertyEnumAssignment_1_1_0)
		{ after(grammarAccess.getInstancePropertyRefAccess().getPropertyEnumAssignment_1_1_0()); }
	)
	|
	(
		{ before(grammarAccess.getInstancePropertyRefAccess().getPropertyAssignment_1_1_1()); }
		(rule__InstancePropertyRef__PropertyAssignment_1_1_1)
		{ after(grammarAccess.getInstancePropertyRefAccess().getPropertyAssignment_1_1_1()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyAssignmentRhs__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyAssignmentRhsAccess().getValueAssignment_0()); }
		(rule__PropertyAssignmentRhs__ValueAssignment_0)
		{ after(grammarAccess.getPropertyAssignmentRhsAccess().getValueAssignment_0()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAssignmentRhsAccess().getInstPropRefAssignment_1()); }
		(rule__PropertyAssignmentRhs__InstPropRefAssignment_1)
		{ after(grammarAccess.getPropertyAssignmentRhsAccess().getInstPropRefAssignment_1()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAssignmentRhsAccess().getGroup_2()); }
		(rule__PropertyAssignmentRhs__Group_2__0)
		{ after(grammarAccess.getPropertyAssignmentRhsAccess().getGroup_2()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAssignmentRhsAccess().getElementsAssignment_3()); }
		(rule__PropertyAssignmentRhs__ElementsAssignment_3)
		{ after(grammarAccess.getPropertyAssignmentRhsAccess().getElementsAssignment_3()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ConcatElem__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getConcatElemAccess().getInstPropRefAssignment_0()); }
		(rule__ConcatElem__InstPropRefAssignment_0)
		{ after(grammarAccess.getConcatElemAccess().getInstPropRefAssignment_0()); }
	)
	|
	(
		{ before(grammarAccess.getConcatElemAccess().getValueAssignment_1()); }
		(rule__ConcatElem__ValueAssignment_1)
		{ after(grammarAccess.getConcatElemAccess().getValueAssignment_1()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyRvalueConstant__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyRvalueConstantAccess().getValAssignment_0()); }
		(rule__PropertyRvalueConstant__ValAssignment_0)
		{ after(grammarAccess.getPropertyRvalueConstantAccess().getValAssignment_0()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyRvalueConstantAccess().getNumAssignment_1()); }
		(rule__PropertyRvalueConstant__NumAssignment_1)
		{ after(grammarAccess.getPropertyRvalueConstantAccess().getNumAssignment_1()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyRvalueConstantAccess().getStrAssignment_2()); }
		(rule__PropertyRvalueConstant__StrAssignment_2)
		{ after(grammarAccess.getPropertyRvalueConstantAccess().getStrAssignment_2()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__Alternatives_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getEnumPropertyAccess().getGroup_0_0()); }
		(rule__EnumProperty__Group_0_0__0)
		{ after(grammarAccess.getEnumPropertyAccess().getGroup_0_0()); }
	)
	|
	(
		{ before(grammarAccess.getEnumPropertyAccess().getGroup_0_1()); }
		(rule__EnumProperty__Group_0_1__0)
		{ after(grammarAccess.getEnumPropertyAccess().getGroup_0_1()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumInstanceType__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getEnumInstanceTypeAccess().getEXTERNALAssignment_0()); }
		(rule__EnumInstanceType__EXTERNALAssignment_0)
		{ after(grammarAccess.getEnumInstanceTypeAccess().getEXTERNALAssignment_0()); }
	)
	|
	(
		{ before(grammarAccess.getEnumInstanceTypeAccess().getINTERNALAssignment_1()); }
		(rule__EnumInstanceType__INTERNALAssignment_1)
		{ after(grammarAccess.getEnumInstanceTypeAccess().getINTERNALAssignment_1()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyTypeName__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyTypeNameAccess().getSTRINGEnumLiteralDeclaration_0()); }
		('string')
		{ after(grammarAccess.getPropertyTypeNameAccess().getSTRINGEnumLiteralDeclaration_0()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyTypeNameAccess().getNUMBEREnumLiteralDeclaration_1()); }
		('number')
		{ after(grammarAccess.getPropertyTypeNameAccess().getNUMBEREnumLiteralDeclaration_1()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyTypeNameAccess().getBOOLEANEnumLiteralDeclaration_2()); }
		('boolean')
		{ after(grammarAccess.getPropertyTypeNameAccess().getBOOLEANEnumLiteralDeclaration_2()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyTypeNameAccess().getADDRMAPEnumLiteralDeclaration_3()); }
		('addrmap')
		{ after(grammarAccess.getPropertyTypeNameAccess().getADDRMAPEnumLiteralDeclaration_3()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyTypeNameAccess().getREGEnumLiteralDeclaration_4()); }
		('reg')
		{ after(grammarAccess.getPropertyTypeNameAccess().getREGEnumLiteralDeclaration_4()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyTypeNameAccess().getREGFILEEnumLiteralDeclaration_5()); }
		('regfile')
		{ after(grammarAccess.getPropertyTypeNameAccess().getREGFILEEnumLiteralDeclaration_5()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyTypeNameAccess().getFIELDEnumLiteralDeclaration_6()); }
		('field')
		{ after(grammarAccess.getPropertyTypeNameAccess().getFIELDEnumLiteralDeclaration_6()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyTypeNameAccess().getREFEnumLiteralDeclaration_7()); }
		('ref')
		{ after(grammarAccess.getPropertyTypeNameAccess().getREFEnumLiteralDeclaration_7()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyComponent__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyComponentAccess().getSIGNALEnumLiteralDeclaration_0()); }
		('signal')
		{ after(grammarAccess.getPropertyComponentAccess().getSIGNALEnumLiteralDeclaration_0()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyComponentAccess().getADDRMAPEnumLiteralDeclaration_1()); }
		('addrmap')
		{ after(grammarAccess.getPropertyComponentAccess().getADDRMAPEnumLiteralDeclaration_1()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyComponentAccess().getREGEnumLiteralDeclaration_2()); }
		('reg')
		{ after(grammarAccess.getPropertyComponentAccess().getREGEnumLiteralDeclaration_2()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyComponentAccess().getREGFILEEnumLiteralDeclaration_3()); }
		('regfile')
		{ after(grammarAccess.getPropertyComponentAccess().getREGFILEEnumLiteralDeclaration_3()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyComponentAccess().getFIELDEnumLiteralDeclaration_4()); }
		('field')
		{ after(grammarAccess.getPropertyComponentAccess().getFIELDEnumLiteralDeclaration_4()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyComponentAccess().getALLEnumLiteralDeclaration_5()); }
		('all')
		{ after(grammarAccess.getPropertyComponentAccess().getALLEnumLiteralDeclaration_5()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinitionType__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getComponentDefinitionTypeAccess().getSIGNALEnumLiteralDeclaration_0()); }
		('signal')
		{ after(grammarAccess.getComponentDefinitionTypeAccess().getSIGNALEnumLiteralDeclaration_0()); }
	)
	|
	(
		{ before(grammarAccess.getComponentDefinitionTypeAccess().getADDRMAPEnumLiteralDeclaration_1()); }
		('addrmap')
		{ after(grammarAccess.getComponentDefinitionTypeAccess().getADDRMAPEnumLiteralDeclaration_1()); }
	)
	|
	(
		{ before(grammarAccess.getComponentDefinitionTypeAccess().getREGFILEEnumLiteralDeclaration_2()); }
		('regfile')
		{ after(grammarAccess.getComponentDefinitionTypeAccess().getREGFILEEnumLiteralDeclaration_2()); }
	)
	|
	(
		{ before(grammarAccess.getComponentDefinitionTypeAccess().getREGEnumLiteralDeclaration_3()); }
		('reg')
		{ after(grammarAccess.getComponentDefinitionTypeAccess().getREGEnumLiteralDeclaration_3()); }
	)
	|
	(
		{ before(grammarAccess.getComponentDefinitionTypeAccess().getFIELDEnumLiteralDeclaration_4()); }
		('field')
		{ after(grammarAccess.getComponentDefinitionTypeAccess().getFIELDEnumLiteralDeclaration_4()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Property__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyAccess().getNAMEEnumLiteralDeclaration_0()); }
		('name')
		{ after(grammarAccess.getPropertyAccess().getNAMEEnumLiteralDeclaration_0()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getDESCEnumLiteralDeclaration_1()); }
		('desc')
		{ after(grammarAccess.getPropertyAccess().getDESCEnumLiteralDeclaration_1()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getARBITEREnumLiteralDeclaration_2()); }
		('arbiter')
		{ after(grammarAccess.getPropertyAccess().getARBITEREnumLiteralDeclaration_2()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getRSETEnumLiteralDeclaration_3()); }
		('rset')
		{ after(grammarAccess.getPropertyAccess().getRSETEnumLiteralDeclaration_3()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getRCLREnumLiteralDeclaration_4()); }
		('rclr')
		{ after(grammarAccess.getPropertyAccess().getRCLREnumLiteralDeclaration_4()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getWOCLREnumLiteralDeclaration_5()); }
		('woclr')
		{ after(grammarAccess.getPropertyAccess().getWOCLREnumLiteralDeclaration_5()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getWOSETEnumLiteralDeclaration_6()); }
		('woset')
		{ after(grammarAccess.getPropertyAccess().getWOSETEnumLiteralDeclaration_6()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getWEEnumLiteralDeclaration_7()); }
		('we')
		{ after(grammarAccess.getPropertyAccess().getWEEnumLiteralDeclaration_7()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getWELEnumLiteralDeclaration_8()); }
		('wel')
		{ after(grammarAccess.getPropertyAccess().getWELEnumLiteralDeclaration_8()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getSWWEEnumLiteralDeclaration_9()); }
		('swwe')
		{ after(grammarAccess.getPropertyAccess().getSWWEEnumLiteralDeclaration_9()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getSWWELEnumLiteralDeclaration_10()); }
		('swwel')
		{ after(grammarAccess.getPropertyAccess().getSWWELEnumLiteralDeclaration_10()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getHWSETEnumLiteralDeclaration_11()); }
		('hwset')
		{ after(grammarAccess.getPropertyAccess().getHWSETEnumLiteralDeclaration_11()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getHWCLREnumLiteralDeclaration_12()); }
		('hwclr')
		{ after(grammarAccess.getPropertyAccess().getHWCLREnumLiteralDeclaration_12()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getSWMODEnumLiteralDeclaration_13()); }
		('swmod')
		{ after(grammarAccess.getPropertyAccess().getSWMODEnumLiteralDeclaration_13()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getSWACCEnumLiteralDeclaration_14()); }
		('swacc')
		{ after(grammarAccess.getPropertyAccess().getSWACCEnumLiteralDeclaration_14()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getSTICKYEnumLiteralDeclaration_15()); }
		('sticky')
		{ after(grammarAccess.getPropertyAccess().getSTICKYEnumLiteralDeclaration_15()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getSTICKYBITEnumLiteralDeclaration_16()); }
		('stickybit')
		{ after(grammarAccess.getPropertyAccess().getSTICKYBITEnumLiteralDeclaration_16()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getINTREnumLiteralDeclaration_17()); }
		('intr')
		{ after(grammarAccess.getPropertyAccess().getINTREnumLiteralDeclaration_17()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getANDEDEnumLiteralDeclaration_18()); }
		('anded')
		{ after(grammarAccess.getPropertyAccess().getANDEDEnumLiteralDeclaration_18()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getOREDEnumLiteralDeclaration_19()); }
		('ored')
		{ after(grammarAccess.getPropertyAccess().getOREDEnumLiteralDeclaration_19()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getXOREDEnumLiteralDeclaration_20()); }
		('xored')
		{ after(grammarAccess.getPropertyAccess().getXOREDEnumLiteralDeclaration_20()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getCOUNTEREnumLiteralDeclaration_21()); }
		('counter')
		{ after(grammarAccess.getPropertyAccess().getCOUNTEREnumLiteralDeclaration_21()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getOVERFLOWEnumLiteralDeclaration_22()); }
		('overflow')
		{ after(grammarAccess.getPropertyAccess().getOVERFLOWEnumLiteralDeclaration_22()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getSHAREDEXTBUSEnumLiteralDeclaration_23()); }
		('sharedextbus')
		{ after(grammarAccess.getPropertyAccess().getSHAREDEXTBUSEnumLiteralDeclaration_23()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getERREXTBUSEnumLiteralDeclaration_24()); }
		('errextbus')
		{ after(grammarAccess.getPropertyAccess().getERREXTBUSEnumLiteralDeclaration_24()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getRESETEnumLiteralDeclaration_25()); }
		('reset')
		{ after(grammarAccess.getPropertyAccess().getRESETEnumLiteralDeclaration_25()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getLITTLEENDIANEnumLiteralDeclaration_26()); }
		('littleendian')
		{ after(grammarAccess.getPropertyAccess().getLITTLEENDIANEnumLiteralDeclaration_26()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getBIGENDIANEnumLiteralDeclaration_27()); }
		('bigendian')
		{ after(grammarAccess.getPropertyAccess().getBIGENDIANEnumLiteralDeclaration_27()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getRSVDSETEnumLiteralDeclaration_28()); }
		('rsvdset')
		{ after(grammarAccess.getPropertyAccess().getRSVDSETEnumLiteralDeclaration_28()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getRSVDSETXEnumLiteralDeclaration_29()); }
		('rsvdsetX')
		{ after(grammarAccess.getPropertyAccess().getRSVDSETXEnumLiteralDeclaration_29()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getBRIDGEEnumLiteralDeclaration_30()); }
		('bridge')
		{ after(grammarAccess.getPropertyAccess().getBRIDGEEnumLiteralDeclaration_30()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getSHAREDEnumLiteralDeclaration_31()); }
		('shared')
		{ after(grammarAccess.getPropertyAccess().getSHAREDEnumLiteralDeclaration_31()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getMSB0EnumLiteralDeclaration_32()); }
		('msb0')
		{ after(grammarAccess.getPropertyAccess().getMSB0EnumLiteralDeclaration_32()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getLSB0EnumLiteralDeclaration_33()); }
		('lsb0')
		{ after(grammarAccess.getPropertyAccess().getLSB0EnumLiteralDeclaration_33()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getSYNCEnumLiteralDeclaration_34()); }
		('sync')
		{ after(grammarAccess.getPropertyAccess().getSYNCEnumLiteralDeclaration_34()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getASYNCEnumLiteralDeclaration_35()); }
		('async')
		{ after(grammarAccess.getPropertyAccess().getASYNCEnumLiteralDeclaration_35()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getCPUIF_RESETEnumLiteralDeclaration_36()); }
		('cpuif_reset')
		{ after(grammarAccess.getPropertyAccess().getCPUIF_RESETEnumLiteralDeclaration_36()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getFIELD_RESETEnumLiteralDeclaration_37()); }
		('field_reset')
		{ after(grammarAccess.getPropertyAccess().getFIELD_RESETEnumLiteralDeclaration_37()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getACTIVEHIGHEnumLiteralDeclaration_38()); }
		('activehigh')
		{ after(grammarAccess.getPropertyAccess().getACTIVEHIGHEnumLiteralDeclaration_38()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getACTIVELOWEnumLiteralDeclaration_39()); }
		('activelow')
		{ after(grammarAccess.getPropertyAccess().getACTIVELOWEnumLiteralDeclaration_39()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getSINGLEPULSEEnumLiteralDeclaration_40()); }
		('singlepulse')
		{ after(grammarAccess.getPropertyAccess().getSINGLEPULSEEnumLiteralDeclaration_40()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getUNDERFLOWEnumLiteralDeclaration_41()); }
		('underflow')
		{ after(grammarAccess.getPropertyAccess().getUNDERFLOWEnumLiteralDeclaration_41()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getINCREnumLiteralDeclaration_42()); }
		('incr')
		{ after(grammarAccess.getPropertyAccess().getINCREnumLiteralDeclaration_42()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getDECREnumLiteralDeclaration_43()); }
		('decr')
		{ after(grammarAccess.getPropertyAccess().getDECREnumLiteralDeclaration_43()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getINCRWIDTHEnumLiteralDeclaration_44()); }
		('incrwidth')
		{ after(grammarAccess.getPropertyAccess().getINCRWIDTHEnumLiteralDeclaration_44()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getDECRWIDTHEnumLiteralDeclaration_45()); }
		('decrwidth')
		{ after(grammarAccess.getPropertyAccess().getDECRWIDTHEnumLiteralDeclaration_45()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getINCRVALUEEnumLiteralDeclaration_46()); }
		('incrvalue')
		{ after(grammarAccess.getPropertyAccess().getINCRVALUEEnumLiteralDeclaration_46()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getDECRVALUEEnumLiteralDeclaration_47()); }
		('decrvalue')
		{ after(grammarAccess.getPropertyAccess().getDECRVALUEEnumLiteralDeclaration_47()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getSATURATEEnumLiteralDeclaration_48()); }
		('saturate')
		{ after(grammarAccess.getPropertyAccess().getSATURATEEnumLiteralDeclaration_48()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getDECRSATURATEEnumLiteralDeclaration_49()); }
		('decrsaturate')
		{ after(grammarAccess.getPropertyAccess().getDECRSATURATEEnumLiteralDeclaration_49()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getTHRESHOLDEnumLiteralDeclaration_50()); }
		('threshold')
		{ after(grammarAccess.getPropertyAccess().getTHRESHOLDEnumLiteralDeclaration_50()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getDECRTHRESHOLDEnumLiteralDeclaration_51()); }
		('decrthreshold')
		{ after(grammarAccess.getPropertyAccess().getDECRTHRESHOLDEnumLiteralDeclaration_51()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getDONTCOMPAREEnumLiteralDeclaration_52()); }
		('dontcompare')
		{ after(grammarAccess.getPropertyAccess().getDONTCOMPAREEnumLiteralDeclaration_52()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getDONTTESTEnumLiteralDeclaration_53()); }
		('donttest')
		{ after(grammarAccess.getPropertyAccess().getDONTTESTEnumLiteralDeclaration_53()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getINTERNALEnumLiteralDeclaration_54()); }
		('internal')
		{ after(grammarAccess.getPropertyAccess().getINTERNALEnumLiteralDeclaration_54()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getALIGNMENTEnumLiteralDeclaration_55()); }
		('alignment')
		{ after(grammarAccess.getPropertyAccess().getALIGNMENTEnumLiteralDeclaration_55()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getREGWIDTHEnumLiteralDeclaration_56()); }
		('regwidth')
		{ after(grammarAccess.getPropertyAccess().getREGWIDTHEnumLiteralDeclaration_56()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getFIELDWIDTHEnumLiteralDeclaration_57()); }
		('fieldwidth')
		{ after(grammarAccess.getPropertyAccess().getFIELDWIDTHEnumLiteralDeclaration_57()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getSIGNALWIDTHEnumLiteralDeclaration_58()); }
		('signalwidth')
		{ after(grammarAccess.getPropertyAccess().getSIGNALWIDTHEnumLiteralDeclaration_58()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getACCESSWIDTHEnumLiteralDeclaration_59()); }
		('accesswidth')
		{ after(grammarAccess.getPropertyAccess().getACCESSWIDTHEnumLiteralDeclaration_59()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getSWEnumLiteralDeclaration_60()); }
		('sw')
		{ after(grammarAccess.getPropertyAccess().getSWEnumLiteralDeclaration_60()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getHWEnumLiteralDeclaration_61()); }
		('hw')
		{ after(grammarAccess.getPropertyAccess().getHWEnumLiteralDeclaration_61()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getADDRESSINGEnumLiteralDeclaration_62()); }
		('addressing')
		{ after(grammarAccess.getPropertyAccess().getADDRESSINGEnumLiteralDeclaration_62()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getPRECEDENCEEnumLiteralDeclaration_63()); }
		('precedence')
		{ after(grammarAccess.getPropertyAccess().getPRECEDENCEEnumLiteralDeclaration_63()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getENCODEEnumLiteralDeclaration_64()); }
		('encode')
		{ after(grammarAccess.getPropertyAccess().getENCODEEnumLiteralDeclaration_64()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getRESETSIGNALEnumLiteralDeclaration_65()); }
		('resetsignal')
		{ after(grammarAccess.getPropertyAccess().getRESETSIGNALEnumLiteralDeclaration_65()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getCLOCKEnumLiteralDeclaration_66()); }
		('clock')
		{ after(grammarAccess.getPropertyAccess().getCLOCKEnumLiteralDeclaration_66()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getMASKEnumLiteralDeclaration_67()); }
		('mask')
		{ after(grammarAccess.getPropertyAccess().getMASKEnumLiteralDeclaration_67()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getENABLEEnumLiteralDeclaration_68()); }
		('enable')
		{ after(grammarAccess.getPropertyAccess().getENABLEEnumLiteralDeclaration_68()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getHWENABLEEnumLiteralDeclaration_69()); }
		('hwenable')
		{ after(grammarAccess.getPropertyAccess().getHWENABLEEnumLiteralDeclaration_69()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getHWMASKEnumLiteralDeclaration_70()); }
		('hwmask')
		{ after(grammarAccess.getPropertyAccess().getHWMASKEnumLiteralDeclaration_70()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getHALTMASKEnumLiteralDeclaration_71()); }
		('haltmask')
		{ after(grammarAccess.getPropertyAccess().getHALTMASKEnumLiteralDeclaration_71()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getHALTENABLEEnumLiteralDeclaration_72()); }
		('haltenable')
		{ after(grammarAccess.getPropertyAccess().getHALTENABLEEnumLiteralDeclaration_72()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getHALTEnumLiteralDeclaration_73()); }
		('halt')
		{ after(grammarAccess.getPropertyAccess().getHALTEnumLiteralDeclaration_73()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyAccess().getNEXTEnumLiteralDeclaration_74()); }
		('next')
		{ after(grammarAccess.getPropertyAccess().getNEXTEnumLiteralDeclaration_74()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__RValueConstant__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getRValueConstantAccess().getUNDEFINEDEnumLiteralDeclaration_0()); }
		('UNDEFINED')
		{ after(grammarAccess.getRValueConstantAccess().getUNDEFINEDEnumLiteralDeclaration_0()); }
	)
	|
	(
		{ before(grammarAccess.getRValueConstantAccess().getTRUEEnumLiteralDeclaration_1()); }
		('true')
		{ after(grammarAccess.getRValueConstantAccess().getTRUEEnumLiteralDeclaration_1()); }
	)
	|
	(
		{ before(grammarAccess.getRValueConstantAccess().getFALSEEnumLiteralDeclaration_2()); }
		('false')
		{ after(grammarAccess.getRValueConstantAccess().getFALSEEnumLiteralDeclaration_2()); }
	)
	|
	(
		{ before(grammarAccess.getRValueConstantAccess().getRWEnumLiteralDeclaration_3()); }
		('rw')
		{ after(grammarAccess.getRValueConstantAccess().getRWEnumLiteralDeclaration_3()); }
	)
	|
	(
		{ before(grammarAccess.getRValueConstantAccess().getWREnumLiteralDeclaration_4()); }
		('wr')
		{ after(grammarAccess.getRValueConstantAccess().getWREnumLiteralDeclaration_4()); }
	)
	|
	(
		{ before(grammarAccess.getRValueConstantAccess().getREnumLiteralDeclaration_5()); }
		('r')
		{ after(grammarAccess.getRValueConstantAccess().getREnumLiteralDeclaration_5()); }
	)
	|
	(
		{ before(grammarAccess.getRValueConstantAccess().getWEnumLiteralDeclaration_6()); }
		('w')
		{ after(grammarAccess.getRValueConstantAccess().getWEnumLiteralDeclaration_6()); }
	)
	|
	(
		{ before(grammarAccess.getRValueConstantAccess().getNAEnumLiteralDeclaration_7()); }
		('na')
		{ after(grammarAccess.getRValueConstantAccess().getNAEnumLiteralDeclaration_7()); }
	)
	|
	(
		{ before(grammarAccess.getRValueConstantAccess().getCOMPACTEnumLiteralDeclaration_8()); }
		('compact')
		{ after(grammarAccess.getRValueConstantAccess().getCOMPACTEnumLiteralDeclaration_8()); }
	)
	|
	(
		{ before(grammarAccess.getRValueConstantAccess().getREGALIGNEnumLiteralDeclaration_9()); }
		('regalign')
		{ after(grammarAccess.getRValueConstantAccess().getREGALIGNEnumLiteralDeclaration_9()); }
	)
	|
	(
		{ before(grammarAccess.getRValueConstantAccess().getFULLALIGNEnumLiteralDeclaration_10()); }
		('fullalign')
		{ after(grammarAccess.getRValueConstantAccess().getFULLALIGNEnumLiteralDeclaration_10()); }
	)
	|
	(
		{ before(grammarAccess.getRValueConstantAccess().getHWEnumLiteralDeclaration_11()); }
		('hw')
		{ after(grammarAccess.getRValueConstantAccess().getHWEnumLiteralDeclaration_11()); }
	)
	|
	(
		{ before(grammarAccess.getRValueConstantAccess().getSWEnumLiteralDeclaration_12()); }
		('sw')
		{ after(grammarAccess.getRValueConstantAccess().getSWEnumLiteralDeclaration_12()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyModifier__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyModifierAccess().getUNDEFINEDEnumLiteralDeclaration_0()); }
		('UNDEFINED')
		{ after(grammarAccess.getPropertyModifierAccess().getUNDEFINEDEnumLiteralDeclaration_0()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyModifierAccess().getPOSEDGEEnumLiteralDeclaration_1()); }
		('posedge')
		{ after(grammarAccess.getPropertyModifierAccess().getPOSEDGEEnumLiteralDeclaration_1()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyModifierAccess().getNEGEDGEEnumLiteralDeclaration_2()); }
		('negedge')
		{ after(grammarAccess.getPropertyModifierAccess().getNEGEDGEEnumLiteralDeclaration_2()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyModifierAccess().getBOTHEDGEEnumLiteralDeclaration_3()); }
		('bothedge')
		{ after(grammarAccess.getPropertyModifierAccess().getBOTHEDGEEnumLiteralDeclaration_3()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyModifierAccess().getLEVELEnumLiteralDeclaration_4()); }
		('level')
		{ after(grammarAccess.getPropertyModifierAccess().getLEVELEnumLiteralDeclaration_4()); }
	)
	|
	(
		{ before(grammarAccess.getPropertyModifierAccess().getNONSTICKYEnumLiteralDeclaration_5()); }
		('nonsticky')
		{ after(grammarAccess.getPropertyModifierAccess().getNONSTICKYEnumLiteralDeclaration_5()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Group_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Root__Group_1__0__Impl
	rule__Root__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Group_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getRootAccess().getComponentDefinitionsAssignment_1_0()); }
	(rule__Root__ComponentDefinitionsAssignment_1_0)
	{ after(grammarAccess.getRootAccess().getComponentDefinitionsAssignment_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Group_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Root__Group_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Group_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getRootAccess().getSemicolonKeyword_1_1()); }
	';'
	{ after(grammarAccess.getRootAccess().getSemicolonKeyword_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Root__Group_2__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Root__Group_2__0__Impl
	rule__Root__Group_2__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Group_2__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getRootAccess().getEnumDefinitionsAssignment_2_0()); }
	(rule__Root__EnumDefinitionsAssignment_2_0)
	{ after(grammarAccess.getRootAccess().getEnumDefinitionsAssignment_2_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Group_2__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Root__Group_2__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Group_2__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getRootAccess().getSemicolonKeyword_2_1()); }
	';'
	{ after(grammarAccess.getRootAccess().getSemicolonKeyword_2_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Root__Group_3__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Root__Group_3__0__Impl
	rule__Root__Group_3__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Group_3__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getRootAccess().getInstantiationsAssignment_3_0()); }
	(rule__Root__InstantiationsAssignment_3_0)
	{ after(grammarAccess.getRootAccess().getInstantiationsAssignment_3_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Group_3__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Root__Group_3__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Group_3__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getRootAccess().getSemicolonKeyword_3_1()); }
	';'
	{ after(grammarAccess.getRootAccess().getSemicolonKeyword_3_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Root__Group_4__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Root__Group_4__0__Impl
	rule__Root__Group_4__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Group_4__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getRootAccess().getPropertyAssignmentsAssignment_4_0()); }
	(rule__Root__PropertyAssignmentsAssignment_4_0)
	{ after(grammarAccess.getRootAccess().getPropertyAssignmentsAssignment_4_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Group_4__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Root__Group_4__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Group_4__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getRootAccess().getSemicolonKeyword_4_1()); }
	';'
	{ after(grammarAccess.getRootAccess().getSemicolonKeyword_4_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Root__Group_5__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Root__Group_5__0__Impl
	rule__Root__Group_5__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Group_5__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getRootAccess().getPropertyDefinitionsAssignment_5_0()); }
	(rule__Root__PropertyDefinitionsAssignment_5_0)
	{ after(grammarAccess.getRootAccess().getPropertyDefinitionsAssignment_5_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Group_5__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Root__Group_5__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__Group_5__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getRootAccess().getSemicolonKeyword_5_1()); }
	';'
	{ after(grammarAccess.getRootAccess().getSemicolonKeyword_5_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Include__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Include__Group__0__Impl
	rule__Include__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Include__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getIncludeAccess().getIncludeKeyword_0()); }
	'`include'
	{ after(grammarAccess.getIncludeAccess().getIncludeKeyword_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Include__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Include__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Include__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getIncludeAccess().getImportURIAssignment_1()); }
	(rule__Include__ImportURIAssignment_1)
	{ after(grammarAccess.getIncludeAccess().getImportURIAssignment_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PropertyDefinition__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group__0__Impl
	rule__PropertyDefinition__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getPropertyKeyword_0()); }
	'property'
	{ after(grammarAccess.getPropertyDefinitionAccess().getPropertyKeyword_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group__1__Impl
	rule__PropertyDefinition__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getNameAssignment_1()); }
	(rule__PropertyDefinition__NameAssignment_1)
	{ after(grammarAccess.getPropertyDefinitionAccess().getNameAssignment_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group__2__Impl
	rule__PropertyDefinition__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getLeftCurlyBracketKeyword_2()); }
	'{'
	{ after(grammarAccess.getPropertyDefinitionAccess().getLeftCurlyBracketKeyword_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group__3__Impl
	rule__PropertyDefinition__Group__4
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getAlternatives_3()); }
	(rule__PropertyDefinition__Alternatives_3)
	{ after(grammarAccess.getPropertyDefinitionAccess().getAlternatives_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group__4
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group__4__Impl
	rule__PropertyDefinition__Group__5
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group__4__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getRightCurlyBracketKeyword_4()); }
	'}'
	{ after(grammarAccess.getPropertyDefinitionAccess().getRightCurlyBracketKeyword_4()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group__5
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group__5__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group__5__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_5()); }
	';'
	{ after(grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_5()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PropertyDefinition__Group_3_0__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_0__0__Impl
	rule__PropertyDefinition__Group_3_0__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_0__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getTypeKeyword_3_0_0()); }
	'type'
	{ after(grammarAccess.getPropertyDefinitionAccess().getTypeKeyword_3_0_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_0__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_0__1__Impl
	rule__PropertyDefinition__Group_3_0__2
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_0__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getEqualsSignKeyword_3_0_1()); }
	'='
	{ after(grammarAccess.getPropertyDefinitionAccess().getEqualsSignKeyword_3_0_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_0__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_0__2__Impl
	rule__PropertyDefinition__Group_3_0__3
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_0__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getTypeAssignment_3_0_2()); }
	(rule__PropertyDefinition__TypeAssignment_3_0_2)
	{ after(grammarAccess.getPropertyDefinitionAccess().getTypeAssignment_3_0_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_0__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_0__3__Impl
	rule__PropertyDefinition__Group_3_0__4
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_0__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_3_0_3()); }
	';'
	{ after(grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_3_0_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_0__4
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_0__4__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_0__4__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getAlternatives_3_0_4()); }
	(rule__PropertyDefinition__Alternatives_3_0_4)
	{ after(grammarAccess.getPropertyDefinitionAccess().getAlternatives_3_0_4()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PropertyDefinition__Group_3_0_4_0__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_0_4_0__0__Impl
	rule__PropertyDefinition__Group_3_0_4_0__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_0_4_0__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getUsageAssignment_3_0_4_0_0()); }
	(rule__PropertyDefinition__UsageAssignment_3_0_4_0_0)
	{ after(grammarAccess.getPropertyDefinitionAccess().getUsageAssignment_3_0_4_0_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_0_4_0__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_0_4_0__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_0_4_0__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getDefaultAssignment_3_0_4_0_1()); }
	(rule__PropertyDefinition__DefaultAssignment_3_0_4_0_1)?
	{ after(grammarAccess.getPropertyDefinitionAccess().getDefaultAssignment_3_0_4_0_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PropertyDefinition__Group_3_0_4_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_0_4_1__0__Impl
	rule__PropertyDefinition__Group_3_0_4_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_0_4_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getDefaultAssignment_3_0_4_1_0()); }
	(rule__PropertyDefinition__DefaultAssignment_3_0_4_1_0)
	{ after(grammarAccess.getPropertyDefinitionAccess().getDefaultAssignment_3_0_4_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_0_4_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_0_4_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_0_4_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getUsageAssignment_3_0_4_1_1()); }
	(rule__PropertyDefinition__UsageAssignment_3_0_4_1_1)
	{ after(grammarAccess.getPropertyDefinitionAccess().getUsageAssignment_3_0_4_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PropertyDefinition__Group_3_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_1__0__Impl
	rule__PropertyDefinition__Group_3_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getUsageAssignment_3_1_0()); }
	(rule__PropertyDefinition__UsageAssignment_3_1_0)
	{ after(grammarAccess.getPropertyDefinitionAccess().getUsageAssignment_3_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getAlternatives_3_1_1()); }
	(rule__PropertyDefinition__Alternatives_3_1_1)
	{ after(grammarAccess.getPropertyDefinitionAccess().getAlternatives_3_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PropertyDefinition__Group_3_1_1_0__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_1_1_0__0__Impl
	rule__PropertyDefinition__Group_3_1_1_0__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_0__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getTypeKeyword_3_1_1_0_0()); }
	'type'
	{ after(grammarAccess.getPropertyDefinitionAccess().getTypeKeyword_3_1_1_0_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_0__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_1_1_0__1__Impl
	rule__PropertyDefinition__Group_3_1_1_0__2
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_0__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getEqualsSignKeyword_3_1_1_0_1()); }
	'='
	{ after(grammarAccess.getPropertyDefinitionAccess().getEqualsSignKeyword_3_1_1_0_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_0__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_1_1_0__2__Impl
	rule__PropertyDefinition__Group_3_1_1_0__3
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_0__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getTypeAssignment_3_1_1_0_2()); }
	(rule__PropertyDefinition__TypeAssignment_3_1_1_0_2)
	{ after(grammarAccess.getPropertyDefinitionAccess().getTypeAssignment_3_1_1_0_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_0__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_1_1_0__3__Impl
	rule__PropertyDefinition__Group_3_1_1_0__4
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_0__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_3_1_1_0_3()); }
	';'
	{ after(grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_3_1_1_0_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_0__4
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_1_1_0__4__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_0__4__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getDefaultAssignment_3_1_1_0_4()); }
	(rule__PropertyDefinition__DefaultAssignment_3_1_1_0_4)?
	{ after(grammarAccess.getPropertyDefinitionAccess().getDefaultAssignment_3_1_1_0_4()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PropertyDefinition__Group_3_1_1_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_1_1_1__0__Impl
	rule__PropertyDefinition__Group_3_1_1_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getDefaultAssignment_3_1_1_1_0()); }
	(rule__PropertyDefinition__DefaultAssignment_3_1_1_1_0)
	{ after(grammarAccess.getPropertyDefinitionAccess().getDefaultAssignment_3_1_1_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_1_1_1__1__Impl
	rule__PropertyDefinition__Group_3_1_1_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getTypeKeyword_3_1_1_1_1()); }
	'type'
	{ after(grammarAccess.getPropertyDefinitionAccess().getTypeKeyword_3_1_1_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_1__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_1_1_1__2__Impl
	rule__PropertyDefinition__Group_3_1_1_1__3
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_1__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getEqualsSignKeyword_3_1_1_1_2()); }
	'='
	{ after(grammarAccess.getPropertyDefinitionAccess().getEqualsSignKeyword_3_1_1_1_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_1__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_1_1_1__3__Impl
	rule__PropertyDefinition__Group_3_1_1_1__4
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_1__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getTypeAssignment_3_1_1_1_3()); }
	(rule__PropertyDefinition__TypeAssignment_3_1_1_1_3)
	{ after(grammarAccess.getPropertyDefinitionAccess().getTypeAssignment_3_1_1_1_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_1__4
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_1_1_1__4__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_1_1_1__4__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_3_1_1_1_4()); }
	';'
	{ after(grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_3_1_1_1_4()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PropertyDefinition__Group_3_2__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_2__0__Impl
	rule__PropertyDefinition__Group_3_2__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getDefaultAssignment_3_2_0()); }
	(rule__PropertyDefinition__DefaultAssignment_3_2_0)
	{ after(grammarAccess.getPropertyDefinitionAccess().getDefaultAssignment_3_2_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_2__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getAlternatives_3_2_1()); }
	(rule__PropertyDefinition__Alternatives_3_2_1)
	{ after(grammarAccess.getPropertyDefinitionAccess().getAlternatives_3_2_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PropertyDefinition__Group_3_2_1_0__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_2_1_0__0__Impl
	rule__PropertyDefinition__Group_3_2_1_0__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_0__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getTypeKeyword_3_2_1_0_0()); }
	'type'
	{ after(grammarAccess.getPropertyDefinitionAccess().getTypeKeyword_3_2_1_0_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_0__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_2_1_0__1__Impl
	rule__PropertyDefinition__Group_3_2_1_0__2
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_0__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getEqualsSignKeyword_3_2_1_0_1()); }
	'='
	{ after(grammarAccess.getPropertyDefinitionAccess().getEqualsSignKeyword_3_2_1_0_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_0__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_2_1_0__2__Impl
	rule__PropertyDefinition__Group_3_2_1_0__3
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_0__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getTypeAssignment_3_2_1_0_2()); }
	(rule__PropertyDefinition__TypeAssignment_3_2_1_0_2)
	{ after(grammarAccess.getPropertyDefinitionAccess().getTypeAssignment_3_2_1_0_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_0__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_2_1_0__3__Impl
	rule__PropertyDefinition__Group_3_2_1_0__4
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_0__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_3_2_1_0_3()); }
	';'
	{ after(grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_3_2_1_0_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_0__4
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_2_1_0__4__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_0__4__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getUsageAssignment_3_2_1_0_4()); }
	(rule__PropertyDefinition__UsageAssignment_3_2_1_0_4)
	{ after(grammarAccess.getPropertyDefinitionAccess().getUsageAssignment_3_2_1_0_4()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PropertyDefinition__Group_3_2_1_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_2_1_1__0__Impl
	rule__PropertyDefinition__Group_3_2_1_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getUsageAssignment_3_2_1_1_0()); }
	(rule__PropertyDefinition__UsageAssignment_3_2_1_1_0)
	{ after(grammarAccess.getPropertyDefinitionAccess().getUsageAssignment_3_2_1_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_2_1_1__1__Impl
	rule__PropertyDefinition__Group_3_2_1_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getTypeKeyword_3_2_1_1_1()); }
	'type'
	{ after(grammarAccess.getPropertyDefinitionAccess().getTypeKeyword_3_2_1_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_1__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_2_1_1__2__Impl
	rule__PropertyDefinition__Group_3_2_1_1__3
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_1__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getEqualsSignKeyword_3_2_1_1_2()); }
	'='
	{ after(grammarAccess.getPropertyDefinitionAccess().getEqualsSignKeyword_3_2_1_1_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_1__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_2_1_1__3__Impl
	rule__PropertyDefinition__Group_3_2_1_1__4
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_1__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getTypeAssignment_3_2_1_1_3()); }
	(rule__PropertyDefinition__TypeAssignment_3_2_1_1_3)
	{ after(grammarAccess.getPropertyDefinitionAccess().getTypeAssignment_3_2_1_1_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_1__4
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefinition__Group_3_2_1_1__4__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__Group_3_2_1_1__4__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_3_2_1_1_4()); }
	';'
	{ after(grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_3_2_1_1_4()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PropertyDefault__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefault__Group__0__Impl
	rule__PropertyDefault__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefault__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefaultAccess().getDefaultKeyword_0()); }
	'default'
	{ after(grammarAccess.getPropertyDefaultAccess().getDefaultKeyword_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefault__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefault__Group__1__Impl
	rule__PropertyDefault__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefault__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefaultAccess().getEqualsSignKeyword_1()); }
	'='
	{ after(grammarAccess.getPropertyDefaultAccess().getEqualsSignKeyword_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefault__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefault__Group__2__Impl
	rule__PropertyDefault__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefault__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefaultAccess().getAlternatives_2()); }
	(rule__PropertyDefault__Alternatives_2)
	{ after(grammarAccess.getPropertyDefaultAccess().getAlternatives_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefault__Group__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyDefault__Group__3__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefault__Group__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyDefaultAccess().getSemicolonKeyword_3()); }
	';'
	{ after(grammarAccess.getPropertyDefaultAccess().getSemicolonKeyword_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PropertyUsage__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyUsage__Group__0__Impl
	rule__PropertyUsage__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyUsage__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyUsageAccess().getComponentKeyword_0()); }
	'component'
	{ after(grammarAccess.getPropertyUsageAccess().getComponentKeyword_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyUsage__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyUsage__Group__1__Impl
	rule__PropertyUsage__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyUsage__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyUsageAccess().getEqualsSignKeyword_1()); }
	'='
	{ after(grammarAccess.getPropertyUsageAccess().getEqualsSignKeyword_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyUsage__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyUsage__Group__2__Impl
	rule__PropertyUsage__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyUsage__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyUsageAccess().getComponentsAssignment_2()); }
	(rule__PropertyUsage__ComponentsAssignment_2)
	{ after(grammarAccess.getPropertyUsageAccess().getComponentsAssignment_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyUsage__Group__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyUsage__Group__3__Impl
	rule__PropertyUsage__Group__4
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyUsage__Group__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyUsageAccess().getGroup_3()); }
	(rule__PropertyUsage__Group_3__0)*
	{ after(grammarAccess.getPropertyUsageAccess().getGroup_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyUsage__Group__4
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyUsage__Group__4__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyUsage__Group__4__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyUsageAccess().getSemicolonKeyword_4()); }
	';'
	{ after(grammarAccess.getPropertyUsageAccess().getSemicolonKeyword_4()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PropertyUsage__Group_3__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyUsage__Group_3__0__Impl
	rule__PropertyUsage__Group_3__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyUsage__Group_3__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyUsageAccess().getVerticalLineKeyword_3_0()); }
	'|'
	{ after(grammarAccess.getPropertyUsageAccess().getVerticalLineKeyword_3_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyUsage__Group_3__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyUsage__Group_3__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyUsage__Group_3__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyUsageAccess().getComponentsAssignment_3_1()); }
	(rule__PropertyUsage__ComponentsAssignment_3_1)
	{ after(grammarAccess.getPropertyUsageAccess().getComponentsAssignment_3_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__ComponentDefinition__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentDefinition__Group__0__Impl
	rule__ComponentDefinition__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentDefinitionAccess().getTypeAssignment_0()); }
	(rule__ComponentDefinition__TypeAssignment_0)
	{ after(grammarAccess.getComponentDefinitionAccess().getTypeAssignment_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentDefinition__Group__1__Impl
	rule__ComponentDefinition__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentDefinitionAccess().getNameAssignment_1()); }
	(rule__ComponentDefinition__NameAssignment_1)?
	{ after(grammarAccess.getComponentDefinitionAccess().getNameAssignment_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentDefinition__Group__2__Impl
	rule__ComponentDefinition__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentDefinitionAccess().getLeftCurlyBracketKeyword_2()); }
	'{'
	{ after(grammarAccess.getComponentDefinitionAccess().getLeftCurlyBracketKeyword_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentDefinition__Group__3__Impl
	rule__ComponentDefinition__Group__4
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentDefinitionAccess().getAlternatives_3()); }
	(rule__ComponentDefinition__Alternatives_3)*
	{ after(grammarAccess.getComponentDefinitionAccess().getAlternatives_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group__4
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentDefinition__Group__4__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group__4__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentDefinitionAccess().getRightCurlyBracketKeyword_4()); }
	'}'
	{ after(grammarAccess.getComponentDefinitionAccess().getRightCurlyBracketKeyword_4()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__ComponentDefinition__Group_3_0__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentDefinition__Group_3_0__0__Impl
	rule__ComponentDefinition__Group_3_0__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group_3_0__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentDefinitionAccess().getComponentDefinitionsAssignment_3_0_0()); }
	(rule__ComponentDefinition__ComponentDefinitionsAssignment_3_0_0)
	{ after(grammarAccess.getComponentDefinitionAccess().getComponentDefinitionsAssignment_3_0_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group_3_0__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentDefinition__Group_3_0__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group_3_0__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentDefinitionAccess().getSemicolonKeyword_3_0_1()); }
	';'
	{ after(grammarAccess.getComponentDefinitionAccess().getSemicolonKeyword_3_0_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__ComponentDefinition__Group_3_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentDefinition__Group_3_1__0__Impl
	rule__ComponentDefinition__Group_3_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group_3_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentDefinitionAccess().getInstantiationsAssignment_3_1_0()); }
	(rule__ComponentDefinition__InstantiationsAssignment_3_1_0)
	{ after(grammarAccess.getComponentDefinitionAccess().getInstantiationsAssignment_3_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group_3_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentDefinition__Group_3_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group_3_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentDefinitionAccess().getSemicolonKeyword_3_1_1()); }
	';'
	{ after(grammarAccess.getComponentDefinitionAccess().getSemicolonKeyword_3_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__ComponentDefinition__Group_3_2__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentDefinition__Group_3_2__0__Impl
	rule__ComponentDefinition__Group_3_2__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group_3_2__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentDefinitionAccess().getPropertyAssignmentsAssignment_3_2_0()); }
	(rule__ComponentDefinition__PropertyAssignmentsAssignment_3_2_0)
	{ after(grammarAccess.getComponentDefinitionAccess().getPropertyAssignmentsAssignment_3_2_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group_3_2__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentDefinition__Group_3_2__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group_3_2__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentDefinitionAccess().getSemicolonKeyword_3_2_1()); }
	';'
	{ after(grammarAccess.getComponentDefinitionAccess().getSemicolonKeyword_3_2_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__ComponentDefinition__Group_3_3__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentDefinition__Group_3_3__0__Impl
	rule__ComponentDefinition__Group_3_3__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group_3_3__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentDefinitionAccess().getEnumDefinitionsAssignment_3_3_0()); }
	(rule__ComponentDefinition__EnumDefinitionsAssignment_3_3_0)
	{ after(grammarAccess.getComponentDefinitionAccess().getEnumDefinitionsAssignment_3_3_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group_3_3__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentDefinition__Group_3_3__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__Group_3_3__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentDefinitionAccess().getSemicolonKeyword_3_3_1()); }
	';'
	{ after(grammarAccess.getComponentDefinitionAccess().getSemicolonKeyword_3_3_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Instantiation__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Instantiation__Group__0__Impl
	rule__Instantiation__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstantiationAccess().getAlternatives_0()); }
	(rule__Instantiation__Alternatives_0)
	{ after(grammarAccess.getInstantiationAccess().getAlternatives_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Instantiation__Group__1__Impl
	rule__Instantiation__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstantiationAccess().getComponentInstancesAssignment_1()); }
	(rule__Instantiation__ComponentInstancesAssignment_1)
	{ after(grammarAccess.getInstantiationAccess().getComponentInstancesAssignment_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Instantiation__Group__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstantiationAccess().getGroup_2()); }
	(rule__Instantiation__Group_2__0)*
	{ after(grammarAccess.getInstantiationAccess().getGroup_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Instantiation__Group_0_0__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Instantiation__Group_0_0__0__Impl
	rule__Instantiation__Group_0_0__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group_0_0__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstantiationAccess().getInstanceTypeAssignment_0_0_0()); }
	(rule__Instantiation__InstanceTypeAssignment_0_0_0)?
	{ after(grammarAccess.getInstantiationAccess().getInstanceTypeAssignment_0_0_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group_0_0__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Instantiation__Group_0_0__1__Impl
	rule__Instantiation__Group_0_0__2
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group_0_0__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstantiationAccess().getGroup_0_0_1()); }
	(rule__Instantiation__Group_0_0_1__0)?
	{ after(grammarAccess.getInstantiationAccess().getGroup_0_0_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group_0_0__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Instantiation__Group_0_0__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group_0_0__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstantiationAccess().getComponentRefAssignment_0_0_2()); }
	(rule__Instantiation__ComponentRefAssignment_0_0_2)
	{ after(grammarAccess.getInstantiationAccess().getComponentRefAssignment_0_0_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Instantiation__Group_0_0_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Instantiation__Group_0_0_1__0__Impl
	rule__Instantiation__Group_0_0_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group_0_0_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstantiationAccess().getAliasKeyword_0_0_1_0()); }
	'alias'
	{ after(grammarAccess.getInstantiationAccess().getAliasKeyword_0_0_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group_0_0_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Instantiation__Group_0_0_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group_0_0_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstantiationAccess().getAliasAssignment_0_0_1_1()); }
	(rule__Instantiation__AliasAssignment_0_0_1_1)
	{ after(grammarAccess.getInstantiationAccess().getAliasAssignment_0_0_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Instantiation__Group_0_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Instantiation__Group_0_1__0__Impl
	rule__Instantiation__Group_0_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group_0_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstantiationAccess().getComponentAssignment_0_1_0()); }
	(rule__Instantiation__ComponentAssignment_0_1_0)
	{ after(grammarAccess.getInstantiationAccess().getComponentAssignment_0_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group_0_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Instantiation__Group_0_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group_0_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstantiationAccess().getInstanceTypeAssignment_0_1_1()); }
	(rule__Instantiation__InstanceTypeAssignment_0_1_1)?
	{ after(grammarAccess.getInstantiationAccess().getInstanceTypeAssignment_0_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Instantiation__Group_2__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Instantiation__Group_2__0__Impl
	rule__Instantiation__Group_2__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group_2__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstantiationAccess().getCommaKeyword_2_0()); }
	','
	{ after(grammarAccess.getInstantiationAccess().getCommaKeyword_2_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group_2__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Instantiation__Group_2__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__Group_2__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstantiationAccess().getComponentInstancesAssignment_2_1()); }
	(rule__Instantiation__ComponentInstancesAssignment_2_1)
	{ after(grammarAccess.getInstantiationAccess().getComponentInstancesAssignment_2_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__ComponentInstance__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentInstance__Group__0__Impl
	rule__ComponentInstance__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentInstanceAccess().getNameAssignment_0()); }
	(rule__ComponentInstance__NameAssignment_0)
	{ after(grammarAccess.getComponentInstanceAccess().getNameAssignment_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentInstance__Group__1__Impl
	rule__ComponentInstance__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentInstanceAccess().getRangeAssignment_1()); }
	(rule__ComponentInstance__RangeAssignment_1)?
	{ after(grammarAccess.getComponentInstanceAccess().getRangeAssignment_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentInstance__Group__2__Impl
	rule__ComponentInstance__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentInstanceAccess().getGroup_2()); }
	(rule__ComponentInstance__Group_2__0)?
	{ after(grammarAccess.getComponentInstanceAccess().getGroup_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentInstance__Group__3__Impl
	rule__ComponentInstance__Group__4
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentInstanceAccess().getGroup_3()); }
	(rule__ComponentInstance__Group_3__0)?
	{ after(grammarAccess.getComponentInstanceAccess().getGroup_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group__4
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentInstance__Group__4__Impl
	rule__ComponentInstance__Group__5
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group__4__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentInstanceAccess().getGroup_4()); }
	(rule__ComponentInstance__Group_4__0)?
	{ after(grammarAccess.getComponentInstanceAccess().getGroup_4()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group__5
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentInstance__Group__5__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group__5__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentInstanceAccess().getGroup_5()); }
	(rule__ComponentInstance__Group_5__0)?
	{ after(grammarAccess.getComponentInstanceAccess().getGroup_5()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__ComponentInstance__Group_2__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentInstance__Group_2__0__Impl
	rule__ComponentInstance__Group_2__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group_2__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentInstanceAccess().getEqualsSignKeyword_2_0()); }
	'='
	{ after(grammarAccess.getComponentInstanceAccess().getEqualsSignKeyword_2_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group_2__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentInstance__Group_2__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group_2__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentInstanceAccess().getResetAssignment_2_1()); }
	(rule__ComponentInstance__ResetAssignment_2_1)
	{ after(grammarAccess.getComponentInstanceAccess().getResetAssignment_2_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__ComponentInstance__Group_3__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentInstance__Group_3__0__Impl
	rule__ComponentInstance__Group_3__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group_3__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentInstanceAccess().getCommercialAtKeyword_3_0()); }
	'@'
	{ after(grammarAccess.getComponentInstanceAccess().getCommercialAtKeyword_3_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group_3__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentInstance__Group_3__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group_3__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentInstanceAccess().getAddressAssignment_3_1()); }
	(rule__ComponentInstance__AddressAssignment_3_1)
	{ after(grammarAccess.getComponentInstanceAccess().getAddressAssignment_3_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__ComponentInstance__Group_4__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentInstance__Group_4__0__Impl
	rule__ComponentInstance__Group_4__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group_4__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentInstanceAccess().getPlusSignEqualsSignKeyword_4_0()); }
	'+='
	{ after(grammarAccess.getComponentInstanceAccess().getPlusSignEqualsSignKeyword_4_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group_4__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentInstance__Group_4__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group_4__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentInstanceAccess().getAddrIncAssignment_4_1()); }
	(rule__ComponentInstance__AddrIncAssignment_4_1)
	{ after(grammarAccess.getComponentInstanceAccess().getAddrIncAssignment_4_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__ComponentInstance__Group_5__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentInstance__Group_5__0__Impl
	rule__ComponentInstance__Group_5__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group_5__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentInstanceAccess().getPercentSignEqualsSignKeyword_5_0()); }
	'%='
	{ after(grammarAccess.getComponentInstanceAccess().getPercentSignEqualsSignKeyword_5_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group_5__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ComponentInstance__Group_5__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__Group_5__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getComponentInstanceAccess().getAddrModAssignment_5_1()); }
	(rule__ComponentInstance__AddrModAssignment_5_1)
	{ after(grammarAccess.getComponentInstanceAccess().getAddrModAssignment_5_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Range__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Range__Group__0__Impl
	rule__Range__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Range__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getRangeAccess().getLeftSquareBracketKeyword_0()); }
	'['
	{ after(grammarAccess.getRangeAccess().getLeftSquareBracketKeyword_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Range__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Range__Group__1__Impl
	rule__Range__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__Range__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getRangeAccess().getAlternatives_1()); }
	(rule__Range__Alternatives_1)
	{ after(grammarAccess.getRangeAccess().getAlternatives_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Range__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Range__Group__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Range__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getRangeAccess().getRightSquareBracketKeyword_2()); }
	']'
	{ after(grammarAccess.getRangeAccess().getRightSquareBracketKeyword_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Range__Group_1_0__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Range__Group_1_0__0__Impl
	rule__Range__Group_1_0__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Range__Group_1_0__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getRangeAccess().getLeftAssignment_1_0_0()); }
	(rule__Range__LeftAssignment_1_0_0)
	{ after(grammarAccess.getRangeAccess().getLeftAssignment_1_0_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Range__Group_1_0__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Range__Group_1_0__1__Impl
	rule__Range__Group_1_0__2
;
finally {
	restoreStackSize(stackSize);
}

rule__Range__Group_1_0__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getRangeAccess().getColonKeyword_1_0_1()); }
	':'
	{ after(grammarAccess.getRangeAccess().getColonKeyword_1_0_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Range__Group_1_0__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Range__Group_1_0__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Range__Group_1_0__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getRangeAccess().getRightAssignment_1_0_2()); }
	(rule__Range__RightAssignment_1_0_2)
	{ after(grammarAccess.getRangeAccess().getRightAssignment_1_0_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__DefaultProperyAssignment__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__DefaultProperyAssignment__Group__0__Impl
	rule__DefaultProperyAssignment__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__DefaultProperyAssignment__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getDefaultProperyAssignmentAccess().getDefaultKeyword_0()); }
	'default'
	{ after(grammarAccess.getDefaultProperyAssignmentAccess().getDefaultKeyword_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__DefaultProperyAssignment__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__DefaultProperyAssignment__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__DefaultProperyAssignment__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getDefaultProperyAssignmentAccess().getExplicitPropertyAssignmentParserRuleCall_1()); }
	ruleExplicitPropertyAssignment
	{ after(grammarAccess.getDefaultProperyAssignmentAccess().getExplicitPropertyAssignmentParserRuleCall_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__ExplicitPropertyAssignment__Group_0__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ExplicitPropertyAssignment__Group_0__0__Impl
	rule__ExplicitPropertyAssignment__Group_0__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ExplicitPropertyAssignment__Group_0__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getExplicitPropertyAssignmentAccess().getModifierAssignment_0_0()); }
	(rule__ExplicitPropertyAssignment__ModifierAssignment_0_0)
	{ after(grammarAccess.getExplicitPropertyAssignmentAccess().getModifierAssignment_0_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ExplicitPropertyAssignment__Group_0__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ExplicitPropertyAssignment__Group_0__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ExplicitPropertyAssignment__Group_0__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getExplicitPropertyAssignmentAccess().getNameAssignment_0_1()); }
	(rule__ExplicitPropertyAssignment__NameAssignment_0_1)
	{ after(grammarAccess.getExplicitPropertyAssignmentAccess().getNameAssignment_0_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__ExplicitPropertyAssignment__Group_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ExplicitPropertyAssignment__Group_1__0__Impl
	rule__ExplicitPropertyAssignment__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ExplicitPropertyAssignment__Group_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getExplicitPropertyAssignmentAccess().getNameAssignment_1_0()); }
	(rule__ExplicitPropertyAssignment__NameAssignment_1_0)
	{ after(grammarAccess.getExplicitPropertyAssignmentAccess().getNameAssignment_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ExplicitPropertyAssignment__Group_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ExplicitPropertyAssignment__Group_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ExplicitPropertyAssignment__Group_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getExplicitPropertyAssignmentAccess().getGroup_1_1()); }
	(rule__ExplicitPropertyAssignment__Group_1_1__0)?
	{ after(grammarAccess.getExplicitPropertyAssignmentAccess().getGroup_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__ExplicitPropertyAssignment__Group_1_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ExplicitPropertyAssignment__Group_1_1__0__Impl
	rule__ExplicitPropertyAssignment__Group_1_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ExplicitPropertyAssignment__Group_1_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getExplicitPropertyAssignmentAccess().getEqualsSignKeyword_1_1_0()); }
	'='
	{ after(grammarAccess.getExplicitPropertyAssignmentAccess().getEqualsSignKeyword_1_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ExplicitPropertyAssignment__Group_1_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ExplicitPropertyAssignment__Group_1_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ExplicitPropertyAssignment__Group_1_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getExplicitPropertyAssignmentAccess().getRhsAssignment_1_1_1()); }
	(rule__ExplicitPropertyAssignment__RhsAssignment_1_1_1)
	{ after(grammarAccess.getExplicitPropertyAssignmentAccess().getRhsAssignment_1_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PostPropertyAssignment__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PostPropertyAssignment__Group__0__Impl
	rule__PostPropertyAssignment__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPostPropertyAssignmentAccess().getAlternatives_0()); }
	(rule__PostPropertyAssignment__Alternatives_0)
	{ after(grammarAccess.getPostPropertyAssignmentAccess().getAlternatives_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PostPropertyAssignment__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPostPropertyAssignmentAccess().getGroup_1()); }
	(rule__PostPropertyAssignment__Group_1__0)?
	{ after(grammarAccess.getPostPropertyAssignmentAccess().getGroup_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PostPropertyAssignment__Group_0_0__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PostPropertyAssignment__Group_0_0__0__Impl
	rule__PostPropertyAssignment__Group_0_0__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__Group_0_0__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPostPropertyAssignmentAccess().getInstanceAssignment_0_0_0()); }
	(rule__PostPropertyAssignment__InstanceAssignment_0_0_0)
	{ after(grammarAccess.getPostPropertyAssignmentAccess().getInstanceAssignment_0_0_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__Group_0_0__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PostPropertyAssignment__Group_0_0__1__Impl
	rule__PostPropertyAssignment__Group_0_0__2
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__Group_0_0__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPostPropertyAssignmentAccess().getHyphenMinusGreaterThanSignKeyword_0_0_1()); }
	'->'
	{ after(grammarAccess.getPostPropertyAssignmentAccess().getHyphenMinusGreaterThanSignKeyword_0_0_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__Group_0_0__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PostPropertyAssignment__Group_0_0__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__Group_0_0__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPostPropertyAssignmentAccess().getAlternatives_0_0_2()); }
	(rule__PostPropertyAssignment__Alternatives_0_0_2)
	{ after(grammarAccess.getPostPropertyAssignmentAccess().getAlternatives_0_0_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PostPropertyAssignment__Group_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PostPropertyAssignment__Group_1__0__Impl
	rule__PostPropertyAssignment__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__Group_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPostPropertyAssignmentAccess().getEqualsSignKeyword_1_0()); }
	'='
	{ after(grammarAccess.getPostPropertyAssignmentAccess().getEqualsSignKeyword_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__Group_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PostPropertyAssignment__Group_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__Group_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPostPropertyAssignmentAccess().getRhsAssignment_1_1()); }
	(rule__PostPropertyAssignment__RhsAssignment_1_1)
	{ after(grammarAccess.getPostPropertyAssignmentAccess().getRhsAssignment_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__InstancePropertyRef__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__InstancePropertyRef__Group__0__Impl
	rule__InstancePropertyRef__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__InstancePropertyRef__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstancePropertyRefAccess().getInstanceAssignment_0()); }
	(rule__InstancePropertyRef__InstanceAssignment_0)
	{ after(grammarAccess.getInstancePropertyRefAccess().getInstanceAssignment_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__InstancePropertyRef__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__InstancePropertyRef__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__InstancePropertyRef__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstancePropertyRefAccess().getGroup_1()); }
	(rule__InstancePropertyRef__Group_1__0)?
	{ after(grammarAccess.getInstancePropertyRefAccess().getGroup_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__InstancePropertyRef__Group_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__InstancePropertyRef__Group_1__0__Impl
	rule__InstancePropertyRef__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__InstancePropertyRef__Group_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstancePropertyRefAccess().getHyphenMinusGreaterThanSignKeyword_1_0()); }
	'->'
	{ after(grammarAccess.getInstancePropertyRefAccess().getHyphenMinusGreaterThanSignKeyword_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__InstancePropertyRef__Group_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__InstancePropertyRef__Group_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__InstancePropertyRef__Group_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstancePropertyRefAccess().getAlternatives_1_1()); }
	(rule__InstancePropertyRef__Alternatives_1_1)
	{ after(grammarAccess.getInstancePropertyRefAccess().getAlternatives_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__InstanceRef__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__InstanceRef__Group__0__Impl
	rule__InstanceRef__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__InstanceRef__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstanceRefAccess().getInstanceAssignment_0()); }
	(rule__InstanceRef__InstanceAssignment_0)
	{ after(grammarAccess.getInstanceRefAccess().getInstanceAssignment_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__InstanceRef__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__InstanceRef__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__InstanceRef__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstanceRefAccess().getGroup_1()); }
	(rule__InstanceRef__Group_1__0)?
	{ after(grammarAccess.getInstanceRefAccess().getGroup_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__InstanceRef__Group_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__InstanceRef__Group_1__0__Impl
	rule__InstanceRef__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__InstanceRef__Group_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstanceRefAccess().getFullStopKeyword_1_0()); }
	'.'
	{ after(grammarAccess.getInstanceRefAccess().getFullStopKeyword_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__InstanceRef__Group_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__InstanceRef__Group_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__InstanceRef__Group_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getInstanceRefAccess().getTailAssignment_1_1()); }
	(rule__InstanceRef__TailAssignment_1_1)
	{ after(grammarAccess.getInstanceRefAccess().getTailAssignment_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__HierInstanceRef__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__HierInstanceRef__Group__0__Impl
	rule__HierInstanceRef__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__HierInstanceRef__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getHierInstanceRefAccess().getInstanceAssignment_0()); }
	(rule__HierInstanceRef__InstanceAssignment_0)
	{ after(grammarAccess.getHierInstanceRefAccess().getInstanceAssignment_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__HierInstanceRef__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__HierInstanceRef__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__HierInstanceRef__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getHierInstanceRefAccess().getGroup_1()); }
	(rule__HierInstanceRef__Group_1__0)?
	{ after(grammarAccess.getHierInstanceRefAccess().getGroup_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__HierInstanceRef__Group_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__HierInstanceRef__Group_1__0__Impl
	rule__HierInstanceRef__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__HierInstanceRef__Group_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getHierInstanceRefAccess().getFullStopKeyword_1_0()); }
	'.'
	{ after(grammarAccess.getHierInstanceRefAccess().getFullStopKeyword_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__HierInstanceRef__Group_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__HierInstanceRef__Group_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__HierInstanceRef__Group_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getHierInstanceRefAccess().getTailAssignment_1_1()); }
	(rule__HierInstanceRef__TailAssignment_1_1)
	{ after(grammarAccess.getHierInstanceRefAccess().getTailAssignment_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PropertyAssignmentRhs__Group_2__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyAssignmentRhs__Group_2__0__Impl
	rule__PropertyAssignmentRhs__Group_2__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyAssignmentRhs__Group_2__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyAssignmentRhsAccess().getEnumRefAssignment_2_0()); }
	(rule__PropertyAssignmentRhs__EnumRefAssignment_2_0)
	{ after(grammarAccess.getPropertyAssignmentRhsAccess().getEnumRefAssignment_2_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyAssignmentRhs__Group_2__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyAssignmentRhs__Group_2__1__Impl
	rule__PropertyAssignmentRhs__Group_2__2
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyAssignmentRhs__Group_2__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyAssignmentRhsAccess().getEnumKeyword_2_1()); }
	'enum'
	{ after(grammarAccess.getPropertyAssignmentRhsAccess().getEnumKeyword_2_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyAssignmentRhs__Group_2__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PropertyAssignmentRhs__Group_2__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyAssignmentRhs__Group_2__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPropertyAssignmentRhsAccess().getEnumsAssignment_2_2()); }
	(rule__PropertyAssignmentRhs__EnumsAssignment_2_2)
	{ after(grammarAccess.getPropertyAssignmentRhsAccess().getEnumsAssignment_2_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Concat__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Concat__Group__0__Impl
	rule__Concat__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Concat__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getConcatAccess().getLeftCurlyBracketKeyword_0()); }
	'{'
	{ after(grammarAccess.getConcatAccess().getLeftCurlyBracketKeyword_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Concat__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Concat__Group__1__Impl
	rule__Concat__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__Concat__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getConcatAccess().getElementsAssignment_1()); }
	(rule__Concat__ElementsAssignment_1)
	{ after(grammarAccess.getConcatAccess().getElementsAssignment_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Concat__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Concat__Group__2__Impl
	rule__Concat__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__Concat__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getConcatAccess().getGroup_2()); }
	(rule__Concat__Group_2__0)*
	{ after(grammarAccess.getConcatAccess().getGroup_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Concat__Group__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Concat__Group__3__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Concat__Group__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getConcatAccess().getRightCurlyBracketKeyword_3()); }
	'}'
	{ after(grammarAccess.getConcatAccess().getRightCurlyBracketKeyword_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Concat__Group_2__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Concat__Group_2__0__Impl
	rule__Concat__Group_2__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Concat__Group_2__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getConcatAccess().getCommaKeyword_2_0()); }
	','
	{ after(grammarAccess.getConcatAccess().getCommaKeyword_2_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Concat__Group_2__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Concat__Group_2__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Concat__Group_2__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getConcatAccess().getElementsAssignment_2_1()); }
	(rule__Concat__ElementsAssignment_2_1)
	{ after(grammarAccess.getConcatAccess().getElementsAssignment_2_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__EnumDefinition__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumDefinition__Group__0__Impl
	rule__EnumDefinition__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumDefinition__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumDefinitionAccess().getEnumKeyword_0()); }
	'enum'
	{ after(grammarAccess.getEnumDefinitionAccess().getEnumKeyword_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumDefinition__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumDefinition__Group__1__Impl
	rule__EnumDefinition__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumDefinition__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumDefinitionAccess().getNameAssignment_1()); }
	(rule__EnumDefinition__NameAssignment_1)
	{ after(grammarAccess.getEnumDefinitionAccess().getNameAssignment_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumDefinition__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumDefinition__Group__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumDefinition__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumDefinitionAccess().getBodyAssignment_2()); }
	(rule__EnumDefinition__BodyAssignment_2)
	{ after(grammarAccess.getEnumDefinitionAccess().getBodyAssignment_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__EnumBody__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumBody__Group__0__Impl
	rule__EnumBody__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumBody__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumBodyAccess().getLeftCurlyBracketKeyword_0()); }
	'{'
	{ after(grammarAccess.getEnumBodyAccess().getLeftCurlyBracketKeyword_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumBody__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumBody__Group__1__Impl
	rule__EnumBody__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumBody__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumBodyAccess().getEnumBodyAction_1()); }
	()
	{ after(grammarAccess.getEnumBodyAccess().getEnumBodyAction_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumBody__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumBody__Group__2__Impl
	rule__EnumBody__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumBody__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumBodyAccess().getEntriesAssignment_2()); }
	(rule__EnumBody__EntriesAssignment_2)*
	{ after(grammarAccess.getEnumBodyAccess().getEntriesAssignment_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumBody__Group__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumBody__Group__3__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumBody__Group__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumBodyAccess().getRightCurlyBracketKeyword_3()); }
	'}'
	{ after(grammarAccess.getEnumBodyAccess().getRightCurlyBracketKeyword_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__EnumEntry__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumEntry__Group__0__Impl
	rule__EnumEntry__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumEntryAccess().getNameAssignment_0()); }
	(rule__EnumEntry__NameAssignment_0)
	{ after(grammarAccess.getEnumEntryAccess().getNameAssignment_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumEntry__Group__1__Impl
	rule__EnumEntry__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumEntryAccess().getEqualsSignKeyword_1()); }
	'='
	{ after(grammarAccess.getEnumEntryAccess().getEqualsSignKeyword_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumEntry__Group__2__Impl
	rule__EnumEntry__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumEntryAccess().getIndexAssignment_2()); }
	(rule__EnumEntry__IndexAssignment_2)
	{ after(grammarAccess.getEnumEntryAccess().getIndexAssignment_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__Group__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumEntry__Group__3__Impl
	rule__EnumEntry__Group__4
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__Group__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumEntryAccess().getGroup_3()); }
	(rule__EnumEntry__Group_3__0)?
	{ after(grammarAccess.getEnumEntryAccess().getGroup_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__Group__4
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumEntry__Group__4__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__Group__4__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumEntryAccess().getSemicolonKeyword_4()); }
	';'
	{ after(grammarAccess.getEnumEntryAccess().getSemicolonKeyword_4()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__EnumEntry__Group_3__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumEntry__Group_3__0__Impl
	rule__EnumEntry__Group_3__1
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__Group_3__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumEntryAccess().getLeftCurlyBracketKeyword_3_0()); }
	'{'
	{ after(grammarAccess.getEnumEntryAccess().getLeftCurlyBracketKeyword_3_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__Group_3__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumEntry__Group_3__1__Impl
	rule__EnumEntry__Group_3__2
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__Group_3__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumEntryAccess().getPropertiesAssignment_3_1()); }
	(rule__EnumEntry__PropertiesAssignment_3_1)*
	{ after(grammarAccess.getEnumEntryAccess().getPropertiesAssignment_3_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__Group_3__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumEntry__Group_3__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__Group_3__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumEntryAccess().getRightCurlyBracketKeyword_3_2()); }
	'}'
	{ after(grammarAccess.getEnumEntryAccess().getRightCurlyBracketKeyword_3_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__EnumProperty__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumProperty__Group__0__Impl
	rule__EnumProperty__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumPropertyAccess().getAlternatives_0()); }
	(rule__EnumProperty__Alternatives_0)
	{ after(grammarAccess.getEnumPropertyAccess().getAlternatives_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumProperty__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumPropertyAccess().getSemicolonKeyword_1()); }
	';'
	{ after(grammarAccess.getEnumPropertyAccess().getSemicolonKeyword_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__EnumProperty__Group_0_0__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumProperty__Group_0_0__0__Impl
	rule__EnumProperty__Group_0_0__1
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__Group_0_0__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumPropertyAccess().getNameAssignment_0_0_0()); }
	(rule__EnumProperty__NameAssignment_0_0_0)
	{ after(grammarAccess.getEnumPropertyAccess().getNameAssignment_0_0_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__Group_0_0__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumProperty__Group_0_0__1__Impl
	rule__EnumProperty__Group_0_0__2
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__Group_0_0__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumPropertyAccess().getEqualsSignKeyword_0_0_1()); }
	'='
	{ after(grammarAccess.getEnumPropertyAccess().getEqualsSignKeyword_0_0_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__Group_0_0__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumProperty__Group_0_0__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__Group_0_0__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumPropertyAccess().getValueAssignment_0_0_2()); }
	(rule__EnumProperty__ValueAssignment_0_0_2)
	{ after(grammarAccess.getEnumPropertyAccess().getValueAssignment_0_0_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__EnumProperty__Group_0_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumProperty__Group_0_1__0__Impl
	rule__EnumProperty__Group_0_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__Group_0_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumPropertyAccess().getNameAssignment_0_1_0()); }
	(rule__EnumProperty__NameAssignment_0_1_0)
	{ after(grammarAccess.getEnumPropertyAccess().getNameAssignment_0_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__Group_0_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumProperty__Group_0_1__1__Impl
	rule__EnumProperty__Group_0_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__Group_0_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumPropertyAccess().getEqualsSignKeyword_0_1_1()); }
	'='
	{ after(grammarAccess.getEnumPropertyAccess().getEqualsSignKeyword_0_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__Group_0_1__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EnumProperty__Group_0_1__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__Group_0_1__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEnumPropertyAccess().getValueAssignment_0_1_2()); }
	(rule__EnumProperty__ValueAssignment_0_1_2)
	{ after(grammarAccess.getEnumPropertyAccess().getValueAssignment_0_1_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Root__IncludesAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getRootAccess().getIncludesIncludeParserRuleCall_0_0()); }
		ruleInclude
		{ after(grammarAccess.getRootAccess().getIncludesIncludeParserRuleCall_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__ComponentDefinitionsAssignment_1_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getRootAccess().getComponentDefinitionsComponentDefinitionParserRuleCall_1_0_0()); }
		ruleComponentDefinition
		{ after(grammarAccess.getRootAccess().getComponentDefinitionsComponentDefinitionParserRuleCall_1_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__EnumDefinitionsAssignment_2_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getRootAccess().getEnumDefinitionsEnumDefinitionParserRuleCall_2_0_0()); }
		ruleEnumDefinition
		{ after(grammarAccess.getRootAccess().getEnumDefinitionsEnumDefinitionParserRuleCall_2_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__InstantiationsAssignment_3_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getRootAccess().getInstantiationsInstantiationParserRuleCall_3_0_0()); }
		ruleInstantiation
		{ after(grammarAccess.getRootAccess().getInstantiationsInstantiationParserRuleCall_3_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__PropertyAssignmentsAssignment_4_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getRootAccess().getPropertyAssignmentsPropertyAssignmentParserRuleCall_4_0_0()); }
		rulePropertyAssignment
		{ after(grammarAccess.getRootAccess().getPropertyAssignmentsPropertyAssignmentParserRuleCall_4_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Root__PropertyDefinitionsAssignment_5_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getRootAccess().getPropertyDefinitionsPropertyDefinitionParserRuleCall_5_0_0()); }
		rulePropertyDefinition
		{ after(grammarAccess.getRootAccess().getPropertyDefinitionsPropertyDefinitionParserRuleCall_5_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Include__ImportURIAssignment_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getIncludeAccess().getImportURISTRTerminalRuleCall_1_0()); }
		RULE_STR
		{ after(grammarAccess.getIncludeAccess().getImportURISTRTerminalRuleCall_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__NameAssignment_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getNameIDTerminalRuleCall_1_0()); }
		RULE_ID
		{ after(grammarAccess.getPropertyDefinitionAccess().getNameIDTerminalRuleCall_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__TypeAssignment_3_0_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getTypePropertyTypeNameEnumRuleCall_3_0_2_0()); }
		rulePropertyTypeName
		{ after(grammarAccess.getPropertyDefinitionAccess().getTypePropertyTypeNameEnumRuleCall_3_0_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__UsageAssignment_3_0_4_0_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getUsagePropertyUsageParserRuleCall_3_0_4_0_0_0()); }
		rulePropertyUsage
		{ after(grammarAccess.getPropertyDefinitionAccess().getUsagePropertyUsageParserRuleCall_3_0_4_0_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__DefaultAssignment_3_0_4_0_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getDefaultPropertyDefaultParserRuleCall_3_0_4_0_1_0()); }
		rulePropertyDefault
		{ after(grammarAccess.getPropertyDefinitionAccess().getDefaultPropertyDefaultParserRuleCall_3_0_4_0_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__DefaultAssignment_3_0_4_1_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getDefaultPropertyDefaultParserRuleCall_3_0_4_1_0_0()); }
		rulePropertyDefault
		{ after(grammarAccess.getPropertyDefinitionAccess().getDefaultPropertyDefaultParserRuleCall_3_0_4_1_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__UsageAssignment_3_0_4_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getUsagePropertyUsageParserRuleCall_3_0_4_1_1_0()); }
		rulePropertyUsage
		{ after(grammarAccess.getPropertyDefinitionAccess().getUsagePropertyUsageParserRuleCall_3_0_4_1_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__UsageAssignment_3_1_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getUsagePropertyUsageParserRuleCall_3_1_0_0()); }
		rulePropertyUsage
		{ after(grammarAccess.getPropertyDefinitionAccess().getUsagePropertyUsageParserRuleCall_3_1_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__TypeAssignment_3_1_1_0_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getTypePropertyTypeNameEnumRuleCall_3_1_1_0_2_0()); }
		rulePropertyTypeName
		{ after(grammarAccess.getPropertyDefinitionAccess().getTypePropertyTypeNameEnumRuleCall_3_1_1_0_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__DefaultAssignment_3_1_1_0_4
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getDefaultPropertyDefaultParserRuleCall_3_1_1_0_4_0()); }
		rulePropertyDefault
		{ after(grammarAccess.getPropertyDefinitionAccess().getDefaultPropertyDefaultParserRuleCall_3_1_1_0_4_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__DefaultAssignment_3_1_1_1_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getDefaultPropertyDefaultParserRuleCall_3_1_1_1_0_0()); }
		rulePropertyDefault
		{ after(grammarAccess.getPropertyDefinitionAccess().getDefaultPropertyDefaultParserRuleCall_3_1_1_1_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__TypeAssignment_3_1_1_1_3
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getTypePropertyTypeNameEnumRuleCall_3_1_1_1_3_0()); }
		rulePropertyTypeName
		{ after(grammarAccess.getPropertyDefinitionAccess().getTypePropertyTypeNameEnumRuleCall_3_1_1_1_3_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__DefaultAssignment_3_2_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getDefaultPropertyDefaultParserRuleCall_3_2_0_0()); }
		rulePropertyDefault
		{ after(grammarAccess.getPropertyDefinitionAccess().getDefaultPropertyDefaultParserRuleCall_3_2_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__TypeAssignment_3_2_1_0_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getTypePropertyTypeNameEnumRuleCall_3_2_1_0_2_0()); }
		rulePropertyTypeName
		{ after(grammarAccess.getPropertyDefinitionAccess().getTypePropertyTypeNameEnumRuleCall_3_2_1_0_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__UsageAssignment_3_2_1_0_4
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getUsagePropertyUsageParserRuleCall_3_2_1_0_4_0()); }
		rulePropertyUsage
		{ after(grammarAccess.getPropertyDefinitionAccess().getUsagePropertyUsageParserRuleCall_3_2_1_0_4_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__UsageAssignment_3_2_1_1_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getUsagePropertyUsageParserRuleCall_3_2_1_1_0_0()); }
		rulePropertyUsage
		{ after(grammarAccess.getPropertyDefinitionAccess().getUsagePropertyUsageParserRuleCall_3_2_1_1_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefinition__TypeAssignment_3_2_1_1_3
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefinitionAccess().getTypePropertyTypeNameEnumRuleCall_3_2_1_1_3_0()); }
		rulePropertyTypeName
		{ after(grammarAccess.getPropertyDefinitionAccess().getTypePropertyTypeNameEnumRuleCall_3_2_1_1_3_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefault__StringAssignment_2_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefaultAccess().getStringSTRTerminalRuleCall_2_0_0()); }
		RULE_STR
		{ after(grammarAccess.getPropertyDefaultAccess().getStringSTRTerminalRuleCall_2_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefault__ValueAssignment_2_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefaultAccess().getValueNUMTerminalRuleCall_2_1_0()); }
		RULE_NUM
		{ after(grammarAccess.getPropertyDefaultAccess().getValueNUMTerminalRuleCall_2_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefault__StringAssignment_2_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefaultAccess().getStringTrueKeyword_2_2_0()); }
		(
			{ before(grammarAccess.getPropertyDefaultAccess().getStringTrueKeyword_2_2_0()); }
			'true'
			{ after(grammarAccess.getPropertyDefaultAccess().getStringTrueKeyword_2_2_0()); }
		)
		{ after(grammarAccess.getPropertyDefaultAccess().getStringTrueKeyword_2_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyDefault__StringAssignment_2_3
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyDefaultAccess().getStringFalseKeyword_2_3_0()); }
		(
			{ before(grammarAccess.getPropertyDefaultAccess().getStringFalseKeyword_2_3_0()); }
			'false'
			{ after(grammarAccess.getPropertyDefaultAccess().getStringFalseKeyword_2_3_0()); }
		)
		{ after(grammarAccess.getPropertyDefaultAccess().getStringFalseKeyword_2_3_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyUsage__ComponentsAssignment_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyUsageAccess().getComponentsPropertyComponentEnumRuleCall_2_0()); }
		rulePropertyComponent
		{ after(grammarAccess.getPropertyUsageAccess().getComponentsPropertyComponentEnumRuleCall_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyUsage__ComponentsAssignment_3_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyUsageAccess().getComponentsPropertyComponentEnumRuleCall_3_1_0()); }
		rulePropertyComponent
		{ after(grammarAccess.getPropertyUsageAccess().getComponentsPropertyComponentEnumRuleCall_3_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__TypeAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getComponentDefinitionAccess().getTypeComponentDefinitionTypeEnumRuleCall_0_0()); }
		ruleComponentDefinitionType
		{ after(grammarAccess.getComponentDefinitionAccess().getTypeComponentDefinitionTypeEnumRuleCall_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__NameAssignment_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getComponentDefinitionAccess().getNameIDTerminalRuleCall_1_0()); }
		RULE_ID
		{ after(grammarAccess.getComponentDefinitionAccess().getNameIDTerminalRuleCall_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__ComponentDefinitionsAssignment_3_0_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getComponentDefinitionAccess().getComponentDefinitionsComponentDefinitionParserRuleCall_3_0_0_0()); }
		ruleComponentDefinition
		{ after(grammarAccess.getComponentDefinitionAccess().getComponentDefinitionsComponentDefinitionParserRuleCall_3_0_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__InstantiationsAssignment_3_1_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getComponentDefinitionAccess().getInstantiationsInstantiationParserRuleCall_3_1_0_0()); }
		ruleInstantiation
		{ after(grammarAccess.getComponentDefinitionAccess().getInstantiationsInstantiationParserRuleCall_3_1_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__PropertyAssignmentsAssignment_3_2_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getComponentDefinitionAccess().getPropertyAssignmentsPropertyAssignmentParserRuleCall_3_2_0_0()); }
		rulePropertyAssignment
		{ after(grammarAccess.getComponentDefinitionAccess().getPropertyAssignmentsPropertyAssignmentParserRuleCall_3_2_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentDefinition__EnumDefinitionsAssignment_3_3_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getComponentDefinitionAccess().getEnumDefinitionsEnumDefinitionParserRuleCall_3_3_0_0()); }
		ruleEnumDefinition
		{ after(grammarAccess.getComponentDefinitionAccess().getEnumDefinitionsEnumDefinitionParserRuleCall_3_3_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__InstanceTypeAssignment_0_0_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getInstantiationAccess().getInstanceTypeEnumInstanceTypeParserRuleCall_0_0_0_0()); }
		ruleEnumInstanceType
		{ after(grammarAccess.getInstantiationAccess().getInstanceTypeEnumInstanceTypeParserRuleCall_0_0_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__AliasAssignment_0_0_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getInstantiationAccess().getAliasIDTerminalRuleCall_0_0_1_1_0()); }
		RULE_ID
		{ after(grammarAccess.getInstantiationAccess().getAliasIDTerminalRuleCall_0_0_1_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__ComponentRefAssignment_0_0_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getInstantiationAccess().getComponentRefComponentDefinitionCrossReference_0_0_2_0()); }
		(
			{ before(grammarAccess.getInstantiationAccess().getComponentRefComponentDefinitionIDTerminalRuleCall_0_0_2_0_1()); }
			RULE_ID
			{ after(grammarAccess.getInstantiationAccess().getComponentRefComponentDefinitionIDTerminalRuleCall_0_0_2_0_1()); }
		)
		{ after(grammarAccess.getInstantiationAccess().getComponentRefComponentDefinitionCrossReference_0_0_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__ComponentAssignment_0_1_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getInstantiationAccess().getComponentComponentDefinitionParserRuleCall_0_1_0_0()); }
		ruleComponentDefinition
		{ after(grammarAccess.getInstantiationAccess().getComponentComponentDefinitionParserRuleCall_0_1_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__InstanceTypeAssignment_0_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getInstantiationAccess().getInstanceTypeEnumInstanceTypeParserRuleCall_0_1_1_0()); }
		ruleEnumInstanceType
		{ after(grammarAccess.getInstantiationAccess().getInstanceTypeEnumInstanceTypeParserRuleCall_0_1_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__ComponentInstancesAssignment_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getInstantiationAccess().getComponentInstancesComponentInstanceParserRuleCall_1_0()); }
		ruleComponentInstance
		{ after(grammarAccess.getInstantiationAccess().getComponentInstancesComponentInstanceParserRuleCall_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Instantiation__ComponentInstancesAssignment_2_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getInstantiationAccess().getComponentInstancesComponentInstanceParserRuleCall_2_1_0()); }
		ruleComponentInstance
		{ after(grammarAccess.getInstantiationAccess().getComponentInstancesComponentInstanceParserRuleCall_2_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__NameAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getComponentInstanceAccess().getNameIDTerminalRuleCall_0_0()); }
		RULE_ID
		{ after(grammarAccess.getComponentInstanceAccess().getNameIDTerminalRuleCall_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__RangeAssignment_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getComponentInstanceAccess().getRangeRangeParserRuleCall_1_0()); }
		ruleRange
		{ after(grammarAccess.getComponentInstanceAccess().getRangeRangeParserRuleCall_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__ResetAssignment_2_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getComponentInstanceAccess().getResetNUMTerminalRuleCall_2_1_0()); }
		RULE_NUM
		{ after(grammarAccess.getComponentInstanceAccess().getResetNUMTerminalRuleCall_2_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__AddressAssignment_3_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getComponentInstanceAccess().getAddressNUMTerminalRuleCall_3_1_0()); }
		RULE_NUM
		{ after(grammarAccess.getComponentInstanceAccess().getAddressNUMTerminalRuleCall_3_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__AddrIncAssignment_4_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getComponentInstanceAccess().getAddrIncNUMTerminalRuleCall_4_1_0()); }
		RULE_NUM
		{ after(grammarAccess.getComponentInstanceAccess().getAddrIncNUMTerminalRuleCall_4_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ComponentInstance__AddrModAssignment_5_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getComponentInstanceAccess().getAddrModNUMTerminalRuleCall_5_1_0()); }
		RULE_NUM
		{ after(grammarAccess.getComponentInstanceAccess().getAddrModNUMTerminalRuleCall_5_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Range__LeftAssignment_1_0_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getRangeAccess().getLeftNUMTerminalRuleCall_1_0_0_0()); }
		RULE_NUM
		{ after(grammarAccess.getRangeAccess().getLeftNUMTerminalRuleCall_1_0_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Range__RightAssignment_1_0_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getRangeAccess().getRightNUMTerminalRuleCall_1_0_2_0()); }
		RULE_NUM
		{ after(grammarAccess.getRangeAccess().getRightNUMTerminalRuleCall_1_0_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Range__SizeAssignment_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getRangeAccess().getSizeNUMTerminalRuleCall_1_1_0()); }
		RULE_NUM
		{ after(grammarAccess.getRangeAccess().getSizeNUMTerminalRuleCall_1_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ExplicitPropertyAssignment__ModifierAssignment_0_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getExplicitPropertyAssignmentAccess().getModifierPropertyModifierEnumRuleCall_0_0_0()); }
		rulePropertyModifier
		{ after(grammarAccess.getExplicitPropertyAssignmentAccess().getModifierPropertyModifierEnumRuleCall_0_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ExplicitPropertyAssignment__NameAssignment_0_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getExplicitPropertyAssignmentAccess().getNamePropertyEnumRuleCall_0_1_0()); }
		ruleProperty
		{ after(grammarAccess.getExplicitPropertyAssignmentAccess().getNamePropertyEnumRuleCall_0_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ExplicitPropertyAssignment__NameAssignment_1_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getExplicitPropertyAssignmentAccess().getNamePropertyEnumRuleCall_1_0_0()); }
		ruleProperty
		{ after(grammarAccess.getExplicitPropertyAssignmentAccess().getNamePropertyEnumRuleCall_1_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ExplicitPropertyAssignment__RhsAssignment_1_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getExplicitPropertyAssignmentAccess().getRhsPropertyAssignmentRhsParserRuleCall_1_1_1_0()); }
		rulePropertyAssignmentRhs
		{ after(grammarAccess.getExplicitPropertyAssignmentAccess().getRhsPropertyAssignmentRhsParserRuleCall_1_1_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__InstanceAssignment_0_0_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPostPropertyAssignmentAccess().getInstanceHierInstanceRefParserRuleCall_0_0_0_0()); }
		ruleHierInstanceRef
		{ after(grammarAccess.getPostPropertyAssignmentAccess().getInstanceHierInstanceRefParserRuleCall_0_0_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__PropertyEnumAssignment_0_0_2_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPostPropertyAssignmentAccess().getPropertyEnumPropertyEnumRuleCall_0_0_2_0_0()); }
		ruleProperty
		{ after(grammarAccess.getPostPropertyAssignmentAccess().getPropertyEnumPropertyEnumRuleCall_0_0_2_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__PropertyAssignment_0_0_2_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPostPropertyAssignmentAccess().getPropertyPropertyDefinitionCrossReference_0_0_2_1_0()); }
		(
			{ before(grammarAccess.getPostPropertyAssignmentAccess().getPropertyPropertyDefinitionIDTerminalRuleCall_0_0_2_1_0_1()); }
			RULE_ID
			{ after(grammarAccess.getPostPropertyAssignmentAccess().getPropertyPropertyDefinitionIDTerminalRuleCall_0_0_2_1_0_1()); }
		)
		{ after(grammarAccess.getPostPropertyAssignmentAccess().getPropertyPropertyDefinitionCrossReference_0_0_2_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__PropertyAssignment_0_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPostPropertyAssignmentAccess().getPropertyPropertyDefinitionCrossReference_0_1_0()); }
		(
			{ before(grammarAccess.getPostPropertyAssignmentAccess().getPropertyPropertyDefinitionIDTerminalRuleCall_0_1_0_1()); }
			RULE_ID
			{ after(grammarAccess.getPostPropertyAssignmentAccess().getPropertyPropertyDefinitionIDTerminalRuleCall_0_1_0_1()); }
		)
		{ after(grammarAccess.getPostPropertyAssignmentAccess().getPropertyPropertyDefinitionCrossReference_0_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PostPropertyAssignment__RhsAssignment_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPostPropertyAssignmentAccess().getRhsPropertyAssignmentRhsParserRuleCall_1_1_0()); }
		rulePropertyAssignmentRhs
		{ after(grammarAccess.getPostPropertyAssignmentAccess().getRhsPropertyAssignmentRhsParserRuleCall_1_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__InstancePropertyRef__InstanceAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getInstancePropertyRefAccess().getInstanceInstanceRefParserRuleCall_0_0()); }
		ruleInstanceRef
		{ after(grammarAccess.getInstancePropertyRefAccess().getInstanceInstanceRefParserRuleCall_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__InstancePropertyRef__PropertyEnumAssignment_1_1_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getInstancePropertyRefAccess().getPropertyEnumPropertyEnumRuleCall_1_1_0_0()); }
		ruleProperty
		{ after(grammarAccess.getInstancePropertyRefAccess().getPropertyEnumPropertyEnumRuleCall_1_1_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__InstancePropertyRef__PropertyAssignment_1_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getInstancePropertyRefAccess().getPropertyPropertyDefinitionCrossReference_1_1_1_0()); }
		(
			{ before(grammarAccess.getInstancePropertyRefAccess().getPropertyPropertyDefinitionIDTerminalRuleCall_1_1_1_0_1()); }
			RULE_ID
			{ after(grammarAccess.getInstancePropertyRefAccess().getPropertyPropertyDefinitionIDTerminalRuleCall_1_1_1_0_1()); }
		)
		{ after(grammarAccess.getInstancePropertyRefAccess().getPropertyPropertyDefinitionCrossReference_1_1_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__InstanceRef__InstanceAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getInstanceRefAccess().getInstanceEntityCrossReference_0_0()); }
		(
			{ before(grammarAccess.getInstanceRefAccess().getInstanceEntityIDTerminalRuleCall_0_0_1()); }
			RULE_ID
			{ after(grammarAccess.getInstanceRefAccess().getInstanceEntityIDTerminalRuleCall_0_0_1()); }
		)
		{ after(grammarAccess.getInstanceRefAccess().getInstanceEntityCrossReference_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__InstanceRef__TailAssignment_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getInstanceRefAccess().getTailHierInstanceRefParserRuleCall_1_1_0()); }
		ruleHierInstanceRef
		{ after(grammarAccess.getInstanceRefAccess().getTailHierInstanceRefParserRuleCall_1_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__HierInstanceRef__InstanceAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getHierInstanceRefAccess().getInstanceComponentInstanceCrossReference_0_0()); }
		(
			{ before(grammarAccess.getHierInstanceRefAccess().getInstanceComponentInstanceIDTerminalRuleCall_0_0_1()); }
			RULE_ID
			{ after(grammarAccess.getHierInstanceRefAccess().getInstanceComponentInstanceIDTerminalRuleCall_0_0_1()); }
		)
		{ after(grammarAccess.getHierInstanceRefAccess().getInstanceComponentInstanceCrossReference_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__HierInstanceRef__TailAssignment_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getHierInstanceRefAccess().getTailHierInstanceRefParserRuleCall_1_1_0()); }
		ruleHierInstanceRef
		{ after(grammarAccess.getHierInstanceRefAccess().getTailHierInstanceRefParserRuleCall_1_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyAssignmentRhs__ValueAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyAssignmentRhsAccess().getValuePropertyRvalueConstantParserRuleCall_0_0()); }
		rulePropertyRvalueConstant
		{ after(grammarAccess.getPropertyAssignmentRhsAccess().getValuePropertyRvalueConstantParserRuleCall_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyAssignmentRhs__InstPropRefAssignment_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyAssignmentRhsAccess().getInstPropRefInstancePropertyRefParserRuleCall_1_0()); }
		ruleInstancePropertyRef
		{ after(grammarAccess.getPropertyAssignmentRhsAccess().getInstPropRefInstancePropertyRefParserRuleCall_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyAssignmentRhs__EnumRefAssignment_2_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyAssignmentRhsAccess().getEnumRefEnumDefinitionCrossReference_2_0_0()); }
		(
			{ before(grammarAccess.getPropertyAssignmentRhsAccess().getEnumRefEnumDefinitionIDTerminalRuleCall_2_0_0_1()); }
			RULE_ID
			{ after(grammarAccess.getPropertyAssignmentRhsAccess().getEnumRefEnumDefinitionIDTerminalRuleCall_2_0_0_1()); }
		)
		{ after(grammarAccess.getPropertyAssignmentRhsAccess().getEnumRefEnumDefinitionCrossReference_2_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyAssignmentRhs__EnumsAssignment_2_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyAssignmentRhsAccess().getEnumsEnumBodyParserRuleCall_2_2_0()); }
		ruleEnumBody
		{ after(grammarAccess.getPropertyAssignmentRhsAccess().getEnumsEnumBodyParserRuleCall_2_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyAssignmentRhs__ElementsAssignment_3
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyAssignmentRhsAccess().getElementsConcatParserRuleCall_3_0()); }
		ruleConcat
		{ after(grammarAccess.getPropertyAssignmentRhsAccess().getElementsConcatParserRuleCall_3_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Concat__ElementsAssignment_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getConcatAccess().getElementsConcatElemParserRuleCall_1_0()); }
		ruleConcatElem
		{ after(grammarAccess.getConcatAccess().getElementsConcatElemParserRuleCall_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Concat__ElementsAssignment_2_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getConcatAccess().getElementsConcatElemParserRuleCall_2_1_0()); }
		ruleConcatElem
		{ after(grammarAccess.getConcatAccess().getElementsConcatElemParserRuleCall_2_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ConcatElem__InstPropRefAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getConcatElemAccess().getInstPropRefInstancePropertyRefParserRuleCall_0_0()); }
		ruleInstancePropertyRef
		{ after(grammarAccess.getConcatElemAccess().getInstPropRefInstancePropertyRefParserRuleCall_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ConcatElem__ValueAssignment_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getConcatElemAccess().getValueNUMTerminalRuleCall_1_0()); }
		RULE_NUM
		{ after(grammarAccess.getConcatElemAccess().getValueNUMTerminalRuleCall_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyRvalueConstant__ValAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyRvalueConstantAccess().getValRValueConstantEnumRuleCall_0_0()); }
		ruleRValueConstant
		{ after(grammarAccess.getPropertyRvalueConstantAccess().getValRValueConstantEnumRuleCall_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyRvalueConstant__NumAssignment_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyRvalueConstantAccess().getNumNUMTerminalRuleCall_1_0()); }
		RULE_NUM
		{ after(grammarAccess.getPropertyRvalueConstantAccess().getNumNUMTerminalRuleCall_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PropertyRvalueConstant__StrAssignment_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPropertyRvalueConstantAccess().getStrSTRTerminalRuleCall_2_0()); }
		RULE_STR
		{ after(grammarAccess.getPropertyRvalueConstantAccess().getStrSTRTerminalRuleCall_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumDefinition__NameAssignment_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getEnumDefinitionAccess().getNameIDTerminalRuleCall_1_0()); }
		RULE_ID
		{ after(grammarAccess.getEnumDefinitionAccess().getNameIDTerminalRuleCall_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumDefinition__BodyAssignment_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getEnumDefinitionAccess().getBodyEnumBodyParserRuleCall_2_0()); }
		ruleEnumBody
		{ after(grammarAccess.getEnumDefinitionAccess().getBodyEnumBodyParserRuleCall_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumBody__EntriesAssignment_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getEnumBodyAccess().getEntriesEnumEntryParserRuleCall_2_0()); }
		ruleEnumEntry
		{ after(grammarAccess.getEnumBodyAccess().getEntriesEnumEntryParserRuleCall_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__NameAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getEnumEntryAccess().getNameIDTerminalRuleCall_0_0()); }
		RULE_ID
		{ after(grammarAccess.getEnumEntryAccess().getNameIDTerminalRuleCall_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__IndexAssignment_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getEnumEntryAccess().getIndexNUMTerminalRuleCall_2_0()); }
		RULE_NUM
		{ after(grammarAccess.getEnumEntryAccess().getIndexNUMTerminalRuleCall_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumEntry__PropertiesAssignment_3_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getEnumEntryAccess().getPropertiesEnumPropertyParserRuleCall_3_1_0()); }
		ruleEnumProperty
		{ after(grammarAccess.getEnumEntryAccess().getPropertiesEnumPropertyParserRuleCall_3_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__NameAssignment_0_0_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getEnumPropertyAccess().getNameNameKeyword_0_0_0_0()); }
		(
			{ before(grammarAccess.getEnumPropertyAccess().getNameNameKeyword_0_0_0_0()); }
			'name'
			{ after(grammarAccess.getEnumPropertyAccess().getNameNameKeyword_0_0_0_0()); }
		)
		{ after(grammarAccess.getEnumPropertyAccess().getNameNameKeyword_0_0_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__ValueAssignment_0_0_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getEnumPropertyAccess().getValueSTRTerminalRuleCall_0_0_2_0()); }
		RULE_STR
		{ after(grammarAccess.getEnumPropertyAccess().getValueSTRTerminalRuleCall_0_0_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__NameAssignment_0_1_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getEnumPropertyAccess().getNameDescKeyword_0_1_0_0()); }
		(
			{ before(grammarAccess.getEnumPropertyAccess().getNameDescKeyword_0_1_0_0()); }
			'desc'
			{ after(grammarAccess.getEnumPropertyAccess().getNameDescKeyword_0_1_0_0()); }
		)
		{ after(grammarAccess.getEnumPropertyAccess().getNameDescKeyword_0_1_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumProperty__ValueAssignment_0_1_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getEnumPropertyAccess().getValueSTRTerminalRuleCall_0_1_2_0()); }
		RULE_STR
		{ after(grammarAccess.getEnumPropertyAccess().getValueSTRTerminalRuleCall_0_1_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumInstanceType__EXTERNALAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getEnumInstanceTypeAccess().getEXTERNALExternalKeyword_0_0()); }
		(
			{ before(grammarAccess.getEnumInstanceTypeAccess().getEXTERNALExternalKeyword_0_0()); }
			'external'
			{ after(grammarAccess.getEnumInstanceTypeAccess().getEXTERNALExternalKeyword_0_0()); }
		)
		{ after(grammarAccess.getEnumInstanceTypeAccess().getEXTERNALExternalKeyword_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__EnumInstanceType__INTERNALAssignment_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getEnumInstanceTypeAccess().getINTERNALInternalKeyword_1_0()); }
		(
			{ before(grammarAccess.getEnumInstanceTypeAccess().getINTERNALInternalKeyword_1_0()); }
			'internal'
			{ after(grammarAccess.getEnumInstanceTypeAccess().getINTERNALInternalKeyword_1_0()); }
		)
		{ after(grammarAccess.getEnumInstanceTypeAccess().getINTERNALInternalKeyword_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

RULE_ID : '\\'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;

RULE_WS : (' '|'\t'|'\r'|'\n')+;

RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';

RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;

RULE_ESCAPE_JSP : '<%' ( options {greedy=false;} : . )*'%>';

RULE_ESCAPE_ORDL : '(' ( options {greedy=false;} : . )*')';

RULE_NUM : (('0'..'9')+ '\'b' ('0'|'1'|'_')+|('0'..'9')+ '\'o' ('0'..'7'|'_')+|('0'..'9')+ '\'h' ('0'..'9'|'a'..'f'|'A'..'F'|'_')+|('0'..'9')+ '\'d' ('0'..'9'|'_')+|'0x' ('0'..'9'|'a'..'f'|'A'..'F')+|('0'..'9')+);

RULE_STR : '"' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'"')))* '"';
