diff options
author | Tavian Barnes <tavianator@gmail.com> | 2009-10-30 11:10:23 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@gmail.com> | 2009-10-30 11:10:23 -0400 |
commit | 58e698772d6b48817fdff3a2d36f445c70e87ee3 (patch) | |
tree | 244a81cbd7db0ad7ca00a7edc363ca4bc14523ca /dimension/parse.c | |
parent | 75406058a079e34932f383461644aab1f200f4ec (diff) | |
download | dimension-58e698772d6b48817fdff3a2d36f445c70e87ee3.tar.xz |
Refactor parsing and realization a bit.
Diffstat (limited to 'dimension/parse.c')
-rw-r--r-- | dimension/parse.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/dimension/parse.c b/dimension/parse.c index c868d95..55ad78e 100644 --- a/dimension/parse.c +++ b/dimension/parse.c @@ -205,10 +205,11 @@ dmnsn_parse(const dmnsn_array *tokens) setlocale(LC_CTYPE, "C"); setlocale(LC_NUMERIC, "C"); - for (i = 0; i < dmnsn_array_size(tokens); ++i) { + while (i < dmnsn_array_size(tokens)) { dmnsn_array_get(tokens, i, &token); - if (token.type == DMNSN_T_BOX) { + switch (token.type) { + case DMNSN_T_BOX: if (dmnsn_parse_box(tokens, &i, astree) != 0) { dmnsn_diagnostic(token.filename, token.line, token.col, "Invalid box", @@ -216,10 +217,11 @@ dmnsn_parse(const dmnsn_array *tokens) dmnsn_token_name(token.type)); goto bailout; } - } else { + break; + + default: dmnsn_diagnostic(token.filename, token.line, token.col, - "Expected '%s', found '%s'", - dmnsn_token_name(DMNSN_T_BOX), + "Unexpected token '%s'", dmnsn_token_name(token.type)); goto bailout; } |