Cleanup
This commit is contained in:
@@ -138,14 +138,12 @@ function Ast_Expr *parse_expr(S64 rbp = 0);
|
||||
function Ast_Expr *
|
||||
parse_init_stmt(Ast_Expr *expr){
|
||||
Token *token = token_get();
|
||||
if(token_match(TK_Colon)){
|
||||
if(expr->kind != AST_IDENT) parsing_error(token, "Failed to parse init stmt, expected left of [:] to be a token of kind [Identifier]");
|
||||
if(token_match(TK_Assign)){
|
||||
Ast_Expr *value = parse_expr();
|
||||
Ast_Expr *result = ast_expr_binary((Ast_Atom *)expr, value, token);
|
||||
return result;
|
||||
}
|
||||
else not_implemented;
|
||||
if(token_is_assign(token)){
|
||||
token_next();
|
||||
Ast_Expr *value = parse_expr();
|
||||
Ast_Expr *result = ast_expr_binary((Ast_Atom *)expr, value, token);
|
||||
result->flags = set_flag(result->flags, AST_STMT);
|
||||
return result;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -311,9 +309,9 @@ parse_lambda(Token *token, B32 is_typespec = false){
|
||||
function Ast_Expr *
|
||||
null_denotation(Token *token){
|
||||
switch(token->kind){
|
||||
case TK_StringLit : return ast_str(token, token->intern_val, AST_EXPR);
|
||||
case TK_Identifier : return ast_ident(token, token->intern_val, AST_EXPR);
|
||||
case TK_Integer : return ast_int(token, token->int_val, AST_EXPR);
|
||||
case TK_StringLit : return ast_str(token, token->intern_val);
|
||||
case TK_Identifier : return ast_ident(token, token->intern_val);
|
||||
case TK_Integer : return ast_int(token, token->int_val);
|
||||
case TK_Pointer : return ast_expr_unary(token, TK_Pointer, parse_expr());
|
||||
case TK_Dereference: return ast_expr_unary(token, TK_Dereference, parse_expr());
|
||||
|
||||
@@ -505,14 +503,15 @@ parse_named(B32 is_global){
|
||||
}
|
||||
}
|
||||
|
||||
else if(token_match(TK_ColonAssign)){
|
||||
Ast_Expr *expr = parse_expr();
|
||||
result = ast_var(name, 0, name->intern_val, expr);
|
||||
}
|
||||
|
||||
// @note: parse variable
|
||||
else if(token_match(TK_Colon)){
|
||||
Ast_Expr *typespec = 0;
|
||||
Ast_Expr *expr = 0;
|
||||
if(!token_is(TK_Assign)) typespec = parse_expr();
|
||||
if(token_match(TK_Assign)) expr = parse_expr();
|
||||
if(!expr && !typespec) parsing_error(name, "invalid declaration, no type or value");
|
||||
|
||||
Ast_Expr *typespec = typespec = parse_expr();
|
||||
Ast_Expr *expr = parse_assign_expr();
|
||||
result = ast_var(name, typespec, name->intern_val, expr);
|
||||
}
|
||||
else{
|
||||
|
||||
Reference in New Issue
Block a user