summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom Willemse2020-11-18 17:10:21 -0800
committerGravatar Tom Willemse2020-11-18 17:10:21 -0800
commit055b5257fb6df2a0893c43ed342befd83d20af94 (patch)
tree37ed0aff8a328281c236fc0ac6d29dfac27dab36
parent2894c7ebfd08382a6c166ad5a643e0cf083b921c (diff)
downloadcrafting-interpreters-055b5257fb6df2a0893c43ed342befd83d20af94.tar.gz
crafting-interpreters-055b5257fb6df2a0893c43ed342befd83d20af94.zip
Chapter 8: Add statement AST generator
-rw-r--r--src/com/craftinginterpreters/lox/CMakeLists.txt9
-rw-r--r--src/com/craftinginterpreters/tool/GenerateAst.java1
2 files changed, 7 insertions, 3 deletions
diff --git a/src/com/craftinginterpreters/lox/CMakeLists.txt b/src/com/craftinginterpreters/lox/CMakeLists.txt
index ca2ee27..e635245 100644
--- a/src/com/craftinginterpreters/lox/CMakeLists.txt
+++ b/src/com/craftinginterpreters/lox/CMakeLists.txt
@@ -1,8 +1,11 @@
get_target_property(GENERATE_AST_JAR GenerateAst JAR_FILE)
-set(EXPR_JAVA_FILENAME ${CMAKE_CURRENT_BINARY_DIR}/Expr.java CACHE INTERNAL "")
+set(GENERATED_JAVA_FILENAMES
+ ${CMAKE_CURRENT_BINARY_DIR}/Expr.java
+ ${CMAKE_CURRENT_BINARY_DIR}/Stmt.java
+ CACHE INTERNAL "")
-add_custom_command(OUTPUT ${EXPR_JAVA_FILENAME}
+add_custom_command(OUTPUT ${GENERATED_JAVA_FILENAMES}
COMMAND java -jar ${GENERATE_AST_JAR} ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS GenerateAst)
@@ -11,7 +14,7 @@ add_jar(Lox
TokenType.java
Token.java
Scanner.java
- ${EXPR_JAVA_FILENAME}
+ ${GENERATED_JAVA_FILENAMES}
AstPrinter.java
Parser.java
Interpreter.java
diff --git a/src/com/craftinginterpreters/tool/GenerateAst.java b/src/com/craftinginterpreters/tool/GenerateAst.java
index 5e79d2f..86d6942 100644
--- a/src/com/craftinginterpreters/tool/GenerateAst.java
+++ b/src/com/craftinginterpreters/tool/GenerateAst.java
@@ -16,6 +16,7 @@ public class GenerateAst {
defineAst(outputDir, "Expr", Arrays.asList("Binary : Expr left, Token operator, Expr right",
"Grouping : Expr expression", "Literal : Object value", "Unary : Token operator, Expr right"));
+ defineAst(outputDir, "Stmt", Arrays.asList("Expression : Expr expression", "Print : Expr expression"));
}
private static void defineAst(String outputDir, String baseName, List<String> types) throws IOException {