diff options
| author | _ov4 <ov4@ov4.org> | 2026-09-08 12:31:17 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-09-08 12:31:17 +0000 |
| commit | 02e7e15bdc8f36f08e90f69096a4cb93006885e8 (patch) | |
| tree | dcc8211fe64c7c530208ceade2220fa77d439193 /module-test/ast.cc | |
| parent | bb39c49a0dbfd0ee05ec5ac3bba96916b175fa92 (diff) | |
add argument helper
Diffstat (limited to 'module-test/ast.cc')
| -rw-r--r-- | module-test/ast.cc | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/module-test/ast.cc b/module-test/ast.cc deleted file mode 100644 index 60d4b22..0000000 --- a/module-test/ast.cc +++ /dev/null @@ -1,121 +0,0 @@ -// TEST FILE -// ONLY FOR DEMONSTRATION -// will be removed as soon as lexer is completed - - -#include <iostream> -#include <string> -#include <type_traits> -#include <unistd.h> -#include <cstring> -#include <vector> -#include <print> - -#include "magic_enum/magic_enum.hpp" - -#include "lexer/shared.h" -#include "lexer/ast.h" -#include "lexer/enum_type.h" -#include "lexer/token.h" - -using namespace std; -using namespace ov4; - -constexpr int MAXLINE = 1024; - - - - -int main() -{ - int test_case = 10; - string s; - - switch (test_case) - { - case 0: - s = "hello | hi || foo && bar || baz &"; - break; - case 1: - s = "hi"; - break; - case 2: - s = "&&"; - break; - case 3: - s = "hi (hello || foo)"; - break; - case 4: - s = "alpha || beta (gamma argument && (delta || epsilon second_argument & ) )"; - break; - case 5: - s = "alpha || beta && (gamma || epsilon)"; - break; - - // bracket matching test - case 6: - s = ")alpha && beta("; - break; - - // basic scriptio continua - // syntax is wrong but just to test tokenizer - case 7: - s = "((alpha&|&&beta)||gamma&&&delta)"; - break; - - // simple guard test - case 8: - s = "\'text\' &&"; - break; - - // guard test - case 9: - s = "\'realOperator\' && \"fake&&\" real ||"; - break; - - // guard test - // with space - case 10: - s = "\'This should be 1 token\' symbol && text \'&&\'"; - break; - - default: - return 0; - } - - - - tokenizer(s); - cout << "---------- tokenizer ----------" << endl; - for (auto c : token) - { - if (c.token_type == LOGIC_AND) - println("{} LOGIC_AND", c.bracket_depth); - else if (c.token_type == LOGIC_OR) - println("{} LOGIC_OR", c.bracket_depth); - else if (c.token_type == ASYNC) - println("{} ASYNC", c.bracket_depth); - else if (c.token_type == PIPE) - println("{} PIPE", c.bracket_depth); - else if (c.token_type == LEFT_BRACKET) - println("{} LEFT_BRACKET", c.bracket_depth); - else if (c.token_type == RIGHT_BRACKET) - println("{} RIGHT_BRACKET", c.bracket_depth); - else if (c.token_type == TEXT) - println("{} TEXT .{}.", c.bracket_depth, c.text); - } - - cout << "---------- parse ----------" << endl; - - parse(0, token.size(), alloc_ast()); - - cout << "---------- AST ----------" << endl; - for (size_t i = 0; i < ast.size(); i++) - { - print("{}: type: {} left: {} right: {}", i, magic_enum::enum_name(ast[i].token_type), ast[i].left, ast[i].right); - if (ast[i].token_type == TEXT) - print(" command: {}", ast[i].command_text); - println(); - } - return 0; -} |
