cleanup (isle 6 again?)

This commit is contained in:
2026-08-11 21:29:27 +02:00
parent 8dd06afde2
commit 101795c0b8
8 changed files with 63 additions and 42 deletions
+11 -10
View File
@@ -13,13 +13,13 @@ import "@source/lexer"
TokenId :: alias lexer.TokenId
@hide:file
NO_ID_TOKEN :: alias lexer.NO_ID_TOKEN
NO_TOKEN :: alias lexer.NO_TOKEN
NodeId :: distinct u32
ExtraId :: distinct u32
NO_ID_NODE :: maxval!(NodeId)
NO_ID_EXTRA :: maxval!(ExtraId)
NO_NODE :: maxval!(NodeId)
NO_EXTRA :: maxval!(ExtraId)
# unsafe access on its own; NodeKind serves as a the tag
# that determines the variant.
@@ -31,10 +31,10 @@ NodeData :: union {
Node :: struct {
kind NodeKind
main_token TokenId = NO_ID_TOKEN
main_token TokenId = NO_TOKEN
data0 NodeData = NodeData{ node_id = NO_ID_NODE }
data1 NodeData = NodeData{ node_id = NO_ID_NODE }
data0 NodeData = NodeData{ node_id = NO_NODE }
data1 NodeData = NodeData{ node_id = NO_NODE }
}
NodeKind :: enum {
@@ -49,7 +49,8 @@ NodeKind :: enum {
expr_identifier
# UNARY:
# todo: document
# * main_token: operator
# * data0: NodeId - expression
expr_unary
# BINARY:
@@ -77,16 +78,16 @@ NodeKind :: enum {
}
node_id proc(idx uint) NodeId {
debug.assert(u64(idx) < u64(NO_ID_NODE))
debug.assert(u64(idx) < u64(NO_NODE))
return NodeId(idx)
}
maybe_node_id proc(idx uint) ?NodeId {
if (u64(idx) >= u64(NO_ID_NODE)) return null
if (u64(idx) >= u64(NO_NODE)) return null
return NodeId(idx)
}
extra_id proc(idx uint) ExtraId {
debug.assert(u64(idx) < u64(NO_ID_EXTRA))
debug.assert(u64(idx) < u64(NO_EXTRA))
return ExtraId(idx)
}