Index: unk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/AbstractEbnfUiModule.java
===================================================================
--- /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/AbstractEbnfUiModule.java	(revision 12)
+++ 	(revision )
@@ -1,122 +1,0 @@
-
-/*
- * 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.jface.text.rules.ITokenScanner> bindITokenScanner() {
-		return org.eclipse.xtext.ui.editor.syntaxcoloring.antlr.AntlrTokenScanner.class;
-	}
-
-	// 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 Class<? extends org.eclipse.xtext.ui.editor.IDamagerRepairer> bindIDamagerRepairer() {
-		return org.eclipse.xtext.ui.editor.FastDamagerRepairer.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.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.TransformerFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.outline.transformer.ISemanticModelTransformer> bindISemanticModelTransformer() {
-		return de.ugoe.cs.swe.bnftools.ui.outline.EbnfTransformer.class;
-	}
-
-	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineNodeAdapterFactoryFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.outline.actions.IContentOutlineNodeAdapterFactory> bindIContentOutlineNodeAdapterFactory() {
-		return de.ugoe.cs.swe.bnftools.ui.outline.EbnfOutlineNodeAdapterFactory.class;
-	}
-
-	// contributed by org.eclipse.xtext.ui.generator.contentAssist.JavaBasedContentAssistFragment
-	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.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.scoping.impl.AbstractGlobalScopeProvider.NAMED_BUILDER_SCOPE)).to(org.eclipse.xtext.builder.builderState.ShadowingResourceDescriptions.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.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;
-	}
-
-
-}
Index: unk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/EbnfExecutableExtensionFactory.java
===================================================================
--- /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/EbnfExecutableExtensionFactory.java	(revision 12)
+++ 	(revision )
@@ -1,28 +1,0 @@
-
-/*
- * 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;
-
-/**
- *@generated
- */
-public class EbnfExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
-
-	@Override
-	protected Bundle getBundle() {
-		return de.ugoe.cs.swe.bnftools.ui.internal.EbnfActivator.getInstance().getBundle();
-	}
-	
-	@Override
-	protected Injector getInjector() {
-		return de.ugoe.cs.swe.bnftools.ui.internal.EbnfActivator.getInstance().getInjector("de.ugoe.cs.swe.bnftools.Ebnf");
-	}
-	
-}
Index: unk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/AbstractEbnfProposalProvider.java
===================================================================
--- /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/AbstractEbnfProposalProvider.java	(revision 12)
+++ 	(revision )
@@ -1,231 +1,0 @@
-/*
-* 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.AbstractJavaBasedContentProposalProvider;
-import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
-import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
-
-/**
- * Represents a generated, default implementation of interface {@link IProposalProvider}.
- * 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 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_Imports(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
-	}
-	public void completeEtsiBnf_Rule(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
-	}
-	public void completeEtsiBnf_Sectionheader(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
-	}
-	public void completeEtsiBnf_ExtRule(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
-	}
-	public void completeEtsiBnf_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_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: unk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/EbnfParser.java
===================================================================
--- /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/contentassist/antlr/EbnfParser.java	(revision 12)
+++ 	(revision )
@@ -1,157 +1,0 @@
-/*
-* 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.getEtsiBnfAccess().getAlternatives_0_2_3(), "rule__EtsiBnf__Alternatives_0_2_3");
-					put(grammarAccess.getEtsiBnfAccess().getAlternatives_1_3(), "rule__EtsiBnf__Alternatives_1_3");
-					put(grammarAccess.getEtsiBnfAccess().getAlternatives_2_3(), "rule__EtsiBnf__Alternatives_2_3");
-					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().getImportsAssignment_0_2_2(), "rule__EtsiBnf__ImportsAssignment_0_2_2");
-					put(grammarAccess.getEtsiBnfAccess().getRuleAssignment_0_2_3_0(), "rule__EtsiBnf__RuleAssignment_0_2_3_0");
-					put(grammarAccess.getEtsiBnfAccess().getSectionheaderAssignment_0_2_3_1(), "rule__EtsiBnf__SectionheaderAssignment_0_2_3_1");
-					put(grammarAccess.getEtsiBnfAccess().getTypeAssignment_1_0(), "rule__EtsiBnf__TypeAssignment_1_0");
-					put(grammarAccess.getEtsiBnfAccess().getImportsAssignment_1_2(), "rule__EtsiBnf__ImportsAssignment_1_2");
-					put(grammarAccess.getEtsiBnfAccess().getRuleAssignment_1_3_0(), "rule__EtsiBnf__RuleAssignment_1_3_0");
-					put(grammarAccess.getEtsiBnfAccess().getSectionheaderAssignment_1_3_1(), "rule__EtsiBnf__SectionheaderAssignment_1_3_1");
-					put(grammarAccess.getEtsiBnfAccess().getExtRuleAssignment_1_3_2(), "rule__EtsiBnf__ExtRuleAssignment_1_3_2");
-					put(grammarAccess.getEtsiBnfAccess().getTypeAssignment_2_0(), "rule__EtsiBnf__TypeAssignment_2_0");
-					put(grammarAccess.getEtsiBnfAccess().getImportsAssignment_2_2(), "rule__EtsiBnf__ImportsAssignment_2_2");
-					put(grammarAccess.getEtsiBnfAccess().getSectionheaderAssignment_2_3_0(), "rule__EtsiBnf__SectionheaderAssignment_2_3_0");
-					put(grammarAccess.getEtsiBnfAccess().getMergeRuleAssignment_2_3_1(), "rule__EtsiBnf__MergeRuleAssignment_2_3_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: /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/formatter/EbnfFormatterVisitor.java
===================================================================
--- /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/formatter/EbnfFormatterVisitor.java	(revision 12)
+++ /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/formatter/EbnfFormatterVisitor.java	(revision 13)
@@ -5,5 +5,7 @@
 
 import de.ugoe.cs.swe.bnftools.ebnf.Atom;
+import de.ugoe.cs.swe.bnftools.ebnf.BnfEntry;
 import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList;
+import de.ugoe.cs.swe.bnftools.ebnf.DeltaEntry;
 import de.ugoe.cs.swe.bnftools.ebnf.EtsiBnf;
 import de.ugoe.cs.swe.bnftools.ebnf.ExtRule;
@@ -12,4 +14,6 @@
 import de.ugoe.cs.swe.bnftools.ebnf.HookCombinator;
 import de.ugoe.cs.swe.bnftools.ebnf.Import;
+import de.ugoe.cs.swe.bnftools.ebnf.ImportSection;
+import de.ugoe.cs.swe.bnftools.ebnf.MergeEntry;
 import de.ugoe.cs.swe.bnftools.ebnf.MergeRule;
 import de.ugoe.cs.swe.bnftools.ebnf.OptionalSequence;
@@ -28,6 +32,4 @@
 	private FormatterConfig config;
 
-	int ruleCounter = 0;
-	
 	public EbnfFormatterVisitor(EObject rootNode, FormatterConfig config) {
 		super(rootNode);
@@ -52,5 +54,5 @@
 			buf.append(node.getType());
 		buf.append(";");
-		buf.append("\n\n");
+		buf.append("\n");
 	}
 
@@ -58,4 +60,30 @@
 	}
 
+	protected void visitBefore(ImportSection node) {
+		buf.append("\n");
+	}
+
+	protected void visitAfter(ImportSection node) {
+		buf.append("\n");
+	}
+
+	protected void visitBefore(BnfEntry node) {
+	}
+
+	protected void visitAfter(BnfEntry node) {
+	}
+	
+	protected void visitBefore(DeltaEntry node) {
+	}
+
+	protected void visitAfter(DeltaEntry node) {
+	}
+	
+	protected void visitBefore(MergeEntry node) {
+	}
+
+	protected void visitAfter(MergeEntry node) {
+	}
+	
 	protected void visitBefore(Atom node) {
 	}
@@ -136,8 +164,4 @@
 
 	protected void visitBefore(Rule node) {
-		if (ruleCounter == 0)
-			buf.append("\n");
-		
-		ruleCounter++;
 		if (node.getRulenumber() > 0)
 			buf.append(node.getRulenumber() + ". ");
@@ -164,7 +188,12 @@
 
 	protected void visitBefore(SectionHeading node) {
+		if (!buf.substring(buf.length()-2).equals("\n\n"))
+			buf.append("\n");
+		
+		buf.append(node.getSectionHeader());
 	}
 
 	protected void visitAfter(SectionHeading node) {
+		buf.append("\n");
 	}
 
Index: /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/visitor/EbnfVisitor.java
===================================================================
--- /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/visitor/EbnfVisitor.java	(revision 12)
+++ /trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/visitor/EbnfVisitor.java	(revision 13)
@@ -6,5 +6,7 @@
 
 import de.ugoe.cs.swe.bnftools.ebnf.Atom;
+import de.ugoe.cs.swe.bnftools.ebnf.BnfEntry;
 import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList;
+import de.ugoe.cs.swe.bnftools.ebnf.DeltaEntry;
 import de.ugoe.cs.swe.bnftools.ebnf.EtsiBnf;
 import de.ugoe.cs.swe.bnftools.ebnf.ExtRule;
@@ -13,4 +15,6 @@
 import de.ugoe.cs.swe.bnftools.ebnf.HookCombinator;
 import de.ugoe.cs.swe.bnftools.ebnf.Import;
+import de.ugoe.cs.swe.bnftools.ebnf.ImportSection;
+import de.ugoe.cs.swe.bnftools.ebnf.MergeEntry;
 import de.ugoe.cs.swe.bnftools.ebnf.MergeRule;
 import de.ugoe.cs.swe.bnftools.ebnf.OptionalSequence;
@@ -74,4 +78,12 @@
 		if (node instanceof EtsiBnf) {
 			visitBefore((EtsiBnf) node);
+		} else if (node instanceof ImportSection) {
+			visitBefore((ImportSection) node);
+		} else if (node instanceof BnfEntry) {
+			visitBefore((BnfEntry) node);
+		} else if (node instanceof DeltaEntry) {
+			visitBefore((DeltaEntry) node);
+		} else if (node instanceof MergeEntry) {
+			visitBefore((MergeEntry) node);
 		} else if (node instanceof Atom) {
 			visitBefore((Atom) node);
@@ -115,4 +127,12 @@
 		if (node instanceof EtsiBnf) {
 			visitAfter((EtsiBnf) node);
+		} else if (node instanceof ImportSection) {
+			visitAfter((ImportSection) node);
+		} else if (node instanceof BnfEntry) {
+			visitAfter((BnfEntry) node);
+		} else if (node instanceof DeltaEntry) {
+			visitAfter((DeltaEntry) node);
+		} else if (node instanceof MergeEntry) {
+			visitAfter((MergeEntry) node);
 		} else if (node instanceof Atom) {
 			visitAfter((Atom) node);
@@ -158,4 +178,28 @@
 	}
 
+	protected void visitBefore(ImportSection node) {
+	}
+
+	protected void visitAfter(ImportSection node) {
+	}
+
+	protected void visitBefore(BnfEntry node) {
+	}
+
+	protected void visitAfter(BnfEntry node) {
+	}
+	
+	protected void visitBefore(DeltaEntry node) {
+	}
+
+	protected void visitAfter(DeltaEntry node) {
+	}
+	
+	protected void visitBefore(MergeEntry node) {
+	}
+
+	protected void visitAfter(MergeEntry node) {
+	}
+
 	protected void visitBefore(Atom node) {
 	}
Index: /trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/Ebnf.xtext
===================================================================
--- /trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/Ebnf.xtext	(revision 12)
+++ /trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/Ebnf.xtext	(revision 13)
@@ -11,19 +11,34 @@
 	'grammar' name=ID
 	(	type='/bnf'? ';' 
-		(imports+=Import)* 
-		(rule+=Rule | sectionheader+=SectionHeading)+ 
+		(importSection=ImportSection)?
+		(bnfEntry+=BnfEntry)+ 
 	)
 	| 
 	(	type='/delta' ';'
-		(imports+=Import)* 
-		(rule+=Rule | sectionheader+=SectionHeading | extRule+=ExtRule)*
+		(importSection=ImportSection)?
+		(deltaEntry+=DeltaEntry)*
 	)
 	| 
 	(	type='/merge' ';' 
-		(imports+=Import)* 
-		(sectionheader+=SectionHeading | mergeRule+=MergeRule)* 
+		(importSection=ImportSection)?
+		(mergeEntry+=MergeEntry)* 
 	)
 ;
 
+ImportSection:
+	(imports+=Import)+
+;
+
+BnfEntry:
+	sectionheader=SectionHeading | rule=Rule
+;
+
+DeltaEntry:
+	rule=Rule | sectionheader=SectionHeading | extRule=ExtRule
+;
+
+MergeEntry:
+	sectionheader=SectionHeading | mergeRule=MergeRule
+;
 
 SectionHeading:
