From 62189f59a4dbcd5f141ea99f9ed601a18c32d7e8 Mon Sep 17 00:00:00 2001 From: Pacsfury <280690649+Pacsfury@users.noreply.github.com> Date: Sun, 28 Jun 2026 12:43:52 +0200 Subject: [PATCH 1/7] Add new token kinds for modulo and bitwise operations --- libs/frontend/token/include/azc/token.hpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/libs/frontend/token/include/azc/token.hpp b/libs/frontend/token/include/azc/token.hpp index 2b60d6d..887b209 100644 --- a/libs/frontend/token/include/azc/token.hpp +++ b/libs/frontend/token/include/azc/token.hpp @@ -38,6 +38,16 @@ namespace azc::frontend { greater, greater_equal, arrow, + modulo, + pipe, + logical_or, + logical_and, + ampersand, + caret, // ^, bitwise XOR + tilde, // ~, bitwise NOT + dot, + left_bracket, + right_bracket, // Delimiters left_paren, @@ -85,6 +95,13 @@ namespace azc::frontend { case token_kind::greater: return "greater"; case token_kind::greater_equal: return "greater_equal"; case token_kind::arrow: return "arrow"; + case token_kind::modulo: return "modulo"; + case token_kind::ampersand: return "ampersand"; + case token_kind::pipe: return "pipe"; + case token_kind::caret: return "caret"; + case token_kind::tilde: return "tilde"; + case token_kind::right_bracket: return "right_bracket"; + case token_kind::left_bracket: return "left_bracket"; // Delimiters case token_kind::left_paren: return "left_paren"; @@ -111,4 +128,4 @@ namespace azc::frontend { std::size_t column; }; -} // namespace azc::frontend \ No newline at end of file +} // namespace azc::frontend From 598fb03bd5258923fd612fc568d0d03de75bc991 Mon Sep 17 00:00:00 2001 From: Pacsfury <280690649+Pacsfury@users.noreply.github.com> Date: Sun, 28 Jun 2026 12:44:10 +0200 Subject: [PATCH 2/7] Add new token cases in lexer --- libs/frontend/lexer/src/lexer.cpp | 36 +++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/libs/frontend/lexer/src/lexer.cpp b/libs/frontend/lexer/src/lexer.cpp index 8c629b5..ee0929e 100644 --- a/libs/frontend/lexer/src/lexer.cpp +++ b/libs/frontend/lexer/src/lexer.cpp @@ -237,7 +237,39 @@ auto lexer::scan_token(std::vector& tokens) -> void { case ':': emit(tokens, token_kind::colon, start, line, column); break; - + case '%': + emit(tokens, token_kind::modulo, start, line, column); + break; + case '^': + emit(tokens, token_kind::caret, start, line, column); + break; + case '~': + emit(tokens, token_kind::tilde, start, line, column); + break; + case '.': + emit(tokens, token_kind::dot, start, line, column); + break; + case '[': + emit(tokens, token_kind::left_bracket, line, column); + break; + case ']': + emit(tokens, token_kind::left_bracket, line, column); + break; + case '|': + if (match('|')) { + emit(tokens, token_kind::logical_or, start, line, column); + } else { + emit(tokens, token_kind::pipe, start, line, column); + } + break; + case '&': + if (match('&')) { + emit(tokens, token_kind::logical_and, start, line, column); + } else { + emit(tokens, token_kind::ampersand, start, line, column); + } + break; + default: // temporary, it should continue lexing // with a diagnostic @@ -423,4 +455,4 @@ auto lexer::identifier_kind(std::string_view lexeme) noexcept return token_kind::identifier; } -} // namespace azc::frontend \ No newline at end of file +} // namespace azc::frontend From f27651dd389a19fb23b8f94b4c910e3716a3b958 Mon Sep 17 00:00:00 2001 From: Pacsfury <280690649+Pacsfury@users.noreply.github.com> Date: Sun, 28 Jun 2026 13:07:35 +0200 Subject: [PATCH 3/7] Add logical_or and logical_and cases to token.hpp --- libs/frontend/token/include/azc/token.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libs/frontend/token/include/azc/token.hpp b/libs/frontend/token/include/azc/token.hpp index 887b209..6c1e3dc 100644 --- a/libs/frontend/token/include/azc/token.hpp +++ b/libs/frontend/token/include/azc/token.hpp @@ -102,6 +102,8 @@ namespace azc::frontend { case token_kind::tilde: return "tilde"; case token_kind::right_bracket: return "right_bracket"; case token_kind::left_bracket: return "left_bracket"; + case token_kind::logical_or: return "logical_or"; + case token_kind::logical_and: return "logical_and"; // Delimiters case token_kind::left_paren: return "left_paren"; From 8560bab2fe7bc234447aa47ca05f05aea882cd9e Mon Sep 17 00:00:00 2001 From: Pacsfury <280690649+Pacsfury@users.noreply.github.com> Date: Sun, 28 Jun 2026 14:18:47 +0200 Subject: [PATCH 4/7] Fix emit function calls for left brackets --- libs/frontend/lexer/src/lexer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/frontend/lexer/src/lexer.cpp b/libs/frontend/lexer/src/lexer.cpp index ee0929e..577d586 100644 --- a/libs/frontend/lexer/src/lexer.cpp +++ b/libs/frontend/lexer/src/lexer.cpp @@ -250,10 +250,10 @@ auto lexer::scan_token(std::vector& tokens) -> void { emit(tokens, token_kind::dot, start, line, column); break; case '[': - emit(tokens, token_kind::left_bracket, line, column); + emit(tokens, token_kind::left_bracket, start, line, column); break; case ']': - emit(tokens, token_kind::left_bracket, line, column); + emit(tokens, token_kind::left_bracket, start, line, column); break; case '|': if (match('|')) { From 425392b323178f9a3ded0fcbcf824b3fb0ef9d9b Mon Sep 17 00:00:00 2001 From: Pacsfury <280690649+Pacsfury@users.noreply.github.com> Date: Mon, 29 Jun 2026 16:18:38 +0200 Subject: [PATCH 5/7] Fix bracket emission in lexer --- libs/frontend/lexer/src/lexer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/frontend/lexer/src/lexer.cpp b/libs/frontend/lexer/src/lexer.cpp index fdc2862..4ea6c73 100644 --- a/libs/frontend/lexer/src/lexer.cpp +++ b/libs/frontend/lexer/src/lexer.cpp @@ -274,7 +274,7 @@ auto lexer::scan_token(std::vector& tokens) -> void { emit(tokens, token_kind::left_bracket, start, line, column); break; case ']': - emit(tokens, token_kind::left_bracket, start, line, column); + emit(tokens, token_kind::right_bracket, start, line, column); break; case '|': if (match('|')) { From f467592415eb017ba9c545c1d7f4f6f1284c63e9 Mon Sep 17 00:00:00 2001 From: Pacsfury <280690649+Pacsfury@users.noreply.github.com> Date: Mon, 29 Jun 2026 16:19:56 +0200 Subject: [PATCH 6/7] Reorganize token kinds and update switch cases Reordered token kinds to move 'dot', 'left_bracket', and 'right_bracket' to the end of the list. Updated switch case statements to reflect the new order. --- libs/frontend/token/include/azin/token.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libs/frontend/token/include/azin/token.hpp b/libs/frontend/token/include/azin/token.hpp index 5fdfff3..8e985ce 100644 --- a/libs/frontend/token/include/azin/token.hpp +++ b/libs/frontend/token/include/azin/token.hpp @@ -57,9 +57,6 @@ namespace azc::frontend { ampersand, caret, // ^, bitwise XOR tilde, // ~, bitwise NOT - dot, - left_bracket, - right_bracket, // Delimiters left_paren, @@ -69,6 +66,9 @@ namespace azc::frontend { comma, semicolon, colon, + dot, + left_bracket, + right_bracket, eof, }; @@ -121,8 +121,6 @@ namespace azc::frontend { case token_kind::pipe: return "pipe"; case token_kind::caret: return "caret"; case token_kind::tilde: return "tilde"; - case token_kind::right_bracket: return "right_bracket"; - case token_kind::left_bracket: return "left_bracket"; case token_kind::logical_or: return "logical_or"; case token_kind::logical_and: return "logical_and"; @@ -134,6 +132,8 @@ namespace azc::frontend { case token_kind::comma: return "comma"; case token_kind::semicolon: return "semicolon"; case token_kind::colon: return "colon"; + case token_kind::right_bracket: return "right_bracket"; + case token_kind::left_bracket: return "left_bracket"; case token_kind::eof: return "eof"; } From 422b3092003a577010ced2dae84a92e5e94507bd Mon Sep 17 00:00:00 2001 From: Pacsfury <280690649+Pacsfury@users.noreply.github.com> Date: Mon, 29 Jun 2026 17:18:01 +0200 Subject: [PATCH 7/7] Add case for token_kind::dot in token.hpp --- libs/frontend/token/include/azin/token.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/frontend/token/include/azin/token.hpp b/libs/frontend/token/include/azin/token.hpp index 8e985ce..85858a2 100644 --- a/libs/frontend/token/include/azin/token.hpp +++ b/libs/frontend/token/include/azin/token.hpp @@ -130,6 +130,7 @@ namespace azc::frontend { case token_kind::left_brace: return "left_brace"; case token_kind::right_brace: return "right_brace"; case token_kind::comma: return "comma"; + case token_kind::dot: return "dot"; case token_kind::semicolon: return "semicolon"; case token_kind::colon: return "colon"; case token_kind::right_bracket: return "right_bracket";