From 4b9b4d3607a1f59451a2840a38fea06e1bc36e75 Mon Sep 17 00:00:00 2001 From: ChUrl Date: Tue, 21 Mar 2023 15:49:47 +0100 Subject: [PATCH] main.cpp: Generate code from AST --- CMakeLists.txt | 2 ++ src/main.cpp | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d0f436..5c782f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,9 @@ add_executable(lasm src/ast/nodes/JumpNode.cpp src/ast/Observer.cpp src/ast/PrefixObserver.cpp + src/ast/PostfixObserver.cpp src/codegen/PrintObserver.cpp + src/codegen/CodegenObserver.cpp src/parser/Parser.cpp) target_link_libraries(lasm Boost::program_options) \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 081fb22..40a7dee 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -8,6 +8,7 @@ #include "ast/Node.h" #include "parser/Parser.h" #include "codegen/PrintObserver.h" +#include "codegen/CodegenObserver.h" namespace po = boost::program_options; @@ -92,8 +93,13 @@ auto main(int argc, char **argv) -> int { // Parsing std::cout << "Parsing:" << std::endl; const std::unique_ptr ast = parse(tokens); + PrintObserver(*ast).Observer::traverse(); // Print the AST - PrintObserver(*ast).Observer::traverse(); + // Codegen + std::cout << "Codegen:" << std::endl; + std::string output_string; + CodegenObserver(*ast, output_string).Observer::traverse(); + std::cout << std::hex << output_string << std::endl; return 0; }