Line | Branch | Exec | Source |
---|---|---|---|
1 | // Include | ||
2 | #include "cli/commands/codegen.h" | ||
3 | |||
4 | // Kiwi | ||
5 | #include "lexer/buffer.h" | ||
6 | #include "lexer/lexer.h" | ||
7 | #include "parser/parser.h" | ||
8 | #include "sema/sema.h" | ||
9 | |||
10 | #include "codegen/clang/clang_gen.h" | ||
11 | #include "codegen/llvm/llvm_gen.h" | ||
12 | |||
13 | |||
14 | namespace lython { | ||
15 | |||
16 | argparse::ArgumentParser* CodegenCmd::parser() { | ||
17 | 8 | argparse::ArgumentParser* p = new_parser(); | |
18 | |||
19 | 8 | p->add_argument("--file") // | |
20 |
1/1✓ Branch 2 taken 8 times.
|
8 | .help("file to process"); |
21 | |||
22 | 8 | return p; | |
23 | } | ||
24 | |||
25 | int CodegenCmd::main(argparse::ArgumentParser const& args) { | ||
26 | |||
27 | ✗ | set_log_level(LogLevel::Trace, true); | |
28 | ✗ | set_log_level(LogLevel::Debug, true); | |
29 | ✗ | set_log_level(LogLevel::Info, true); | |
30 | ✗ | set_log_level(LogLevel::Warn, true); | |
31 | ✗ | set_log_level(LogLevel::Error, true); | |
32 | ✗ | set_log_level(LogLevel::Fatal, true); | |
33 | |||
34 | ✗ | std::string file; | |
35 | ✗ | if (args.is_used("--file")) { | |
36 | ✗ | file = args.get<std::string>("--file"); | |
37 | } | ||
38 | |||
39 | ✗ | std::unique_ptr<AbstractBuffer> reader = std::make_unique<FileBuffer>(String(file.c_str())); | |
40 | ✗ | Module* mod = nullptr; | |
41 | |||
42 | ✗ | Lexer lex(*reader.get()); | |
43 | ✗ | Parser parser(lex); | |
44 | ✗ | mod = parser.parse_module(); | |
45 | |||
46 | ✗ | parser.show_diagnostics(std::cout); | |
47 | |||
48 | ✗ | SemanticAnalyser sema; | |
49 | ✗ | sema.exec(mod, 0); | |
50 | ✗ | sema.show_diagnostic(std::cout, &lex); | |
51 | |||
52 | #if WITH_CLANG_CODEGEN | ||
53 | std::cout << "CLANG_CODE_GEN\n"; | ||
54 | ClangGen generator; | ||
55 | generator.exec(mod, 0); | ||
56 | generator.dump(); | ||
57 | #elif WITH_LLVM_CODEGEN | ||
58 | ✗ | std::cout << "LLVM_CODE_GEN\n"; | |
59 | ✗ | LLVMGen generator; | |
60 | ✗ | generator.exec(mod, 0); | |
61 | ✗ | generator.dump(); | |
62 | #endif | ||
63 | |||
64 | ✗ | return 0; | |
65 | ✗ | }; | |
66 | |||
67 | |||
68 | |||
69 | } | ||
70 |