Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
eacbd7ae
Commit
eacbd7ae
authored
Apr 13, 2016
by
Damien George
Browse files
py: Fix constant folding and inline-asm to work with new async grammar.
parent
81ebba7e
Changes
2
Hide whitespace changes
Inline
Side-by-side
py/compile.c
View file @
eacbd7ae
...
...
@@ -1402,8 +1402,7 @@ STATIC void compile_for_stmt(compiler_t *comp, mp_parse_node_struct_t *pns) {
mp_parse_node_struct_t
*
pns_it
=
(
mp_parse_node_struct_t
*
)
pns
->
nodes
[
1
];
if
(
MP_PARSE_NODE_IS_ID
(
pns_it
->
nodes
[
0
])
&&
MP_PARSE_NODE_LEAF_ARG
(
pns_it
->
nodes
[
0
])
==
MP_QSTR_range
&&
MP_PARSE_NODE_IS_STRUCT_KIND
(
pns_it
->
nodes
[
1
],
PN_trailer_paren
)
&&
MP_PARSE_NODE_IS_NULL
(
pns_it
->
nodes
[
2
]))
{
&&
MP_PARSE_NODE_IS_STRUCT_KIND
(
pns_it
->
nodes
[
1
],
PN_trailer_paren
))
{
mp_parse_node_t
pn_range_args
=
((
mp_parse_node_struct_t
*
)
pns_it
->
nodes
[
1
])
->
nodes
[
0
];
mp_parse_node_t
*
args
;
int
n_args
=
mp_parse_node_extract_list
(
&
pn_range_args
,
PN_arglist
,
&
args
);
...
...
@@ -3186,7 +3185,6 @@ STATIC void compile_scope_inline_asm(compiler_t *comp, scope_t *scope, pass_kind
if
(
!
MP_PARSE_NODE_IS_STRUCT_KIND
(
pns2
->
nodes
[
1
],
PN_trailer_paren
))
{
goto
not_an_instruction
;
}
assert
(
MP_PARSE_NODE_IS_NULL
(
pns2
->
nodes
[
2
]));
// parse node looks like an instruction
// get instruction name and args
...
...
py/parse.c
View file @
eacbd7ae
...
...
@@ -563,11 +563,10 @@ STATIC bool fold_constants(parser_t *parser, const rule_t *rule, size_t num_args
// this node is of the form <x> = <y>
mp_parse_node_t
pn0
=
peek_result
(
parser
,
1
);
if
(
MP_PARSE_NODE_IS_ID
(
pn0
)
&&
MP_PARSE_NODE_IS_STRUCT_KIND
(
pn1
,
RULE_
power
)
&&
MP_PARSE_NODE_IS_STRUCT_KIND
(
pn1
,
RULE_
atom_expr_normal
)
&&
MP_PARSE_NODE_IS_ID
(((
mp_parse_node_struct_t
*
)
pn1
)
->
nodes
[
0
])
&&
MP_PARSE_NODE_LEAF_ARG
(((
mp_parse_node_struct_t
*
)
pn1
)
->
nodes
[
0
])
==
MP_QSTR_const
&&
MP_PARSE_NODE_IS_STRUCT_KIND
(((
mp_parse_node_struct_t
*
)
pn1
)
->
nodes
[
1
],
RULE_trailer_paren
)
&&
MP_PARSE_NODE_IS_NULL
(((
mp_parse_node_struct_t
*
)
pn1
)
->
nodes
[
2
])
)
{
// code to assign dynamic constants: id = const(value)
...
...
@@ -599,13 +598,11 @@ STATIC bool fold_constants(parser_t *parser, const rule_t *rule, size_t num_args
#endif
#if MICROPY_COMP_MODULE_CONST
}
else
if
(
rule
->
rule_id
==
RULE_power
)
{
mp_parse_node_t
pn0
=
peek_result
(
parser
,
2
);
mp_parse_node_t
pn1
=
peek_result
(
parser
,
1
);
mp_parse_node_t
pn2
=
peek_result
(
parser
,
0
);
}
else
if
(
rule
->
rule_id
==
RULE_atom_expr_normal
)
{
mp_parse_node_t
pn0
=
peek_result
(
parser
,
1
);
mp_parse_node_t
pn1
=
peek_result
(
parser
,
0
);
if
(
!
(
MP_PARSE_NODE_IS_ID
(
pn0
)
&&
MP_PARSE_NODE_IS_STRUCT_KIND
(
pn1
,
RULE_trailer_period
)
&&
MP_PARSE_NODE_IS_NULL
(
pn2
)))
{
&&
MP_PARSE_NODE_IS_STRUCT_KIND
(
pn1
,
RULE_trailer_period
)))
{
return
false
;
}
// id1.id2
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment