From abce5ee8ea8af5cebb97f8515fb273cdfb9c9ade Mon Sep 17 00:00:00 2001
From: rschoene <rene.schoene@tu-dresden.de>
Date: Mon, 25 Feb 2019 14:35:44 +0100
Subject: [PATCH] Add option for JastAddList name.

---
 spec/jastadd/Backend.jadd                     |  3 +-
 .../org/jastadd/relast/compiler/Compiler.java | 29 +++++++++++++------
 2 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/spec/jastadd/Backend.jadd b/spec/jastadd/Backend.jadd
index 835e9ec..b0c6eed 100644
--- a/spec/jastadd/Backend.jadd
+++ b/spec/jastadd/Backend.jadd
@@ -1,6 +1,7 @@
 aspect BackendAbstractGrammar {
 
 	public static String ASTNode.listClass = "ArrayList";
+	public static String ASTNode.jastAddListType = "List";
 
 	public String Program.generateAbstractGrammar() {
 		StringBuilder sb = new StringBuilder();
@@ -120,7 +121,7 @@ aspect BackendAspect {
 		return getTypeUse() + " " + getID();
 	}
 	public String ListComponent.constructorParameter() {
-		return "List<" + getTypeUse() + "> " + getID();
+		return ASTNode.jastAddListType + "<" + getTypeUse() + "> " + getID();
 	}
 	public String OptComponent.constructorParameter() {
 		return "Opt<" + getTypeUse() + "> " + getID();
diff --git a/src/java/org/jastadd/relast/compiler/Compiler.java b/src/java/org/jastadd/relast/compiler/Compiler.java
index f5ff3c3..f152514 100644
--- a/src/java/org/jastadd/relast/compiler/Compiler.java
+++ b/src/java/org/jastadd/relast/compiler/Compiler.java
@@ -18,11 +18,12 @@ import org.jastadd.relast.compiler.options.CommandLine.CommandLineException;
 import beaver.Parser;
 
 public class Compiler {
-	protected ArrayList<Option<?>> options;
-	protected FlagOption optionWriteToFile;
-	protected FlagOption optionPrintAST;
-	protected StringOption optionListClass;
-	protected CommandLine commandLine;
+	private ArrayList<Option<?>> options;
+	private FlagOption optionWriteToFile;
+	private FlagOption optionPrintAST;
+	private StringOption optionListClass;
+	private StringOption optionJastAddList;
+	private CommandLine commandLine;
 
 	public Compiler(String args[]) throws CommandLineException {
 		options = new ArrayList<>();
@@ -51,9 +52,14 @@ public class Compiler {
 
 			if (optionListClass.isSet()) {
 				System.out.println("ListClass is set to " + optionListClass.getValue());
-				p.listClass = optionListClass.getValue();
+				ASTNode.listClass = optionListClass.getValue();
 			}
 
+			if (optionJastAddList.isSet()) {
+        System.out.println("JastAdd List type is set to " + optionJastAddList.getValue());
+        ASTNode.jastAddListType = optionJastAddList.getValue();
+      }
+
 			if (optionWriteToFile.isSet()) {
 				File file = new File(filename);
 				String absPath = file.getAbsolutePath();
@@ -81,9 +87,14 @@ public class Compiler {
 	}
 
 	protected void addOptions() {
-		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"));
+		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"));
+		optionJastAddList = addOption(new StringOption("jastAddList",
+				"set the name of the List type in JastAdd (has to match the option '--List' or its default List)"));
 	}
 
 	protected <OptionType extends Option<?>> OptionType addOption(OptionType option) {
-- 
GitLab