[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH V7 03/11] qapi-script: remember line number in s
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH V7 03/11] qapi-script: remember line number in schema parsing |
Date: |
Thu, 20 Feb 2014 13:22:24 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux) |
Wenchao Xia <address@hidden> writes:
> 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.
Not sure avoiding the scan is worthwhile, but since you coded it
already... no objections.
>
> 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 3732fe1..c504eb4 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
Column computation is wrong. Should be something like
self.col = ((self.col + 7) & ~7) + 1
Not your fault, of course, and you don't have to fix it to get my R-by.
If you want to fix it, separate patch, and please include suitable
tests.
> 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)
- Re: [Qemu-devel] [PATCH V7 07/11] qapi script: support pre-defined enum type as discriminator in union, (continued)
[Qemu-devel] [PATCH V7 02/11] qapi script: add check for duplicated key, Wenchao Xia, 2014/02/20
[Qemu-devel] [PATCH V7 06/11] qapi script: use same function to generate enum string, Wenchao Xia, 2014/02/20
[Qemu-devel] [PATCH V7 05/11] qapi script: code move for generate_enum_name(), Wenchao Xia, 2014/02/20
[Qemu-devel] [PATCH V7 03/11] qapi-script: remember line number in schema parsing, Wenchao Xia, 2014/02/20
- Re: [Qemu-devel] [PATCH V7 03/11] qapi-script: remember line number in schema parsing,
Markus Armbruster <=
[Qemu-devel] [PATCH V7 04/11] qapi script: check correctness of discriminator values in union, Wenchao Xia, 2014/02/20
[Qemu-devel] [PATCH V7 10/11] qapi script: do not add "_" for every capitalized char in enum, Wenchao Xia, 2014/02/20