summaryrefslogtreecommitdiff
path: root/src/compiler/lexer.c
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-04-09 17:52:34 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-04-09 17:52:34 +0330
commit9b355a18b14f2ece7707e6c5334124dcc0961e2d (patch)
treea14d72cfacb397ba00a5cc0b4813a02d6b3272a5 /src/compiler/lexer.c
parent27ac6c6f9b7f108b8b0e91f6e45a95ecc218934f (diff)
add logical and or not
Diffstat (limited to 'src/compiler/lexer.c')
-rw-r--r--src/compiler/lexer.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/compiler/lexer.c b/src/compiler/lexer.c
index 71a8572..d53560e 100644
--- a/src/compiler/lexer.c
+++ b/src/compiler/lexer.c
@@ -47,6 +47,7 @@ const char *LEXER_TOKEN_STRINGS[] = {
"LEXER_TOKEN_SYMBOL_PLUS",
"LEXER_TOKEN_SYMBOL_MINUS",
"LEXER_TOKEN_SYMBOL_ADDRESS",
+ "LEXER_TOKEN_SYMBOL_LOGICAL_NOT",
"LEXER_TOKEN_SYMBOL_MULTIPLY",
"LEXER_TOKEN_SYMBOL_DIVIDE",
@@ -62,6 +63,9 @@ const char *LEXER_TOKEN_STRINGS[] = {
"LEXER_TOKEN_SYMBOL_GREATER_OR_EQUAL",
"LEXER_TOKEN_SYMBOL_SMALLER_OR_EQUAL",
+ "LEXER_TOKEN_SYMBOL_LOGICAL_AND",
+ "LEXER_TOKEN_SYMBOL_LOGICAL_OR",
+
"LEXER_TOKEN_SYMBOL_COLON",
"LEXER_TOKEN_SYMBOL_ASSIGN",
@@ -91,8 +95,9 @@ const char *LEXER_TOKEN_STRINGS[] = {
};
const char *LEXER_SYMBOL_STRINGS[] = {
- ";", "(", ")", "{", "}", "->", ":", "=", "+=", "-=", "*=", "/=", "%=", ",",
- "+", "-", "*", "/", "%", "==", "!=", ">", ">=", "<", "<=", "&", ".*", ".",
+ ";", "(", ")", "{", "}", "->", ":", "=", "+=", "-=", "*=",
+ "/=", "%=", ",", "+", "-", "*", "/", "%", "==", "!=", ">",
+ ">=", "<", "<=", "&", ".*", ".", "!", "&&", "||",
};
const LexerToken LEXER_SYMBOL_TOKENS[] = {
LEXER_TOKEN_SYMBOL_EOL,
@@ -123,6 +128,9 @@ const LexerToken LEXER_SYMBOL_TOKENS[] = {
LEXER_TOKEN_SYMBOL_ADDRESS,
LEXER_TOKEN_SYMBOL_DEREFERENCE,
LEXER_TOKEN_SYMBOL_ACCESS,
+ LEXER_TOKEN_SYMBOL_LOGICAL_NOT,
+ LEXER_TOKEN_SYMBOL_LOGICAL_AND,
+ LEXER_TOKEN_SYMBOL_LOGICAL_OR,
};
const size_t LEXER_SYMBOL_SIZE =
sizeof(LEXER_SYMBOL_TOKENS) / sizeof(*LEXER_SYMBOL_TOKENS);
@@ -369,6 +377,9 @@ void lexerPushClear(LexerNodeArray *array, size_t *array_size, char *iter,
case LEXER_TOKEN_SYMBOL_ADDRESS:
case LEXER_TOKEN_SYMBOL_DEREFERENCE:
case LEXER_TOKEN_SYMBOL_ACCESS:
+ case LEXER_TOKEN_SYMBOL_LOGICAL_NOT:
+ case LEXER_TOKEN_SYMBOL_LOGICAL_AND:
+ case LEXER_TOKEN_SYMBOL_LOGICAL_OR:
if (*array_size == array->size) {
*array_size += 1 + *array_size / 2;
array->data =
@@ -412,6 +423,7 @@ bool isSymbol(char c) {
case '=':
case '!':
case '&':
+ case '|':
case ';':
case ':':
case ',':