From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:42428) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TMmWF-0005sI-2o for qemu-devel@nongnu.org; Fri, 12 Oct 2012 17:11:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TMmWD-00061z-SE for qemu-devel@nongnu.org; Fri, 12 Oct 2012 17:11:42 -0400 Received: from mail-ia0-f173.google.com ([209.85.210.173]:53532) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TMmWD-0005rN-NE for qemu-devel@nongnu.org; Fri, 12 Oct 2012 17:11:41 -0400 Received: by mail-ia0-f173.google.com with SMTP id m10so2313014iam.4 for ; Fri, 12 Oct 2012 14:11:41 -0700 (PDT) Sender: fluxion From: Michael Roth Date: Fri, 12 Oct 2012 16:10:56 -0500 Message-Id: <1350076268-18461-15-git-send-email-mdroth@linux.vnet.ibm.com> In-Reply-To: <1350076268-18461-1-git-send-email-mdroth@linux.vnet.ibm.com> References: <1350076268-18461-1-git-send-email-mdroth@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH v4 14/26] qapi: qapi.py, make json parser more robust List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, peter.maydell@linaro.org, aliguori@us.ibm.com, blauwirbel@gmail.com, pbonzini@redhat.com Currently the QAPI JSON parser expects a very particular style of code indentation, the major one being that terminating curly/square brackets are not on placed on a seperate line. This is incompatible with most pretty-print formats, so make it a little more robust by supporting these cases. Also add support for parsing numerical fields. Currently they are ignored. QIDL will make use of both of these changes with the schemas it generates. Reviewed-by: Paolo Bonzini Signed-off-by: Michael Roth --- scripts/qapi.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/scripts/qapi.py b/scripts/qapi.py index 555d823..333f375 100644 --- a/scripts/qapi.py +++ b/scripts/qapi.py @@ -37,6 +37,12 @@ def tokenize(data): else: string += ch yield string + elif ch.isdigit(): + number = ch + while data[0].isdigit(): + number += data[0] + data = data[1:] + yield number def parse(tokens): if tokens[0] == '{': @@ -81,7 +87,7 @@ def parse_schema(fp): if line.startswith('#') or line == '\n': continue - if line.startswith(' '): + if line[0] in ['}', ']', ' ', '\t']: expr += line elif expr: expr_eval = evaluate(expr) -- 1.7.9.5