diff --git a/src/main/java/org/jastadd/relast/compiler/Compiler.java b/src/main/java/org/jastadd/relast/compiler/Compiler.java
index 50e92e5f69ef1900fba30c31c94840489da7647e..2c1ebe5550cc11d41180c3d2997ca10ac1693444 100644
--- a/src/main/java/org/jastadd/relast/compiler/Compiler.java
+++ b/src/main/java/org/jastadd/relast/compiler/Compiler.java
@@ -19,6 +19,7 @@ public class Compiler {
   private FlagOption optionWriteToFile;
   private FlagOption optionPrintAST;
   private StringOption optionListClass;
+  private StringOption optionGrammarName;
   private CommandLine commandLine;
 
   public Compiler(String[] args) throws CommandLineException {
@@ -51,12 +52,14 @@ public class Compiler {
         ASTNode.listClass = optionListClass.getValue();
       }
 
+      String grammarName = "Grammar";
+      if (optionGrammarName.isSet()) {
+        grammarName = optionGrammarName.getValue();
+      }
+
       if (optionWriteToFile.isSet()) {
-        File file = new File(filenames.get(0));
-        String absPath = file.getAbsolutePath();
-        String absPathExclExt = absPath.substring(0, absPath.lastIndexOf('.'));
-        writeToFile(absPathExclExt + "Gen.ast", p.generateAbstractGrammar());
-        writeToFile(absPathExclExt + "Gen.jadd", p.generateAspect());
+        writeToFile(grammarName + ".ast", p.generateAbstractGrammar());
+        writeToFile(grammarName + ".jadd", p.generateAspect());
       } else if (optionPrintAST.isSet()) {
         System.out.println(p.dumpTree());
       } else {
@@ -90,6 +93,7 @@ public class Compiler {
     optionWriteToFile = addOption(new FlagOption("file", "write output to files <filename>Gen.ast and <filename>Gen.jadd"));
     optionPrintAST = addOption(new FlagOption("ast", "print AST"));
     optionListClass = addOption(new StringOption("listClass", "determine the class name of the nonterminal reference list"));
+    optionGrammarName = addOption(new StringOption("grammarName", "name of the generated grammar and aspect (without file extension)"));
   }
 
   private <OptionType extends Option<?>> OptionType addOption(OptionType option) {
diff --git a/tests/multipleFiles/Makefile b/tests/multipleFiles/Makefile
index d4564fe0830e683a3913dfc9c137855ee5ad914d..db12f0a8c4198bea71ff57c5e63da36bdd0ef776 100644
--- a/tests/multipleFiles/Makefile
+++ b/tests/multipleFiles/Makefile
@@ -1,5 +1,5 @@
 all: build-jar test
-test: test1
+test: clean test1
 	@echo "#"
 	@echo "# MULTIPLE FILES TESTS OK"
 	@echo "#"
@@ -7,11 +7,14 @@ test: test1
 build-jar:
 	(cd ../../ && ./gradlew jar)
 test1:
-	java -jar ../../build/libs/relast.jar Rules1.relast Rules2.relast Rules3.relast --file
-	rm -rf AST
-	rm -rf *.class
-	java -jar ../../tools/jastadd2.jar --package=AST Rules1Gen.ast Rules1Gen.jadd Utils.jadd
+	java -jar ../../build/libs/relast.jar Rules1.relast Rules2.relast Rules3.relast --file --grammarName=All
+	java -jar ../../tools/jastadd2.jar --package=AST All.ast All.jadd Utils.jadd
 	javac AST/*.java All.java
 	java All
-	java -jar ../../build/libs/relast.jar Rules1Gen.ast --file
-	diff Rules1Gen.ast Rules1GenGen.ast
\ No newline at end of file
+	java -jar ../../build/libs/relast.jar All.ast --file --grammarName=AllGen
+	diff All.ast AllGen.ast
+
+clean:
+	rm -rf AST
+	rm -f *.class
+	rm -f *.ast
\ No newline at end of file
diff --git a/tests/valid/Makefile b/tests/valid/Makefile
index b497433f6c948eb979701c43ccc25b8faa8b1d3a..e2368ea081fecda60e0f86d1763ac63004decc13 100644
--- a/tests/valid/Makefile
+++ b/tests/valid/Makefile
@@ -7,15 +7,15 @@ test: test1 test2
 build-jar:
 	(cd ../../ && ./gradlew jar)
 test1:
-	java -jar ../../build/libs/relast.jar All.relast --file
+	java -jar ../../build/libs/relast.jar All.relast --file --grammarName=AllGen
 	rm -rf AST
 	java -jar ../../tools/jastadd2.jar --package=AST AllGen.ast AllGen.jadd Utils.jadd
 	javac AST/*.java All.java
 	java All
-	java -jar ../../build/libs/relast.jar AllGen.ast --file
+	java -jar ../../build/libs/relast.jar AllGen.ast --file  --grammarName=AllGenGen
 	diff AllGen.ast AllGenGen.ast
 test2:
-	java -jar ../../build/libs/relast.jar LowerBounds.relast --file
+	java -jar ../../build/libs/relast.jar LowerBounds.relast --file  --grammarName=LowerBoundsGen
 	rm -rf AST
 	java -jar ../../tools/jastadd2.jar --package=AST LowerBoundsGen.ast LowerBoundsGen.jadd Utils.jadd
 	javac AST/*.java LowerBounds.java