summaryrefslogtreecommitdiff
path: root/src/compiler/lexer.c
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-03-26 02:06:04 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-03-26 02:06:04 +0330
commit3950c23e40207cd8a374fcd4aa5739c0a63115f5 (patch)
tree9bc4703a7eeb2d2ae9ca6324e61c56598cefa134 /src/compiler/lexer.c
parent7bd975ec69c8dc9d5a6343a2e5f06bd7dd78d78e (diff)
add address operator
Diffstat (limited to 'src/compiler/lexer.c')
-rw-r--r--src/compiler/lexer.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/compiler/lexer.c b/src/compiler/lexer.c
index 08eef75..905186a 100644
--- a/src/compiler/lexer.c
+++ b/src/compiler/lexer.c
@@ -68,13 +68,14 @@ const char *LEXER_TOKEN_STRINGS[] = {
"LEXER_TOKEN_SYMBOL_GREATER_OR_EQUAL",
"LEXER_TOKEN_SYMBOL_SMALLER_OR_EQUAL",
"LEXER_TOKEN_SYMBOL_POINTER",
+ "LEXER_TOKEN_SYMBOL_ADDRESS",
"LEXER_TOKEN_NONE",
};
const char *LEXER_SYMBOL_STRINGS[] = {
";", "(", ")", "{", "}", "->", ":", "=", "+=", "-=", "*=", "/=", "%=",
- ",", "+", "-", "*", "/", "%", "==", "!=", ">", ">=", "<", "<=",
+ ",", "+", "-", "*", "/", "%", "==", "!=", ">", ">=", "<", "<=", "&",
};
const LexerToken LEXER_SYMBOL_TOKENS[] = {
LEXER_TOKEN_SYMBOL_EOL,
@@ -102,6 +103,7 @@ const LexerToken LEXER_SYMBOL_TOKENS[] = {
LEXER_TOKEN_SYMBOL_GREATER_OR_EQUAL,
LEXER_TOKEN_SYMBOL_SMALLER,
LEXER_TOKEN_SYMBOL_SMALLER_OR_EQUAL,
+ LEXER_TOKEN_SYMBOL_ADDRESS,
};
const size_t LEXER_SYMBOL_SIZE =
sizeof(LEXER_SYMBOL_TOKENS) / sizeof(*LEXER_SYMBOL_TOKENS);
@@ -305,6 +307,7 @@ void lexerPushClear(LexerNodeArray *array, size_t *array_size, char *iter,
case LEXER_TOKEN_SYMBOL_GREATER_OR_EQUAL:
case LEXER_TOKEN_SYMBOL_SMALLER_OR_EQUAL:
case LEXER_TOKEN_SYMBOL_POINTER:
+ case LEXER_TOKEN_SYMBOL_ADDRESS:
if (*array_size == array->size) {
*array_size += 1 + *array_size / 2;
array->data =
@@ -347,6 +350,7 @@ bool isSymbol(char c) {
case '%':
case '=':
case '!':
+ case '&':
return true;
default:
return false;