-> Operator has very low precedence, size_of, align_of, length_of expressions
This commit is contained in:
26
parsing.cpp
26
parsing.cpp
@@ -404,7 +404,7 @@ binding_power(Binding binding, Token_Kind kind){
|
||||
case TK_Dot:
|
||||
return {31,30};
|
||||
case TK_Arrow:
|
||||
return {29,28};
|
||||
return {2,1};
|
||||
default: return {};
|
||||
}
|
||||
Postfix: switch(kind){
|
||||
@@ -457,8 +457,28 @@ parse_expr(S64 min_bp){
|
||||
}break;
|
||||
|
||||
case TK_Keyword: {
|
||||
if(token->intern_val == keyword_true) left = ast_bool(token, 1);
|
||||
else if(token->intern_val == keyword_false) left = ast_bool(token, 0);
|
||||
if(token->intern_val == keyword_true)
|
||||
left = ast_bool(token, 1);
|
||||
else if(token->intern_val == keyword_false)
|
||||
left = ast_bool(token, 0);
|
||||
else if(token->intern_val == keyword_sizeof){
|
||||
token_expect(TK_OpenParen);
|
||||
Ast_Expr *expr = parse_expr();
|
||||
token_expect(TK_CloseParen);
|
||||
left = ast_sizeof(token, expr);
|
||||
}
|
||||
else if(token->intern_val == keyword_alignof){
|
||||
token_expect(TK_OpenParen);
|
||||
Ast_Expr *expr = parse_expr();
|
||||
token_expect(TK_CloseParen);
|
||||
left = ast_alignof(token, expr);
|
||||
}
|
||||
else if(token->intern_val == keyword_lengthof){
|
||||
token_expect(TK_OpenParen);
|
||||
Ast_Expr *expr = parse_expr();
|
||||
token_expect(TK_CloseParen);
|
||||
left = ast_len(token, expr);
|
||||
}
|
||||
else compiler_error(token, "Unexpected keyword: [%s], expected keyword [cast]", token->intern_val.str);
|
||||
}break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user