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 64)
+++ /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src-gen/de/ugoe/cs/swe/bnftools/ui/AbstractEbnfUiModule.java	(revision 65)
@@ -39,27 +39,7 @@
 	}
 
-	// contributed by org.eclipse.xtext.generator.exporting.QualifiedNamesFragment
+	// contributed by org.eclipse.xtext.generator.exporting.SimpleNamesFragment
 	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;
 	}
 
@@ -154,59 +134,4 @@
 	}
 
-	// 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() {
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 64)
+++ /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/quickfix/EbnfQuickfixProvider.xtend	(revision 65)
@@ -27,4 +27,6 @@
  */
 class EbnfQuickfixProvider extends org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider {
+
+	//*****************************************************************************************
 	//works
 	@Fix(EbnfValidator.ruleReferencedOneDescription)
@@ -37,4 +39,5 @@
 		) [ element, context |
 			var Rule rule = element as Rule;
+			
 			var IXtextDocument xtextDocument = context.getXtextDocument();
 			var ICompositeNode node = NodeModelUtils.findActualNodeFor(rule);
@@ -50,5 +53,5 @@
 			var boolean foundRule = false;
 			var EObject r = references.get(0) as EObject;
-			var Rule containingRule=null;
+			var Rule containingRule = null;
 			while (!foundRule) {
 				r = r.eContainer;
@@ -69,52 +72,53 @@
 				}
 			}
-		
-
-		// delete rule
-		xtextDocument.replace(offset, textLength, "");
+			// delete rule
+			xtextDocument.replace(offset, textLength, "");
 		]
 
 	}
 
+	//*****************************************************************************************
+	
+	//		@Fix(EbnfValidator.passthroughRuleDescription)
+	//	def void fixRemovePassthroughRule(Issue issue, IssueResolutionAcceptor acceptor) {
+	//		acceptor.accept(
+	//			issue,
+	//			"Remove passthrough rule",
+	//			"Delete the passthrough rule and replace its references with its right side",
+	//			"upcase.png",
+	//			[ element, context |
+	//				var Rule rule = element as Rule;
+	//				var IXtextDocument xtextDocument = context.getXtextDocument();
+	//				var ICompositeNode node = NodeModelUtils.findActualNodeFor(rule);
+	//				var String nodeText = node.text;
+	//				var int textLength = nodeText.length - 2;
+	//				var int offset = node.textRegion.offset;
+	//				var ICompositeNode dList = NodeModelUtils.findActualNodeFor(rule.definitionList);
+	//				var String refText = "(" + dList.text + ")";
+	//				var int refLength = rule.name.length;
+	//				var List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule);
+	//				//sort references by offset
+	//				var int i = 0;
+	//				var List<RuleReference> referenceHleper = new ArrayList<RuleReference>();
+	//				while(i<references.length){
+	//					
+	//					i++;
+	//				}
+	//				for (ruleRef : references) {
+	//					var ICompositeNode refNode = NodeModelUtils.findActualNodeFor(ruleRef);
+	//					var int refOffset = refNode.textRegion.offset;
+	//
+	//					xtextDocument.replace(refOffset, refLength, refText);
+	//					if (refOffset < offset) {
+	//						offset += refText.length - refLength;
+	//					}
+	//				}
+	//			]
+	//		);
+	//	}
+	
+	//*****************************************************************************************
 	//works
-//		@Fix(EbnfValidator.passthroughRuleDescription)
-//	def void fixRemovePassthroughRule(Issue issue, IssueResolutionAcceptor acceptor) {
-//		acceptor.accept(
-//			issue,
-//			"Remove passthrough rule",
-//			"Delete the passthrough rule and replace its references with its right side",
-//			"upcase.png",
-//			[ element, context |
-//				var Rule rule = element as Rule;
-//				var IXtextDocument xtextDocument = context.getXtextDocument();
-//				var ICompositeNode node = NodeModelUtils.findActualNodeFor(rule);
-//				var String nodeText = node.text;
-//				var int textLength = nodeText.length - 2;
-//				var int offset = node.textRegion.offset;
-//				var ICompositeNode dList = NodeModelUtils.findActualNodeFor(rule.definitionList);
-//				var String refText = "(" + dList.text + ")";
-//				var int refLength = rule.name.length;
-//				var List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule);
-//				//sort references by offset
-//				var int i = 0;
-//				var List<RuleReference> referenceHleper = new ArrayList<RuleReference>();
-//				while(i<references.length){
-//					
-//					i++;
-//				}
-//				for (ruleRef : references) {
-//					var ICompositeNode refNode = NodeModelUtils.findActualNodeFor(ruleRef);
-//					var int refOffset = refNode.textRegion.offset;
-//
-//					xtextDocument.replace(refOffset, refLength, refText);
-//					if (refOffset < offset) {
-//						offset += refText.length - refLength;
-//					}
-//				}
-//			]
-//		);
-//	}
-
-		@Fix(EbnfValidator.unusedRuleDescription)
+	@Fix(EbnfValidator.unusedRuleDescription)
 	def void fixUnusedRule(Issue issue, IssueResolutionAcceptor acceptor) {
 
@@ -131,3 +135,2 @@
 	}
 }
