diff --git a/.gitmodules b/.gitmodules index 9971a6482e1a133c7c7d1aeb85778a9563ec59b1..0cf1e8a6d073c7c58b0881fe53f5642e6a1022e7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "relast-preprocessor"] path = relast-preprocessor url = ../relast-preprocessor.git +[submodule "ragconnect.base/src/main/jastadd/mustache"] + path = ragconnect.base/src/main/jastadd/mustache + url = ../mustache diff --git a/ragconnect.base/build.gradle b/ragconnect.base/build.gradle index 5fd73e5ac109155cd84315d3890e059353db3ef2..153a3be2b1c37d31784bc0d4075b77a53b4f0a87 100644 --- a/ragconnect.base/build.gradle +++ b/ragconnect.base/build.gradle @@ -51,7 +51,7 @@ task newVersion() { } } -File genSrc = file("src/gen/java"); +File genSrc = file("src/gen/java") sourceSets.main.java.srcDir genSrc idea.module.generatedSourceDirs += genSrc @@ -67,16 +67,20 @@ jar { archiveBaseName = 'ragconnect' } +File preprocessorGrammar = file('../relast-preprocessor/src/main/jastadd/RelAst.relast') +File ragConnectGrammar = file('./src/main/jastadd/RagConnect.relast') +File intermediateGrammar = file('./src/main/jastadd/intermediate/MustacheNodes.relast') +File mustacheGrammar = file('./src/main/jastadd/mustache/Mustache.relast') task relast(type: JavaExec) { group = 'Build' main = "-jar" args = [ "../libs/relast.jar", - "../relast-preprocessor/src/main/jastadd/RelAst.relast", - "./src/main/jastadd/RagConnect.relast", - "./src/main/jastadd/MustacheNodes.relast", - "./src/main/jastadd/YAML.relast", + preprocessorGrammar, + ragConnectGrammar, + intermediateGrammar, + mustacheGrammar, "--listClass=java.util.ArrayList", "--jastAddList=JastAddList", "--useJastAddNames", @@ -86,10 +90,10 @@ task relast(type: JavaExec) { ] inputs.files("../libs/relast.jar", - "../relast-preprocessor/src/main/jastadd/RelAst.relast", - "./src/main/jastadd/RagConnect.relast", - "./src/main/jastadd/MustacheNodes.relast", - "./src/main/jastadd/YAML.relast") + preprocessorGrammar, + ragConnectGrammar, + intermediateGrammar, + mustacheGrammar) outputs.files("./src/gen/jastadd/RagConnect.ast", "./src/gen/jastadd/RagConnect.jadd", "./src/gen/jastadd/RagConnectRefResolver.jadd", diff --git a/ragconnect.base/src/main/jastadd/backend/Configuration.jadd b/ragconnect.base/src/main/jastadd/Configuration.jadd similarity index 100% rename from ragconnect.base/src/main/jastadd/backend/Configuration.jadd rename to ragconnect.base/src/main/jastadd/Configuration.jadd diff --git a/ragconnect.base/src/main/jastadd/Printing.jrag b/ragconnect.base/src/main/jastadd/Printing.jrag index 74607aeb7737e1e43c9565b799693889a648a9df..89b9b82a9abea9786979b3864449f529b57bbd96 100644 --- a/ragconnect.base/src/main/jastadd/Printing.jrag +++ b/ragconnect.base/src/main/jastadd/Printing.jrag @@ -1,6 +1,4 @@ aspect Printing { - String ASTNode.PRINT_INDENT = " "; - syn String MappingDefinitionType.prettyPrint(); eq JavaMappingDefinitionType.prettyPrint() = getType().getName(); eq JavaArrayMappingDefinitionType.prettyPrint() = getType().getName() + "[]"; @@ -10,66 +8,4 @@ aspect Printing { generateAbstractGrammar(sb); return sb.toString(); } - - syn String Document.prettyPrint() { - StringBuilder sb = new StringBuilder(); - sb.append("# RagConnect created at ").append(java.time.Instant.now()).append("\n"); - for (ComplexElement element : getComplexElementList()) { - element.prettyPrint(sb, false, ""); - } - if (sb.charAt(sb.length() - 1) != '\n') { - sb.append("\n"); - } - return sb.toString(); - } - syn StringBuilder Element.prettyPrint(StringBuilder sb, boolean printIndent, String indent); - eq ValueElement.prettyPrint(StringBuilder sb, boolean printIndent, String indent) { - sb.append(getValue()); - return sb; - } - eq StringElement.prettyPrint(StringBuilder sb, boolean printIndent, String indent) { - sb.append("\"").append(getValue()).append("\""); - return sb; - } - eq ListElement.prettyPrint(StringBuilder sb, boolean printIndent, String indent) { - if (isEmpty()) { - sb.append("[]"); - } else { - for (Element element : getElementList()) { - sb.append(indent).append("- "); - element.prettyPrint(sb, false, indent + PRINT_INDENT); - sb.append("\n"); - } - // delete last newline - sb.deleteCharAt(sb.length() - 1); - } - return sb; - } - eq KeyValuePair.prettyPrint(StringBuilder sb, boolean printIndent, String indent) { - if (printIndent) sb.append(indent); - sb.append(getKey()).append(": "); - if (getValue().isComplex() && !getValue().isEmpty()) { - sb.append("\n"); - getValue().prettyPrint(sb, true, indent + PRINT_INDENT); //); - } else { - getValue().prettyPrint(sb, false, indent); - } - return sb; - } - eq MappingElement.prettyPrint(StringBuilder sb, boolean printIndent, String indent) { - if (isEmpty()) { - sb.append("{}"); - } else { - boolean first = true; - for (KeyValuePair pair : getKeyValuePairList()) { - if (!first || printIndent) sb.append(indent); - first = false; - pair.prettyPrint(sb, false, indent); // + PRINT_INDENT - sb.append("\n"); - } - // delete last newline - sb.deleteCharAt(sb.length() - 1); - } - return sb; - } } diff --git a/ragconnect.base/src/main/jastadd/YAML.jrag b/ragconnect.base/src/main/jastadd/YAML.jrag deleted file mode 100644 index 93dd0f34b7b7b0505cf0970b6541fa3ae5bee7fa..0000000000000000000000000000000000000000 --- a/ragconnect.base/src/main/jastadd/YAML.jrag +++ /dev/null @@ -1,31 +0,0 @@ -aspect Navigation { - eq Document.getChild().program() = null; - eq Document.getChild().ragconnect() = null; - eq Document.getChild().containedFile() = null; - eq Document.getChild().containedFileName() = getFileName(); - - syn boolean Element.isComplex() = false; - eq ComplexElement.isComplex() = true; - - syn boolean Element.isEmpty() = false; - eq MappingElement.isEmpty() = getNumKeyValuePair() == 0; - eq ListElement.isEmpty() = getNumElement() == 0; -} - -aspect Helper { - public static ValueElement ValueElement.of(int value) { - return new ValueElement(String.valueOf(value)); - } - public static ValueElement ValueElement.of(boolean value) { - return new ValueElement(String.valueOf(value)); - } - public static ValueElement ValueElement.of(String value) { - return new ValueElement(value); - } - public static StringElement StringElement.of(String value) { - return new StringElement(value); - } - public void MappingElement.addKeyValuePair(String key, Element value) { - addKeyValuePair(new KeyValuePair(key, value)); - } -} diff --git a/ragconnect.base/src/main/jastadd/YAML.relast b/ragconnect.base/src/main/jastadd/YAML.relast deleted file mode 100644 index 94f4ab20fdc3838348bd53b812b3d1477cae3558..0000000000000000000000000000000000000000 --- a/ragconnect.base/src/main/jastadd/YAML.relast +++ /dev/null @@ -1,9 +0,0 @@ -Document ::= <FileName> ComplexElement* ; -abstract Element ; -abstract ComplexElement : Element ; -MappingElement : ComplexElement ::= KeyValuePair* ; -KeyValuePair : ComplexElement ::= <Key> Value:Element ; -ListElement : ComplexElement ::= Element* ; -abstract SimpleElement : Element ; -ValueElement : SimpleElement ::= <Value> ; -StringElement : SimpleElement ::= <Value> ; diff --git a/ragconnect.base/src/main/jastadd/backend/Generation.jadd b/ragconnect.base/src/main/jastadd/intermediate/Generation.jadd similarity index 100% rename from ragconnect.base/src/main/jastadd/backend/Generation.jadd rename to ragconnect.base/src/main/jastadd/intermediate/Generation.jadd diff --git a/ragconnect.base/src/main/jastadd/backend/Mappings.jrag b/ragconnect.base/src/main/jastadd/intermediate/Mappings.jrag similarity index 100% rename from ragconnect.base/src/main/jastadd/backend/Mappings.jrag rename to ragconnect.base/src/main/jastadd/intermediate/Mappings.jrag diff --git a/ragconnect.base/src/main/jastadd/MustacheNodes.relast b/ragconnect.base/src/main/jastadd/intermediate/MustacheNodes.relast similarity index 100% rename from ragconnect.base/src/main/jastadd/MustacheNodes.relast rename to ragconnect.base/src/main/jastadd/intermediate/MustacheNodes.relast diff --git a/ragconnect.base/src/main/jastadd/backend/MustacheNodesToYAML.jrag b/ragconnect.base/src/main/jastadd/intermediate2mustache/MustacheNodesToYAML.jrag similarity index 96% rename from ragconnect.base/src/main/jastadd/backend/MustacheNodesToYAML.jrag rename to ragconnect.base/src/main/jastadd/intermediate2mustache/MustacheNodesToYAML.jrag index 2894d3a8a531a190e8146121dc8e7c97f2cecc91..67fc12fe1fe146459262338ad77779e619ebe300 100644 --- a/ragconnect.base/src/main/jastadd/backend/MustacheNodesToYAML.jrag +++ b/ragconnect.base/src/main/jastadd/intermediate2mustache/MustacheNodesToYAML.jrag @@ -60,7 +60,7 @@ aspect MustacheNodesToYAML { } root.addKeyValuePair("TokenComponents", tokenComponents); - doc.addComplexElement(root); + doc.setRootElement(root); return doc; } @@ -151,5 +151,11 @@ aspect MustacheNodesToYAML { } return innerMappingDefinitions; } +} +aspect Navigation { + eq Document.getChild().program() = null; + eq Document.getChild().ragconnect() = null; + eq Document.getChild().containedFile() = null; + eq Document.getChild().containedFileName() = getFileName(); } diff --git a/ragconnect.base/src/main/jastadd/mustache b/ragconnect.base/src/main/jastadd/mustache new file mode 160000 index 0000000000000000000000000000000000000000..2bf869031ffc69bdb88dafd2cb4464a26502ae2b --- /dev/null +++ b/ragconnect.base/src/main/jastadd/mustache @@ -0,0 +1 @@ +Subproject commit 2bf869031ffc69bdb88dafd2cb4464a26502ae2b diff --git a/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/SimpleMain.java b/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/SimpleMain.java index ee9ed046348efeaa4b12dbc816c55414d93289cf..b04e4776d3c23d7f11d1c49b237c4227e4c67b30 100644 --- a/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/SimpleMain.java +++ b/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/SimpleMain.java @@ -82,7 +82,7 @@ public class SimpleMain { firstLevel.addKeyValuePair(goalPoses); root.setValue(firstLevel); - doc.addComplexElement(root); + doc.setRootElement(root); System.out.println(doc.prettyPrint()); }