parse unary prefix and postfix expressions

This commit is contained in:
2026-08-12 20:50:51 +02:00
parent a384949ddf
commit 8fbf137c6d
5 changed files with 93 additions and 11 deletions
+20
View File
@@ -116,6 +116,8 @@ render_expr proc(renderer @mut Renderer,
try arraylist.append(&renderer.tokens, tok)
yield node.main_token
}
.expr_unary:
try render_expr_unary(renderer, node_id, parse_state, tokens)
.expr_binary:
try render_expr_binary(renderer, node_id, parse_state, tokens)
.literal_int, .literal_float, .literal_string:
@@ -124,6 +126,24 @@ render_expr proc(renderer @mut Renderer,
}
}
@hide:file
render_expr_unary proc(
renderer @mut Renderer,
node_id NodeId,
parse_state @ParseState,
tokens []Token,
) TokenId ! mem.AllocError {
node :: parse_state.nodes.items[usize(node_id)]
operator :: node.main_token
operand :: node.data0.node_id
# render operator operand
try arraylist.append(&renderer.tokens, tokens[usize(operator)])
last_token :: try render_expr(renderer, operand, parse_state, tokens)
return last_token
}
@hide:file
render_expr_binary proc(
renderer @mut Renderer,