py: Add '*' qstr for 'import *'; use blank qstr for comprehension arg.

This commit is contained in:
Damien George 2014-04-27 19:23:46 +01:00
parent 968bf34c4c
commit 708c073250
3 changed files with 13 additions and 1 deletions

View File

@ -1416,7 +1416,7 @@ void compile_import_from(compiler_t *comp, mp_parse_node_struct_t *pns) {
#if MICROPY_EMIT_CPYTHON
EMIT_ARG(load_const_verbatim_str, "('*',)");
#else
EMIT_ARG(load_const_str, QSTR_FROM_STR_STATIC("*"), false);
EMIT_ARG(load_const_str, MP_QSTR__star_, false);
EMIT_ARG(build_tuple, 1);
#endif
@ -3040,7 +3040,15 @@ STATIC void compile_scope(compiler_t *comp, scope_t *scope, pass_kind_t pass) {
assert(MP_PARSE_NODE_IS_STRUCT_KIND(pns->nodes[1], PN_comp_for));
mp_parse_node_struct_t *pns_comp_for = (mp_parse_node_struct_t*)pns->nodes[1];
// We need a unique name for the comprehension argument (the iterator).
// CPython uses .0, but we should be able to use anything that won't
// clash with a user defined variable. Best to use an existing qstr,
// so we use the blank qstr.
#if MICROPY_EMIT_CPYTHON
qstr qstr_arg = QSTR_FROM_STR_STATIC(".0");
#else
qstr qstr_arg = MP_QSTR_;
#endif
if (comp->pass == PASS_1) {
bool added;
id_info_t *id_info = scope_find_or_add_id(comp->scope_cur, qstr_arg, &added);

View File

@ -20,6 +20,7 @@ codepoint2name[ord('%')] = 'percent'
codepoint2name[ord('#')] = 'hash'
codepoint2name[ord('{')] = 'brace_open'
codepoint2name[ord('}')] = 'brace_close'
codepoint2name[ord('*')] = 'star'
# this must match the equivalent function in qstr.c
def compute_hash(qstr):

View File

@ -2,6 +2,9 @@
// All the qstr definitions in this file are available as constants.
// That is, they are in ROM and you can reference them simply as MP_QSTR_xxxx.
// TODO probably should add Python keywords, eg if, def, etc
Q(*)
Q(__build_class__)
Q(__class__)
Q(__doc__)