lang: ast: implement parsing of true/false/null keyword constants
This commit is contained in:
@@ -119,6 +119,15 @@ enum ivy_status arith_push_operand(
|
||||
case IVY_KW_CONTINUE:
|
||||
v = ast_node_create(IVY_AST_LOOP_REPEAT);
|
||||
break;
|
||||
case IVY_KW_TRUE:
|
||||
v = ast_node_create(IVY_AST_C_TRUE);
|
||||
break;
|
||||
case IVY_KW_FALSE:
|
||||
v = ast_node_create(IVY_AST_C_FALSE);
|
||||
break;
|
||||
case IVY_KW_NULL:
|
||||
v = ast_node_create(IVY_AST_C_NULL);
|
||||
break;
|
||||
default:
|
||||
return IVY_ERR_BAD_SYNTAX;
|
||||
}
|
||||
|
||||
@@ -91,6 +91,11 @@ struct ast_node_type expr_node_ops = {
|
||||
KW_PARSER(FINALLY, stmt_parse_end),
|
||||
KW_PARSER(END, stmt_parse_end),
|
||||
|
||||
/* keyword constants */
|
||||
KW_PARSER(TRUE, arith_parse_operand),
|
||||
KW_PARSER(FALSE, arith_parse_operand),
|
||||
KW_PARSER(NULL, arith_parse_operand),
|
||||
|
||||
/* operator/block keywords */
|
||||
KW_PARSER(IN, arith_parse_in),
|
||||
KW_PARSER(IS, arith_parse_operator),
|
||||
|
||||
@@ -44,6 +44,7 @@ enum expr_component {
|
||||
EXPR_CMP_OPERATOR,
|
||||
EXPR_CMP_OPERAND,
|
||||
EXPR_CMP_MSG,
|
||||
EXPR_CMP_KEYWORD,
|
||||
};
|
||||
|
||||
struct expr_parser_state {
|
||||
|
||||
Reference in New Issue
Block a user