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; }