diff options
author | Damien George <damien.p.george@gmail.com> | 2016-11-16 18:27:20 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2016-11-16 18:35:01 +1100 |
commit | 5bdf1650de782d766a648f992270306269cc985a (patch) | |
tree | f043b31636cdecd88e5562d18d07c364bfef4235 /esp8266/lexerstr32.c | |
parent | 66d955c218b66076a3d4300f70388c634c0d3099 (diff) | |
download | micropython-5bdf1650de782d766a648f992270306269cc985a.tar.gz micropython-5bdf1650de782d766a648f992270306269cc985a.zip |
py/lexer: Make lexer use an mp_reader as its source.
Diffstat (limited to 'esp8266/lexerstr32.c')
-rw-r--r-- | esp8266/lexerstr32.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/esp8266/lexerstr32.c b/esp8266/lexerstr32.c index 669df8ea7b..3fc62399e7 100644 --- a/esp8266/lexerstr32.c +++ b/esp8266/lexerstr32.c @@ -35,10 +35,11 @@ typedef struct _mp_lexer_str32_buf_t { uint8_t byte_off; } mp_lexer_str32_buf_t; -STATIC mp_uint_t str32_buf_next_byte(mp_lexer_str32_buf_t *sb) { +STATIC mp_uint_t str32_buf_next_byte(void *sb_in) { + mp_lexer_str32_buf_t *sb = (mp_lexer_str32_buf_t*)sb_in; byte c = sb->val & 0xff; if (c == 0) { - return MP_LEXER_EOF; + return MP_READER_EOF; } if (++sb->byte_off > 3) { @@ -51,7 +52,8 @@ STATIC mp_uint_t str32_buf_next_byte(mp_lexer_str32_buf_t *sb) { return c; } -STATIC void str32_buf_free(mp_lexer_str32_buf_t *sb) { +STATIC void str32_buf_free(void *sb_in) { + mp_lexer_str32_buf_t *sb = (mp_lexer_str32_buf_t*)sb_in; m_del_obj(mp_lexer_str32_buf_t, sb); } @@ -63,7 +65,8 @@ mp_lexer_t *mp_lexer_new_from_str32(qstr src_name, const char *str, mp_uint_t le sb->byte_off = (uint32_t)str & 3; sb->src_cur = (uint32_t*)(str - sb->byte_off); sb->val = *sb->src_cur++ >> sb->byte_off * 8; - return mp_lexer_new(src_name, sb, (mp_lexer_stream_next_byte_t)str32_buf_next_byte, (mp_lexer_stream_close_t)str32_buf_free); + mp_reader_t reader = {sb, str32_buf_next_byte, str32_buf_free}; + return mp_lexer_new(src_name, reader); } #endif // MICROPY_ENABLE_COMPILER |