[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH V8 03/10] qapi script: remember line number in schem
From: |
Wenchao Xia |
Subject: |
[Qemu-devel] [PATCH V8 03/10] qapi script: remember line number in schema parsing |
Date: |
Thu, 27 Feb 2014 03:09:29 -0800 |
From: Wenchao Xia <address@hidden>
Before this patch, 'QAPISchemaError' scans whole input until 'pos'
to get error line number. After this patch, the scan is avoided since
line number is remembered in schema parsing. This patch also benefits
other error report functions, which would be introduced later.
Signed-off-by: Wenchao Xia <address@hidden>
Signed-off-by: Wenchao Xia <address@hidden>
---
scripts/qapi.py | 14 ++++++++------
1 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/scripts/qapi.py b/scripts/qapi.py
index d0e7934..1954292 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -39,12 +39,10 @@ class QAPISchemaError(Exception):
def __init__(self, schema, msg):
self.fp = schema.fp
self.msg = msg
- self.line = self.col = 1
- for ch in schema.src[0:schema.pos]:
- if ch == '\n':
- self.line += 1
- self.col = 1
- elif ch == '\t':
+ self.col = 1
+ self.line = schema.line
+ for ch in schema.src[schema.line_pos:schema.pos]:
+ if ch == '\t':
self.col = (self.col + 7) % 8 + 1
else:
self.col += 1
@@ -60,6 +58,8 @@ class QAPISchema:
if self.src == '' or self.src[-1] != '\n':
self.src += '\n'
self.cursor = 0
+ self.line = 1
+ self.line_pos = 0
self.exprs = []
self.accept()
@@ -100,6 +100,8 @@ class QAPISchema:
if self.cursor == len(self.src):
self.tok = None
return
+ self.line += 1
+ self.line_pos = self.cursor
elif not self.tok.isspace():
raise QAPISchemaError(self, 'Stray "%s"' % self.tok)
--
1.7.1
- [Qemu-devel] [PATCH V8 00/10] qapi script: support enum as discriminator and better enum name, Wenchao Xia, 2014/02/27
- [Qemu-devel] [PATCH V8 01/10] qapi script: remember explicitly defined enum values, Wenchao Xia, 2014/02/27
- [Qemu-devel] [PATCH V8 02/10] qapi script: add check for duplicated key, Wenchao Xia, 2014/02/27
- [Qemu-devel] [PATCH V8 03/10] qapi script: remember line number in schema parsing,
Wenchao Xia <=
- [Qemu-devel] [PATCH V8 04/10] qapi script: check correctness of union, Wenchao Xia, 2014/02/27
- [Qemu-devel] [PATCH V8 05/10] qapi script: code move for generate_enum_name(), Wenchao Xia, 2014/02/27
- [Qemu-devel] [PATCH V8 06/10] qapi script: use same function to generate enum string, Wenchao Xia, 2014/02/27
- [Qemu-devel] [PATCH V8 07/10] qapi script: support enum type as discriminator in union, Wenchao Xia, 2014/02/27
- [Qemu-devel] [PATCH V8 08/10] qapi: convert BlockdevOptions to use enum discriminator, Wenchao Xia, 2014/02/27