cleanup (isle 6 again?)
This commit is contained in:
+11
-10
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user