diff options
author | Spartan322 <Megacake1234@gmail.com> | 2023-07-28 06:52:00 +0200 |
---|---|---|
committer | Spartan322 <Megacake1234@gmail.com> | 2023-08-17 09:04:56 +0200 |
commit | 90f15b582788a9aab0dfe6c81fc4cbbe1d4d3308 (patch) | |
tree | db58100ed696c992addee1a9113b5415f55615ad /src/headless | |
parent | e941573f47fb867ff75c8a2cf78302b754ffbeee (diff) |
Rework Grammar and Parser
Properly construct headless binary with basic validation and print functionality
Add Error and Warning structs to Parser
Add FileNode pointer getter to Parser
Change all `char8_t*` and `const char8_t` to `const char*` in Parser
Add Parser move operators and Parser deconstructor
Add BufferHandler PIMPL object to Parser
Add UTF-8 file Warning
Add proper Grammar value retrieval
Simplify AST node resolution for Grammar
Add AbstractSyntaxTree for v2script data parser:
Has compile-time embedded type information accessible at compile-time and runtime
Optionally compiled AST print functionality
Add detail/TypeName.hpp
Add detail/SelfType.hpp
Add detail/DetectUtf8.hpp
Add detail/Errors.hpp
Add detail/Warnings.hpp
Add `OPENVIC_DATALOADER_PRINT_NODES` for headless construction
Fix wrong environment reference for headless construction in SConstruct
Diffstat (limited to 'src/headless')
-rw-r--r-- | src/headless/main.cpp | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/src/headless/main.cpp b/src/headless/main.cpp index ffc6dab..afd569f 100644 --- a/src/headless/main.cpp +++ b/src/headless/main.cpp @@ -1,3 +1,35 @@ -int main() { +#include <cstdio> +#include <iostream> +#include <string> +#include <vector> + +#include <openvic-dataloader/v2script/Parser.hpp> + +int main(int argc, char** argv) { + if (argc < 2) { + std::fprintf(stderr, "usage: %s <filename>", argv[0]); + return 1; + } + + auto parser = ovdl::v2script::Parser::from_file(argv[1]); + if (parser.has_error()) { + return 1; + } + + parser.simple_parse(); + if (parser.has_error()) { + return 2; + } + + if (parser.has_warning()) { + for (auto& warning : parser.get_warnings()) { + std::cerr << "Warning: " << warning.message << std::endl; + } + } + +#ifdef OPENVIC_DATALOADER_PRINT_NODES + parser.get_file_node()->print(std::cout); +#endif + return 0; }
\ No newline at end of file |