summaryrefslogtreecommitdiff
path: root/py/lexer.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2016-11-16 16:25:06 +1100
committerDamien George <damien.p.george@gmail.com>2016-11-16 18:13:51 +1100
commite5ef15a9d7bead2a60009caedbc128a8906c7ecd (patch)
tree6228f2f42be931bbb7d88f353d9c673be251afd8 /py/lexer.c
parent511c083811ca538753dfccc7c908048b2c23bea4 (diff)
py/lexer: Provide generic mp_lexer_new_from_file based on mp_reader.
If a port defines MICROPY_READER_POSIX or MICROPY_READER_FATFS then lexer.c now provides an implementation of mp_lexer_new_from_file using the mp_reader_new_file function.
Diffstat (limited to 'py/lexer.c')
-rw-r--r--py/lexer.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/py/lexer.c b/py/lexer.c
index f1be77805..d3e61b3b4 100644
--- a/py/lexer.c
+++ b/py/lexer.c
@@ -759,6 +759,19 @@ mp_lexer_t *mp_lexer_new_from_str_len(qstr src_name, const char *str, mp_uint_t
return mp_lexer_new(src_name, reader.data, (mp_lexer_stream_next_byte_t)reader.readbyte, (mp_lexer_stream_close_t)reader.close);
}
+#if MICROPY_READER_POSIX || MICROPY_READER_FATFS
+
+mp_lexer_t *mp_lexer_new_from_file(const char *filename) {
+ mp_reader_t reader;
+ int ret = mp_reader_new_file(&reader, filename);
+ if (ret != 0) {
+ return NULL;
+ }
+ return mp_lexer_new(qstr_from_str(filename), reader.data, (mp_lexer_stream_next_byte_t)reader.readbyte, (mp_lexer_stream_close_t)reader.close);
+}
+
+#endif
+
void mp_lexer_free(mp_lexer_t *lex) {
if (lex) {
if (lex->stream_close) {