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 82)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/generator/EbnfGenerator.xtend	(revision 84)
@@ -4,24 +4,21 @@
 package de.ugoe.cs.swe.bnftools.generator
 
+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 java.io.File
 import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.xtext.generator.IFileSystemAccess
+import org.eclipse.xtext.generator.IFileSystemAccessExtension2
 import org.eclipse.xtext.generator.IGenerator
-import org.eclipse.xtext.generator.IFileSystemAccess
-import de.ugoe.cs.swe.bnftools.ebnf.EtsiBnf
-import de.ugoe.cs.swe.bnftools.ebnf.BnfEntry
-import de.ugoe.cs.swe.bnftools.ebnf.Rule
-import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList
-import de.ugoe.cs.swe.bnftools.ebnf.SingleDefinition
-import de.ugoe.cs.swe.bnftools.ebnf.Term
-import de.ugoe.cs.swe.bnftools.ebnf.GroupedSequence
-import de.ugoe.cs.swe.bnftools.ebnf.Atom
-import de.ugoe.cs.swe.bnftools.ebnf.RepeatedSequence
-import de.ugoe.cs.swe.bnftools.ebnf.OptionalSequence
-import de.ugoe.cs.swe.bnftools.ebnf.RuleReference
-import de.ugoe.cs.swe.bnftools.ebnf.StringRule
-import java.io.File
-import org.eclipse.xtext.generator.IFileSystemAccessExtension2
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.xtext.generator.IFileSystemAccessExtension
-import java.io.PrintWriter
 
 /**
@@ -32,6 +29,6 @@
 class EbnfGenerator implements IGenerator {
 
-	//generation of the xsl-file
-	override void doGenerate(Resource resource, IFileSystemAccess fsa) {
+
+ def void doGenerate(Resource resource, IFileSystemAccess fsa,boolean mode) {
 		var String workspacePath = WorkspaceResolver.getWorkspace();
 		for (e : resource.allContents.toIterable.filter(EtsiBnf)) {
@@ -45,6 +42,32 @@
 
 				if (file.exists) {
+					//true -> pdf, false -> rtf
 					
-					foToPdf.createPdfFromFo(fullUri.substring(0, fullUri.length - 3));
+					if(mode){
+						FoToPdfOrRtf.createRtfFromFo(fullUri.substring(0, fullUri.length - 3));
+					}else{
+						FoToPdfOrRtf.createPdfFromFo(fullUri.substring(0, fullUri.length - 3));
+					}
+					
+//					fsa.deleteFile(e.name + ".fo");
+				}
+			}
+		}
+	}
+	
+	override void doGenerate(Resource resource, IFileSystemAccess fsa) {
+		var String workspacePath = WorkspaceResolver.getWorkspace();
+		for (e : resource.allContents.toIterable.filter(EtsiBnf)) {
+			if (e.bnfEntry.size != 0) {
+				fsa.generateFile(e.name + ".fo", e.compile)
+				System.out.println("fo generated");
+				//generate pdf
+				var uri = (fsa as IFileSystemAccessExtension2).getURI(e.name + ".fo");
+				var String fullUri = workspacePath + uri.path.substring(10, uri.path.length);
+				var File file = new File(fullUri);
+
+				if (file.exists) {
+					
+					FoToPdfOrRtf.createPdfFromFo(fullUri.substring(0, fullUri.length - 3));
 //					fsa.deleteFile(e.name + ".fo");
 				}
@@ -84,9 +107,9 @@
 	'''
 
-	def compile(Rule rule) '''<fo:block><fo:inline id="«rule.name»"	color="purple">«IF rule.rulenumber != 0»«rule.
+	def compile(Rule rule) '''«System.out.println(rule.name)»<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»'''
+	def compile(DefinitionList dList) '''«IF dList!= null»«FOR sDef : dList.singleDefinition»«sDef.compile»«IF !sDef.equals(
+		dList.singleDefinition.last)» | «ENDIF»«ENDFOR»«ENDIF»'''
 
 	def compile(SingleDefinition sDefinition) '''«FOR term : sDefinition.terms»«term.compile»«ENDFOR»'''
@@ -110,5 +133,5 @@
 
 	def compile(StringRule sRule) '''«IF sRule.colon != null»«sRule.colon»«ENDIF»«IF sRule.literal != null»«sRule.
-		literal»	«ENDIF»'''
+		literal.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;")»	«ENDIF»'''
 
 }
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/generator/FoToPdfOrRtf.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/generator/FoToPdfOrRtf.java	(revision 84)
+++ v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/generator/FoToPdfOrRtf.java	(revision 84)
@@ -0,0 +1,136 @@
+package de.ugoe.cs.swe.bnftools.generator;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXResult;
+import javax.xml.transform.stream.StreamSource;
+
+
+
+import org.apache.fop.apps.FOPException;
+import org.apache.fop.apps.Fop;
+import org.apache.fop.apps.FopFactory;
+import org.apache.fop.apps.MimeConstants;
+
+
+public class FoToPdfOrRtf {
+
+
+	
+	public static void createPdfFromFo(String fileName) throws IOException, FOPException,
+	TransformerException{
+
+		createfoFromPdf(fileName,fileName);
+	}
+	
+	public static void createRtfFromFo(String fileName) throws IOException, FOPException,
+	TransformerException{
+
+		createRtfFromFo(fileName,fileName);
+	}
+	
+	private static void createRtfFromFo(String foFileName, String pdfFileName)throws IOException, FOPException,
+	TransformerException{
+		File file = new File(foFileName+".fo");
+		// Step 1: Construct a FopFactory
+		FopFactory fopFactory = FopFactory.newInstance();
+
+		// Step 2: Set up output stream.
+		OutputStream out = new BufferedOutputStream(new FileOutputStream(new File(pdfFileName+".rtf")));
+
+		try {
+			// Step 3: Construct fop with desired output format
+			Fop fop = fopFactory.newFop(MimeConstants.MIME_RTF, out);
+
+			// Step 4: Setup JAXP using identity transformer
+			TransformerFactory factory = TransformerFactory.newInstance();
+			Transformer transformer = factory.newTransformer();
+
+			// Step 5: Setup input and output for XSLT transformation
+			Source src = new StreamSource(file);
+
+			// Resulting SAX events (the generated FO) must be piped through to FOP		
+			Result res = new SAXResult(fop.getDefaultHandler());
+
+			// Step 6: Start XSLT transformation and FOP processing
+			transformer.transform(src, res);
+		} finally {
+			out.close();
+		}
+	}
+	
+	
+	private static void createfoFromPdf(String foFileName, String pdfFileName)throws IOException, FOPException,
+	TransformerException{
+		File file = new File(foFileName+".fo");
+		// Step 1: Construct a FopFactory
+		FopFactory fopFactory = FopFactory.newInstance();
+
+		// Step 2: Set up output stream.
+		OutputStream out = new BufferedOutputStream(new FileOutputStream(new File(pdfFileName+".pdf")));
+
+		try {
+			// Step 3: Construct fop with desired output format
+			Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);
+
+			// Step 4: Setup JAXP using identity transformer
+			TransformerFactory factory = TransformerFactory.newInstance();
+			Transformer transformer = factory.newTransformer();
+
+			// Step 5: Setup input and output for XSLT transformation
+			Source src = new StreamSource(file);
+
+			// Resulting SAX events (the generated FO) must be piped through to FOP		
+			Result res = new SAXResult(fop.getDefaultHandler());
+
+			// Step 6: Start XSLT transformation and FOP processing
+			transformer.transform(src, res);
+		} finally {
+			out.close();
+		}
+	}
+	
+	public static void createPdfFromFo(File file,String fileName) throws IOException, FOPException,
+	TransformerException{
+
+		createfoFromPdf(file,"mytest");
+	}
+	
+	private static void createfoFromPdf(File file, String pdfFileName)throws IOException, FOPException,
+	TransformerException{
+		// Step 1: Construct a FopFactory
+		FopFactory fopFactory = FopFactory.newInstance();
+
+		// Step 2: Set up output stream.
+		OutputStream out = new BufferedOutputStream(new FileOutputStream(new File(pdfFileName+".pdf")));
+
+		try {
+			// Step 3: Construct fop with desired output format
+			Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);
+
+			// Step 4: Setup JAXP using identity transformer
+			TransformerFactory factory = TransformerFactory.newInstance();
+			Transformer transformer = factory.newTransformer();
+
+			// Step 5: Setup input and output for XSLT transformation
+			Source src = new StreamSource(file);
+
+			// Resulting SAX events (the generated FO) must be piped through to FOP		
+			Result res = new SAXResult(fop.getDefaultHandler());
+
+			// Step 6: Start XSLT transformation and FOP processing
+			transformer.transform(src, res);
+		} finally {
+			out.close();
+		}
+	}
+}
Index: v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/generator/foToPdf.java
===================================================================
--- v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/generator/foToPdf.java	(revision 82)
+++ 	(revision )
@@ -1,99 +1,0 @@
-package de.ugoe.cs.swe.bnftools.generator;
-
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.stream.StreamSource;
-
-
-
-import org.apache.fop.apps.FOPException;
-import org.apache.fop.apps.Fop;
-import org.apache.fop.apps.FopFactory;
-import org.apache.fop.apps.MimeConstants;
-
-
-public class foToPdf {
-
-
-	
-	public static void createPdfFromFo(String fileName) throws IOException, FOPException,
-	TransformerException{
-
-		createfoFromPdf(fileName,fileName);
-	}
-	
-	private static void createfoFromPdf(String foFileName, String pdfFileName)throws IOException, FOPException,
-	TransformerException{
-		File file = new File(foFileName+".fo");
-		// Step 1: Construct a FopFactory
-		FopFactory fopFactory = FopFactory.newInstance();
-
-		// Step 2: Set up output stream.
-		OutputStream out = new BufferedOutputStream(new FileOutputStream(new File(pdfFileName+".rtf")));
-
-		try {
-			// Step 3: Construct fop with desired output format
-			Fop fop = fopFactory.newFop(MimeConstants.MIME_RTF, out);
-
-			// Step 4: Setup JAXP using identity transformer
-			TransformerFactory factory = TransformerFactory.newInstance();
-			Transformer transformer = factory.newTransformer();
-
-			// Step 5: Setup input and output for XSLT transformation
-			Source src = new StreamSource(file);
-
-			// Resulting SAX events (the generated FO) must be piped through to FOP		
-			Result res = new SAXResult(fop.getDefaultHandler());
-
-			// Step 6: Start XSLT transformation and FOP processing
-			transformer.transform(src, res);
-		} finally {
-			out.close();
-		}
-	}
-	
-	public static void createPdfFromFo(File file,String fileName) throws IOException, FOPException,
-	TransformerException{
-
-		createfoFromPdf(file,"mytest");
-	}
-	
-	private static void createfoFromPdf(File file, String pdfFileName)throws IOException, FOPException,
-	TransformerException{
-		// Step 1: Construct a FopFactory
-		FopFactory fopFactory = FopFactory.newInstance();
-
-		// Step 2: Set up output stream.
-		OutputStream out = new BufferedOutputStream(new FileOutputStream(new File(pdfFileName+".pdf")));
-
-		try {
-			// Step 3: Construct fop with desired output format
-			Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);
-
-			// Step 4: Setup JAXP using identity transformer
-			TransformerFactory factory = TransformerFactory.newInstance();
-			Transformer transformer = factory.newTransformer();
-
-			// Step 5: Setup input and output for XSLT transformation
-			Source src = new StreamSource(file);
-
-			// Resulting SAX events (the generated FO) must be piped through to FOP		
-			Result res = new SAXResult(fop.getDefaultHandler());
-
-			// Step 6: Start XSLT transformation and FOP processing
-			transformer.transform(src, res);
-		} finally {
-			out.close();
-		}
-	}
-}
