Eric Blake <ebl...@redhat.com> writes: > On 07/26/2013 06:39 AM, Markus Armbruster wrote: >> Fixes at least the following parser bugs: >> >> * accepts any token in place of a colon >> >> * treats comma as optional >> >> * crashes when closing braces or brackets are missing >> >> Signed-off-by: Markus Armbruster <arm...@redhat.com> >> --- >> scripts/qapi.py | 40 >> ++++++++++++++++++++++++++--------- >> tests/qapi-schema/missing-colon.err | 1 + >> tests/qapi-schema/missing-colon.exit | 2 +- >> tests/qapi-schema/missing-colon.out | 3 --- >> tests/qapi-schema/missing-comma.err | 1 + >> tests/qapi-schema/missing-comma.exit | 2 +- >> tests/qapi-schema/missing-comma.out | 3 --- >> tests/qapi-schema/unclosed-object.err | 2 +- >> 8 files changed, 35 insertions(+), 19 deletions(-) >> > >> >> def get_values(self): >> expr = [] >> - while self.tok != ']': >> + if self.tok == ']': >> + self.accept() >> + return expr >> + if not self.tok in [ '{', '[', "'" ]: >> + raise QAPISchemaError(self, 'Expected "{", "[", "]" or string') > > JSON allows primitives here, as in [ 1 ]; but I agree that for the > purposes of our schema we will always be taking a string or complex > object whenever we have a list.
The lexer doesn't recognize any atoms but strings. If we change that, the syntax error messages need to be reviewed (not just this one). > Reviewed-by: Eric Blake <ebl...@redhat.com>