From 82241fdc039458550de61964ad751d1cfe96013f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Sun, 13 Apr 2014 21:56:01 +0200 Subject: [PATCH] orcparse: Guard against unknown tokens --- orc/orcparse.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/orc/orcparse.c b/orc/orcparse.c index 0fb25ca..0d7ffa5 100644 --- a/orc/orcparse.c +++ b/orc/orcparse.c @@ -184,9 +184,12 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) strtol (token[1], NULL, 0)); i++; } - } else { + } else if (i == n_tokens - 1) { orc_program_set_constant_n (parser->program, strtol (token[1], NULL, 0)); + } else { + orc_parse_log (parser, "error: line %d: unknown .n token '%s'\n", + parser->line_number, token[i]); } } } else if (strcmp (token[0], ".m") == 0) { @@ -207,8 +210,11 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) orc_program_set_var_alignment (parser->program, var, alignment); i++; } - } else { + } else if (i == n_tokens - 1) { orc_program_set_type_name (parser->program, var, token[i]); + } else { + orc_parse_log (parser, "error: line %d: unknown .dest token '%s'\n", + parser->line_number, token[i]); } } } else if (strcmp (token[0], ".dest") == 0) { @@ -226,8 +232,11 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) orc_program_set_var_alignment (parser->program, var, alignment); i++; } - } else { + } else if (i == n_tokens - 1) { orc_program_set_type_name (parser->program, var, token[i]); + } else { + orc_parse_log (parser, "error: line %d: unknown .source token '%s'\n", + parser->line_number, token[i]); } } } else if (strcmp (token[0], ".accumulator") == 0) { -- 2.7.4