aboutsummaryrefslogtreecommitdiff
path: root/module-test/ast.cc
diff options
context:
space:
mode:
Diffstat (limited to 'module-test/ast.cc')
-rw-r--r--module-test/ast.cc121
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;
-}