parse arithmetic binary expressions

This commit is contained in:
2026-08-10 23:35:10 +02:00
parent 891dc6516e
commit 8dd06afde2
10 changed files with 358 additions and 120 deletions
+23 -3
View File
@@ -1,9 +1,14 @@
import "@std/debug"
import "@source/strpool"
TokenId :: distinct u32
NO_ID_TOKEN :: maxval!(TokenId)
Token :: struct {
kind TokenKind
start uint
str_id strpool.StringId = strpool.NO_ID
kind TokenKind
str_id strpool.StringId = strpool.NO_ID_STR
}
TokenKind :: enum {
@@ -22,7 +27,16 @@ TokenKind :: enum {
greater, greater_equal
# assignment
equal, double_colon
double_colon, colon_equal
equal
# arithmetic
plus, minus
star, slash
# assignment & arithmetic
plus_equal, minus_equal
star_equal, slash_equal
# delimiters
open_paren, close_paren
@@ -36,3 +50,9 @@ TokenKind :: enum {
eof
invalid
}
@hide
token_id proc(idx uint) TokenId {
debug.assert(u64(idx) < u64(NO_ID_TOKEN))
return TokenId(idx)
}