From 9528cd66d7c94d7376884a53c2080b29e9bc3a0a Mon Sep 17 00:00:00 2001 From: Damien George Date: Wed, 15 Jan 2014 21:23:31 +0000 Subject: Convert parse errors to exceptions. Parser no longer prints an error, but instead returns an exception ID and message. --- unix/main.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'unix/main.c') diff --git a/unix/main.c b/unix/main.c index 15a4000ab..d74247e59 100644 --- a/unix/main.c +++ b/unix/main.c @@ -37,14 +37,20 @@ static void execute_from_lexer(mp_lexer_t *lex, mp_parse_input_kind_t input_kind return; } - mp_parse_node_t pn = mp_parse(lex, input_kind); - mp_lexer_free(lex); + qstr parse_exc_id; + const char *parse_exc_msg; + mp_parse_node_t pn = mp_parse(lex, input_kind, &parse_exc_id, &parse_exc_msg); if (pn == MP_PARSE_NODE_NULL) { // parse error + mp_lexer_show_error_pythonic_prefix(lex); + printf("%s: %s\n", qstr_str(parse_exc_id), parse_exc_msg); + mp_lexer_free(lex); return; } + mp_lexer_free(lex); + //printf("----------------\n"); //parse_node_show(pn, 0); //printf("----------------\n"); -- cgit v1.2.3