diff --git a/spec/jastadd/Backend.jadd b/spec/jastadd/Backend.jadd index 835e9ec593d0fed28fb41ff2dc08d34d362b966f..b0c6eeded5d8e169604c84f83a7e85cefc505a08 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 f5ff3c327dda7c0885be70a3ff9814da38ac32a3..f152514b0dc68115a6cbbdd408dbb2214551a1a4 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) {