-		
Index: 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 64)
+++ 	(revision )
@@ -1,13 +1,0 @@
-/**
- * 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: 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 64)
+++ 	(revision )
@@ -1,15 +1,0 @@
-/**
- * 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: 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 64)
+++ 	(revision )
@@ -1,21 +1,0 @@
-/**
- * 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: 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 64)
+++ 	(revision )
@@ -1,15 +1,0 @@
-/**
- * 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: 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 64)
+++ 	(revision )
@@ -1,16 +1,0 @@
-/**
- * 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";
-}
Index: /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/AbstractEbnfRuntimeModule.java
===================================================================
--- /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/AbstractEbnfRuntimeModule.java	(revision 64)
+++ /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/AbstractEbnfRuntimeModule.java	(revision 65)
@@ -35,4 +35,9 @@
 	}
 	
+	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+	public java.lang.ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+
 	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
 	public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
@@ -102,5 +107,10 @@
 	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
 	public void configureIScopeProviderDelegate(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider.class);
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(org.eclipse.xtext.scoping.impl.SimpleLocalScopeProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public Class<? extends org.eclipse.xtext.scoping.IGlobalScopeProvider> bindIGlobalScopeProvider() {
+		return org.eclipse.xtext.scoping.impl.ImportUriGlobalScopeProvider.class;
 	}
 
@@ -110,27 +120,7 @@
 	}
 
-	// contributed by org.eclipse.xtext.generator.exporting.QualifiedNamesFragment
+	// contributed by org.eclipse.xtext.generator.exporting.SimpleNamesFragment
 	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
-		return org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
-	public Class<? extends org.eclipse.xtext.resource.IContainer.Manager> bindIContainer$Manager() {
-		return org.eclipse.xtext.resource.containers.StateBasedContainerManager.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
-	public Class<? extends org.eclipse.xtext.resource.containers.IAllContainersState.Provider> bindIAllContainersState$Provider() {
-		return org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
-	public void configureIResourceDescriptions(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.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.resource.impl.ResourceSetBasedResourceDescriptions.class);
+		return org.eclipse.xtext.naming.SimpleNameProvider.class;
 	}
 
@@ -145,28 +135,3 @@
 	}
 
-	// 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 org.eclipse.xtext.common.types.TypesFactory bindTypesFactoryToInstance() {
-		return org.eclipse.xtext.common.types.TypesFactory.eINSTANCE;
-	}
-
-	// 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.ClasspathTypeProviderFactory.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.ClasspathBasedTypeScopeProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
-	public Class<? extends org.eclipse.xtext.scoping.IGlobalScopeProvider> bindIGlobalScopeProvider() {
-		return org.eclipse.xtext.common.types.xtext.TypesAwareDefaultGlobalScopeProvider.class;
-	}
-
 }
Index: /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/serializer/EbnfSyntacticSequencer.java
===================================================================
--- /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/serializer/EbnfSyntacticSequencer.java	(revision 64)
+++ /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/serializer/EbnfSyntacticSequencer.java	(revision 65)
@@ -77,12 +77,12 @@
 	 *     (
 	     '{' | 
+	     '+' | 
 	     '}' | 
+	     '*' | 
+	     ')' | 
 	     '|' | 
-	     '+' | 
-	     '*' | 
 	     '[' | 
-	     ']' | 
 	     '(' | 
-	     ')'
+	     ']'
 	 )*
 	 */
Index: /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/services/EbnfGrammarAccess.java
===================================================================
--- /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/services/EbnfGrammarAccess.java	(revision 64)
+++ /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/services/EbnfGrammarAccess.java	(revision 65)
@@ -379,4 +379,7 @@
 		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
 		
+		////Import: 'import' importedNamespace=FqnWithWildCard;
+		////FqnWithWildCard: Fqn('.*')? ';';
+		////Fqn:ID('.'ID)*;
 		//Rule:
 		//	(rulenumber=INT rulevariant=ID? ".")? name=ID "::=" definitionList=DefinitionList? ";"?;
@@ -1150,4 +1153,7 @@
 	}
 
+	////Import: 'import' importedNamespace=FqnWithWildCard;
+	////FqnWithWildCard: Fqn('.*')? ';';
+	////Fqn:ID('.'ID)*;
 	//Rule:
 	//	(rulenumber=INT rulevariant=ID? ".")? name=ID "::=" definitionList=DefinitionList? ";"?;
Index: /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/validation/AbstractEbnfValidator.java
===================================================================
--- /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/validation/AbstractEbnfValidator.java	(revision 64)
+++ /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/validation/AbstractEbnfValidator.java	(revision 65)
@@ -7,5 +7,7 @@
 import java.util.List;
 import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.validation.ComposedChecks;
 
