diff options
author | Markus Armbruster <armbru@redhat.com> | 2015-11-25 22:23:26 +0100 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2015-11-26 09:22:54 +0100 |
commit | c54616608af442edf4cfb7397a1909c2653efba0 (patch) | |
tree | 6a84404cf40ffad47caed8f12b36b80fc905ff1e /qobject/json-lexer.c | |
parent | b8d3b1da3cdbb02e180618d6be346c564723015d (diff) |
qjson: Give each of the six structural chars its own token type
Simplifies things, because we always check for a specific one.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <1448486613-17634-6-git-send-email-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Diffstat (limited to 'qobject/json-lexer.c')
-rw-r--r-- | qobject/json-lexer.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/qobject/json-lexer.c b/qobject/json-lexer.c index 5735c1ea87..1df7d5e5c2 100644 --- a/qobject/json-lexer.c +++ b/qobject/json-lexer.c @@ -257,12 +257,12 @@ static const uint8_t json_lexer[][256] = { ['0'] = IN_ZERO, ['1' ... '9'] = IN_NONZERO_NUMBER, ['-'] = IN_NEG_NONZERO_NUMBER, - ['{'] = JSON_OPERATOR, - ['}'] = JSON_OPERATOR, - ['['] = JSON_OPERATOR, - [']'] = JSON_OPERATOR, - [','] = JSON_OPERATOR, - [':'] = JSON_OPERATOR, + ['{'] = JSON_LCURLY, + ['}'] = JSON_RCURLY, + ['['] = JSON_LSQUARE, + [']'] = JSON_RSQUARE, + [','] = JSON_COMMA, + [':'] = JSON_COLON, ['a' ... 'z'] = IN_KEYWORD, ['%'] = IN_ESCAPE, [' '] = IN_WHITESPACE, @@ -299,7 +299,12 @@ static int json_lexer_feed_char(JSONLexer *lexer, char ch, bool flush) } switch (new_state) { - case JSON_OPERATOR: + case JSON_LCURLY: + case JSON_RCURLY: + case JSON_LSQUARE: + case JSON_RSQUARE: + case JSON_COLON: + case JSON_COMMA: case JSON_ESCAPE: case JSON_INTEGER: case JSON_FLOAT: |