summaryrefslogtreecommitdiffstatshomepage
path: root/esp8266/lexerstr32.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2016-11-16 18:27:20 +1100
committerDamien George <damien.p.george@gmail.com>2016-11-16 18:35:01 +1100
commit5bdf1650de782d766a648f992270306269cc985a (patch)
treef043b31636cdecd88e5562d18d07c364bfef4235 /esp8266/lexerstr32.c
parent66d955c218b66076a3d4300f70388c634c0d3099 (diff)
downloadmicropython-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.c11
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