+@ComposedChecks(validators= {org.eclipse.xtext.validation.ImportUriValidator.class, org.eclipse.xtext.validation.NamesAreUniqueValidator.class})
 public class AbstractEbnfValidator extends org.eclipse.xtext.validation.AbstractDeclarativeValidator {
 
Index: /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/EBNF.xtext
===================================================================
--- /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/EBNF.xtext	(revision 64)
+++ /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/EBNF.xtext	(revision 65)
@@ -53,4 +53,9 @@
  	('label:' label=ID)? ';'
 ;
+
+//Import: 'import' importedNamespace=FqnWithWildCard;
+//FqnWithWildCard: Fqn('.*')? ';';
+//Fqn:ID('.'ID)*;
+
 
 Rule:
Index: /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/GenerateEBNF.mwe2
===================================================================
--- /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/GenerateEBNF.mwe2	(revision 64)
+++ /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/GenerateEBNF.mwe2	(revision 65)
@@ -73,16 +73,16 @@
     		// Xtend-based API for validation
     		fragment = validation.ValidatorFragment auto-inject {
-    		//    composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
-    		//    composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
+    		    composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
+    		    composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
     		}
     
     		// old scoping and exporting API
-    		// fragment = scoping.ImportURIScopingFragment auto-inject {}
-    		// fragment = exporting.SimpleNamesFragment auto-inject {}
+    		 fragment = scoping.ImportURIScopingFragment auto-inject {}
+    		 fragment = exporting.SimpleNamesFragment auto-inject {}
     
     		// scoping and exporting API
-    		fragment = scoping.ImportNamespacesScopingFragment auto-inject {}
-    		fragment = exporting.QualifiedNamesFragment auto-inject {}
-    		fragment = builder.BuilderIntegrationFragment auto-inject {}
+//    		fragment = scoping.ImportNamespacesScopingFragment auto-inject {}
+//    		fragment = exporting.QualifiedNamesFragment auto-inject {}
+//    		fragment = builder.BuilderIntegrationFragment auto-inject {}
     
     		// generator API
@@ -115,5 +115,5 @@
     
     		// provides the necessary bindings for java types integration
-    		fragment = types.TypesGeneratorFragment auto-inject {}
+//    		fragment = types.TypesGeneratorFragment auto-inject {}
     
     		// generates the required bindings only if the grammar inherits from Xbase
Index: /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/formatting/EbnfFormatter.xtend
===================================================================
--- /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/formatting/EbnfFormatter.xtend	(revision 64)
+++ /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/formatting/EbnfFormatter.xtend	(revision 65)
@@ -9,4 +9,7 @@
 import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter
 import org.eclipse.xtext.formatting.impl.FormattingConfig
+import org.eclipse.emf.ecore.EObject
+import de.ugoe.cs.swe.bnftools.ebnf.Rule
+import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList
 
 /**
@@ -29,11 +32,12 @@
 		c.setLinewrap(0, 1, 1).after(ML_COMMENTRule)
 
-		
 		var EbnfGrammarAccess f = getGrammarAccess as EbnfGrammarAccess;
 		c.setLinewrap.before(f.ruleRule);
 		c.setLinewrap.before(f.importRule);
 		c.setNoSpace.after(f.ruleAccess.rulenumberINTTerminalRuleCall_0_0_0)
-//		//c.setLinewrap.after(f.);
+
+		
 //		for (Keyword bar : f.findKeywords("|")) {
+//
 //			c.setSpace("\n\t\t").before(bar);
 //		}
Index: /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/generator/EbnfGenerator.xtend
===================================================================
--- /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/generator/EbnfGenerator.xtend	(revision 64)
+++ /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/generator/EbnfGenerator.xtend	(revision 65)
@@ -19,4 +19,5 @@
 import de.ugoe.cs.swe.bnftools.ebnf.RuleReference
 import de.ugoe.cs.swe.bnftools.ebnf.StringRule
+import java.io.File
 
 /**
@@ -30,5 +31,5 @@
 		for (e : resource.allContents.toIterable.filter(EtsiBnf)) {
 			if (e.bnfEntry.size!=0) {
-				fsa.generateFile(e.name + ".fo", e.compile)
+				 fsa.generateFile(e.name + ".fo", e.compile)
 			}
 		}
@@ -50,4 +51,7 @@
 		<fo:page-sequence  master-reference="A4">
 			<fo:flow flow-name="xsl-region-body" font-family="verdana">
+				
+				<fo:block span="all"  text-align="center" text-indent="1em" font-family="Arial" font-size="20pt" font-weight="bold" background-color="#EEEEEE" line-height="20mm">«bnf.name»</fo:block>
+						
 				«FOR bnfentry:bnf.bnfEntry»
 					«bnfentry.compile»
@@ -63,5 +67,5 @@
 	'''
 	
-	def compile(Rule rule)'''<fo:block><fo:inline id="«rule.name»"	color="purple">«IF rule.rulenumber!=0»«rule.rulenumber».\t«ENDIF»«rule.name»</fo:inline>	::=	«rule.definitionList.compile»</block>'''
+	def compile(Rule rule)'''<fo:block><fo:inline id="«rule.name»"	color="purple">«IF rule.rulenumber!=0»«rule.rulenumber».	«ENDIF»«rule.name»</fo:inline>	::=	«rule.definitionList.compile»</fo:block>'''
 	
 	def compile(DefinitionList dList)'''«FOR sDef:dList.singleDefinition»«sDef.compile»«IF !sDef.equals(dList.singleDefinition.last)» | «ENDIF»«ENDFOR»'''
@@ -80,7 +84,7 @@
 	«IF atom.atomRuleReference!= null»«atom.atomRuleReference.compile»«ENDIF»«IF atom.atomStringRule!= null»«atom.atomStringRule.compile»«ENDIF»'''
 	
-	def compile(RuleReference rRef)'''<fo:basic-link internal-destination="«rRef.ruleref.name»" text-decoration="underline" color="blue">«rRef.ruleref.name»</fo:basic-link>'''
+	def compile(RuleReference rRef)'''<fo:basic-link internal-destination="«rRef.ruleref.name»" text-decoration="underline" color="blue">«rRef.ruleref.name»</fo:basic-link>	'''
 	
-	def compile(StringRule sRule)'''«IF sRule.colon!=null»«sRule.colon»«ENDIF»«IF sRule.literal!=null»«sRule.literal»«ENDIF»'''
+	def compile(StringRule sRule)'''«IF sRule.colon!=null»«sRule.colon»«ENDIF»«IF sRule.literal!=null»«sRule.literal»	«ENDIF»'''
 	
 	
Index: /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/scoping/EbnfScopeProvider.xtend
===================================================================
--- /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/scoping/EbnfScopeProvider.xtend	(revision 64)
+++ /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/scoping/EbnfScopeProvider.xtend	(revision 65)
@@ -3,4 +3,8 @@
  */
 package de.ugoe.cs.swe.bnftools.scoping
+
+//import org.eclipse.xtext.naming.IQualifiedNameConverter
+//import com.google.inject.Inject
+//import org.eclipse.xtext.scoping.impl.ImportUriGlobalScopeProvider
 
 /**
@@ -13,3 +17,4 @@
 class EbnfScopeProvider extends org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider {
 
+
 }
Index: /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfValidator.xtend
===================================================================
--- /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfValidator.xtend	(revision 64)
+++ /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/validation/EbnfValidator.xtend	(revision 65)
@@ -14,8 +14,9 @@
 import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList
 import de.ugoe.cs.swe.bnftools.ebnf.SingleDefinition
+import java.util.ArrayList
+
 //import java.util.HashMap
 //import java.util.Set
 //import java.util.HashSet
-
 //import org.eclipse.xtext.validation.Check
 /**
@@ -32,4 +33,5 @@
 	public static final String equalAlternativeDescription = "The rule contains equal alternatives";
 	public static final String duplicateRulesDescription = "The rule is a duplicate";
+
 	//public  static final String duplicateSubRulesDescription = "A part the of rule is a duplicate";
 	public static final String nonUniqueNameDescription = "The rule has the same Name as the Rule in Line ";
@@ -49,5 +51,6 @@
 
 		if (references.size() == 1 && rule.rulenumber != 1) {
-			warning(ruleReferencedOneDescription, EbnfPackage$Literals::RULE__NAME,ruleReferencedOneDescription,rule.name);
+			warning(ruleReferencedOneDescription, EbnfPackage$Literals::RULE__NAME, ruleReferencedOneDescription,
+				rule.name);
 		}
 	}
@@ -75,18 +78,67 @@
 
 		// run through all Rules
-		for (currentRule : allRules) {
-			if (currentRule != rule) {
-				var ICompositeNode currentRuleDefinitionList = NodeModelUtils.findActualNodeFor(
-					currentRule.getDefinitionList());
-				var String currentRuleRightHandSideText = currentRuleDefinitionList.text.trim().replaceAll("[ \t\n\r]",
-					"");
-
-				if (currentRuleRightHandSideText.equals(rightHandSideText)) {
-					var String description = duplicateRulesDescription + " with rule \"" + currentRule.getName() +
-						"\" (Line " + NodeModelUtils.findActualNodeFor(currentRule).getStartLine() + ")";
-					warning(description, EbnfPackage$Literals::RULE__NAME);
-				}
-			}
-		}
+						for (currentRule : allRules) {
+							if (currentRule != rule) {
+								var ICompositeNode currentRuleDefinitionList = NodeModelUtils.findActualNodeFor(
+									currentRule.getDefinitionList());
+								var String currentRuleRightHandSideText = currentRuleDefinitionList.text.trim().replaceAll("[ \t\n\r]",
+									"");
+				
+								if (currentRuleRightHandSideText.equals(rightHandSideText)) {
+									var String description = duplicateRulesDescription + " with rule \"" + currentRule.getName() +
+										"\" (Line " + NodeModelUtils.findActualNodeFor(currentRule).getStartLine() + ")";
+									warning(description, EbnfPackage$Literals::RULE__NAME);
+								}
+							}
+						}
+		
+//		//get all Single Definitions as Trimmed Strings
+//		var List<String> singleDefsAsString = new ArrayList<String>();
+//
+//		for (SingleDefinition s : (rule.definitionList).singleDefinition) {
+//			singleDefsAsString.add(NodeModelUtils.findActualNodeFor(s).text.trim().replaceAll("[ \t\n\r]", ""));
+//		}
+//
+//		// for every rule get the single definitions as Strings
+//		var int j = 0;
+//		while (j<allRules.size) {
+//			var currentRule=allRules.get(j);
+//			if (currentRule != rule) {
+//				var List<String> singleDefsAsString1 = new ArrayList<String>();
+//
+//				for (SingleDefinition s : ( currentRule.definitionList).singleDefinition) {
+//					singleDefsAsString1.add(NodeModelUtils.findActualNodeFor(s).text.trim().replaceAll("[ \t\n\r]", ""));
+//				}
+//
+//				//for every String SingleDefinition find a corresponding ind the current rule 
+//				if (singleDefsAsString.size == singleDefsAsString1.size) {
+//					var List<String> singleDefsAsStringCpy = singleDefsAsString.clone;
+//					var boolean equal = true;
+//					while (equal) {
+//						var String momentaryString = singleDefsAsStringCpy.get(0);
+//						var int i = 0;
+//						var boolean found = false;
+//						while (i < singleDefsAsString1.size && !found) {
+//							if (singleDefsAsString1.get(i).equals(momentaryString)) {
+//								singleDefsAsStringCpy.remove(0);
+//								singleDefsAsString1.remove(i);
+//								found = true
+//							}
+//							i++;
+//						}
+//						if (!found) {
+//							equal = false;
+//						}
+//						if (singleDefsAsStringCpy.empty) {
+//							var String description = duplicateRulesDescription + " with rule \"" + currentRule.getName() +
+//								"\" (Line " + NodeModelUtils.findActualNodeFor(currentRule).getStartLine() + ")";
+//							warning(description, EbnfPackage$Literals::RULE__NAME)
+//						}
+//					}
+//				}
+//
+//			}
+//			j++;
+//		}
 	}
 
@@ -122,5 +174,5 @@
 
 		if ((references.size() == 0) && (rule.getRulenumber() != 1))
-			warning(unusedRuleDescription, EbnfPackage$Literals::RULE__NAME,unusedRuleDescription,rule.name);
+			warning(unusedRuleDescription, EbnfPackage$Literals::RULE__NAME, unusedRuleDescription, rule.name);
 	}
 
@@ -144,5 +196,6 @@
 
 					if (d1.equals(d2))
-						warning(equalAlternativeDescription, EbnfPackage$Literals::RULE__NAME,equalAlternativeDescription);
+						warning(equalAlternativeDescription, EbnfPackage$Literals::RULE__NAME,
+							equalAlternativeDescription, rule.name);
 				}
 			}
@@ -162,16 +215,16 @@
 		var List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule);
 
-		if (EbnfAnalysisUtils.isPassthroughRule(rule)) {
+		if (EbnfAnalysisUtils.isPassthroughRule(rule) && rule.rulenumber != 1) {
 			if (references.size() == 0) {
 				warning(unreferencedPassthroughRuleDescription, EbnfPackage$Literals::RULE__NAME);
 			} else {
-				warning(passthroughRuleDescription, EbnfPackage$Literals::RULE__NAME,passthroughRuleDescription);
+				warning(passthroughRuleDescription, EbnfPackage$Literals::RULE__NAME, passthroughRuleDescription,
+					rule.name);
 			}
 		}
 	}
 
-
-	// ----------------------------------------------------------------------------------------------------
-	/* Checks if a subrule is used more then once, e.g.:
+// ----------------------------------------------------------------------------------------------------
+/* Checks if a subrule is used more then once, e.g.:
 	 * a ::= (a b) e
 	 * b ::= (a b) d
Index: trunk/de.ugoe.cs.swe.bnftools.ebnf/xtend-gen/de/ugoe/cs/swe/bnftools/formatting/EbnfFormatter.java
===================================================================
--- /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/xtend-gen/de/ugoe/cs/swe/bnftools/formatting/EbnfFormatter.java	(revision 64)
+++ 	(revision )
@@ -1,53 +1,0 @@
-/**
- * generated by Xtext
- */
-package de.ugoe.cs.swe.bnftools.formatting;
-
-import com.google.inject.Inject;
-import de.ugoe.cs.swe.bnftools.services.EbnfGrammarAccess;
-import org.eclipse.xtext.IGrammarAccess;
-import org.eclipse.xtext.ParserRule;
-import org.eclipse.xtext.RuleCall;
-import org.eclipse.xtext.TerminalRule;
-import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter;
-import org.eclipse.xtext.formatting.impl.FormattingConfig;
-import org.eclipse.xtext.xbase.lib.Extension;
-
-/**
- * This class contains custom formatting description.
- * 
- * see : http://www.eclipse.org/Xtext/documentation.html#formatting
- * on how and when to use it
- * 
- * Also see {@link org.eclipse.xtext.xtext.XtextFormattingTokenSerializer} as an example
- */
-@SuppressWarnings("all")
-public class EbnfFormatter extends AbstractDeclarativeFormatter {
-  @Inject
-  @Extension
-  private EbnfGrammarAccess _ebnfGrammarAccess;
-  
-  protected void configureFormatting(final FormattingConfig c) {
-    FormattingConfig.LinewrapLocator _setLinewrap = c.setLinewrap(0, 1, 2);
-    TerminalRule _sL_COMMENTRule = this._ebnfGrammarAccess.getSL_COMMENTRule();
-    _setLinewrap.before(_sL_COMMENTRule);
-    FormattingConfig.LinewrapLocator _setLinewrap_1 = c.setLinewrap(0, 1, 2);
-    TerminalRule _mL_COMMENTRule = this._ebnfGrammarAccess.getML_COMMENTRule();
-    _setLinewrap_1.before(_mL_COMMENTRule);
-    FormattingConfig.LinewrapLocator _setLinewrap_2 = c.setLinewrap(0, 1, 1);
-    TerminalRule _mL_COMMENTRule_1 = this._ebnfGrammarAccess.getML_COMMENTRule();
-    _setLinewrap_2.after(_mL_COMMENTRule_1);
-    IGrammarAccess _grammarAccess = this.getGrammarAccess();
-    EbnfGrammarAccess f = ((EbnfGrammarAccess) _grammarAccess);
-    FormattingConfig.LinewrapLocator _setLinewrap_3 = c.setLinewrap();
-    ParserRule _ruleRule = f.getRuleRule();
-    _setLinewrap_3.before(_ruleRule);
-    FormattingConfig.LinewrapLocator _setLinewrap_4 = c.setLinewrap();
-    ParserRule _importRule = f.getImportRule();
-    _setLinewrap_4.before(_importRule);
-    FormattingConfig.NoSpaceLocator _setNoSpace = c.setNoSpace();
-    EbnfGrammarAccess.RuleElements _ruleAccess = f.getRuleAccess();
-    RuleCall _rulenumberINTTerminalRuleCall_0_0_0 = _ruleAccess.getRulenumberINTTerminalRuleCall_0_0_0();
-    _setNoSpace.after(_rulenumberINTTerminalRuleCall_0_0_0);
-  }
-}
Index: trunk/de.ugoe.cs.swe.bnftools.ebnf/xtend-gen/de/ugoe/cs/swe/bnftools/generator/EbnfGenerator.java
===================================================================
--- /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/xtend-gen/de/ugoe/cs/swe/bnftools/generator/EbnfGenerator.java	(revision 64)
+++ 	(revision )
@@ -1,327 +1,0 @@
-/**
- * generated by Xtext
- */
-package de.ugoe.cs.swe.bnftools.generator;
-
-import com.google.common.base.Objects;
-import com.google.common.collect.Iterables;
-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.EtsiBnf;
-import de.ugoe.cs.swe.bnftools.ebnf.GroupedSequence;
-import de.ugoe.cs.swe.bnftools.ebnf.OptionalSequence;
-import de.ugoe.cs.swe.bnftools.ebnf.RepeatedSequence;
-import de.ugoe.cs.swe.bnftools.ebnf.Rule;
-import de.ugoe.cs.swe.bnftools.ebnf.RuleReference;
-import de.ugoe.cs.swe.bnftools.ebnf.SingleDefinition;
-import de.ugoe.cs.swe.bnftools.ebnf.StringRule;
-import de.ugoe.cs.swe.bnftools.ebnf.Term;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.TreeIterator;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.generator.IFileSystemAccess;
-import org.eclipse.xtext.generator.IGenerator;
-import org.eclipse.xtext.xbase.lib.IterableExtensions;
-import org.eclipse.xtext.xbase.lib.IteratorExtensions;
-
-/**
- * Generates code from your model files on save.
- * 
- * see http://www.eclipse.org/Xtext/documentation.html#TutorialCodeGeneration
- */
-@SuppressWarnings("all")
-public class EbnfGenerator implements IGenerator {
-  public void doGenerate(final Resource resource, final IFileSystemAccess fsa) {
-    TreeIterator<EObject> _allContents = resource.getAllContents();
-    Iterable<EObject> _iterable = IteratorExtensions.<EObject>toIterable(_allContents);
-    Iterable<EtsiBnf> _filter = Iterables.<EtsiBnf>filter(_iterable, EtsiBnf.class);
-    for (final EtsiBnf e : _filter) {
-      EList<BnfEntry> _bnfEntry = e.getBnfEntry();
-      int _size = _bnfEntry.size();
-      boolean _notEquals = (_size != 0);
-      if (_notEquals) {
-        String _name = e.getName();
-        String _plus = (_name + ".fo");
-        CharSequence _compile = this.compile(e);
-        fsa.generateFile(_plus, _compile);
-      }
-    }
-  }
-  
-  public CharSequence compile(final EtsiBnf bnf) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("<?xml version=\"1.0\"?>");
-    _builder.newLine();
-    _builder.append("<!-- fop ");
-    String _name = bnf.getName();
-    _builder.append(_name, "");
-    _builder.append(".xml -rtf ");
-    String _name_1 = bnf.getName();
-    _builder.append(_name_1, "");
-    _builder.append(".rtf -->");
-    _builder.newLineIfNotEmpty();
-    _builder.append("<fo:root xmlns:fo=\"http://www.w3.org/1999/XSL/Format\">");
-    _builder.newLine();
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("<fo:layout-master-set>");
-    _builder.newLine();
-    _builder.append("  \t\t");
-    _builder.append("<fo:simple-page-master master-name=\"A4\" page-width=\"210mm\" page-height=\"297mm\">");
-    _builder.newLine();
-    _builder.append("    \t\t");
-    _builder.append("<fo:region-body region-name=\"xsl-region-body\"  margin=\"2cm\"/>");
-    _builder.newLine();
-    _builder.append("     \t");
-    _builder.append("</fo:simple-page-master>");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("</fo:layout-master-set>");
-    _builder.newLine();
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("<fo:page-sequence  master-reference=\"A4\">");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("<fo:flow flow-name=\"xsl-region-body\" font-family=\"verdana\">");
-    _builder.newLine();
-    {
-      EList<BnfEntry> _bnfEntry = bnf.getBnfEntry();
-      for(final BnfEntry bnfentry : _bnfEntry) {
-        _builder.append("\t\t\t");
-        CharSequence _compile = this.compile(bnfentry);
-        _builder.append(_compile, "\t\t\t");
-        _builder.newLineIfNotEmpty();
-      }
-    }
-    _builder.append("\t\t");
-    _builder.append("</fo:flow>");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("</fo:page-sequence>");
-    _builder.newLine();
-    _builder.append("</fo:root>");
-    return _builder;
-  }
-  
-  public CharSequence compile(final BnfEntry bnfEntry) {
-    StringConcatenation _builder = new StringConcatenation();
-    {
-      Rule _rule = bnfEntry.getRule();
-      boolean _notEquals = (!Objects.equal(_rule, null));
-      if (_notEquals) {
-        Rule _rule_1 = bnfEntry.getRule();
-        CharSequence _compile = this.compile(_rule_1);
-        _builder.append(_compile, "");
-        _builder.newLineIfNotEmpty();
-      }
-    }
-    return _builder;
-  }
-  
-  public CharSequence compile(final Rule rule) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("<fo:block><fo:inline id=\"");
-    String _name = rule.getName();
-    _builder.append(_name, "");
-    _builder.append("\"\tcolor=\"purple\">");
-    {
-      int _rulenumber = rule.getRulenumber();
-      boolean _notEquals = (_rulenumber != 0);
-      if (_notEquals) {
-        int _rulenumber_1 = rule.getRulenumber();
-        _builder.append(_rulenumber_1, "");
-        _builder.append(".\\t");
-      }
-    }
-    String _name_1 = rule.getName();
-    _builder.append(_name_1, "");
-    _builder.append("</fo:inline>\t::=\t");
-    DefinitionList _definitionList = rule.getDefinitionList();
-    CharSequence _compile = this.compile(_definitionList);
-    _builder.append(_compile, "");
-    _builder.append("</block>");
-    return _builder;
-  }
-  
-  public CharSequence compile(final DefinitionList dList) {
-    StringConcatenation _builder = new StringConcatenation();
-    {
-      EList<SingleDefinition> _singleDefinition = dList.getSingleDefinition();
-      for(final SingleDefinition sDef : _singleDefinition) {
-        CharSequence _compile = this.compile(sDef);
-        _builder.append(_compile, "");
-        {
-          EList<SingleDefinition> _singleDefinition_1 = dList.getSingleDefinition();
-          SingleDefinition _last = IterableExtensions.<SingleDefinition>last(_singleDefinition_1);
-          boolean _equals = sDef.equals(_last);
-          boolean _not = (!_equals);
-          if (_not) {
-            _builder.append(" | ");
-          }
-        }
-      }
-    }
-    return _builder;
-  }
-  
-  public CharSequence compile(final SingleDefinition sDefinition) {
-    StringConcatenation _builder = new StringConcatenation();
-    {
-      EList<Term> _terms = sDefinition.getTerms();
-      for(final Term term : _terms) {
-        CharSequence _compile = this.compile(term);
-        _builder.append(_compile, "");
-      }
-    }
-    return _builder;
-  }
-  
-  public CharSequence compile(final Term term) {
-    StringConcatenation _builder = new StringConcatenation();
-    {
-      Atom _termAtom = term.getTermAtom();
-      boolean _notEquals = (!Objects.equal(_termAtom, null));
-      if (_notEquals) {
-        Atom _termAtom_1 = term.getTermAtom();
-        CharSequence _compile = this.compile(_termAtom_1);
-        _builder.append(_compile, "");
-      }
-    }
-    {
-      OptionalSequence _termOptionalSequence = term.getTermOptionalSequence();
-      boolean _notEquals_1 = (!Objects.equal(_termOptionalSequence, null));
-      if (_notEquals_1) {
-        OptionalSequence _termOptionalSequence_1 = term.getTermOptionalSequence();
-        CharSequence _compile_1 = this.compile(_termOptionalSequence_1);
-        _builder.append(_compile_1, "");
-      }
-    }
-    {
-      RepeatedSequence _termRepeatedSequence = term.getTermRepeatedSequence();
-      boolean _notEquals_2 = (!Objects.equal(_termRepeatedSequence, null));
-      if (_notEquals_2) {
-        RepeatedSequence _termRepeatedSequence_1 = term.getTermRepeatedSequence();
-        CharSequence _compile_2 = this.compile(_termRepeatedSequence_1);
-        _builder.append(_compile_2, "");
-      }
-    }
-    {
-      GroupedSequence _termGroupedSequence = term.getTermGroupedSequence();
-      boolean _notEquals_3 = (!Objects.equal(_termGroupedSequence, null));
-      if (_notEquals_3) {
-        GroupedSequence _termGroupedSequence_1 = term.getTermGroupedSequence();
-        CharSequence _compile_3 = this.compile(_termGroupedSequence_1);
-        _builder.append(_compile_3, "");
-      }
-    }
-    return _builder;
-  }
-  
-  public CharSequence compile(final GroupedSequence gSequ) {
-    StringConcatenation _builder = new StringConcatenation();
-    {
-      EList<DefinitionList> _definitionList = gSequ.getDefinitionList();
-      for(final DefinitionList d : _definitionList) {
-        Object _compile = this.compile(d);
-        _builder.append(_compile, "");
-      }
-    }
-    return _builder;
-  }
-  
-  public CharSequence compile(final RepeatedSequence rSequ) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("{");
-    {
-      EList<DefinitionList> _definitions = rSequ.getDefinitions();
-      for(final DefinitionList d : _definitions) {
-        Object _compile = this.compile(d);
-        _builder.append(_compile, "");
-      }
-    }
-    _builder.append("}");
-    {
-      boolean _isMorethanonce = rSequ.isMorethanonce();
-      if (_isMorethanonce) {
-        _builder.append("+");
-      }
-    }
-    return _builder;
-  }
-  
-  public CharSequence compile(final OptionalSequence oSequ) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("(");
-    {
-      EList<DefinitionList> _definitionList = oSequ.getDefinitionList();
-      for(final DefinitionList d : _definitionList) {
-        Object _compile = this.compile(d);
-        _builder.append(_compile, "");
-      }
-    }
-    _builder.append(")");
-    return _builder;
-  }
-  
-  public CharSequence compile(final Atom atom) {
-    StringConcatenation _builder = new StringConcatenation();
-    {
-      RuleReference _atomRuleReference = atom.getAtomRuleReference();
-      boolean _notEquals = (!Objects.equal(_atomRuleReference, null));
-      if (_notEquals) {
-        RuleReference _atomRuleReference_1 = atom.getAtomRuleReference();
-        CharSequence _compile = this.compile(_atomRuleReference_1);
-        _builder.append(_compile, "");
-      }
-    }
-    {
-      StringRule _atomStringRule = atom.getAtomStringRule();
-      boolean _notEquals_1 = (!Objects.equal(_atomStringRule, null));
-      if (_notEquals_1) {
-        StringRule _atomStringRule_1 = atom.getAtomStringRule();
-        CharSequence _compile_1 = this.compile(_atomStringRule_1);
-        _builder.append(_compile_1, "");
-      }
-    }
-    return _builder;
-  }
-  
-  public CharSequence compile(final RuleReference rRef) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("<fo:basic-link internal-destination=\"");
-    Rule _ruleref = rRef.getRuleref();
-    String _name = _ruleref.getName();
-    _builder.append(_name, "");
-    _builder.append("\" text-decoration=\"underline\" color=\"blue\">");
-    Rule _ruleref_1 = rRef.getRuleref();
-    String _name_1 = _ruleref_1.getName();
-    _builder.append(_name_1, "");
-    _builder.append("</fo:basic-link>");
-    return _builder;
-  }
-  
-  public CharSequence compile(final StringRule sRule) {
-    StringConcatenation _builder = new StringConcatenation();
-    {
-      String _colon = sRule.getColon();
-      boolean _notEquals = (!Objects.equal(_colon, null));
-      if (_notEquals) {
-        String _colon_1 = sRule.getColon();
-        _builder.append(_colon_1, "");
-      }
-    }
-    {
-      String _literal = sRule.getLiteral();
-      boolean _notEquals_1 = (!Objects.equal(_literal, null));
-      if (_notEquals_1) {
-        String _literal_1 = sRule.getLiteral();
-        _builder.append(_literal_1, "");
-      }
-    }
-    return _builder;
-  }
-}
Index: trunk/de.ugoe.cs.swe.bnftools.ebnf/xtend-gen/de/ugoe/cs/swe/bnftools/validation/EbnfValidator.java
===================================================================
--- /v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/xtend-gen/de/ugoe/cs/swe/bnftools/validation/EbnfValidator.java	(revision 64)
+++ 	(revision )
@@ -1,217 +1,0 @@
-/**
- * generated by Xtext
- */
-package de.ugoe.cs.swe.bnftools.validation;
-
-import com.google.common.base.Objects;
-import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList;
-import de.ugoe.cs.swe.bnftools.ebnf.EbnfPackage;
-import de.ugoe.cs.swe.bnftools.ebnf.EtsiBnf;
-import de.ugoe.cs.swe.bnftools.ebnf.Rule;
-import de.ugoe.cs.swe.bnftools.ebnf.RuleReference;
-import de.ugoe.cs.swe.bnftools.ebnf.SingleDefinition;
-import de.ugoe.cs.swe.bnftools.validation.AbstractEbnfValidator;
-import de.ugoe.cs.swe.bnftools.validation.EbnfAnalysisUtils;
-import java.util.List;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.xtext.nodemodel.ICompositeNode;
-import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
-import org.eclipse.xtext.validation.Check;
-
-/**
- * Custom validation rules.
- * 
- * see http://www.eclipse.org/Xtext/documentation.html#validation
- */
-@SuppressWarnings("all")
-public class EbnfValidator extends AbstractEbnfValidator {
-  public final static String ruleReferencedOneDescription = "The rule is only referenced by one other rule";
-  
-  public final static String passthroughRuleDescription = "The rule is a passthrough rule";
-  
-  public final static String unreferencedPassthroughRuleDescription = "The rule is an unreferenced passthrough rule";
-  
-  public final static String unusedRuleDescription = "The rule is not referenced anywhere";
-  
-  public final static String equalAlternativeDescription = "The rule contains equal alternatives";
-  
-  public final static String duplicateRulesDescription = "The rule is a duplicate";
-  
-  public final static String nonUniqueNameDescription = "The rule has the same Name as the Rule in Line ";
-  
-  /**
-   * Checks if a rule is only referenced by one other Rule, e.g.:
-   * a ::= b
-   * b ::= "foo"
-   */
-  @Check
-  public void checkReferencedOnlyOnce(final Rule rule) {
-    boolean _isTokenRule = EbnfAnalysisUtils.isTokenRule(rule);
-    if (_isTokenRule) {
-      return;
-    }
-    List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule);
-    boolean _and = false;
-    int _size = references.size();
-    boolean _equals = (_size == 1);
-    if (!_equals) {
-      _and = false;
-    } else {
-      int _rulenumber = rule.getRulenumber();
-      boolean _notEquals = (_rulenumber != 1);
-      _and = _notEquals;
-    }
-    if (_and) {
-      String _name = rule.getName();
-      this.warning(EbnfValidator.ruleReferencedOneDescription, EbnfPackage.Literals.RULE__NAME, EbnfValidator.ruleReferencedOneDescription, _name);
-    }
-  }
-  
-  /**
-   * Checks if a a rule has the same definition as another rule e.g.:
-   * a ::= "test"
-   * b ::= "test"
-   * (Problem: does not check if there is a permutation)
-   */
-  @Check
-  public void checkDuplicateRules(final Rule rule) {
-    EObject _eContainer = rule.eContainer();
-    EObject _eContainer_1 = _eContainer.eContainer();
-    EtsiBnf etsiBnf = ((EtsiBnf) _eContainer_1);
-    DefinitionList _definitionList = rule.getDefinitionList();
-    ICompositeNode definitionList = NodeModelUtils.findActualNodeFor(_definitionList);
-    String _text = definitionList.getText();
-    String _trim = _text.trim();
-    String rightHandSideText = _trim.replaceAll("[ \t\n\r]", "");
-    List<Rule> allRules = EbnfAnalysisUtils.getAllRules(etsiBnf);
-    for (final Rule currentRule : allRules) {
-      boolean _notEquals = (!Objects.equal(currentRule, rule));
-      if (_notEquals) {
-        DefinitionList _definitionList_1 = currentRule.getDefinitionList();
-        ICompositeNode currentRuleDefinitionList = NodeModelUtils.findActualNodeFor(_definitionList_1);
-        String _text_1 = currentRuleDefinitionList.getText();
-        String _trim_1 = _text_1.trim();
-        String currentRuleRightHandSideText = _trim_1.replaceAll("[ \t\n\r]", 
-          "");
-        boolean _equals = currentRuleRightHandSideText.equals(rightHandSideText);
-        if (_equals) {
-          String _name = currentRule.getName();
-          String _plus = ((EbnfValidator.duplicateRulesDescription + " with rule \"") + _name);
-          String _plus_1 = (_plus + 
-            "\" (Line ");
-          ICompositeNode _findActualNodeFor = NodeModelUtils.findActualNodeFor(currentRule);
-          int _startLine = _findActualNodeFor.getStartLine();
-          String _plus_2 = (_plus_1 + Integer.valueOf(_startLine));
-          String description = (_plus_2 + ")");
-          this.warning(description, EbnfPackage.Literals.RULE__NAME);
-        }
-      }
-    }
-  }
-  
-  /**
-   * Checks if a Rule got the same Name as another Rule, e.g.:
-   * a ::= "foo"
-   * a ::= "bar"
-   */
-  @Check
-  public void checkNameIsUnique(final Rule rule) {
-    EObject _eContainer = rule.eContainer();
-    EObject _eContainer_1 = _eContainer.eContainer();
-    final EtsiBnf bnf = ((EtsiBnf) _eContainer_1);
-    List<Rule> _allRules = EbnfAnalysisUtils.getAllRules(bnf);
-    for (final Rule r : _allRules) {
-      String _name = rule.getName();
-      String _name_1 = r.getName();
-      boolean _equals = _name.equals(_name_1);
-      if (_equals) {
-        boolean _equals_1 = r.equals(rule);
-        boolean _not = (!_equals_1);
-        if (_not) {
-          ICompositeNode _findActualNodeFor = NodeModelUtils.findActualNodeFor(r);
-          int _startLine = _findActualNodeFor.getStartLine();
-          String _plus = (EbnfValidator.nonUniqueNameDescription + Integer.valueOf(_startLine));
-          this.error(_plus, 
-            EbnfPackage.Literals.RULE__NAME);
-        }
-      }
-    }
-  }
-  
-  /**
-   * Checks if a Rule, except for the #1 is not referenced, e.g.:
-   * a::= b
-   * b::="foo"
-   * c ::= "bar"
-   */
-  @Check
-  public void checkUnusedRule(final Rule rule) {
-    List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule);
-    boolean _and = false;
-    int _size = references.size();
-    boolean _equals = (_size == 0);
-    if (!_equals) {
-      _and = false;
-    } else {
-      int _rulenumber = rule.getRulenumber();
-      boolean _notEquals = (_rulenumber != 1);
-      _and = _notEquals;
-    }
-    if (_and) {
-      String _name = rule.getName();
-      this.warning(EbnfValidator.unusedRuleDescription, EbnfPackage.Literals.RULE__NAME, EbnfValidator.unusedRuleDescription, _name);
-    }
-  }
-  
-  /**
-   * Checks if a rule got two equal alternatives, e.g.:
-   * a ::= b | "foo" | b
-   * (Problem:ignores whitespaces in literals)
-   */
-  @Check
-  public void checkEqualAlternative(final Rule rule) {
-    DefinitionList definitionList = rule.getDefinitionList();
-    List<SingleDefinition> singleDefinitions = definitionList.getSingleDefinition();
-    for (final SingleDefinition sDef1 : singleDefinitions) {
-      for (final SingleDefinition sDef2 : singleDefinitions) {
-        boolean _equals = sDef1.equals(sDef2);
-        boolean _not = (!_equals);
-        if (_not) {
-          ICompositeNode _findActualNodeFor = NodeModelUtils.findActualNodeFor(sDef1);
-          String _text = _findActualNodeFor.getText();
-          String _trim = _text.trim();
-          String d1 = _trim.replaceAll("[ \t\n\r]", "");
-          ICompositeNode _findActualNodeFor_1 = NodeModelUtils.findActualNodeFor(sDef2);
-          String _text_1 = _findActualNodeFor_1.getText();
-          String _trim_1 = _text_1.trim();
-          String d2 = _trim_1.replaceAll("[ \t\n\r]", "");
-          boolean _equals_1 = d1.equals(d2);
-          if (_equals_1) {
-            this.warning(EbnfValidator.equalAlternativeDescription, EbnfPackage.Literals.RULE__NAME, EbnfValidator.equalAlternativeDescription);
-          }
-        }
-      }
-    }
-  }
-  
-  /**
-   * Checks if a rule gets just passed through, e.g.:
-   * a ::= b | "literal"
-   * b ::= c
-   * c ::= "foo.bar"
-   */
-  @Check
-  public void checkPassthroughRule(final Rule rule) {
-    List<RuleReference> references = EbnfAnalysisUtils.findReferences(rule);
-    boolean _isPassthroughRule = EbnfAnalysisUtils.isPassthroughRule(rule);
-    if (_isPassthroughRule) {
-      int _size = references.size();
-      boolean _equals = (_size == 0);
-      if (_equals) {
-        this.warning(EbnfValidator.unreferencedPassthroughRuleDescription, EbnfPackage.Literals.RULE__NAME);
-      } else {
-        this.warning(EbnfValidator.passthroughRuleDescription, EbnfPackage.Literals.RULE__NAME, EbnfValidator.passthroughRuleDescription);
-      }
-    }
-  }
-}
