+++ /dev/null
-#!/usr/bin/env bash
-/var/user_data/Thomas-developer/GQL_to_Cypher/tool/jdk-22.0.1+8/bin/java -cp :/var/user_data/Thomas-developer/GQL_to_Cypher/developer/jvm:/var/user_data/Thomas-developer/GQL_to_Cypher/tool/executor/antlr-4.11.1-complete.jar:/var/user_data/Thomas-developer/GQL_to_Cypher/developer/jvm:/var/user_data/Thomas-developer/GQL_to_Cypher/tool/executor/antlr-4.11.1-complete.jar:/var/user_data/Thomas-developer/GQL_to_Cypher/developer/jvm:/var/user_data/Thomas-developer/GQL_to_Cypher/tool/executor/antlr-4.11.1-complete.jar:/var/user_data/Thomas-developer/GQL_to_Cypher/developer/jvm:/var/user_data/Thomas-developer/GQL_to_Cypher/tool/executor/antlr-4.11.1-complete.jar:/var/user_data/Thomas-developer/GQL_to_Cypher/developer/jvm:/var/user_data/Thomas-developer/GQL_to_Cypher/tool/executor/antlr-4.11.1-complete.jar:/var/user_data/Thomas-developer/GQL_to_Cypher/developer/jvm:/var/user_data/Thomas-developer/GQL_to_Cypher/developer/jvm/Arithmetic_Echo.jar Arithmetic_Echo $@
+++ /dev/null
-#!/usr/bin/env bash
-/var/user_data/Thomas-developer/GQL_to_Cypher/tool/jdk-22.0.1+8/bin/java -cp :/var/user_data/Thomas-developer/GQL_to_Cypher/developer/jvm:/var/user_data/Thomas-developer/GQL_to_Cypher/tool/executor/antlr-4.11.1-complete.jar:/var/user_data/Thomas-developer/GQL_to_Cypher/developer/jvm:/var/user_data/Thomas-developer/GQL_to_Cypher/tool/executor/antlr-4.11.1-complete.jar:/var/user_data/Thomas-developer/GQL_to_Cypher/developer/jvm:/var/user_data/Thomas-developer/GQL_to_Cypher/tool/executor/antlr-4.11.1-complete.jar:/var/user_data/Thomas-developer/GQL_to_Cypher/developer/jvm:/var/user_data/Thomas-developer/GQL_to_Cypher/tool/executor/antlr-4.11.1-complete.jar:/var/user_data/Thomas-developer/GQL_to_Cypher/developer/jvm:/var/user_data/Thomas-developer/GQL_to_Cypher/tool/executor/antlr-4.11.1-complete.jar:/var/user_data/Thomas-developer/GQL_to_Cypher/developer/jvm:/var/user_data/Thomas-developer/GQL_to_Cypher/developer/jvm/RuleNameList.jar RuleNameList $@
RuleNameListRegx: $(EXECUTOR_IN_DIR)/RuleNameListRegx
RuleNameList: $(EXECUTOR_IN_DIR)/RuleNameList
-GeneratePrintVisitorMethod: $(EXECUTOR_IN_DIR)/GeneratePrintVisitorMethod
-GeneratePrintVisitor: $(EXECUTOR_IN_DIR)/GeneratePrintVisitor GeneratePrintVisitorMethod
+GeneratePrintVisitorMethod:\
+ $(JAVA_COMP_IN_PRIMARY_DIR)/StringUtils.java\
+ $(EXECUTOR_IN_DIR)/GeneratePrintVisitorMethod
+GeneratePrintVisitor:\
+ $(JAVA_COMP_IN_PRIMARY_DIR)/StringUtils.java\
+ $(EXECUTOR_IN_DIR)/GeneratePrintVisitor GeneratePrintVisitorMethod
public class GeneratePrintVisitor {
public static void main(String[] args) throws IOException {
- if (args.length != 2) {
- System.err.println("Usage: java GeneratePrintVisitor <grammarFile> <outputFile>");
+ if (args.length < 2 || args.length > 3) {
+ System.err.println("Usage: java GeneratePrintVisitor <grammarFile> <outputFile> [indentLevel]");
System.exit(1);
}
String grammarFile = args[0];
String outputFile = args[1];
+ int indentLevel = args.length == 3 ? Integer.parseInt(args[2]) : 0;
// Extract the grammar name from the file name
String grammarName = Paths.get(grammarFile).getFileName().toString().replace(".g4", "");
// Template for the PrintVisitor class
String classTemplate = """
- import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
+ import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
- public class PrintVisitor extends AbstractParseTreeVisitor<String> {
- private final String[] ruleNames;
+ public class PrintVisitor extends AbstractParseTreeVisitor<String> {
+ private final String[] ruleNames;
- public PrintVisitor(String[] ruleNames) {
- this.ruleNames = ruleNames;
- }
+ public PrintVisitor(String[] ruleNames) {
+ this.ruleNames = ruleNames;
+ }
+
+ // Generated print methods
+ """;
- // Generated print methods
- """;
+ // Indent the class template
+ String indentedClassTemplate = StringUtils.indentString(classTemplate, indentLevel);
// Generate and output the PrintVisitor class
try (PrintWriter writer = new PrintWriter(outputFile)) {
// Write the class template
- writer.print(classTemplate);
+ writer.print(indentedClassTemplate);
- // Generate and write the print methods
for (String ruleName : ruleNames) {
- GeneratePrintVisitorMethod.generatePrintMethod(parserName, ruleName, writer);
+ GeneratePrintVisitorMethod.generatePrintMethod(parserName, ruleName, writer, indentLevel + 1);
}
// Close the class
- writer.println("}");
+ writer.println(StringUtils.indentString("}", indentLevel));
}
}
public static void main(String[] args) {
if (args.length != 3) {
- System.err.println("Usage: GeneratePrintVisitorMethod <parserName> <ruleName> <outputFile>");
+ System.err.println("Usage: java GeneratePrintVisitorMethod <parserName> <ruleName> <outputFile>");
System.exit(1);
}
String outputFile = args[2];
try (PrintWriter writer = new PrintWriter(outputFile)) {
- generatePrintMethod(parserName, ruleName, writer);
+ generatePrintMethod(parserName, ruleName, writer, 0); // Default indent level 0
} catch (Exception e) {
e.printStackTrace();
}
}
- public static void generatePrintMethod(String parserName, String ruleName, PrintWriter writer) {
+ public static void generatePrintMethod(String parserName, String ruleName, PrintWriter writer, int indentLevel) {
// Template for the print method using text blocks
String template = """
- public String visit _______0_ (_______1_. _______0_ Context ctx) {
- StringBuilder result = new StringBuilder();
- result.append("_______0_(");
- for (int i = 0; i < ctx.getChildCount(); i++) {
- if (i > 0) result.append(", ");
- result.append(visit(ctx.getChild(i)));
- }
- result.append(")");
- return result.toString();
+ public String visit_______0_(_______1_._______0_Context ctx) {
+ StringBuilder result = new StringBuilder();
+ result.append("_______0_(");
+ for (int i = 0; i < ctx.getChildCount(); i++) {
+ if (i > 0) result.append(", ");
+ result.append(visit(ctx.getChild(i)));
}
- """;
+ result.append(")");
+ return result.toString();
+ }
+ """;
// Fill in the blanks in the template
template = template.replace("_______0_", ruleName);
template = template.replace("_______1_", parserName);
+ // Indent the template
+ String indentedTemplate = StringUtils.indentString(template, indentLevel);
+
// Write the template to the output file
- writer.print(template);
+ writer.print(indentedTemplate);
+ writer.println();
}
}
--- /dev/null
+public class StringUtils {
+
+ private static int spacesPerIndentLevel = 2; // Default to 2 spaces per indent level
+
+ public static void setSpacesPerIndentLevel(int spaces) {
+ spacesPerIndentLevel = spaces;
+ }
+
+ public static String indentString(String template, int indentLevel) {
+ String indent = " ".repeat(spacesPerIndentLevel * indentLevel);
+ String[] lines = template.split("\n");
+ StringBuilder indentedTemplate = new StringBuilder();
+ for (String line : lines) {
+ indentedTemplate.append(indent).append(line).append("\n");
+ }
+ return indentedTemplate.toString();
+ }
+}