Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/.classpath
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/.classpath	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/.classpath	(revision 61)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="src" path="xtend-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/.project
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/.project	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/.project	(revision 61)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>de.ugoe.cs.swe.bnftools.ebnf.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+	</natures>
+</projectDescription>
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/.settings/org.eclipse.core.resources.prefs
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/.settings/org.eclipse.core.resources.prefs	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/.settings/org.eclipse.core.resources.prefs	(revision 61)
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/META-INF/MANIFEST.MF
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/META-INF/MANIFEST.MF	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/META-INF/MANIFEST.MF	(revision 61)
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: de.ugoe.cs.swe.bnftools.ebnf.ui
+Bundle-Vendor: My Company
+Bundle-Version: 1.0.0.qualifier
+Bundle-SymbolicName: de.ugoe.cs.swe.bnftools.ebnf.ui; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: de.ugoe.cs.swe.bnftools.ebnf;visibility:=reexport,
+ org.eclipse.xtext.ui,
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.xtext.ui.shared,
+ org.eclipse.ui,
+ org.eclipse.xtext.builder,
+ org.antlr.runtime,
+ org.eclipse.xtext.common.types.ui,
+ org.eclipse.xtext.ui.codetemplates.ui,
+ org.eclipse.compare
+Import-Package: org.apache.log4j,
+ org.eclipse.xtext.xbase.lib
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: de.ugoe.cs.swe.bnftools.ui.quickfix,
+ de.ugoe.cs.swe.bnftools.ui.contentassist,
+ de.ugoe.cs.swe.bnftools.ui.contentassist.antlr,
+ de.ugoe.cs.swe.bnftools.ui.internal
+Bundle-Activator: de.ugoe.cs.swe.bnftools.ui.internal.EbnfActivator
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/build.properties
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/build.properties	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/build.properties	(revision 61)
@@ -0,0 +1,6 @@
+source.. = src/,\
+          src-gen/,\
+          xtend-gen/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/plugin.xml
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/plugin.xml	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/plugin.xml	(revision 61)
@@ -0,0 +1,396 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="bnf"
+            id="de.ugoe.cs.swe.bnftools.Ebnf"
+            name="Ebnf Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="de.ugoe.cs.swe.bnftools.Ebnf.validate">
+         <activeWhen>
+            <reference
+                    definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="de.ugoe.cs.swe.bnftools.Ebnf.XtextEditor.opened" />
+	                <iterate>
+						<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+					</iterate>
+				</and>
+            </activeWhen>
+        </handler>
+    </extension>
+    <extension point="org.eclipse.core.expressions.definitions">
+        <definition id="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="de.ugoe.cs.swe.bnftools.Ebnf" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="de.ugoe.cs.swe.bnftools.Ebnf.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="de.ugoe.cs.swe.bnftools.Ebnf" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="de.ugoe.cs.swe.bnftools.Ebnf"
+            name="Ebnf">
+            <keywordReference id="de.ugoe.cs.swe.bnftools.ui.keyword_Ebnf"/>
+        </page>
+        <page
+            category="de.ugoe.cs.swe.bnftools.Ebnf"
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="de.ugoe.cs.swe.bnftools.Ebnf.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="de.ugoe.cs.swe.bnftools.ui.keyword_Ebnf"/>
+        </page>
+        <page
+            category="de.ugoe.cs.swe.bnftools.Ebnf"
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="de.ugoe.cs.swe.bnftools.Ebnf.templates"
+            name="Templates">
+            <keywordReference id="de.ugoe.cs.swe.bnftools.ui.keyword_Ebnf"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="de.ugoe.cs.swe.bnftools.Ebnf"
+            name="Ebnf">
+            <keywordReference id="de.ugoe.cs.swe.bnftools.ui.keyword_Ebnf"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension
+        point="org.eclipse.ui.keywords">
+        <keyword
+            id="de.ugoe.cs.swe.bnftools.ui.keyword_Ebnf"
+            label="Ebnf"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="de.ugoe.cs.swe.bnftools.Ebnf.validate"
+            name="Validate">
+      </command>
+      <!-- copy qualified name -->
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="de.ugoe.cs.swe.bnftools.Ebnf.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+                </reference>
+            </visibleWhen>
+         </command>  
+         </menuContribution>
+         <!-- copy qualified name -->
+         <menuContribution locationURI="popup:#TextEditorContext?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName" 
+         		style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="menu:edit?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            	style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="popup:org.eclipse.xtext.ui.outline?after=additions">
+			<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName" 
+				style="push" tooltip="Copy Qualified Name">
+         		<visibleWhen checkEnabled="false">
+	            	<and>
+	            		<reference definitionId="de.ugoe.cs.swe.bnftools.Ebnf.XtextEditor.opened" />
+						<iterate>
+							<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+						</iterate>
+					</and>
+				</visibleWhen>
+			</command>
+         </menuContribution>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+			<command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+				<visibleWhen checkEnabled="false">
+                	<reference definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="bnf">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="bnf">
+        </resourceServiceProvider>
+    </extension>
+
+
+	<!-- marker definitions for de.ugoe.cs.swe.bnftools.Ebnf -->
+	<extension
+	        id="ebnf.check.fast"
+	        name="Ebnf Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.fast"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="ebnf.check.normal"
+	        name="Ebnf Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.normal"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="ebnf.check.expensive"
+	        name="Ebnf Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.expensive"/>
+	    <persistent value="true"/>
+	</extension>
+
+   <extension
+         point="org.eclipse.xtext.builder.participant">
+      <participant
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant">
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="de.ugoe.cs.swe.bnftools.Ebnf"
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="de.ugoe.cs.swe.bnftools.Ebnf.compiler.preferencePage"
+            name="Compiler">
+            <keywordReference id="de.ugoe.cs.swe.bnftools.ui.keyword_Ebnf"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="de.ugoe.cs.swe.bnftools.Ebnf"
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="de.ugoe.cs.swe.bnftools.Ebnf.compiler.propertyPage"
+            name="Compiler">
+            <keywordReference id="de.ugoe.cs.swe.bnftools.ui.keyword_Ebnf"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+		<command
+			description="Open the quick outline."
+			id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+			name="Quick Outline">
+		</command>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+				style="push"
+				tooltip="Open Quick Outline">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for de.ugoe.cs.swe.bnftools.Ebnf -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="de.ugoe.cs.swe.bnftools.ui.ebnf.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="de.ugoe.cs.swe.bnftools.ui.ebnf.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="de.ugoe.cs.swe.bnftools.ui.ebnf.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+    <extension point="org.eclipse.ui.menus">
+         <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+         <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
+               style="push">
+            <visibleWhen checkEnabled="false">
+               <reference
+                     definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="de.ugoe.cs.swe.bnftools.Ebnf"
+	        class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="de.ugoe.cs.swe.bnftools.Ebnf.refactoring"
+	        name="Refactoring">
+	        <keywordReference id="de.ugoe.cs.swe.bnftools.ui.keyword_Ebnf"/>
+	    </page>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="de.ugoe.cs.swe.bnftools.Ebnf.compare.contentViewers"
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="bnf">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="de.ugoe.cs.swe.bnftools.Ebnf.compare.contentMergeViewers"
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="bnf" label="Ebnf Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="de.ugoe.cs.swe.bnftools.Ebnf.editors.documentProviders"
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="bnf">
+    </provider>
+  </extension>
+
+</plugin>
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/plugin.xml_gen
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/plugin.xml_gen	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/plugin.xml_gen	(revision 61)
@@ -0,0 +1,396 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="bnf"
+            id="de.ugoe.cs.swe.bnftools.Ebnf"
+            name="Ebnf Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="de.ugoe.cs.swe.bnftools.Ebnf.validate">
+         <activeWhen>
+            <reference
+                    definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="de.ugoe.cs.swe.bnftools.Ebnf.XtextEditor.opened" />
+	                <iterate>
+						<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+					</iterate>
+				</and>
+            </activeWhen>
+        </handler>
+    </extension>
+    <extension point="org.eclipse.core.expressions.definitions">
+        <definition id="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="de.ugoe.cs.swe.bnftools.Ebnf" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="de.ugoe.cs.swe.bnftools.Ebnf.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="de.ugoe.cs.swe.bnftools.Ebnf" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="de.ugoe.cs.swe.bnftools.Ebnf"
+            name="Ebnf">
+            <keywordReference id="de.ugoe.cs.swe.bnftools.ui.keyword_Ebnf"/>
+        </page>
+        <page
+            category="de.ugoe.cs.swe.bnftools.Ebnf"
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="de.ugoe.cs.swe.bnftools.Ebnf.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="de.ugoe.cs.swe.bnftools.ui.keyword_Ebnf"/>
+        </page>
+        <page
+            category="de.ugoe.cs.swe.bnftools.Ebnf"
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="de.ugoe.cs.swe.bnftools.Ebnf.templates"
+            name="Templates">
+            <keywordReference id="de.ugoe.cs.swe.bnftools.ui.keyword_Ebnf"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="de.ugoe.cs.swe.bnftools.Ebnf"
+            name="Ebnf">
+            <keywordReference id="de.ugoe.cs.swe.bnftools.ui.keyword_Ebnf"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension
+        point="org.eclipse.ui.keywords">
+        <keyword
+            id="de.ugoe.cs.swe.bnftools.ui.keyword_Ebnf"
+            label="Ebnf"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="de.ugoe.cs.swe.bnftools.Ebnf.validate"
+            name="Validate">
+      </command>
+      <!-- copy qualified name -->
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="de.ugoe.cs.swe.bnftools.Ebnf.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+                </reference>
+            </visibleWhen>
+         </command>  
+         </menuContribution>
+         <!-- copy qualified name -->
+         <menuContribution locationURI="popup:#TextEditorContext?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName" 
+         		style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="menu:edit?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            	style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="popup:org.eclipse.xtext.ui.outline?after=additions">
+			<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName" 
+				style="push" tooltip="Copy Qualified Name">
+         		<visibleWhen checkEnabled="false">
+	            	<and>
+	            		<reference definitionId="de.ugoe.cs.swe.bnftools.Ebnf.XtextEditor.opened" />
+						<iterate>
+							<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+						</iterate>
+					</and>
+				</visibleWhen>
+			</command>
+         </menuContribution>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+			<command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+				<visibleWhen checkEnabled="false">
+                	<reference definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="bnf">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="bnf">
+        </resourceServiceProvider>
+    </extension>
+
+
+	<!-- marker definitions for de.ugoe.cs.swe.bnftools.Ebnf -->
+	<extension
+	        id="ebnf.check.fast"
+	        name="Ebnf Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.fast"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="ebnf.check.normal"
+	        name="Ebnf Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.normal"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="ebnf.check.expensive"
+	        name="Ebnf Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.expensive"/>
+	    <persistent value="true"/>
+	</extension>
+
+   <extension
+         point="org.eclipse.xtext.builder.participant">
+      <participant
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant">
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="de.ugoe.cs.swe.bnftools.Ebnf"
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="de.ugoe.cs.swe.bnftools.Ebnf.compiler.preferencePage"
+            name="Compiler">
+            <keywordReference id="de.ugoe.cs.swe.bnftools.ui.keyword_Ebnf"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="de.ugoe.cs.swe.bnftools.Ebnf"
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="de.ugoe.cs.swe.bnftools.Ebnf.compiler.propertyPage"
+            name="Compiler">
+            <keywordReference id="de.ugoe.cs.swe.bnftools.ui.keyword_Ebnf"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+		<command
+			description="Open the quick outline."
+			id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+			name="Quick Outline">
+		</command>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+				style="push"
+				tooltip="Open Quick Outline">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for de.ugoe.cs.swe.bnftools.Ebnf -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="de.ugoe.cs.swe.bnftools.ui.ebnf.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="de.ugoe.cs.swe.bnftools.ui.ebnf.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="de.ugoe.cs.swe.bnftools.ui.ebnf.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+    <extension point="org.eclipse.ui.menus">
+         <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+         <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
+               style="push">
+            <visibleWhen checkEnabled="false">
+               <reference
+                     definitionId="de.ugoe.cs.swe.bnftools.Ebnf.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="de.ugoe.cs.swe.bnftools.Ebnf"
+	        class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="de.ugoe.cs.swe.bnftools.Ebnf.refactoring"
+	        name="Refactoring">
+	        <keywordReference id="de.ugoe.cs.swe.bnftools.ui.keyword_Ebnf"/>
+	    </page>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="de.ugoe.cs.swe.bnftools.Ebnf.compare.contentViewers"
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="bnf">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="de.ugoe.cs.swe.bnftools.Ebnf.compare.contentMergeViewers"
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="bnf" label="Ebnf Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="de.ugoe.cs.swe.bnftools.Ebnf.editors.documentProviders"
+            class="de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="bnf">
+    </provider>
+  </extension>
+
+</plugin>
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/AbstractEbnfUiModule.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/AbstractEbnfUiModule.java	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/AbstractEbnfUiModule.java	(revision 61)
@@ -0,0 +1,242 @@
+
+/*
+ * generated by Xtext
+ */
+package de.ugoe.cs.swe.bnftools.ui;
+
+import org.eclipse.xtext.ui.DefaultUiModule;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Manual modifications go to {de.ugoe.cs.swe.bnftools.ui.EbnfUiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractEbnfUiModule extends DefaultUiModule {
+	
+	public AbstractEbnfUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+	
+	
+	// contributed by org.eclipse.xtext.ui.generator.ImplicitUiFragment
+	public com.google.inject.Provider<org.eclipse.xtext.resource.containers.IAllContainersState> provideIAllContainersState() {
+		return org.eclipse.xtext.ui.shared.Access.getJavaProjectsState();
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IProposalConflictHelper> bindIProposalConflictHelper() {
+		return org.eclipse.xtext.ui.editor.contentassist.antlr.AntlrProposalConflictHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureHighlightingLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(de.ugoe.cs.swe.bnftools.parser.antlr.internal.InternalEbnfLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureHighlightingTokenDefProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.ITokenDefProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.exporting.QualifiedNamesFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IDependentElementsCalculator> bindIDependentElementsCalculator() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultDependentElementsCalculator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsBuilderScope(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE)).to(org.eclipse.xtext.builder.clustering.CurrentDescriptions.ResourceSetAware.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.IXtextEditorCallback> bindIXtextEditorCallback() {
+		return org.eclipse.xtext.builder.nature.NatureAddingEditorCallback.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsPersisted(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource.PERSISTED_DESCRIPTIONS)).to(org.eclipse.xtext.builder.builderState.IBuilderState.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.DocumentBasedDirtyResource> bindDocumentBasedDirtyResource() {
+		return org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public Class<? extends org.eclipse.xtext.builder.IXtextBuilderParticipant> bindIXtextBuilderParticipant() {
+		return org.eclipse.xtext.builder.BuilderParticipant.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public org.eclipse.core.resources.IWorkspaceRoot bindIWorkspaceRootToInstance() {
+		return org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot();
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public void configureBuilderPreferenceStoreInitializer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("builderPreferenceInitializer")).to(org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess.Initializer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
+		return de.ugoe.cs.swe.bnftools.ui.labeling.EbnfLabelProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public void configureResourceUIServiceLabelProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.jface.viewers.ILabelProvider.class).annotatedWith(org.eclipse.xtext.ui.resource.ResourceServiceDescriptionLabelProvider.class).to(de.ugoe.cs.swe.bnftools.ui.labeling.EbnfDescriptionLabelProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.IOutlineTreeProvider> bindIOutlineTreeProvider() {
+		return de.ugoe.cs.swe.bnftools.ui.outline.EbnfOutlineTreeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.impl.IOutlineTreeStructureProvider> bindIOutlineTreeStructureProvider() {
+		return de.ugoe.cs.swe.bnftools.ui.outline.EbnfOutlineTreeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.quickfix.QuickfixProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider> bindIssueResolutionProvider() {
+		return de.ugoe.cs.swe.bnftools.ui.quickfix.EbnfQuickfixProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.contentAssist.ContentAssistFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider> bindIContentProposalProvider() {
+		return de.ugoe.cs.swe.bnftools.ui.contentassist.EbnfProposalProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext.Factory> bindContentAssistContext$Factory() {
+		return org.eclipse.xtext.ui.editor.contentassist.antlr.ParserBasedContentAssistContextFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.antlr.IContentAssistParser> bindIContentAssistParser() {
+		return de.ugoe.cs.swe.bnftools.ui.contentassist.antlr.EbnfParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+		binder.bind(de.ugoe.cs.swe.bnftools.ui.contentassist.antlr.internal.InternalEbnfLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(de.ugoe.cs.swe.bnftools.ui.contentassist.antlr.internal.InternalEbnfLexer.class));
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.CONTENT_ASSIST)).to(de.ugoe.cs.swe.bnftools.ui.contentassist.antlr.internal.InternalEbnfLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameStrategy> bindIRenameStrategy() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultRenameStrategy.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IReferenceUpdater> bindIReferenceUpdater() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultReferenceUpdater.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public void configureIPreferenceStoreInitializer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("RefactoringPreferences")).to(org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferences.Initializer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameRefactoringProvider> bindIRenameRefactoringProvider() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultRenameRefactoringProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.ui.IRenameSupport.Factory> bindIRenameSupport$Factory() {
+		return org.eclipse.xtext.ui.refactoring.ui.DefaultRenameSupport.Factory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public java.lang.ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return org.eclipse.xtext.common.types.access.jdt.JdtTypeProviderFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return org.eclipse.xtext.common.types.xtext.ui.JdtBasedSimpleTypeScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.ui.ITypesProposalProvider> bindITypesProposalProvider() {
+		return org.eclipse.xtext.common.types.xtext.ui.JdtTypesProposalProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.jdt.IJavaProjectProvider> bindIJavaProjectProvider() {
+		return org.eclipse.xtext.common.types.xtext.ui.XtextResourceSetBasedProjectProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.hyperlinking.IHyperlinkHelper> bindIHyperlinkHelper() {
+		return org.eclipse.xtext.common.types.xtext.ui.TypeAwareHyperlinkHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher> bindPrefixMatcher() {
+		return org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.AbstractJavaBasedContentProposalProvider.ReferenceProposalCreator> bindAbstractJavaBasedContentProposalProvider$ReferenceProposalCreator() {
+		return org.eclipse.xtext.common.types.xtext.ui.TypeAwareReferenceProposalCreator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.IValidationJobScheduler> bindIValidationJobScheduler() {
+		return org.eclipse.xtext.common.types.xtext.ui.JdtValidationJobScheduler.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.impl.RefactoringResourceSetProvider> bindRefactoringResourceSetProvider() {
+		return org.eclipse.xtext.common.types.ui.refactoring.JvmRefactoringResourceSetProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.ui.query.IJavaSearchParticipation> bindIJavaSearchParticipation() {
+		return org.eclipse.xtext.common.types.ui.query.IJavaSearchParticipation.Yes.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.preferences.TemplatesLanguageConfiguration> provideTemplatesLanguageConfiguration() {
+		return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getTemplatesLanguageConfigurationProvider();
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistry> provideLanguageRegistry() {
+		return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getLanguageRegistry();
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar> bindLanguageRegistrar() {
+		return org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage> bindXtextTemplatePreferencePage() {
+		return org.eclipse.xtext.ui.codetemplates.ui.preferences.AdvancedTemplatesPreferencePage.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser> bindIPartialContentAssistParser() {
+		return de.ugoe.cs.swe.bnftools.ui.contentassist.antlr.PartialEbnfContentAssistParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.compare.CompareFragment
+	public Class<? extends org.eclipse.compare.IViewerCreator> bindIViewerCreator() {
+		return org.eclipse.xtext.ui.compare.DefaultViewerCreator.class;
+	}
+
+
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/EbnfExecutableExtensionFactory.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/EbnfExecutableExtensionFactory.java	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/EbnfExecutableExtensionFactory.java	(revision 61)
@@ -0,0 +1,29 @@
+/*
+ * generated by Xtext
+ */
+package de.ugoe.cs.swe.bnftools.ui;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+import de.ugoe.cs.swe.bnftools.ui.internal.EbnfActivator;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class EbnfExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return EbnfActivator.getInstance().getBundle();
+	}
+	
+	@Override
+	protected Injector getInjector() {
+		return EbnfActivator.getInstance().getInjector(EbnfActivator.DE_UGOE_CS_SWE_BNFTOOLS_EBNF);
+	}
+	
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/AbstractEbnfProposalProvider.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/AbstractEbnfProposalProvider.java	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/AbstractEbnfProposalProvider.java	(revision 61)
@@ -0,0 +1,263 @@
+/*
+* generated by Xtext
+*/
+package de.ugoe.cs.swe.bnftools.ui.contentassist;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+
+/**
+ * Represents a generated, default implementation of superclass {@link org.eclipse.xtext.ui.editor.contentassist.AbstractJavaBasedContentProposalProvider}.
+ * Methods are dynamically dispatched on the first parameter, i.e., you can override them 
+ * with a more concrete subtype. 
+ */
+@SuppressWarnings("all")
+public class AbstractEbnfProposalProvider extends org.eclipse.xtext.ui.editor.contentassist.AbstractJavaBasedContentProposalProvider {
+		
+	public void completeEtsiBnf_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEtsiBnf_Type(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeEtsiBnf_ImportSection(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEtsiBnf_BnfEntry(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEtsiBnf_DeltaEntry(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEtsiBnf_MergeEntry(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeImportSection_Imports(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBnfEntry_Sectionheader(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBnfEntry_Rule(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDeltaEntry_Rule(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDeltaEntry_Sectionheader(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDeltaEntry_ExtRule(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeMergeEntry_Sectionheader(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeMergeEntry_MergeRule(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSectionHeading_SectionHeader(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeImport_ImportURI(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeImport_GrammarType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeImport_Label(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRule_Rulenumber(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRule_Rulevariant(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRule_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRule_DefinitionList(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeExtRule_Rulenumber(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeExtRule_Rulevariant(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeExtRule_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeExtRule_Ruleext(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeExtRule_Elements(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeGlobalCombinator_Logic(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRuleCombinator_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRuleCombinator_Logic(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRuleCombinator_LABEL(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeHookCombinator_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeHookCombinator_Ruleext(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeHookCombinator_Logic(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeHookCombinator_LABEL(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDefinitionList_SingleDefinition(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSingleDefinition_Terms(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTerm_TermAtom(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTerm_TermGroupedSequence(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTerm_TermOptionalSequence(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTerm_TermRepeatedSequence(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeAtom_AtomStringRule(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeAtom_AtomRuleReference(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRuleReference_Ruleref(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStringRule_Literal(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStringRule_Colon(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeGroupedSequence_DefinitionList(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeOptionalSequence_DefinitionList(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRepeatedSequence_Definitions(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRepeatedSequence_Morethanonce(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+    
+	public void complete_EtsiBnf(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ImportSection(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_BnfEntry(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DeltaEntry(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_MergeEntry(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_SectionHeading(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Import(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Rule(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ExtRule(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_MergeRule(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_GlobalCombinator(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RuleCombinator(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_HookCombinator(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DefinitionList(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_SingleDefinition(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Term(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Atom(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RuleReference(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StringRule(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_GroupedSequence(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_OptionalSequence(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RepeatedSequence(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_INT(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_WS(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_COLON(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_STRING(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_SECTIONHEADER(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_SL_COMMENT(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ML_COMMENT(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_LOGIC(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/EbnfParser.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/EbnfParser.java	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/EbnfParser.java	(revision 61)
@@ -0,0 +1,161 @@
+/*
+* generated by Xtext
+*/
+package de.ugoe.cs.swe.bnftools.ui.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.HashMap;
+
+import org.antlr.runtime.RecognitionException;
+import org.eclipse.xtext.AbstractElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.AbstractContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+
+import com.google.inject.Inject;
+
+import de.ugoe.cs.swe.bnftools.services.EbnfGrammarAccess;
+
+public class EbnfParser extends AbstractContentAssistParser {
+	
+	@Inject
+	private EbnfGrammarAccess grammarAccess;
+	
+	private Map<AbstractElement, String> nameMappings;
+	
+	@Override
+	protected de.ugoe.cs.swe.bnftools.ui.contentassist.antlr.internal.InternalEbnfParser createParser() {
+		de.ugoe.cs.swe.bnftools.ui.contentassist.antlr.internal.InternalEbnfParser result = new de.ugoe.cs.swe.bnftools.ui.contentassist.antlr.internal.InternalEbnfParser(null);
+		result.setGrammarAccess(grammarAccess);
+		return result;
+	}
+	
+	@Override
+	protected String getRuleName(AbstractElement element) {
+		if (nameMappings == null) {
+			nameMappings = new HashMap<AbstractElement, String>() {
+				private static final long serialVersionUID = 1L;
+				{
+					put(grammarAccess.getEtsiBnfAccess().getAlternatives(), "rule__EtsiBnf__Alternatives");
+					put(grammarAccess.getBnfEntryAccess().getAlternatives(), "rule__BnfEntry__Alternatives");
+					put(grammarAccess.getDeltaEntryAccess().getAlternatives(), "rule__DeltaEntry__Alternatives");
+					put(grammarAccess.getMergeEntryAccess().getAlternatives(), "rule__MergeEntry__Alternatives");
+					put(grammarAccess.getImportAccess().getAlternatives_2_1(), "rule__Import__Alternatives_2_1");
+					put(grammarAccess.getExtRuleAccess().getAlternatives_4(), "rule__ExtRule__Alternatives_4");
+					put(grammarAccess.getMergeRuleAccess().getAlternatives(), "rule__MergeRule__Alternatives");
+					put(grammarAccess.getTermAccess().getAlternatives(), "rule__Term__Alternatives");
+					put(grammarAccess.getAtomAccess().getAlternatives(), "rule__Atom__Alternatives");
+					put(grammarAccess.getStringRuleAccess().getAlternatives(), "rule__StringRule__Alternatives");
+					put(grammarAccess.getEtsiBnfAccess().getGroup_0(), "rule__EtsiBnf__Group_0__0");
+					put(grammarAccess.getEtsiBnfAccess().getGroup_0_2(), "rule__EtsiBnf__Group_0_2__0");
+					put(grammarAccess.getEtsiBnfAccess().getGroup_1(), "rule__EtsiBnf__Group_1__0");
+					put(grammarAccess.getEtsiBnfAccess().getGroup_2(), "rule__EtsiBnf__Group_2__0");
+					put(grammarAccess.getSectionHeadingAccess().getGroup(), "rule__SectionHeading__Group__0");
+					put(grammarAccess.getImportAccess().getGroup(), "rule__Import__Group__0");
+					put(grammarAccess.getImportAccess().getGroup_2(), "rule__Import__Group_2__0");
+					put(grammarAccess.getImportAccess().getGroup_3(), "rule__Import__Group_3__0");
+					put(grammarAccess.getRuleAccess().getGroup(), "rule__Rule__Group__0");
+					put(grammarAccess.getRuleAccess().getGroup_0(), "rule__Rule__Group_0__0");
+					put(grammarAccess.getExtRuleAccess().getGroup(), "rule__ExtRule__Group__0");
+					put(grammarAccess.getExtRuleAccess().getGroup_0(), "rule__ExtRule__Group_0__0");
+					put(grammarAccess.getExtRuleAccess().getGroup_2(), "rule__ExtRule__Group_2__0");
+					put(grammarAccess.getGlobalCombinatorAccess().getGroup(), "rule__GlobalCombinator__Group__0");
+					put(grammarAccess.getGlobalCombinatorAccess().getGroup_0(), "rule__GlobalCombinator__Group_0__0");
+					put(grammarAccess.getRuleCombinatorAccess().getGroup(), "rule__RuleCombinator__Group__0");
+					put(grammarAccess.getRuleCombinatorAccess().getGroup_0(), "rule__RuleCombinator__Group_0__0");
+					put(grammarAccess.getRuleCombinatorAccess().getGroup_2(), "rule__RuleCombinator__Group_2__0");
+					put(grammarAccess.getHookCombinatorAccess().getGroup(), "rule__HookCombinator__Group__0");
+					put(grammarAccess.getHookCombinatorAccess().getGroup_7(), "rule__HookCombinator__Group_7__0");
+					put(grammarAccess.getDefinitionListAccess().getGroup(), "rule__DefinitionList__Group__0");
+					put(grammarAccess.getDefinitionListAccess().getGroup_1(), "rule__DefinitionList__Group_1__0");
+					put(grammarAccess.getGroupedSequenceAccess().getGroup(), "rule__GroupedSequence__Group__0");
+					put(grammarAccess.getOptionalSequenceAccess().getGroup(), "rule__OptionalSequence__Group__0");
+					put(grammarAccess.getRepeatedSequenceAccess().getGroup(), "rule__RepeatedSequence__Group__0");
+					put(grammarAccess.getEtsiBnfAccess().getNameAssignment_0_1(), "rule__EtsiBnf__NameAssignment_0_1");
+					put(grammarAccess.getEtsiBnfAccess().getTypeAssignment_0_2_0(), "rule__EtsiBnf__TypeAssignment_0_2_0");
+					put(grammarAccess.getEtsiBnfAccess().getImportSectionAssignment_0_2_2(), "rule__EtsiBnf__ImportSectionAssignment_0_2_2");
+					put(grammarAccess.getEtsiBnfAccess().getBnfEntryAssignment_0_2_3(), "rule__EtsiBnf__BnfEntryAssignment_0_2_3");
+					put(grammarAccess.getEtsiBnfAccess().getTypeAssignment_1_0(), "rule__EtsiBnf__TypeAssignment_1_0");
+					put(grammarAccess.getEtsiBnfAccess().getImportSectionAssignment_1_2(), "rule__EtsiBnf__ImportSectionAssignment_1_2");
+					put(grammarAccess.getEtsiBnfAccess().getDeltaEntryAssignment_1_3(), "rule__EtsiBnf__DeltaEntryAssignment_1_3");
+					put(grammarAccess.getEtsiBnfAccess().getTypeAssignment_2_0(), "rule__EtsiBnf__TypeAssignment_2_0");
+					put(grammarAccess.getEtsiBnfAccess().getImportSectionAssignment_2_2(), "rule__EtsiBnf__ImportSectionAssignment_2_2");
+					put(grammarAccess.getEtsiBnfAccess().getMergeEntryAssignment_2_3(), "rule__EtsiBnf__MergeEntryAssignment_2_3");
+					put(grammarAccess.getImportSectionAccess().getImportsAssignment(), "rule__ImportSection__ImportsAssignment");
+					put(grammarAccess.getBnfEntryAccess().getSectionheaderAssignment_0(), "rule__BnfEntry__SectionheaderAssignment_0");
+					put(grammarAccess.getBnfEntryAccess().getRuleAssignment_1(), "rule__BnfEntry__RuleAssignment_1");
+					put(grammarAccess.getDeltaEntryAccess().getRuleAssignment_0(), "rule__DeltaEntry__RuleAssignment_0");
+					put(grammarAccess.getDeltaEntryAccess().getSectionheaderAssignment_1(), "rule__DeltaEntry__SectionheaderAssignment_1");
+					put(grammarAccess.getDeltaEntryAccess().getExtRuleAssignment_2(), "rule__DeltaEntry__ExtRuleAssignment_2");
+					put(grammarAccess.getMergeEntryAccess().getSectionheaderAssignment_0(), "rule__MergeEntry__SectionheaderAssignment_0");
+					put(grammarAccess.getMergeEntryAccess().getMergeRuleAssignment_1(), "rule__MergeEntry__MergeRuleAssignment_1");
+					put(grammarAccess.getSectionHeadingAccess().getSectionHeaderAssignment_1(), "rule__SectionHeading__SectionHeaderAssignment_1");
+					put(grammarAccess.getImportAccess().getImportURIAssignment_1(), "rule__Import__ImportURIAssignment_1");
+					put(grammarAccess.getImportAccess().getGrammarTypeAssignment_2_1_0(), "rule__Import__GrammarTypeAssignment_2_1_0");
+					put(grammarAccess.getImportAccess().getGrammarTypeAssignment_2_1_1(), "rule__Import__GrammarTypeAssignment_2_1_1");
+					put(grammarAccess.getImportAccess().getGrammarTypeAssignment_2_1_2(), "rule__Import__GrammarTypeAssignment_2_1_2");
+					put(grammarAccess.getImportAccess().getLabelAssignment_3_1(), "rule__Import__LabelAssignment_3_1");
+					put(grammarAccess.getRuleAccess().getRulenumberAssignment_0_0(), "rule__Rule__RulenumberAssignment_0_0");
+					put(grammarAccess.getRuleAccess().getRulevariantAssignment_0_1(), "rule__Rule__RulevariantAssignment_0_1");
+					put(grammarAccess.getRuleAccess().getNameAssignment_1(), "rule__Rule__NameAssignment_1");
+					put(grammarAccess.getRuleAccess().getDefinitionListAssignment_3(), "rule__Rule__DefinitionListAssignment_3");
+					put(grammarAccess.getExtRuleAccess().getRulenumberAssignment_0_0(), "rule__ExtRule__RulenumberAssignment_0_0");
+					put(grammarAccess.getExtRuleAccess().getRulevariantAssignment_0_1(), "rule__ExtRule__RulevariantAssignment_0_1");
+					put(grammarAccess.getExtRuleAccess().getNameAssignment_1(), "rule__ExtRule__NameAssignment_1");
+					put(grammarAccess.getExtRuleAccess().getRuleextAssignment_2_1(), "rule__ExtRule__RuleextAssignment_2_1");
+					put(grammarAccess.getExtRuleAccess().getElementsAssignment_4_0(), "rule__ExtRule__ElementsAssignment_4_0");
+					put(grammarAccess.getGlobalCombinatorAccess().getLogicAssignment_1(), "rule__GlobalCombinator__LogicAssignment_1");
+					put(grammarAccess.getRuleCombinatorAccess().getNameAssignment_0_2(), "rule__RuleCombinator__NameAssignment_0_2");
+					put(grammarAccess.getRuleCombinatorAccess().getLogicAssignment_1(), "rule__RuleCombinator__LogicAssignment_1");
+					put(grammarAccess.getRuleCombinatorAccess().getLABELAssignment_2_1(), "rule__RuleCombinator__LABELAssignment_2_1");
+					put(grammarAccess.getHookCombinatorAccess().getNameAssignment_2(), "rule__HookCombinator__NameAssignment_2");
+					put(grammarAccess.getHookCombinatorAccess().getRuleextAssignment_4(), "rule__HookCombinator__RuleextAssignment_4");
+					put(grammarAccess.getHookCombinatorAccess().getLogicAssignment_6(), "rule__HookCombinator__LogicAssignment_6");
+					put(grammarAccess.getHookCombinatorAccess().getLABELAssignment_7_1(), "rule__HookCombinator__LABELAssignment_7_1");
+					put(grammarAccess.getDefinitionListAccess().getSingleDefinitionAssignment_0(), "rule__DefinitionList__SingleDefinitionAssignment_0");
+					put(grammarAccess.getDefinitionListAccess().getSingleDefinitionAssignment_1_1(), "rule__DefinitionList__SingleDefinitionAssignment_1_1");
+					put(grammarAccess.getSingleDefinitionAccess().getTermsAssignment(), "rule__SingleDefinition__TermsAssignment");
+					put(grammarAccess.getTermAccess().getTermAtomAssignment_0(), "rule__Term__TermAtomAssignment_0");
+					put(grammarAccess.getTermAccess().getTermGroupedSequenceAssignment_1(), "rule__Term__TermGroupedSequenceAssignment_1");
+					put(grammarAccess.getTermAccess().getTermOptionalSequenceAssignment_2(), "rule__Term__TermOptionalSequenceAssignment_2");
+					put(grammarAccess.getTermAccess().getTermRepeatedSequenceAssignment_3(), "rule__Term__TermRepeatedSequenceAssignment_3");
+					put(grammarAccess.getAtomAccess().getAtomStringRuleAssignment_0(), "rule__Atom__AtomStringRuleAssignment_0");
+					put(grammarAccess.getAtomAccess().getAtomRuleReferenceAssignment_1(), "rule__Atom__AtomRuleReferenceAssignment_1");
+					put(grammarAccess.getRuleReferenceAccess().getRulerefAssignment(), "rule__RuleReference__RulerefAssignment");
+					put(grammarAccess.getStringRuleAccess().getLiteralAssignment_0(), "rule__StringRule__LiteralAssignment_0");
+					put(grammarAccess.getStringRuleAccess().getColonAssignment_1(), "rule__StringRule__ColonAssignment_1");
+					put(grammarAccess.getGroupedSequenceAccess().getDefinitionListAssignment_1(), "rule__GroupedSequence__DefinitionListAssignment_1");
+					put(grammarAccess.getOptionalSequenceAccess().getDefinitionListAssignment_1(), "rule__OptionalSequence__DefinitionListAssignment_1");
+					put(grammarAccess.getRepeatedSequenceAccess().getDefinitionsAssignment_1(), "rule__RepeatedSequence__DefinitionsAssignment_1");
+					put(grammarAccess.getRepeatedSequenceAccess().getMorethanonceAssignment_3(), "rule__RepeatedSequence__MorethanonceAssignment_3");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		try {
+			de.ugoe.cs.swe.bnftools.ui.contentassist.antlr.internal.InternalEbnfParser typedParser = (de.ugoe.cs.swe.bnftools.ui.contentassist.antlr.internal.InternalEbnfParser) parser;
+			typedParser.entryRuleEtsiBnf();
+			return typedParser.getFollowElements();
+		} catch(RecognitionException ex) {
+			throw new RuntimeException(ex);
+		}		
+	}
+	
+	@Override
+	protected String[] getInitialHiddenTokens() {
+		return new String[] { "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT" };
+	}
+	
+	public EbnfGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(EbnfGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/PartialEbnfContentAssistParser.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/PartialEbnfContentAssistParser.java	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/PartialEbnfContentAssistParser.java	(revision 61)
@@ -0,0 +1,38 @@
+/*
+ * generated by Xtext
+ */
+package de.ugoe.cs.swe.bnftools.ui.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import org.eclipse.xtext.AbstractRule;
+import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.util.PolymorphicDispatcher;
+
+/**
+ * @author Sebastian Zarnekow - Initial contribution and API
+ */
+@SuppressWarnings("restriction")
+public class PartialEbnfContentAssistParser extends EbnfParser implements IPartialContentAssistParser {
+
+	private AbstractRule rule;
+
+	public void initializeFor(AbstractRule rule) {
+		this.rule = rule;
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		if (rule == null || rule.eIsProxy())
+			return Collections.emptyList();
+		String methodName = "entryRule" + rule.getName();
+		PolymorphicDispatcher<Collection<FollowElement>> dispatcher = 
+			new PolymorphicDispatcher<Collection<FollowElement>>(methodName, 0, 0, Collections.singletonList(parser));
+		dispatcher.invoke();
+		return parser.getFollowElements();
+	}
+
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g	(revision 61)
@@ -0,0 +1,4713 @@
+/*
+* generated by Xtext
+*/
+grammar InternalEbnf;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	
+}
+
+@lexer::header {
+package de.ugoe.cs.swe.bnftools.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package de.ugoe.cs.swe.bnftools.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import de.ugoe.cs.swe.bnftools.services.EbnfGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private EbnfGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(EbnfGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleEtsiBnf
+entryRuleEtsiBnf 
+:
+{ before(grammarAccess.getEtsiBnfRule()); }
+	 ruleEtsiBnf
+{ after(grammarAccess.getEtsiBnfRule()); } 
+	 EOF 
+;
+
+// Rule EtsiBnf
+ruleEtsiBnf
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getAlternatives()); }
+(rule__EtsiBnf__Alternatives)
+{ after(grammarAccess.getEtsiBnfAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleImportSection
+entryRuleImportSection 
+:
+{ before(grammarAccess.getImportSectionRule()); }
+	 ruleImportSection
+{ after(grammarAccess.getImportSectionRule()); } 
+	 EOF 
+;
+
+// Rule ImportSection
+ruleImportSection
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+(
+{ before(grammarAccess.getImportSectionAccess().getImportsAssignment()); }
+(rule__ImportSection__ImportsAssignment)
+{ after(grammarAccess.getImportSectionAccess().getImportsAssignment()); }
+)
+(
+{ before(grammarAccess.getImportSectionAccess().getImportsAssignment()); }
+(rule__ImportSection__ImportsAssignment)*
+{ after(grammarAccess.getImportSectionAccess().getImportsAssignment()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBnfEntry
+entryRuleBnfEntry 
+:
+{ before(grammarAccess.getBnfEntryRule()); }
+	 ruleBnfEntry
+{ after(grammarAccess.getBnfEntryRule()); } 
+	 EOF 
+;
+
+// Rule BnfEntry
+ruleBnfEntry
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBnfEntryAccess().getAlternatives()); }
+(rule__BnfEntry__Alternatives)
+{ after(grammarAccess.getBnfEntryAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDeltaEntry
+entryRuleDeltaEntry 
+:
+{ before(grammarAccess.getDeltaEntryRule()); }
+	 ruleDeltaEntry
+{ after(grammarAccess.getDeltaEntryRule()); } 
+	 EOF 
+;
+
+// Rule DeltaEntry
+ruleDeltaEntry
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDeltaEntryAccess().getAlternatives()); }
+(rule__DeltaEntry__Alternatives)
+{ after(grammarAccess.getDeltaEntryAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMergeEntry
+entryRuleMergeEntry 
+:
+{ before(grammarAccess.getMergeEntryRule()); }
+	 ruleMergeEntry
+{ after(grammarAccess.getMergeEntryRule()); } 
+	 EOF 
+;
+
+// Rule MergeEntry
+ruleMergeEntry
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMergeEntryAccess().getAlternatives()); }
+(rule__MergeEntry__Alternatives)
+{ after(grammarAccess.getMergeEntryAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSectionHeading
+entryRuleSectionHeading 
+:
+{ before(grammarAccess.getSectionHeadingRule()); }
+	 ruleSectionHeading
+{ after(grammarAccess.getSectionHeadingRule()); } 
+	 EOF 
+;
+
+// Rule SectionHeading
+ruleSectionHeading
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSectionHeadingAccess().getGroup()); }
+(rule__SectionHeading__Group__0)
+{ after(grammarAccess.getSectionHeadingAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleImport
+entryRuleImport 
+:
+{ before(grammarAccess.getImportRule()); }
+	 ruleImport
+{ after(grammarAccess.getImportRule()); } 
+	 EOF 
+;
+
+// Rule Import
+ruleImport
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getImportAccess().getGroup()); }
+(rule__Import__Group__0)
+{ after(grammarAccess.getImportAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRule
+entryRuleRule 
+:
+{ before(grammarAccess.getRuleRule()); }
+	 ruleRule
+{ after(grammarAccess.getRuleRule()); } 
+	 EOF 
+;
+
+// Rule Rule
+ruleRule
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRuleAccess().getGroup()); }
+(rule__Rule__Group__0)
+{ after(grammarAccess.getRuleAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleExtRule
+entryRuleExtRule 
+:
+{ before(grammarAccess.getExtRuleRule()); }
+	 ruleExtRule
+{ after(grammarAccess.getExtRuleRule()); } 
+	 EOF 
+;
+
+// Rule ExtRule
+ruleExtRule
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getExtRuleAccess().getGroup()); }
+(rule__ExtRule__Group__0)
+{ after(grammarAccess.getExtRuleAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMergeRule
+entryRuleMergeRule 
+:
+{ before(grammarAccess.getMergeRuleRule()); }
+	 ruleMergeRule
+{ after(grammarAccess.getMergeRuleRule()); } 
+	 EOF 
+;
+
+// Rule MergeRule
+ruleMergeRule
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMergeRuleAccess().getAlternatives()); }
+(rule__MergeRule__Alternatives)
+{ after(grammarAccess.getMergeRuleAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleGlobalCombinator
+entryRuleGlobalCombinator 
+:
+{ before(grammarAccess.getGlobalCombinatorRule()); }
+	 ruleGlobalCombinator
+{ after(grammarAccess.getGlobalCombinatorRule()); } 
+	 EOF 
+;
+
+// Rule GlobalCombinator
+ruleGlobalCombinator
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getGlobalCombinatorAccess().getGroup()); }
+(rule__GlobalCombinator__Group__0)
+{ after(grammarAccess.getGlobalCombinatorAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRuleCombinator
+entryRuleRuleCombinator 
+:
+{ before(grammarAccess.getRuleCombinatorRule()); }
+	 ruleRuleCombinator
+{ after(grammarAccess.getRuleCombinatorRule()); } 
+	 EOF 
+;
+
+// Rule RuleCombinator
+ruleRuleCombinator
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRuleCombinatorAccess().getGroup()); }
+(rule__RuleCombinator__Group__0)
+{ after(grammarAccess.getRuleCombinatorAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleHookCombinator
+entryRuleHookCombinator 
+:
+{ before(grammarAccess.getHookCombinatorRule()); }
+	 ruleHookCombinator
+{ after(grammarAccess.getHookCombinatorRule()); } 
+	 EOF 
+;
+
+// Rule HookCombinator
+ruleHookCombinator
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getHookCombinatorAccess().getGroup()); }
+(rule__HookCombinator__Group__0)
+{ after(grammarAccess.getHookCombinatorAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDefinitionList
+entryRuleDefinitionList 
+:
+{ before(grammarAccess.getDefinitionListRule()); }
+	 ruleDefinitionList
+{ after(grammarAccess.getDefinitionListRule()); } 
+	 EOF 
+;
+
+// Rule DefinitionList
+ruleDefinitionList
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDefinitionListAccess().getGroup()); }
+(rule__DefinitionList__Group__0)
+{ after(grammarAccess.getDefinitionListAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSingleDefinition
+entryRuleSingleDefinition 
+:
+{ before(grammarAccess.getSingleDefinitionRule()); }
+	 ruleSingleDefinition
+{ after(grammarAccess.getSingleDefinitionRule()); } 
+	 EOF 
+;
+
+// Rule SingleDefinition
+ruleSingleDefinition
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+(
+{ before(grammarAccess.getSingleDefinitionAccess().getTermsAssignment()); }
+(rule__SingleDefinition__TermsAssignment)
+{ after(grammarAccess.getSingleDefinitionAccess().getTermsAssignment()); }
+)
+(
+{ before(grammarAccess.getSingleDefinitionAccess().getTermsAssignment()); }
+(rule__SingleDefinition__TermsAssignment)*
+{ after(grammarAccess.getSingleDefinitionAccess().getTermsAssignment()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTerm
+entryRuleTerm 
+:
+{ before(grammarAccess.getTermRule()); }
+	 ruleTerm
+{ after(grammarAccess.getTermRule()); } 
+	 EOF 
+;
+
+// Rule Term
+ruleTerm
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTermAccess().getAlternatives()); }
+(rule__Term__Alternatives)
+{ after(grammarAccess.getTermAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAtom
+entryRuleAtom 
+:
+{ before(grammarAccess.getAtomRule()); }
+	 ruleAtom
+{ after(grammarAccess.getAtomRule()); } 
+	 EOF 
+;
+
+// Rule Atom
+ruleAtom
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAtomAccess().getAlternatives()); }
+(rule__Atom__Alternatives)
+{ after(grammarAccess.getAtomAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRuleReference
+entryRuleRuleReference 
+:
+{ before(grammarAccess.getRuleReferenceRule()); }
+	 ruleRuleReference
+{ after(grammarAccess.getRuleReferenceRule()); } 
+	 EOF 
+;
+
+// Rule RuleReference
+ruleRuleReference
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRuleReferenceAccess().getRulerefAssignment()); }
+(rule__RuleReference__RulerefAssignment)
+{ after(grammarAccess.getRuleReferenceAccess().getRulerefAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStringRule
+entryRuleStringRule 
+:
+{ before(grammarAccess.getStringRuleRule()); }
+	 ruleStringRule
+{ after(grammarAccess.getStringRuleRule()); } 
+	 EOF 
+;
+
+// Rule StringRule
+ruleStringRule
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStringRuleAccess().getAlternatives()); }
+(rule__StringRule__Alternatives)
+{ after(grammarAccess.getStringRuleAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleGroupedSequence
+entryRuleGroupedSequence 
+:
+{ before(grammarAccess.getGroupedSequenceRule()); }
+	 ruleGroupedSequence
+{ after(grammarAccess.getGroupedSequenceRule()); } 
+	 EOF 
+;
+
+// Rule GroupedSequence
+ruleGroupedSequence
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getGroupedSequenceAccess().getGroup()); }
+(rule__GroupedSequence__Group__0)
+{ after(grammarAccess.getGroupedSequenceAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOptionalSequence
+entryRuleOptionalSequence 
+:
+{ before(grammarAccess.getOptionalSequenceRule()); }
+	 ruleOptionalSequence
+{ after(grammarAccess.getOptionalSequenceRule()); } 
+	 EOF 
+;
+
+// Rule OptionalSequence
+ruleOptionalSequence
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOptionalSequenceAccess().getGroup()); }
+(rule__OptionalSequence__Group__0)
+{ after(grammarAccess.getOptionalSequenceAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRepeatedSequence
+entryRuleRepeatedSequence 
+:
+{ before(grammarAccess.getRepeatedSequenceRule()); }
+	 ruleRepeatedSequence
+{ after(grammarAccess.getRepeatedSequenceRule()); } 
+	 EOF 
+;
+
+// Rule RepeatedSequence
+ruleRepeatedSequence
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRepeatedSequenceAccess().getGroup()); }
+(rule__RepeatedSequence__Group__0)
+{ after(grammarAccess.getRepeatedSequenceAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__EtsiBnf__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getGroup_0()); }
+(rule__EtsiBnf__Group_0__0)
+{ after(grammarAccess.getEtsiBnfAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEtsiBnfAccess().getGroup_1()); }
+(rule__EtsiBnf__Group_1__0)
+{ after(grammarAccess.getEtsiBnfAccess().getGroup_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEtsiBnfAccess().getGroup_2()); }
+(rule__EtsiBnf__Group_2__0)
+{ after(grammarAccess.getEtsiBnfAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BnfEntry__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBnfEntryAccess().getSectionheaderAssignment_0()); }
+(rule__BnfEntry__SectionheaderAssignment_0)
+{ after(grammarAccess.getBnfEntryAccess().getSectionheaderAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBnfEntryAccess().getRuleAssignment_1()); }
+(rule__BnfEntry__RuleAssignment_1)
+{ after(grammarAccess.getBnfEntryAccess().getRuleAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DeltaEntry__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDeltaEntryAccess().getRuleAssignment_0()); }
+(rule__DeltaEntry__RuleAssignment_0)
+{ after(grammarAccess.getDeltaEntryAccess().getRuleAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDeltaEntryAccess().getSectionheaderAssignment_1()); }
+(rule__DeltaEntry__SectionheaderAssignment_1)
+{ after(grammarAccess.getDeltaEntryAccess().getSectionheaderAssignment_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDeltaEntryAccess().getExtRuleAssignment_2()); }
+(rule__DeltaEntry__ExtRuleAssignment_2)
+{ after(grammarAccess.getDeltaEntryAccess().getExtRuleAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MergeEntry__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMergeEntryAccess().getSectionheaderAssignment_0()); }
+(rule__MergeEntry__SectionheaderAssignment_0)
+{ after(grammarAccess.getMergeEntryAccess().getSectionheaderAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getMergeEntryAccess().getMergeRuleAssignment_1()); }
+(rule__MergeEntry__MergeRuleAssignment_1)
+{ after(grammarAccess.getMergeEntryAccess().getMergeRuleAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Alternatives_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getGrammarTypeAssignment_2_1_0()); }
+(rule__Import__GrammarTypeAssignment_2_1_0)
+{ after(grammarAccess.getImportAccess().getGrammarTypeAssignment_2_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getImportAccess().getGrammarTypeAssignment_2_1_1()); }
+(rule__Import__GrammarTypeAssignment_2_1_1)
+{ after(grammarAccess.getImportAccess().getGrammarTypeAssignment_2_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getImportAccess().getGrammarTypeAssignment_2_1_2()); }
+(rule__Import__GrammarTypeAssignment_2_1_2)
+{ after(grammarAccess.getImportAccess().getGrammarTypeAssignment_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__Alternatives_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getElementsAssignment_4_0()); }
+(rule__ExtRule__ElementsAssignment_4_0)
+{ after(grammarAccess.getExtRuleAccess().getElementsAssignment_4_0()); }
+)
+
+    |(
+{ before(grammarAccess.getExtRuleAccess().getRightParenthesisKeyword_4_1()); }
+
+	')' 
+
+{ after(grammarAccess.getExtRuleAccess().getRightParenthesisKeyword_4_1()); }
+)
+
+    |(
+{ before(grammarAccess.getExtRuleAccess().getRightSquareBracketKeyword_4_2()); }
+
+	']' 
+
+{ after(grammarAccess.getExtRuleAccess().getRightSquareBracketKeyword_4_2()); }
+)
+
+    |(
+{ before(grammarAccess.getExtRuleAccess().getRightCurlyBracketKeyword_4_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getExtRuleAccess().getRightCurlyBracketKeyword_4_3()); }
+)
+
+    |(
+{ before(grammarAccess.getExtRuleAccess().getVerticalLineKeyword_4_4()); }
+
+	'|' 
+
+{ after(grammarAccess.getExtRuleAccess().getVerticalLineKeyword_4_4()); }
+)
+
+    |(
+{ before(grammarAccess.getExtRuleAccess().getLeftParenthesisKeyword_4_5()); }
+
+	'(' 
+
+{ after(grammarAccess.getExtRuleAccess().getLeftParenthesisKeyword_4_5()); }
+)
+
+    |(
+{ before(grammarAccess.getExtRuleAccess().getLeftSquareBracketKeyword_4_6()); }
+
+	'[' 
+
+{ after(grammarAccess.getExtRuleAccess().getLeftSquareBracketKeyword_4_6()); }
+)
+
+    |(
+{ before(grammarAccess.getExtRuleAccess().getLeftCurlyBracketKeyword_4_7()); }
+
+	'{' 
+
+{ after(grammarAccess.getExtRuleAccess().getLeftCurlyBracketKeyword_4_7()); }
+)
+
+    |(
+{ before(grammarAccess.getExtRuleAccess().getAsteriskKeyword_4_8()); }
+
+	'*' 
+
+{ after(grammarAccess.getExtRuleAccess().getAsteriskKeyword_4_8()); }
+)
+
+    |(
+{ before(grammarAccess.getExtRuleAccess().getPlusSignKeyword_4_9()); }
+
+	'+' 
+
+{ after(grammarAccess.getExtRuleAccess().getPlusSignKeyword_4_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MergeRule__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMergeRuleAccess().getGlobalCombinatorParserRuleCall_0()); }
+	ruleGlobalCombinator
+{ after(grammarAccess.getMergeRuleAccess().getGlobalCombinatorParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getMergeRuleAccess().getRuleCombinatorParserRuleCall_1()); }
+	ruleRuleCombinator
+{ after(grammarAccess.getMergeRuleAccess().getRuleCombinatorParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getMergeRuleAccess().getHookCombinatorParserRuleCall_2()); }
+	ruleHookCombinator
+{ after(grammarAccess.getMergeRuleAccess().getHookCombinatorParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Term__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermAccess().getTermAtomAssignment_0()); }
+(rule__Term__TermAtomAssignment_0)
+{ after(grammarAccess.getTermAccess().getTermAtomAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getTermGroupedSequenceAssignment_1()); }
+(rule__Term__TermGroupedSequenceAssignment_1)
+{ after(grammarAccess.getTermAccess().getTermGroupedSequenceAssignment_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getTermOptionalSequenceAssignment_2()); }
+(rule__Term__TermOptionalSequenceAssignment_2)
+{ after(grammarAccess.getTermAccess().getTermOptionalSequenceAssignment_2()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getTermRepeatedSequenceAssignment_3()); }
+(rule__Term__TermRepeatedSequenceAssignment_3)
+{ after(grammarAccess.getTermAccess().getTermRepeatedSequenceAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Atom__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAtomAccess().getAtomStringRuleAssignment_0()); }
+(rule__Atom__AtomStringRuleAssignment_0)
+{ after(grammarAccess.getAtomAccess().getAtomStringRuleAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAtomAccess().getAtomRuleReferenceAssignment_1()); }
+(rule__Atom__AtomRuleReferenceAssignment_1)
+{ after(grammarAccess.getAtomAccess().getAtomRuleReferenceAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StringRule__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStringRuleAccess().getLiteralAssignment_0()); }
+(rule__StringRule__LiteralAssignment_0)
+{ after(grammarAccess.getStringRuleAccess().getLiteralAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStringRuleAccess().getColonAssignment_1()); }
+(rule__StringRule__ColonAssignment_1)
+{ after(grammarAccess.getStringRuleAccess().getColonAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__EtsiBnf__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EtsiBnf__Group_0__0__Impl
+	rule__EtsiBnf__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getGrammarKeyword_0_0()); }
+
+	'grammar' 
+
+{ after(grammarAccess.getEtsiBnfAccess().getGrammarKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EtsiBnf__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EtsiBnf__Group_0__1__Impl
+	rule__EtsiBnf__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getNameAssignment_0_1()); }
+(rule__EtsiBnf__NameAssignment_0_1)
+{ after(grammarAccess.getEtsiBnfAccess().getNameAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EtsiBnf__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EtsiBnf__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getGroup_0_2()); }
+(rule__EtsiBnf__Group_0_2__0)
+{ after(grammarAccess.getEtsiBnfAccess().getGroup_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__EtsiBnf__Group_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EtsiBnf__Group_0_2__0__Impl
+	rule__EtsiBnf__Group_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__Group_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getTypeAssignment_0_2_0()); }
+(rule__EtsiBnf__TypeAssignment_0_2_0)?
+{ after(grammarAccess.getEtsiBnfAccess().getTypeAssignment_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EtsiBnf__Group_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EtsiBnf__Group_0_2__1__Impl
+	rule__EtsiBnf__Group_0_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__Group_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_0_2_1()); }
+
+	';' 
+
+{ after(grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EtsiBnf__Group_0_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EtsiBnf__Group_0_2__2__Impl
+	rule__EtsiBnf__Group_0_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__Group_0_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getImportSectionAssignment_0_2_2()); }
+(rule__EtsiBnf__ImportSectionAssignment_0_2_2)?
+{ after(grammarAccess.getEtsiBnfAccess().getImportSectionAssignment_0_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EtsiBnf__Group_0_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EtsiBnf__Group_0_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__Group_0_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+(
+{ before(grammarAccess.getEtsiBnfAccess().getBnfEntryAssignment_0_2_3()); }
+(rule__EtsiBnf__BnfEntryAssignment_0_2_3)
+{ after(grammarAccess.getEtsiBnfAccess().getBnfEntryAssignment_0_2_3()); }
+)
+(
+{ before(grammarAccess.getEtsiBnfAccess().getBnfEntryAssignment_0_2_3()); }
+(rule__EtsiBnf__BnfEntryAssignment_0_2_3)*
+{ after(grammarAccess.getEtsiBnfAccess().getBnfEntryAssignment_0_2_3()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__EtsiBnf__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EtsiBnf__Group_1__0__Impl
+	rule__EtsiBnf__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getTypeAssignment_1_0()); }
+(rule__EtsiBnf__TypeAssignment_1_0)
+{ after(grammarAccess.getEtsiBnfAccess().getTypeAssignment_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EtsiBnf__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EtsiBnf__Group_1__1__Impl
+	rule__EtsiBnf__Group_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_1_1()); }
+
+	';' 
+
+{ after(grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EtsiBnf__Group_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EtsiBnf__Group_1__2__Impl
+	rule__EtsiBnf__Group_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__Group_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getImportSectionAssignment_1_2()); }
+(rule__EtsiBnf__ImportSectionAssignment_1_2)?
+{ after(grammarAccess.getEtsiBnfAccess().getImportSectionAssignment_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EtsiBnf__Group_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EtsiBnf__Group_1__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__Group_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getDeltaEntryAssignment_1_3()); }
+(rule__EtsiBnf__DeltaEntryAssignment_1_3)*
+{ after(grammarAccess.getEtsiBnfAccess().getDeltaEntryAssignment_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__EtsiBnf__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EtsiBnf__Group_2__0__Impl
+	rule__EtsiBnf__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getTypeAssignment_2_0()); }
+(rule__EtsiBnf__TypeAssignment_2_0)
+{ after(grammarAccess.getEtsiBnfAccess().getTypeAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EtsiBnf__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EtsiBnf__Group_2__1__Impl
+	rule__EtsiBnf__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_2_1()); }
+
+	';' 
+
+{ after(grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EtsiBnf__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EtsiBnf__Group_2__2__Impl
+	rule__EtsiBnf__Group_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getImportSectionAssignment_2_2()); }
+(rule__EtsiBnf__ImportSectionAssignment_2_2)?
+{ after(grammarAccess.getEtsiBnfAccess().getImportSectionAssignment_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EtsiBnf__Group_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EtsiBnf__Group_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__Group_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getMergeEntryAssignment_2_3()); }
+(rule__EtsiBnf__MergeEntryAssignment_2_3)*
+{ after(grammarAccess.getEtsiBnfAccess().getMergeEntryAssignment_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__SectionHeading__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SectionHeading__Group__0__Impl
+	rule__SectionHeading__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SectionHeading__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSectionHeadingAccess().getSectionHeadingAction_0()); }
+(
+
+)
+{ after(grammarAccess.getSectionHeadingAccess().getSectionHeadingAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SectionHeading__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SectionHeading__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SectionHeading__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSectionHeadingAccess().getSectionHeaderAssignment_1()); }
+(rule__SectionHeading__SectionHeaderAssignment_1)
+{ after(grammarAccess.getSectionHeadingAccess().getSectionHeaderAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Import__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__0__Impl
+	rule__Import__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getImportKeyword_0()); }
+
+	'import' 
+
+{ after(grammarAccess.getImportAccess().getImportKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Import__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__1__Impl
+	rule__Import__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getImportURIAssignment_1()); }
+(rule__Import__ImportURIAssignment_1)
+{ after(grammarAccess.getImportAccess().getImportURIAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Import__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__2__Impl
+	rule__Import__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getGroup_2()); }
+(rule__Import__Group_2__0)?
+{ after(grammarAccess.getImportAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Import__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__3__Impl
+	rule__Import__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getGroup_3()); }
+(rule__Import__Group_3__0)?
+{ after(grammarAccess.getImportAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Import__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getSemicolonKeyword_4()); }
+
+	';' 
+
+{ after(grammarAccess.getImportAccess().getSemicolonKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Import__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group_2__0__Impl
+	rule__Import__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getSolidusKeyword_2_0()); }
+
+	'/' 
+
+{ after(grammarAccess.getImportAccess().getSolidusKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Import__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getAlternatives_2_1()); }
+(rule__Import__Alternatives_2_1)
+{ after(grammarAccess.getImportAccess().getAlternatives_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Import__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group_3__0__Impl
+	rule__Import__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getLabelKeyword_3_0()); }
+
+	'label:' 
+
+{ after(grammarAccess.getImportAccess().getLabelKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Import__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getLabelAssignment_3_1()); }
+(rule__Import__LabelAssignment_3_1)
+{ after(grammarAccess.getImportAccess().getLabelAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Rule__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Rule__Group__0__Impl
+	rule__Rule__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Rule__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleAccess().getGroup_0()); }
+(rule__Rule__Group_0__0)?
+{ after(grammarAccess.getRuleAccess().getGroup_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Rule__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Rule__Group__1__Impl
+	rule__Rule__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Rule__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleAccess().getNameAssignment_1()); }
+(rule__Rule__NameAssignment_1)
+{ after(grammarAccess.getRuleAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Rule__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Rule__Group__2__Impl
+	rule__Rule__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Rule__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleAccess().getColonColonEqualsSignKeyword_2()); }
+
+	'::=' 
+
+{ after(grammarAccess.getRuleAccess().getColonColonEqualsSignKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Rule__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Rule__Group__3__Impl
+	rule__Rule__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Rule__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleAccess().getDefinitionListAssignment_3()); }
+(rule__Rule__DefinitionListAssignment_3)?
+{ after(grammarAccess.getRuleAccess().getDefinitionListAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Rule__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Rule__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Rule__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleAccess().getSemicolonKeyword_4()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getRuleAccess().getSemicolonKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Rule__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Rule__Group_0__0__Impl
+	rule__Rule__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Rule__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleAccess().getRulenumberAssignment_0_0()); }
+(rule__Rule__RulenumberAssignment_0_0)
+{ after(grammarAccess.getRuleAccess().getRulenumberAssignment_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Rule__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Rule__Group_0__1__Impl
+	rule__Rule__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Rule__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleAccess().getRulevariantAssignment_0_1()); }
+(rule__Rule__RulevariantAssignment_0_1)?
+{ after(grammarAccess.getRuleAccess().getRulevariantAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Rule__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Rule__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Rule__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleAccess().getFullStopKeyword_0_2()); }
+
+	'.' 
+
+{ after(grammarAccess.getRuleAccess().getFullStopKeyword_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ExtRule__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExtRule__Group__0__Impl
+	rule__ExtRule__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getGroup_0()); }
+(rule__ExtRule__Group_0__0)?
+{ after(grammarAccess.getExtRuleAccess().getGroup_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExtRule__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExtRule__Group__1__Impl
+	rule__ExtRule__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getNameAssignment_1()); }
+(rule__ExtRule__NameAssignment_1)
+{ after(grammarAccess.getExtRuleAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExtRule__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExtRule__Group__2__Impl
+	rule__ExtRule__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getGroup_2()); }
+(rule__ExtRule__Group_2__0)
+{ after(grammarAccess.getExtRuleAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExtRule__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExtRule__Group__3__Impl
+	rule__ExtRule__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getLessThanSignHyphenMinusKeyword_3()); }
+
+	'<-' 
+
+{ after(grammarAccess.getExtRuleAccess().getLessThanSignHyphenMinusKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExtRule__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExtRule__Group__4__Impl
+	rule__ExtRule__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getAlternatives_4()); }
+(rule__ExtRule__Alternatives_4)*
+{ after(grammarAccess.getExtRuleAccess().getAlternatives_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExtRule__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExtRule__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getSemicolonKeyword_5()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getExtRuleAccess().getSemicolonKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ExtRule__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExtRule__Group_0__0__Impl
+	rule__ExtRule__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getRulenumberAssignment_0_0()); }
+(rule__ExtRule__RulenumberAssignment_0_0)
+{ after(grammarAccess.getExtRuleAccess().getRulenumberAssignment_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExtRule__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExtRule__Group_0__1__Impl
+	rule__ExtRule__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getRulevariantAssignment_0_1()); }
+(rule__ExtRule__RulevariantAssignment_0_1)?
+{ after(grammarAccess.getExtRuleAccess().getRulevariantAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExtRule__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExtRule__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getFullStopKeyword_0_2()); }
+
+	'.' 
+
+{ after(grammarAccess.getExtRuleAccess().getFullStopKeyword_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ExtRule__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExtRule__Group_2__0__Impl
+	rule__ExtRule__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getLeftParenthesisKeyword_2_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getExtRuleAccess().getLeftParenthesisKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExtRule__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExtRule__Group_2__1__Impl
+	rule__ExtRule__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getRuleextAssignment_2_1()); }
+(rule__ExtRule__RuleextAssignment_2_1)
+{ after(grammarAccess.getExtRuleAccess().getRuleextAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExtRule__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExtRule__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getRightParenthesisKeyword_2_2()); }
+
+	')' 
+
+{ after(grammarAccess.getExtRuleAccess().getRightParenthesisKeyword_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__GlobalCombinator__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GlobalCombinator__Group__0__Impl
+	rule__GlobalCombinator__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GlobalCombinator__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGlobalCombinatorAccess().getGroup_0()); }
+(rule__GlobalCombinator__Group_0__0)
+{ after(grammarAccess.getGlobalCombinatorAccess().getGroup_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GlobalCombinator__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GlobalCombinator__Group__1__Impl
+	rule__GlobalCombinator__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GlobalCombinator__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGlobalCombinatorAccess().getLogicAssignment_1()); }
+(rule__GlobalCombinator__LogicAssignment_1)
+{ after(grammarAccess.getGlobalCombinatorAccess().getLogicAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GlobalCombinator__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GlobalCombinator__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GlobalCombinator__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGlobalCombinatorAccess().getSemicolonKeyword_2()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getGlobalCombinatorAccess().getSemicolonKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__GlobalCombinator__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GlobalCombinator__Group_0__0__Impl
+	rule__GlobalCombinator__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GlobalCombinator__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGlobalCombinatorAccess().getGlobalKeyword_0_0()); }
+
+	'global' 
+
+{ after(grammarAccess.getGlobalCombinatorAccess().getGlobalKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GlobalCombinator__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GlobalCombinator__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GlobalCombinator__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGlobalCombinatorAccess().getCombinatorKeyword_0_1()); }
+
+	'combinator:' 
+
+{ after(grammarAccess.getGlobalCombinatorAccess().getCombinatorKeyword_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RuleCombinator__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RuleCombinator__Group__0__Impl
+	rule__RuleCombinator__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RuleCombinator__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleCombinatorAccess().getGroup_0()); }
+(rule__RuleCombinator__Group_0__0)
+{ after(grammarAccess.getRuleCombinatorAccess().getGroup_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RuleCombinator__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RuleCombinator__Group__1__Impl
+	rule__RuleCombinator__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RuleCombinator__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleCombinatorAccess().getLogicAssignment_1()); }
+(rule__RuleCombinator__LogicAssignment_1)
+{ after(grammarAccess.getRuleCombinatorAccess().getLogicAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RuleCombinator__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RuleCombinator__Group__2__Impl
+	rule__RuleCombinator__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RuleCombinator__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleCombinatorAccess().getGroup_2()); }
+(rule__RuleCombinator__Group_2__0)*
+{ after(grammarAccess.getRuleCombinatorAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RuleCombinator__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RuleCombinator__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RuleCombinator__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleCombinatorAccess().getSemicolonKeyword_3()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getRuleCombinatorAccess().getSemicolonKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__RuleCombinator__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RuleCombinator__Group_0__0__Impl
+	rule__RuleCombinator__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RuleCombinator__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleCombinatorAccess().getRuleKeyword_0_0()); }
+
+	'rule' 
+
+{ after(grammarAccess.getRuleCombinatorAccess().getRuleKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RuleCombinator__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RuleCombinator__Group_0__1__Impl
+	rule__RuleCombinator__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RuleCombinator__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleCombinatorAccess().getCombinatorKeyword_0_1()); }
+
+	'combinator:' 
+
+{ after(grammarAccess.getRuleCombinatorAccess().getCombinatorKeyword_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RuleCombinator__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RuleCombinator__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RuleCombinator__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleCombinatorAccess().getNameAssignment_0_2()); }
+(rule__RuleCombinator__NameAssignment_0_2)
+{ after(grammarAccess.getRuleCombinatorAccess().getNameAssignment_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__RuleCombinator__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RuleCombinator__Group_2__0__Impl
+	rule__RuleCombinator__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RuleCombinator__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleCombinatorAccess().getLeftParenthesisKeyword_2_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getRuleCombinatorAccess().getLeftParenthesisKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RuleCombinator__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RuleCombinator__Group_2__1__Impl
+	rule__RuleCombinator__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RuleCombinator__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleCombinatorAccess().getLABELAssignment_2_1()); }
+(rule__RuleCombinator__LABELAssignment_2_1)
+{ after(grammarAccess.getRuleCombinatorAccess().getLABELAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RuleCombinator__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RuleCombinator__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RuleCombinator__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleCombinatorAccess().getRightParenthesisKeyword_2_2()); }
+
+	')' 
+
+{ after(grammarAccess.getRuleCombinatorAccess().getRightParenthesisKeyword_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__HookCombinator__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HookCombinator__Group__0__Impl
+	rule__HookCombinator__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HookCombinator__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHookCombinatorAccess().getHookKeyword_0()); }
+
+	'hook' 
+
+{ after(grammarAccess.getHookCombinatorAccess().getHookKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__HookCombinator__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HookCombinator__Group__1__Impl
+	rule__HookCombinator__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HookCombinator__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHookCombinatorAccess().getCombinatorKeyword_1()); }
+
+	'combinator:' 
+
+{ after(grammarAccess.getHookCombinatorAccess().getCombinatorKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__HookCombinator__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HookCombinator__Group__2__Impl
+	rule__HookCombinator__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HookCombinator__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHookCombinatorAccess().getNameAssignment_2()); }
+(rule__HookCombinator__NameAssignment_2)
+{ after(grammarAccess.getHookCombinatorAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__HookCombinator__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HookCombinator__Group__3__Impl
+	rule__HookCombinator__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HookCombinator__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHookCombinatorAccess().getLeftParenthesisKeyword_3()); }
+
+	'(' 
+
+{ after(grammarAccess.getHookCombinatorAccess().getLeftParenthesisKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__HookCombinator__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HookCombinator__Group__4__Impl
+	rule__HookCombinator__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HookCombinator__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHookCombinatorAccess().getRuleextAssignment_4()); }
+(rule__HookCombinator__RuleextAssignment_4)
+{ after(grammarAccess.getHookCombinatorAccess().getRuleextAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__HookCombinator__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HookCombinator__Group__5__Impl
+	rule__HookCombinator__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HookCombinator__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHookCombinatorAccess().getRightParenthesisKeyword_5()); }
+
+	')' 
+
+{ after(grammarAccess.getHookCombinatorAccess().getRightParenthesisKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__HookCombinator__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HookCombinator__Group__6__Impl
+	rule__HookCombinator__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HookCombinator__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHookCombinatorAccess().getLogicAssignment_6()); }
+(rule__HookCombinator__LogicAssignment_6)?
+{ after(grammarAccess.getHookCombinatorAccess().getLogicAssignment_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__HookCombinator__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HookCombinator__Group__7__Impl
+	rule__HookCombinator__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HookCombinator__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+(
+{ before(grammarAccess.getHookCombinatorAccess().getGroup_7()); }
+(rule__HookCombinator__Group_7__0)
+{ after(grammarAccess.getHookCombinatorAccess().getGroup_7()); }
+)
+(
+{ before(grammarAccess.getHookCombinatorAccess().getGroup_7()); }
+(rule__HookCombinator__Group_7__0)*
+{ after(grammarAccess.getHookCombinatorAccess().getGroup_7()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__HookCombinator__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HookCombinator__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HookCombinator__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHookCombinatorAccess().getSemicolonKeyword_8()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getHookCombinatorAccess().getSemicolonKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__HookCombinator__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HookCombinator__Group_7__0__Impl
+	rule__HookCombinator__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HookCombinator__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHookCombinatorAccess().getLeftParenthesisKeyword_7_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getHookCombinatorAccess().getLeftParenthesisKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__HookCombinator__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HookCombinator__Group_7__1__Impl
+	rule__HookCombinator__Group_7__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HookCombinator__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHookCombinatorAccess().getLABELAssignment_7_1()); }
+(rule__HookCombinator__LABELAssignment_7_1)
+{ after(grammarAccess.getHookCombinatorAccess().getLABELAssignment_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__HookCombinator__Group_7__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HookCombinator__Group_7__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HookCombinator__Group_7__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHookCombinatorAccess().getRightParenthesisKeyword_7_2()); }
+
+	')' 
+
+{ after(grammarAccess.getHookCombinatorAccess().getRightParenthesisKeyword_7_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DefinitionList__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefinitionList__Group__0__Impl
+	rule__DefinitionList__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefinitionList__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefinitionListAccess().getSingleDefinitionAssignment_0()); }
+(rule__DefinitionList__SingleDefinitionAssignment_0)
+{ after(grammarAccess.getDefinitionListAccess().getSingleDefinitionAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefinitionList__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefinitionList__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefinitionList__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefinitionListAccess().getGroup_1()); }
+(rule__DefinitionList__Group_1__0)*
+{ after(grammarAccess.getDefinitionListAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DefinitionList__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefinitionList__Group_1__0__Impl
+	rule__DefinitionList__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefinitionList__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefinitionListAccess().getVerticalLineKeyword_1_0()); }
+
+	'|' 
+
+{ after(grammarAccess.getDefinitionListAccess().getVerticalLineKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefinitionList__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefinitionList__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefinitionList__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefinitionListAccess().getSingleDefinitionAssignment_1_1()); }
+(rule__DefinitionList__SingleDefinitionAssignment_1_1)
+{ after(grammarAccess.getDefinitionListAccess().getSingleDefinitionAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__GroupedSequence__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GroupedSequence__Group__0__Impl
+	rule__GroupedSequence__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GroupedSequence__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGroupedSequenceAccess().getLeftParenthesisKeyword_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getGroupedSequenceAccess().getLeftParenthesisKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GroupedSequence__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GroupedSequence__Group__1__Impl
+	rule__GroupedSequence__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GroupedSequence__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGroupedSequenceAccess().getDefinitionListAssignment_1()); }
+(rule__GroupedSequence__DefinitionListAssignment_1)
+{ after(grammarAccess.getGroupedSequenceAccess().getDefinitionListAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GroupedSequence__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GroupedSequence__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GroupedSequence__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGroupedSequenceAccess().getRightParenthesisKeyword_2()); }
+
+	')' 
+
+{ after(grammarAccess.getGroupedSequenceAccess().getRightParenthesisKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__OptionalSequence__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OptionalSequence__Group__0__Impl
+	rule__OptionalSequence__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OptionalSequence__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOptionalSequenceAccess().getLeftSquareBracketKeyword_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getOptionalSequenceAccess().getLeftSquareBracketKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OptionalSequence__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OptionalSequence__Group__1__Impl
+	rule__OptionalSequence__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OptionalSequence__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOptionalSequenceAccess().getDefinitionListAssignment_1()); }
+(rule__OptionalSequence__DefinitionListAssignment_1)
+{ after(grammarAccess.getOptionalSequenceAccess().getDefinitionListAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OptionalSequence__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OptionalSequence__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OptionalSequence__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOptionalSequenceAccess().getRightSquareBracketKeyword_2()); }
+
+	']' 
+
+{ after(grammarAccess.getOptionalSequenceAccess().getRightSquareBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__RepeatedSequence__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RepeatedSequence__Group__0__Impl
+	rule__RepeatedSequence__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RepeatedSequence__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRepeatedSequenceAccess().getLeftCurlyBracketKeyword_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getRepeatedSequenceAccess().getLeftCurlyBracketKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RepeatedSequence__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RepeatedSequence__Group__1__Impl
+	rule__RepeatedSequence__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RepeatedSequence__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRepeatedSequenceAccess().getDefinitionsAssignment_1()); }
+(rule__RepeatedSequence__DefinitionsAssignment_1)
+{ after(grammarAccess.getRepeatedSequenceAccess().getDefinitionsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RepeatedSequence__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RepeatedSequence__Group__2__Impl
+	rule__RepeatedSequence__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RepeatedSequence__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRepeatedSequenceAccess().getRightCurlyBracketKeyword_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getRepeatedSequenceAccess().getRightCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RepeatedSequence__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RepeatedSequence__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RepeatedSequence__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRepeatedSequenceAccess().getMorethanonceAssignment_3()); }
+(rule__RepeatedSequence__MorethanonceAssignment_3)?
+{ after(grammarAccess.getRepeatedSequenceAccess().getMorethanonceAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+rule__EtsiBnf__NameAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getNameIDTerminalRuleCall_0_1_0()); }
+	RULE_ID{ after(grammarAccess.getEtsiBnfAccess().getNameIDTerminalRuleCall_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__TypeAssignment_0_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getTypeBnfKeyword_0_2_0_0()); }
+(
+{ before(grammarAccess.getEtsiBnfAccess().getTypeBnfKeyword_0_2_0_0()); }
+
+	'/bnf' 
+
+{ after(grammarAccess.getEtsiBnfAccess().getTypeBnfKeyword_0_2_0_0()); }
+)
+
+{ after(grammarAccess.getEtsiBnfAccess().getTypeBnfKeyword_0_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__ImportSectionAssignment_0_2_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_0_2_2_0()); }
+	ruleImportSection{ after(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_0_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__BnfEntryAssignment_0_2_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getBnfEntryBnfEntryParserRuleCall_0_2_3_0()); }
+	ruleBnfEntry{ after(grammarAccess.getEtsiBnfAccess().getBnfEntryBnfEntryParserRuleCall_0_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__TypeAssignment_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getTypeDeltaKeyword_1_0_0()); }
+(
+{ before(grammarAccess.getEtsiBnfAccess().getTypeDeltaKeyword_1_0_0()); }
+
+	'/delta' 
+
+{ after(grammarAccess.getEtsiBnfAccess().getTypeDeltaKeyword_1_0_0()); }
+)
+
+{ after(grammarAccess.getEtsiBnfAccess().getTypeDeltaKeyword_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__ImportSectionAssignment_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_1_2_0()); }
+	ruleImportSection{ after(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__DeltaEntryAssignment_1_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getDeltaEntryDeltaEntryParserRuleCall_1_3_0()); }
+	ruleDeltaEntry{ after(grammarAccess.getEtsiBnfAccess().getDeltaEntryDeltaEntryParserRuleCall_1_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__TypeAssignment_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getTypeMergeKeyword_2_0_0()); }
+(
+{ before(grammarAccess.getEtsiBnfAccess().getTypeMergeKeyword_2_0_0()); }
+
+	'/merge' 
+
+{ after(grammarAccess.getEtsiBnfAccess().getTypeMergeKeyword_2_0_0()); }
+)
+
+{ after(grammarAccess.getEtsiBnfAccess().getTypeMergeKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__ImportSectionAssignment_2_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_2_2_0()); }
+	ruleImportSection{ after(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EtsiBnf__MergeEntryAssignment_2_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEtsiBnfAccess().getMergeEntryMergeEntryParserRuleCall_2_3_0()); }
+	ruleMergeEntry{ after(grammarAccess.getEtsiBnfAccess().getMergeEntryMergeEntryParserRuleCall_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportSection__ImportsAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportSectionAccess().getImportsImportParserRuleCall_0()); }
+	ruleImport{ after(grammarAccess.getImportSectionAccess().getImportsImportParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BnfEntry__SectionheaderAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBnfEntryAccess().getSectionheaderSectionHeadingParserRuleCall_0_0()); }
+	ruleSectionHeading{ after(grammarAccess.getBnfEntryAccess().getSectionheaderSectionHeadingParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BnfEntry__RuleAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBnfEntryAccess().getRuleRuleParserRuleCall_1_0()); }
+	ruleRule{ after(grammarAccess.getBnfEntryAccess().getRuleRuleParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DeltaEntry__RuleAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDeltaEntryAccess().getRuleRuleParserRuleCall_0_0()); }
+	ruleRule{ after(grammarAccess.getDeltaEntryAccess().getRuleRuleParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DeltaEntry__SectionheaderAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDeltaEntryAccess().getSectionheaderSectionHeadingParserRuleCall_1_0()); }
+	ruleSectionHeading{ after(grammarAccess.getDeltaEntryAccess().getSectionheaderSectionHeadingParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DeltaEntry__ExtRuleAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDeltaEntryAccess().getExtRuleExtRuleParserRuleCall_2_0()); }
+	ruleExtRule{ after(grammarAccess.getDeltaEntryAccess().getExtRuleExtRuleParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MergeEntry__SectionheaderAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMergeEntryAccess().getSectionheaderSectionHeadingParserRuleCall_0_0()); }
+	ruleSectionHeading{ after(grammarAccess.getMergeEntryAccess().getSectionheaderSectionHeadingParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MergeEntry__MergeRuleAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMergeEntryAccess().getMergeRuleMergeRuleParserRuleCall_1_0()); }
+	ruleMergeRule{ after(grammarAccess.getMergeEntryAccess().getMergeRuleMergeRuleParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SectionHeading__SectionHeaderAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSectionHeadingAccess().getSectionHeaderSECTIONHEADERTerminalRuleCall_1_0()); }
+	RULE_SECTIONHEADER{ after(grammarAccess.getSectionHeadingAccess().getSectionHeaderSECTIONHEADERTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__ImportURIAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getImportURISTRINGTerminalRuleCall_1_0()); }
+	RULE_STRING{ after(grammarAccess.getImportAccess().getImportURISTRINGTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__GrammarTypeAssignment_2_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getGrammarTypeCoreKeyword_2_1_0_0()); }
+(
+{ before(grammarAccess.getImportAccess().getGrammarTypeCoreKeyword_2_1_0_0()); }
+
+	'core' 
+
+{ after(grammarAccess.getImportAccess().getGrammarTypeCoreKeyword_2_1_0_0()); }
+)
+
+{ after(grammarAccess.getImportAccess().getGrammarTypeCoreKeyword_2_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__GrammarTypeAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getGrammarTypePackageKeyword_2_1_1_0()); }
+(
+{ before(grammarAccess.getImportAccess().getGrammarTypePackageKeyword_2_1_1_0()); }
+
+	'package' 
+
+{ after(grammarAccess.getImportAccess().getGrammarTypePackageKeyword_2_1_1_0()); }
+)
+
+{ after(grammarAccess.getImportAccess().getGrammarTypePackageKeyword_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__GrammarTypeAssignment_2_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getGrammarTypeUpdateKeyword_2_1_2_0()); }
+(
+{ before(grammarAccess.getImportAccess().getGrammarTypeUpdateKeyword_2_1_2_0()); }
+
+	'update' 
+
+{ after(grammarAccess.getImportAccess().getGrammarTypeUpdateKeyword_2_1_2_0()); }
+)
+
+{ after(grammarAccess.getImportAccess().getGrammarTypeUpdateKeyword_2_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__LabelAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getLabelIDTerminalRuleCall_3_1_0()); }
+	RULE_ID{ after(grammarAccess.getImportAccess().getLabelIDTerminalRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Rule__RulenumberAssignment_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleAccess().getRulenumberINTTerminalRuleCall_0_0_0()); }
+	RULE_INT{ after(grammarAccess.getRuleAccess().getRulenumberINTTerminalRuleCall_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Rule__RulevariantAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleAccess().getRulevariantIDTerminalRuleCall_0_1_0()); }
+	RULE_ID{ after(grammarAccess.getRuleAccess().getRulevariantIDTerminalRuleCall_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Rule__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleAccess().getNameIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getRuleAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Rule__DefinitionListAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleAccess().getDefinitionListDefinitionListParserRuleCall_3_0()); }
+	ruleDefinitionList{ after(grammarAccess.getRuleAccess().getDefinitionListDefinitionListParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__RulenumberAssignment_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getRulenumberINTTerminalRuleCall_0_0_0()); }
+	RULE_INT{ after(grammarAccess.getExtRuleAccess().getRulenumberINTTerminalRuleCall_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__RulevariantAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getRulevariantIDTerminalRuleCall_0_1_0()); }
+	RULE_ID{ after(grammarAccess.getExtRuleAccess().getRulevariantIDTerminalRuleCall_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getNameIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getExtRuleAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__RuleextAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getRuleextINTTerminalRuleCall_2_1_0()); }
+	RULE_INT{ after(grammarAccess.getExtRuleAccess().getRuleextINTTerminalRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExtRule__ElementsAssignment_4_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExtRuleAccess().getElementsAtomParserRuleCall_4_0_0()); }
+	ruleAtom{ after(grammarAccess.getExtRuleAccess().getElementsAtomParserRuleCall_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GlobalCombinator__LogicAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGlobalCombinatorAccess().getLogicLOGICTerminalRuleCall_1_0()); }
+	RULE_LOGIC{ after(grammarAccess.getGlobalCombinatorAccess().getLogicLOGICTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RuleCombinator__NameAssignment_0_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleCombinatorAccess().getNameIDTerminalRuleCall_0_2_0()); }
+	RULE_ID{ after(grammarAccess.getRuleCombinatorAccess().getNameIDTerminalRuleCall_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RuleCombinator__LogicAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleCombinatorAccess().getLogicLOGICTerminalRuleCall_1_0()); }
+	RULE_LOGIC{ after(grammarAccess.getRuleCombinatorAccess().getLogicLOGICTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RuleCombinator__LABELAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleCombinatorAccess().getLABELSTRINGTerminalRuleCall_2_1_0()); }
+	RULE_STRING{ after(grammarAccess.getRuleCombinatorAccess().getLABELSTRINGTerminalRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HookCombinator__NameAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHookCombinatorAccess().getNameIDTerminalRuleCall_2_0()); }
+	RULE_ID{ after(grammarAccess.getHookCombinatorAccess().getNameIDTerminalRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HookCombinator__RuleextAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHookCombinatorAccess().getRuleextINTTerminalRuleCall_4_0()); }
+	RULE_INT{ after(grammarAccess.getHookCombinatorAccess().getRuleextINTTerminalRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HookCombinator__LogicAssignment_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHookCombinatorAccess().getLogicLOGICTerminalRuleCall_6_0()); }
+	RULE_LOGIC{ after(grammarAccess.getHookCombinatorAccess().getLogicLOGICTerminalRuleCall_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HookCombinator__LABELAssignment_7_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHookCombinatorAccess().getLABELSTRINGTerminalRuleCall_7_1_0()); }
+	RULE_STRING{ after(grammarAccess.getHookCombinatorAccess().getLABELSTRINGTerminalRuleCall_7_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefinitionList__SingleDefinitionAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefinitionListAccess().getSingleDefinitionSingleDefinitionParserRuleCall_0_0()); }
+	ruleSingleDefinition{ after(grammarAccess.getDefinitionListAccess().getSingleDefinitionSingleDefinitionParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefinitionList__SingleDefinitionAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefinitionListAccess().getSingleDefinitionSingleDefinitionParserRuleCall_1_1_0()); }
+	ruleSingleDefinition{ after(grammarAccess.getDefinitionListAccess().getSingleDefinitionSingleDefinitionParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SingleDefinition__TermsAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSingleDefinitionAccess().getTermsTermParserRuleCall_0()); }
+	ruleTerm{ after(grammarAccess.getSingleDefinitionAccess().getTermsTermParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Term__TermAtomAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermAccess().getTermAtomAtomParserRuleCall_0_0()); }
+	ruleAtom{ after(grammarAccess.getTermAccess().getTermAtomAtomParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Term__TermGroupedSequenceAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermAccess().getTermGroupedSequenceGroupedSequenceParserRuleCall_1_0()); }
+	ruleGroupedSequence{ after(grammarAccess.getTermAccess().getTermGroupedSequenceGroupedSequenceParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Term__TermOptionalSequenceAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermAccess().getTermOptionalSequenceOptionalSequenceParserRuleCall_2_0()); }
+	ruleOptionalSequence{ after(grammarAccess.getTermAccess().getTermOptionalSequenceOptionalSequenceParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Term__TermRepeatedSequenceAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermAccess().getTermRepeatedSequenceRepeatedSequenceParserRuleCall_3_0()); }
+	ruleRepeatedSequence{ after(grammarAccess.getTermAccess().getTermRepeatedSequenceRepeatedSequenceParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Atom__AtomStringRuleAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAtomAccess().getAtomStringRuleStringRuleParserRuleCall_0_0()); }
+	ruleStringRule{ after(grammarAccess.getAtomAccess().getAtomStringRuleStringRuleParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Atom__AtomRuleReferenceAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAtomAccess().getAtomRuleReferenceRuleReferenceParserRuleCall_1_0()); }
+	ruleRuleReference{ after(grammarAccess.getAtomAccess().getAtomRuleReferenceRuleReferenceParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RuleReference__RulerefAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRuleReferenceAccess().getRulerefRuleCrossReference_0()); }
+(
+{ before(grammarAccess.getRuleReferenceAccess().getRulerefRuleIDTerminalRuleCall_0_1()); }
+	RULE_ID{ after(grammarAccess.getRuleReferenceAccess().getRulerefRuleIDTerminalRuleCall_0_1()); }
+)
+{ after(grammarAccess.getRuleReferenceAccess().getRulerefRuleCrossReference_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StringRule__LiteralAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStringRuleAccess().getLiteralSTRINGTerminalRuleCall_0_0()); }
+	RULE_STRING{ after(grammarAccess.getStringRuleAccess().getLiteralSTRINGTerminalRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StringRule__ColonAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStringRuleAccess().getColonCOLONTerminalRuleCall_1_0()); }
+	RULE_COLON{ after(grammarAccess.getStringRuleAccess().getColonCOLONTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GroupedSequence__DefinitionListAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGroupedSequenceAccess().getDefinitionListDefinitionListParserRuleCall_1_0()); }
+	ruleDefinitionList{ after(grammarAccess.getGroupedSequenceAccess().getDefinitionListDefinitionListParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OptionalSequence__DefinitionListAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOptionalSequenceAccess().getDefinitionListDefinitionListParserRuleCall_1_0()); }
+	ruleDefinitionList{ after(grammarAccess.getOptionalSequenceAccess().getDefinitionListDefinitionListParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RepeatedSequence__DefinitionsAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRepeatedSequenceAccess().getDefinitionsDefinitionListParserRuleCall_1_0()); }
+	ruleDefinitionList{ after(grammarAccess.getRepeatedSequenceAccess().getDefinitionsDefinitionListParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RepeatedSequence__MorethanonceAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRepeatedSequenceAccess().getMorethanoncePlusSignKeyword_3_0()); }
+(
+{ before(grammarAccess.getRepeatedSequenceAccess().getMorethanoncePlusSignKeyword_3_0()); }
+
+	'+' 
+
+{ after(grammarAccess.getRepeatedSequenceAccess().getMorethanoncePlusSignKeyword_3_0()); }
+)
+
+{ after(grammarAccess.getRepeatedSequenceAccess().getMorethanoncePlusSignKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+RULE_ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*;
+
+RULE_INT : ('0'..'9')+;
+
+RULE_WS : (' '|'\t'|'\r'? '\n')+;
+
+RULE_COLON : '"' '"' '"';
+
+RULE_STRING : ('"' ~('"')* '"'|'\'' ~('\'')* '\'');
+
+RULE_SECTIONHEADER : ('a'..'z'|'A'..'Z') ('.'|'0'..'9')+ (' '|'\t') ~(('\n'|'\r'))* '\r'? '\n';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_LOGIC : ('/and'|'/or'|'/andr'|'/orr'|'/any'|'/together');
+
+
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.tokens
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.tokens	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.tokens	(revision 61)
@@ -0,0 +1,63 @@
+RULE_ID=4
+RULE_SECTIONHEADER=5
+T__29=29
+T__28=28
+T__27=27
+T__26=26
+T__25=25
+T__24=24
+T__23=23
+T__22=22
+T__21=21
+T__20=20
+RULE_SL_COMMENT=11
+RULE_ML_COMMENT=12
+T__30=30
+T__19=19
+RULE_COLON=9
+T__31=31
+RULE_STRING=6
+T__32=32
+T__33=33
+T__16=16
+T__34=34
+T__15=15
+T__35=35
+T__18=18
+T__36=36
+T__17=17
+RULE_LOGIC=8
+T__37=37
+T__38=38
+T__39=39
+T__14=14
+T__13=13
+RULE_INT=7
+RULE_WS=10
+'update'=39
+'|'=16
+'::='=27
+'/'=25
+';'=23
+'grammar'=22
+'global'=30
+'core'=37
+'+'=21
+')'=13
+'.'=28
+'import'=24
+'<-'=29
+'hook'=33
+'}'=15
+'rule'=32
+'/delta'=35
+'/bnf'=34
+'/merge'=36
+'{'=19
+'package'=38
+'label:'=26
+'combinator:'=31
+'('=17
+'*'=20
+'['=18
+']'=14
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnfLexer.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnfLexer.java	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnfLexer.java	(revision 61)
@@ -0,0 +1,1837 @@
+package de.ugoe.cs.swe.bnftools.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalEbnfLexer extends Lexer {
+    public static final int RULE_ID=4;
+    public static final int RULE_SECTIONHEADER=5;
+    public static final int T__29=29;
+    public static final int T__28=28;
+    public static final int T__27=27;
+    public static final int T__26=26;
+    public static final int T__25=25;
+    public static final int T__24=24;
+    public static final int T__23=23;
+    public static final int T__22=22;
+    public static final int T__21=21;
+    public static final int T__20=20;
+    public static final int EOF=-1;
+    public static final int RULE_SL_COMMENT=11;
+    public static final int RULE_ML_COMMENT=12;
+    public static final int T__19=19;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int RULE_COLON=9;
+    public static final int T__32=32;
+    public static final int RULE_STRING=6;
+    public static final int T__16=16;
+    public static final int T__33=33;
+    public static final int T__15=15;
+    public static final int T__34=34;
+    public static final int T__18=18;
+    public static final int T__35=35;
+    public static final int T__17=17;
+    public static final int T__36=36;
+    public static final int T__37=37;
+    public static final int RULE_LOGIC=8;
+    public static final int T__38=38;
+    public static final int T__14=14;
+    public static final int T__39=39;
+    public static final int T__13=13;
+    public static final int RULE_INT=7;
+    public static final int RULE_WS=10;
+
+    // delegates
+    // delegators
+
+    public InternalEbnfLexer() {;} 
+    public InternalEbnfLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalEbnfLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g"; }
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:11:7: ( ')' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:11:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__13"
+
+    // $ANTLR start "T__14"
+    public final void mT__14() throws RecognitionException {
+        try {
+            int _type = T__14;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:12:7: ( ']' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:12:9: ']'
+            {
+            match(']'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__14"
+
+    // $ANTLR start "T__15"
+    public final void mT__15() throws RecognitionException {
+        try {
+            int _type = T__15;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:13:7: ( '}' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:13:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__15"
+
+    // $ANTLR start "T__16"
+    public final void mT__16() throws RecognitionException {
+        try {
+            int _type = T__16;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:14:7: ( '|' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:14:9: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__16"
+
+    // $ANTLR start "T__17"
+    public final void mT__17() throws RecognitionException {
+        try {
+            int _type = T__17;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:15:7: ( '(' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:15:9: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__17"
+
+    // $ANTLR start "T__18"
+    public final void mT__18() throws RecognitionException {
+        try {
+            int _type = T__18;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:16:7: ( '[' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:16:9: '['
+            {
+            match('['); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__18"
+
+    // $ANTLR start "T__19"
+    public final void mT__19() throws RecognitionException {
+        try {
+            int _type = T__19;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:17:7: ( '{' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:17:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__19"
+
+    // $ANTLR start "T__20"
+    public final void mT__20() throws RecognitionException {
+        try {
+            int _type = T__20;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:18:7: ( '*' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:18:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__20"
+
+    // $ANTLR start "T__21"
+    public final void mT__21() throws RecognitionException {
+        try {
+            int _type = T__21;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:19:7: ( '+' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:19:9: '+'
+            {
+            match('+'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__21"
+
+    // $ANTLR start "T__22"
+    public final void mT__22() throws RecognitionException {
+        try {
+            int _type = T__22;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:20:7: ( 'grammar' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:20:9: 'grammar'
+            {
+            match("grammar"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__22"
+
+    // $ANTLR start "T__23"
+    public final void mT__23() throws RecognitionException {
+        try {
+            int _type = T__23;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:21:7: ( ';' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:21:9: ';'
+            {
+            match(';'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__23"
+
+    // $ANTLR start "T__24"
+    public final void mT__24() throws RecognitionException {
+        try {
+            int _type = T__24;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:22:7: ( 'import' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:22:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__24"
+
+    // $ANTLR start "T__25"
+    public final void mT__25() throws RecognitionException {
+        try {
+            int _type = T__25;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:23:7: ( '/' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:23:9: '/'
+            {
+            match('/'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__25"
+
+    // $ANTLR start "T__26"
+    public final void mT__26() throws RecognitionException {
+        try {
+            int _type = T__26;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:24:7: ( 'label:' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:24:9: 'label:'
+            {
+            match("label:"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__26"
+
+    // $ANTLR start "T__27"
+    public final void mT__27() throws RecognitionException {
+        try {
+            int _type = T__27;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:25:7: ( '::=' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:25:9: '::='
+            {
+            match("::="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__27"
+
+    // $ANTLR start "T__28"
+    public final void mT__28() throws RecognitionException {
+        try {
+            int _type = T__28;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:26:7: ( '.' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:26:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__28"
+
+    // $ANTLR start "T__29"
+    public final void mT__29() throws RecognitionException {
+        try {
+            int _type = T__29;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:27:7: ( '<-' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:27:9: '<-'
+            {
+            match("<-"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__29"
+
+    // $ANTLR start "T__30"
+    public final void mT__30() throws RecognitionException {
+        try {
+            int _type = T__30;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:28:7: ( 'global' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:28:9: 'global'
+            {
+            match("global"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__30"
+
+    // $ANTLR start "T__31"
+    public final void mT__31() throws RecognitionException {
+        try {
+            int _type = T__31;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:29:7: ( 'combinator:' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:29:9: 'combinator:'
+            {
+            match("combinator:"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__31"
+
+    // $ANTLR start "T__32"
+    public final void mT__32() throws RecognitionException {
+        try {
+            int _type = T__32;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:30:7: ( 'rule' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:30:9: 'rule'
+            {
+            match("rule"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__32"
+
+    // $ANTLR start "T__33"
+    public final void mT__33() throws RecognitionException {
+        try {
+            int _type = T__33;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:31:7: ( 'hook' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:31:9: 'hook'
+            {
+            match("hook"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__33"
+
+    // $ANTLR start "T__34"
+    public final void mT__34() throws RecognitionException {
+        try {
+            int _type = T__34;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:32:7: ( '/bnf' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:32:9: '/bnf'
+            {
+            match("/bnf"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__34"
+
+    // $ANTLR start "T__35"
+    public final void mT__35() throws RecognitionException {
+        try {
+            int _type = T__35;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:33:7: ( '/delta' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:33:9: '/delta'
+            {
+            match("/delta"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__35"
+
+    // $ANTLR start "T__36"
+    public final void mT__36() throws RecognitionException {
+        try {
+            int _type = T__36;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:34:7: ( '/merge' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:34:9: '/merge'
+            {
+            match("/merge"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__36"
+
+    // $ANTLR start "T__37"
+    public final void mT__37() throws RecognitionException {
+        try {
+            int _type = T__37;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:35:7: ( 'core' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:35:9: 'core'
+            {
+            match("core"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__37"
+
+    // $ANTLR start "T__38"
+    public final void mT__38() throws RecognitionException {
+        try {
+            int _type = T__38;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:36:7: ( 'package' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:36:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__38"
+
+    // $ANTLR start "T__39"
+    public final void mT__39() throws RecognitionException {
+        try {
+            int _type = T__39;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:37:7: ( 'update' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:37:9: 'update'
+            {
+            match("update"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__39"
+
+    // $ANTLR start "RULE_ID"
+    public final void mRULE_ID() throws RecognitionException {
+        try {
+            int _type = RULE_ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4695:9: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4695:11: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
+            {
+            if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4695:35: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( ((LA1_0>='0' && LA1_0<='9')||(LA1_0>='A' && LA1_0<='Z')||LA1_0=='_'||(LA1_0>='a' && LA1_0<='z')) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ID"
+
+    // $ANTLR start "RULE_INT"
+    public final void mRULE_INT() throws RecognitionException {
+        try {
+            int _type = RULE_INT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4697:10: ( ( '0' .. '9' )+ )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4697:12: ( '0' .. '9' )+
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4697:12: ( '0' .. '9' )+
+            int cnt2=0;
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( ((LA2_0>='0' && LA2_0<='9')) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4697:13: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt2 >= 1 ) break loop2;
+                        EarlyExitException eee =
+                            new EarlyExitException(2, input);
+                        throw eee;
+                }
+                cnt2++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_INT"
+
+    // $ANTLR start "RULE_WS"
+    public final void mRULE_WS() throws RecognitionException {
+        try {
+            int _type = RULE_WS;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4699:9: ( ( ' ' | '\\t' | ( '\\r' )? '\\n' )+ )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4699:11: ( ' ' | '\\t' | ( '\\r' )? '\\n' )+
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4699:11: ( ' ' | '\\t' | ( '\\r' )? '\\n' )+
+            int cnt4=0;
+            loop4:
+            do {
+                int alt4=4;
+                switch ( input.LA(1) ) {
+                case ' ':
+                    {
+                    alt4=1;
+                    }
+                    break;
+                case '\t':
+                    {
+                    alt4=2;
+                    }
+                    break;
+                case '\n':
+                case '\r':
+                    {
+                    alt4=3;
+                    }
+                    break;
+
+                }
+
+                switch (alt4) {
+            	case 1 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4699:12: ' '
+            	    {
+            	    match(' '); 
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4699:16: '\\t'
+            	    {
+            	    match('\t'); 
+
+            	    }
+            	    break;
+            	case 3 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4699:21: ( '\\r' )? '\\n'
+            	    {
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4699:21: ( '\\r' )?
+            	    int alt3=2;
+            	    int LA3_0 = input.LA(1);
+
+            	    if ( (LA3_0=='\r') ) {
+            	        alt3=1;
+            	    }
+            	    switch (alt3) {
+            	        case 1 :
+            	            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4699:21: '\\r'
+            	            {
+            	            match('\r'); 
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    match('\n'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt4 >= 1 ) break loop4;
+                        EarlyExitException eee =
+                            new EarlyExitException(4, input);
+                        throw eee;
+                }
+                cnt4++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_WS"
+
+    // $ANTLR start "RULE_COLON"
+    public final void mRULE_COLON() throws RecognitionException {
+        try {
+            int _type = RULE_COLON;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4701:12: ( '\"' '\"' '\"' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4701:14: '\"' '\"' '\"'
+            {
+            match('\"'); 
+            match('\"'); 
+            match('\"'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_COLON"
+
+    // $ANTLR start "RULE_STRING"
+    public final void mRULE_STRING() throws RecognitionException {
+        try {
+            int _type = RULE_STRING;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4703:13: ( ( '\"' (~ ( '\"' ) )* '\"' | '\\'' (~ ( '\\'' ) )* '\\'' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4703:15: ( '\"' (~ ( '\"' ) )* '\"' | '\\'' (~ ( '\\'' ) )* '\\'' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4703:15: ( '\"' (~ ( '\"' ) )* '\"' | '\\'' (~ ( '\\'' ) )* '\\'' )
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0=='\"') ) {
+                alt7=1;
+            }
+            else if ( (LA7_0=='\'') ) {
+                alt7=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 7, 0, input);
+
+                throw nvae;
+            }
+            switch (alt7) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4703:16: '\"' (~ ( '\"' ) )* '\"'
+                    {
+                    match('\"'); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4703:20: (~ ( '\"' ) )*
+                    loop5:
+                    do {
+                        int alt5=2;
+                        int LA5_0 = input.LA(1);
+
+                        if ( ((LA5_0>='\u0000' && LA5_0<='!')||(LA5_0>='#' && LA5_0<='\uFFFF')) ) {
+                            alt5=1;
+                        }
+
+
+                        switch (alt5) {
+                    	case 1 :
+                    	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4703:20: ~ ( '\"' )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop5;
+                        }
+                    } while (true);
+
+                    match('\"'); 
+
+                    }
+                    break;
+                case 2 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4703:32: '\\'' (~ ( '\\'' ) )* '\\''
+                    {
+                    match('\''); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4703:37: (~ ( '\\'' ) )*
+                    loop6:
+                    do {
+                        int alt6=2;
+                        int LA6_0 = input.LA(1);
+
+                        if ( ((LA6_0>='\u0000' && LA6_0<='&')||(LA6_0>='(' && LA6_0<='\uFFFF')) ) {
+                            alt6=1;
+                        }
+
+
+                        switch (alt6) {
+                    	case 1 :
+                    	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4703:37: ~ ( '\\'' )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop6;
+                        }
+                    } while (true);
+
+                    match('\''); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_STRING"
+
+    // $ANTLR start "RULE_SECTIONHEADER"
+    public final void mRULE_SECTIONHEADER() throws RecognitionException {
+        try {
+            int _type = RULE_SECTIONHEADER;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4705:20: ( ( 'a' .. 'z' | 'A' .. 'Z' ) ( '.' | '0' .. '9' )+ ( ' ' | '\\t' ) (~ ( ( '\\n' | '\\r' ) ) )* ( '\\r' )? '\\n' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4705:22: ( 'a' .. 'z' | 'A' .. 'Z' ) ( '.' | '0' .. '9' )+ ( ' ' | '\\t' ) (~ ( ( '\\n' | '\\r' ) ) )* ( '\\r' )? '\\n'
+            {
+            if ( (input.LA(1)>='A' && input.LA(1)<='Z')||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4705:42: ( '.' | '0' .. '9' )+
+            int cnt8=0;
+            loop8:
+            do {
+                int alt8=2;
+                int LA8_0 = input.LA(1);
+
+                if ( (LA8_0=='.'||(LA8_0>='0' && LA8_0<='9')) ) {
+                    alt8=1;
+                }
+
+
+                switch (alt8) {
+            	case 1 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:
+            	    {
+            	    if ( input.LA(1)=='.'||(input.LA(1)>='0' && input.LA(1)<='9') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt8 >= 1 ) break loop8;
+                        EarlyExitException eee =
+                            new EarlyExitException(8, input);
+                        throw eee;
+                }
+                cnt8++;
+            } while (true);
+
+            if ( input.LA(1)=='\t'||input.LA(1)==' ' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4705:69: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop9:
+            do {
+                int alt9=2;
+                int LA9_0 = input.LA(1);
+
+                if ( ((LA9_0>='\u0000' && LA9_0<='\t')||(LA9_0>='\u000B' && LA9_0<='\f')||(LA9_0>='\u000E' && LA9_0<='\uFFFF')) ) {
+                    alt9=1;
+                }
+
+
+                switch (alt9) {
+            	case 1 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4705:69: ~ ( ( '\\n' | '\\r' ) )
+            	    {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop9;
+                }
+            } while (true);
+
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4705:85: ( '\\r' )?
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0=='\r') ) {
+                alt10=1;
+            }
+            switch (alt10) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4705:85: '\\r'
+                    {
+                    match('\r'); 
+
+                    }
+                    break;
+
+            }
+
+            match('\n'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_SECTIONHEADER"
+
+    // $ANTLR start "RULE_SL_COMMENT"
+    public final void mRULE_SL_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_SL_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4707:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4707:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4707:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( ((LA11_0>='\u0000' && LA11_0<='\t')||(LA11_0>='\u000B' && LA11_0<='\f')||(LA11_0>='\u000E' && LA11_0<='\uFFFF')) ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4707:24: ~ ( ( '\\n' | '\\r' ) )
+            	    {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop11;
+                }
+            } while (true);
+
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4707:40: ( ( '\\r' )? '\\n' )?
+            int alt13=2;
+            int LA13_0 = input.LA(1);
+
+            if ( (LA13_0=='\n'||LA13_0=='\r') ) {
+                alt13=1;
+            }
+            switch (alt13) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4707:41: ( '\\r' )? '\\n'
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4707:41: ( '\\r' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\r') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4707:41: '\\r'
+                            {
+                            match('\r'); 
+
+                            }
+                            break;
+
+                    }
+
+                    match('\n'); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_SL_COMMENT"
+
+    // $ANTLR start "RULE_ML_COMMENT"
+    public final void mRULE_ML_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_ML_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4709:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4709:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4709:24: ( options {greedy=false; } : . )*
+            loop14:
+            do {
+                int alt14=2;
+                int LA14_0 = input.LA(1);
+
+                if ( (LA14_0=='*') ) {
+                    int LA14_1 = input.LA(2);
+
+                    if ( (LA14_1=='/') ) {
+                        alt14=2;
+                    }
+                    else if ( ((LA14_1>='\u0000' && LA14_1<='.')||(LA14_1>='0' && LA14_1<='\uFFFF')) ) {
+                        alt14=1;
+                    }
+
+
+                }
+                else if ( ((LA14_0>='\u0000' && LA14_0<=')')||(LA14_0>='+' && LA14_0<='\uFFFF')) ) {
+                    alt14=1;
+                }
+
+
+                switch (alt14) {
+            	case 1 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4709:52: .
+            	    {
+            	    matchAny(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop14;
+                }
+            } while (true);
+
+            match("*/"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ML_COMMENT"
+
+    // $ANTLR start "RULE_LOGIC"
+    public final void mRULE_LOGIC() throws RecognitionException {
+        try {
+            int _type = RULE_LOGIC;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4711:12: ( ( '/and' | '/or' | '/andr' | '/orr' | '/any' | '/together' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4711:14: ( '/and' | '/or' | '/andr' | '/orr' | '/any' | '/together' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4711:14: ( '/and' | '/or' | '/andr' | '/orr' | '/any' | '/together' )
+            int alt15=6;
+            alt15 = dfa15.predict(input);
+            switch (alt15) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4711:15: '/and'
+                    {
+                    match("/and"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4711:22: '/or'
+                    {
+                    match("/or"); 
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4711:28: '/andr'
+                    {
+                    match("/andr"); 
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4711:36: '/orr'
+                    {
+                    match("/orr"); 
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4711:43: '/any'
+                    {
+                    match("/any"); 
+
+
+                    }
+                    break;
+                case 6 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4711:50: '/together'
+                    {
+                    match("/together"); 
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_LOGIC"
+
+    public void mTokens() throws RecognitionException {
+        // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | RULE_ID | RULE_INT | RULE_WS | RULE_COLON | RULE_STRING | RULE_SECTIONHEADER | RULE_SL_COMMENT | RULE_ML_COMMENT | RULE_LOGIC )
+        int alt16=36;
+        alt16 = dfa16.predict(input);
+        switch (alt16) {
+            case 1 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:172: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 29 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:180: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 30 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:189: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 31 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:197: RULE_COLON
+                {
+                mRULE_COLON(); 
+
+                }
+                break;
+            case 32 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:208: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 33 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:220: RULE_SECTIONHEADER
+                {
+                mRULE_SECTIONHEADER(); 
+
+                }
+                break;
+            case 34 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:239: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 35 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:255: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 36 :
+                // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1:271: RULE_LOGIC
+                {
+                mRULE_LOGIC(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA15 dfa15 = new DFA15(this);
+    protected DFA16 dfa16 = new DFA16(this);
+    static final String DFA15_eotS =
+        "\6\uffff\1\12\1\14\5\uffff";
+    static final String DFA15_eofS =
+        "\15\uffff";
+    static final String DFA15_minS =
+        "\1\57\1\141\1\156\1\162\1\uffff\1\144\2\162\5\uffff";
+    static final String DFA15_maxS =
+        "\1\57\1\164\1\156\1\162\1\uffff\1\171\2\162\5\uffff";
+    static final String DFA15_acceptS =
+        "\4\uffff\1\6\3\uffff\1\5\1\4\1\2\1\3\1\1";
+    static final String DFA15_specialS =
+        "\15\uffff}>";
+    static final String[] DFA15_transitionS = {
+            "\1\1",
+            "\1\2\15\uffff\1\3\4\uffff\1\4",
+            "\1\5",
+            "\1\6",
+            "",
+            "\1\7\24\uffff\1\10",
+            "\1\11",
+            "\1\13",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA15_eot = DFA.unpackEncodedString(DFA15_eotS);
+    static final short[] DFA15_eof = DFA.unpackEncodedString(DFA15_eofS);
+    static final char[] DFA15_min = DFA.unpackEncodedStringToUnsignedChars(DFA15_minS);
+    static final char[] DFA15_max = DFA.unpackEncodedStringToUnsignedChars(DFA15_maxS);
+    static final short[] DFA15_accept = DFA.unpackEncodedString(DFA15_acceptS);
+    static final short[] DFA15_special = DFA.unpackEncodedString(DFA15_specialS);
+    static final short[][] DFA15_transition;
+
+    static {
+        int numStates = DFA15_transitionS.length;
+        DFA15_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA15_transition[i] = DFA.unpackEncodedString(DFA15_transitionS[i]);
+        }
+    }
+
+    class DFA15 extends DFA {
+
+        public DFA15(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 15;
+            this.eot = DFA15_eot;
+            this.eof = DFA15_eof;
+            this.min = DFA15_min;
+            this.max = DFA15_max;
+            this.accept = DFA15_accept;
+            this.special = DFA15_special;
+            this.transition = DFA15_transition;
+        }
+        public String getDescription() {
+            return "4711:14: ( '/and' | '/or' | '/andr' | '/orr' | '/any' | '/together' )";
+        }
+    }
+    static final String DFA16_eotS =
+        "\12\uffff\1\34\1\uffff\1\34\1\50\1\34\3\uffff\6\34\5\uffff\3\34"+
+        "\1\uffff\1\34\7\uffff\6\34\1\33\12\34\1\uffff\5\34\1\112\1\113\1"+
+        "\114\7\34\3\uffff\3\34\1\127\1\130\1\uffff\2\34\1\133\1\134\2\uffff"+
+        "\1\34\1\136\2\uffff\1\34\1\uffff\2\34\1\uffff";
+    static final String DFA16_eofS =
+        "\142\uffff";
+    static final String DFA16_minS =
+        "\1\11\11\uffff\1\56\1\uffff\1\56\1\52\1\56\3\uffff\6\56\2\uffff"+
+        "\1\0\2\uffff\1\141\1\157\1\11\1\uffff\1\160\7\uffff\1\142\1\155"+
+        "\1\154\1\157\1\143\1\144\1\42\1\155\1\142\1\157\1\145\1\142\2\145"+
+        "\2\153\1\141\1\uffff\1\155\1\141\1\162\1\154\1\151\3\60\1\141\1"+
+        "\164\1\141\1\154\1\164\1\72\1\156\3\uffff\1\147\1\145\1\162\2\60"+
+        "\1\uffff\1\141\1\145\2\60\2\uffff\1\164\1\60\2\uffff\1\157\1\uffff"+
+        "\1\162\1\72\1\uffff";
+    static final String DFA16_maxS =
+        "\1\175\11\uffff\1\162\1\uffff\1\155\1\164\1\141\3\uffff\1\157\1"+
+        "\165\1\157\1\141\1\160\1\71\2\uffff\1\uffff\2\uffff\1\141\1\157"+
+        "\1\71\1\uffff\1\160\7\uffff\1\142\1\162\1\154\1\157\1\143\1\144"+
+        "\1\42\1\155\1\142\1\157\1\145\1\142\2\145\2\153\1\141\1\uffff\1"+
+        "\155\1\141\1\162\1\154\1\151\3\172\1\141\1\164\1\141\1\154\1\164"+
+        "\1\72\1\156\3\uffff\1\147\1\145\1\162\2\172\1\uffff\1\141\1\145"+
+        "\2\172\2\uffff\1\164\1\172\2\uffff\1\157\1\uffff\1\162\1\72\1\uffff";
+    static final String DFA16_acceptS =
+        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\uffff\1\13\3\uffff"+
+        "\1\17\1\20\1\21\6\uffff\1\35\1\36\1\uffff\1\40\1\34\3\uffff\1\41"+
+        "\1\uffff\1\26\1\27\1\30\1\42\1\43\1\44\1\15\21\uffff\1\37\17\uffff"+
+        "\1\31\1\24\1\25\5\uffff\1\16\4\uffff\1\22\1\14\2\uffff\1\33\1\12"+
+        "\1\uffff\1\32\2\uffff\1\23";
+    static final String DFA16_specialS =
+        "\32\uffff\1\0\107\uffff}>";
+    static final String[] DFA16_transitionS = {
+            "\2\31\2\uffff\1\31\22\uffff\1\31\1\uffff\1\32\4\uffff\1\33"+
+            "\1\5\1\1\1\10\1\11\2\uffff\1\20\1\15\12\30\1\17\1\13\1\21\4"+
+            "\uffff\32\27\1\6\1\uffff\1\2\1\uffff\1\34\1\uffff\2\27\1\22"+
+            "\3\27\1\12\1\24\1\14\2\27\1\16\3\27\1\25\1\27\1\23\2\27\1\26"+
+            "\5\27\1\7\1\4\1\3",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\40\1\uffff\12\37\62\uffff\1\36\5\uffff\1\35",
+            "",
+            "\1\40\1\uffff\12\37\63\uffff\1\41",
+            "\1\46\4\uffff\1\45\61\uffff\1\47\1\42\1\uffff\1\43\10\uffff"+
+            "\1\44\1\uffff\1\47\4\uffff\1\47",
+            "\1\40\1\uffff\12\37\47\uffff\1\51",
+            "",
+            "",
+            "",
+            "\1\40\1\uffff\12\37\65\uffff\1\52",
+            "\1\40\1\uffff\12\37\73\uffff\1\53",
+            "\1\40\1\uffff\12\37\65\uffff\1\54",
+            "\1\40\1\uffff\12\37\47\uffff\1\55",
+            "\1\40\1\uffff\12\37\66\uffff\1\56",
+            "\1\40\1\uffff\12\37",
+            "",
+            "",
+            "\42\33\1\57\uffdd\33",
+            "",
+            "",
+            "\1\60",
+            "\1\61",
+            "\1\40\26\uffff\1\40\15\uffff\1\40\1\uffff\12\37",
+            "",
+            "\1\62",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\63",
+            "\1\64\4\uffff\1\65",
+            "\1\66",
+            "\1\67",
+            "\1\70",
+            "\1\71",
+            "\1\72",
+            "\1\73",
+            "\1\74",
+            "\1\75",
+            "\1\76",
+            "\1\77",
+            "\1\100",
+            "\1\101",
+            "\1\102",
+            "\1\103",
+            "\1\104",
+            "",
+            "\1\105",
+            "\1\106",
+            "\1\107",
+            "\1\110",
+            "\1\111",
+            "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+            "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+            "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+            "\1\115",
+            "\1\116",
+            "\1\117",
+            "\1\120",
+            "\1\121",
+            "\1\122",
+            "\1\123",
+            "",
+            "",
+            "",
+            "\1\124",
+            "\1\125",
+            "\1\126",
+            "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+            "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+            "",
+            "\1\131",
+            "\1\132",
+            "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+            "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+            "",
+            "",
+            "\1\135",
+            "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
+            "",
+            "",
+            "\1\137",
+            "",
+            "\1\140",
+            "\1\141",
+            ""
+    };
+
+    static final short[] DFA16_eot = DFA.unpackEncodedString(DFA16_eotS);
+    static final short[] DFA16_eof = DFA.unpackEncodedString(DFA16_eofS);
+    static final char[] DFA16_min = DFA.unpackEncodedStringToUnsignedChars(DFA16_minS);
+    static final char[] DFA16_max = DFA.unpackEncodedStringToUnsignedChars(DFA16_maxS);
+    static final short[] DFA16_accept = DFA.unpackEncodedString(DFA16_acceptS);
+    static final short[] DFA16_special = DFA.unpackEncodedString(DFA16_specialS);
+    static final short[][] DFA16_transition;
+
+    static {
+        int numStates = DFA16_transitionS.length;
+        DFA16_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA16_transition[i] = DFA.unpackEncodedString(DFA16_transitionS[i]);
+        }
+    }
+
+    class DFA16 extends DFA {
+
+        public DFA16(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 16;
+            this.eot = DFA16_eot;
+            this.eof = DFA16_eof;
+            this.min = DFA16_min;
+            this.max = DFA16_max;
+            this.accept = DFA16_accept;
+            this.special = DFA16_special;
+            this.transition = DFA16_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | RULE_ID | RULE_INT | RULE_WS | RULE_COLON | RULE_STRING | RULE_SECTIONHEADER | RULE_SL_COMMENT | RULE_ML_COMMENT | RULE_LOGIC );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            IntStream input = _input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA16_26 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA16_26=='\"') ) {s = 47;}
+
+                        else if ( ((LA16_26>='\u0000' && LA16_26<='!')||(LA16_26>='#' && LA16_26<='\uFFFF')) ) {s = 27;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 16, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnfParser.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnfParser.java	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnfParser.java	(revision 61)
@@ -0,0 +1,13243 @@
+package de.ugoe.cs.swe.bnftools.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import de.ugoe.cs.swe.bnftools.services.EbnfGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalEbnfParser extends AbstractInternalContentAssistParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_SECTIONHEADER", "RULE_STRING", "RULE_INT", "RULE_LOGIC", "RULE_COLON", "RULE_WS", "RULE_SL_COMMENT", "RULE_ML_COMMENT", "')'", "']'", "'}'", "'|'", "'('", "'['", "'{'", "'*'", "'+'", "'grammar'", "';'", "'import'", "'/'", "'label:'", "'::='", "'.'", "'<-'", "'global'", "'combinator:'", "'rule'", "'hook'", "'/bnf'", "'/delta'", "'/merge'", "'core'", "'package'", "'update'"
+    };
+    public static final int RULE_ID=4;
+    public static final int RULE_SECTIONHEADER=5;
+    public static final int T__29=29;
+    public static final int T__28=28;
+    public static final int T__27=27;
+    public static final int T__26=26;
+    public static final int T__25=25;
+    public static final int T__24=24;
+    public static final int T__23=23;
+    public static final int T__22=22;
+    public static final int T__21=21;
+    public static final int T__20=20;
+    public static final int RULE_SL_COMMENT=11;
+    public static final int EOF=-1;
+    public static final int RULE_ML_COMMENT=12;
+    public static final int T__30=30;
+    public static final int T__19=19;
+    public static final int RULE_COLON=9;
+    public static final int T__31=31;
+    public static final int RULE_STRING=6;
+    public static final int T__32=32;
+    public static final int T__33=33;
+    public static final int T__16=16;
+    public static final int T__34=34;
+    public static final int T__15=15;
+    public static final int T__35=35;
+    public static final int T__18=18;
+    public static final int T__36=36;
+    public static final int T__17=17;
+    public static final int RULE_LOGIC=8;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__14=14;
+    public static final int T__13=13;
+    public static final int RULE_INT=7;
+    public static final int RULE_WS=10;
+
+    // delegates
+    // delegators
+
+
+        public InternalEbnfParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalEbnfParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalEbnfParser.tokenNames; }
+    public String getGrammarFileName() { return "../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g"; }
+
+
+     
+     	private EbnfGrammarAccess grammarAccess;
+     	
+        public void setGrammarAccess(EbnfGrammarAccess grammarAccess) {
+        	this.grammarAccess = grammarAccess;
+        }
+        
+        @Override
+        protected Grammar getGrammar() {
+        	return grammarAccess.getGrammar();
+        }
+        
+        @Override
+        protected String getValueForTokenName(String tokenName) {
+        	return tokenName;
+        }
+
+
+
+
+    // $ANTLR start "entryRuleEtsiBnf"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:60:1: entryRuleEtsiBnf : ruleEtsiBnf EOF ;
+    public final void entryRuleEtsiBnf() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:61:1: ( ruleEtsiBnf EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:62:1: ruleEtsiBnf EOF
+            {
+             before(grammarAccess.getEtsiBnfRule()); 
+            pushFollow(FOLLOW_ruleEtsiBnf_in_entryRuleEtsiBnf61);
+            ruleEtsiBnf();
+
+            state._fsp--;
+
+             after(grammarAccess.getEtsiBnfRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleEtsiBnf68); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleEtsiBnf"
+
+
+    // $ANTLR start "ruleEtsiBnf"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:69:1: ruleEtsiBnf : ( ( rule__EtsiBnf__Alternatives ) ) ;
+    public final void ruleEtsiBnf() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:73:2: ( ( ( rule__EtsiBnf__Alternatives ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:74:1: ( ( rule__EtsiBnf__Alternatives ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:74:1: ( ( rule__EtsiBnf__Alternatives ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:75:1: ( rule__EtsiBnf__Alternatives )
+            {
+             before(grammarAccess.getEtsiBnfAccess().getAlternatives()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:76:1: ( rule__EtsiBnf__Alternatives )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:76:2: rule__EtsiBnf__Alternatives
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Alternatives_in_ruleEtsiBnf94);
+            rule__EtsiBnf__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEtsiBnfAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleEtsiBnf"
+
+
+    // $ANTLR start "entryRuleImportSection"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:88:1: entryRuleImportSection : ruleImportSection EOF ;
+    public final void entryRuleImportSection() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:89:1: ( ruleImportSection EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:90:1: ruleImportSection EOF
+            {
+             before(grammarAccess.getImportSectionRule()); 
+            pushFollow(FOLLOW_ruleImportSection_in_entryRuleImportSection121);
+            ruleImportSection();
+
+            state._fsp--;
+
+             after(grammarAccess.getImportSectionRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleImportSection128); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleImportSection"
+
+
+    // $ANTLR start "ruleImportSection"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:97:1: ruleImportSection : ( ( ( rule__ImportSection__ImportsAssignment ) ) ( ( rule__ImportSection__ImportsAssignment )* ) ) ;
+    public final void ruleImportSection() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:101:2: ( ( ( ( rule__ImportSection__ImportsAssignment ) ) ( ( rule__ImportSection__ImportsAssignment )* ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:102:1: ( ( ( rule__ImportSection__ImportsAssignment ) ) ( ( rule__ImportSection__ImportsAssignment )* ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:102:1: ( ( ( rule__ImportSection__ImportsAssignment ) ) ( ( rule__ImportSection__ImportsAssignment )* ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:103:1: ( ( rule__ImportSection__ImportsAssignment ) ) ( ( rule__ImportSection__ImportsAssignment )* )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:103:1: ( ( rule__ImportSection__ImportsAssignment ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:104:1: ( rule__ImportSection__ImportsAssignment )
+            {
+             before(grammarAccess.getImportSectionAccess().getImportsAssignment()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:105:1: ( rule__ImportSection__ImportsAssignment )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:105:2: rule__ImportSection__ImportsAssignment
+            {
+            pushFollow(FOLLOW_rule__ImportSection__ImportsAssignment_in_ruleImportSection156);
+            rule__ImportSection__ImportsAssignment();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getImportSectionAccess().getImportsAssignment()); 
+
+            }
+
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:108:1: ( ( rule__ImportSection__ImportsAssignment )* )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:109:1: ( rule__ImportSection__ImportsAssignment )*
+            {
+             before(grammarAccess.getImportSectionAccess().getImportsAssignment()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:110:1: ( rule__ImportSection__ImportsAssignment )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0==24) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:110:2: rule__ImportSection__ImportsAssignment
+            	    {
+            	    pushFollow(FOLLOW_rule__ImportSection__ImportsAssignment_in_ruleImportSection168);
+            	    rule__ImportSection__ImportsAssignment();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+             after(grammarAccess.getImportSectionAccess().getImportsAssignment()); 
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleImportSection"
+
+
+    // $ANTLR start "entryRuleBnfEntry"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:123:1: entryRuleBnfEntry : ruleBnfEntry EOF ;
+    public final void entryRuleBnfEntry() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:124:1: ( ruleBnfEntry EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:125:1: ruleBnfEntry EOF
+            {
+             before(grammarAccess.getBnfEntryRule()); 
+            pushFollow(FOLLOW_ruleBnfEntry_in_entryRuleBnfEntry198);
+            ruleBnfEntry();
+
+            state._fsp--;
+
+             after(grammarAccess.getBnfEntryRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleBnfEntry205); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleBnfEntry"
+
+
+    // $ANTLR start "ruleBnfEntry"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:132:1: ruleBnfEntry : ( ( rule__BnfEntry__Alternatives ) ) ;
+    public final void ruleBnfEntry() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:136:2: ( ( ( rule__BnfEntry__Alternatives ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:137:1: ( ( rule__BnfEntry__Alternatives ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:137:1: ( ( rule__BnfEntry__Alternatives ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:138:1: ( rule__BnfEntry__Alternatives )
+            {
+             before(grammarAccess.getBnfEntryAccess().getAlternatives()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:139:1: ( rule__BnfEntry__Alternatives )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:139:2: rule__BnfEntry__Alternatives
+            {
+            pushFollow(FOLLOW_rule__BnfEntry__Alternatives_in_ruleBnfEntry231);
+            rule__BnfEntry__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getBnfEntryAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleBnfEntry"
+
+
+    // $ANTLR start "entryRuleDeltaEntry"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:151:1: entryRuleDeltaEntry : ruleDeltaEntry EOF ;
+    public final void entryRuleDeltaEntry() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:152:1: ( ruleDeltaEntry EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:153:1: ruleDeltaEntry EOF
+            {
+             before(grammarAccess.getDeltaEntryRule()); 
+            pushFollow(FOLLOW_ruleDeltaEntry_in_entryRuleDeltaEntry258);
+            ruleDeltaEntry();
+
+            state._fsp--;
+
+             after(grammarAccess.getDeltaEntryRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDeltaEntry265); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleDeltaEntry"
+
+
+    // $ANTLR start "ruleDeltaEntry"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:160:1: ruleDeltaEntry : ( ( rule__DeltaEntry__Alternatives ) ) ;
+    public final void ruleDeltaEntry() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:164:2: ( ( ( rule__DeltaEntry__Alternatives ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:165:1: ( ( rule__DeltaEntry__Alternatives ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:165:1: ( ( rule__DeltaEntry__Alternatives ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:166:1: ( rule__DeltaEntry__Alternatives )
+            {
+             before(grammarAccess.getDeltaEntryAccess().getAlternatives()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:167:1: ( rule__DeltaEntry__Alternatives )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:167:2: rule__DeltaEntry__Alternatives
+            {
+            pushFollow(FOLLOW_rule__DeltaEntry__Alternatives_in_ruleDeltaEntry291);
+            rule__DeltaEntry__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDeltaEntryAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleDeltaEntry"
+
+
+    // $ANTLR start "entryRuleMergeEntry"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:179:1: entryRuleMergeEntry : ruleMergeEntry EOF ;
+    public final void entryRuleMergeEntry() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:180:1: ( ruleMergeEntry EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:181:1: ruleMergeEntry EOF
+            {
+             before(grammarAccess.getMergeEntryRule()); 
+            pushFollow(FOLLOW_ruleMergeEntry_in_entryRuleMergeEntry318);
+            ruleMergeEntry();
+
+            state._fsp--;
+
+             after(grammarAccess.getMergeEntryRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleMergeEntry325); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleMergeEntry"
+
+
+    // $ANTLR start "ruleMergeEntry"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:188:1: ruleMergeEntry : ( ( rule__MergeEntry__Alternatives ) ) ;
+    public final void ruleMergeEntry() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:192:2: ( ( ( rule__MergeEntry__Alternatives ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:193:1: ( ( rule__MergeEntry__Alternatives ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:193:1: ( ( rule__MergeEntry__Alternatives ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:194:1: ( rule__MergeEntry__Alternatives )
+            {
+             before(grammarAccess.getMergeEntryAccess().getAlternatives()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:195:1: ( rule__MergeEntry__Alternatives )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:195:2: rule__MergeEntry__Alternatives
+            {
+            pushFollow(FOLLOW_rule__MergeEntry__Alternatives_in_ruleMergeEntry351);
+            rule__MergeEntry__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getMergeEntryAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleMergeEntry"
+
+
+    // $ANTLR start "entryRuleSectionHeading"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:207:1: entryRuleSectionHeading : ruleSectionHeading EOF ;
+    public final void entryRuleSectionHeading() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:208:1: ( ruleSectionHeading EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:209:1: ruleSectionHeading EOF
+            {
+             before(grammarAccess.getSectionHeadingRule()); 
+            pushFollow(FOLLOW_ruleSectionHeading_in_entryRuleSectionHeading378);
+            ruleSectionHeading();
+
+            state._fsp--;
+
+             after(grammarAccess.getSectionHeadingRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleSectionHeading385); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleSectionHeading"
+
+
+    // $ANTLR start "ruleSectionHeading"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:216:1: ruleSectionHeading : ( ( rule__SectionHeading__Group__0 ) ) ;
+    public final void ruleSectionHeading() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:220:2: ( ( ( rule__SectionHeading__Group__0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:221:1: ( ( rule__SectionHeading__Group__0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:221:1: ( ( rule__SectionHeading__Group__0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:222:1: ( rule__SectionHeading__Group__0 )
+            {
+             before(grammarAccess.getSectionHeadingAccess().getGroup()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:223:1: ( rule__SectionHeading__Group__0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:223:2: rule__SectionHeading__Group__0
+            {
+            pushFollow(FOLLOW_rule__SectionHeading__Group__0_in_ruleSectionHeading411);
+            rule__SectionHeading__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSectionHeadingAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleSectionHeading"
+
+
+    // $ANTLR start "entryRuleImport"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:235:1: entryRuleImport : ruleImport EOF ;
+    public final void entryRuleImport() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:236:1: ( ruleImport EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:237:1: ruleImport EOF
+            {
+             before(grammarAccess.getImportRule()); 
+            pushFollow(FOLLOW_ruleImport_in_entryRuleImport438);
+            ruleImport();
+
+            state._fsp--;
+
+             after(grammarAccess.getImportRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleImport445); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleImport"
+
+
+    // $ANTLR start "ruleImport"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:244:1: ruleImport : ( ( rule__Import__Group__0 ) ) ;
+    public final void ruleImport() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:248:2: ( ( ( rule__Import__Group__0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:249:1: ( ( rule__Import__Group__0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:249:1: ( ( rule__Import__Group__0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:250:1: ( rule__Import__Group__0 )
+            {
+             before(grammarAccess.getImportAccess().getGroup()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:251:1: ( rule__Import__Group__0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:251:2: rule__Import__Group__0
+            {
+            pushFollow(FOLLOW_rule__Import__Group__0_in_ruleImport471);
+            rule__Import__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getImportAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleImport"
+
+
+    // $ANTLR start "entryRuleRule"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:263:1: entryRuleRule : ruleRule EOF ;
+    public final void entryRuleRule() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:264:1: ( ruleRule EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:265:1: ruleRule EOF
+            {
+             before(grammarAccess.getRuleRule()); 
+            pushFollow(FOLLOW_ruleRule_in_entryRuleRule498);
+            ruleRule();
+
+            state._fsp--;
+
+             after(grammarAccess.getRuleRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleRule505); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRule"
+
+
+    // $ANTLR start "ruleRule"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:272:1: ruleRule : ( ( rule__Rule__Group__0 ) ) ;
+    public final void ruleRule() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:276:2: ( ( ( rule__Rule__Group__0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:277:1: ( ( rule__Rule__Group__0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:277:1: ( ( rule__Rule__Group__0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:278:1: ( rule__Rule__Group__0 )
+            {
+             before(grammarAccess.getRuleAccess().getGroup()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:279:1: ( rule__Rule__Group__0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:279:2: rule__Rule__Group__0
+            {
+            pushFollow(FOLLOW_rule__Rule__Group__0_in_ruleRule531);
+            rule__Rule__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRuleAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRule"
+
+
+    // $ANTLR start "entryRuleExtRule"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:291:1: entryRuleExtRule : ruleExtRule EOF ;
+    public final void entryRuleExtRule() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:292:1: ( ruleExtRule EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:293:1: ruleExtRule EOF
+            {
+             before(grammarAccess.getExtRuleRule()); 
+            pushFollow(FOLLOW_ruleExtRule_in_entryRuleExtRule558);
+            ruleExtRule();
+
+            state._fsp--;
+
+             after(grammarAccess.getExtRuleRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleExtRule565); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleExtRule"
+
+
+    // $ANTLR start "ruleExtRule"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:300:1: ruleExtRule : ( ( rule__ExtRule__Group__0 ) ) ;
+    public final void ruleExtRule() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:304:2: ( ( ( rule__ExtRule__Group__0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:305:1: ( ( rule__ExtRule__Group__0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:305:1: ( ( rule__ExtRule__Group__0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:306:1: ( rule__ExtRule__Group__0 )
+            {
+             before(grammarAccess.getExtRuleAccess().getGroup()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:307:1: ( rule__ExtRule__Group__0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:307:2: rule__ExtRule__Group__0
+            {
+            pushFollow(FOLLOW_rule__ExtRule__Group__0_in_ruleExtRule591);
+            rule__ExtRule__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getExtRuleAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleExtRule"
+
+
+    // $ANTLR start "entryRuleMergeRule"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:319:1: entryRuleMergeRule : ruleMergeRule EOF ;
+    public final void entryRuleMergeRule() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:320:1: ( ruleMergeRule EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:321:1: ruleMergeRule EOF
+            {
+             before(grammarAccess.getMergeRuleRule()); 
+            pushFollow(FOLLOW_ruleMergeRule_in_entryRuleMergeRule618);
+            ruleMergeRule();
+
+            state._fsp--;
+
+             after(grammarAccess.getMergeRuleRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleMergeRule625); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleMergeRule"
+
+
+    // $ANTLR start "ruleMergeRule"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:328:1: ruleMergeRule : ( ( rule__MergeRule__Alternatives ) ) ;
+    public final void ruleMergeRule() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:332:2: ( ( ( rule__MergeRule__Alternatives ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:333:1: ( ( rule__MergeRule__Alternatives ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:333:1: ( ( rule__MergeRule__Alternatives ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:334:1: ( rule__MergeRule__Alternatives )
+            {
+             before(grammarAccess.getMergeRuleAccess().getAlternatives()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:335:1: ( rule__MergeRule__Alternatives )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:335:2: rule__MergeRule__Alternatives
+            {
+            pushFollow(FOLLOW_rule__MergeRule__Alternatives_in_ruleMergeRule651);
+            rule__MergeRule__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getMergeRuleAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleMergeRule"
+
+
+    // $ANTLR start "entryRuleGlobalCombinator"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:347:1: entryRuleGlobalCombinator : ruleGlobalCombinator EOF ;
+    public final void entryRuleGlobalCombinator() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:348:1: ( ruleGlobalCombinator EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:349:1: ruleGlobalCombinator EOF
+            {
+             before(grammarAccess.getGlobalCombinatorRule()); 
+            pushFollow(FOLLOW_ruleGlobalCombinator_in_entryRuleGlobalCombinator678);
+            ruleGlobalCombinator();
+
+            state._fsp--;
+
+             after(grammarAccess.getGlobalCombinatorRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleGlobalCombinator685); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleGlobalCombinator"
+
+
+    // $ANTLR start "ruleGlobalCombinator"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:356:1: ruleGlobalCombinator : ( ( rule__GlobalCombinator__Group__0 ) ) ;
+    public final void ruleGlobalCombinator() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:360:2: ( ( ( rule__GlobalCombinator__Group__0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:361:1: ( ( rule__GlobalCombinator__Group__0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:361:1: ( ( rule__GlobalCombinator__Group__0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:362:1: ( rule__GlobalCombinator__Group__0 )
+            {
+             before(grammarAccess.getGlobalCombinatorAccess().getGroup()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:363:1: ( rule__GlobalCombinator__Group__0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:363:2: rule__GlobalCombinator__Group__0
+            {
+            pushFollow(FOLLOW_rule__GlobalCombinator__Group__0_in_ruleGlobalCombinator711);
+            rule__GlobalCombinator__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGlobalCombinatorAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleGlobalCombinator"
+
+
+    // $ANTLR start "entryRuleRuleCombinator"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:375:1: entryRuleRuleCombinator : ruleRuleCombinator EOF ;
+    public final void entryRuleRuleCombinator() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:376:1: ( ruleRuleCombinator EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:377:1: ruleRuleCombinator EOF
+            {
+             before(grammarAccess.getRuleCombinatorRule()); 
+            pushFollow(FOLLOW_ruleRuleCombinator_in_entryRuleRuleCombinator738);
+            ruleRuleCombinator();
+
+            state._fsp--;
+
+             after(grammarAccess.getRuleCombinatorRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleRuleCombinator745); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRuleCombinator"
+
+
+    // $ANTLR start "ruleRuleCombinator"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:384:1: ruleRuleCombinator : ( ( rule__RuleCombinator__Group__0 ) ) ;
+    public final void ruleRuleCombinator() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:388:2: ( ( ( rule__RuleCombinator__Group__0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:389:1: ( ( rule__RuleCombinator__Group__0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:389:1: ( ( rule__RuleCombinator__Group__0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:390:1: ( rule__RuleCombinator__Group__0 )
+            {
+             before(grammarAccess.getRuleCombinatorAccess().getGroup()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:391:1: ( rule__RuleCombinator__Group__0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:391:2: rule__RuleCombinator__Group__0
+            {
+            pushFollow(FOLLOW_rule__RuleCombinator__Group__0_in_ruleRuleCombinator771);
+            rule__RuleCombinator__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRuleCombinatorAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRuleCombinator"
+
+
+    // $ANTLR start "entryRuleHookCombinator"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:403:1: entryRuleHookCombinator : ruleHookCombinator EOF ;
+    public final void entryRuleHookCombinator() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:404:1: ( ruleHookCombinator EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:405:1: ruleHookCombinator EOF
+            {
+             before(grammarAccess.getHookCombinatorRule()); 
+            pushFollow(FOLLOW_ruleHookCombinator_in_entryRuleHookCombinator798);
+            ruleHookCombinator();
+
+            state._fsp--;
+
+             after(grammarAccess.getHookCombinatorRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleHookCombinator805); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleHookCombinator"
+
+
+    // $ANTLR start "ruleHookCombinator"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:412:1: ruleHookCombinator : ( ( rule__HookCombinator__Group__0 ) ) ;
+    public final void ruleHookCombinator() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:416:2: ( ( ( rule__HookCombinator__Group__0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:417:1: ( ( rule__HookCombinator__Group__0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:417:1: ( ( rule__HookCombinator__Group__0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:418:1: ( rule__HookCombinator__Group__0 )
+            {
+             before(grammarAccess.getHookCombinatorAccess().getGroup()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:419:1: ( rule__HookCombinator__Group__0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:419:2: rule__HookCombinator__Group__0
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__Group__0_in_ruleHookCombinator831);
+            rule__HookCombinator__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getHookCombinatorAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleHookCombinator"
+
+
+    // $ANTLR start "entryRuleDefinitionList"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:431:1: entryRuleDefinitionList : ruleDefinitionList EOF ;
+    public final void entryRuleDefinitionList() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:432:1: ( ruleDefinitionList EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:433:1: ruleDefinitionList EOF
+            {
+             before(grammarAccess.getDefinitionListRule()); 
+            pushFollow(FOLLOW_ruleDefinitionList_in_entryRuleDefinitionList858);
+            ruleDefinitionList();
+
+            state._fsp--;
+
+             after(grammarAccess.getDefinitionListRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDefinitionList865); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleDefinitionList"
+
+
+    // $ANTLR start "ruleDefinitionList"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:440:1: ruleDefinitionList : ( ( rule__DefinitionList__Group__0 ) ) ;
+    public final void ruleDefinitionList() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:444:2: ( ( ( rule__DefinitionList__Group__0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:445:1: ( ( rule__DefinitionList__Group__0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:445:1: ( ( rule__DefinitionList__Group__0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:446:1: ( rule__DefinitionList__Group__0 )
+            {
+             before(grammarAccess.getDefinitionListAccess().getGroup()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:447:1: ( rule__DefinitionList__Group__0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:447:2: rule__DefinitionList__Group__0
+            {
+            pushFollow(FOLLOW_rule__DefinitionList__Group__0_in_ruleDefinitionList891);
+            rule__DefinitionList__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDefinitionListAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleDefinitionList"
+
+
+    // $ANTLR start "entryRuleSingleDefinition"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:459:1: entryRuleSingleDefinition : ruleSingleDefinition EOF ;
+    public final void entryRuleSingleDefinition() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:460:1: ( ruleSingleDefinition EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:461:1: ruleSingleDefinition EOF
+            {
+             before(grammarAccess.getSingleDefinitionRule()); 
+            pushFollow(FOLLOW_ruleSingleDefinition_in_entryRuleSingleDefinition918);
+            ruleSingleDefinition();
+
+            state._fsp--;
+
+             after(grammarAccess.getSingleDefinitionRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleSingleDefinition925); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleSingleDefinition"
+
+
+    // $ANTLR start "ruleSingleDefinition"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:468:1: ruleSingleDefinition : ( ( ( rule__SingleDefinition__TermsAssignment ) ) ( ( rule__SingleDefinition__TermsAssignment )* ) ) ;
+    public final void ruleSingleDefinition() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:472:2: ( ( ( ( rule__SingleDefinition__TermsAssignment ) ) ( ( rule__SingleDefinition__TermsAssignment )* ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:473:1: ( ( ( rule__SingleDefinition__TermsAssignment ) ) ( ( rule__SingleDefinition__TermsAssignment )* ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:473:1: ( ( ( rule__SingleDefinition__TermsAssignment ) ) ( ( rule__SingleDefinition__TermsAssignment )* ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:474:1: ( ( rule__SingleDefinition__TermsAssignment ) ) ( ( rule__SingleDefinition__TermsAssignment )* )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:474:1: ( ( rule__SingleDefinition__TermsAssignment ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:475:1: ( rule__SingleDefinition__TermsAssignment )
+            {
+             before(grammarAccess.getSingleDefinitionAccess().getTermsAssignment()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:476:1: ( rule__SingleDefinition__TermsAssignment )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:476:2: rule__SingleDefinition__TermsAssignment
+            {
+            pushFollow(FOLLOW_rule__SingleDefinition__TermsAssignment_in_ruleSingleDefinition953);
+            rule__SingleDefinition__TermsAssignment();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSingleDefinitionAccess().getTermsAssignment()); 
+
+            }
+
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:479:1: ( ( rule__SingleDefinition__TermsAssignment )* )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:480:1: ( rule__SingleDefinition__TermsAssignment )*
+            {
+             before(grammarAccess.getSingleDefinitionAccess().getTermsAssignment()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:481:1: ( rule__SingleDefinition__TermsAssignment )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( (LA2_0==RULE_ID) ) {
+                    int LA2_2 = input.LA(2);
+
+                    if ( (LA2_2==EOF||(LA2_2>=RULE_ID && LA2_2<=RULE_INT)||LA2_2==RULE_COLON||(LA2_2>=13 && LA2_2<=16)||(LA2_2>=18 && LA2_2<=19)||LA2_2==23) ) {
+                        alt2=1;
+                    }
+                    else if ( (LA2_2==17) ) {
+                        int LA2_4 = input.LA(3);
+
+                        if ( (LA2_4==RULE_ID||LA2_4==RULE_STRING||LA2_4==RULE_COLON||(LA2_4>=17 && LA2_4<=19)) ) {
+                            alt2=1;
+                        }
+
+
+                    }
+
+
+                }
+                else if ( (LA2_0==RULE_STRING||LA2_0==RULE_COLON||(LA2_0>=17 && LA2_0<=19)) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:481:2: rule__SingleDefinition__TermsAssignment
+            	    {
+            	    pushFollow(FOLLOW_rule__SingleDefinition__TermsAssignment_in_ruleSingleDefinition965);
+            	    rule__SingleDefinition__TermsAssignment();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } while (true);
+
+             after(grammarAccess.getSingleDefinitionAccess().getTermsAssignment()); 
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleSingleDefinition"
+
+
+    // $ANTLR start "entryRuleTerm"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:494:1: entryRuleTerm : ruleTerm EOF ;
+    public final void entryRuleTerm() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:495:1: ( ruleTerm EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:496:1: ruleTerm EOF
+            {
+             before(grammarAccess.getTermRule()); 
+            pushFollow(FOLLOW_ruleTerm_in_entryRuleTerm995);
+            ruleTerm();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleTerm1002); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleTerm"
+
+
+    // $ANTLR start "ruleTerm"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:503:1: ruleTerm : ( ( rule__Term__Alternatives ) ) ;
+    public final void ruleTerm() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:507:2: ( ( ( rule__Term__Alternatives ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:508:1: ( ( rule__Term__Alternatives ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:508:1: ( ( rule__Term__Alternatives ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:509:1: ( rule__Term__Alternatives )
+            {
+             before(grammarAccess.getTermAccess().getAlternatives()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:510:1: ( rule__Term__Alternatives )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:510:2: rule__Term__Alternatives
+            {
+            pushFollow(FOLLOW_rule__Term__Alternatives_in_ruleTerm1028);
+            rule__Term__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTermAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTerm"
+
+
+    // $ANTLR start "entryRuleAtom"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:522:1: entryRuleAtom : ruleAtom EOF ;
+    public final void entryRuleAtom() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:523:1: ( ruleAtom EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:524:1: ruleAtom EOF
+            {
+             before(grammarAccess.getAtomRule()); 
+            pushFollow(FOLLOW_ruleAtom_in_entryRuleAtom1055);
+            ruleAtom();
+
+            state._fsp--;
+
+             after(grammarAccess.getAtomRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleAtom1062); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleAtom"
+
+
+    // $ANTLR start "ruleAtom"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:531:1: ruleAtom : ( ( rule__Atom__Alternatives ) ) ;
+    public final void ruleAtom() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:535:2: ( ( ( rule__Atom__Alternatives ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:536:1: ( ( rule__Atom__Alternatives ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:536:1: ( ( rule__Atom__Alternatives ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:537:1: ( rule__Atom__Alternatives )
+            {
+             before(grammarAccess.getAtomAccess().getAlternatives()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:538:1: ( rule__Atom__Alternatives )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:538:2: rule__Atom__Alternatives
+            {
+            pushFollow(FOLLOW_rule__Atom__Alternatives_in_ruleAtom1088);
+            rule__Atom__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getAtomAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleAtom"
+
+
+    // $ANTLR start "entryRuleRuleReference"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:550:1: entryRuleRuleReference : ruleRuleReference EOF ;
+    public final void entryRuleRuleReference() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:551:1: ( ruleRuleReference EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:552:1: ruleRuleReference EOF
+            {
+             before(grammarAccess.getRuleReferenceRule()); 
+            pushFollow(FOLLOW_ruleRuleReference_in_entryRuleRuleReference1115);
+            ruleRuleReference();
+
+            state._fsp--;
+
+             after(grammarAccess.getRuleReferenceRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleRuleReference1122); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRuleReference"
+
+
+    // $ANTLR start "ruleRuleReference"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:559:1: ruleRuleReference : ( ( rule__RuleReference__RulerefAssignment ) ) ;
+    public final void ruleRuleReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:563:2: ( ( ( rule__RuleReference__RulerefAssignment ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:564:1: ( ( rule__RuleReference__RulerefAssignment ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:564:1: ( ( rule__RuleReference__RulerefAssignment ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:565:1: ( rule__RuleReference__RulerefAssignment )
+            {
+             before(grammarAccess.getRuleReferenceAccess().getRulerefAssignment()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:566:1: ( rule__RuleReference__RulerefAssignment )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:566:2: rule__RuleReference__RulerefAssignment
+            {
+            pushFollow(FOLLOW_rule__RuleReference__RulerefAssignment_in_ruleRuleReference1148);
+            rule__RuleReference__RulerefAssignment();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRuleReferenceAccess().getRulerefAssignment()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRuleReference"
+
+
+    // $ANTLR start "entryRuleStringRule"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:578:1: entryRuleStringRule : ruleStringRule EOF ;
+    public final void entryRuleStringRule() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:579:1: ( ruleStringRule EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:580:1: ruleStringRule EOF
+            {
+             before(grammarAccess.getStringRuleRule()); 
+            pushFollow(FOLLOW_ruleStringRule_in_entryRuleStringRule1175);
+            ruleStringRule();
+
+            state._fsp--;
+
+             after(grammarAccess.getStringRuleRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStringRule1182); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleStringRule"
+
+
+    // $ANTLR start "ruleStringRule"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:587:1: ruleStringRule : ( ( rule__StringRule__Alternatives ) ) ;
+    public final void ruleStringRule() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:591:2: ( ( ( rule__StringRule__Alternatives ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:592:1: ( ( rule__StringRule__Alternatives ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:592:1: ( ( rule__StringRule__Alternatives ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:593:1: ( rule__StringRule__Alternatives )
+            {
+             before(grammarAccess.getStringRuleAccess().getAlternatives()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:594:1: ( rule__StringRule__Alternatives )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:594:2: rule__StringRule__Alternatives
+            {
+            pushFollow(FOLLOW_rule__StringRule__Alternatives_in_ruleStringRule1208);
+            rule__StringRule__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getStringRuleAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleStringRule"
+
+
+    // $ANTLR start "entryRuleGroupedSequence"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:606:1: entryRuleGroupedSequence : ruleGroupedSequence EOF ;
+    public final void entryRuleGroupedSequence() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:607:1: ( ruleGroupedSequence EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:608:1: ruleGroupedSequence EOF
+            {
+             before(grammarAccess.getGroupedSequenceRule()); 
+            pushFollow(FOLLOW_ruleGroupedSequence_in_entryRuleGroupedSequence1235);
+            ruleGroupedSequence();
+
+            state._fsp--;
+
+             after(grammarAccess.getGroupedSequenceRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleGroupedSequence1242); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleGroupedSequence"
+
+
+    // $ANTLR start "ruleGroupedSequence"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:615:1: ruleGroupedSequence : ( ( rule__GroupedSequence__Group__0 ) ) ;
+    public final void ruleGroupedSequence() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:619:2: ( ( ( rule__GroupedSequence__Group__0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:620:1: ( ( rule__GroupedSequence__Group__0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:620:1: ( ( rule__GroupedSequence__Group__0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:621:1: ( rule__GroupedSequence__Group__0 )
+            {
+             before(grammarAccess.getGroupedSequenceAccess().getGroup()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:622:1: ( rule__GroupedSequence__Group__0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:622:2: rule__GroupedSequence__Group__0
+            {
+            pushFollow(FOLLOW_rule__GroupedSequence__Group__0_in_ruleGroupedSequence1268);
+            rule__GroupedSequence__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGroupedSequenceAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleGroupedSequence"
+
+
+    // $ANTLR start "entryRuleOptionalSequence"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:634:1: entryRuleOptionalSequence : ruleOptionalSequence EOF ;
+    public final void entryRuleOptionalSequence() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:635:1: ( ruleOptionalSequence EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:636:1: ruleOptionalSequence EOF
+            {
+             before(grammarAccess.getOptionalSequenceRule()); 
+            pushFollow(FOLLOW_ruleOptionalSequence_in_entryRuleOptionalSequence1295);
+            ruleOptionalSequence();
+
+            state._fsp--;
+
+             after(grammarAccess.getOptionalSequenceRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOptionalSequence1302); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOptionalSequence"
+
+
+    // $ANTLR start "ruleOptionalSequence"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:643:1: ruleOptionalSequence : ( ( rule__OptionalSequence__Group__0 ) ) ;
+    public final void ruleOptionalSequence() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:647:2: ( ( ( rule__OptionalSequence__Group__0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:648:1: ( ( rule__OptionalSequence__Group__0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:648:1: ( ( rule__OptionalSequence__Group__0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:649:1: ( rule__OptionalSequence__Group__0 )
+            {
+             before(grammarAccess.getOptionalSequenceAccess().getGroup()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:650:1: ( rule__OptionalSequence__Group__0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:650:2: rule__OptionalSequence__Group__0
+            {
+            pushFollow(FOLLOW_rule__OptionalSequence__Group__0_in_ruleOptionalSequence1328);
+            rule__OptionalSequence__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getOptionalSequenceAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOptionalSequence"
+
+
+    // $ANTLR start "entryRuleRepeatedSequence"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:662:1: entryRuleRepeatedSequence : ruleRepeatedSequence EOF ;
+    public final void entryRuleRepeatedSequence() throws RecognitionException {
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:663:1: ( ruleRepeatedSequence EOF )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:664:1: ruleRepeatedSequence EOF
+            {
+             before(grammarAccess.getRepeatedSequenceRule()); 
+            pushFollow(FOLLOW_ruleRepeatedSequence_in_entryRuleRepeatedSequence1355);
+            ruleRepeatedSequence();
+
+            state._fsp--;
+
+             after(grammarAccess.getRepeatedSequenceRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleRepeatedSequence1362); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRepeatedSequence"
+
+
+    // $ANTLR start "ruleRepeatedSequence"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:671:1: ruleRepeatedSequence : ( ( rule__RepeatedSequence__Group__0 ) ) ;
+    public final void ruleRepeatedSequence() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:675:2: ( ( ( rule__RepeatedSequence__Group__0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:676:1: ( ( rule__RepeatedSequence__Group__0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:676:1: ( ( rule__RepeatedSequence__Group__0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:677:1: ( rule__RepeatedSequence__Group__0 )
+            {
+             before(grammarAccess.getRepeatedSequenceAccess().getGroup()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:678:1: ( rule__RepeatedSequence__Group__0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:678:2: rule__RepeatedSequence__Group__0
+            {
+            pushFollow(FOLLOW_rule__RepeatedSequence__Group__0_in_ruleRepeatedSequence1388);
+            rule__RepeatedSequence__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRepeatedSequenceAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRepeatedSequence"
+
+
+    // $ANTLR start "rule__EtsiBnf__Alternatives"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:690:1: rule__EtsiBnf__Alternatives : ( ( ( rule__EtsiBnf__Group_0__0 ) ) | ( ( rule__EtsiBnf__Group_1__0 ) ) | ( ( rule__EtsiBnf__Group_2__0 ) ) );
+    public final void rule__EtsiBnf__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:694:1: ( ( ( rule__EtsiBnf__Group_0__0 ) ) | ( ( rule__EtsiBnf__Group_1__0 ) ) | ( ( rule__EtsiBnf__Group_2__0 ) ) )
+            int alt3=3;
+            switch ( input.LA(1) ) {
+            case 22:
+                {
+                alt3=1;
+                }
+                break;
+            case 35:
+                {
+                alt3=2;
+                }
+                break;
+            case 36:
+                {
+                alt3=3;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 3, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt3) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:695:1: ( ( rule__EtsiBnf__Group_0__0 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:695:1: ( ( rule__EtsiBnf__Group_0__0 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:696:1: ( rule__EtsiBnf__Group_0__0 )
+                    {
+                     before(grammarAccess.getEtsiBnfAccess().getGroup_0()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:697:1: ( rule__EtsiBnf__Group_0__0 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:697:2: rule__EtsiBnf__Group_0__0
+                    {
+                    pushFollow(FOLLOW_rule__EtsiBnf__Group_0__0_in_rule__EtsiBnf__Alternatives1424);
+                    rule__EtsiBnf__Group_0__0();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getEtsiBnfAccess().getGroup_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:701:6: ( ( rule__EtsiBnf__Group_1__0 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:701:6: ( ( rule__EtsiBnf__Group_1__0 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:702:1: ( rule__EtsiBnf__Group_1__0 )
+                    {
+                     before(grammarAccess.getEtsiBnfAccess().getGroup_1()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:703:1: ( rule__EtsiBnf__Group_1__0 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:703:2: rule__EtsiBnf__Group_1__0
+                    {
+                    pushFollow(FOLLOW_rule__EtsiBnf__Group_1__0_in_rule__EtsiBnf__Alternatives1442);
+                    rule__EtsiBnf__Group_1__0();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getEtsiBnfAccess().getGroup_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:707:6: ( ( rule__EtsiBnf__Group_2__0 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:707:6: ( ( rule__EtsiBnf__Group_2__0 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:708:1: ( rule__EtsiBnf__Group_2__0 )
+                    {
+                     before(grammarAccess.getEtsiBnfAccess().getGroup_2()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:709:1: ( rule__EtsiBnf__Group_2__0 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:709:2: rule__EtsiBnf__Group_2__0
+                    {
+                    pushFollow(FOLLOW_rule__EtsiBnf__Group_2__0_in_rule__EtsiBnf__Alternatives1460);
+                    rule__EtsiBnf__Group_2__0();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getEtsiBnfAccess().getGroup_2()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Alternatives"
+
+
+    // $ANTLR start "rule__BnfEntry__Alternatives"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:718:1: rule__BnfEntry__Alternatives : ( ( ( rule__BnfEntry__SectionheaderAssignment_0 ) ) | ( ( rule__BnfEntry__RuleAssignment_1 ) ) );
+    public final void rule__BnfEntry__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:722:1: ( ( ( rule__BnfEntry__SectionheaderAssignment_0 ) ) | ( ( rule__BnfEntry__RuleAssignment_1 ) ) )
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0==RULE_SECTIONHEADER) ) {
+                alt4=1;
+            }
+            else if ( (LA4_0==RULE_ID||LA4_0==RULE_INT) ) {
+                alt4=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+            }
+            switch (alt4) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:723:1: ( ( rule__BnfEntry__SectionheaderAssignment_0 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:723:1: ( ( rule__BnfEntry__SectionheaderAssignment_0 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:724:1: ( rule__BnfEntry__SectionheaderAssignment_0 )
+                    {
+                     before(grammarAccess.getBnfEntryAccess().getSectionheaderAssignment_0()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:725:1: ( rule__BnfEntry__SectionheaderAssignment_0 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:725:2: rule__BnfEntry__SectionheaderAssignment_0
+                    {
+                    pushFollow(FOLLOW_rule__BnfEntry__SectionheaderAssignment_0_in_rule__BnfEntry__Alternatives1493);
+                    rule__BnfEntry__SectionheaderAssignment_0();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getBnfEntryAccess().getSectionheaderAssignment_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:729:6: ( ( rule__BnfEntry__RuleAssignment_1 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:729:6: ( ( rule__BnfEntry__RuleAssignment_1 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:730:1: ( rule__BnfEntry__RuleAssignment_1 )
+                    {
+                     before(grammarAccess.getBnfEntryAccess().getRuleAssignment_1()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:731:1: ( rule__BnfEntry__RuleAssignment_1 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:731:2: rule__BnfEntry__RuleAssignment_1
+                    {
+                    pushFollow(FOLLOW_rule__BnfEntry__RuleAssignment_1_in_rule__BnfEntry__Alternatives1511);
+                    rule__BnfEntry__RuleAssignment_1();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getBnfEntryAccess().getRuleAssignment_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BnfEntry__Alternatives"
+
+
+    // $ANTLR start "rule__DeltaEntry__Alternatives"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:740:1: rule__DeltaEntry__Alternatives : ( ( ( rule__DeltaEntry__RuleAssignment_0 ) ) | ( ( rule__DeltaEntry__SectionheaderAssignment_1 ) ) | ( ( rule__DeltaEntry__ExtRuleAssignment_2 ) ) );
+    public final void rule__DeltaEntry__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:744:1: ( ( ( rule__DeltaEntry__RuleAssignment_0 ) ) | ( ( rule__DeltaEntry__SectionheaderAssignment_1 ) ) | ( ( rule__DeltaEntry__ExtRuleAssignment_2 ) ) )
+            int alt5=3;
+            switch ( input.LA(1) ) {
+            case RULE_INT:
+                {
+                int LA5_1 = input.LA(2);
+
+                if ( (LA5_1==RULE_ID) ) {
+                    int LA5_4 = input.LA(3);
+
+                    if ( (LA5_4==28) ) {
+                        int LA5_5 = input.LA(4);
+
+                        if ( (LA5_5==RULE_ID) ) {
+                            int LA5_2 = input.LA(5);
+
+                            if ( (LA5_2==27) ) {
+                                alt5=1;
+                            }
+                            else if ( (LA5_2==17) ) {
+                                alt5=3;
+                            }
+                            else {
+                                NoViableAltException nvae =
+                                    new NoViableAltException("", 5, 2, input);
+
+                                throw nvae;
+                            }
+                        }
+                        else {
+                            NoViableAltException nvae =
+                                new NoViableAltException("", 5, 5, input);
+
+                            throw nvae;
+                        }
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 5, 4, input);
+
+                        throw nvae;
+                    }
+                }
+                else if ( (LA5_1==28) ) {
+                    int LA5_5 = input.LA(3);
+
+                    if ( (LA5_5==RULE_ID) ) {
+                        int LA5_2 = input.LA(4);
+
+                        if ( (LA5_2==27) ) {
+                            alt5=1;
+                        }
+                        else if ( (LA5_2==17) ) {
+                            alt5=3;
+                        }
+                        else {
+                            NoViableAltException nvae =
+                                new NoViableAltException("", 5, 2, input);
+
+                            throw nvae;
+                        }
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 5, 5, input);
+
+                        throw nvae;
+                    }
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 5, 1, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case RULE_ID:
+                {
+                int LA5_2 = input.LA(2);
+
+                if ( (LA5_2==27) ) {
+                    alt5=1;
+                }
+                else if ( (LA5_2==17) ) {
+                    alt5=3;
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 5, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case RULE_SECTIONHEADER:
+                {
+                alt5=2;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 5, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt5) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:745:1: ( ( rule__DeltaEntry__RuleAssignment_0 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:745:1: ( ( rule__DeltaEntry__RuleAssignment_0 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:746:1: ( rule__DeltaEntry__RuleAssignment_0 )
+                    {
+                     before(grammarAccess.getDeltaEntryAccess().getRuleAssignment_0()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:747:1: ( rule__DeltaEntry__RuleAssignment_0 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:747:2: rule__DeltaEntry__RuleAssignment_0
+                    {
+                    pushFollow(FOLLOW_rule__DeltaEntry__RuleAssignment_0_in_rule__DeltaEntry__Alternatives1544);
+                    rule__DeltaEntry__RuleAssignment_0();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getDeltaEntryAccess().getRuleAssignment_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:751:6: ( ( rule__DeltaEntry__SectionheaderAssignment_1 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:751:6: ( ( rule__DeltaEntry__SectionheaderAssignment_1 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:752:1: ( rule__DeltaEntry__SectionheaderAssignment_1 )
+                    {
+                     before(grammarAccess.getDeltaEntryAccess().getSectionheaderAssignment_1()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:753:1: ( rule__DeltaEntry__SectionheaderAssignment_1 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:753:2: rule__DeltaEntry__SectionheaderAssignment_1
+                    {
+                    pushFollow(FOLLOW_rule__DeltaEntry__SectionheaderAssignment_1_in_rule__DeltaEntry__Alternatives1562);
+                    rule__DeltaEntry__SectionheaderAssignment_1();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getDeltaEntryAccess().getSectionheaderAssignment_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:757:6: ( ( rule__DeltaEntry__ExtRuleAssignment_2 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:757:6: ( ( rule__DeltaEntry__ExtRuleAssignment_2 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:758:1: ( rule__DeltaEntry__ExtRuleAssignment_2 )
+                    {
+                     before(grammarAccess.getDeltaEntryAccess().getExtRuleAssignment_2()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:759:1: ( rule__DeltaEntry__ExtRuleAssignment_2 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:759:2: rule__DeltaEntry__ExtRuleAssignment_2
+                    {
+                    pushFollow(FOLLOW_rule__DeltaEntry__ExtRuleAssignment_2_in_rule__DeltaEntry__Alternatives1580);
+                    rule__DeltaEntry__ExtRuleAssignment_2();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getDeltaEntryAccess().getExtRuleAssignment_2()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DeltaEntry__Alternatives"
+
+
+    // $ANTLR start "rule__MergeEntry__Alternatives"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:768:1: rule__MergeEntry__Alternatives : ( ( ( rule__MergeEntry__SectionheaderAssignment_0 ) ) | ( ( rule__MergeEntry__MergeRuleAssignment_1 ) ) );
+    public final void rule__MergeEntry__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:772:1: ( ( ( rule__MergeEntry__SectionheaderAssignment_0 ) ) | ( ( rule__MergeEntry__MergeRuleAssignment_1 ) ) )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==RULE_SECTIONHEADER) ) {
+                alt6=1;
+            }
+            else if ( (LA6_0==30||(LA6_0>=32 && LA6_0<=33)) ) {
+                alt6=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+            switch (alt6) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:773:1: ( ( rule__MergeEntry__SectionheaderAssignment_0 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:773:1: ( ( rule__MergeEntry__SectionheaderAssignment_0 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:774:1: ( rule__MergeEntry__SectionheaderAssignment_0 )
+                    {
+                     before(grammarAccess.getMergeEntryAccess().getSectionheaderAssignment_0()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:775:1: ( rule__MergeEntry__SectionheaderAssignment_0 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:775:2: rule__MergeEntry__SectionheaderAssignment_0
+                    {
+                    pushFollow(FOLLOW_rule__MergeEntry__SectionheaderAssignment_0_in_rule__MergeEntry__Alternatives1613);
+                    rule__MergeEntry__SectionheaderAssignment_0();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getMergeEntryAccess().getSectionheaderAssignment_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:779:6: ( ( rule__MergeEntry__MergeRuleAssignment_1 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:779:6: ( ( rule__MergeEntry__MergeRuleAssignment_1 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:780:1: ( rule__MergeEntry__MergeRuleAssignment_1 )
+                    {
+                     before(grammarAccess.getMergeEntryAccess().getMergeRuleAssignment_1()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:781:1: ( rule__MergeEntry__MergeRuleAssignment_1 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:781:2: rule__MergeEntry__MergeRuleAssignment_1
+                    {
+                    pushFollow(FOLLOW_rule__MergeEntry__MergeRuleAssignment_1_in_rule__MergeEntry__Alternatives1631);
+                    rule__MergeEntry__MergeRuleAssignment_1();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getMergeEntryAccess().getMergeRuleAssignment_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MergeEntry__Alternatives"
+
+
+    // $ANTLR start "rule__Import__Alternatives_2_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:790:1: rule__Import__Alternatives_2_1 : ( ( ( rule__Import__GrammarTypeAssignment_2_1_0 ) ) | ( ( rule__Import__GrammarTypeAssignment_2_1_1 ) ) | ( ( rule__Import__GrammarTypeAssignment_2_1_2 ) ) );
+    public final void rule__Import__Alternatives_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:794:1: ( ( ( rule__Import__GrammarTypeAssignment_2_1_0 ) ) | ( ( rule__Import__GrammarTypeAssignment_2_1_1 ) ) | ( ( rule__Import__GrammarTypeAssignment_2_1_2 ) ) )
+            int alt7=3;
+            switch ( input.LA(1) ) {
+            case 37:
+                {
+                alt7=1;
+                }
+                break;
+            case 38:
+                {
+                alt7=2;
+                }
+                break;
+            case 39:
+                {
+                alt7=3;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 7, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt7) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:795:1: ( ( rule__Import__GrammarTypeAssignment_2_1_0 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:795:1: ( ( rule__Import__GrammarTypeAssignment_2_1_0 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:796:1: ( rule__Import__GrammarTypeAssignment_2_1_0 )
+                    {
+                     before(grammarAccess.getImportAccess().getGrammarTypeAssignment_2_1_0()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:797:1: ( rule__Import__GrammarTypeAssignment_2_1_0 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:797:2: rule__Import__GrammarTypeAssignment_2_1_0
+                    {
+                    pushFollow(FOLLOW_rule__Import__GrammarTypeAssignment_2_1_0_in_rule__Import__Alternatives_2_11664);
+                    rule__Import__GrammarTypeAssignment_2_1_0();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getImportAccess().getGrammarTypeAssignment_2_1_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:801:6: ( ( rule__Import__GrammarTypeAssignment_2_1_1 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:801:6: ( ( rule__Import__GrammarTypeAssignment_2_1_1 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:802:1: ( rule__Import__GrammarTypeAssignment_2_1_1 )
+                    {
+                     before(grammarAccess.getImportAccess().getGrammarTypeAssignment_2_1_1()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:803:1: ( rule__Import__GrammarTypeAssignment_2_1_1 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:803:2: rule__Import__GrammarTypeAssignment_2_1_1
+                    {
+                    pushFollow(FOLLOW_rule__Import__GrammarTypeAssignment_2_1_1_in_rule__Import__Alternatives_2_11682);
+                    rule__Import__GrammarTypeAssignment_2_1_1();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getImportAccess().getGrammarTypeAssignment_2_1_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:807:6: ( ( rule__Import__GrammarTypeAssignment_2_1_2 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:807:6: ( ( rule__Import__GrammarTypeAssignment_2_1_2 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:808:1: ( rule__Import__GrammarTypeAssignment_2_1_2 )
+                    {
+                     before(grammarAccess.getImportAccess().getGrammarTypeAssignment_2_1_2()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:809:1: ( rule__Import__GrammarTypeAssignment_2_1_2 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:809:2: rule__Import__GrammarTypeAssignment_2_1_2
+                    {
+                    pushFollow(FOLLOW_rule__Import__GrammarTypeAssignment_2_1_2_in_rule__Import__Alternatives_2_11700);
+                    rule__Import__GrammarTypeAssignment_2_1_2();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getImportAccess().getGrammarTypeAssignment_2_1_2()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Alternatives_2_1"
+
+
+    // $ANTLR start "rule__ExtRule__Alternatives_4"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:818:1: rule__ExtRule__Alternatives_4 : ( ( ( rule__ExtRule__ElementsAssignment_4_0 ) ) | ( ')' ) | ( ']' ) | ( '}' ) | ( '|' ) | ( '(' ) | ( '[' ) | ( '{' ) | ( '*' ) | ( '+' ) );
+    public final void rule__ExtRule__Alternatives_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:822:1: ( ( ( rule__ExtRule__ElementsAssignment_4_0 ) ) | ( ')' ) | ( ']' ) | ( '}' ) | ( '|' ) | ( '(' ) | ( '[' ) | ( '{' ) | ( '*' ) | ( '+' ) )
+            int alt8=10;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+            case RULE_STRING:
+            case RULE_COLON:
+                {
+                alt8=1;
+                }
+                break;
+            case 13:
+                {
+                alt8=2;
+                }
+                break;
+            case 14:
+                {
+                alt8=3;
+                }
+                break;
+            case 15:
+                {
+                alt8=4;
+                }
+                break;
+            case 16:
+                {
+                alt8=5;
+                }
+                break;
+            case 17:
+                {
+                alt8=6;
+                }
+                break;
+            case 18:
+                {
+                alt8=7;
+                }
+                break;
+            case 19:
+                {
+                alt8=8;
+                }
+                break;
+            case 20:
+                {
+                alt8=9;
+                }
+                break;
+            case 21:
+                {
+                alt8=10;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 8, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt8) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:823:1: ( ( rule__ExtRule__ElementsAssignment_4_0 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:823:1: ( ( rule__ExtRule__ElementsAssignment_4_0 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:824:1: ( rule__ExtRule__ElementsAssignment_4_0 )
+                    {
+                     before(grammarAccess.getExtRuleAccess().getElementsAssignment_4_0()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:825:1: ( rule__ExtRule__ElementsAssignment_4_0 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:825:2: rule__ExtRule__ElementsAssignment_4_0
+                    {
+                    pushFollow(FOLLOW_rule__ExtRule__ElementsAssignment_4_0_in_rule__ExtRule__Alternatives_41733);
+                    rule__ExtRule__ElementsAssignment_4_0();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getExtRuleAccess().getElementsAssignment_4_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:829:6: ( ')' )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:829:6: ( ')' )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:830:1: ')'
+                    {
+                     before(grammarAccess.getExtRuleAccess().getRightParenthesisKeyword_4_1()); 
+                    match(input,13,FOLLOW_13_in_rule__ExtRule__Alternatives_41752); 
+                     after(grammarAccess.getExtRuleAccess().getRightParenthesisKeyword_4_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:837:6: ( ']' )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:837:6: ( ']' )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:838:1: ']'
+                    {
+                     before(grammarAccess.getExtRuleAccess().getRightSquareBracketKeyword_4_2()); 
+                    match(input,14,FOLLOW_14_in_rule__ExtRule__Alternatives_41772); 
+                     after(grammarAccess.getExtRuleAccess().getRightSquareBracketKeyword_4_2()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:845:6: ( '}' )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:845:6: ( '}' )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:846:1: '}'
+                    {
+                     before(grammarAccess.getExtRuleAccess().getRightCurlyBracketKeyword_4_3()); 
+                    match(input,15,FOLLOW_15_in_rule__ExtRule__Alternatives_41792); 
+                     after(grammarAccess.getExtRuleAccess().getRightCurlyBracketKeyword_4_3()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:853:6: ( '|' )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:853:6: ( '|' )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:854:1: '|'
+                    {
+                     before(grammarAccess.getExtRuleAccess().getVerticalLineKeyword_4_4()); 
+                    match(input,16,FOLLOW_16_in_rule__ExtRule__Alternatives_41812); 
+                     after(grammarAccess.getExtRuleAccess().getVerticalLineKeyword_4_4()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:861:6: ( '(' )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:861:6: ( '(' )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:862:1: '('
+                    {
+                     before(grammarAccess.getExtRuleAccess().getLeftParenthesisKeyword_4_5()); 
+                    match(input,17,FOLLOW_17_in_rule__ExtRule__Alternatives_41832); 
+                     after(grammarAccess.getExtRuleAccess().getLeftParenthesisKeyword_4_5()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:869:6: ( '[' )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:869:6: ( '[' )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:870:1: '['
+                    {
+                     before(grammarAccess.getExtRuleAccess().getLeftSquareBracketKeyword_4_6()); 
+                    match(input,18,FOLLOW_18_in_rule__ExtRule__Alternatives_41852); 
+                     after(grammarAccess.getExtRuleAccess().getLeftSquareBracketKeyword_4_6()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:877:6: ( '{' )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:877:6: ( '{' )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:878:1: '{'
+                    {
+                     before(grammarAccess.getExtRuleAccess().getLeftCurlyBracketKeyword_4_7()); 
+                    match(input,19,FOLLOW_19_in_rule__ExtRule__Alternatives_41872); 
+                     after(grammarAccess.getExtRuleAccess().getLeftCurlyBracketKeyword_4_7()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:885:6: ( '*' )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:885:6: ( '*' )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:886:1: '*'
+                    {
+                     before(grammarAccess.getExtRuleAccess().getAsteriskKeyword_4_8()); 
+                    match(input,20,FOLLOW_20_in_rule__ExtRule__Alternatives_41892); 
+                     after(grammarAccess.getExtRuleAccess().getAsteriskKeyword_4_8()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 10 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:893:6: ( '+' )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:893:6: ( '+' )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:894:1: '+'
+                    {
+                     before(grammarAccess.getExtRuleAccess().getPlusSignKeyword_4_9()); 
+                    match(input,21,FOLLOW_21_in_rule__ExtRule__Alternatives_41912); 
+                     after(grammarAccess.getExtRuleAccess().getPlusSignKeyword_4_9()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Alternatives_4"
+
+
+    // $ANTLR start "rule__MergeRule__Alternatives"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:906:1: rule__MergeRule__Alternatives : ( ( ruleGlobalCombinator ) | ( ruleRuleCombinator ) | ( ruleHookCombinator ) );
+    public final void rule__MergeRule__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:910:1: ( ( ruleGlobalCombinator ) | ( ruleRuleCombinator ) | ( ruleHookCombinator ) )
+            int alt9=3;
+            switch ( input.LA(1) ) {
+            case 30:
+                {
+                alt9=1;
+                }
+                break;
+            case 32:
+                {
+                alt9=2;
+                }
+                break;
+            case 33:
+                {
+                alt9=3;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 9, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt9) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:911:1: ( ruleGlobalCombinator )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:911:1: ( ruleGlobalCombinator )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:912:1: ruleGlobalCombinator
+                    {
+                     before(grammarAccess.getMergeRuleAccess().getGlobalCombinatorParserRuleCall_0()); 
+                    pushFollow(FOLLOW_ruleGlobalCombinator_in_rule__MergeRule__Alternatives1946);
+                    ruleGlobalCombinator();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getMergeRuleAccess().getGlobalCombinatorParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:917:6: ( ruleRuleCombinator )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:917:6: ( ruleRuleCombinator )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:918:1: ruleRuleCombinator
+                    {
+                     before(grammarAccess.getMergeRuleAccess().getRuleCombinatorParserRuleCall_1()); 
+                    pushFollow(FOLLOW_ruleRuleCombinator_in_rule__MergeRule__Alternatives1963);
+                    ruleRuleCombinator();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getMergeRuleAccess().getRuleCombinatorParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:923:6: ( ruleHookCombinator )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:923:6: ( ruleHookCombinator )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:924:1: ruleHookCombinator
+                    {
+                     before(grammarAccess.getMergeRuleAccess().getHookCombinatorParserRuleCall_2()); 
+                    pushFollow(FOLLOW_ruleHookCombinator_in_rule__MergeRule__Alternatives1980);
+                    ruleHookCombinator();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getMergeRuleAccess().getHookCombinatorParserRuleCall_2()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MergeRule__Alternatives"
+
+
+    // $ANTLR start "rule__Term__Alternatives"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:934:1: rule__Term__Alternatives : ( ( ( rule__Term__TermAtomAssignment_0 ) ) | ( ( rule__Term__TermGroupedSequenceAssignment_1 ) ) | ( ( rule__Term__TermOptionalSequenceAssignment_2 ) ) | ( ( rule__Term__TermRepeatedSequenceAssignment_3 ) ) );
+    public final void rule__Term__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:938:1: ( ( ( rule__Term__TermAtomAssignment_0 ) ) | ( ( rule__Term__TermGroupedSequenceAssignment_1 ) ) | ( ( rule__Term__TermOptionalSequenceAssignment_2 ) ) | ( ( rule__Term__TermRepeatedSequenceAssignment_3 ) ) )
+            int alt10=4;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+            case RULE_STRING:
+            case RULE_COLON:
+                {
+                alt10=1;
+                }
+                break;
+            case 17:
+                {
+                alt10=2;
+                }
+                break;
+            case 18:
+                {
+                alt10=3;
+                }
+                break;
+            case 19:
+                {
+                alt10=4;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 10, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt10) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:939:1: ( ( rule__Term__TermAtomAssignment_0 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:939:1: ( ( rule__Term__TermAtomAssignment_0 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:940:1: ( rule__Term__TermAtomAssignment_0 )
+                    {
+                     before(grammarAccess.getTermAccess().getTermAtomAssignment_0()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:941:1: ( rule__Term__TermAtomAssignment_0 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:941:2: rule__Term__TermAtomAssignment_0
+                    {
+                    pushFollow(FOLLOW_rule__Term__TermAtomAssignment_0_in_rule__Term__Alternatives2012);
+                    rule__Term__TermAtomAssignment_0();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getTermAccess().getTermAtomAssignment_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:945:6: ( ( rule__Term__TermGroupedSequenceAssignment_1 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:945:6: ( ( rule__Term__TermGroupedSequenceAssignment_1 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:946:1: ( rule__Term__TermGroupedSequenceAssignment_1 )
+                    {
+                     before(grammarAccess.getTermAccess().getTermGroupedSequenceAssignment_1()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:947:1: ( rule__Term__TermGroupedSequenceAssignment_1 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:947:2: rule__Term__TermGroupedSequenceAssignment_1
+                    {
+                    pushFollow(FOLLOW_rule__Term__TermGroupedSequenceAssignment_1_in_rule__Term__Alternatives2030);
+                    rule__Term__TermGroupedSequenceAssignment_1();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getTermAccess().getTermGroupedSequenceAssignment_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:951:6: ( ( rule__Term__TermOptionalSequenceAssignment_2 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:951:6: ( ( rule__Term__TermOptionalSequenceAssignment_2 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:952:1: ( rule__Term__TermOptionalSequenceAssignment_2 )
+                    {
+                     before(grammarAccess.getTermAccess().getTermOptionalSequenceAssignment_2()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:953:1: ( rule__Term__TermOptionalSequenceAssignment_2 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:953:2: rule__Term__TermOptionalSequenceAssignment_2
+                    {
+                    pushFollow(FOLLOW_rule__Term__TermOptionalSequenceAssignment_2_in_rule__Term__Alternatives2048);
+                    rule__Term__TermOptionalSequenceAssignment_2();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getTermAccess().getTermOptionalSequenceAssignment_2()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:957:6: ( ( rule__Term__TermRepeatedSequenceAssignment_3 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:957:6: ( ( rule__Term__TermRepeatedSequenceAssignment_3 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:958:1: ( rule__Term__TermRepeatedSequenceAssignment_3 )
+                    {
+                     before(grammarAccess.getTermAccess().getTermRepeatedSequenceAssignment_3()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:959:1: ( rule__Term__TermRepeatedSequenceAssignment_3 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:959:2: rule__Term__TermRepeatedSequenceAssignment_3
+                    {
+                    pushFollow(FOLLOW_rule__Term__TermRepeatedSequenceAssignment_3_in_rule__Term__Alternatives2066);
+                    rule__Term__TermRepeatedSequenceAssignment_3();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getTermAccess().getTermRepeatedSequenceAssignment_3()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__Alternatives"
+
+
+    // $ANTLR start "rule__Atom__Alternatives"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:968:1: rule__Atom__Alternatives : ( ( ( rule__Atom__AtomStringRuleAssignment_0 ) ) | ( ( rule__Atom__AtomRuleReferenceAssignment_1 ) ) );
+    public final void rule__Atom__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:972:1: ( ( ( rule__Atom__AtomStringRuleAssignment_0 ) ) | ( ( rule__Atom__AtomRuleReferenceAssignment_1 ) ) )
+            int alt11=2;
+            int LA11_0 = input.LA(1);
+
+            if ( (LA11_0==RULE_STRING||LA11_0==RULE_COLON) ) {
+                alt11=1;
+            }
+            else if ( (LA11_0==RULE_ID) ) {
+                alt11=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 11, 0, input);
+
+                throw nvae;
+            }
+            switch (alt11) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:973:1: ( ( rule__Atom__AtomStringRuleAssignment_0 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:973:1: ( ( rule__Atom__AtomStringRuleAssignment_0 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:974:1: ( rule__Atom__AtomStringRuleAssignment_0 )
+                    {
+                     before(grammarAccess.getAtomAccess().getAtomStringRuleAssignment_0()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:975:1: ( rule__Atom__AtomStringRuleAssignment_0 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:975:2: rule__Atom__AtomStringRuleAssignment_0
+                    {
+                    pushFollow(FOLLOW_rule__Atom__AtomStringRuleAssignment_0_in_rule__Atom__Alternatives2099);
+                    rule__Atom__AtomStringRuleAssignment_0();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getAtomAccess().getAtomStringRuleAssignment_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:979:6: ( ( rule__Atom__AtomRuleReferenceAssignment_1 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:979:6: ( ( rule__Atom__AtomRuleReferenceAssignment_1 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:980:1: ( rule__Atom__AtomRuleReferenceAssignment_1 )
+                    {
+                     before(grammarAccess.getAtomAccess().getAtomRuleReferenceAssignment_1()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:981:1: ( rule__Atom__AtomRuleReferenceAssignment_1 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:981:2: rule__Atom__AtomRuleReferenceAssignment_1
+                    {
+                    pushFollow(FOLLOW_rule__Atom__AtomRuleReferenceAssignment_1_in_rule__Atom__Alternatives2117);
+                    rule__Atom__AtomRuleReferenceAssignment_1();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getAtomAccess().getAtomRuleReferenceAssignment_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Atom__Alternatives"
+
+
+    // $ANTLR start "rule__StringRule__Alternatives"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:990:1: rule__StringRule__Alternatives : ( ( ( rule__StringRule__LiteralAssignment_0 ) ) | ( ( rule__StringRule__ColonAssignment_1 ) ) );
+    public final void rule__StringRule__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:994:1: ( ( ( rule__StringRule__LiteralAssignment_0 ) ) | ( ( rule__StringRule__ColonAssignment_1 ) ) )
+            int alt12=2;
+            int LA12_0 = input.LA(1);
+
+            if ( (LA12_0==RULE_STRING) ) {
+                alt12=1;
+            }
+            else if ( (LA12_0==RULE_COLON) ) {
+                alt12=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 12, 0, input);
+
+                throw nvae;
+            }
+            switch (alt12) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:995:1: ( ( rule__StringRule__LiteralAssignment_0 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:995:1: ( ( rule__StringRule__LiteralAssignment_0 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:996:1: ( rule__StringRule__LiteralAssignment_0 )
+                    {
+                     before(grammarAccess.getStringRuleAccess().getLiteralAssignment_0()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:997:1: ( rule__StringRule__LiteralAssignment_0 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:997:2: rule__StringRule__LiteralAssignment_0
+                    {
+                    pushFollow(FOLLOW_rule__StringRule__LiteralAssignment_0_in_rule__StringRule__Alternatives2150);
+                    rule__StringRule__LiteralAssignment_0();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getStringRuleAccess().getLiteralAssignment_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1001:6: ( ( rule__StringRule__ColonAssignment_1 ) )
+                    {
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1001:6: ( ( rule__StringRule__ColonAssignment_1 ) )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1002:1: ( rule__StringRule__ColonAssignment_1 )
+                    {
+                     before(grammarAccess.getStringRuleAccess().getColonAssignment_1()); 
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1003:1: ( rule__StringRule__ColonAssignment_1 )
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1003:2: rule__StringRule__ColonAssignment_1
+                    {
+                    pushFollow(FOLLOW_rule__StringRule__ColonAssignment_1_in_rule__StringRule__Alternatives2168);
+                    rule__StringRule__ColonAssignment_1();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getStringRuleAccess().getColonAssignment_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StringRule__Alternatives"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_0__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1014:1: rule__EtsiBnf__Group_0__0 : rule__EtsiBnf__Group_0__0__Impl rule__EtsiBnf__Group_0__1 ;
+    public final void rule__EtsiBnf__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1018:1: ( rule__EtsiBnf__Group_0__0__Impl rule__EtsiBnf__Group_0__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1019:2: rule__EtsiBnf__Group_0__0__Impl rule__EtsiBnf__Group_0__1
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_0__0__Impl_in_rule__EtsiBnf__Group_0__02199);
+            rule__EtsiBnf__Group_0__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_0__1_in_rule__EtsiBnf__Group_0__02202);
+            rule__EtsiBnf__Group_0__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_0__0"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_0__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1026:1: rule__EtsiBnf__Group_0__0__Impl : ( 'grammar' ) ;
+    public final void rule__EtsiBnf__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1030:1: ( ( 'grammar' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1031:1: ( 'grammar' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1031:1: ( 'grammar' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1032:1: 'grammar'
+            {
+             before(grammarAccess.getEtsiBnfAccess().getGrammarKeyword_0_0()); 
+            match(input,22,FOLLOW_22_in_rule__EtsiBnf__Group_0__0__Impl2230); 
+             after(grammarAccess.getEtsiBnfAccess().getGrammarKeyword_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_0__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1045:1: rule__EtsiBnf__Group_0__1 : rule__EtsiBnf__Group_0__1__Impl rule__EtsiBnf__Group_0__2 ;
+    public final void rule__EtsiBnf__Group_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1049:1: ( rule__EtsiBnf__Group_0__1__Impl rule__EtsiBnf__Group_0__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1050:2: rule__EtsiBnf__Group_0__1__Impl rule__EtsiBnf__Group_0__2
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_0__1__Impl_in_rule__EtsiBnf__Group_0__12261);
+            rule__EtsiBnf__Group_0__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_0__2_in_rule__EtsiBnf__Group_0__12264);
+            rule__EtsiBnf__Group_0__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_0__1"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_0__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1057:1: rule__EtsiBnf__Group_0__1__Impl : ( ( rule__EtsiBnf__NameAssignment_0_1 ) ) ;
+    public final void rule__EtsiBnf__Group_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1061:1: ( ( ( rule__EtsiBnf__NameAssignment_0_1 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1062:1: ( ( rule__EtsiBnf__NameAssignment_0_1 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1062:1: ( ( rule__EtsiBnf__NameAssignment_0_1 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1063:1: ( rule__EtsiBnf__NameAssignment_0_1 )
+            {
+             before(grammarAccess.getEtsiBnfAccess().getNameAssignment_0_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1064:1: ( rule__EtsiBnf__NameAssignment_0_1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1064:2: rule__EtsiBnf__NameAssignment_0_1
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__NameAssignment_0_1_in_rule__EtsiBnf__Group_0__1__Impl2291);
+            rule__EtsiBnf__NameAssignment_0_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEtsiBnfAccess().getNameAssignment_0_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_0__1__Impl"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_0__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1074:1: rule__EtsiBnf__Group_0__2 : rule__EtsiBnf__Group_0__2__Impl ;
+    public final void rule__EtsiBnf__Group_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1078:1: ( rule__EtsiBnf__Group_0__2__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1079:2: rule__EtsiBnf__Group_0__2__Impl
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_0__2__Impl_in_rule__EtsiBnf__Group_0__22321);
+            rule__EtsiBnf__Group_0__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_0__2"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_0__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1085:1: rule__EtsiBnf__Group_0__2__Impl : ( ( rule__EtsiBnf__Group_0_2__0 ) ) ;
+    public final void rule__EtsiBnf__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1089:1: ( ( ( rule__EtsiBnf__Group_0_2__0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1090:1: ( ( rule__EtsiBnf__Group_0_2__0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1090:1: ( ( rule__EtsiBnf__Group_0_2__0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1091:1: ( rule__EtsiBnf__Group_0_2__0 )
+            {
+             before(grammarAccess.getEtsiBnfAccess().getGroup_0_2()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1092:1: ( rule__EtsiBnf__Group_0_2__0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1092:2: rule__EtsiBnf__Group_0_2__0
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_0_2__0_in_rule__EtsiBnf__Group_0__2__Impl2348);
+            rule__EtsiBnf__Group_0_2__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEtsiBnfAccess().getGroup_0_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_0__2__Impl"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_0_2__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1108:1: rule__EtsiBnf__Group_0_2__0 : rule__EtsiBnf__Group_0_2__0__Impl rule__EtsiBnf__Group_0_2__1 ;
+    public final void rule__EtsiBnf__Group_0_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1112:1: ( rule__EtsiBnf__Group_0_2__0__Impl rule__EtsiBnf__Group_0_2__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1113:2: rule__EtsiBnf__Group_0_2__0__Impl rule__EtsiBnf__Group_0_2__1
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_0_2__0__Impl_in_rule__EtsiBnf__Group_0_2__02384);
+            rule__EtsiBnf__Group_0_2__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_0_2__1_in_rule__EtsiBnf__Group_0_2__02387);
+            rule__EtsiBnf__Group_0_2__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_0_2__0"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_0_2__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1120:1: rule__EtsiBnf__Group_0_2__0__Impl : ( ( rule__EtsiBnf__TypeAssignment_0_2_0 )? ) ;
+    public final void rule__EtsiBnf__Group_0_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1124:1: ( ( ( rule__EtsiBnf__TypeAssignment_0_2_0 )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1125:1: ( ( rule__EtsiBnf__TypeAssignment_0_2_0 )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1125:1: ( ( rule__EtsiBnf__TypeAssignment_0_2_0 )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1126:1: ( rule__EtsiBnf__TypeAssignment_0_2_0 )?
+            {
+             before(grammarAccess.getEtsiBnfAccess().getTypeAssignment_0_2_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1127:1: ( rule__EtsiBnf__TypeAssignment_0_2_0 )?
+            int alt13=2;
+            int LA13_0 = input.LA(1);
+
+            if ( (LA13_0==34) ) {
+                alt13=1;
+            }
+            switch (alt13) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1127:2: rule__EtsiBnf__TypeAssignment_0_2_0
+                    {
+                    pushFollow(FOLLOW_rule__EtsiBnf__TypeAssignment_0_2_0_in_rule__EtsiBnf__Group_0_2__0__Impl2414);
+                    rule__EtsiBnf__TypeAssignment_0_2_0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEtsiBnfAccess().getTypeAssignment_0_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_0_2__0__Impl"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_0_2__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1137:1: rule__EtsiBnf__Group_0_2__1 : rule__EtsiBnf__Group_0_2__1__Impl rule__EtsiBnf__Group_0_2__2 ;
+    public final void rule__EtsiBnf__Group_0_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1141:1: ( rule__EtsiBnf__Group_0_2__1__Impl rule__EtsiBnf__Group_0_2__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1142:2: rule__EtsiBnf__Group_0_2__1__Impl rule__EtsiBnf__Group_0_2__2
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_0_2__1__Impl_in_rule__EtsiBnf__Group_0_2__12445);
+            rule__EtsiBnf__Group_0_2__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_0_2__2_in_rule__EtsiBnf__Group_0_2__12448);
+            rule__EtsiBnf__Group_0_2__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_0_2__1"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_0_2__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1149:1: rule__EtsiBnf__Group_0_2__1__Impl : ( ';' ) ;
+    public final void rule__EtsiBnf__Group_0_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1153:1: ( ( ';' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1154:1: ( ';' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1154:1: ( ';' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1155:1: ';'
+            {
+             before(grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_0_2_1()); 
+            match(input,23,FOLLOW_23_in_rule__EtsiBnf__Group_0_2__1__Impl2476); 
+             after(grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_0_2_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_0_2__1__Impl"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_0_2__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1168:1: rule__EtsiBnf__Group_0_2__2 : rule__EtsiBnf__Group_0_2__2__Impl rule__EtsiBnf__Group_0_2__3 ;
+    public final void rule__EtsiBnf__Group_0_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1172:1: ( rule__EtsiBnf__Group_0_2__2__Impl rule__EtsiBnf__Group_0_2__3 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1173:2: rule__EtsiBnf__Group_0_2__2__Impl rule__EtsiBnf__Group_0_2__3
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_0_2__2__Impl_in_rule__EtsiBnf__Group_0_2__22507);
+            rule__EtsiBnf__Group_0_2__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_0_2__3_in_rule__EtsiBnf__Group_0_2__22510);
+            rule__EtsiBnf__Group_0_2__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_0_2__2"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_0_2__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1180:1: rule__EtsiBnf__Group_0_2__2__Impl : ( ( rule__EtsiBnf__ImportSectionAssignment_0_2_2 )? ) ;
+    public final void rule__EtsiBnf__Group_0_2__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1184:1: ( ( ( rule__EtsiBnf__ImportSectionAssignment_0_2_2 )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1185:1: ( ( rule__EtsiBnf__ImportSectionAssignment_0_2_2 )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1185:1: ( ( rule__EtsiBnf__ImportSectionAssignment_0_2_2 )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1186:1: ( rule__EtsiBnf__ImportSectionAssignment_0_2_2 )?
+            {
+             before(grammarAccess.getEtsiBnfAccess().getImportSectionAssignment_0_2_2()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1187:1: ( rule__EtsiBnf__ImportSectionAssignment_0_2_2 )?
+            int alt14=2;
+            int LA14_0 = input.LA(1);
+
+            if ( (LA14_0==24) ) {
+                alt14=1;
+            }
+            switch (alt14) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1187:2: rule__EtsiBnf__ImportSectionAssignment_0_2_2
+                    {
+                    pushFollow(FOLLOW_rule__EtsiBnf__ImportSectionAssignment_0_2_2_in_rule__EtsiBnf__Group_0_2__2__Impl2537);
+                    rule__EtsiBnf__ImportSectionAssignment_0_2_2();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEtsiBnfAccess().getImportSectionAssignment_0_2_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_0_2__2__Impl"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_0_2__3"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1197:1: rule__EtsiBnf__Group_0_2__3 : rule__EtsiBnf__Group_0_2__3__Impl ;
+    public final void rule__EtsiBnf__Group_0_2__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1201:1: ( rule__EtsiBnf__Group_0_2__3__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1202:2: rule__EtsiBnf__Group_0_2__3__Impl
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_0_2__3__Impl_in_rule__EtsiBnf__Group_0_2__32568);
+            rule__EtsiBnf__Group_0_2__3__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_0_2__3"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_0_2__3__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1208:1: rule__EtsiBnf__Group_0_2__3__Impl : ( ( ( rule__EtsiBnf__BnfEntryAssignment_0_2_3 ) ) ( ( rule__EtsiBnf__BnfEntryAssignment_0_2_3 )* ) ) ;
+    public final void rule__EtsiBnf__Group_0_2__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1212:1: ( ( ( ( rule__EtsiBnf__BnfEntryAssignment_0_2_3 ) ) ( ( rule__EtsiBnf__BnfEntryAssignment_0_2_3 )* ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1213:1: ( ( ( rule__EtsiBnf__BnfEntryAssignment_0_2_3 ) ) ( ( rule__EtsiBnf__BnfEntryAssignment_0_2_3 )* ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1213:1: ( ( ( rule__EtsiBnf__BnfEntryAssignment_0_2_3 ) ) ( ( rule__EtsiBnf__BnfEntryAssignment_0_2_3 )* ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1214:1: ( ( rule__EtsiBnf__BnfEntryAssignment_0_2_3 ) ) ( ( rule__EtsiBnf__BnfEntryAssignment_0_2_3 )* )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1214:1: ( ( rule__EtsiBnf__BnfEntryAssignment_0_2_3 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1215:1: ( rule__EtsiBnf__BnfEntryAssignment_0_2_3 )
+            {
+             before(grammarAccess.getEtsiBnfAccess().getBnfEntryAssignment_0_2_3()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1216:1: ( rule__EtsiBnf__BnfEntryAssignment_0_2_3 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1216:2: rule__EtsiBnf__BnfEntryAssignment_0_2_3
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__BnfEntryAssignment_0_2_3_in_rule__EtsiBnf__Group_0_2__3__Impl2597);
+            rule__EtsiBnf__BnfEntryAssignment_0_2_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEtsiBnfAccess().getBnfEntryAssignment_0_2_3()); 
+
+            }
+
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1219:1: ( ( rule__EtsiBnf__BnfEntryAssignment_0_2_3 )* )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1220:1: ( rule__EtsiBnf__BnfEntryAssignment_0_2_3 )*
+            {
+             before(grammarAccess.getEtsiBnfAccess().getBnfEntryAssignment_0_2_3()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1221:1: ( rule__EtsiBnf__BnfEntryAssignment_0_2_3 )*
+            loop15:
+            do {
+                int alt15=2;
+                int LA15_0 = input.LA(1);
+
+                if ( ((LA15_0>=RULE_ID && LA15_0<=RULE_SECTIONHEADER)||LA15_0==RULE_INT) ) {
+                    alt15=1;
+                }
+
+
+                switch (alt15) {
+            	case 1 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1221:2: rule__EtsiBnf__BnfEntryAssignment_0_2_3
+            	    {
+            	    pushFollow(FOLLOW_rule__EtsiBnf__BnfEntryAssignment_0_2_3_in_rule__EtsiBnf__Group_0_2__3__Impl2609);
+            	    rule__EtsiBnf__BnfEntryAssignment_0_2_3();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop15;
+                }
+            } while (true);
+
+             after(grammarAccess.getEtsiBnfAccess().getBnfEntryAssignment_0_2_3()); 
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_0_2__3__Impl"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_1__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1240:1: rule__EtsiBnf__Group_1__0 : rule__EtsiBnf__Group_1__0__Impl rule__EtsiBnf__Group_1__1 ;
+    public final void rule__EtsiBnf__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1244:1: ( rule__EtsiBnf__Group_1__0__Impl rule__EtsiBnf__Group_1__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1245:2: rule__EtsiBnf__Group_1__0__Impl rule__EtsiBnf__Group_1__1
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_1__0__Impl_in_rule__EtsiBnf__Group_1__02650);
+            rule__EtsiBnf__Group_1__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_1__1_in_rule__EtsiBnf__Group_1__02653);
+            rule__EtsiBnf__Group_1__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_1__0"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_1__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1252:1: rule__EtsiBnf__Group_1__0__Impl : ( ( rule__EtsiBnf__TypeAssignment_1_0 ) ) ;
+    public final void rule__EtsiBnf__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1256:1: ( ( ( rule__EtsiBnf__TypeAssignment_1_0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1257:1: ( ( rule__EtsiBnf__TypeAssignment_1_0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1257:1: ( ( rule__EtsiBnf__TypeAssignment_1_0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1258:1: ( rule__EtsiBnf__TypeAssignment_1_0 )
+            {
+             before(grammarAccess.getEtsiBnfAccess().getTypeAssignment_1_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1259:1: ( rule__EtsiBnf__TypeAssignment_1_0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1259:2: rule__EtsiBnf__TypeAssignment_1_0
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__TypeAssignment_1_0_in_rule__EtsiBnf__Group_1__0__Impl2680);
+            rule__EtsiBnf__TypeAssignment_1_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEtsiBnfAccess().getTypeAssignment_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_1__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1269:1: rule__EtsiBnf__Group_1__1 : rule__EtsiBnf__Group_1__1__Impl rule__EtsiBnf__Group_1__2 ;
+    public final void rule__EtsiBnf__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1273:1: ( rule__EtsiBnf__Group_1__1__Impl rule__EtsiBnf__Group_1__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1274:2: rule__EtsiBnf__Group_1__1__Impl rule__EtsiBnf__Group_1__2
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_1__1__Impl_in_rule__EtsiBnf__Group_1__12710);
+            rule__EtsiBnf__Group_1__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_1__2_in_rule__EtsiBnf__Group_1__12713);
+            rule__EtsiBnf__Group_1__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_1__1"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_1__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1281:1: rule__EtsiBnf__Group_1__1__Impl : ( ';' ) ;
+    public final void rule__EtsiBnf__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1285:1: ( ( ';' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1286:1: ( ';' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1286:1: ( ';' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1287:1: ';'
+            {
+             before(grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_1_1()); 
+            match(input,23,FOLLOW_23_in_rule__EtsiBnf__Group_1__1__Impl2741); 
+             after(grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_1_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_1__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1300:1: rule__EtsiBnf__Group_1__2 : rule__EtsiBnf__Group_1__2__Impl rule__EtsiBnf__Group_1__3 ;
+    public final void rule__EtsiBnf__Group_1__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1304:1: ( rule__EtsiBnf__Group_1__2__Impl rule__EtsiBnf__Group_1__3 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1305:2: rule__EtsiBnf__Group_1__2__Impl rule__EtsiBnf__Group_1__3
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_1__2__Impl_in_rule__EtsiBnf__Group_1__22772);
+            rule__EtsiBnf__Group_1__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_1__3_in_rule__EtsiBnf__Group_1__22775);
+            rule__EtsiBnf__Group_1__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_1__2"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_1__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1312:1: rule__EtsiBnf__Group_1__2__Impl : ( ( rule__EtsiBnf__ImportSectionAssignment_1_2 )? ) ;
+    public final void rule__EtsiBnf__Group_1__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1316:1: ( ( ( rule__EtsiBnf__ImportSectionAssignment_1_2 )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1317:1: ( ( rule__EtsiBnf__ImportSectionAssignment_1_2 )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1317:1: ( ( rule__EtsiBnf__ImportSectionAssignment_1_2 )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1318:1: ( rule__EtsiBnf__ImportSectionAssignment_1_2 )?
+            {
+             before(grammarAccess.getEtsiBnfAccess().getImportSectionAssignment_1_2()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1319:1: ( rule__EtsiBnf__ImportSectionAssignment_1_2 )?
+            int alt16=2;
+            int LA16_0 = input.LA(1);
+
+            if ( (LA16_0==24) ) {
+                alt16=1;
+            }
+            switch (alt16) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1319:2: rule__EtsiBnf__ImportSectionAssignment_1_2
+                    {
+                    pushFollow(FOLLOW_rule__EtsiBnf__ImportSectionAssignment_1_2_in_rule__EtsiBnf__Group_1__2__Impl2802);
+                    rule__EtsiBnf__ImportSectionAssignment_1_2();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEtsiBnfAccess().getImportSectionAssignment_1_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_1__2__Impl"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_1__3"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1329:1: rule__EtsiBnf__Group_1__3 : rule__EtsiBnf__Group_1__3__Impl ;
+    public final void rule__EtsiBnf__Group_1__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1333:1: ( rule__EtsiBnf__Group_1__3__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1334:2: rule__EtsiBnf__Group_1__3__Impl
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_1__3__Impl_in_rule__EtsiBnf__Group_1__32833);
+            rule__EtsiBnf__Group_1__3__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_1__3"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_1__3__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1340:1: rule__EtsiBnf__Group_1__3__Impl : ( ( rule__EtsiBnf__DeltaEntryAssignment_1_3 )* ) ;
+    public final void rule__EtsiBnf__Group_1__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1344:1: ( ( ( rule__EtsiBnf__DeltaEntryAssignment_1_3 )* ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1345:1: ( ( rule__EtsiBnf__DeltaEntryAssignment_1_3 )* )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1345:1: ( ( rule__EtsiBnf__DeltaEntryAssignment_1_3 )* )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1346:1: ( rule__EtsiBnf__DeltaEntryAssignment_1_3 )*
+            {
+             before(grammarAccess.getEtsiBnfAccess().getDeltaEntryAssignment_1_3()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1347:1: ( rule__EtsiBnf__DeltaEntryAssignment_1_3 )*
+            loop17:
+            do {
+                int alt17=2;
+                int LA17_0 = input.LA(1);
+
+                if ( ((LA17_0>=RULE_ID && LA17_0<=RULE_SECTIONHEADER)||LA17_0==RULE_INT) ) {
+                    alt17=1;
+                }
+
+
+                switch (alt17) {
+            	case 1 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1347:2: rule__EtsiBnf__DeltaEntryAssignment_1_3
+            	    {
+            	    pushFollow(FOLLOW_rule__EtsiBnf__DeltaEntryAssignment_1_3_in_rule__EtsiBnf__Group_1__3__Impl2860);
+            	    rule__EtsiBnf__DeltaEntryAssignment_1_3();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop17;
+                }
+            } while (true);
+
+             after(grammarAccess.getEtsiBnfAccess().getDeltaEntryAssignment_1_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_1__3__Impl"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_2__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1365:1: rule__EtsiBnf__Group_2__0 : rule__EtsiBnf__Group_2__0__Impl rule__EtsiBnf__Group_2__1 ;
+    public final void rule__EtsiBnf__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1369:1: ( rule__EtsiBnf__Group_2__0__Impl rule__EtsiBnf__Group_2__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1370:2: rule__EtsiBnf__Group_2__0__Impl rule__EtsiBnf__Group_2__1
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_2__0__Impl_in_rule__EtsiBnf__Group_2__02899);
+            rule__EtsiBnf__Group_2__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_2__1_in_rule__EtsiBnf__Group_2__02902);
+            rule__EtsiBnf__Group_2__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_2__0"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_2__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1377:1: rule__EtsiBnf__Group_2__0__Impl : ( ( rule__EtsiBnf__TypeAssignment_2_0 ) ) ;
+    public final void rule__EtsiBnf__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1381:1: ( ( ( rule__EtsiBnf__TypeAssignment_2_0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1382:1: ( ( rule__EtsiBnf__TypeAssignment_2_0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1382:1: ( ( rule__EtsiBnf__TypeAssignment_2_0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1383:1: ( rule__EtsiBnf__TypeAssignment_2_0 )
+            {
+             before(grammarAccess.getEtsiBnfAccess().getTypeAssignment_2_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1384:1: ( rule__EtsiBnf__TypeAssignment_2_0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1384:2: rule__EtsiBnf__TypeAssignment_2_0
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__TypeAssignment_2_0_in_rule__EtsiBnf__Group_2__0__Impl2929);
+            rule__EtsiBnf__TypeAssignment_2_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEtsiBnfAccess().getTypeAssignment_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_2__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1394:1: rule__EtsiBnf__Group_2__1 : rule__EtsiBnf__Group_2__1__Impl rule__EtsiBnf__Group_2__2 ;
+    public final void rule__EtsiBnf__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1398:1: ( rule__EtsiBnf__Group_2__1__Impl rule__EtsiBnf__Group_2__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1399:2: rule__EtsiBnf__Group_2__1__Impl rule__EtsiBnf__Group_2__2
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_2__1__Impl_in_rule__EtsiBnf__Group_2__12959);
+            rule__EtsiBnf__Group_2__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_2__2_in_rule__EtsiBnf__Group_2__12962);
+            rule__EtsiBnf__Group_2__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_2__1"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_2__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1406:1: rule__EtsiBnf__Group_2__1__Impl : ( ';' ) ;
+    public final void rule__EtsiBnf__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1410:1: ( ( ';' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1411:1: ( ';' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1411:1: ( ';' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1412:1: ';'
+            {
+             before(grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_2_1()); 
+            match(input,23,FOLLOW_23_in_rule__EtsiBnf__Group_2__1__Impl2990); 
+             after(grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_2_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_2__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1425:1: rule__EtsiBnf__Group_2__2 : rule__EtsiBnf__Group_2__2__Impl rule__EtsiBnf__Group_2__3 ;
+    public final void rule__EtsiBnf__Group_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1429:1: ( rule__EtsiBnf__Group_2__2__Impl rule__EtsiBnf__Group_2__3 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1430:2: rule__EtsiBnf__Group_2__2__Impl rule__EtsiBnf__Group_2__3
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_2__2__Impl_in_rule__EtsiBnf__Group_2__23021);
+            rule__EtsiBnf__Group_2__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_2__3_in_rule__EtsiBnf__Group_2__23024);
+            rule__EtsiBnf__Group_2__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_2__2"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_2__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1437:1: rule__EtsiBnf__Group_2__2__Impl : ( ( rule__EtsiBnf__ImportSectionAssignment_2_2 )? ) ;
+    public final void rule__EtsiBnf__Group_2__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1441:1: ( ( ( rule__EtsiBnf__ImportSectionAssignment_2_2 )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1442:1: ( ( rule__EtsiBnf__ImportSectionAssignment_2_2 )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1442:1: ( ( rule__EtsiBnf__ImportSectionAssignment_2_2 )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1443:1: ( rule__EtsiBnf__ImportSectionAssignment_2_2 )?
+            {
+             before(grammarAccess.getEtsiBnfAccess().getImportSectionAssignment_2_2()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1444:1: ( rule__EtsiBnf__ImportSectionAssignment_2_2 )?
+            int alt18=2;
+            int LA18_0 = input.LA(1);
+
+            if ( (LA18_0==24) ) {
+                alt18=1;
+            }
+            switch (alt18) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1444:2: rule__EtsiBnf__ImportSectionAssignment_2_2
+                    {
+                    pushFollow(FOLLOW_rule__EtsiBnf__ImportSectionAssignment_2_2_in_rule__EtsiBnf__Group_2__2__Impl3051);
+                    rule__EtsiBnf__ImportSectionAssignment_2_2();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEtsiBnfAccess().getImportSectionAssignment_2_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_2__2__Impl"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_2__3"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1454:1: rule__EtsiBnf__Group_2__3 : rule__EtsiBnf__Group_2__3__Impl ;
+    public final void rule__EtsiBnf__Group_2__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1458:1: ( rule__EtsiBnf__Group_2__3__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1459:2: rule__EtsiBnf__Group_2__3__Impl
+            {
+            pushFollow(FOLLOW_rule__EtsiBnf__Group_2__3__Impl_in_rule__EtsiBnf__Group_2__33082);
+            rule__EtsiBnf__Group_2__3__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_2__3"
+
+
+    // $ANTLR start "rule__EtsiBnf__Group_2__3__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1465:1: rule__EtsiBnf__Group_2__3__Impl : ( ( rule__EtsiBnf__MergeEntryAssignment_2_3 )* ) ;
+    public final void rule__EtsiBnf__Group_2__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1469:1: ( ( ( rule__EtsiBnf__MergeEntryAssignment_2_3 )* ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1470:1: ( ( rule__EtsiBnf__MergeEntryAssignment_2_3 )* )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1470:1: ( ( rule__EtsiBnf__MergeEntryAssignment_2_3 )* )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1471:1: ( rule__EtsiBnf__MergeEntryAssignment_2_3 )*
+            {
+             before(grammarAccess.getEtsiBnfAccess().getMergeEntryAssignment_2_3()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1472:1: ( rule__EtsiBnf__MergeEntryAssignment_2_3 )*
+            loop19:
+            do {
+                int alt19=2;
+                int LA19_0 = input.LA(1);
+
+                if ( (LA19_0==RULE_SECTIONHEADER||LA19_0==30||(LA19_0>=32 && LA19_0<=33)) ) {
+                    alt19=1;
+                }
+
+
+                switch (alt19) {
+            	case 1 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1472:2: rule__EtsiBnf__MergeEntryAssignment_2_3
+            	    {
+            	    pushFollow(FOLLOW_rule__EtsiBnf__MergeEntryAssignment_2_3_in_rule__EtsiBnf__Group_2__3__Impl3109);
+            	    rule__EtsiBnf__MergeEntryAssignment_2_3();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop19;
+                }
+            } while (true);
+
+             after(grammarAccess.getEtsiBnfAccess().getMergeEntryAssignment_2_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__Group_2__3__Impl"
+
+
+    // $ANTLR start "rule__SectionHeading__Group__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1490:1: rule__SectionHeading__Group__0 : rule__SectionHeading__Group__0__Impl rule__SectionHeading__Group__1 ;
+    public final void rule__SectionHeading__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1494:1: ( rule__SectionHeading__Group__0__Impl rule__SectionHeading__Group__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1495:2: rule__SectionHeading__Group__0__Impl rule__SectionHeading__Group__1
+            {
+            pushFollow(FOLLOW_rule__SectionHeading__Group__0__Impl_in_rule__SectionHeading__Group__03148);
+            rule__SectionHeading__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__SectionHeading__Group__1_in_rule__SectionHeading__Group__03151);
+            rule__SectionHeading__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SectionHeading__Group__0"
+
+
+    // $ANTLR start "rule__SectionHeading__Group__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1502:1: rule__SectionHeading__Group__0__Impl : ( () ) ;
+    public final void rule__SectionHeading__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1506:1: ( ( () ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1507:1: ( () )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1507:1: ( () )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1508:1: ()
+            {
+             before(grammarAccess.getSectionHeadingAccess().getSectionHeadingAction_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1509:1: ()
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1511:1: 
+            {
+            }
+
+             after(grammarAccess.getSectionHeadingAccess().getSectionHeadingAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SectionHeading__Group__0__Impl"
+
+
+    // $ANTLR start "rule__SectionHeading__Group__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1521:1: rule__SectionHeading__Group__1 : rule__SectionHeading__Group__1__Impl ;
+    public final void rule__SectionHeading__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1525:1: ( rule__SectionHeading__Group__1__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1526:2: rule__SectionHeading__Group__1__Impl
+            {
+            pushFollow(FOLLOW_rule__SectionHeading__Group__1__Impl_in_rule__SectionHeading__Group__13209);
+            rule__SectionHeading__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SectionHeading__Group__1"
+
+
+    // $ANTLR start "rule__SectionHeading__Group__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1532:1: rule__SectionHeading__Group__1__Impl : ( ( rule__SectionHeading__SectionHeaderAssignment_1 ) ) ;
+    public final void rule__SectionHeading__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1536:1: ( ( ( rule__SectionHeading__SectionHeaderAssignment_1 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1537:1: ( ( rule__SectionHeading__SectionHeaderAssignment_1 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1537:1: ( ( rule__SectionHeading__SectionHeaderAssignment_1 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1538:1: ( rule__SectionHeading__SectionHeaderAssignment_1 )
+            {
+             before(grammarAccess.getSectionHeadingAccess().getSectionHeaderAssignment_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1539:1: ( rule__SectionHeading__SectionHeaderAssignment_1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1539:2: rule__SectionHeading__SectionHeaderAssignment_1
+            {
+            pushFollow(FOLLOW_rule__SectionHeading__SectionHeaderAssignment_1_in_rule__SectionHeading__Group__1__Impl3236);
+            rule__SectionHeading__SectionHeaderAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSectionHeadingAccess().getSectionHeaderAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SectionHeading__Group__1__Impl"
+
+
+    // $ANTLR start "rule__Import__Group__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1553:1: rule__Import__Group__0 : rule__Import__Group__0__Impl rule__Import__Group__1 ;
+    public final void rule__Import__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1557:1: ( rule__Import__Group__0__Impl rule__Import__Group__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1558:2: rule__Import__Group__0__Impl rule__Import__Group__1
+            {
+            pushFollow(FOLLOW_rule__Import__Group__0__Impl_in_rule__Import__Group__03270);
+            rule__Import__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Import__Group__1_in_rule__Import__Group__03273);
+            rule__Import__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group__0"
+
+
+    // $ANTLR start "rule__Import__Group__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1565:1: rule__Import__Group__0__Impl : ( 'import' ) ;
+    public final void rule__Import__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1569:1: ( ( 'import' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1570:1: ( 'import' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1570:1: ( 'import' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1571:1: 'import'
+            {
+             before(grammarAccess.getImportAccess().getImportKeyword_0()); 
+            match(input,24,FOLLOW_24_in_rule__Import__Group__0__Impl3301); 
+             after(grammarAccess.getImportAccess().getImportKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group__0__Impl"
+
+
+    // $ANTLR start "rule__Import__Group__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1584:1: rule__Import__Group__1 : rule__Import__Group__1__Impl rule__Import__Group__2 ;
+    public final void rule__Import__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1588:1: ( rule__Import__Group__1__Impl rule__Import__Group__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1589:2: rule__Import__Group__1__Impl rule__Import__Group__2
+            {
+            pushFollow(FOLLOW_rule__Import__Group__1__Impl_in_rule__Import__Group__13332);
+            rule__Import__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Import__Group__2_in_rule__Import__Group__13335);
+            rule__Import__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group__1"
+
+
+    // $ANTLR start "rule__Import__Group__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1596:1: rule__Import__Group__1__Impl : ( ( rule__Import__ImportURIAssignment_1 ) ) ;
+    public final void rule__Import__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1600:1: ( ( ( rule__Import__ImportURIAssignment_1 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1601:1: ( ( rule__Import__ImportURIAssignment_1 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1601:1: ( ( rule__Import__ImportURIAssignment_1 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1602:1: ( rule__Import__ImportURIAssignment_1 )
+            {
+             before(grammarAccess.getImportAccess().getImportURIAssignment_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1603:1: ( rule__Import__ImportURIAssignment_1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1603:2: rule__Import__ImportURIAssignment_1
+            {
+            pushFollow(FOLLOW_rule__Import__ImportURIAssignment_1_in_rule__Import__Group__1__Impl3362);
+            rule__Import__ImportURIAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getImportAccess().getImportURIAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group__1__Impl"
+
+
+    // $ANTLR start "rule__Import__Group__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1613:1: rule__Import__Group__2 : rule__Import__Group__2__Impl rule__Import__Group__3 ;
+    public final void rule__Import__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1617:1: ( rule__Import__Group__2__Impl rule__Import__Group__3 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1618:2: rule__Import__Group__2__Impl rule__Import__Group__3
+            {
+            pushFollow(FOLLOW_rule__Import__Group__2__Impl_in_rule__Import__Group__23392);
+            rule__Import__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Import__Group__3_in_rule__Import__Group__23395);
+            rule__Import__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group__2"
+
+
+    // $ANTLR start "rule__Import__Group__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1625:1: rule__Import__Group__2__Impl : ( ( rule__Import__Group_2__0 )? ) ;
+    public final void rule__Import__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1629:1: ( ( ( rule__Import__Group_2__0 )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1630:1: ( ( rule__Import__Group_2__0 )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1630:1: ( ( rule__Import__Group_2__0 )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1631:1: ( rule__Import__Group_2__0 )?
+            {
+             before(grammarAccess.getImportAccess().getGroup_2()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1632:1: ( rule__Import__Group_2__0 )?
+            int alt20=2;
+            int LA20_0 = input.LA(1);
+
+            if ( (LA20_0==25) ) {
+                alt20=1;
+            }
+            switch (alt20) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1632:2: rule__Import__Group_2__0
+                    {
+                    pushFollow(FOLLOW_rule__Import__Group_2__0_in_rule__Import__Group__2__Impl3422);
+                    rule__Import__Group_2__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getImportAccess().getGroup_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group__2__Impl"
+
+
+    // $ANTLR start "rule__Import__Group__3"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1642:1: rule__Import__Group__3 : rule__Import__Group__3__Impl rule__Import__Group__4 ;
+    public final void rule__Import__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1646:1: ( rule__Import__Group__3__Impl rule__Import__Group__4 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1647:2: rule__Import__Group__3__Impl rule__Import__Group__4
+            {
+            pushFollow(FOLLOW_rule__Import__Group__3__Impl_in_rule__Import__Group__33453);
+            rule__Import__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Import__Group__4_in_rule__Import__Group__33456);
+            rule__Import__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group__3"
+
+
+    // $ANTLR start "rule__Import__Group__3__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1654:1: rule__Import__Group__3__Impl : ( ( rule__Import__Group_3__0 )? ) ;
+    public final void rule__Import__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1658:1: ( ( ( rule__Import__Group_3__0 )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1659:1: ( ( rule__Import__Group_3__0 )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1659:1: ( ( rule__Import__Group_3__0 )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1660:1: ( rule__Import__Group_3__0 )?
+            {
+             before(grammarAccess.getImportAccess().getGroup_3()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1661:1: ( rule__Import__Group_3__0 )?
+            int alt21=2;
+            int LA21_0 = input.LA(1);
+
+            if ( (LA21_0==26) ) {
+                alt21=1;
+            }
+            switch (alt21) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1661:2: rule__Import__Group_3__0
+                    {
+                    pushFollow(FOLLOW_rule__Import__Group_3__0_in_rule__Import__Group__3__Impl3483);
+                    rule__Import__Group_3__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getImportAccess().getGroup_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group__3__Impl"
+
+
+    // $ANTLR start "rule__Import__Group__4"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1671:1: rule__Import__Group__4 : rule__Import__Group__4__Impl ;
+    public final void rule__Import__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1675:1: ( rule__Import__Group__4__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1676:2: rule__Import__Group__4__Impl
+            {
+            pushFollow(FOLLOW_rule__Import__Group__4__Impl_in_rule__Import__Group__43514);
+            rule__Import__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group__4"
+
+
+    // $ANTLR start "rule__Import__Group__4__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1682:1: rule__Import__Group__4__Impl : ( ';' ) ;
+    public final void rule__Import__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1686:1: ( ( ';' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1687:1: ( ';' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1687:1: ( ';' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1688:1: ';'
+            {
+             before(grammarAccess.getImportAccess().getSemicolonKeyword_4()); 
+            match(input,23,FOLLOW_23_in_rule__Import__Group__4__Impl3542); 
+             after(grammarAccess.getImportAccess().getSemicolonKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group__4__Impl"
+
+
+    // $ANTLR start "rule__Import__Group_2__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1711:1: rule__Import__Group_2__0 : rule__Import__Group_2__0__Impl rule__Import__Group_2__1 ;
+    public final void rule__Import__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1715:1: ( rule__Import__Group_2__0__Impl rule__Import__Group_2__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1716:2: rule__Import__Group_2__0__Impl rule__Import__Group_2__1
+            {
+            pushFollow(FOLLOW_rule__Import__Group_2__0__Impl_in_rule__Import__Group_2__03583);
+            rule__Import__Group_2__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Import__Group_2__1_in_rule__Import__Group_2__03586);
+            rule__Import__Group_2__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group_2__0"
+
+
+    // $ANTLR start "rule__Import__Group_2__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1723:1: rule__Import__Group_2__0__Impl : ( '/' ) ;
+    public final void rule__Import__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1727:1: ( ( '/' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1728:1: ( '/' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1728:1: ( '/' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1729:1: '/'
+            {
+             before(grammarAccess.getImportAccess().getSolidusKeyword_2_0()); 
+            match(input,25,FOLLOW_25_in_rule__Import__Group_2__0__Impl3614); 
+             after(grammarAccess.getImportAccess().getSolidusKeyword_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__Import__Group_2__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1742:1: rule__Import__Group_2__1 : rule__Import__Group_2__1__Impl ;
+    public final void rule__Import__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1746:1: ( rule__Import__Group_2__1__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1747:2: rule__Import__Group_2__1__Impl
+            {
+            pushFollow(FOLLOW_rule__Import__Group_2__1__Impl_in_rule__Import__Group_2__13645);
+            rule__Import__Group_2__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group_2__1"
+
+
+    // $ANTLR start "rule__Import__Group_2__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1753:1: rule__Import__Group_2__1__Impl : ( ( rule__Import__Alternatives_2_1 ) ) ;
+    public final void rule__Import__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1757:1: ( ( ( rule__Import__Alternatives_2_1 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1758:1: ( ( rule__Import__Alternatives_2_1 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1758:1: ( ( rule__Import__Alternatives_2_1 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1759:1: ( rule__Import__Alternatives_2_1 )
+            {
+             before(grammarAccess.getImportAccess().getAlternatives_2_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1760:1: ( rule__Import__Alternatives_2_1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1760:2: rule__Import__Alternatives_2_1
+            {
+            pushFollow(FOLLOW_rule__Import__Alternatives_2_1_in_rule__Import__Group_2__1__Impl3672);
+            rule__Import__Alternatives_2_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getImportAccess().getAlternatives_2_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__Import__Group_3__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1774:1: rule__Import__Group_3__0 : rule__Import__Group_3__0__Impl rule__Import__Group_3__1 ;
+    public final void rule__Import__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1778:1: ( rule__Import__Group_3__0__Impl rule__Import__Group_3__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1779:2: rule__Import__Group_3__0__Impl rule__Import__Group_3__1
+            {
+            pushFollow(FOLLOW_rule__Import__Group_3__0__Impl_in_rule__Import__Group_3__03706);
+            rule__Import__Group_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Import__Group_3__1_in_rule__Import__Group_3__03709);
+            rule__Import__Group_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group_3__0"
+
+
+    // $ANTLR start "rule__Import__Group_3__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1786:1: rule__Import__Group_3__0__Impl : ( 'label:' ) ;
+    public final void rule__Import__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1790:1: ( ( 'label:' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1791:1: ( 'label:' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1791:1: ( 'label:' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1792:1: 'label:'
+            {
+             before(grammarAccess.getImportAccess().getLabelKeyword_3_0()); 
+            match(input,26,FOLLOW_26_in_rule__Import__Group_3__0__Impl3737); 
+             after(grammarAccess.getImportAccess().getLabelKeyword_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__Import__Group_3__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1805:1: rule__Import__Group_3__1 : rule__Import__Group_3__1__Impl ;
+    public final void rule__Import__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1809:1: ( rule__Import__Group_3__1__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1810:2: rule__Import__Group_3__1__Impl
+            {
+            pushFollow(FOLLOW_rule__Import__Group_3__1__Impl_in_rule__Import__Group_3__13768);
+            rule__Import__Group_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group_3__1"
+
+
+    // $ANTLR start "rule__Import__Group_3__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1816:1: rule__Import__Group_3__1__Impl : ( ( rule__Import__LabelAssignment_3_1 ) ) ;
+    public final void rule__Import__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1820:1: ( ( ( rule__Import__LabelAssignment_3_1 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1821:1: ( ( rule__Import__LabelAssignment_3_1 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1821:1: ( ( rule__Import__LabelAssignment_3_1 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1822:1: ( rule__Import__LabelAssignment_3_1 )
+            {
+             before(grammarAccess.getImportAccess().getLabelAssignment_3_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1823:1: ( rule__Import__LabelAssignment_3_1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1823:2: rule__Import__LabelAssignment_3_1
+            {
+            pushFollow(FOLLOW_rule__Import__LabelAssignment_3_1_in_rule__Import__Group_3__1__Impl3795);
+            rule__Import__LabelAssignment_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getImportAccess().getLabelAssignment_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__Rule__Group__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1837:1: rule__Rule__Group__0 : rule__Rule__Group__0__Impl rule__Rule__Group__1 ;
+    public final void rule__Rule__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1841:1: ( rule__Rule__Group__0__Impl rule__Rule__Group__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1842:2: rule__Rule__Group__0__Impl rule__Rule__Group__1
+            {
+            pushFollow(FOLLOW_rule__Rule__Group__0__Impl_in_rule__Rule__Group__03829);
+            rule__Rule__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Rule__Group__1_in_rule__Rule__Group__03832);
+            rule__Rule__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__Group__0"
+
+
+    // $ANTLR start "rule__Rule__Group__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1849:1: rule__Rule__Group__0__Impl : ( ( rule__Rule__Group_0__0 )? ) ;
+    public final void rule__Rule__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1853:1: ( ( ( rule__Rule__Group_0__0 )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1854:1: ( ( rule__Rule__Group_0__0 )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1854:1: ( ( rule__Rule__Group_0__0 )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1855:1: ( rule__Rule__Group_0__0 )?
+            {
+             before(grammarAccess.getRuleAccess().getGroup_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1856:1: ( rule__Rule__Group_0__0 )?
+            int alt22=2;
+            int LA22_0 = input.LA(1);
+
+            if ( (LA22_0==RULE_INT) ) {
+                alt22=1;
+            }
+            switch (alt22) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1856:2: rule__Rule__Group_0__0
+                    {
+                    pushFollow(FOLLOW_rule__Rule__Group_0__0_in_rule__Rule__Group__0__Impl3859);
+                    rule__Rule__Group_0__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getRuleAccess().getGroup_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__Group__0__Impl"
+
+
+    // $ANTLR start "rule__Rule__Group__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1866:1: rule__Rule__Group__1 : rule__Rule__Group__1__Impl rule__Rule__Group__2 ;
+    public final void rule__Rule__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1870:1: ( rule__Rule__Group__1__Impl rule__Rule__Group__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1871:2: rule__Rule__Group__1__Impl rule__Rule__Group__2
+            {
+            pushFollow(FOLLOW_rule__Rule__Group__1__Impl_in_rule__Rule__Group__13890);
+            rule__Rule__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Rule__Group__2_in_rule__Rule__Group__13893);
+            rule__Rule__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__Group__1"
+
+
+    // $ANTLR start "rule__Rule__Group__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1878:1: rule__Rule__Group__1__Impl : ( ( rule__Rule__NameAssignment_1 ) ) ;
+    public final void rule__Rule__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1882:1: ( ( ( rule__Rule__NameAssignment_1 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1883:1: ( ( rule__Rule__NameAssignment_1 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1883:1: ( ( rule__Rule__NameAssignment_1 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1884:1: ( rule__Rule__NameAssignment_1 )
+            {
+             before(grammarAccess.getRuleAccess().getNameAssignment_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1885:1: ( rule__Rule__NameAssignment_1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1885:2: rule__Rule__NameAssignment_1
+            {
+            pushFollow(FOLLOW_rule__Rule__NameAssignment_1_in_rule__Rule__Group__1__Impl3920);
+            rule__Rule__NameAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRuleAccess().getNameAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__Group__1__Impl"
+
+
+    // $ANTLR start "rule__Rule__Group__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1895:1: rule__Rule__Group__2 : rule__Rule__Group__2__Impl rule__Rule__Group__3 ;
+    public final void rule__Rule__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1899:1: ( rule__Rule__Group__2__Impl rule__Rule__Group__3 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1900:2: rule__Rule__Group__2__Impl rule__Rule__Group__3
+            {
+            pushFollow(FOLLOW_rule__Rule__Group__2__Impl_in_rule__Rule__Group__23950);
+            rule__Rule__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Rule__Group__3_in_rule__Rule__Group__23953);
+            rule__Rule__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__Group__2"
+
+
+    // $ANTLR start "rule__Rule__Group__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1907:1: rule__Rule__Group__2__Impl : ( '::=' ) ;
+    public final void rule__Rule__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1911:1: ( ( '::=' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1912:1: ( '::=' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1912:1: ( '::=' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1913:1: '::='
+            {
+             before(grammarAccess.getRuleAccess().getColonColonEqualsSignKeyword_2()); 
+            match(input,27,FOLLOW_27_in_rule__Rule__Group__2__Impl3981); 
+             after(grammarAccess.getRuleAccess().getColonColonEqualsSignKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__Group__2__Impl"
+
+
+    // $ANTLR start "rule__Rule__Group__3"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1926:1: rule__Rule__Group__3 : rule__Rule__Group__3__Impl rule__Rule__Group__4 ;
+    public final void rule__Rule__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1930:1: ( rule__Rule__Group__3__Impl rule__Rule__Group__4 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1931:2: rule__Rule__Group__3__Impl rule__Rule__Group__4
+            {
+            pushFollow(FOLLOW_rule__Rule__Group__3__Impl_in_rule__Rule__Group__34012);
+            rule__Rule__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Rule__Group__4_in_rule__Rule__Group__34015);
+            rule__Rule__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__Group__3"
+
+
+    // $ANTLR start "rule__Rule__Group__3__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1938:1: rule__Rule__Group__3__Impl : ( ( rule__Rule__DefinitionListAssignment_3 )? ) ;
+    public final void rule__Rule__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1942:1: ( ( ( rule__Rule__DefinitionListAssignment_3 )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1943:1: ( ( rule__Rule__DefinitionListAssignment_3 )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1943:1: ( ( rule__Rule__DefinitionListAssignment_3 )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1944:1: ( rule__Rule__DefinitionListAssignment_3 )?
+            {
+             before(grammarAccess.getRuleAccess().getDefinitionListAssignment_3()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1945:1: ( rule__Rule__DefinitionListAssignment_3 )?
+            int alt23=2;
+            int LA23_0 = input.LA(1);
+
+            if ( (LA23_0==RULE_STRING||LA23_0==RULE_COLON||(LA23_0>=17 && LA23_0<=19)) ) {
+                alt23=1;
+            }
+            else if ( (LA23_0==RULE_ID) ) {
+                int LA23_2 = input.LA(2);
+
+                if ( (LA23_2==EOF||(LA23_2>=RULE_ID && LA23_2<=RULE_INT)||LA23_2==RULE_COLON||LA23_2==16||(LA23_2>=18 && LA23_2<=19)||LA23_2==23) ) {
+                    alt23=1;
+                }
+                else if ( (LA23_2==17) ) {
+                    int LA23_4 = input.LA(3);
+
+                    if ( (LA23_4==RULE_ID||LA23_4==RULE_STRING||LA23_4==RULE_COLON||(LA23_4>=17 && LA23_4<=19)) ) {
+                        alt23=1;
+                    }
+                }
+            }
+            switch (alt23) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1945:2: rule__Rule__DefinitionListAssignment_3
+                    {
+                    pushFollow(FOLLOW_rule__Rule__DefinitionListAssignment_3_in_rule__Rule__Group__3__Impl4042);
+                    rule__Rule__DefinitionListAssignment_3();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getRuleAccess().getDefinitionListAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__Group__3__Impl"
+
+
+    // $ANTLR start "rule__Rule__Group__4"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1955:1: rule__Rule__Group__4 : rule__Rule__Group__4__Impl ;
+    public final void rule__Rule__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1959:1: ( rule__Rule__Group__4__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1960:2: rule__Rule__Group__4__Impl
+            {
+            pushFollow(FOLLOW_rule__Rule__Group__4__Impl_in_rule__Rule__Group__44073);
+            rule__Rule__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__Group__4"
+
+
+    // $ANTLR start "rule__Rule__Group__4__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1966:1: rule__Rule__Group__4__Impl : ( ( ';' )? ) ;
+    public final void rule__Rule__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1970:1: ( ( ( ';' )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1971:1: ( ( ';' )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1971:1: ( ( ';' )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1972:1: ( ';' )?
+            {
+             before(grammarAccess.getRuleAccess().getSemicolonKeyword_4()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1973:1: ( ';' )?
+            int alt24=2;
+            int LA24_0 = input.LA(1);
+
+            if ( (LA24_0==23) ) {
+                alt24=1;
+            }
+            switch (alt24) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1974:2: ';'
+                    {
+                    match(input,23,FOLLOW_23_in_rule__Rule__Group__4__Impl4102); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getRuleAccess().getSemicolonKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__Group__4__Impl"
+
+
+    // $ANTLR start "rule__Rule__Group_0__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1995:1: rule__Rule__Group_0__0 : rule__Rule__Group_0__0__Impl rule__Rule__Group_0__1 ;
+    public final void rule__Rule__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:1999:1: ( rule__Rule__Group_0__0__Impl rule__Rule__Group_0__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2000:2: rule__Rule__Group_0__0__Impl rule__Rule__Group_0__1
+            {
+            pushFollow(FOLLOW_rule__Rule__Group_0__0__Impl_in_rule__Rule__Group_0__04145);
+            rule__Rule__Group_0__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Rule__Group_0__1_in_rule__Rule__Group_0__04148);
+            rule__Rule__Group_0__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__Group_0__0"
+
+
+    // $ANTLR start "rule__Rule__Group_0__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2007:1: rule__Rule__Group_0__0__Impl : ( ( rule__Rule__RulenumberAssignment_0_0 ) ) ;
+    public final void rule__Rule__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2011:1: ( ( ( rule__Rule__RulenumberAssignment_0_0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2012:1: ( ( rule__Rule__RulenumberAssignment_0_0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2012:1: ( ( rule__Rule__RulenumberAssignment_0_0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2013:1: ( rule__Rule__RulenumberAssignment_0_0 )
+            {
+             before(grammarAccess.getRuleAccess().getRulenumberAssignment_0_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2014:1: ( rule__Rule__RulenumberAssignment_0_0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2014:2: rule__Rule__RulenumberAssignment_0_0
+            {
+            pushFollow(FOLLOW_rule__Rule__RulenumberAssignment_0_0_in_rule__Rule__Group_0__0__Impl4175);
+            rule__Rule__RulenumberAssignment_0_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRuleAccess().getRulenumberAssignment_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__Rule__Group_0__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2024:1: rule__Rule__Group_0__1 : rule__Rule__Group_0__1__Impl rule__Rule__Group_0__2 ;
+    public final void rule__Rule__Group_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2028:1: ( rule__Rule__Group_0__1__Impl rule__Rule__Group_0__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2029:2: rule__Rule__Group_0__1__Impl rule__Rule__Group_0__2
+            {
+            pushFollow(FOLLOW_rule__Rule__Group_0__1__Impl_in_rule__Rule__Group_0__14205);
+            rule__Rule__Group_0__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Rule__Group_0__2_in_rule__Rule__Group_0__14208);
+            rule__Rule__Group_0__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__Group_0__1"
+
+
+    // $ANTLR start "rule__Rule__Group_0__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2036:1: rule__Rule__Group_0__1__Impl : ( ( rule__Rule__RulevariantAssignment_0_1 )? ) ;
+    public final void rule__Rule__Group_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2040:1: ( ( ( rule__Rule__RulevariantAssignment_0_1 )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2041:1: ( ( rule__Rule__RulevariantAssignment_0_1 )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2041:1: ( ( rule__Rule__RulevariantAssignment_0_1 )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2042:1: ( rule__Rule__RulevariantAssignment_0_1 )?
+            {
+             before(grammarAccess.getRuleAccess().getRulevariantAssignment_0_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2043:1: ( rule__Rule__RulevariantAssignment_0_1 )?
+            int alt25=2;
+            int LA25_0 = input.LA(1);
+
+            if ( (LA25_0==RULE_ID) ) {
+                alt25=1;
+            }
+            switch (alt25) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2043:2: rule__Rule__RulevariantAssignment_0_1
+                    {
+                    pushFollow(FOLLOW_rule__Rule__RulevariantAssignment_0_1_in_rule__Rule__Group_0__1__Impl4235);
+                    rule__Rule__RulevariantAssignment_0_1();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getRuleAccess().getRulevariantAssignment_0_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__Group_0__1__Impl"
+
+
+    // $ANTLR start "rule__Rule__Group_0__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2053:1: rule__Rule__Group_0__2 : rule__Rule__Group_0__2__Impl ;
+    public final void rule__Rule__Group_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2057:1: ( rule__Rule__Group_0__2__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2058:2: rule__Rule__Group_0__2__Impl
+            {
+            pushFollow(FOLLOW_rule__Rule__Group_0__2__Impl_in_rule__Rule__Group_0__24266);
+            rule__Rule__Group_0__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__Group_0__2"
+
+
+    // $ANTLR start "rule__Rule__Group_0__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2064:1: rule__Rule__Group_0__2__Impl : ( '.' ) ;
+    public final void rule__Rule__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2068:1: ( ( '.' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2069:1: ( '.' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2069:1: ( '.' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2070:1: '.'
+            {
+             before(grammarAccess.getRuleAccess().getFullStopKeyword_0_2()); 
+            match(input,28,FOLLOW_28_in_rule__Rule__Group_0__2__Impl4294); 
+             after(grammarAccess.getRuleAccess().getFullStopKeyword_0_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__Group_0__2__Impl"
+
+
+    // $ANTLR start "rule__ExtRule__Group__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2089:1: rule__ExtRule__Group__0 : rule__ExtRule__Group__0__Impl rule__ExtRule__Group__1 ;
+    public final void rule__ExtRule__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2093:1: ( rule__ExtRule__Group__0__Impl rule__ExtRule__Group__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2094:2: rule__ExtRule__Group__0__Impl rule__ExtRule__Group__1
+            {
+            pushFollow(FOLLOW_rule__ExtRule__Group__0__Impl_in_rule__ExtRule__Group__04331);
+            rule__ExtRule__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__ExtRule__Group__1_in_rule__ExtRule__Group__04334);
+            rule__ExtRule__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group__0"
+
+
+    // $ANTLR start "rule__ExtRule__Group__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2101:1: rule__ExtRule__Group__0__Impl : ( ( rule__ExtRule__Group_0__0 )? ) ;
+    public final void rule__ExtRule__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2105:1: ( ( ( rule__ExtRule__Group_0__0 )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2106:1: ( ( rule__ExtRule__Group_0__0 )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2106:1: ( ( rule__ExtRule__Group_0__0 )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2107:1: ( rule__ExtRule__Group_0__0 )?
+            {
+             before(grammarAccess.getExtRuleAccess().getGroup_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2108:1: ( rule__ExtRule__Group_0__0 )?
+            int alt26=2;
+            int LA26_0 = input.LA(1);
+
+            if ( (LA26_0==RULE_INT) ) {
+                alt26=1;
+            }
+            switch (alt26) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2108:2: rule__ExtRule__Group_0__0
+                    {
+                    pushFollow(FOLLOW_rule__ExtRule__Group_0__0_in_rule__ExtRule__Group__0__Impl4361);
+                    rule__ExtRule__Group_0__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getExtRuleAccess().getGroup_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ExtRule__Group__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2118:1: rule__ExtRule__Group__1 : rule__ExtRule__Group__1__Impl rule__ExtRule__Group__2 ;
+    public final void rule__ExtRule__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2122:1: ( rule__ExtRule__Group__1__Impl rule__ExtRule__Group__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2123:2: rule__ExtRule__Group__1__Impl rule__ExtRule__Group__2
+            {
+            pushFollow(FOLLOW_rule__ExtRule__Group__1__Impl_in_rule__ExtRule__Group__14392);
+            rule__ExtRule__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__ExtRule__Group__2_in_rule__ExtRule__Group__14395);
+            rule__ExtRule__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group__1"
+
+
+    // $ANTLR start "rule__ExtRule__Group__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2130:1: rule__ExtRule__Group__1__Impl : ( ( rule__ExtRule__NameAssignment_1 ) ) ;
+    public final void rule__ExtRule__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2134:1: ( ( ( rule__ExtRule__NameAssignment_1 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2135:1: ( ( rule__ExtRule__NameAssignment_1 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2135:1: ( ( rule__ExtRule__NameAssignment_1 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2136:1: ( rule__ExtRule__NameAssignment_1 )
+            {
+             before(grammarAccess.getExtRuleAccess().getNameAssignment_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2137:1: ( rule__ExtRule__NameAssignment_1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2137:2: rule__ExtRule__NameAssignment_1
+            {
+            pushFollow(FOLLOW_rule__ExtRule__NameAssignment_1_in_rule__ExtRule__Group__1__Impl4422);
+            rule__ExtRule__NameAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getExtRuleAccess().getNameAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ExtRule__Group__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2147:1: rule__ExtRule__Group__2 : rule__ExtRule__Group__2__Impl rule__ExtRule__Group__3 ;
+    public final void rule__ExtRule__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2151:1: ( rule__ExtRule__Group__2__Impl rule__ExtRule__Group__3 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2152:2: rule__ExtRule__Group__2__Impl rule__ExtRule__Group__3
+            {
+            pushFollow(FOLLOW_rule__ExtRule__Group__2__Impl_in_rule__ExtRule__Group__24452);
+            rule__ExtRule__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__ExtRule__Group__3_in_rule__ExtRule__Group__24455);
+            rule__ExtRule__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group__2"
+
+
+    // $ANTLR start "rule__ExtRule__Group__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2159:1: rule__ExtRule__Group__2__Impl : ( ( rule__ExtRule__Group_2__0 ) ) ;
+    public final void rule__ExtRule__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2163:1: ( ( ( rule__ExtRule__Group_2__0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2164:1: ( ( rule__ExtRule__Group_2__0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2164:1: ( ( rule__ExtRule__Group_2__0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2165:1: ( rule__ExtRule__Group_2__0 )
+            {
+             before(grammarAccess.getExtRuleAccess().getGroup_2()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2166:1: ( rule__ExtRule__Group_2__0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2166:2: rule__ExtRule__Group_2__0
+            {
+            pushFollow(FOLLOW_rule__ExtRule__Group_2__0_in_rule__ExtRule__Group__2__Impl4482);
+            rule__ExtRule__Group_2__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getExtRuleAccess().getGroup_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ExtRule__Group__3"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2176:1: rule__ExtRule__Group__3 : rule__ExtRule__Group__3__Impl rule__ExtRule__Group__4 ;
+    public final void rule__ExtRule__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2180:1: ( rule__ExtRule__Group__3__Impl rule__ExtRule__Group__4 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2181:2: rule__ExtRule__Group__3__Impl rule__ExtRule__Group__4
+            {
+            pushFollow(FOLLOW_rule__ExtRule__Group__3__Impl_in_rule__ExtRule__Group__34512);
+            rule__ExtRule__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__ExtRule__Group__4_in_rule__ExtRule__Group__34515);
+            rule__ExtRule__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group__3"
+
+
+    // $ANTLR start "rule__ExtRule__Group__3__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2188:1: rule__ExtRule__Group__3__Impl : ( '<-' ) ;
+    public final void rule__ExtRule__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2192:1: ( ( '<-' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2193:1: ( '<-' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2193:1: ( '<-' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2194:1: '<-'
+            {
+             before(grammarAccess.getExtRuleAccess().getLessThanSignHyphenMinusKeyword_3()); 
+            match(input,29,FOLLOW_29_in_rule__ExtRule__Group__3__Impl4543); 
+             after(grammarAccess.getExtRuleAccess().getLessThanSignHyphenMinusKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ExtRule__Group__4"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2207:1: rule__ExtRule__Group__4 : rule__ExtRule__Group__4__Impl rule__ExtRule__Group__5 ;
+    public final void rule__ExtRule__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2211:1: ( rule__ExtRule__Group__4__Impl rule__ExtRule__Group__5 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2212:2: rule__ExtRule__Group__4__Impl rule__ExtRule__Group__5
+            {
+            pushFollow(FOLLOW_rule__ExtRule__Group__4__Impl_in_rule__ExtRule__Group__44574);
+            rule__ExtRule__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__ExtRule__Group__5_in_rule__ExtRule__Group__44577);
+            rule__ExtRule__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group__4"
+
+
+    // $ANTLR start "rule__ExtRule__Group__4__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2219:1: rule__ExtRule__Group__4__Impl : ( ( rule__ExtRule__Alternatives_4 )* ) ;
+    public final void rule__ExtRule__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2223:1: ( ( ( rule__ExtRule__Alternatives_4 )* ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2224:1: ( ( rule__ExtRule__Alternatives_4 )* )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2224:1: ( ( rule__ExtRule__Alternatives_4 )* )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2225:1: ( rule__ExtRule__Alternatives_4 )*
+            {
+             before(grammarAccess.getExtRuleAccess().getAlternatives_4()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2226:1: ( rule__ExtRule__Alternatives_4 )*
+            loop27:
+            do {
+                int alt27=2;
+                int LA27_0 = input.LA(1);
+
+                if ( (LA27_0==RULE_ID) ) {
+                    int LA27_2 = input.LA(2);
+
+                    if ( (LA27_2==EOF||(LA27_2>=RULE_ID && LA27_2<=RULE_INT)||LA27_2==RULE_COLON||(LA27_2>=13 && LA27_2<=16)||(LA27_2>=18 && LA27_2<=21)||LA27_2==23) ) {
+                        alt27=1;
+                    }
+                    else if ( (LA27_2==17) ) {
+                        int LA27_4 = input.LA(3);
+
+                        if ( (LA27_4==RULE_INT) ) {
+                            int LA27_5 = input.LA(4);
+
+                            if ( (LA27_5==RULE_ID||LA27_5==28) ) {
+                                alt27=1;
+                            }
+
+
+                        }
+                        else if ( (LA27_4==EOF||(LA27_4>=RULE_ID && LA27_4<=RULE_STRING)||LA27_4==RULE_COLON||(LA27_4>=13 && LA27_4<=21)||LA27_4==23) ) {
+                            alt27=1;
+                        }
+
+
+                    }
+
+
+                }
+                else if ( (LA27_0==RULE_STRING||LA27_0==RULE_COLON||(LA27_0>=13 && LA27_0<=21)) ) {
+                    alt27=1;
+                }
+
+
+                switch (alt27) {
+            	case 1 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2226:2: rule__ExtRule__Alternatives_4
+            	    {
+            	    pushFollow(FOLLOW_rule__ExtRule__Alternatives_4_in_rule__ExtRule__Group__4__Impl4604);
+            	    rule__ExtRule__Alternatives_4();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop27;
+                }
+            } while (true);
+
+             after(grammarAccess.getExtRuleAccess().getAlternatives_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ExtRule__Group__5"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2236:1: rule__ExtRule__Group__5 : rule__ExtRule__Group__5__Impl ;
+    public final void rule__ExtRule__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2240:1: ( rule__ExtRule__Group__5__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2241:2: rule__ExtRule__Group__5__Impl
+            {
+            pushFollow(FOLLOW_rule__ExtRule__Group__5__Impl_in_rule__ExtRule__Group__54635);
+            rule__ExtRule__Group__5__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group__5"
+
+
+    // $ANTLR start "rule__ExtRule__Group__5__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2247:1: rule__ExtRule__Group__5__Impl : ( ( ';' )? ) ;
+    public final void rule__ExtRule__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2251:1: ( ( ( ';' )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2252:1: ( ( ';' )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2252:1: ( ( ';' )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2253:1: ( ';' )?
+            {
+             before(grammarAccess.getExtRuleAccess().getSemicolonKeyword_5()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2254:1: ( ';' )?
+            int alt28=2;
+            int LA28_0 = input.LA(1);
+
+            if ( (LA28_0==23) ) {
+                alt28=1;
+            }
+            switch (alt28) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2255:2: ';'
+                    {
+                    match(input,23,FOLLOW_23_in_rule__ExtRule__Group__5__Impl4664); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getExtRuleAccess().getSemicolonKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group__5__Impl"
+
+
+    // $ANTLR start "rule__ExtRule__Group_0__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2278:1: rule__ExtRule__Group_0__0 : rule__ExtRule__Group_0__0__Impl rule__ExtRule__Group_0__1 ;
+    public final void rule__ExtRule__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2282:1: ( rule__ExtRule__Group_0__0__Impl rule__ExtRule__Group_0__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2283:2: rule__ExtRule__Group_0__0__Impl rule__ExtRule__Group_0__1
+            {
+            pushFollow(FOLLOW_rule__ExtRule__Group_0__0__Impl_in_rule__ExtRule__Group_0__04709);
+            rule__ExtRule__Group_0__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__ExtRule__Group_0__1_in_rule__ExtRule__Group_0__04712);
+            rule__ExtRule__Group_0__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group_0__0"
+
+
+    // $ANTLR start "rule__ExtRule__Group_0__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2290:1: rule__ExtRule__Group_0__0__Impl : ( ( rule__ExtRule__RulenumberAssignment_0_0 ) ) ;
+    public final void rule__ExtRule__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2294:1: ( ( ( rule__ExtRule__RulenumberAssignment_0_0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2295:1: ( ( rule__ExtRule__RulenumberAssignment_0_0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2295:1: ( ( rule__ExtRule__RulenumberAssignment_0_0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2296:1: ( rule__ExtRule__RulenumberAssignment_0_0 )
+            {
+             before(grammarAccess.getExtRuleAccess().getRulenumberAssignment_0_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2297:1: ( rule__ExtRule__RulenumberAssignment_0_0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2297:2: rule__ExtRule__RulenumberAssignment_0_0
+            {
+            pushFollow(FOLLOW_rule__ExtRule__RulenumberAssignment_0_0_in_rule__ExtRule__Group_0__0__Impl4739);
+            rule__ExtRule__RulenumberAssignment_0_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getExtRuleAccess().getRulenumberAssignment_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__ExtRule__Group_0__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2307:1: rule__ExtRule__Group_0__1 : rule__ExtRule__Group_0__1__Impl rule__ExtRule__Group_0__2 ;
+    public final void rule__ExtRule__Group_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2311:1: ( rule__ExtRule__Group_0__1__Impl rule__ExtRule__Group_0__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2312:2: rule__ExtRule__Group_0__1__Impl rule__ExtRule__Group_0__2
+            {
+            pushFollow(FOLLOW_rule__ExtRule__Group_0__1__Impl_in_rule__ExtRule__Group_0__14769);
+            rule__ExtRule__Group_0__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__ExtRule__Group_0__2_in_rule__ExtRule__Group_0__14772);
+            rule__ExtRule__Group_0__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group_0__1"
+
+
+    // $ANTLR start "rule__ExtRule__Group_0__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2319:1: rule__ExtRule__Group_0__1__Impl : ( ( rule__ExtRule__RulevariantAssignment_0_1 )? ) ;
+    public final void rule__ExtRule__Group_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2323:1: ( ( ( rule__ExtRule__RulevariantAssignment_0_1 )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2324:1: ( ( rule__ExtRule__RulevariantAssignment_0_1 )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2324:1: ( ( rule__ExtRule__RulevariantAssignment_0_1 )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2325:1: ( rule__ExtRule__RulevariantAssignment_0_1 )?
+            {
+             before(grammarAccess.getExtRuleAccess().getRulevariantAssignment_0_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2326:1: ( rule__ExtRule__RulevariantAssignment_0_1 )?
+            int alt29=2;
+            int LA29_0 = input.LA(1);
+
+            if ( (LA29_0==RULE_ID) ) {
+                alt29=1;
+            }
+            switch (alt29) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2326:2: rule__ExtRule__RulevariantAssignment_0_1
+                    {
+                    pushFollow(FOLLOW_rule__ExtRule__RulevariantAssignment_0_1_in_rule__ExtRule__Group_0__1__Impl4799);
+                    rule__ExtRule__RulevariantAssignment_0_1();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getExtRuleAccess().getRulevariantAssignment_0_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group_0__1__Impl"
+
+
+    // $ANTLR start "rule__ExtRule__Group_0__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2336:1: rule__ExtRule__Group_0__2 : rule__ExtRule__Group_0__2__Impl ;
+    public final void rule__ExtRule__Group_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2340:1: ( rule__ExtRule__Group_0__2__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2341:2: rule__ExtRule__Group_0__2__Impl
+            {
+            pushFollow(FOLLOW_rule__ExtRule__Group_0__2__Impl_in_rule__ExtRule__Group_0__24830);
+            rule__ExtRule__Group_0__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group_0__2"
+
+
+    // $ANTLR start "rule__ExtRule__Group_0__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2347:1: rule__ExtRule__Group_0__2__Impl : ( '.' ) ;
+    public final void rule__ExtRule__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2351:1: ( ( '.' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2352:1: ( '.' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2352:1: ( '.' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2353:1: '.'
+            {
+             before(grammarAccess.getExtRuleAccess().getFullStopKeyword_0_2()); 
+            match(input,28,FOLLOW_28_in_rule__ExtRule__Group_0__2__Impl4858); 
+             after(grammarAccess.getExtRuleAccess().getFullStopKeyword_0_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group_0__2__Impl"
+
+
+    // $ANTLR start "rule__ExtRule__Group_2__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2372:1: rule__ExtRule__Group_2__0 : rule__ExtRule__Group_2__0__Impl rule__ExtRule__Group_2__1 ;
+    public final void rule__ExtRule__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2376:1: ( rule__ExtRule__Group_2__0__Impl rule__ExtRule__Group_2__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2377:2: rule__ExtRule__Group_2__0__Impl rule__ExtRule__Group_2__1
+            {
+            pushFollow(FOLLOW_rule__ExtRule__Group_2__0__Impl_in_rule__ExtRule__Group_2__04895);
+            rule__ExtRule__Group_2__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__ExtRule__Group_2__1_in_rule__ExtRule__Group_2__04898);
+            rule__ExtRule__Group_2__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group_2__0"
+
+
+    // $ANTLR start "rule__ExtRule__Group_2__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2384:1: rule__ExtRule__Group_2__0__Impl : ( '(' ) ;
+    public final void rule__ExtRule__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2388:1: ( ( '(' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2389:1: ( '(' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2389:1: ( '(' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2390:1: '('
+            {
+             before(grammarAccess.getExtRuleAccess().getLeftParenthesisKeyword_2_0()); 
+            match(input,17,FOLLOW_17_in_rule__ExtRule__Group_2__0__Impl4926); 
+             after(grammarAccess.getExtRuleAccess().getLeftParenthesisKeyword_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__ExtRule__Group_2__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2403:1: rule__ExtRule__Group_2__1 : rule__ExtRule__Group_2__1__Impl rule__ExtRule__Group_2__2 ;
+    public final void rule__ExtRule__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2407:1: ( rule__ExtRule__Group_2__1__Impl rule__ExtRule__Group_2__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2408:2: rule__ExtRule__Group_2__1__Impl rule__ExtRule__Group_2__2
+            {
+            pushFollow(FOLLOW_rule__ExtRule__Group_2__1__Impl_in_rule__ExtRule__Group_2__14957);
+            rule__ExtRule__Group_2__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__ExtRule__Group_2__2_in_rule__ExtRule__Group_2__14960);
+            rule__ExtRule__Group_2__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group_2__1"
+
+
+    // $ANTLR start "rule__ExtRule__Group_2__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2415:1: rule__ExtRule__Group_2__1__Impl : ( ( rule__ExtRule__RuleextAssignment_2_1 ) ) ;
+    public final void rule__ExtRule__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2419:1: ( ( ( rule__ExtRule__RuleextAssignment_2_1 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2420:1: ( ( rule__ExtRule__RuleextAssignment_2_1 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2420:1: ( ( rule__ExtRule__RuleextAssignment_2_1 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2421:1: ( rule__ExtRule__RuleextAssignment_2_1 )
+            {
+             before(grammarAccess.getExtRuleAccess().getRuleextAssignment_2_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2422:1: ( rule__ExtRule__RuleextAssignment_2_1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2422:2: rule__ExtRule__RuleextAssignment_2_1
+            {
+            pushFollow(FOLLOW_rule__ExtRule__RuleextAssignment_2_1_in_rule__ExtRule__Group_2__1__Impl4987);
+            rule__ExtRule__RuleextAssignment_2_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getExtRuleAccess().getRuleextAssignment_2_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__ExtRule__Group_2__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2432:1: rule__ExtRule__Group_2__2 : rule__ExtRule__Group_2__2__Impl ;
+    public final void rule__ExtRule__Group_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2436:1: ( rule__ExtRule__Group_2__2__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2437:2: rule__ExtRule__Group_2__2__Impl
+            {
+            pushFollow(FOLLOW_rule__ExtRule__Group_2__2__Impl_in_rule__ExtRule__Group_2__25017);
+            rule__ExtRule__Group_2__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group_2__2"
+
+
+    // $ANTLR start "rule__ExtRule__Group_2__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2443:1: rule__ExtRule__Group_2__2__Impl : ( ')' ) ;
+    public final void rule__ExtRule__Group_2__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2447:1: ( ( ')' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2448:1: ( ')' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2448:1: ( ')' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2449:1: ')'
+            {
+             before(grammarAccess.getExtRuleAccess().getRightParenthesisKeyword_2_2()); 
+            match(input,13,FOLLOW_13_in_rule__ExtRule__Group_2__2__Impl5045); 
+             after(grammarAccess.getExtRuleAccess().getRightParenthesisKeyword_2_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__Group_2__2__Impl"
+
+
+    // $ANTLR start "rule__GlobalCombinator__Group__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2468:1: rule__GlobalCombinator__Group__0 : rule__GlobalCombinator__Group__0__Impl rule__GlobalCombinator__Group__1 ;
+    public final void rule__GlobalCombinator__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2472:1: ( rule__GlobalCombinator__Group__0__Impl rule__GlobalCombinator__Group__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2473:2: rule__GlobalCombinator__Group__0__Impl rule__GlobalCombinator__Group__1
+            {
+            pushFollow(FOLLOW_rule__GlobalCombinator__Group__0__Impl_in_rule__GlobalCombinator__Group__05082);
+            rule__GlobalCombinator__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__GlobalCombinator__Group__1_in_rule__GlobalCombinator__Group__05085);
+            rule__GlobalCombinator__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GlobalCombinator__Group__0"
+
+
+    // $ANTLR start "rule__GlobalCombinator__Group__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2480:1: rule__GlobalCombinator__Group__0__Impl : ( ( rule__GlobalCombinator__Group_0__0 ) ) ;
+    public final void rule__GlobalCombinator__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2484:1: ( ( ( rule__GlobalCombinator__Group_0__0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2485:1: ( ( rule__GlobalCombinator__Group_0__0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2485:1: ( ( rule__GlobalCombinator__Group_0__0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2486:1: ( rule__GlobalCombinator__Group_0__0 )
+            {
+             before(grammarAccess.getGlobalCombinatorAccess().getGroup_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2487:1: ( rule__GlobalCombinator__Group_0__0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2487:2: rule__GlobalCombinator__Group_0__0
+            {
+            pushFollow(FOLLOW_rule__GlobalCombinator__Group_0__0_in_rule__GlobalCombinator__Group__0__Impl5112);
+            rule__GlobalCombinator__Group_0__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGlobalCombinatorAccess().getGroup_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GlobalCombinator__Group__0__Impl"
+
+
+    // $ANTLR start "rule__GlobalCombinator__Group__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2497:1: rule__GlobalCombinator__Group__1 : rule__GlobalCombinator__Group__1__Impl rule__GlobalCombinator__Group__2 ;
+    public final void rule__GlobalCombinator__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2501:1: ( rule__GlobalCombinator__Group__1__Impl rule__GlobalCombinator__Group__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2502:2: rule__GlobalCombinator__Group__1__Impl rule__GlobalCombinator__Group__2
+            {
+            pushFollow(FOLLOW_rule__GlobalCombinator__Group__1__Impl_in_rule__GlobalCombinator__Group__15142);
+            rule__GlobalCombinator__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__GlobalCombinator__Group__2_in_rule__GlobalCombinator__Group__15145);
+            rule__GlobalCombinator__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GlobalCombinator__Group__1"
+
+
+    // $ANTLR start "rule__GlobalCombinator__Group__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2509:1: rule__GlobalCombinator__Group__1__Impl : ( ( rule__GlobalCombinator__LogicAssignment_1 ) ) ;
+    public final void rule__GlobalCombinator__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2513:1: ( ( ( rule__GlobalCombinator__LogicAssignment_1 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2514:1: ( ( rule__GlobalCombinator__LogicAssignment_1 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2514:1: ( ( rule__GlobalCombinator__LogicAssignment_1 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2515:1: ( rule__GlobalCombinator__LogicAssignment_1 )
+            {
+             before(grammarAccess.getGlobalCombinatorAccess().getLogicAssignment_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2516:1: ( rule__GlobalCombinator__LogicAssignment_1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2516:2: rule__GlobalCombinator__LogicAssignment_1
+            {
+            pushFollow(FOLLOW_rule__GlobalCombinator__LogicAssignment_1_in_rule__GlobalCombinator__Group__1__Impl5172);
+            rule__GlobalCombinator__LogicAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGlobalCombinatorAccess().getLogicAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GlobalCombinator__Group__1__Impl"
+
+
+    // $ANTLR start "rule__GlobalCombinator__Group__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2526:1: rule__GlobalCombinator__Group__2 : rule__GlobalCombinator__Group__2__Impl ;
+    public final void rule__GlobalCombinator__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2530:1: ( rule__GlobalCombinator__Group__2__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2531:2: rule__GlobalCombinator__Group__2__Impl
+            {
+            pushFollow(FOLLOW_rule__GlobalCombinator__Group__2__Impl_in_rule__GlobalCombinator__Group__25202);
+            rule__GlobalCombinator__Group__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GlobalCombinator__Group__2"
+
+
+    // $ANTLR start "rule__GlobalCombinator__Group__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2537:1: rule__GlobalCombinator__Group__2__Impl : ( ( ';' )? ) ;
+    public final void rule__GlobalCombinator__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2541:1: ( ( ( ';' )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2542:1: ( ( ';' )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2542:1: ( ( ';' )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2543:1: ( ';' )?
+            {
+             before(grammarAccess.getGlobalCombinatorAccess().getSemicolonKeyword_2()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2544:1: ( ';' )?
+            int alt30=2;
+            int LA30_0 = input.LA(1);
+
+            if ( (LA30_0==23) ) {
+                alt30=1;
+            }
+            switch (alt30) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2545:2: ';'
+                    {
+                    match(input,23,FOLLOW_23_in_rule__GlobalCombinator__Group__2__Impl5231); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getGlobalCombinatorAccess().getSemicolonKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GlobalCombinator__Group__2__Impl"
+
+
+    // $ANTLR start "rule__GlobalCombinator__Group_0__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2562:1: rule__GlobalCombinator__Group_0__0 : rule__GlobalCombinator__Group_0__0__Impl rule__GlobalCombinator__Group_0__1 ;
+    public final void rule__GlobalCombinator__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2566:1: ( rule__GlobalCombinator__Group_0__0__Impl rule__GlobalCombinator__Group_0__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2567:2: rule__GlobalCombinator__Group_0__0__Impl rule__GlobalCombinator__Group_0__1
+            {
+            pushFollow(FOLLOW_rule__GlobalCombinator__Group_0__0__Impl_in_rule__GlobalCombinator__Group_0__05270);
+            rule__GlobalCombinator__Group_0__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__GlobalCombinator__Group_0__1_in_rule__GlobalCombinator__Group_0__05273);
+            rule__GlobalCombinator__Group_0__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GlobalCombinator__Group_0__0"
+
+
+    // $ANTLR start "rule__GlobalCombinator__Group_0__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2574:1: rule__GlobalCombinator__Group_0__0__Impl : ( 'global' ) ;
+    public final void rule__GlobalCombinator__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2578:1: ( ( 'global' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2579:1: ( 'global' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2579:1: ( 'global' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2580:1: 'global'
+            {
+             before(grammarAccess.getGlobalCombinatorAccess().getGlobalKeyword_0_0()); 
+            match(input,30,FOLLOW_30_in_rule__GlobalCombinator__Group_0__0__Impl5301); 
+             after(grammarAccess.getGlobalCombinatorAccess().getGlobalKeyword_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GlobalCombinator__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__GlobalCombinator__Group_0__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2593:1: rule__GlobalCombinator__Group_0__1 : rule__GlobalCombinator__Group_0__1__Impl ;
+    public final void rule__GlobalCombinator__Group_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2597:1: ( rule__GlobalCombinator__Group_0__1__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2598:2: rule__GlobalCombinator__Group_0__1__Impl
+            {
+            pushFollow(FOLLOW_rule__GlobalCombinator__Group_0__1__Impl_in_rule__GlobalCombinator__Group_0__15332);
+            rule__GlobalCombinator__Group_0__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GlobalCombinator__Group_0__1"
+
+
+    // $ANTLR start "rule__GlobalCombinator__Group_0__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2604:1: rule__GlobalCombinator__Group_0__1__Impl : ( 'combinator:' ) ;
+    public final void rule__GlobalCombinator__Group_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2608:1: ( ( 'combinator:' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2609:1: ( 'combinator:' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2609:1: ( 'combinator:' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2610:1: 'combinator:'
+            {
+             before(grammarAccess.getGlobalCombinatorAccess().getCombinatorKeyword_0_1()); 
+            match(input,31,FOLLOW_31_in_rule__GlobalCombinator__Group_0__1__Impl5360); 
+             after(grammarAccess.getGlobalCombinatorAccess().getCombinatorKeyword_0_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GlobalCombinator__Group_0__1__Impl"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2627:1: rule__RuleCombinator__Group__0 : rule__RuleCombinator__Group__0__Impl rule__RuleCombinator__Group__1 ;
+    public final void rule__RuleCombinator__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2631:1: ( rule__RuleCombinator__Group__0__Impl rule__RuleCombinator__Group__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2632:2: rule__RuleCombinator__Group__0__Impl rule__RuleCombinator__Group__1
+            {
+            pushFollow(FOLLOW_rule__RuleCombinator__Group__0__Impl_in_rule__RuleCombinator__Group__05395);
+            rule__RuleCombinator__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__RuleCombinator__Group__1_in_rule__RuleCombinator__Group__05398);
+            rule__RuleCombinator__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group__0"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2639:1: rule__RuleCombinator__Group__0__Impl : ( ( rule__RuleCombinator__Group_0__0 ) ) ;
+    public final void rule__RuleCombinator__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2643:1: ( ( ( rule__RuleCombinator__Group_0__0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2644:1: ( ( rule__RuleCombinator__Group_0__0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2644:1: ( ( rule__RuleCombinator__Group_0__0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2645:1: ( rule__RuleCombinator__Group_0__0 )
+            {
+             before(grammarAccess.getRuleCombinatorAccess().getGroup_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2646:1: ( rule__RuleCombinator__Group_0__0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2646:2: rule__RuleCombinator__Group_0__0
+            {
+            pushFollow(FOLLOW_rule__RuleCombinator__Group_0__0_in_rule__RuleCombinator__Group__0__Impl5425);
+            rule__RuleCombinator__Group_0__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRuleCombinatorAccess().getGroup_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group__0__Impl"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2656:1: rule__RuleCombinator__Group__1 : rule__RuleCombinator__Group__1__Impl rule__RuleCombinator__Group__2 ;
+    public final void rule__RuleCombinator__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2660:1: ( rule__RuleCombinator__Group__1__Impl rule__RuleCombinator__Group__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2661:2: rule__RuleCombinator__Group__1__Impl rule__RuleCombinator__Group__2
+            {
+            pushFollow(FOLLOW_rule__RuleCombinator__Group__1__Impl_in_rule__RuleCombinator__Group__15455);
+            rule__RuleCombinator__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__RuleCombinator__Group__2_in_rule__RuleCombinator__Group__15458);
+            rule__RuleCombinator__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group__1"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2668:1: rule__RuleCombinator__Group__1__Impl : ( ( rule__RuleCombinator__LogicAssignment_1 ) ) ;
+    public final void rule__RuleCombinator__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2672:1: ( ( ( rule__RuleCombinator__LogicAssignment_1 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2673:1: ( ( rule__RuleCombinator__LogicAssignment_1 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2673:1: ( ( rule__RuleCombinator__LogicAssignment_1 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2674:1: ( rule__RuleCombinator__LogicAssignment_1 )
+            {
+             before(grammarAccess.getRuleCombinatorAccess().getLogicAssignment_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2675:1: ( rule__RuleCombinator__LogicAssignment_1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2675:2: rule__RuleCombinator__LogicAssignment_1
+            {
+            pushFollow(FOLLOW_rule__RuleCombinator__LogicAssignment_1_in_rule__RuleCombinator__Group__1__Impl5485);
+            rule__RuleCombinator__LogicAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRuleCombinatorAccess().getLogicAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group__1__Impl"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2685:1: rule__RuleCombinator__Group__2 : rule__RuleCombinator__Group__2__Impl rule__RuleCombinator__Group__3 ;
+    public final void rule__RuleCombinator__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2689:1: ( rule__RuleCombinator__Group__2__Impl rule__RuleCombinator__Group__3 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2690:2: rule__RuleCombinator__Group__2__Impl rule__RuleCombinator__Group__3
+            {
+            pushFollow(FOLLOW_rule__RuleCombinator__Group__2__Impl_in_rule__RuleCombinator__Group__25515);
+            rule__RuleCombinator__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__RuleCombinator__Group__3_in_rule__RuleCombinator__Group__25518);
+            rule__RuleCombinator__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group__2"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2697:1: rule__RuleCombinator__Group__2__Impl : ( ( rule__RuleCombinator__Group_2__0 )* ) ;
+    public final void rule__RuleCombinator__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2701:1: ( ( ( rule__RuleCombinator__Group_2__0 )* ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2702:1: ( ( rule__RuleCombinator__Group_2__0 )* )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2702:1: ( ( rule__RuleCombinator__Group_2__0 )* )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2703:1: ( rule__RuleCombinator__Group_2__0 )*
+            {
+             before(grammarAccess.getRuleCombinatorAccess().getGroup_2()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2704:1: ( rule__RuleCombinator__Group_2__0 )*
+            loop31:
+            do {
+                int alt31=2;
+                int LA31_0 = input.LA(1);
+
+                if ( (LA31_0==17) ) {
+                    alt31=1;
+                }
+
+
+                switch (alt31) {
+            	case 1 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2704:2: rule__RuleCombinator__Group_2__0
+            	    {
+            	    pushFollow(FOLLOW_rule__RuleCombinator__Group_2__0_in_rule__RuleCombinator__Group__2__Impl5545);
+            	    rule__RuleCombinator__Group_2__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop31;
+                }
+            } while (true);
+
+             after(grammarAccess.getRuleCombinatorAccess().getGroup_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group__2__Impl"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group__3"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2714:1: rule__RuleCombinator__Group__3 : rule__RuleCombinator__Group__3__Impl ;
+    public final void rule__RuleCombinator__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2718:1: ( rule__RuleCombinator__Group__3__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2719:2: rule__RuleCombinator__Group__3__Impl
+            {
+            pushFollow(FOLLOW_rule__RuleCombinator__Group__3__Impl_in_rule__RuleCombinator__Group__35576);
+            rule__RuleCombinator__Group__3__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group__3"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group__3__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2725:1: rule__RuleCombinator__Group__3__Impl : ( ( ';' )? ) ;
+    public final void rule__RuleCombinator__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2729:1: ( ( ( ';' )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2730:1: ( ( ';' )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2730:1: ( ( ';' )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2731:1: ( ';' )?
+            {
+             before(grammarAccess.getRuleCombinatorAccess().getSemicolonKeyword_3()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2732:1: ( ';' )?
+            int alt32=2;
+            int LA32_0 = input.LA(1);
+
+            if ( (LA32_0==23) ) {
+                alt32=1;
+            }
+            switch (alt32) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2733:2: ';'
+                    {
+                    match(input,23,FOLLOW_23_in_rule__RuleCombinator__Group__3__Impl5605); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getRuleCombinatorAccess().getSemicolonKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group__3__Impl"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group_0__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2752:1: rule__RuleCombinator__Group_0__0 : rule__RuleCombinator__Group_0__0__Impl rule__RuleCombinator__Group_0__1 ;
+    public final void rule__RuleCombinator__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2756:1: ( rule__RuleCombinator__Group_0__0__Impl rule__RuleCombinator__Group_0__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2757:2: rule__RuleCombinator__Group_0__0__Impl rule__RuleCombinator__Group_0__1
+            {
+            pushFollow(FOLLOW_rule__RuleCombinator__Group_0__0__Impl_in_rule__RuleCombinator__Group_0__05646);
+            rule__RuleCombinator__Group_0__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__RuleCombinator__Group_0__1_in_rule__RuleCombinator__Group_0__05649);
+            rule__RuleCombinator__Group_0__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group_0__0"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group_0__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2764:1: rule__RuleCombinator__Group_0__0__Impl : ( 'rule' ) ;
+    public final void rule__RuleCombinator__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2768:1: ( ( 'rule' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2769:1: ( 'rule' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2769:1: ( 'rule' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2770:1: 'rule'
+            {
+             before(grammarAccess.getRuleCombinatorAccess().getRuleKeyword_0_0()); 
+            match(input,32,FOLLOW_32_in_rule__RuleCombinator__Group_0__0__Impl5677); 
+             after(grammarAccess.getRuleCombinatorAccess().getRuleKeyword_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group_0__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2783:1: rule__RuleCombinator__Group_0__1 : rule__RuleCombinator__Group_0__1__Impl rule__RuleCombinator__Group_0__2 ;
+    public final void rule__RuleCombinator__Group_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2787:1: ( rule__RuleCombinator__Group_0__1__Impl rule__RuleCombinator__Group_0__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2788:2: rule__RuleCombinator__Group_0__1__Impl rule__RuleCombinator__Group_0__2
+            {
+            pushFollow(FOLLOW_rule__RuleCombinator__Group_0__1__Impl_in_rule__RuleCombinator__Group_0__15708);
+            rule__RuleCombinator__Group_0__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__RuleCombinator__Group_0__2_in_rule__RuleCombinator__Group_0__15711);
+            rule__RuleCombinator__Group_0__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group_0__1"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group_0__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2795:1: rule__RuleCombinator__Group_0__1__Impl : ( 'combinator:' ) ;
+    public final void rule__RuleCombinator__Group_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2799:1: ( ( 'combinator:' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2800:1: ( 'combinator:' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2800:1: ( 'combinator:' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2801:1: 'combinator:'
+            {
+             before(grammarAccess.getRuleCombinatorAccess().getCombinatorKeyword_0_1()); 
+            match(input,31,FOLLOW_31_in_rule__RuleCombinator__Group_0__1__Impl5739); 
+             after(grammarAccess.getRuleCombinatorAccess().getCombinatorKeyword_0_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group_0__1__Impl"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group_0__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2814:1: rule__RuleCombinator__Group_0__2 : rule__RuleCombinator__Group_0__2__Impl ;
+    public final void rule__RuleCombinator__Group_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2818:1: ( rule__RuleCombinator__Group_0__2__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2819:2: rule__RuleCombinator__Group_0__2__Impl
+            {
+            pushFollow(FOLLOW_rule__RuleCombinator__Group_0__2__Impl_in_rule__RuleCombinator__Group_0__25770);
+            rule__RuleCombinator__Group_0__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group_0__2"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group_0__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2825:1: rule__RuleCombinator__Group_0__2__Impl : ( ( rule__RuleCombinator__NameAssignment_0_2 ) ) ;
+    public final void rule__RuleCombinator__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2829:1: ( ( ( rule__RuleCombinator__NameAssignment_0_2 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2830:1: ( ( rule__RuleCombinator__NameAssignment_0_2 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2830:1: ( ( rule__RuleCombinator__NameAssignment_0_2 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2831:1: ( rule__RuleCombinator__NameAssignment_0_2 )
+            {
+             before(grammarAccess.getRuleCombinatorAccess().getNameAssignment_0_2()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2832:1: ( rule__RuleCombinator__NameAssignment_0_2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2832:2: rule__RuleCombinator__NameAssignment_0_2
+            {
+            pushFollow(FOLLOW_rule__RuleCombinator__NameAssignment_0_2_in_rule__RuleCombinator__Group_0__2__Impl5797);
+            rule__RuleCombinator__NameAssignment_0_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRuleCombinatorAccess().getNameAssignment_0_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group_0__2__Impl"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group_2__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2848:1: rule__RuleCombinator__Group_2__0 : rule__RuleCombinator__Group_2__0__Impl rule__RuleCombinator__Group_2__1 ;
+    public final void rule__RuleCombinator__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2852:1: ( rule__RuleCombinator__Group_2__0__Impl rule__RuleCombinator__Group_2__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2853:2: rule__RuleCombinator__Group_2__0__Impl rule__RuleCombinator__Group_2__1
+            {
+            pushFollow(FOLLOW_rule__RuleCombinator__Group_2__0__Impl_in_rule__RuleCombinator__Group_2__05833);
+            rule__RuleCombinator__Group_2__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__RuleCombinator__Group_2__1_in_rule__RuleCombinator__Group_2__05836);
+            rule__RuleCombinator__Group_2__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group_2__0"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group_2__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2860:1: rule__RuleCombinator__Group_2__0__Impl : ( '(' ) ;
+    public final void rule__RuleCombinator__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2864:1: ( ( '(' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2865:1: ( '(' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2865:1: ( '(' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2866:1: '('
+            {
+             before(grammarAccess.getRuleCombinatorAccess().getLeftParenthesisKeyword_2_0()); 
+            match(input,17,FOLLOW_17_in_rule__RuleCombinator__Group_2__0__Impl5864); 
+             after(grammarAccess.getRuleCombinatorAccess().getLeftParenthesisKeyword_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group_2__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2879:1: rule__RuleCombinator__Group_2__1 : rule__RuleCombinator__Group_2__1__Impl rule__RuleCombinator__Group_2__2 ;
+    public final void rule__RuleCombinator__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2883:1: ( rule__RuleCombinator__Group_2__1__Impl rule__RuleCombinator__Group_2__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2884:2: rule__RuleCombinator__Group_2__1__Impl rule__RuleCombinator__Group_2__2
+            {
+            pushFollow(FOLLOW_rule__RuleCombinator__Group_2__1__Impl_in_rule__RuleCombinator__Group_2__15895);
+            rule__RuleCombinator__Group_2__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__RuleCombinator__Group_2__2_in_rule__RuleCombinator__Group_2__15898);
+            rule__RuleCombinator__Group_2__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group_2__1"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group_2__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2891:1: rule__RuleCombinator__Group_2__1__Impl : ( ( rule__RuleCombinator__LABELAssignment_2_1 ) ) ;
+    public final void rule__RuleCombinator__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2895:1: ( ( ( rule__RuleCombinator__LABELAssignment_2_1 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2896:1: ( ( rule__RuleCombinator__LABELAssignment_2_1 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2896:1: ( ( rule__RuleCombinator__LABELAssignment_2_1 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2897:1: ( rule__RuleCombinator__LABELAssignment_2_1 )
+            {
+             before(grammarAccess.getRuleCombinatorAccess().getLABELAssignment_2_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2898:1: ( rule__RuleCombinator__LABELAssignment_2_1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2898:2: rule__RuleCombinator__LABELAssignment_2_1
+            {
+            pushFollow(FOLLOW_rule__RuleCombinator__LABELAssignment_2_1_in_rule__RuleCombinator__Group_2__1__Impl5925);
+            rule__RuleCombinator__LABELAssignment_2_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRuleCombinatorAccess().getLABELAssignment_2_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group_2__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2908:1: rule__RuleCombinator__Group_2__2 : rule__RuleCombinator__Group_2__2__Impl ;
+    public final void rule__RuleCombinator__Group_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2912:1: ( rule__RuleCombinator__Group_2__2__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2913:2: rule__RuleCombinator__Group_2__2__Impl
+            {
+            pushFollow(FOLLOW_rule__RuleCombinator__Group_2__2__Impl_in_rule__RuleCombinator__Group_2__25955);
+            rule__RuleCombinator__Group_2__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group_2__2"
+
+
+    // $ANTLR start "rule__RuleCombinator__Group_2__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2919:1: rule__RuleCombinator__Group_2__2__Impl : ( ')' ) ;
+    public final void rule__RuleCombinator__Group_2__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2923:1: ( ( ')' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2924:1: ( ')' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2924:1: ( ')' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2925:1: ')'
+            {
+             before(grammarAccess.getRuleCombinatorAccess().getRightParenthesisKeyword_2_2()); 
+            match(input,13,FOLLOW_13_in_rule__RuleCombinator__Group_2__2__Impl5983); 
+             after(grammarAccess.getRuleCombinatorAccess().getRightParenthesisKeyword_2_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__Group_2__2__Impl"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2944:1: rule__HookCombinator__Group__0 : rule__HookCombinator__Group__0__Impl rule__HookCombinator__Group__1 ;
+    public final void rule__HookCombinator__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2948:1: ( rule__HookCombinator__Group__0__Impl rule__HookCombinator__Group__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2949:2: rule__HookCombinator__Group__0__Impl rule__HookCombinator__Group__1
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__Group__0__Impl_in_rule__HookCombinator__Group__06020);
+            rule__HookCombinator__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__HookCombinator__Group__1_in_rule__HookCombinator__Group__06023);
+            rule__HookCombinator__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__0"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2956:1: rule__HookCombinator__Group__0__Impl : ( 'hook' ) ;
+    public final void rule__HookCombinator__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2960:1: ( ( 'hook' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2961:1: ( 'hook' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2961:1: ( 'hook' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2962:1: 'hook'
+            {
+             before(grammarAccess.getHookCombinatorAccess().getHookKeyword_0()); 
+            match(input,33,FOLLOW_33_in_rule__HookCombinator__Group__0__Impl6051); 
+             after(grammarAccess.getHookCombinatorAccess().getHookKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__0__Impl"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2975:1: rule__HookCombinator__Group__1 : rule__HookCombinator__Group__1__Impl rule__HookCombinator__Group__2 ;
+    public final void rule__HookCombinator__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2979:1: ( rule__HookCombinator__Group__1__Impl rule__HookCombinator__Group__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2980:2: rule__HookCombinator__Group__1__Impl rule__HookCombinator__Group__2
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__Group__1__Impl_in_rule__HookCombinator__Group__16082);
+            rule__HookCombinator__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__HookCombinator__Group__2_in_rule__HookCombinator__Group__16085);
+            rule__HookCombinator__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__1"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2987:1: rule__HookCombinator__Group__1__Impl : ( 'combinator:' ) ;
+    public final void rule__HookCombinator__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2991:1: ( ( 'combinator:' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2992:1: ( 'combinator:' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2992:1: ( 'combinator:' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:2993:1: 'combinator:'
+            {
+             before(grammarAccess.getHookCombinatorAccess().getCombinatorKeyword_1()); 
+            match(input,31,FOLLOW_31_in_rule__HookCombinator__Group__1__Impl6113); 
+             after(grammarAccess.getHookCombinatorAccess().getCombinatorKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__1__Impl"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3006:1: rule__HookCombinator__Group__2 : rule__HookCombinator__Group__2__Impl rule__HookCombinator__Group__3 ;
+    public final void rule__HookCombinator__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3010:1: ( rule__HookCombinator__Group__2__Impl rule__HookCombinator__Group__3 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3011:2: rule__HookCombinator__Group__2__Impl rule__HookCombinator__Group__3
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__Group__2__Impl_in_rule__HookCombinator__Group__26144);
+            rule__HookCombinator__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__HookCombinator__Group__3_in_rule__HookCombinator__Group__26147);
+            rule__HookCombinator__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__2"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3018:1: rule__HookCombinator__Group__2__Impl : ( ( rule__HookCombinator__NameAssignment_2 ) ) ;
+    public final void rule__HookCombinator__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3022:1: ( ( ( rule__HookCombinator__NameAssignment_2 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3023:1: ( ( rule__HookCombinator__NameAssignment_2 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3023:1: ( ( rule__HookCombinator__NameAssignment_2 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3024:1: ( rule__HookCombinator__NameAssignment_2 )
+            {
+             before(grammarAccess.getHookCombinatorAccess().getNameAssignment_2()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3025:1: ( rule__HookCombinator__NameAssignment_2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3025:2: rule__HookCombinator__NameAssignment_2
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__NameAssignment_2_in_rule__HookCombinator__Group__2__Impl6174);
+            rule__HookCombinator__NameAssignment_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getHookCombinatorAccess().getNameAssignment_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__2__Impl"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__3"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3035:1: rule__HookCombinator__Group__3 : rule__HookCombinator__Group__3__Impl rule__HookCombinator__Group__4 ;
+    public final void rule__HookCombinator__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3039:1: ( rule__HookCombinator__Group__3__Impl rule__HookCombinator__Group__4 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3040:2: rule__HookCombinator__Group__3__Impl rule__HookCombinator__Group__4
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__Group__3__Impl_in_rule__HookCombinator__Group__36204);
+            rule__HookCombinator__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__HookCombinator__Group__4_in_rule__HookCombinator__Group__36207);
+            rule__HookCombinator__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__3"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__3__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3047:1: rule__HookCombinator__Group__3__Impl : ( '(' ) ;
+    public final void rule__HookCombinator__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3051:1: ( ( '(' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3052:1: ( '(' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3052:1: ( '(' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3053:1: '('
+            {
+             before(grammarAccess.getHookCombinatorAccess().getLeftParenthesisKeyword_3()); 
+            match(input,17,FOLLOW_17_in_rule__HookCombinator__Group__3__Impl6235); 
+             after(grammarAccess.getHookCombinatorAccess().getLeftParenthesisKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__3__Impl"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__4"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3066:1: rule__HookCombinator__Group__4 : rule__HookCombinator__Group__4__Impl rule__HookCombinator__Group__5 ;
+    public final void rule__HookCombinator__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3070:1: ( rule__HookCombinator__Group__4__Impl rule__HookCombinator__Group__5 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3071:2: rule__HookCombinator__Group__4__Impl rule__HookCombinator__Group__5
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__Group__4__Impl_in_rule__HookCombinator__Group__46266);
+            rule__HookCombinator__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__HookCombinator__Group__5_in_rule__HookCombinator__Group__46269);
+            rule__HookCombinator__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__4"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__4__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3078:1: rule__HookCombinator__Group__4__Impl : ( ( rule__HookCombinator__RuleextAssignment_4 ) ) ;
+    public final void rule__HookCombinator__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3082:1: ( ( ( rule__HookCombinator__RuleextAssignment_4 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3083:1: ( ( rule__HookCombinator__RuleextAssignment_4 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3083:1: ( ( rule__HookCombinator__RuleextAssignment_4 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3084:1: ( rule__HookCombinator__RuleextAssignment_4 )
+            {
+             before(grammarAccess.getHookCombinatorAccess().getRuleextAssignment_4()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3085:1: ( rule__HookCombinator__RuleextAssignment_4 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3085:2: rule__HookCombinator__RuleextAssignment_4
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__RuleextAssignment_4_in_rule__HookCombinator__Group__4__Impl6296);
+            rule__HookCombinator__RuleextAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getHookCombinatorAccess().getRuleextAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__4__Impl"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__5"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3095:1: rule__HookCombinator__Group__5 : rule__HookCombinator__Group__5__Impl rule__HookCombinator__Group__6 ;
+    public final void rule__HookCombinator__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3099:1: ( rule__HookCombinator__Group__5__Impl rule__HookCombinator__Group__6 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3100:2: rule__HookCombinator__Group__5__Impl rule__HookCombinator__Group__6
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__Group__5__Impl_in_rule__HookCombinator__Group__56326);
+            rule__HookCombinator__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__HookCombinator__Group__6_in_rule__HookCombinator__Group__56329);
+            rule__HookCombinator__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__5"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__5__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3107:1: rule__HookCombinator__Group__5__Impl : ( ')' ) ;
+    public final void rule__HookCombinator__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3111:1: ( ( ')' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3112:1: ( ')' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3112:1: ( ')' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3113:1: ')'
+            {
+             before(grammarAccess.getHookCombinatorAccess().getRightParenthesisKeyword_5()); 
+            match(input,13,FOLLOW_13_in_rule__HookCombinator__Group__5__Impl6357); 
+             after(grammarAccess.getHookCombinatorAccess().getRightParenthesisKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__5__Impl"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__6"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3126:1: rule__HookCombinator__Group__6 : rule__HookCombinator__Group__6__Impl rule__HookCombinator__Group__7 ;
+    public final void rule__HookCombinator__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3130:1: ( rule__HookCombinator__Group__6__Impl rule__HookCombinator__Group__7 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3131:2: rule__HookCombinator__Group__6__Impl rule__HookCombinator__Group__7
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__Group__6__Impl_in_rule__HookCombinator__Group__66388);
+            rule__HookCombinator__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__HookCombinator__Group__7_in_rule__HookCombinator__Group__66391);
+            rule__HookCombinator__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__6"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__6__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3138:1: rule__HookCombinator__Group__6__Impl : ( ( rule__HookCombinator__LogicAssignment_6 )? ) ;
+    public final void rule__HookCombinator__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3142:1: ( ( ( rule__HookCombinator__LogicAssignment_6 )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3143:1: ( ( rule__HookCombinator__LogicAssignment_6 )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3143:1: ( ( rule__HookCombinator__LogicAssignment_6 )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3144:1: ( rule__HookCombinator__LogicAssignment_6 )?
+            {
+             before(grammarAccess.getHookCombinatorAccess().getLogicAssignment_6()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3145:1: ( rule__HookCombinator__LogicAssignment_6 )?
+            int alt33=2;
+            int LA33_0 = input.LA(1);
+
+            if ( (LA33_0==RULE_LOGIC) ) {
+                alt33=1;
+            }
+            switch (alt33) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3145:2: rule__HookCombinator__LogicAssignment_6
+                    {
+                    pushFollow(FOLLOW_rule__HookCombinator__LogicAssignment_6_in_rule__HookCombinator__Group__6__Impl6418);
+                    rule__HookCombinator__LogicAssignment_6();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getHookCombinatorAccess().getLogicAssignment_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__6__Impl"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__7"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3155:1: rule__HookCombinator__Group__7 : rule__HookCombinator__Group__7__Impl rule__HookCombinator__Group__8 ;
+    public final void rule__HookCombinator__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3159:1: ( rule__HookCombinator__Group__7__Impl rule__HookCombinator__Group__8 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3160:2: rule__HookCombinator__Group__7__Impl rule__HookCombinator__Group__8
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__Group__7__Impl_in_rule__HookCombinator__Group__76449);
+            rule__HookCombinator__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__HookCombinator__Group__8_in_rule__HookCombinator__Group__76452);
+            rule__HookCombinator__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__7"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__7__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3167:1: rule__HookCombinator__Group__7__Impl : ( ( ( rule__HookCombinator__Group_7__0 ) ) ( ( rule__HookCombinator__Group_7__0 )* ) ) ;
+    public final void rule__HookCombinator__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3171:1: ( ( ( ( rule__HookCombinator__Group_7__0 ) ) ( ( rule__HookCombinator__Group_7__0 )* ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3172:1: ( ( ( rule__HookCombinator__Group_7__0 ) ) ( ( rule__HookCombinator__Group_7__0 )* ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3172:1: ( ( ( rule__HookCombinator__Group_7__0 ) ) ( ( rule__HookCombinator__Group_7__0 )* ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3173:1: ( ( rule__HookCombinator__Group_7__0 ) ) ( ( rule__HookCombinator__Group_7__0 )* )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3173:1: ( ( rule__HookCombinator__Group_7__0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3174:1: ( rule__HookCombinator__Group_7__0 )
+            {
+             before(grammarAccess.getHookCombinatorAccess().getGroup_7()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3175:1: ( rule__HookCombinator__Group_7__0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3175:2: rule__HookCombinator__Group_7__0
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__Group_7__0_in_rule__HookCombinator__Group__7__Impl6481);
+            rule__HookCombinator__Group_7__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getHookCombinatorAccess().getGroup_7()); 
+
+            }
+
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3178:1: ( ( rule__HookCombinator__Group_7__0 )* )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3179:1: ( rule__HookCombinator__Group_7__0 )*
+            {
+             before(grammarAccess.getHookCombinatorAccess().getGroup_7()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3180:1: ( rule__HookCombinator__Group_7__0 )*
+            loop34:
+            do {
+                int alt34=2;
+                int LA34_0 = input.LA(1);
+
+                if ( (LA34_0==17) ) {
+                    alt34=1;
+                }
+
+
+                switch (alt34) {
+            	case 1 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3180:2: rule__HookCombinator__Group_7__0
+            	    {
+            	    pushFollow(FOLLOW_rule__HookCombinator__Group_7__0_in_rule__HookCombinator__Group__7__Impl6493);
+            	    rule__HookCombinator__Group_7__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop34;
+                }
+            } while (true);
+
+             after(grammarAccess.getHookCombinatorAccess().getGroup_7()); 
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__7__Impl"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__8"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3191:1: rule__HookCombinator__Group__8 : rule__HookCombinator__Group__8__Impl ;
+    public final void rule__HookCombinator__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3195:1: ( rule__HookCombinator__Group__8__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3196:2: rule__HookCombinator__Group__8__Impl
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__Group__8__Impl_in_rule__HookCombinator__Group__86526);
+            rule__HookCombinator__Group__8__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__8"
+
+
+    // $ANTLR start "rule__HookCombinator__Group__8__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3202:1: rule__HookCombinator__Group__8__Impl : ( ( ';' )? ) ;
+    public final void rule__HookCombinator__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3206:1: ( ( ( ';' )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3207:1: ( ( ';' )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3207:1: ( ( ';' )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3208:1: ( ';' )?
+            {
+             before(grammarAccess.getHookCombinatorAccess().getSemicolonKeyword_8()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3209:1: ( ';' )?
+            int alt35=2;
+            int LA35_0 = input.LA(1);
+
+            if ( (LA35_0==23) ) {
+                alt35=1;
+            }
+            switch (alt35) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3210:2: ';'
+                    {
+                    match(input,23,FOLLOW_23_in_rule__HookCombinator__Group__8__Impl6555); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getHookCombinatorAccess().getSemicolonKeyword_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group__8__Impl"
+
+
+    // $ANTLR start "rule__HookCombinator__Group_7__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3239:1: rule__HookCombinator__Group_7__0 : rule__HookCombinator__Group_7__0__Impl rule__HookCombinator__Group_7__1 ;
+    public final void rule__HookCombinator__Group_7__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3243:1: ( rule__HookCombinator__Group_7__0__Impl rule__HookCombinator__Group_7__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3244:2: rule__HookCombinator__Group_7__0__Impl rule__HookCombinator__Group_7__1
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__Group_7__0__Impl_in_rule__HookCombinator__Group_7__06606);
+            rule__HookCombinator__Group_7__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__HookCombinator__Group_7__1_in_rule__HookCombinator__Group_7__06609);
+            rule__HookCombinator__Group_7__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group_7__0"
+
+
+    // $ANTLR start "rule__HookCombinator__Group_7__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3251:1: rule__HookCombinator__Group_7__0__Impl : ( '(' ) ;
+    public final void rule__HookCombinator__Group_7__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3255:1: ( ( '(' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3256:1: ( '(' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3256:1: ( '(' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3257:1: '('
+            {
+             before(grammarAccess.getHookCombinatorAccess().getLeftParenthesisKeyword_7_0()); 
+            match(input,17,FOLLOW_17_in_rule__HookCombinator__Group_7__0__Impl6637); 
+             after(grammarAccess.getHookCombinatorAccess().getLeftParenthesisKeyword_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group_7__0__Impl"
+
+
+    // $ANTLR start "rule__HookCombinator__Group_7__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3270:1: rule__HookCombinator__Group_7__1 : rule__HookCombinator__Group_7__1__Impl rule__HookCombinator__Group_7__2 ;
+    public final void rule__HookCombinator__Group_7__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3274:1: ( rule__HookCombinator__Group_7__1__Impl rule__HookCombinator__Group_7__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3275:2: rule__HookCombinator__Group_7__1__Impl rule__HookCombinator__Group_7__2
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__Group_7__1__Impl_in_rule__HookCombinator__Group_7__16668);
+            rule__HookCombinator__Group_7__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__HookCombinator__Group_7__2_in_rule__HookCombinator__Group_7__16671);
+            rule__HookCombinator__Group_7__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group_7__1"
+
+
+    // $ANTLR start "rule__HookCombinator__Group_7__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3282:1: rule__HookCombinator__Group_7__1__Impl : ( ( rule__HookCombinator__LABELAssignment_7_1 ) ) ;
+    public final void rule__HookCombinator__Group_7__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3286:1: ( ( ( rule__HookCombinator__LABELAssignment_7_1 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3287:1: ( ( rule__HookCombinator__LABELAssignment_7_1 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3287:1: ( ( rule__HookCombinator__LABELAssignment_7_1 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3288:1: ( rule__HookCombinator__LABELAssignment_7_1 )
+            {
+             before(grammarAccess.getHookCombinatorAccess().getLABELAssignment_7_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3289:1: ( rule__HookCombinator__LABELAssignment_7_1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3289:2: rule__HookCombinator__LABELAssignment_7_1
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__LABELAssignment_7_1_in_rule__HookCombinator__Group_7__1__Impl6698);
+            rule__HookCombinator__LABELAssignment_7_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getHookCombinatorAccess().getLABELAssignment_7_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group_7__1__Impl"
+
+
+    // $ANTLR start "rule__HookCombinator__Group_7__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3299:1: rule__HookCombinator__Group_7__2 : rule__HookCombinator__Group_7__2__Impl ;
+    public final void rule__HookCombinator__Group_7__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3303:1: ( rule__HookCombinator__Group_7__2__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3304:2: rule__HookCombinator__Group_7__2__Impl
+            {
+            pushFollow(FOLLOW_rule__HookCombinator__Group_7__2__Impl_in_rule__HookCombinator__Group_7__26728);
+            rule__HookCombinator__Group_7__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group_7__2"
+
+
+    // $ANTLR start "rule__HookCombinator__Group_7__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3310:1: rule__HookCombinator__Group_7__2__Impl : ( ')' ) ;
+    public final void rule__HookCombinator__Group_7__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3314:1: ( ( ')' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3315:1: ( ')' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3315:1: ( ')' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3316:1: ')'
+            {
+             before(grammarAccess.getHookCombinatorAccess().getRightParenthesisKeyword_7_2()); 
+            match(input,13,FOLLOW_13_in_rule__HookCombinator__Group_7__2__Impl6756); 
+             after(grammarAccess.getHookCombinatorAccess().getRightParenthesisKeyword_7_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__Group_7__2__Impl"
+
+
+    // $ANTLR start "rule__DefinitionList__Group__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3335:1: rule__DefinitionList__Group__0 : rule__DefinitionList__Group__0__Impl rule__DefinitionList__Group__1 ;
+    public final void rule__DefinitionList__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3339:1: ( rule__DefinitionList__Group__0__Impl rule__DefinitionList__Group__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3340:2: rule__DefinitionList__Group__0__Impl rule__DefinitionList__Group__1
+            {
+            pushFollow(FOLLOW_rule__DefinitionList__Group__0__Impl_in_rule__DefinitionList__Group__06793);
+            rule__DefinitionList__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__DefinitionList__Group__1_in_rule__DefinitionList__Group__06796);
+            rule__DefinitionList__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DefinitionList__Group__0"
+
+
+    // $ANTLR start "rule__DefinitionList__Group__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3347:1: rule__DefinitionList__Group__0__Impl : ( ( rule__DefinitionList__SingleDefinitionAssignment_0 ) ) ;
+    public final void rule__DefinitionList__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3351:1: ( ( ( rule__DefinitionList__SingleDefinitionAssignment_0 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3352:1: ( ( rule__DefinitionList__SingleDefinitionAssignment_0 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3352:1: ( ( rule__DefinitionList__SingleDefinitionAssignment_0 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3353:1: ( rule__DefinitionList__SingleDefinitionAssignment_0 )
+            {
+             before(grammarAccess.getDefinitionListAccess().getSingleDefinitionAssignment_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3354:1: ( rule__DefinitionList__SingleDefinitionAssignment_0 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3354:2: rule__DefinitionList__SingleDefinitionAssignment_0
+            {
+            pushFollow(FOLLOW_rule__DefinitionList__SingleDefinitionAssignment_0_in_rule__DefinitionList__Group__0__Impl6823);
+            rule__DefinitionList__SingleDefinitionAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDefinitionListAccess().getSingleDefinitionAssignment_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DefinitionList__Group__0__Impl"
+
+
+    // $ANTLR start "rule__DefinitionList__Group__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3364:1: rule__DefinitionList__Group__1 : rule__DefinitionList__Group__1__Impl ;
+    public final void rule__DefinitionList__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3368:1: ( rule__DefinitionList__Group__1__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3369:2: rule__DefinitionList__Group__1__Impl
+            {
+            pushFollow(FOLLOW_rule__DefinitionList__Group__1__Impl_in_rule__DefinitionList__Group__16853);
+            rule__DefinitionList__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DefinitionList__Group__1"
+
+
+    // $ANTLR start "rule__DefinitionList__Group__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3375:1: rule__DefinitionList__Group__1__Impl : ( ( rule__DefinitionList__Group_1__0 )* ) ;
+    public final void rule__DefinitionList__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3379:1: ( ( ( rule__DefinitionList__Group_1__0 )* ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3380:1: ( ( rule__DefinitionList__Group_1__0 )* )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3380:1: ( ( rule__DefinitionList__Group_1__0 )* )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3381:1: ( rule__DefinitionList__Group_1__0 )*
+            {
+             before(grammarAccess.getDefinitionListAccess().getGroup_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3382:1: ( rule__DefinitionList__Group_1__0 )*
+            loop36:
+            do {
+                int alt36=2;
+                int LA36_0 = input.LA(1);
+
+                if ( (LA36_0==16) ) {
+                    alt36=1;
+                }
+
+
+                switch (alt36) {
+            	case 1 :
+            	    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3382:2: rule__DefinitionList__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_rule__DefinitionList__Group_1__0_in_rule__DefinitionList__Group__1__Impl6880);
+            	    rule__DefinitionList__Group_1__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop36;
+                }
+            } while (true);
+
+             after(grammarAccess.getDefinitionListAccess().getGroup_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DefinitionList__Group__1__Impl"
+
+
+    // $ANTLR start "rule__DefinitionList__Group_1__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3396:1: rule__DefinitionList__Group_1__0 : rule__DefinitionList__Group_1__0__Impl rule__DefinitionList__Group_1__1 ;
+    public final void rule__DefinitionList__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3400:1: ( rule__DefinitionList__Group_1__0__Impl rule__DefinitionList__Group_1__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3401:2: rule__DefinitionList__Group_1__0__Impl rule__DefinitionList__Group_1__1
+            {
+            pushFollow(FOLLOW_rule__DefinitionList__Group_1__0__Impl_in_rule__DefinitionList__Group_1__06915);
+            rule__DefinitionList__Group_1__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__DefinitionList__Group_1__1_in_rule__DefinitionList__Group_1__06918);
+            rule__DefinitionList__Group_1__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DefinitionList__Group_1__0"
+
+
+    // $ANTLR start "rule__DefinitionList__Group_1__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3408:1: rule__DefinitionList__Group_1__0__Impl : ( '|' ) ;
+    public final void rule__DefinitionList__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3412:1: ( ( '|' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3413:1: ( '|' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3413:1: ( '|' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3414:1: '|'
+            {
+             before(grammarAccess.getDefinitionListAccess().getVerticalLineKeyword_1_0()); 
+            match(input,16,FOLLOW_16_in_rule__DefinitionList__Group_1__0__Impl6946); 
+             after(grammarAccess.getDefinitionListAccess().getVerticalLineKeyword_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DefinitionList__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__DefinitionList__Group_1__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3427:1: rule__DefinitionList__Group_1__1 : rule__DefinitionList__Group_1__1__Impl ;
+    public final void rule__DefinitionList__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3431:1: ( rule__DefinitionList__Group_1__1__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3432:2: rule__DefinitionList__Group_1__1__Impl
+            {
+            pushFollow(FOLLOW_rule__DefinitionList__Group_1__1__Impl_in_rule__DefinitionList__Group_1__16977);
+            rule__DefinitionList__Group_1__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DefinitionList__Group_1__1"
+
+
+    // $ANTLR start "rule__DefinitionList__Group_1__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3438:1: rule__DefinitionList__Group_1__1__Impl : ( ( rule__DefinitionList__SingleDefinitionAssignment_1_1 ) ) ;
+    public final void rule__DefinitionList__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3442:1: ( ( ( rule__DefinitionList__SingleDefinitionAssignment_1_1 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3443:1: ( ( rule__DefinitionList__SingleDefinitionAssignment_1_1 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3443:1: ( ( rule__DefinitionList__SingleDefinitionAssignment_1_1 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3444:1: ( rule__DefinitionList__SingleDefinitionAssignment_1_1 )
+            {
+             before(grammarAccess.getDefinitionListAccess().getSingleDefinitionAssignment_1_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3445:1: ( rule__DefinitionList__SingleDefinitionAssignment_1_1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3445:2: rule__DefinitionList__SingleDefinitionAssignment_1_1
+            {
+            pushFollow(FOLLOW_rule__DefinitionList__SingleDefinitionAssignment_1_1_in_rule__DefinitionList__Group_1__1__Impl7004);
+            rule__DefinitionList__SingleDefinitionAssignment_1_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDefinitionListAccess().getSingleDefinitionAssignment_1_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DefinitionList__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__GroupedSequence__Group__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3459:1: rule__GroupedSequence__Group__0 : rule__GroupedSequence__Group__0__Impl rule__GroupedSequence__Group__1 ;
+    public final void rule__GroupedSequence__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3463:1: ( rule__GroupedSequence__Group__0__Impl rule__GroupedSequence__Group__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3464:2: rule__GroupedSequence__Group__0__Impl rule__GroupedSequence__Group__1
+            {
+            pushFollow(FOLLOW_rule__GroupedSequence__Group__0__Impl_in_rule__GroupedSequence__Group__07038);
+            rule__GroupedSequence__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__GroupedSequence__Group__1_in_rule__GroupedSequence__Group__07041);
+            rule__GroupedSequence__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GroupedSequence__Group__0"
+
+
+    // $ANTLR start "rule__GroupedSequence__Group__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3471:1: rule__GroupedSequence__Group__0__Impl : ( '(' ) ;
+    public final void rule__GroupedSequence__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3475:1: ( ( '(' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3476:1: ( '(' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3476:1: ( '(' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3477:1: '('
+            {
+             before(grammarAccess.getGroupedSequenceAccess().getLeftParenthesisKeyword_0()); 
+            match(input,17,FOLLOW_17_in_rule__GroupedSequence__Group__0__Impl7069); 
+             after(grammarAccess.getGroupedSequenceAccess().getLeftParenthesisKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GroupedSequence__Group__0__Impl"
+
+
+    // $ANTLR start "rule__GroupedSequence__Group__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3490:1: rule__GroupedSequence__Group__1 : rule__GroupedSequence__Group__1__Impl rule__GroupedSequence__Group__2 ;
+    public final void rule__GroupedSequence__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3494:1: ( rule__GroupedSequence__Group__1__Impl rule__GroupedSequence__Group__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3495:2: rule__GroupedSequence__Group__1__Impl rule__GroupedSequence__Group__2
+            {
+            pushFollow(FOLLOW_rule__GroupedSequence__Group__1__Impl_in_rule__GroupedSequence__Group__17100);
+            rule__GroupedSequence__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__GroupedSequence__Group__2_in_rule__GroupedSequence__Group__17103);
+            rule__GroupedSequence__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GroupedSequence__Group__1"
+
+
+    // $ANTLR start "rule__GroupedSequence__Group__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3502:1: rule__GroupedSequence__Group__1__Impl : ( ( rule__GroupedSequence__DefinitionListAssignment_1 ) ) ;
+    public final void rule__GroupedSequence__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3506:1: ( ( ( rule__GroupedSequence__DefinitionListAssignment_1 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3507:1: ( ( rule__GroupedSequence__DefinitionListAssignment_1 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3507:1: ( ( rule__GroupedSequence__DefinitionListAssignment_1 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3508:1: ( rule__GroupedSequence__DefinitionListAssignment_1 )
+            {
+             before(grammarAccess.getGroupedSequenceAccess().getDefinitionListAssignment_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3509:1: ( rule__GroupedSequence__DefinitionListAssignment_1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3509:2: rule__GroupedSequence__DefinitionListAssignment_1
+            {
+            pushFollow(FOLLOW_rule__GroupedSequence__DefinitionListAssignment_1_in_rule__GroupedSequence__Group__1__Impl7130);
+            rule__GroupedSequence__DefinitionListAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGroupedSequenceAccess().getDefinitionListAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GroupedSequence__Group__1__Impl"
+
+
+    // $ANTLR start "rule__GroupedSequence__Group__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3519:1: rule__GroupedSequence__Group__2 : rule__GroupedSequence__Group__2__Impl ;
+    public final void rule__GroupedSequence__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3523:1: ( rule__GroupedSequence__Group__2__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3524:2: rule__GroupedSequence__Group__2__Impl
+            {
+            pushFollow(FOLLOW_rule__GroupedSequence__Group__2__Impl_in_rule__GroupedSequence__Group__27160);
+            rule__GroupedSequence__Group__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GroupedSequence__Group__2"
+
+
+    // $ANTLR start "rule__GroupedSequence__Group__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3530:1: rule__GroupedSequence__Group__2__Impl : ( ')' ) ;
+    public final void rule__GroupedSequence__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3534:1: ( ( ')' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3535:1: ( ')' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3535:1: ( ')' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3536:1: ')'
+            {
+             before(grammarAccess.getGroupedSequenceAccess().getRightParenthesisKeyword_2()); 
+            match(input,13,FOLLOW_13_in_rule__GroupedSequence__Group__2__Impl7188); 
+             after(grammarAccess.getGroupedSequenceAccess().getRightParenthesisKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GroupedSequence__Group__2__Impl"
+
+
+    // $ANTLR start "rule__OptionalSequence__Group__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3555:1: rule__OptionalSequence__Group__0 : rule__OptionalSequence__Group__0__Impl rule__OptionalSequence__Group__1 ;
+    public final void rule__OptionalSequence__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3559:1: ( rule__OptionalSequence__Group__0__Impl rule__OptionalSequence__Group__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3560:2: rule__OptionalSequence__Group__0__Impl rule__OptionalSequence__Group__1
+            {
+            pushFollow(FOLLOW_rule__OptionalSequence__Group__0__Impl_in_rule__OptionalSequence__Group__07225);
+            rule__OptionalSequence__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__OptionalSequence__Group__1_in_rule__OptionalSequence__Group__07228);
+            rule__OptionalSequence__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OptionalSequence__Group__0"
+
+
+    // $ANTLR start "rule__OptionalSequence__Group__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3567:1: rule__OptionalSequence__Group__0__Impl : ( '[' ) ;
+    public final void rule__OptionalSequence__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3571:1: ( ( '[' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3572:1: ( '[' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3572:1: ( '[' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3573:1: '['
+            {
+             before(grammarAccess.getOptionalSequenceAccess().getLeftSquareBracketKeyword_0()); 
+            match(input,18,FOLLOW_18_in_rule__OptionalSequence__Group__0__Impl7256); 
+             after(grammarAccess.getOptionalSequenceAccess().getLeftSquareBracketKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OptionalSequence__Group__0__Impl"
+
+
+    // $ANTLR start "rule__OptionalSequence__Group__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3586:1: rule__OptionalSequence__Group__1 : rule__OptionalSequence__Group__1__Impl rule__OptionalSequence__Group__2 ;
+    public final void rule__OptionalSequence__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3590:1: ( rule__OptionalSequence__Group__1__Impl rule__OptionalSequence__Group__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3591:2: rule__OptionalSequence__Group__1__Impl rule__OptionalSequence__Group__2
+            {
+            pushFollow(FOLLOW_rule__OptionalSequence__Group__1__Impl_in_rule__OptionalSequence__Group__17287);
+            rule__OptionalSequence__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__OptionalSequence__Group__2_in_rule__OptionalSequence__Group__17290);
+            rule__OptionalSequence__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OptionalSequence__Group__1"
+
+
+    // $ANTLR start "rule__OptionalSequence__Group__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3598:1: rule__OptionalSequence__Group__1__Impl : ( ( rule__OptionalSequence__DefinitionListAssignment_1 ) ) ;
+    public final void rule__OptionalSequence__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3602:1: ( ( ( rule__OptionalSequence__DefinitionListAssignment_1 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3603:1: ( ( rule__OptionalSequence__DefinitionListAssignment_1 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3603:1: ( ( rule__OptionalSequence__DefinitionListAssignment_1 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3604:1: ( rule__OptionalSequence__DefinitionListAssignment_1 )
+            {
+             before(grammarAccess.getOptionalSequenceAccess().getDefinitionListAssignment_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3605:1: ( rule__OptionalSequence__DefinitionListAssignment_1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3605:2: rule__OptionalSequence__DefinitionListAssignment_1
+            {
+            pushFollow(FOLLOW_rule__OptionalSequence__DefinitionListAssignment_1_in_rule__OptionalSequence__Group__1__Impl7317);
+            rule__OptionalSequence__DefinitionListAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getOptionalSequenceAccess().getDefinitionListAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OptionalSequence__Group__1__Impl"
+
+
+    // $ANTLR start "rule__OptionalSequence__Group__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3615:1: rule__OptionalSequence__Group__2 : rule__OptionalSequence__Group__2__Impl ;
+    public final void rule__OptionalSequence__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3619:1: ( rule__OptionalSequence__Group__2__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3620:2: rule__OptionalSequence__Group__2__Impl
+            {
+            pushFollow(FOLLOW_rule__OptionalSequence__Group__2__Impl_in_rule__OptionalSequence__Group__27347);
+            rule__OptionalSequence__Group__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OptionalSequence__Group__2"
+
+
+    // $ANTLR start "rule__OptionalSequence__Group__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3626:1: rule__OptionalSequence__Group__2__Impl : ( ']' ) ;
+    public final void rule__OptionalSequence__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3630:1: ( ( ']' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3631:1: ( ']' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3631:1: ( ']' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3632:1: ']'
+            {
+             before(grammarAccess.getOptionalSequenceAccess().getRightSquareBracketKeyword_2()); 
+            match(input,14,FOLLOW_14_in_rule__OptionalSequence__Group__2__Impl7375); 
+             after(grammarAccess.getOptionalSequenceAccess().getRightSquareBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OptionalSequence__Group__2__Impl"
+
+
+    // $ANTLR start "rule__RepeatedSequence__Group__0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3651:1: rule__RepeatedSequence__Group__0 : rule__RepeatedSequence__Group__0__Impl rule__RepeatedSequence__Group__1 ;
+    public final void rule__RepeatedSequence__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3655:1: ( rule__RepeatedSequence__Group__0__Impl rule__RepeatedSequence__Group__1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3656:2: rule__RepeatedSequence__Group__0__Impl rule__RepeatedSequence__Group__1
+            {
+            pushFollow(FOLLOW_rule__RepeatedSequence__Group__0__Impl_in_rule__RepeatedSequence__Group__07412);
+            rule__RepeatedSequence__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__RepeatedSequence__Group__1_in_rule__RepeatedSequence__Group__07415);
+            rule__RepeatedSequence__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RepeatedSequence__Group__0"
+
+
+    // $ANTLR start "rule__RepeatedSequence__Group__0__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3663:1: rule__RepeatedSequence__Group__0__Impl : ( '{' ) ;
+    public final void rule__RepeatedSequence__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3667:1: ( ( '{' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3668:1: ( '{' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3668:1: ( '{' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3669:1: '{'
+            {
+             before(grammarAccess.getRepeatedSequenceAccess().getLeftCurlyBracketKeyword_0()); 
+            match(input,19,FOLLOW_19_in_rule__RepeatedSequence__Group__0__Impl7443); 
+             after(grammarAccess.getRepeatedSequenceAccess().getLeftCurlyBracketKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RepeatedSequence__Group__0__Impl"
+
+
+    // $ANTLR start "rule__RepeatedSequence__Group__1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3682:1: rule__RepeatedSequence__Group__1 : rule__RepeatedSequence__Group__1__Impl rule__RepeatedSequence__Group__2 ;
+    public final void rule__RepeatedSequence__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3686:1: ( rule__RepeatedSequence__Group__1__Impl rule__RepeatedSequence__Group__2 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3687:2: rule__RepeatedSequence__Group__1__Impl rule__RepeatedSequence__Group__2
+            {
+            pushFollow(FOLLOW_rule__RepeatedSequence__Group__1__Impl_in_rule__RepeatedSequence__Group__17474);
+            rule__RepeatedSequence__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__RepeatedSequence__Group__2_in_rule__RepeatedSequence__Group__17477);
+            rule__RepeatedSequence__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RepeatedSequence__Group__1"
+
+
+    // $ANTLR start "rule__RepeatedSequence__Group__1__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3694:1: rule__RepeatedSequence__Group__1__Impl : ( ( rule__RepeatedSequence__DefinitionsAssignment_1 ) ) ;
+    public final void rule__RepeatedSequence__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3698:1: ( ( ( rule__RepeatedSequence__DefinitionsAssignment_1 ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3699:1: ( ( rule__RepeatedSequence__DefinitionsAssignment_1 ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3699:1: ( ( rule__RepeatedSequence__DefinitionsAssignment_1 ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3700:1: ( rule__RepeatedSequence__DefinitionsAssignment_1 )
+            {
+             before(grammarAccess.getRepeatedSequenceAccess().getDefinitionsAssignment_1()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3701:1: ( rule__RepeatedSequence__DefinitionsAssignment_1 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3701:2: rule__RepeatedSequence__DefinitionsAssignment_1
+            {
+            pushFollow(FOLLOW_rule__RepeatedSequence__DefinitionsAssignment_1_in_rule__RepeatedSequence__Group__1__Impl7504);
+            rule__RepeatedSequence__DefinitionsAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRepeatedSequenceAccess().getDefinitionsAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RepeatedSequence__Group__1__Impl"
+
+
+    // $ANTLR start "rule__RepeatedSequence__Group__2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3711:1: rule__RepeatedSequence__Group__2 : rule__RepeatedSequence__Group__2__Impl rule__RepeatedSequence__Group__3 ;
+    public final void rule__RepeatedSequence__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3715:1: ( rule__RepeatedSequence__Group__2__Impl rule__RepeatedSequence__Group__3 )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3716:2: rule__RepeatedSequence__Group__2__Impl rule__RepeatedSequence__Group__3
+            {
+            pushFollow(FOLLOW_rule__RepeatedSequence__Group__2__Impl_in_rule__RepeatedSequence__Group__27534);
+            rule__RepeatedSequence__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__RepeatedSequence__Group__3_in_rule__RepeatedSequence__Group__27537);
+            rule__RepeatedSequence__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RepeatedSequence__Group__2"
+
+
+    // $ANTLR start "rule__RepeatedSequence__Group__2__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3723:1: rule__RepeatedSequence__Group__2__Impl : ( '}' ) ;
+    public final void rule__RepeatedSequence__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3727:1: ( ( '}' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3728:1: ( '}' )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3728:1: ( '}' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3729:1: '}'
+            {
+             before(grammarAccess.getRepeatedSequenceAccess().getRightCurlyBracketKeyword_2()); 
+            match(input,15,FOLLOW_15_in_rule__RepeatedSequence__Group__2__Impl7565); 
+             after(grammarAccess.getRepeatedSequenceAccess().getRightCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RepeatedSequence__Group__2__Impl"
+
+
+    // $ANTLR start "rule__RepeatedSequence__Group__3"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3742:1: rule__RepeatedSequence__Group__3 : rule__RepeatedSequence__Group__3__Impl ;
+    public final void rule__RepeatedSequence__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3746:1: ( rule__RepeatedSequence__Group__3__Impl )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3747:2: rule__RepeatedSequence__Group__3__Impl
+            {
+            pushFollow(FOLLOW_rule__RepeatedSequence__Group__3__Impl_in_rule__RepeatedSequence__Group__37596);
+            rule__RepeatedSequence__Group__3__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RepeatedSequence__Group__3"
+
+
+    // $ANTLR start "rule__RepeatedSequence__Group__3__Impl"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3753:1: rule__RepeatedSequence__Group__3__Impl : ( ( rule__RepeatedSequence__MorethanonceAssignment_3 )? ) ;
+    public final void rule__RepeatedSequence__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3757:1: ( ( ( rule__RepeatedSequence__MorethanonceAssignment_3 )? ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3758:1: ( ( rule__RepeatedSequence__MorethanonceAssignment_3 )? )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3758:1: ( ( rule__RepeatedSequence__MorethanonceAssignment_3 )? )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3759:1: ( rule__RepeatedSequence__MorethanonceAssignment_3 )?
+            {
+             before(grammarAccess.getRepeatedSequenceAccess().getMorethanonceAssignment_3()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3760:1: ( rule__RepeatedSequence__MorethanonceAssignment_3 )?
+            int alt37=2;
+            int LA37_0 = input.LA(1);
+
+            if ( (LA37_0==21) ) {
+                alt37=1;
+            }
+            switch (alt37) {
+                case 1 :
+                    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3760:2: rule__RepeatedSequence__MorethanonceAssignment_3
+                    {
+                    pushFollow(FOLLOW_rule__RepeatedSequence__MorethanonceAssignment_3_in_rule__RepeatedSequence__Group__3__Impl7623);
+                    rule__RepeatedSequence__MorethanonceAssignment_3();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getRepeatedSequenceAccess().getMorethanonceAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RepeatedSequence__Group__3__Impl"
+
+
+    // $ANTLR start "rule__EtsiBnf__NameAssignment_0_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3779:1: rule__EtsiBnf__NameAssignment_0_1 : ( RULE_ID ) ;
+    public final void rule__EtsiBnf__NameAssignment_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3783:1: ( ( RULE_ID ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3784:1: ( RULE_ID )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3784:1: ( RULE_ID )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3785:1: RULE_ID
+            {
+             before(grammarAccess.getEtsiBnfAccess().getNameIDTerminalRuleCall_0_1_0()); 
+            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__EtsiBnf__NameAssignment_0_17667); 
+             after(grammarAccess.getEtsiBnfAccess().getNameIDTerminalRuleCall_0_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__NameAssignment_0_1"
+
+
+    // $ANTLR start "rule__EtsiBnf__TypeAssignment_0_2_0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3794:1: rule__EtsiBnf__TypeAssignment_0_2_0 : ( ( '/bnf' ) ) ;
+    public final void rule__EtsiBnf__TypeAssignment_0_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3798:1: ( ( ( '/bnf' ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3799:1: ( ( '/bnf' ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3799:1: ( ( '/bnf' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3800:1: ( '/bnf' )
+            {
+             before(grammarAccess.getEtsiBnfAccess().getTypeBnfKeyword_0_2_0_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3801:1: ( '/bnf' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3802:1: '/bnf'
+            {
+             before(grammarAccess.getEtsiBnfAccess().getTypeBnfKeyword_0_2_0_0()); 
+            match(input,34,FOLLOW_34_in_rule__EtsiBnf__TypeAssignment_0_2_07703); 
+             after(grammarAccess.getEtsiBnfAccess().getTypeBnfKeyword_0_2_0_0()); 
+
+            }
+
+             after(grammarAccess.getEtsiBnfAccess().getTypeBnfKeyword_0_2_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__TypeAssignment_0_2_0"
+
+
+    // $ANTLR start "rule__EtsiBnf__ImportSectionAssignment_0_2_2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3817:1: rule__EtsiBnf__ImportSectionAssignment_0_2_2 : ( ruleImportSection ) ;
+    public final void rule__EtsiBnf__ImportSectionAssignment_0_2_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3821:1: ( ( ruleImportSection ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3822:1: ( ruleImportSection )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3822:1: ( ruleImportSection )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3823:1: ruleImportSection
+            {
+             before(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_0_2_2_0()); 
+            pushFollow(FOLLOW_ruleImportSection_in_rule__EtsiBnf__ImportSectionAssignment_0_2_27742);
+            ruleImportSection();
+
+            state._fsp--;
+
+             after(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_0_2_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__ImportSectionAssignment_0_2_2"
+
+
+    // $ANTLR start "rule__EtsiBnf__BnfEntryAssignment_0_2_3"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3832:1: rule__EtsiBnf__BnfEntryAssignment_0_2_3 : ( ruleBnfEntry ) ;
+    public final void rule__EtsiBnf__BnfEntryAssignment_0_2_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3836:1: ( ( ruleBnfEntry ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3837:1: ( ruleBnfEntry )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3837:1: ( ruleBnfEntry )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3838:1: ruleBnfEntry
+            {
+             before(grammarAccess.getEtsiBnfAccess().getBnfEntryBnfEntryParserRuleCall_0_2_3_0()); 
+            pushFollow(FOLLOW_ruleBnfEntry_in_rule__EtsiBnf__BnfEntryAssignment_0_2_37773);
+            ruleBnfEntry();
+
+            state._fsp--;
+
+             after(grammarAccess.getEtsiBnfAccess().getBnfEntryBnfEntryParserRuleCall_0_2_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__BnfEntryAssignment_0_2_3"
+
+
+    // $ANTLR start "rule__EtsiBnf__TypeAssignment_1_0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3847:1: rule__EtsiBnf__TypeAssignment_1_0 : ( ( '/delta' ) ) ;
+    public final void rule__EtsiBnf__TypeAssignment_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3851:1: ( ( ( '/delta' ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3852:1: ( ( '/delta' ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3852:1: ( ( '/delta' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3853:1: ( '/delta' )
+            {
+             before(grammarAccess.getEtsiBnfAccess().getTypeDeltaKeyword_1_0_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3854:1: ( '/delta' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3855:1: '/delta'
+            {
+             before(grammarAccess.getEtsiBnfAccess().getTypeDeltaKeyword_1_0_0()); 
+            match(input,35,FOLLOW_35_in_rule__EtsiBnf__TypeAssignment_1_07809); 
+             after(grammarAccess.getEtsiBnfAccess().getTypeDeltaKeyword_1_0_0()); 
+
+            }
+
+             after(grammarAccess.getEtsiBnfAccess().getTypeDeltaKeyword_1_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__TypeAssignment_1_0"
+
+
+    // $ANTLR start "rule__EtsiBnf__ImportSectionAssignment_1_2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3870:1: rule__EtsiBnf__ImportSectionAssignment_1_2 : ( ruleImportSection ) ;
+    public final void rule__EtsiBnf__ImportSectionAssignment_1_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3874:1: ( ( ruleImportSection ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3875:1: ( ruleImportSection )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3875:1: ( ruleImportSection )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3876:1: ruleImportSection
+            {
+             before(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_1_2_0()); 
+            pushFollow(FOLLOW_ruleImportSection_in_rule__EtsiBnf__ImportSectionAssignment_1_27848);
+            ruleImportSection();
+
+            state._fsp--;
+
+             after(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_1_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__ImportSectionAssignment_1_2"
+
+
+    // $ANTLR start "rule__EtsiBnf__DeltaEntryAssignment_1_3"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3885:1: rule__EtsiBnf__DeltaEntryAssignment_1_3 : ( ruleDeltaEntry ) ;
+    public final void rule__EtsiBnf__DeltaEntryAssignment_1_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3889:1: ( ( ruleDeltaEntry ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3890:1: ( ruleDeltaEntry )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3890:1: ( ruleDeltaEntry )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3891:1: ruleDeltaEntry
+            {
+             before(grammarAccess.getEtsiBnfAccess().getDeltaEntryDeltaEntryParserRuleCall_1_3_0()); 
+            pushFollow(FOLLOW_ruleDeltaEntry_in_rule__EtsiBnf__DeltaEntryAssignment_1_37879);
+            ruleDeltaEntry();
+
+            state._fsp--;
+
+             after(grammarAccess.getEtsiBnfAccess().getDeltaEntryDeltaEntryParserRuleCall_1_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__DeltaEntryAssignment_1_3"
+
+
+    // $ANTLR start "rule__EtsiBnf__TypeAssignment_2_0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3900:1: rule__EtsiBnf__TypeAssignment_2_0 : ( ( '/merge' ) ) ;
+    public final void rule__EtsiBnf__TypeAssignment_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3904:1: ( ( ( '/merge' ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3905:1: ( ( '/merge' ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3905:1: ( ( '/merge' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3906:1: ( '/merge' )
+            {
+             before(grammarAccess.getEtsiBnfAccess().getTypeMergeKeyword_2_0_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3907:1: ( '/merge' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3908:1: '/merge'
+            {
+             before(grammarAccess.getEtsiBnfAccess().getTypeMergeKeyword_2_0_0()); 
+            match(input,36,FOLLOW_36_in_rule__EtsiBnf__TypeAssignment_2_07915); 
+             after(grammarAccess.getEtsiBnfAccess().getTypeMergeKeyword_2_0_0()); 
+
+            }
+
+             after(grammarAccess.getEtsiBnfAccess().getTypeMergeKeyword_2_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__TypeAssignment_2_0"
+
+
+    // $ANTLR start "rule__EtsiBnf__ImportSectionAssignment_2_2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3923:1: rule__EtsiBnf__ImportSectionAssignment_2_2 : ( ruleImportSection ) ;
+    public final void rule__EtsiBnf__ImportSectionAssignment_2_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3927:1: ( ( ruleImportSection ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3928:1: ( ruleImportSection )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3928:1: ( ruleImportSection )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3929:1: ruleImportSection
+            {
+             before(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_2_2_0()); 
+            pushFollow(FOLLOW_ruleImportSection_in_rule__EtsiBnf__ImportSectionAssignment_2_27954);
+            ruleImportSection();
+
+            state._fsp--;
+
+             after(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_2_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__ImportSectionAssignment_2_2"
+
+
+    // $ANTLR start "rule__EtsiBnf__MergeEntryAssignment_2_3"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3938:1: rule__EtsiBnf__MergeEntryAssignment_2_3 : ( ruleMergeEntry ) ;
+    public final void rule__EtsiBnf__MergeEntryAssignment_2_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3942:1: ( ( ruleMergeEntry ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3943:1: ( ruleMergeEntry )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3943:1: ( ruleMergeEntry )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3944:1: ruleMergeEntry
+            {
+             before(grammarAccess.getEtsiBnfAccess().getMergeEntryMergeEntryParserRuleCall_2_3_0()); 
+            pushFollow(FOLLOW_ruleMergeEntry_in_rule__EtsiBnf__MergeEntryAssignment_2_37985);
+            ruleMergeEntry();
+
+            state._fsp--;
+
+             after(grammarAccess.getEtsiBnfAccess().getMergeEntryMergeEntryParserRuleCall_2_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EtsiBnf__MergeEntryAssignment_2_3"
+
+
+    // $ANTLR start "rule__ImportSection__ImportsAssignment"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3953:1: rule__ImportSection__ImportsAssignment : ( ruleImport ) ;
+    public final void rule__ImportSection__ImportsAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3957:1: ( ( ruleImport ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3958:1: ( ruleImport )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3958:1: ( ruleImport )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3959:1: ruleImport
+            {
+             before(grammarAccess.getImportSectionAccess().getImportsImportParserRuleCall_0()); 
+            pushFollow(FOLLOW_ruleImport_in_rule__ImportSection__ImportsAssignment8016);
+            ruleImport();
+
+            state._fsp--;
+
+             after(grammarAccess.getImportSectionAccess().getImportsImportParserRuleCall_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ImportSection__ImportsAssignment"
+
+
+    // $ANTLR start "rule__BnfEntry__SectionheaderAssignment_0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3968:1: rule__BnfEntry__SectionheaderAssignment_0 : ( ruleSectionHeading ) ;
+    public final void rule__BnfEntry__SectionheaderAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3972:1: ( ( ruleSectionHeading ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3973:1: ( ruleSectionHeading )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3973:1: ( ruleSectionHeading )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3974:1: ruleSectionHeading
+            {
+             before(grammarAccess.getBnfEntryAccess().getSectionheaderSectionHeadingParserRuleCall_0_0()); 
+            pushFollow(FOLLOW_ruleSectionHeading_in_rule__BnfEntry__SectionheaderAssignment_08047);
+            ruleSectionHeading();
+
+            state._fsp--;
+
+             after(grammarAccess.getBnfEntryAccess().getSectionheaderSectionHeadingParserRuleCall_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BnfEntry__SectionheaderAssignment_0"
+
+
+    // $ANTLR start "rule__BnfEntry__RuleAssignment_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3983:1: rule__BnfEntry__RuleAssignment_1 : ( ruleRule ) ;
+    public final void rule__BnfEntry__RuleAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3987:1: ( ( ruleRule ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3988:1: ( ruleRule )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3988:1: ( ruleRule )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3989:1: ruleRule
+            {
+             before(grammarAccess.getBnfEntryAccess().getRuleRuleParserRuleCall_1_0()); 
+            pushFollow(FOLLOW_ruleRule_in_rule__BnfEntry__RuleAssignment_18078);
+            ruleRule();
+
+            state._fsp--;
+
+             after(grammarAccess.getBnfEntryAccess().getRuleRuleParserRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BnfEntry__RuleAssignment_1"
+
+
+    // $ANTLR start "rule__DeltaEntry__RuleAssignment_0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:3998:1: rule__DeltaEntry__RuleAssignment_0 : ( ruleRule ) ;
+    public final void rule__DeltaEntry__RuleAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4002:1: ( ( ruleRule ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4003:1: ( ruleRule )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4003:1: ( ruleRule )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4004:1: ruleRule
+            {
+             before(grammarAccess.getDeltaEntryAccess().getRuleRuleParserRuleCall_0_0()); 
+            pushFollow(FOLLOW_ruleRule_in_rule__DeltaEntry__RuleAssignment_08109);
+            ruleRule();
+
+            state._fsp--;
+
+             after(grammarAccess.getDeltaEntryAccess().getRuleRuleParserRuleCall_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DeltaEntry__RuleAssignment_0"
+
+
+    // $ANTLR start "rule__DeltaEntry__SectionheaderAssignment_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4013:1: rule__DeltaEntry__SectionheaderAssignment_1 : ( ruleSectionHeading ) ;
+    public final void rule__DeltaEntry__SectionheaderAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4017:1: ( ( ruleSectionHeading ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4018:1: ( ruleSectionHeading )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4018:1: ( ruleSectionHeading )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4019:1: ruleSectionHeading
+            {
+             before(grammarAccess.getDeltaEntryAccess().getSectionheaderSectionHeadingParserRuleCall_1_0()); 
+            pushFollow(FOLLOW_ruleSectionHeading_in_rule__DeltaEntry__SectionheaderAssignment_18140);
+            ruleSectionHeading();
+
+            state._fsp--;
+
+             after(grammarAccess.getDeltaEntryAccess().getSectionheaderSectionHeadingParserRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DeltaEntry__SectionheaderAssignment_1"
+
+
+    // $ANTLR start "rule__DeltaEntry__ExtRuleAssignment_2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4028:1: rule__DeltaEntry__ExtRuleAssignment_2 : ( ruleExtRule ) ;
+    public final void rule__DeltaEntry__ExtRuleAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4032:1: ( ( ruleExtRule ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4033:1: ( ruleExtRule )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4033:1: ( ruleExtRule )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4034:1: ruleExtRule
+            {
+             before(grammarAccess.getDeltaEntryAccess().getExtRuleExtRuleParserRuleCall_2_0()); 
+            pushFollow(FOLLOW_ruleExtRule_in_rule__DeltaEntry__ExtRuleAssignment_28171);
+            ruleExtRule();
+
+            state._fsp--;
+
+             after(grammarAccess.getDeltaEntryAccess().getExtRuleExtRuleParserRuleCall_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DeltaEntry__ExtRuleAssignment_2"
+
+
+    // $ANTLR start "rule__MergeEntry__SectionheaderAssignment_0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4043:1: rule__MergeEntry__SectionheaderAssignment_0 : ( ruleSectionHeading ) ;
+    public final void rule__MergeEntry__SectionheaderAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4047:1: ( ( ruleSectionHeading ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4048:1: ( ruleSectionHeading )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4048:1: ( ruleSectionHeading )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4049:1: ruleSectionHeading
+            {
+             before(grammarAccess.getMergeEntryAccess().getSectionheaderSectionHeadingParserRuleCall_0_0()); 
+            pushFollow(FOLLOW_ruleSectionHeading_in_rule__MergeEntry__SectionheaderAssignment_08202);
+            ruleSectionHeading();
+
+            state._fsp--;
+
+             after(grammarAccess.getMergeEntryAccess().getSectionheaderSectionHeadingParserRuleCall_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MergeEntry__SectionheaderAssignment_0"
+
+
+    // $ANTLR start "rule__MergeEntry__MergeRuleAssignment_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4058:1: rule__MergeEntry__MergeRuleAssignment_1 : ( ruleMergeRule ) ;
+    public final void rule__MergeEntry__MergeRuleAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4062:1: ( ( ruleMergeRule ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4063:1: ( ruleMergeRule )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4063:1: ( ruleMergeRule )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4064:1: ruleMergeRule
+            {
+             before(grammarAccess.getMergeEntryAccess().getMergeRuleMergeRuleParserRuleCall_1_0()); 
+            pushFollow(FOLLOW_ruleMergeRule_in_rule__MergeEntry__MergeRuleAssignment_18233);
+            ruleMergeRule();
+
+            state._fsp--;
+
+             after(grammarAccess.getMergeEntryAccess().getMergeRuleMergeRuleParserRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MergeEntry__MergeRuleAssignment_1"
+
+
+    // $ANTLR start "rule__SectionHeading__SectionHeaderAssignment_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4073:1: rule__SectionHeading__SectionHeaderAssignment_1 : ( RULE_SECTIONHEADER ) ;
+    public final void rule__SectionHeading__SectionHeaderAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4077:1: ( ( RULE_SECTIONHEADER ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4078:1: ( RULE_SECTIONHEADER )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4078:1: ( RULE_SECTIONHEADER )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4079:1: RULE_SECTIONHEADER
+            {
+             before(grammarAccess.getSectionHeadingAccess().getSectionHeaderSECTIONHEADERTerminalRuleCall_1_0()); 
+            match(input,RULE_SECTIONHEADER,FOLLOW_RULE_SECTIONHEADER_in_rule__SectionHeading__SectionHeaderAssignment_18264); 
+             after(grammarAccess.getSectionHeadingAccess().getSectionHeaderSECTIONHEADERTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SectionHeading__SectionHeaderAssignment_1"
+
+
+    // $ANTLR start "rule__Import__ImportURIAssignment_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4088:1: rule__Import__ImportURIAssignment_1 : ( RULE_STRING ) ;
+    public final void rule__Import__ImportURIAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4092:1: ( ( RULE_STRING ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4093:1: ( RULE_STRING )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4093:1: ( RULE_STRING )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4094:1: RULE_STRING
+            {
+             before(grammarAccess.getImportAccess().getImportURISTRINGTerminalRuleCall_1_0()); 
+            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rule__Import__ImportURIAssignment_18295); 
+             after(grammarAccess.getImportAccess().getImportURISTRINGTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__ImportURIAssignment_1"
+
+
+    // $ANTLR start "rule__Import__GrammarTypeAssignment_2_1_0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4103:1: rule__Import__GrammarTypeAssignment_2_1_0 : ( ( 'core' ) ) ;
+    public final void rule__Import__GrammarTypeAssignment_2_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4107:1: ( ( ( 'core' ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4108:1: ( ( 'core' ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4108:1: ( ( 'core' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4109:1: ( 'core' )
+            {
+             before(grammarAccess.getImportAccess().getGrammarTypeCoreKeyword_2_1_0_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4110:1: ( 'core' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4111:1: 'core'
+            {
+             before(grammarAccess.getImportAccess().getGrammarTypeCoreKeyword_2_1_0_0()); 
+            match(input,37,FOLLOW_37_in_rule__Import__GrammarTypeAssignment_2_1_08331); 
+             after(grammarAccess.getImportAccess().getGrammarTypeCoreKeyword_2_1_0_0()); 
+
+            }
+
+             after(grammarAccess.getImportAccess().getGrammarTypeCoreKeyword_2_1_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__GrammarTypeAssignment_2_1_0"
+
+
+    // $ANTLR start "rule__Import__GrammarTypeAssignment_2_1_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4126:1: rule__Import__GrammarTypeAssignment_2_1_1 : ( ( 'package' ) ) ;
+    public final void rule__Import__GrammarTypeAssignment_2_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4130:1: ( ( ( 'package' ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4131:1: ( ( 'package' ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4131:1: ( ( 'package' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4132:1: ( 'package' )
+            {
+             before(grammarAccess.getImportAccess().getGrammarTypePackageKeyword_2_1_1_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4133:1: ( 'package' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4134:1: 'package'
+            {
+             before(grammarAccess.getImportAccess().getGrammarTypePackageKeyword_2_1_1_0()); 
+            match(input,38,FOLLOW_38_in_rule__Import__GrammarTypeAssignment_2_1_18375); 
+             after(grammarAccess.getImportAccess().getGrammarTypePackageKeyword_2_1_1_0()); 
+
+            }
+
+             after(grammarAccess.getImportAccess().getGrammarTypePackageKeyword_2_1_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__GrammarTypeAssignment_2_1_1"
+
+
+    // $ANTLR start "rule__Import__GrammarTypeAssignment_2_1_2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4149:1: rule__Import__GrammarTypeAssignment_2_1_2 : ( ( 'update' ) ) ;
+    public final void rule__Import__GrammarTypeAssignment_2_1_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4153:1: ( ( ( 'update' ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4154:1: ( ( 'update' ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4154:1: ( ( 'update' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4155:1: ( 'update' )
+            {
+             before(grammarAccess.getImportAccess().getGrammarTypeUpdateKeyword_2_1_2_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4156:1: ( 'update' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4157:1: 'update'
+            {
+             before(grammarAccess.getImportAccess().getGrammarTypeUpdateKeyword_2_1_2_0()); 
+            match(input,39,FOLLOW_39_in_rule__Import__GrammarTypeAssignment_2_1_28419); 
+             after(grammarAccess.getImportAccess().getGrammarTypeUpdateKeyword_2_1_2_0()); 
+
+            }
+
+             after(grammarAccess.getImportAccess().getGrammarTypeUpdateKeyword_2_1_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__GrammarTypeAssignment_2_1_2"
+
+
+    // $ANTLR start "rule__Import__LabelAssignment_3_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4172:1: rule__Import__LabelAssignment_3_1 : ( RULE_ID ) ;
+    public final void rule__Import__LabelAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4176:1: ( ( RULE_ID ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4177:1: ( RULE_ID )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4177:1: ( RULE_ID )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4178:1: RULE_ID
+            {
+             before(grammarAccess.getImportAccess().getLabelIDTerminalRuleCall_3_1_0()); 
+            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Import__LabelAssignment_3_18458); 
+             after(grammarAccess.getImportAccess().getLabelIDTerminalRuleCall_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Import__LabelAssignment_3_1"
+
+
+    // $ANTLR start "rule__Rule__RulenumberAssignment_0_0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4187:1: rule__Rule__RulenumberAssignment_0_0 : ( RULE_INT ) ;
+    public final void rule__Rule__RulenumberAssignment_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4191:1: ( ( RULE_INT ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4192:1: ( RULE_INT )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4192:1: ( RULE_INT )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4193:1: RULE_INT
+            {
+             before(grammarAccess.getRuleAccess().getRulenumberINTTerminalRuleCall_0_0_0()); 
+            match(input,RULE_INT,FOLLOW_RULE_INT_in_rule__Rule__RulenumberAssignment_0_08489); 
+             after(grammarAccess.getRuleAccess().getRulenumberINTTerminalRuleCall_0_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__RulenumberAssignment_0_0"
+
+
+    // $ANTLR start "rule__Rule__RulevariantAssignment_0_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4202:1: rule__Rule__RulevariantAssignment_0_1 : ( RULE_ID ) ;
+    public final void rule__Rule__RulevariantAssignment_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4206:1: ( ( RULE_ID ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4207:1: ( RULE_ID )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4207:1: ( RULE_ID )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4208:1: RULE_ID
+            {
+             before(grammarAccess.getRuleAccess().getRulevariantIDTerminalRuleCall_0_1_0()); 
+            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Rule__RulevariantAssignment_0_18520); 
+             after(grammarAccess.getRuleAccess().getRulevariantIDTerminalRuleCall_0_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__RulevariantAssignment_0_1"
+
+
+    // $ANTLR start "rule__Rule__NameAssignment_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4217:1: rule__Rule__NameAssignment_1 : ( RULE_ID ) ;
+    public final void rule__Rule__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4221:1: ( ( RULE_ID ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4222:1: ( RULE_ID )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4222:1: ( RULE_ID )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4223:1: RULE_ID
+            {
+             before(grammarAccess.getRuleAccess().getNameIDTerminalRuleCall_1_0()); 
+            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Rule__NameAssignment_18551); 
+             after(grammarAccess.getRuleAccess().getNameIDTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__NameAssignment_1"
+
+
+    // $ANTLR start "rule__Rule__DefinitionListAssignment_3"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4232:1: rule__Rule__DefinitionListAssignment_3 : ( ruleDefinitionList ) ;
+    public final void rule__Rule__DefinitionListAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4236:1: ( ( ruleDefinitionList ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4237:1: ( ruleDefinitionList )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4237:1: ( ruleDefinitionList )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4238:1: ruleDefinitionList
+            {
+             before(grammarAccess.getRuleAccess().getDefinitionListDefinitionListParserRuleCall_3_0()); 
+            pushFollow(FOLLOW_ruleDefinitionList_in_rule__Rule__DefinitionListAssignment_38582);
+            ruleDefinitionList();
+
+            state._fsp--;
+
+             after(grammarAccess.getRuleAccess().getDefinitionListDefinitionListParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Rule__DefinitionListAssignment_3"
+
+
+    // $ANTLR start "rule__ExtRule__RulenumberAssignment_0_0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4247:1: rule__ExtRule__RulenumberAssignment_0_0 : ( RULE_INT ) ;
+    public final void rule__ExtRule__RulenumberAssignment_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4251:1: ( ( RULE_INT ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4252:1: ( RULE_INT )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4252:1: ( RULE_INT )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4253:1: RULE_INT
+            {
+             before(grammarAccess.getExtRuleAccess().getRulenumberINTTerminalRuleCall_0_0_0()); 
+            match(input,RULE_INT,FOLLOW_RULE_INT_in_rule__ExtRule__RulenumberAssignment_0_08613); 
+             after(grammarAccess.getExtRuleAccess().getRulenumberINTTerminalRuleCall_0_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__RulenumberAssignment_0_0"
+
+
+    // $ANTLR start "rule__ExtRule__RulevariantAssignment_0_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4262:1: rule__ExtRule__RulevariantAssignment_0_1 : ( RULE_ID ) ;
+    public final void rule__ExtRule__RulevariantAssignment_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4266:1: ( ( RULE_ID ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4267:1: ( RULE_ID )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4267:1: ( RULE_ID )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4268:1: RULE_ID
+            {
+             before(grammarAccess.getExtRuleAccess().getRulevariantIDTerminalRuleCall_0_1_0()); 
+            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__ExtRule__RulevariantAssignment_0_18644); 
+             after(grammarAccess.getExtRuleAccess().getRulevariantIDTerminalRuleCall_0_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__RulevariantAssignment_0_1"
+
+
+    // $ANTLR start "rule__ExtRule__NameAssignment_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4277:1: rule__ExtRule__NameAssignment_1 : ( RULE_ID ) ;
+    public final void rule__ExtRule__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4281:1: ( ( RULE_ID ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4282:1: ( RULE_ID )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4282:1: ( RULE_ID )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4283:1: RULE_ID
+            {
+             before(grammarAccess.getExtRuleAccess().getNameIDTerminalRuleCall_1_0()); 
+            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__ExtRule__NameAssignment_18675); 
+             after(grammarAccess.getExtRuleAccess().getNameIDTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__NameAssignment_1"
+
+
+    // $ANTLR start "rule__ExtRule__RuleextAssignment_2_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4292:1: rule__ExtRule__RuleextAssignment_2_1 : ( RULE_INT ) ;
+    public final void rule__ExtRule__RuleextAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4296:1: ( ( RULE_INT ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4297:1: ( RULE_INT )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4297:1: ( RULE_INT )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4298:1: RULE_INT
+            {
+             before(grammarAccess.getExtRuleAccess().getRuleextINTTerminalRuleCall_2_1_0()); 
+            match(input,RULE_INT,FOLLOW_RULE_INT_in_rule__ExtRule__RuleextAssignment_2_18706); 
+             after(grammarAccess.getExtRuleAccess().getRuleextINTTerminalRuleCall_2_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__RuleextAssignment_2_1"
+
+
+    // $ANTLR start "rule__ExtRule__ElementsAssignment_4_0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4307:1: rule__ExtRule__ElementsAssignment_4_0 : ( ruleAtom ) ;
+    public final void rule__ExtRule__ElementsAssignment_4_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4311:1: ( ( ruleAtom ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4312:1: ( ruleAtom )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4312:1: ( ruleAtom )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4313:1: ruleAtom
+            {
+             before(grammarAccess.getExtRuleAccess().getElementsAtomParserRuleCall_4_0_0()); 
+            pushFollow(FOLLOW_ruleAtom_in_rule__ExtRule__ElementsAssignment_4_08737);
+            ruleAtom();
+
+            state._fsp--;
+
+             after(grammarAccess.getExtRuleAccess().getElementsAtomParserRuleCall_4_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExtRule__ElementsAssignment_4_0"
+
+
+    // $ANTLR start "rule__GlobalCombinator__LogicAssignment_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4322:1: rule__GlobalCombinator__LogicAssignment_1 : ( RULE_LOGIC ) ;
+    public final void rule__GlobalCombinator__LogicAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4326:1: ( ( RULE_LOGIC ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4327:1: ( RULE_LOGIC )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4327:1: ( RULE_LOGIC )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4328:1: RULE_LOGIC
+            {
+             before(grammarAccess.getGlobalCombinatorAccess().getLogicLOGICTerminalRuleCall_1_0()); 
+            match(input,RULE_LOGIC,FOLLOW_RULE_LOGIC_in_rule__GlobalCombinator__LogicAssignment_18768); 
+             after(grammarAccess.getGlobalCombinatorAccess().getLogicLOGICTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GlobalCombinator__LogicAssignment_1"
+
+
+    // $ANTLR start "rule__RuleCombinator__NameAssignment_0_2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4337:1: rule__RuleCombinator__NameAssignment_0_2 : ( RULE_ID ) ;
+    public final void rule__RuleCombinator__NameAssignment_0_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4341:1: ( ( RULE_ID ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4342:1: ( RULE_ID )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4342:1: ( RULE_ID )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4343:1: RULE_ID
+            {
+             before(grammarAccess.getRuleCombinatorAccess().getNameIDTerminalRuleCall_0_2_0()); 
+            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__RuleCombinator__NameAssignment_0_28799); 
+             after(grammarAccess.getRuleCombinatorAccess().getNameIDTerminalRuleCall_0_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__NameAssignment_0_2"
+
+
+    // $ANTLR start "rule__RuleCombinator__LogicAssignment_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4352:1: rule__RuleCombinator__LogicAssignment_1 : ( RULE_LOGIC ) ;
+    public final void rule__RuleCombinator__LogicAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4356:1: ( ( RULE_LOGIC ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4357:1: ( RULE_LOGIC )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4357:1: ( RULE_LOGIC )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4358:1: RULE_LOGIC
+            {
+             before(grammarAccess.getRuleCombinatorAccess().getLogicLOGICTerminalRuleCall_1_0()); 
+            match(input,RULE_LOGIC,FOLLOW_RULE_LOGIC_in_rule__RuleCombinator__LogicAssignment_18830); 
+             after(grammarAccess.getRuleCombinatorAccess().getLogicLOGICTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__LogicAssignment_1"
+
+
+    // $ANTLR start "rule__RuleCombinator__LABELAssignment_2_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4367:1: rule__RuleCombinator__LABELAssignment_2_1 : ( RULE_STRING ) ;
+    public final void rule__RuleCombinator__LABELAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4371:1: ( ( RULE_STRING ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4372:1: ( RULE_STRING )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4372:1: ( RULE_STRING )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4373:1: RULE_STRING
+            {
+             before(grammarAccess.getRuleCombinatorAccess().getLABELSTRINGTerminalRuleCall_2_1_0()); 
+            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rule__RuleCombinator__LABELAssignment_2_18861); 
+             after(grammarAccess.getRuleCombinatorAccess().getLABELSTRINGTerminalRuleCall_2_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleCombinator__LABELAssignment_2_1"
+
+
+    // $ANTLR start "rule__HookCombinator__NameAssignment_2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4382:1: rule__HookCombinator__NameAssignment_2 : ( RULE_ID ) ;
+    public final void rule__HookCombinator__NameAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4386:1: ( ( RULE_ID ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4387:1: ( RULE_ID )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4387:1: ( RULE_ID )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4388:1: RULE_ID
+            {
+             before(grammarAccess.getHookCombinatorAccess().getNameIDTerminalRuleCall_2_0()); 
+            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__HookCombinator__NameAssignment_28892); 
+             after(grammarAccess.getHookCombinatorAccess().getNameIDTerminalRuleCall_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__NameAssignment_2"
+
+
+    // $ANTLR start "rule__HookCombinator__RuleextAssignment_4"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4397:1: rule__HookCombinator__RuleextAssignment_4 : ( RULE_INT ) ;
+    public final void rule__HookCombinator__RuleextAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4401:1: ( ( RULE_INT ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4402:1: ( RULE_INT )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4402:1: ( RULE_INT )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4403:1: RULE_INT
+            {
+             before(grammarAccess.getHookCombinatorAccess().getRuleextINTTerminalRuleCall_4_0()); 
+            match(input,RULE_INT,FOLLOW_RULE_INT_in_rule__HookCombinator__RuleextAssignment_48923); 
+             after(grammarAccess.getHookCombinatorAccess().getRuleextINTTerminalRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__RuleextAssignment_4"
+
+
+    // $ANTLR start "rule__HookCombinator__LogicAssignment_6"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4412:1: rule__HookCombinator__LogicAssignment_6 : ( RULE_LOGIC ) ;
+    public final void rule__HookCombinator__LogicAssignment_6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4416:1: ( ( RULE_LOGIC ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4417:1: ( RULE_LOGIC )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4417:1: ( RULE_LOGIC )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4418:1: RULE_LOGIC
+            {
+             before(grammarAccess.getHookCombinatorAccess().getLogicLOGICTerminalRuleCall_6_0()); 
+            match(input,RULE_LOGIC,FOLLOW_RULE_LOGIC_in_rule__HookCombinator__LogicAssignment_68954); 
+             after(grammarAccess.getHookCombinatorAccess().getLogicLOGICTerminalRuleCall_6_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__LogicAssignment_6"
+
+
+    // $ANTLR start "rule__HookCombinator__LABELAssignment_7_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4427:1: rule__HookCombinator__LABELAssignment_7_1 : ( RULE_STRING ) ;
+    public final void rule__HookCombinator__LABELAssignment_7_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4431:1: ( ( RULE_STRING ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4432:1: ( RULE_STRING )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4432:1: ( RULE_STRING )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4433:1: RULE_STRING
+            {
+             before(grammarAccess.getHookCombinatorAccess().getLABELSTRINGTerminalRuleCall_7_1_0()); 
+            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rule__HookCombinator__LABELAssignment_7_18985); 
+             after(grammarAccess.getHookCombinatorAccess().getLABELSTRINGTerminalRuleCall_7_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HookCombinator__LABELAssignment_7_1"
+
+
+    // $ANTLR start "rule__DefinitionList__SingleDefinitionAssignment_0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4442:1: rule__DefinitionList__SingleDefinitionAssignment_0 : ( ruleSingleDefinition ) ;
+    public final void rule__DefinitionList__SingleDefinitionAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4446:1: ( ( ruleSingleDefinition ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4447:1: ( ruleSingleDefinition )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4447:1: ( ruleSingleDefinition )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4448:1: ruleSingleDefinition
+            {
+             before(grammarAccess.getDefinitionListAccess().getSingleDefinitionSingleDefinitionParserRuleCall_0_0()); 
+            pushFollow(FOLLOW_ruleSingleDefinition_in_rule__DefinitionList__SingleDefinitionAssignment_09016);
+            ruleSingleDefinition();
+
+            state._fsp--;
+
+             after(grammarAccess.getDefinitionListAccess().getSingleDefinitionSingleDefinitionParserRuleCall_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DefinitionList__SingleDefinitionAssignment_0"
+
+
+    // $ANTLR start "rule__DefinitionList__SingleDefinitionAssignment_1_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4457:1: rule__DefinitionList__SingleDefinitionAssignment_1_1 : ( ruleSingleDefinition ) ;
+    public final void rule__DefinitionList__SingleDefinitionAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4461:1: ( ( ruleSingleDefinition ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4462:1: ( ruleSingleDefinition )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4462:1: ( ruleSingleDefinition )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4463:1: ruleSingleDefinition
+            {
+             before(grammarAccess.getDefinitionListAccess().getSingleDefinitionSingleDefinitionParserRuleCall_1_1_0()); 
+            pushFollow(FOLLOW_ruleSingleDefinition_in_rule__DefinitionList__SingleDefinitionAssignment_1_19047);
+            ruleSingleDefinition();
+
+            state._fsp--;
+
+             after(grammarAccess.getDefinitionListAccess().getSingleDefinitionSingleDefinitionParserRuleCall_1_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DefinitionList__SingleDefinitionAssignment_1_1"
+
+
+    // $ANTLR start "rule__SingleDefinition__TermsAssignment"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4472:1: rule__SingleDefinition__TermsAssignment : ( ruleTerm ) ;
+    public final void rule__SingleDefinition__TermsAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4476:1: ( ( ruleTerm ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4477:1: ( ruleTerm )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4477:1: ( ruleTerm )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4478:1: ruleTerm
+            {
+             before(grammarAccess.getSingleDefinitionAccess().getTermsTermParserRuleCall_0()); 
+            pushFollow(FOLLOW_ruleTerm_in_rule__SingleDefinition__TermsAssignment9078);
+            ruleTerm();
+
+            state._fsp--;
+
+             after(grammarAccess.getSingleDefinitionAccess().getTermsTermParserRuleCall_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SingleDefinition__TermsAssignment"
+
+
+    // $ANTLR start "rule__Term__TermAtomAssignment_0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4487:1: rule__Term__TermAtomAssignment_0 : ( ruleAtom ) ;
+    public final void rule__Term__TermAtomAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4491:1: ( ( ruleAtom ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4492:1: ( ruleAtom )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4492:1: ( ruleAtom )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4493:1: ruleAtom
+            {
+             before(grammarAccess.getTermAccess().getTermAtomAtomParserRuleCall_0_0()); 
+            pushFollow(FOLLOW_ruleAtom_in_rule__Term__TermAtomAssignment_09109);
+            ruleAtom();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermAccess().getTermAtomAtomParserRuleCall_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__TermAtomAssignment_0"
+
+
+    // $ANTLR start "rule__Term__TermGroupedSequenceAssignment_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4502:1: rule__Term__TermGroupedSequenceAssignment_1 : ( ruleGroupedSequence ) ;
+    public final void rule__Term__TermGroupedSequenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4506:1: ( ( ruleGroupedSequence ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4507:1: ( ruleGroupedSequence )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4507:1: ( ruleGroupedSequence )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4508:1: ruleGroupedSequence
+            {
+             before(grammarAccess.getTermAccess().getTermGroupedSequenceGroupedSequenceParserRuleCall_1_0()); 
+            pushFollow(FOLLOW_ruleGroupedSequence_in_rule__Term__TermGroupedSequenceAssignment_19140);
+            ruleGroupedSequence();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermAccess().getTermGroupedSequenceGroupedSequenceParserRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__TermGroupedSequenceAssignment_1"
+
+
+    // $ANTLR start "rule__Term__TermOptionalSequenceAssignment_2"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4517:1: rule__Term__TermOptionalSequenceAssignment_2 : ( ruleOptionalSequence ) ;
+    public final void rule__Term__TermOptionalSequenceAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4521:1: ( ( ruleOptionalSequence ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4522:1: ( ruleOptionalSequence )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4522:1: ( ruleOptionalSequence )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4523:1: ruleOptionalSequence
+            {
+             before(grammarAccess.getTermAccess().getTermOptionalSequenceOptionalSequenceParserRuleCall_2_0()); 
+            pushFollow(FOLLOW_ruleOptionalSequence_in_rule__Term__TermOptionalSequenceAssignment_29171);
+            ruleOptionalSequence();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermAccess().getTermOptionalSequenceOptionalSequenceParserRuleCall_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__TermOptionalSequenceAssignment_2"
+
+
+    // $ANTLR start "rule__Term__TermRepeatedSequenceAssignment_3"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4532:1: rule__Term__TermRepeatedSequenceAssignment_3 : ( ruleRepeatedSequence ) ;
+    public final void rule__Term__TermRepeatedSequenceAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4536:1: ( ( ruleRepeatedSequence ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4537:1: ( ruleRepeatedSequence )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4537:1: ( ruleRepeatedSequence )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4538:1: ruleRepeatedSequence
+            {
+             before(grammarAccess.getTermAccess().getTermRepeatedSequenceRepeatedSequenceParserRuleCall_3_0()); 
+            pushFollow(FOLLOW_ruleRepeatedSequence_in_rule__Term__TermRepeatedSequenceAssignment_39202);
+            ruleRepeatedSequence();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermAccess().getTermRepeatedSequenceRepeatedSequenceParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__TermRepeatedSequenceAssignment_3"
+
+
+    // $ANTLR start "rule__Atom__AtomStringRuleAssignment_0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4547:1: rule__Atom__AtomStringRuleAssignment_0 : ( ruleStringRule ) ;
+    public final void rule__Atom__AtomStringRuleAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4551:1: ( ( ruleStringRule ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4552:1: ( ruleStringRule )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4552:1: ( ruleStringRule )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4553:1: ruleStringRule
+            {
+             before(grammarAccess.getAtomAccess().getAtomStringRuleStringRuleParserRuleCall_0_0()); 
+            pushFollow(FOLLOW_ruleStringRule_in_rule__Atom__AtomStringRuleAssignment_09233);
+            ruleStringRule();
+
+            state._fsp--;
+
+             after(grammarAccess.getAtomAccess().getAtomStringRuleStringRuleParserRuleCall_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Atom__AtomStringRuleAssignment_0"
+
+
+    // $ANTLR start "rule__Atom__AtomRuleReferenceAssignment_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4562:1: rule__Atom__AtomRuleReferenceAssignment_1 : ( ruleRuleReference ) ;
+    public final void rule__Atom__AtomRuleReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4566:1: ( ( ruleRuleReference ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4567:1: ( ruleRuleReference )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4567:1: ( ruleRuleReference )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4568:1: ruleRuleReference
+            {
+             before(grammarAccess.getAtomAccess().getAtomRuleReferenceRuleReferenceParserRuleCall_1_0()); 
+            pushFollow(FOLLOW_ruleRuleReference_in_rule__Atom__AtomRuleReferenceAssignment_19264);
+            ruleRuleReference();
+
+            state._fsp--;
+
+             after(grammarAccess.getAtomAccess().getAtomRuleReferenceRuleReferenceParserRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Atom__AtomRuleReferenceAssignment_1"
+
+
+    // $ANTLR start "rule__RuleReference__RulerefAssignment"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4577:1: rule__RuleReference__RulerefAssignment : ( ( RULE_ID ) ) ;
+    public final void rule__RuleReference__RulerefAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4581:1: ( ( ( RULE_ID ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4582:1: ( ( RULE_ID ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4582:1: ( ( RULE_ID ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4583:1: ( RULE_ID )
+            {
+             before(grammarAccess.getRuleReferenceAccess().getRulerefRuleCrossReference_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4584:1: ( RULE_ID )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4585:1: RULE_ID
+            {
+             before(grammarAccess.getRuleReferenceAccess().getRulerefRuleIDTerminalRuleCall_0_1()); 
+            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__RuleReference__RulerefAssignment9299); 
+             after(grammarAccess.getRuleReferenceAccess().getRulerefRuleIDTerminalRuleCall_0_1()); 
+
+            }
+
+             after(grammarAccess.getRuleReferenceAccess().getRulerefRuleCrossReference_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RuleReference__RulerefAssignment"
+
+
+    // $ANTLR start "rule__StringRule__LiteralAssignment_0"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4596:1: rule__StringRule__LiteralAssignment_0 : ( RULE_STRING ) ;
+    public final void rule__StringRule__LiteralAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4600:1: ( ( RULE_STRING ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4601:1: ( RULE_STRING )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4601:1: ( RULE_STRING )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4602:1: RULE_STRING
+            {
+             before(grammarAccess.getStringRuleAccess().getLiteralSTRINGTerminalRuleCall_0_0()); 
+            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rule__StringRule__LiteralAssignment_09334); 
+             after(grammarAccess.getStringRuleAccess().getLiteralSTRINGTerminalRuleCall_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StringRule__LiteralAssignment_0"
+
+
+    // $ANTLR start "rule__StringRule__ColonAssignment_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4611:1: rule__StringRule__ColonAssignment_1 : ( RULE_COLON ) ;
+    public final void rule__StringRule__ColonAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4615:1: ( ( RULE_COLON ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4616:1: ( RULE_COLON )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4616:1: ( RULE_COLON )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4617:1: RULE_COLON
+            {
+             before(grammarAccess.getStringRuleAccess().getColonCOLONTerminalRuleCall_1_0()); 
+            match(input,RULE_COLON,FOLLOW_RULE_COLON_in_rule__StringRule__ColonAssignment_19365); 
+             after(grammarAccess.getStringRuleAccess().getColonCOLONTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StringRule__ColonAssignment_1"
+
+
+    // $ANTLR start "rule__GroupedSequence__DefinitionListAssignment_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4626:1: rule__GroupedSequence__DefinitionListAssignment_1 : ( ruleDefinitionList ) ;
+    public final void rule__GroupedSequence__DefinitionListAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4630:1: ( ( ruleDefinitionList ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4631:1: ( ruleDefinitionList )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4631:1: ( ruleDefinitionList )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4632:1: ruleDefinitionList
+            {
+             before(grammarAccess.getGroupedSequenceAccess().getDefinitionListDefinitionListParserRuleCall_1_0()); 
+            pushFollow(FOLLOW_ruleDefinitionList_in_rule__GroupedSequence__DefinitionListAssignment_19396);
+            ruleDefinitionList();
+
+            state._fsp--;
+
+             after(grammarAccess.getGroupedSequenceAccess().getDefinitionListDefinitionListParserRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GroupedSequence__DefinitionListAssignment_1"
+
+
+    // $ANTLR start "rule__OptionalSequence__DefinitionListAssignment_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4641:1: rule__OptionalSequence__DefinitionListAssignment_1 : ( ruleDefinitionList ) ;
+    public final void rule__OptionalSequence__DefinitionListAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4645:1: ( ( ruleDefinitionList ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4646:1: ( ruleDefinitionList )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4646:1: ( ruleDefinitionList )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4647:1: ruleDefinitionList
+            {
+             before(grammarAccess.getOptionalSequenceAccess().getDefinitionListDefinitionListParserRuleCall_1_0()); 
+            pushFollow(FOLLOW_ruleDefinitionList_in_rule__OptionalSequence__DefinitionListAssignment_19427);
+            ruleDefinitionList();
+
+            state._fsp--;
+
+             after(grammarAccess.getOptionalSequenceAccess().getDefinitionListDefinitionListParserRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OptionalSequence__DefinitionListAssignment_1"
+
+
+    // $ANTLR start "rule__RepeatedSequence__DefinitionsAssignment_1"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4656:1: rule__RepeatedSequence__DefinitionsAssignment_1 : ( ruleDefinitionList ) ;
+    public final void rule__RepeatedSequence__DefinitionsAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4660:1: ( ( ruleDefinitionList ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4661:1: ( ruleDefinitionList )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4661:1: ( ruleDefinitionList )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4662:1: ruleDefinitionList
+            {
+             before(grammarAccess.getRepeatedSequenceAccess().getDefinitionsDefinitionListParserRuleCall_1_0()); 
+            pushFollow(FOLLOW_ruleDefinitionList_in_rule__RepeatedSequence__DefinitionsAssignment_19458);
+            ruleDefinitionList();
+
+            state._fsp--;
+
+             after(grammarAccess.getRepeatedSequenceAccess().getDefinitionsDefinitionListParserRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RepeatedSequence__DefinitionsAssignment_1"
+
+
+    // $ANTLR start "rule__RepeatedSequence__MorethanonceAssignment_3"
+    // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4671:1: rule__RepeatedSequence__MorethanonceAssignment_3 : ( ( '+' ) ) ;
+    public final void rule__RepeatedSequence__MorethanonceAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4675:1: ( ( ( '+' ) ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4676:1: ( ( '+' ) )
+            {
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4676:1: ( ( '+' ) )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4677:1: ( '+' )
+            {
+             before(grammarAccess.getRepeatedSequenceAccess().getMorethanoncePlusSignKeyword_3_0()); 
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4678:1: ( '+' )
+            // ../de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/internal/InternalEbnf.g:4679:1: '+'
+            {
+             before(grammarAccess.getRepeatedSequenceAccess().getMorethanoncePlusSignKeyword_3_0()); 
+            match(input,21,FOLLOW_21_in_rule__RepeatedSequence__MorethanonceAssignment_39494); 
+             after(grammarAccess.getRepeatedSequenceAccess().getMorethanoncePlusSignKeyword_3_0()); 
+
+            }
+
+             after(grammarAccess.getRepeatedSequenceAccess().getMorethanoncePlusSignKeyword_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RepeatedSequence__MorethanonceAssignment_3"
+
+    // Delegated rules
+
+
+ 
+
+    public static final BitSet FOLLOW_ruleEtsiBnf_in_entryRuleEtsiBnf61 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleEtsiBnf68 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Alternatives_in_ruleEtsiBnf94 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleImportSection_in_entryRuleImportSection121 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleImportSection128 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ImportSection__ImportsAssignment_in_ruleImportSection156 = new BitSet(new long[]{0x0000000001000002L});
+    public static final BitSet FOLLOW_rule__ImportSection__ImportsAssignment_in_ruleImportSection168 = new BitSet(new long[]{0x0000000001000002L});
+    public static final BitSet FOLLOW_ruleBnfEntry_in_entryRuleBnfEntry198 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleBnfEntry205 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__BnfEntry__Alternatives_in_ruleBnfEntry231 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleDeltaEntry_in_entryRuleDeltaEntry258 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleDeltaEntry265 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DeltaEntry__Alternatives_in_ruleDeltaEntry291 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleMergeEntry_in_entryRuleMergeEntry318 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleMergeEntry325 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__MergeEntry__Alternatives_in_ruleMergeEntry351 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleSectionHeading_in_entryRuleSectionHeading378 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleSectionHeading385 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__SectionHeading__Group__0_in_ruleSectionHeading411 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleImport_in_entryRuleImport438 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleImport445 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__Group__0_in_ruleImport471 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleRule_in_entryRuleRule498 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleRule505 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Rule__Group__0_in_ruleRule531 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleExtRule_in_entryRuleExtRule558 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleExtRule565 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group__0_in_ruleExtRule591 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleMergeRule_in_entryRuleMergeRule618 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleMergeRule625 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__MergeRule__Alternatives_in_ruleMergeRule651 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleGlobalCombinator_in_entryRuleGlobalCombinator678 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleGlobalCombinator685 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__GlobalCombinator__Group__0_in_ruleGlobalCombinator711 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleRuleCombinator_in_entryRuleRuleCombinator738 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleRuleCombinator745 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group__0_in_ruleRuleCombinator771 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleHookCombinator_in_entryRuleHookCombinator798 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleHookCombinator805 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__0_in_ruleHookCombinator831 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleDefinitionList_in_entryRuleDefinitionList858 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleDefinitionList865 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DefinitionList__Group__0_in_ruleDefinitionList891 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleSingleDefinition_in_entryRuleSingleDefinition918 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleSingleDefinition925 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__SingleDefinition__TermsAssignment_in_ruleSingleDefinition953 = new BitSet(new long[]{0x00000000000E0252L});
+    public static final BitSet FOLLOW_rule__SingleDefinition__TermsAssignment_in_ruleSingleDefinition965 = new BitSet(new long[]{0x00000000000E0252L});
+    public static final BitSet FOLLOW_ruleTerm_in_entryRuleTerm995 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleTerm1002 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Term__Alternatives_in_ruleTerm1028 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleAtom_in_entryRuleAtom1055 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleAtom1062 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Atom__Alternatives_in_ruleAtom1088 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleRuleReference_in_entryRuleRuleReference1115 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleRuleReference1122 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RuleReference__RulerefAssignment_in_ruleRuleReference1148 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleStringRule_in_entryRuleStringRule1175 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleStringRule1182 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__StringRule__Alternatives_in_ruleStringRule1208 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleGroupedSequence_in_entryRuleGroupedSequence1235 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleGroupedSequence1242 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__GroupedSequence__Group__0_in_ruleGroupedSequence1268 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleOptionalSequence_in_entryRuleOptionalSequence1295 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleOptionalSequence1302 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__OptionalSequence__Group__0_in_ruleOptionalSequence1328 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleRepeatedSequence_in_entryRuleRepeatedSequence1355 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleRepeatedSequence1362 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RepeatedSequence__Group__0_in_ruleRepeatedSequence1388 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_0__0_in_rule__EtsiBnf__Alternatives1424 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_1__0_in_rule__EtsiBnf__Alternatives1442 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_2__0_in_rule__EtsiBnf__Alternatives1460 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__BnfEntry__SectionheaderAssignment_0_in_rule__BnfEntry__Alternatives1493 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__BnfEntry__RuleAssignment_1_in_rule__BnfEntry__Alternatives1511 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DeltaEntry__RuleAssignment_0_in_rule__DeltaEntry__Alternatives1544 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DeltaEntry__SectionheaderAssignment_1_in_rule__DeltaEntry__Alternatives1562 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DeltaEntry__ExtRuleAssignment_2_in_rule__DeltaEntry__Alternatives1580 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__MergeEntry__SectionheaderAssignment_0_in_rule__MergeEntry__Alternatives1613 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__MergeEntry__MergeRuleAssignment_1_in_rule__MergeEntry__Alternatives1631 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__GrammarTypeAssignment_2_1_0_in_rule__Import__Alternatives_2_11664 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__GrammarTypeAssignment_2_1_1_in_rule__Import__Alternatives_2_11682 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__GrammarTypeAssignment_2_1_2_in_rule__Import__Alternatives_2_11700 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__ElementsAssignment_4_0_in_rule__ExtRule__Alternatives_41733 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_13_in_rule__ExtRule__Alternatives_41752 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_14_in_rule__ExtRule__Alternatives_41772 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_15_in_rule__ExtRule__Alternatives_41792 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_16_in_rule__ExtRule__Alternatives_41812 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_17_in_rule__ExtRule__Alternatives_41832 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_18_in_rule__ExtRule__Alternatives_41852 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_19_in_rule__ExtRule__Alternatives_41872 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_20_in_rule__ExtRule__Alternatives_41892 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_21_in_rule__ExtRule__Alternatives_41912 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleGlobalCombinator_in_rule__MergeRule__Alternatives1946 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleRuleCombinator_in_rule__MergeRule__Alternatives1963 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleHookCombinator_in_rule__MergeRule__Alternatives1980 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Term__TermAtomAssignment_0_in_rule__Term__Alternatives2012 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Term__TermGroupedSequenceAssignment_1_in_rule__Term__Alternatives2030 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Term__TermOptionalSequenceAssignment_2_in_rule__Term__Alternatives2048 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Term__TermRepeatedSequenceAssignment_3_in_rule__Term__Alternatives2066 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Atom__AtomStringRuleAssignment_0_in_rule__Atom__Alternatives2099 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Atom__AtomRuleReferenceAssignment_1_in_rule__Atom__Alternatives2117 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__StringRule__LiteralAssignment_0_in_rule__StringRule__Alternatives2150 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__StringRule__ColonAssignment_1_in_rule__StringRule__Alternatives2168 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_0__0__Impl_in_rule__EtsiBnf__Group_0__02199 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_0__1_in_rule__EtsiBnf__Group_0__02202 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_22_in_rule__EtsiBnf__Group_0__0__Impl2230 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_0__1__Impl_in_rule__EtsiBnf__Group_0__12261 = new BitSet(new long[]{0x0000000400800000L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_0__2_in_rule__EtsiBnf__Group_0__12264 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__NameAssignment_0_1_in_rule__EtsiBnf__Group_0__1__Impl2291 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_0__2__Impl_in_rule__EtsiBnf__Group_0__22321 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_0_2__0_in_rule__EtsiBnf__Group_0__2__Impl2348 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_0_2__0__Impl_in_rule__EtsiBnf__Group_0_2__02384 = new BitSet(new long[]{0x0000000400800000L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_0_2__1_in_rule__EtsiBnf__Group_0_2__02387 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__TypeAssignment_0_2_0_in_rule__EtsiBnf__Group_0_2__0__Impl2414 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_0_2__1__Impl_in_rule__EtsiBnf__Group_0_2__12445 = new BitSet(new long[]{0x00000000010000B0L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_0_2__2_in_rule__EtsiBnf__Group_0_2__12448 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_rule__EtsiBnf__Group_0_2__1__Impl2476 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_0_2__2__Impl_in_rule__EtsiBnf__Group_0_2__22507 = new BitSet(new long[]{0x00000000010000B0L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_0_2__3_in_rule__EtsiBnf__Group_0_2__22510 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__ImportSectionAssignment_0_2_2_in_rule__EtsiBnf__Group_0_2__2__Impl2537 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_0_2__3__Impl_in_rule__EtsiBnf__Group_0_2__32568 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__BnfEntryAssignment_0_2_3_in_rule__EtsiBnf__Group_0_2__3__Impl2597 = new BitSet(new long[]{0x00000000010000B2L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__BnfEntryAssignment_0_2_3_in_rule__EtsiBnf__Group_0_2__3__Impl2609 = new BitSet(new long[]{0x00000000010000B2L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_1__0__Impl_in_rule__EtsiBnf__Group_1__02650 = new BitSet(new long[]{0x0000000000800000L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_1__1_in_rule__EtsiBnf__Group_1__02653 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__TypeAssignment_1_0_in_rule__EtsiBnf__Group_1__0__Impl2680 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_1__1__Impl_in_rule__EtsiBnf__Group_1__12710 = new BitSet(new long[]{0x00000000010000B0L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_1__2_in_rule__EtsiBnf__Group_1__12713 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_rule__EtsiBnf__Group_1__1__Impl2741 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_1__2__Impl_in_rule__EtsiBnf__Group_1__22772 = new BitSet(new long[]{0x00000000010000B0L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_1__3_in_rule__EtsiBnf__Group_1__22775 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__ImportSectionAssignment_1_2_in_rule__EtsiBnf__Group_1__2__Impl2802 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_1__3__Impl_in_rule__EtsiBnf__Group_1__32833 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__DeltaEntryAssignment_1_3_in_rule__EtsiBnf__Group_1__3__Impl2860 = new BitSet(new long[]{0x00000000010000B2L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_2__0__Impl_in_rule__EtsiBnf__Group_2__02899 = new BitSet(new long[]{0x0000000000800000L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_2__1_in_rule__EtsiBnf__Group_2__02902 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__TypeAssignment_2_0_in_rule__EtsiBnf__Group_2__0__Impl2929 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_2__1__Impl_in_rule__EtsiBnf__Group_2__12959 = new BitSet(new long[]{0x0000000341000020L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_2__2_in_rule__EtsiBnf__Group_2__12962 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_rule__EtsiBnf__Group_2__1__Impl2990 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_2__2__Impl_in_rule__EtsiBnf__Group_2__23021 = new BitSet(new long[]{0x0000000341000020L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_2__3_in_rule__EtsiBnf__Group_2__23024 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__ImportSectionAssignment_2_2_in_rule__EtsiBnf__Group_2__2__Impl3051 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__Group_2__3__Impl_in_rule__EtsiBnf__Group_2__33082 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__EtsiBnf__MergeEntryAssignment_2_3_in_rule__EtsiBnf__Group_2__3__Impl3109 = new BitSet(new long[]{0x0000000340000022L});
+    public static final BitSet FOLLOW_rule__SectionHeading__Group__0__Impl_in_rule__SectionHeading__Group__03148 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_rule__SectionHeading__Group__1_in_rule__SectionHeading__Group__03151 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__SectionHeading__Group__1__Impl_in_rule__SectionHeading__Group__13209 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__SectionHeading__SectionHeaderAssignment_1_in_rule__SectionHeading__Group__1__Impl3236 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__Group__0__Impl_in_rule__Import__Group__03270 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_rule__Import__Group__1_in_rule__Import__Group__03273 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_24_in_rule__Import__Group__0__Impl3301 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__Group__1__Impl_in_rule__Import__Group__13332 = new BitSet(new long[]{0x0000000006800000L});
+    public static final BitSet FOLLOW_rule__Import__Group__2_in_rule__Import__Group__13335 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__ImportURIAssignment_1_in_rule__Import__Group__1__Impl3362 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__Group__2__Impl_in_rule__Import__Group__23392 = new BitSet(new long[]{0x0000000006800000L});
+    public static final BitSet FOLLOW_rule__Import__Group__3_in_rule__Import__Group__23395 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__Group_2__0_in_rule__Import__Group__2__Impl3422 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__Group__3__Impl_in_rule__Import__Group__33453 = new BitSet(new long[]{0x0000000006800000L});
+    public static final BitSet FOLLOW_rule__Import__Group__4_in_rule__Import__Group__33456 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__Group_3__0_in_rule__Import__Group__3__Impl3483 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__Group__4__Impl_in_rule__Import__Group__43514 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_rule__Import__Group__4__Impl3542 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__Group_2__0__Impl_in_rule__Import__Group_2__03583 = new BitSet(new long[]{0x000000E000000000L});
+    public static final BitSet FOLLOW_rule__Import__Group_2__1_in_rule__Import__Group_2__03586 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_25_in_rule__Import__Group_2__0__Impl3614 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__Group_2__1__Impl_in_rule__Import__Group_2__13645 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__Alternatives_2_1_in_rule__Import__Group_2__1__Impl3672 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__Group_3__0__Impl_in_rule__Import__Group_3__03706 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_rule__Import__Group_3__1_in_rule__Import__Group_3__03709 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_26_in_rule__Import__Group_3__0__Impl3737 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__Group_3__1__Impl_in_rule__Import__Group_3__13768 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Import__LabelAssignment_3_1_in_rule__Import__Group_3__1__Impl3795 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Rule__Group__0__Impl_in_rule__Rule__Group__03829 = new BitSet(new long[]{0x00000000010000B0L});
+    public static final BitSet FOLLOW_rule__Rule__Group__1_in_rule__Rule__Group__03832 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Rule__Group_0__0_in_rule__Rule__Group__0__Impl3859 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Rule__Group__1__Impl_in_rule__Rule__Group__13890 = new BitSet(new long[]{0x0000000008000000L});
+    public static final BitSet FOLLOW_rule__Rule__Group__2_in_rule__Rule__Group__13893 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Rule__NameAssignment_1_in_rule__Rule__Group__1__Impl3920 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Rule__Group__2__Impl_in_rule__Rule__Group__23950 = new BitSet(new long[]{0x00000000008E0250L});
+    public static final BitSet FOLLOW_rule__Rule__Group__3_in_rule__Rule__Group__23953 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_27_in_rule__Rule__Group__2__Impl3981 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Rule__Group__3__Impl_in_rule__Rule__Group__34012 = new BitSet(new long[]{0x00000000008E0250L});
+    public static final BitSet FOLLOW_rule__Rule__Group__4_in_rule__Rule__Group__34015 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Rule__DefinitionListAssignment_3_in_rule__Rule__Group__3__Impl4042 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Rule__Group__4__Impl_in_rule__Rule__Group__44073 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_rule__Rule__Group__4__Impl4102 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Rule__Group_0__0__Impl_in_rule__Rule__Group_0__04145 = new BitSet(new long[]{0x0000000010000010L});
+    public static final BitSet FOLLOW_rule__Rule__Group_0__1_in_rule__Rule__Group_0__04148 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Rule__RulenumberAssignment_0_0_in_rule__Rule__Group_0__0__Impl4175 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Rule__Group_0__1__Impl_in_rule__Rule__Group_0__14205 = new BitSet(new long[]{0x0000000010000010L});
+    public static final BitSet FOLLOW_rule__Rule__Group_0__2_in_rule__Rule__Group_0__14208 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Rule__RulevariantAssignment_0_1_in_rule__Rule__Group_0__1__Impl4235 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Rule__Group_0__2__Impl_in_rule__Rule__Group_0__24266 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_rule__Rule__Group_0__2__Impl4294 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group__0__Impl_in_rule__ExtRule__Group__04331 = new BitSet(new long[]{0x00000000010000B0L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group__1_in_rule__ExtRule__Group__04334 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group_0__0_in_rule__ExtRule__Group__0__Impl4361 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group__1__Impl_in_rule__ExtRule__Group__14392 = new BitSet(new long[]{0x0000000000020000L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group__2_in_rule__ExtRule__Group__14395 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__NameAssignment_1_in_rule__ExtRule__Group__1__Impl4422 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group__2__Impl_in_rule__ExtRule__Group__24452 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group__3_in_rule__ExtRule__Group__24455 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group_2__0_in_rule__ExtRule__Group__2__Impl4482 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group__3__Impl_in_rule__ExtRule__Group__34512 = new BitSet(new long[]{0x0000000000BFE250L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group__4_in_rule__ExtRule__Group__34515 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_29_in_rule__ExtRule__Group__3__Impl4543 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group__4__Impl_in_rule__ExtRule__Group__44574 = new BitSet(new long[]{0x0000000000BFE250L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group__5_in_rule__ExtRule__Group__44577 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__Alternatives_4_in_rule__ExtRule__Group__4__Impl4604 = new BitSet(new long[]{0x00000000003FE252L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group__5__Impl_in_rule__ExtRule__Group__54635 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_rule__ExtRule__Group__5__Impl4664 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group_0__0__Impl_in_rule__ExtRule__Group_0__04709 = new BitSet(new long[]{0x0000000010000010L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group_0__1_in_rule__ExtRule__Group_0__04712 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__RulenumberAssignment_0_0_in_rule__ExtRule__Group_0__0__Impl4739 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group_0__1__Impl_in_rule__ExtRule__Group_0__14769 = new BitSet(new long[]{0x0000000010000010L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group_0__2_in_rule__ExtRule__Group_0__14772 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__RulevariantAssignment_0_1_in_rule__ExtRule__Group_0__1__Impl4799 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group_0__2__Impl_in_rule__ExtRule__Group_0__24830 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_rule__ExtRule__Group_0__2__Impl4858 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group_2__0__Impl_in_rule__ExtRule__Group_2__04895 = new BitSet(new long[]{0x0000000000000080L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group_2__1_in_rule__ExtRule__Group_2__04898 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_17_in_rule__ExtRule__Group_2__0__Impl4926 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group_2__1__Impl_in_rule__ExtRule__Group_2__14957 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group_2__2_in_rule__ExtRule__Group_2__14960 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__RuleextAssignment_2_1_in_rule__ExtRule__Group_2__1__Impl4987 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__ExtRule__Group_2__2__Impl_in_rule__ExtRule__Group_2__25017 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_13_in_rule__ExtRule__Group_2__2__Impl5045 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__GlobalCombinator__Group__0__Impl_in_rule__GlobalCombinator__Group__05082 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_rule__GlobalCombinator__Group__1_in_rule__GlobalCombinator__Group__05085 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__GlobalCombinator__Group_0__0_in_rule__GlobalCombinator__Group__0__Impl5112 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__GlobalCombinator__Group__1__Impl_in_rule__GlobalCombinator__Group__15142 = new BitSet(new long[]{0x0000000000800000L});
+    public static final BitSet FOLLOW_rule__GlobalCombinator__Group__2_in_rule__GlobalCombinator__Group__15145 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__GlobalCombinator__LogicAssignment_1_in_rule__GlobalCombinator__Group__1__Impl5172 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__GlobalCombinator__Group__2__Impl_in_rule__GlobalCombinator__Group__25202 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_rule__GlobalCombinator__Group__2__Impl5231 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__GlobalCombinator__Group_0__0__Impl_in_rule__GlobalCombinator__Group_0__05270 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_rule__GlobalCombinator__Group_0__1_in_rule__GlobalCombinator__Group_0__05273 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_30_in_rule__GlobalCombinator__Group_0__0__Impl5301 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__GlobalCombinator__Group_0__1__Impl_in_rule__GlobalCombinator__Group_0__15332 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_31_in_rule__GlobalCombinator__Group_0__1__Impl5360 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group__0__Impl_in_rule__RuleCombinator__Group__05395 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group__1_in_rule__RuleCombinator__Group__05398 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group_0__0_in_rule__RuleCombinator__Group__0__Impl5425 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group__1__Impl_in_rule__RuleCombinator__Group__15455 = new BitSet(new long[]{0x0000000000820000L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group__2_in_rule__RuleCombinator__Group__15458 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__LogicAssignment_1_in_rule__RuleCombinator__Group__1__Impl5485 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group__2__Impl_in_rule__RuleCombinator__Group__25515 = new BitSet(new long[]{0x0000000000820000L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group__3_in_rule__RuleCombinator__Group__25518 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group_2__0_in_rule__RuleCombinator__Group__2__Impl5545 = new BitSet(new long[]{0x0000000000020002L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group__3__Impl_in_rule__RuleCombinator__Group__35576 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_rule__RuleCombinator__Group__3__Impl5605 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group_0__0__Impl_in_rule__RuleCombinator__Group_0__05646 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group_0__1_in_rule__RuleCombinator__Group_0__05649 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_32_in_rule__RuleCombinator__Group_0__0__Impl5677 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group_0__1__Impl_in_rule__RuleCombinator__Group_0__15708 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group_0__2_in_rule__RuleCombinator__Group_0__15711 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_31_in_rule__RuleCombinator__Group_0__1__Impl5739 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group_0__2__Impl_in_rule__RuleCombinator__Group_0__25770 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__NameAssignment_0_2_in_rule__RuleCombinator__Group_0__2__Impl5797 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group_2__0__Impl_in_rule__RuleCombinator__Group_2__05833 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group_2__1_in_rule__RuleCombinator__Group_2__05836 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_17_in_rule__RuleCombinator__Group_2__0__Impl5864 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group_2__1__Impl_in_rule__RuleCombinator__Group_2__15895 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group_2__2_in_rule__RuleCombinator__Group_2__15898 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__LABELAssignment_2_1_in_rule__RuleCombinator__Group_2__1__Impl5925 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RuleCombinator__Group_2__2__Impl_in_rule__RuleCombinator__Group_2__25955 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_13_in_rule__RuleCombinator__Group_2__2__Impl5983 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__0__Impl_in_rule__HookCombinator__Group__06020 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__1_in_rule__HookCombinator__Group__06023 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_33_in_rule__HookCombinator__Group__0__Impl6051 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__1__Impl_in_rule__HookCombinator__Group__16082 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__2_in_rule__HookCombinator__Group__16085 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_31_in_rule__HookCombinator__Group__1__Impl6113 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__2__Impl_in_rule__HookCombinator__Group__26144 = new BitSet(new long[]{0x0000000000020000L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__3_in_rule__HookCombinator__Group__26147 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__NameAssignment_2_in_rule__HookCombinator__Group__2__Impl6174 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__3__Impl_in_rule__HookCombinator__Group__36204 = new BitSet(new long[]{0x0000000000000080L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__4_in_rule__HookCombinator__Group__36207 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_17_in_rule__HookCombinator__Group__3__Impl6235 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__4__Impl_in_rule__HookCombinator__Group__46266 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__5_in_rule__HookCombinator__Group__46269 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__RuleextAssignment_4_in_rule__HookCombinator__Group__4__Impl6296 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__5__Impl_in_rule__HookCombinator__Group__56326 = new BitSet(new long[]{0x0000000000020100L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__6_in_rule__HookCombinator__Group__56329 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_13_in_rule__HookCombinator__Group__5__Impl6357 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__6__Impl_in_rule__HookCombinator__Group__66388 = new BitSet(new long[]{0x0000000000020100L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__7_in_rule__HookCombinator__Group__66391 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__LogicAssignment_6_in_rule__HookCombinator__Group__6__Impl6418 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__7__Impl_in_rule__HookCombinator__Group__76449 = new BitSet(new long[]{0x0000000000800000L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__8_in_rule__HookCombinator__Group__76452 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group_7__0_in_rule__HookCombinator__Group__7__Impl6481 = new BitSet(new long[]{0x0000000000020102L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group_7__0_in_rule__HookCombinator__Group__7__Impl6493 = new BitSet(new long[]{0x0000000000020102L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group__8__Impl_in_rule__HookCombinator__Group__86526 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_rule__HookCombinator__Group__8__Impl6555 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group_7__0__Impl_in_rule__HookCombinator__Group_7__06606 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group_7__1_in_rule__HookCombinator__Group_7__06609 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_17_in_rule__HookCombinator__Group_7__0__Impl6637 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group_7__1__Impl_in_rule__HookCombinator__Group_7__16668 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group_7__2_in_rule__HookCombinator__Group_7__16671 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__LABELAssignment_7_1_in_rule__HookCombinator__Group_7__1__Impl6698 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__HookCombinator__Group_7__2__Impl_in_rule__HookCombinator__Group_7__26728 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_13_in_rule__HookCombinator__Group_7__2__Impl6756 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DefinitionList__Group__0__Impl_in_rule__DefinitionList__Group__06793 = new BitSet(new long[]{0x0000000000010000L});
+    public static final BitSet FOLLOW_rule__DefinitionList__Group__1_in_rule__DefinitionList__Group__06796 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DefinitionList__SingleDefinitionAssignment_0_in_rule__DefinitionList__Group__0__Impl6823 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DefinitionList__Group__1__Impl_in_rule__DefinitionList__Group__16853 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DefinitionList__Group_1__0_in_rule__DefinitionList__Group__1__Impl6880 = new BitSet(new long[]{0x0000000000010002L});
+    public static final BitSet FOLLOW_rule__DefinitionList__Group_1__0__Impl_in_rule__DefinitionList__Group_1__06915 = new BitSet(new long[]{0x00000000000E0250L});
+    public static final BitSet FOLLOW_rule__DefinitionList__Group_1__1_in_rule__DefinitionList__Group_1__06918 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_16_in_rule__DefinitionList__Group_1__0__Impl6946 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DefinitionList__Group_1__1__Impl_in_rule__DefinitionList__Group_1__16977 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DefinitionList__SingleDefinitionAssignment_1_1_in_rule__DefinitionList__Group_1__1__Impl7004 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__GroupedSequence__Group__0__Impl_in_rule__GroupedSequence__Group__07038 = new BitSet(new long[]{0x00000000000E0250L});
+    public static final BitSet FOLLOW_rule__GroupedSequence__Group__1_in_rule__GroupedSequence__Group__07041 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_17_in_rule__GroupedSequence__Group__0__Impl7069 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__GroupedSequence__Group__1__Impl_in_rule__GroupedSequence__Group__17100 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_rule__GroupedSequence__Group__2_in_rule__GroupedSequence__Group__17103 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__GroupedSequence__DefinitionListAssignment_1_in_rule__GroupedSequence__Group__1__Impl7130 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__GroupedSequence__Group__2__Impl_in_rule__GroupedSequence__Group__27160 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_13_in_rule__GroupedSequence__Group__2__Impl7188 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__OptionalSequence__Group__0__Impl_in_rule__OptionalSequence__Group__07225 = new BitSet(new long[]{0x00000000000E0250L});
+    public static final BitSet FOLLOW_rule__OptionalSequence__Group__1_in_rule__OptionalSequence__Group__07228 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_18_in_rule__OptionalSequence__Group__0__Impl7256 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__OptionalSequence__Group__1__Impl_in_rule__OptionalSequence__Group__17287 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_rule__OptionalSequence__Group__2_in_rule__OptionalSequence__Group__17290 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__OptionalSequence__DefinitionListAssignment_1_in_rule__OptionalSequence__Group__1__Impl7317 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__OptionalSequence__Group__2__Impl_in_rule__OptionalSequence__Group__27347 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_14_in_rule__OptionalSequence__Group__2__Impl7375 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RepeatedSequence__Group__0__Impl_in_rule__RepeatedSequence__Group__07412 = new BitSet(new long[]{0x00000000000E0250L});
+    public static final BitSet FOLLOW_rule__RepeatedSequence__Group__1_in_rule__RepeatedSequence__Group__07415 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_19_in_rule__RepeatedSequence__Group__0__Impl7443 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RepeatedSequence__Group__1__Impl_in_rule__RepeatedSequence__Group__17474 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_rule__RepeatedSequence__Group__2_in_rule__RepeatedSequence__Group__17477 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RepeatedSequence__DefinitionsAssignment_1_in_rule__RepeatedSequence__Group__1__Impl7504 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RepeatedSequence__Group__2__Impl_in_rule__RepeatedSequence__Group__27534 = new BitSet(new long[]{0x0000000000200000L});
+    public static final BitSet FOLLOW_rule__RepeatedSequence__Group__3_in_rule__RepeatedSequence__Group__27537 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_15_in_rule__RepeatedSequence__Group__2__Impl7565 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RepeatedSequence__Group__3__Impl_in_rule__RepeatedSequence__Group__37596 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__RepeatedSequence__MorethanonceAssignment_3_in_rule__RepeatedSequence__Group__3__Impl7623 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_ID_in_rule__EtsiBnf__NameAssignment_0_17667 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_34_in_rule__EtsiBnf__TypeAssignment_0_2_07703 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleImportSection_in_rule__EtsiBnf__ImportSectionAssignment_0_2_27742 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleBnfEntry_in_rule__EtsiBnf__BnfEntryAssignment_0_2_37773 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_rule__EtsiBnf__TypeAssignment_1_07809 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleImportSection_in_rule__EtsiBnf__ImportSectionAssignment_1_27848 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleDeltaEntry_in_rule__EtsiBnf__DeltaEntryAssignment_1_37879 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_36_in_rule__EtsiBnf__TypeAssignment_2_07915 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleImportSection_in_rule__EtsiBnf__ImportSectionAssignment_2_27954 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleMergeEntry_in_rule__EtsiBnf__MergeEntryAssignment_2_37985 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleImport_in_rule__ImportSection__ImportsAssignment8016 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleSectionHeading_in_rule__BnfEntry__SectionheaderAssignment_08047 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleRule_in_rule__BnfEntry__RuleAssignment_18078 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleRule_in_rule__DeltaEntry__RuleAssignment_08109 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleSectionHeading_in_rule__DeltaEntry__SectionheaderAssignment_18140 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleExtRule_in_rule__DeltaEntry__ExtRuleAssignment_28171 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleSectionHeading_in_rule__MergeEntry__SectionheaderAssignment_08202 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleMergeRule_in_rule__MergeEntry__MergeRuleAssignment_18233 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_SECTIONHEADER_in_rule__SectionHeading__SectionHeaderAssignment_18264 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_STRING_in_rule__Import__ImportURIAssignment_18295 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_37_in_rule__Import__GrammarTypeAssignment_2_1_08331 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_38_in_rule__Import__GrammarTypeAssignment_2_1_18375 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_39_in_rule__Import__GrammarTypeAssignment_2_1_28419 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_ID_in_rule__Import__LabelAssignment_3_18458 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_INT_in_rule__Rule__RulenumberAssignment_0_08489 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_ID_in_rule__Rule__RulevariantAssignment_0_18520 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_ID_in_rule__Rule__NameAssignment_18551 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleDefinitionList_in_rule__Rule__DefinitionListAssignment_38582 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_INT_in_rule__ExtRule__RulenumberAssignment_0_08613 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_ID_in_rule__ExtRule__RulevariantAssignment_0_18644 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_ID_in_rule__ExtRule__NameAssignment_18675 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_INT_in_rule__ExtRule__RuleextAssignment_2_18706 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleAtom_in_rule__ExtRule__ElementsAssignment_4_08737 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_LOGIC_in_rule__GlobalCombinator__LogicAssignment_18768 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_ID_in_rule__RuleCombinator__NameAssignment_0_28799 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_LOGIC_in_rule__RuleCombinator__LogicAssignment_18830 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_STRING_in_rule__RuleCombinator__LABELAssignment_2_18861 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_ID_in_rule__HookCombinator__NameAssignment_28892 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_INT_in_rule__HookCombinator__RuleextAssignment_48923 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_LOGIC_in_rule__HookCombinator__LogicAssignment_68954 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_STRING_in_rule__HookCombinator__LABELAssignment_7_18985 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleSingleDefinition_in_rule__DefinitionList__SingleDefinitionAssignment_09016 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleSingleDefinition_in_rule__DefinitionList__SingleDefinitionAssignment_1_19047 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleTerm_in_rule__SingleDefinition__TermsAssignment9078 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleAtom_in_rule__Term__TermAtomAssignment_09109 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleGroupedSequence_in_rule__Term__TermGroupedSequenceAssignment_19140 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleOptionalSequence_in_rule__Term__TermOptionalSequenceAssignment_29171 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleRepeatedSequence_in_rule__Term__TermRepeatedSequenceAssignment_39202 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleStringRule_in_rule__Atom__AtomStringRuleAssignment_09233 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleRuleReference_in_rule__Atom__AtomRuleReferenceAssignment_19264 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_ID_in_rule__RuleReference__RulerefAssignment9299 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_STRING_in_rule__StringRule__LiteralAssignment_09334 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_COLON_in_rule__StringRule__ColonAssignment_19365 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleDefinitionList_in_rule__GroupedSequence__DefinitionListAssignment_19396 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleDefinitionList_in_rule__OptionalSequence__DefinitionListAssignment_19427 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleDefinitionList_in_rule__RepeatedSequence__DefinitionsAssignment_19458 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_21_in_rule__RepeatedSequence__MorethanonceAssignment_39494 = new BitSet(new long[]{0x0000000000000002L});
+
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/internal/EbnfActivator.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/internal/EbnfActivator.java	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/internal/EbnfActivator.java	(revision 61)
@@ -0,0 +1,95 @@
+/*
+ * generated by Xtext
+ */
+package de.ugoe.cs.swe.bnftools.ui.internal;
+
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.shared.SharedStateModule;
+import org.eclipse.xtext.util.Modules2;
+import org.osgi.framework.BundleContext;
+
+import com.google.common.collect.Maps;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class EbnfActivator extends AbstractUIPlugin {
+	
+	public static final String DE_UGOE_CS_SWE_BNFTOOLS_EBNF = "de.ugoe.cs.swe.bnftools.Ebnf";
+	
+	private static final Logger logger = Logger.getLogger(EbnfActivator.class);
+	
+	private static EbnfActivator INSTANCE;
+	
+	private Map<String, Injector> injectors = Collections.synchronizedMap(Maps.<String, Injector> newHashMapWithExpectedSize(1));
+	
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		INSTANCE = this;
+	}
+	
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		injectors.clear();
+		INSTANCE = null;
+		super.stop(context);
+	}
+	
+	public static EbnfActivator getInstance() {
+		return INSTANCE;
+	}
+	
+	public Injector getInjector(String language) {
+		synchronized (injectors) {
+			Injector injector = injectors.get(language);
+			if (injector == null) {
+				injectors.put(language, injector = createInjector(language));
+			}
+			return injector;
+		}
+	}
+	
+	protected Injector createInjector(String language) {
+		try {
+			Module runtimeModule = getRuntimeModule(language);
+			Module sharedStateModule = getSharedStateModule();
+			Module uiModule = getUiModule(language);
+			Module mergedModule = Modules2.mixin(runtimeModule, sharedStateModule, uiModule);
+			return Guice.createInjector(mergedModule);
+		} catch (Exception e) {
+			logger.error("Failed to create injector for " + language);
+			logger.error(e.getMessage(), e);
+			throw new RuntimeException("Failed to create injector for " + language, e);
+		}
+	}
+
+	protected Module getRuntimeModule(String grammar) {
+		if (DE_UGOE_CS_SWE_BNFTOOLS_EBNF.equals(grammar)) {
+			return new de.ugoe.cs.swe.bnftools.EbnfRuntimeModule();
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (DE_UGOE_CS_SWE_BNFTOOLS_EBNF.equals(grammar)) {
+			return new de.ugoe.cs.swe.bnftools.ui.EbnfUiModule(this);
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/EbnfUiModule.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/EbnfUiModule.java	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/EbnfUiModule.java	(revision 61)
@@ -0,0 +1,15 @@
+/*
+ * generated by Xtext
+ */
+package de.ugoe.cs.swe.bnftools.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class EbnfUiModule extends de.ugoe.cs.swe.bnftools.ui.AbstractEbnfUiModule {
+	public EbnfUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/contentassist/EbnfProposalProvider.xtend
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/contentassist/EbnfProposalProvider.xtend	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/contentassist/EbnfProposalProvider.xtend	(revision 61)
@@ -0,0 +1,12 @@
+/*
+ * generated by Xtext
+ */
+package de.ugoe.cs.swe.bnftools.ui.contentassist
+
+import de.ugoe.cs.swe.bnftools.ui.contentassist.AbstractEbnfProposalProvider
+
+/**
+ * see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to customize content assistant
+ */
+class EbnfProposalProvider extends AbstractEbnfProposalProvider {
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/labeling/EbnfDescriptionLabelProvider.xtend
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/labeling/EbnfDescriptionLabelProvider.xtend	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/labeling/EbnfDescriptionLabelProvider.xtend	(revision 61)
@@ -0,0 +1,24 @@
+/*
+* generated by Xtext
+*/
+package de.ugoe.cs.swe.bnftools.ui.labeling
+
+//import org.eclipse.xtext.resource.IEObjectDescription
+
+/**
+ * Provides labels for a IEObjectDescriptions and IResourceDescriptions.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+class EbnfDescriptionLabelProvider extends org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider {
+
+	// Labels and icons can be computed like this:
+	
+//	override text(IEObjectDescription ele) {
+//		ele.name.toString
+//	}
+//	 
+//	override image(IEObjectDescription ele) {
+//		ele.EClass.name + '.gif'
+//	}	 
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/labeling/EbnfLabelProvider.xtend
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/labeling/EbnfLabelProvider.xtend	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/labeling/EbnfLabelProvider.xtend	(revision 61)
@@ -0,0 +1,29 @@
+/*
+* generated by Xtext
+*/
+package de.ugoe.cs.swe.bnftools.ui.labeling
+
+import com.google.inject.Inject
+
+/**
+ * Provides labels for a EObjects.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+class EbnfLabelProvider extends org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider {
+
+	@Inject
+	new(org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider delegate) {
+		super(delegate);
+	}
+
+	// Labels and icons can be computed like this:
+	
+//	def text(Greeting ele) {
+//		'A greeting to ' + ele.name
+//	}
+//
+//	def image(Greeting ele) {
+//		'Greeting.gif'
+//	}
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/outline/EbnfOutlineTreeProvider.xtend
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/outline/EbnfOutlineTreeProvider.xtend	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/outline/EbnfOutlineTreeProvider.xtend	(revision 61)
@@ -0,0 +1,13 @@
+/*
+* generated by Xtext
+*/
+package de.ugoe.cs.swe.bnftools.ui.outline
+
+/**
+ * Customization of the default outline structure.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#outline
+ */
+class EbnfOutlineTreeProvider extends org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider {
+	
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/quickfix/EbnfQuickfixProvider.xtend
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/quickfix/EbnfQuickfixProvider.xtend	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/quickfix/EbnfQuickfixProvider.xtend	(revision 61)
@@ -0,0 +1,42 @@
+/*
+* generated by Xtext
+*/
+package de.ugoe.cs.swe.bnftools.ui.quickfix
+
+import org.eclipse.xtext.ui.editor.quickfix.Fix
+import org.eclipse.xtext.ui.editor.quickfix.IssueResolutionAcceptor
+import org.eclipse.xtext.validation.Issue
+
+/**
+ * Custom quickfixes.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#quickfixes
+ */
+class EbnfQuickfixProvider extends org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider {
+
+
+	static final String ruleReferencedOneDescription = "The rule is only referenced by one other rule";
+	
+//	@Fix(MyDslValidator::INVALID_NAME)
+//	def capitalizeName(Issue issue, IssueResolutionAcceptor acceptor) {
+//		acceptor.accept(issue, 'Capitalize name', 'Capitalize the name.', 'upcase.png') [
+//			context |
+//			val xtextDocument = context.xtextDocument
+//			val firstLetter = xtextDocument.get(issue.offset, 1)
+//			xtextDocument.replace(issue.offset, 1, firstLetter.toUpperCase)
+//		]
+//	}
+
+
+//	@Fix(value = ruleReferencedOneDescription)
+//	def void fixInlineRuleReferencedOnce(final Issue issue, IssueResolutionAcceptor acceptor) {
+//		InlineRuleModification inlineRuleModification = new InlineRuleModification(
+//				resourceDescriptions);
+//
+//		acceptor.accept(
+//				issue,
+//				"Inline the rule",
+//				"Delete the rule and replace its single reference by the rule's right side",
+//				"upcase.png", inlineRuleModification);
+//	}
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/xtend-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/EbnfProposalProvider.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/xtend-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/EbnfProposalProvider.java	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/xtend-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/EbnfProposalProvider.java	(revision 61)
@@ -0,0 +1,13 @@
+/**
+ * generated by Xtext
+ */
+package de.ugoe.cs.swe.bnftools.ui.contentassist;
+
+import de.ugoe.cs.swe.bnftools.ui.contentassist.AbstractEbnfProposalProvider;
+
+/**
+ * see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to customize content assistant
+ */
+@SuppressWarnings("all")
+public class EbnfProposalProvider extends AbstractEbnfProposalProvider {
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/xtend-gen/de/ugoe/cs/swe/bnftools/ui/labeling/EbnfDescriptionLabelProvider.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/xtend-gen/de/ugoe/cs/swe/bnftools/ui/labeling/EbnfDescriptionLabelProvider.java	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/xtend-gen/de/ugoe/cs/swe/bnftools/ui/labeling/EbnfDescriptionLabelProvider.java	(revision 61)
@@ -0,0 +1,15 @@
+/**
+ * generated by Xtext
+ */
+package de.ugoe.cs.swe.bnftools.ui.labeling;
+
+import org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider;
+
+/**
+ * Provides labels for a IEObjectDescriptions and IResourceDescriptions.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+@SuppressWarnings("all")
+public class EbnfDescriptionLabelProvider extends DefaultDescriptionLabelProvider {
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/xtend-gen/de/ugoe/cs/swe/bnftools/ui/labeling/EbnfLabelProvider.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/xtend-gen/de/ugoe/cs/swe/bnftools/ui/labeling/EbnfLabelProvider.java	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/xtend-gen/de/ugoe/cs/swe/bnftools/ui/labeling/EbnfLabelProvider.java	(revision 61)
@@ -0,0 +1,21 @@
+/**
+ * generated by Xtext
+ */
+package de.ugoe.cs.swe.bnftools.ui.labeling;
+
+import com.google.inject.Inject;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider;
+
+/**
+ * Provides labels for a EObjects.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+@SuppressWarnings("all")
+public class EbnfLabelProvider extends DefaultEObjectLabelProvider {
+  @Inject
+  public EbnfLabelProvider(final AdapterFactoryLabelProvider delegate) {
+    super(delegate);
+  }
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/xtend-gen/de/ugoe/cs/swe/bnftools/ui/outline/EbnfOutlineTreeProvider.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/xtend-gen/de/ugoe/cs/swe/bnftools/ui/outline/EbnfOutlineTreeProvider.java	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/xtend-gen/de/ugoe/cs/swe/bnftools/ui/outline/EbnfOutlineTreeProvider.java	(revision 61)
@@ -0,0 +1,15 @@
+/**
+ * generated by Xtext
+ */
+package de.ugoe.cs.swe.bnftools.ui.outline;
+
+import org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider;
+
+/**
+ * Customization of the default outline structure.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#outline
+ */
+@SuppressWarnings("all")
+public class EbnfOutlineTreeProvider extends DefaultOutlineTreeProvider {
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/xtend-gen/de/ugoe/cs/swe/bnftools/ui/quickfix/EbnfQuickfixProvider.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/xtend-gen/de/ugoe/cs/swe/bnftools/ui/quickfix/EbnfQuickfixProvider.java	(revision 61)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/xtend-gen/de/ugoe/cs/swe/bnftools/ui/quickfix/EbnfQuickfixProvider.java	(revision 61)
@@ -0,0 +1,16 @@
+/**
+ * generated by Xtext
+ */
+package de.ugoe.cs.swe.bnftools.ui.quickfix;
+
+import org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider;
+
+/**
+ * Custom quickfixes.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#quickfixes
+ */
+@SuppressWarnings("all")
+public class EbnfQuickfixProvider extends DefaultQuickfixProvider {
+  private final static String ruleReferencedOneDescription = "The rule is only referenced by one other rule";
+}
