py/parse: Pass rule_id to push_result_token, instead of passing rule_t*.
This commit is contained in:
parent
815a8cd1ae
commit
66d8885d85
12
py/parse.c
12
py/parse.c
@ -414,7 +414,7 @@ STATIC mp_parse_node_t mp_parse_node_new_small_int_checked(parser_t *parser, mp_
|
|||||||
return mp_parse_node_new_small_int(val);
|
return mp_parse_node_new_small_int(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
STATIC void push_result_token(parser_t *parser, const rule_t *rule) {
|
STATIC void push_result_token(parser_t *parser, uint8_t rule_id) {
|
||||||
mp_parse_node_t pn;
|
mp_parse_node_t pn;
|
||||||
mp_lexer_t *lex = parser->lexer;
|
mp_lexer_t *lex = parser->lexer;
|
||||||
if (lex->tok_kind == MP_TOKEN_NAME) {
|
if (lex->tok_kind == MP_TOKEN_NAME) {
|
||||||
@ -422,7 +422,7 @@ STATIC void push_result_token(parser_t *parser, const rule_t *rule) {
|
|||||||
#if MICROPY_COMP_CONST
|
#if MICROPY_COMP_CONST
|
||||||
// if name is a standalone identifier, look it up in the table of dynamic constants
|
// if name is a standalone identifier, look it up in the table of dynamic constants
|
||||||
mp_map_elem_t *elem;
|
mp_map_elem_t *elem;
|
||||||
if (rule->rule_id == RULE_atom
|
if (rule_id == RULE_atom
|
||||||
&& (elem = mp_map_lookup(&parser->consts, MP_OBJ_NEW_QSTR(id), MP_MAP_LOOKUP)) != NULL) {
|
&& (elem = mp_map_lookup(&parser->consts, MP_OBJ_NEW_QSTR(id), MP_MAP_LOOKUP)) != NULL) {
|
||||||
if (MP_OBJ_IS_SMALL_INT(elem->value)) {
|
if (MP_OBJ_IS_SMALL_INT(elem->value)) {
|
||||||
pn = mp_parse_node_new_small_int_checked(parser, elem->value);
|
pn = mp_parse_node_new_small_int_checked(parser, elem->value);
|
||||||
@ -433,7 +433,7 @@ STATIC void push_result_token(parser_t *parser, const rule_t *rule) {
|
|||||||
pn = mp_parse_node_new_leaf(MP_PARSE_NODE_ID, id);
|
pn = mp_parse_node_new_leaf(MP_PARSE_NODE_ID, id);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
(void)rule;
|
(void)rule_id;
|
||||||
pn = mp_parse_node_new_leaf(MP_PARSE_NODE_ID, id);
|
pn = mp_parse_node_new_leaf(MP_PARSE_NODE_ID, id);
|
||||||
#endif
|
#endif
|
||||||
} else if (lex->tok_kind == MP_TOKEN_INTEGER) {
|
} else if (lex->tok_kind == MP_TOKEN_INTEGER) {
|
||||||
@ -846,7 +846,7 @@ mp_parse_tree_t mp_parse(mp_lexer_t *lex, mp_parse_input_kind_t input_kind) {
|
|||||||
uint16_t kind = rule->arg[i] & RULE_ARG_KIND_MASK;
|
uint16_t kind = rule->arg[i] & RULE_ARG_KIND_MASK;
|
||||||
if (kind == RULE_ARG_TOK) {
|
if (kind == RULE_ARG_TOK) {
|
||||||
if (lex->tok_kind == (rule->arg[i] & RULE_ARG_ARG_MASK)) {
|
if (lex->tok_kind == (rule->arg[i] & RULE_ARG_ARG_MASK)) {
|
||||||
push_result_token(&parser, rule);
|
push_result_token(&parser, rule->rule_id);
|
||||||
mp_lexer_to_next(lex);
|
mp_lexer_to_next(lex);
|
||||||
goto next_rule;
|
goto next_rule;
|
||||||
}
|
}
|
||||||
@ -890,7 +890,7 @@ mp_parse_tree_t mp_parse(mp_lexer_t *lex, mp_parse_input_kind_t input_kind) {
|
|||||||
if (lex->tok_kind == tok_kind) {
|
if (lex->tok_kind == tok_kind) {
|
||||||
// matched token
|
// matched token
|
||||||
if (tok_kind == MP_TOKEN_NAME) {
|
if (tok_kind == MP_TOKEN_NAME) {
|
||||||
push_result_token(&parser, rule);
|
push_result_token(&parser, rule->rule_id);
|
||||||
}
|
}
|
||||||
mp_lexer_to_next(lex);
|
mp_lexer_to_next(lex);
|
||||||
} else {
|
} else {
|
||||||
@ -1022,7 +1022,7 @@ mp_parse_tree_t mp_parse(mp_lexer_t *lex, mp_parse_input_kind_t input_kind) {
|
|||||||
if (i & 1 & n) {
|
if (i & 1 & n) {
|
||||||
// separators which are tokens are not pushed to result stack
|
// separators which are tokens are not pushed to result stack
|
||||||
} else {
|
} else {
|
||||||
push_result_token(&parser, rule);
|
push_result_token(&parser, rule->rule_id);
|
||||||
}
|
}
|
||||||
mp_lexer_to_next(lex);
|
mp_lexer_to_next(lex);
|
||||||
// got element of list, so continue parsing list
|
// got element of list, so continue parsing list
|
||||||
|
Loading…
Reference in New Issue
Block a user