From e5ef15a9d7bead2a60009caedbc128a8906c7ecd Mon Sep 17 00:00:00 2001 From: Damien George Date: Wed, 16 Nov 2016 16:25:06 +1100 Subject: 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. --- py/lexer.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'py/lexer.c') 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) { -- cgit v1.2.3