qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 for-2.5 09/12] qjson: Convert to parser to re


From: Eric Blake
Subject: Re: [Qemu-devel] [PATCH v3 for-2.5 09/12] qjson: Convert to parser to recursive descent
Date: Wed, 25 Nov 2015 15:22:34 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0

On 11/25/2015 02:23 PM, Markus Armbruster wrote:
> We backtrack in parse_value(), even though JSON is LL(1) and thus can
> be parsed by straightforward recursive descent.  Do exactly that.
> 
> Based on an almost-correct patch from Paolo Bonzini.
> 
> Signed-off-by: Markus Armbruster <address@hidden>
> ---
>  qobject/json-parser.c | 165 
> ++++++++++++++------------------------------------
>  1 file changed, 47 insertions(+), 118 deletions(-)
> 

>  static QObject *parse_value(JSONParserContext *ctxt, va_list *ap)
>  {
> -    QObject *obj;
> +    QObject *token;
>  
> -    obj = parse_object(ctxt, ap);
> -    if (obj == NULL) {
> -        obj = parse_array(ctxt, ap);
> -    }
> -    if (obj == NULL) {
> -        obj = parse_escape(ctxt, ap);
> -    }
> -    if (obj == NULL) {
> -        obj = parse_keyword(ctxt);
> -    } 
> -    if (obj == NULL) {
> -        obj = parse_literal(ctxt);
> +    token = parser_context_peek_token(ctxt);
> +    if (token == NULL) {
> +        parse_error(ctxt, NULL, "premature EOI");

Should we spell that out as 'end of input'?

But that's cosmetic, and doesn't affect correctness of the conversion.

Reviewed-by: Eric Blake <address@hidden>

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]