diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2014-04-13 21:56:01 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2014-04-13 21:56:01 +0200 |
commit | 82241fdc039458550de61964ad751d1cfe96013f (patch) | |
tree | f41fb1fabbcdbf669dbb5dee694d9e48039878b2 | |
parent | e06895b7999318814916114a6cf98e82ba31bfca (diff) |
orcparse: Guard against unknown tokens
-rw-r--r-- | orc/orcparse.c | 15 |
1 files 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) { |