aboutsummaryrefslogtreecommitdiff
path: root/src/lexer
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-09-09 12:28:04 +0000
committer_ov4 <ov4@ov4.org>2026-09-09 12:28:04 +0000
commitffcf768d07c82a2213674fbec623c684e8feb9ee (patch)
treeba5a0182fa72aeed61073f7c7063ab268ecdd6c0 /src/lexer
parent88a3cd56846200c883816a2a394c8ae5e466fe21 (diff)
add error system
Diffstat (limited to 'src/lexer')
-rw-r--r--src/lexer/ast.cc13
-rw-r--r--src/lexer/token.cc1
2 files changed, 6 insertions, 8 deletions
diff --git a/src/lexer/ast.cc b/src/lexer/ast.cc
index 755e909..4fbb62a 100644
--- a/src/lexer/ast.cc
+++ b/src/lexer/ast.cc
@@ -9,6 +9,7 @@
#include "lexer/token.h"
#include "lexer/symbol_property.h"
#include "util/io.h"
+#include "error.h"
using namespace std;
@@ -112,29 +113,25 @@ void T_lexer::parse(size_t cmd_begin, size_t cmd_end, size_t ast_vec)
// miss left
if (symbol_property[token_str].left == EXIST && cmd_begin == found_pos)
{
- loggerln("parse: missing left child");
- exit(-1); // TODO
+ throw T_error{error_code::AST_MISS_LEFT_CHILD, "parse: missing left child"};
}
// miss right
if (symbol_property[token_str].right == EXIST && cmd_end-1 == found_pos)
{
- loggerln("parse: missing right child");
- exit(-1); // TODO
+ throw T_error{error_code::AST_MISS_RIGHT_CHILD, "parse: missing right child"};
}
// should not exist left
if (symbol_property[token_str].left == NOT_EXIST && cmd_begin != found_pos)
{
- loggerln("parse: left child should NOT exist");
- exit(-1); // TODO
+ throw T_error{error_code::AST_EXIST_LEFT_CHILLD, "parse: left child should NOT exist"};
}
// should not exist right
if (symbol_property[token_str].right == NOT_EXIST && cmd_end-1 != found_pos)
{
- loggerln("parse: right child should NOT exist");
- exit(-1); // TODO
+ throw T_error{error_code::AST_EXIST_LEFT_CHILLD, "parse: right child should NOT exist"};
}
size_t l = alloc_ast();
diff --git a/src/lexer/token.cc b/src/lexer/token.cc
index 071d00c..091a7ab 100644
--- a/src/lexer/token.cc
+++ b/src/lexer/token.cc
@@ -8,6 +8,7 @@
#include "lexer/enum_type.h"
#include "lexer/symbol_property.h"
#include "util/io.h"
+#include "error.h"
using namespace std; // remove this