summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2014-04-13 21:56:01 +0200
committerSebastian Dröge <sebastian@centricular.com>2014-04-13 21:56:01 +0200
commit82241fdc039458550de61964ad751d1cfe96013f (patch)
treef41fb1fabbcdbf669dbb5dee694d9e48039878b2
parente06895b7999318814916114a6cf98e82ba31bfca (diff)
downloadorc-82241fdc039458550de61964ad751d1cfe96013f.tar.gz
orcparse: Guard against unknown tokens
-rw-r--r--orc/orcparse.c15
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) {