Parsing expressions

This commit is contained in:
Krzosa Karol
2022-05-06 11:28:34 +02:00
parent e3b5e9b33a
commit 9552126da2
5 changed files with 384 additions and 32 deletions

View File

@@ -40,6 +40,7 @@ typedef enum Expr_Kind{
EK_None,
EK_Int,
EK_String,
EK_Identifier,
EK_Unary,
EK_Binary,
EK_Ternary,
@@ -126,6 +127,14 @@ expr_str(Arena *p, Token *token){
return expr;
}
function Expr *
expr_name(Arena *p, Token *token){
assert(token->kind == TK_Identifier);
Expr *expr = expr_new(p, EK_Identifier, token);
expr->intern_val = token->intern_val;
return expr;
}
function Expr *
expr_unary(Arena *p, Token *op, Expr *exp){
Expr *expr = expr_new(p, EK_Unary, op);