/*
 * generated by Xtext 2.12.0
 */
grammar InternalMapping;

options {
	superClass=AbstractInternalContentAssistParser;
}

@lexer::header {
package com.irtsaintexupery.xtext.pseim.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.irtsaintexupery.xtext.pseim.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.irtsaintexupery.xtext.pseim.services.MappingGrammarAccess;

}
@parser::members {
	private MappingGrammarAccess grammarAccess;

	public void setGrammarAccess(MappingGrammarAccess grammarAccess) {
		this.grammarAccess = grammarAccess;
	}

	@Override
	protected Grammar getGrammar() {
		return grammarAccess.getGrammar();
	}

	@Override
	protected String getValueForTokenName(String tokenName) {
		return tokenName;
	}
}

// Entry rule entryRulePatternApplication
entryRulePatternApplication
:
{ before(grammarAccess.getPatternApplicationRule()); }
	 rulePatternApplication
{ after(grammarAccess.getPatternApplicationRule()); } 
	 EOF 
;

// Rule PatternApplication
rulePatternApplication 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getPatternApplicationAccess().getGroup()); }
		(rule__PatternApplication__Group__0)
		{ after(grammarAccess.getPatternApplicationAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleCardinalityValue
entryRuleCardinalityValue
:
{ before(grammarAccess.getCardinalityValueRule()); }
	 ruleCardinalityValue
{ after(grammarAccess.getCardinalityValueRule()); } 
	 EOF 
;

// Rule CardinalityValue
ruleCardinalityValue 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getCardinalityValueAccess().getGroup()); }
		(rule__CardinalityValue__Group__0)
		{ after(grammarAccess.getCardinalityValueAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRulePortMapping
entryRulePortMapping
:
{ before(grammarAccess.getPortMappingRule()); }
	 rulePortMapping
{ after(grammarAccess.getPortMappingRule()); } 
	 EOF 
;

// Rule PortMapping
rulePortMapping 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getPortMappingAccess().getGroup()); }
		(rule__PortMapping__Group__0)
		{ after(grammarAccess.getPortMappingAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleGraphElementMapping
entryRuleGraphElementMapping
:
{ before(grammarAccess.getGraphElementMappingRule()); }
	 ruleGraphElementMapping
{ after(grammarAccess.getGraphElementMappingRule()); } 
	 EOF 
;

// Rule GraphElementMapping
ruleGraphElementMapping 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getGraphElementMappingAccess().getGroup()); }
		(rule__GraphElementMapping__Group__0)
		{ after(grammarAccess.getGraphElementMappingAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleEInt
entryRuleEInt
:
{ before(grammarAccess.getEIntRule()); }
	 ruleEInt
{ after(grammarAccess.getEIntRule()); } 
	 EOF 
;

// Rule EInt
ruleEInt 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getEIntAccess().getGroup()); }
		(rule__EInt__Group__0)
		{ after(grammarAccess.getEIntAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleQualifiedID
entryRuleQualifiedID
:
{ before(grammarAccess.getQualifiedIDRule()); }
	 ruleQualifiedID
{ after(grammarAccess.getQualifiedIDRule()); } 
	 EOF 
;

// Rule QualifiedID
ruleQualifiedID 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getQualifiedIDAccess().getGroup()); }
		(rule__QualifiedID__Group__0)
		{ after(grammarAccess.getQualifiedIDAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group__0__Impl
	rule__PatternApplication__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getTransformKeyword_0()); }
	'transform'
	{ after(grammarAccess.getPatternApplicationAccess().getTransformKeyword_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group__1__Impl
	rule__PatternApplication__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getModelAssignment_1()); }
	(rule__PatternApplication__ModelAssignment_1)
	{ after(grammarAccess.getPatternApplicationAccess().getModelAssignment_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group__2__Impl
	rule__PatternApplication__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getUsingKeyword_2()); }
	'using'
	{ after(grammarAccess.getPatternApplicationAccess().getUsingKeyword_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group__3__Impl
	rule__PatternApplication__Group__4
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getPatternAssignment_3()); }
	(rule__PatternApplication__PatternAssignment_3)
	{ after(grammarAccess.getPatternApplicationAccess().getPatternAssignment_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__4
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group__4__Impl
	rule__PatternApplication__Group__5
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__4__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getLeftCurlyBracketKeyword_4()); }
	'{'
	{ after(grammarAccess.getPatternApplicationAccess().getLeftCurlyBracketKeyword_4()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__5
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group__5__Impl
	rule__PatternApplication__Group__6
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__5__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getGroup_5()); }
	(rule__PatternApplication__Group_5__0)?
	{ after(grammarAccess.getPatternApplicationAccess().getGroup_5()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__6
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group__6__Impl
	rule__PatternApplication__Group__7
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__6__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getGroup_6()); }
	(rule__PatternApplication__Group_6__0)?
	{ after(grammarAccess.getPatternApplicationAccess().getGroup_6()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__7
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group__7__Impl
	rule__PatternApplication__Group__8
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__7__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getGroup_7()); }
	(rule__PatternApplication__Group_7__0)?
	{ after(grammarAccess.getPatternApplicationAccess().getGroup_7()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__8
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group__8__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group__8__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getRightCurlyBracketKeyword_8()); }
	'}'
	{ after(grammarAccess.getPatternApplicationAccess().getRightCurlyBracketKeyword_8()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PatternApplication__Group_5__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group_5__0__Impl
	rule__PatternApplication__Group_5__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group_5__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getMultiplicityKeyword_5_0()); }
	'multiplicity'
	{ after(grammarAccess.getPatternApplicationAccess().getMultiplicityKeyword_5_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group_5__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group_5__1__Impl
	rule__PatternApplication__Group_5__2
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group_5__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getCardinalityValuesAssignment_5_1()); }
	(rule__PatternApplication__CardinalityValuesAssignment_5_1)
	{ after(grammarAccess.getPatternApplicationAccess().getCardinalityValuesAssignment_5_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group_5__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group_5__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group_5__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getCardinalityValuesAssignment_5_2()); }
	(rule__PatternApplication__CardinalityValuesAssignment_5_2)*
	{ after(grammarAccess.getPatternApplicationAccess().getCardinalityValuesAssignment_5_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PatternApplication__Group_6__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group_6__0__Impl
	rule__PatternApplication__Group_6__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group_6__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getComponentsKeyword_6_0()); }
	'components'
	{ after(grammarAccess.getPatternApplicationAccess().getComponentsKeyword_6_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group_6__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group_6__1__Impl
	rule__PatternApplication__Group_6__2
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group_6__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getModelElementAssignment_6_1()); }
	(rule__PatternApplication__ModelElementAssignment_6_1)
	{ after(grammarAccess.getPatternApplicationAccess().getModelElementAssignment_6_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group_6__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group_6__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group_6__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getModelElementAssignment_6_2()); }
	(rule__PatternApplication__ModelElementAssignment_6_2)*
	{ after(grammarAccess.getPatternApplicationAccess().getModelElementAssignment_6_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PatternApplication__Group_7__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group_7__0__Impl
	rule__PatternApplication__Group_7__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group_7__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getPortsKeyword_7_0()); }
	'ports'
	{ after(grammarAccess.getPatternApplicationAccess().getPortsKeyword_7_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group_7__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group_7__1__Impl
	rule__PatternApplication__Group_7__2
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group_7__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getPortMappingAssignment_7_1()); }
	(rule__PatternApplication__PortMappingAssignment_7_1)
	{ after(grammarAccess.getPatternApplicationAccess().getPortMappingAssignment_7_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group_7__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PatternApplication__Group_7__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__Group_7__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPatternApplicationAccess().getPortMappingAssignment_7_2()); }
	(rule__PatternApplication__PortMappingAssignment_7_2)*
	{ after(grammarAccess.getPatternApplicationAccess().getPortMappingAssignment_7_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__CardinalityValue__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__CardinalityValue__Group__0__Impl
	rule__CardinalityValue__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__CardinalityValue__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getCardinalityValueAccess().getCardinalityElementAssignment_0()); }
	(rule__CardinalityValue__CardinalityElementAssignment_0)
	{ after(grammarAccess.getCardinalityValueAccess().getCardinalityElementAssignment_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__CardinalityValue__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__CardinalityValue__Group__1__Impl
	rule__CardinalityValue__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__CardinalityValue__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getCardinalityValueAccess().getHyphenMinusGreaterThanSignKeyword_1()); }
	'->'
	{ after(grammarAccess.getCardinalityValueAccess().getHyphenMinusGreaterThanSignKeyword_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__CardinalityValue__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__CardinalityValue__Group__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__CardinalityValue__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getCardinalityValueAccess().getValueAssignment_2()); }
	(rule__CardinalityValue__ValueAssignment_2)
	{ after(grammarAccess.getCardinalityValueAccess().getValueAssignment_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PortMapping__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PortMapping__Group__0__Impl
	rule__PortMapping__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PortMapping__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPortMappingAccess().getModelPortAssignment_0()); }
	(rule__PortMapping__ModelPortAssignment_0)
	{ after(grammarAccess.getPortMappingAccess().getModelPortAssignment_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PortMapping__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PortMapping__Group__1__Impl
	rule__PortMapping__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__PortMapping__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPortMappingAccess().getGroup_1()); }
	(rule__PortMapping__Group_1__0)*
	{ after(grammarAccess.getPortMappingAccess().getGroup_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PortMapping__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PortMapping__Group__2__Impl
	rule__PortMapping__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__PortMapping__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPortMappingAccess().getHyphenMinusGreaterThanSignKeyword_2()); }
	'->'
	{ after(grammarAccess.getPortMappingAccess().getHyphenMinusGreaterThanSignKeyword_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PortMapping__Group__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PortMapping__Group__3__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PortMapping__Group__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPortMappingAccess().getPatternPortAssignment_3()); }
	(rule__PortMapping__PatternPortAssignment_3)
	{ after(grammarAccess.getPortMappingAccess().getPatternPortAssignment_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PortMapping__Group_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PortMapping__Group_1__0__Impl
	rule__PortMapping__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__PortMapping__Group_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPortMappingAccess().getCommaKeyword_1_0()); }
	','
	{ after(grammarAccess.getPortMappingAccess().getCommaKeyword_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__PortMapping__Group_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__PortMapping__Group_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__PortMapping__Group_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getPortMappingAccess().getModelPortAssignment_1_1()); }
	(rule__PortMapping__ModelPortAssignment_1_1)
	{ after(grammarAccess.getPortMappingAccess().getModelPortAssignment_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__GraphElementMapping__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__GraphElementMapping__Group__0__Impl
	rule__GraphElementMapping__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__GraphElementMapping__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getGraphElementMappingAccess().getModelGraphElementAssignment_0()); }
	(rule__GraphElementMapping__ModelGraphElementAssignment_0)
	{ after(grammarAccess.getGraphElementMappingAccess().getModelGraphElementAssignment_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__GraphElementMapping__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__GraphElementMapping__Group__1__Impl
	rule__GraphElementMapping__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__GraphElementMapping__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getGraphElementMappingAccess().getGroup_1()); }
	(rule__GraphElementMapping__Group_1__0)*
	{ after(grammarAccess.getGraphElementMappingAccess().getGroup_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__GraphElementMapping__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__GraphElementMapping__Group__2__Impl
	rule__GraphElementMapping__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__GraphElementMapping__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getGraphElementMappingAccess().getHyphenMinusGreaterThanSignKeyword_2()); }
	'->'
	{ after(grammarAccess.getGraphElementMappingAccess().getHyphenMinusGreaterThanSignKeyword_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__GraphElementMapping__Group__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__GraphElementMapping__Group__3__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__GraphElementMapping__Group__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getGraphElementMappingAccess().getPatternGraphElementAssignment_3()); }
	(rule__GraphElementMapping__PatternGraphElementAssignment_3)
	{ after(grammarAccess.getGraphElementMappingAccess().getPatternGraphElementAssignment_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__GraphElementMapping__Group_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__GraphElementMapping__Group_1__0__Impl
	rule__GraphElementMapping__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__GraphElementMapping__Group_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getGraphElementMappingAccess().getCommaKeyword_1_0()); }
	','
	{ after(grammarAccess.getGraphElementMappingAccess().getCommaKeyword_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__GraphElementMapping__Group_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__GraphElementMapping__Group_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__GraphElementMapping__Group_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getGraphElementMappingAccess().getModelGraphElementAssignment_1_1()); }
	(rule__GraphElementMapping__ModelGraphElementAssignment_1_1)
	{ after(grammarAccess.getGraphElementMappingAccess().getModelGraphElementAssignment_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__EInt__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EInt__Group__0__Impl
	rule__EInt__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__EInt__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEIntAccess().getHyphenMinusKeyword_0()); }
	('-')?
	{ after(grammarAccess.getEIntAccess().getHyphenMinusKeyword_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__EInt__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__EInt__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__EInt__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getEIntAccess().getINTTerminalRuleCall_1()); }
	RULE_INT
	{ after(grammarAccess.getEIntAccess().getINTTerminalRuleCall_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__QualifiedID__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__QualifiedID__Group__0__Impl
	rule__QualifiedID__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__QualifiedID__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getQualifiedIDAccess().getIDTerminalRuleCall_0()); }
	RULE_ID
	{ after(grammarAccess.getQualifiedIDAccess().getIDTerminalRuleCall_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__QualifiedID__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__QualifiedID__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__QualifiedID__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getQualifiedIDAccess().getGroup_1()); }
	(rule__QualifiedID__Group_1__0)*
	{ after(grammarAccess.getQualifiedIDAccess().getGroup_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__QualifiedID__Group_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__QualifiedID__Group_1__0__Impl
	rule__QualifiedID__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

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

rule__QualifiedID__Group_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__QualifiedID__Group_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__QualifiedID__Group_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getQualifiedIDAccess().getIDTerminalRuleCall_1_1()); }
	RULE_ID
	{ after(grammarAccess.getQualifiedIDAccess().getIDTerminalRuleCall_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__PatternApplication__ModelAssignment_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPatternApplicationAccess().getModelModelCrossReference_1_0()); }
		(
			{ before(grammarAccess.getPatternApplicationAccess().getModelModelIDTerminalRuleCall_1_0_1()); }
			RULE_ID
			{ after(grammarAccess.getPatternApplicationAccess().getModelModelIDTerminalRuleCall_1_0_1()); }
		)
		{ after(grammarAccess.getPatternApplicationAccess().getModelModelCrossReference_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__PatternAssignment_3
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPatternApplicationAccess().getPatternPatternCrossReference_3_0()); }
		(
			{ before(grammarAccess.getPatternApplicationAccess().getPatternPatternIDTerminalRuleCall_3_0_1()); }
			RULE_ID
			{ after(grammarAccess.getPatternApplicationAccess().getPatternPatternIDTerminalRuleCall_3_0_1()); }
		)
		{ after(grammarAccess.getPatternApplicationAccess().getPatternPatternCrossReference_3_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__CardinalityValuesAssignment_5_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPatternApplicationAccess().getCardinalityValuesCardinalityValueParserRuleCall_5_1_0()); }
		ruleCardinalityValue
		{ after(grammarAccess.getPatternApplicationAccess().getCardinalityValuesCardinalityValueParserRuleCall_5_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__CardinalityValuesAssignment_5_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPatternApplicationAccess().getCardinalityValuesCardinalityValueParserRuleCall_5_2_0()); }
		ruleCardinalityValue
		{ after(grammarAccess.getPatternApplicationAccess().getCardinalityValuesCardinalityValueParserRuleCall_5_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__ModelElementAssignment_6_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPatternApplicationAccess().getModelElementGraphElementMappingParserRuleCall_6_1_0()); }
		ruleGraphElementMapping
		{ after(grammarAccess.getPatternApplicationAccess().getModelElementGraphElementMappingParserRuleCall_6_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__ModelElementAssignment_6_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPatternApplicationAccess().getModelElementGraphElementMappingParserRuleCall_6_2_0()); }
		ruleGraphElementMapping
		{ after(grammarAccess.getPatternApplicationAccess().getModelElementGraphElementMappingParserRuleCall_6_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__PortMappingAssignment_7_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPatternApplicationAccess().getPortMappingPortMappingParserRuleCall_7_1_0()); }
		rulePortMapping
		{ after(grammarAccess.getPatternApplicationAccess().getPortMappingPortMappingParserRuleCall_7_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PatternApplication__PortMappingAssignment_7_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPatternApplicationAccess().getPortMappingPortMappingParserRuleCall_7_2_0()); }
		rulePortMapping
		{ after(grammarAccess.getPatternApplicationAccess().getPortMappingPortMappingParserRuleCall_7_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__CardinalityValue__CardinalityElementAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getCardinalityValueAccess().getCardinalityElementCardinalityElementCrossReference_0_0()); }
		(
			{ before(grammarAccess.getCardinalityValueAccess().getCardinalityElementCardinalityElementQualifiedIDParserRuleCall_0_0_1()); }
			ruleQualifiedID
			{ after(grammarAccess.getCardinalityValueAccess().getCardinalityElementCardinalityElementQualifiedIDParserRuleCall_0_0_1()); }
		)
		{ after(grammarAccess.getCardinalityValueAccess().getCardinalityElementCardinalityElementCrossReference_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__CardinalityValue__ValueAssignment_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getCardinalityValueAccess().getValueEIntParserRuleCall_2_0()); }
		ruleEInt
		{ after(grammarAccess.getCardinalityValueAccess().getValueEIntParserRuleCall_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PortMapping__ModelPortAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPortMappingAccess().getModelPortBorderElementCrossReference_0_0()); }
		(
			{ before(grammarAccess.getPortMappingAccess().getModelPortBorderElementQualifiedIDParserRuleCall_0_0_1()); }
			ruleQualifiedID
			{ after(grammarAccess.getPortMappingAccess().getModelPortBorderElementQualifiedIDParserRuleCall_0_0_1()); }
		)
		{ after(grammarAccess.getPortMappingAccess().getModelPortBorderElementCrossReference_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PortMapping__ModelPortAssignment_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPortMappingAccess().getModelPortBorderElementCrossReference_1_1_0()); }
		(
			{ before(grammarAccess.getPortMappingAccess().getModelPortBorderElementQualifiedIDParserRuleCall_1_1_0_1()); }
			ruleQualifiedID
			{ after(grammarAccess.getPortMappingAccess().getModelPortBorderElementQualifiedIDParserRuleCall_1_1_0_1()); }
		)
		{ after(grammarAccess.getPortMappingAccess().getModelPortBorderElementCrossReference_1_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__PortMapping__PatternPortAssignment_3
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getPortMappingAccess().getPatternPortBorderElementCrossReference_3_0()); }
		(
			{ before(grammarAccess.getPortMappingAccess().getPatternPortBorderElementQualifiedIDParserRuleCall_3_0_1()); }
			ruleQualifiedID
			{ after(grammarAccess.getPortMappingAccess().getPatternPortBorderElementQualifiedIDParserRuleCall_3_0_1()); }
		)
		{ after(grammarAccess.getPortMappingAccess().getPatternPortBorderElementCrossReference_3_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__GraphElementMapping__ModelGraphElementAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getGraphElementMappingAccess().getModelGraphElementGraphElementCrossReference_0_0()); }
		(
			{ before(grammarAccess.getGraphElementMappingAccess().getModelGraphElementGraphElementQualifiedIDParserRuleCall_0_0_1()); }
			ruleQualifiedID
			{ after(grammarAccess.getGraphElementMappingAccess().getModelGraphElementGraphElementQualifiedIDParserRuleCall_0_0_1()); }
		)
		{ after(grammarAccess.getGraphElementMappingAccess().getModelGraphElementGraphElementCrossReference_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__GraphElementMapping__ModelGraphElementAssignment_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getGraphElementMappingAccess().getModelGraphElementGraphElementCrossReference_1_1_0()); }
		(
			{ before(grammarAccess.getGraphElementMappingAccess().getModelGraphElementGraphElementQualifiedIDParserRuleCall_1_1_0_1()); }
			ruleQualifiedID
			{ after(grammarAccess.getGraphElementMappingAccess().getModelGraphElementGraphElementQualifiedIDParserRuleCall_1_1_0_1()); }
		)
		{ after(grammarAccess.getGraphElementMappingAccess().getModelGraphElementGraphElementCrossReference_1_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__GraphElementMapping__PatternGraphElementAssignment_3
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getGraphElementMappingAccess().getPatternGraphElementGraphElementCrossReference_3_0()); }
		(
			{ before(grammarAccess.getGraphElementMappingAccess().getPatternGraphElementGraphElementQualifiedIDParserRuleCall_3_0_1()); }
			ruleQualifiedID
			{ after(grammarAccess.getGraphElementMappingAccess().getPatternGraphElementGraphElementQualifiedIDParserRuleCall_3_0_1()); }
		)
		{ after(grammarAccess.getGraphElementMappingAccess().getPatternGraphElementGraphElementCrossReference_3_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

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

RULE_INT : ('0'..'9')+;

RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'|'\'' ('\\' .|~(('\\'|'\'')))* '\'');

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

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

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

RULE_ANY_OTHER : .;
