Message ID | 20200518164052.18689-2-richard.henderson@linaro.org |
---|---|
State | New |
Headers | show |
Series | decodetree: Add non-overlapping groups | expand |
On 5/18/20 6:40 PM, Richard Henderson wrote: > We are now guaranteed python 3.5 or later. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > scripts/decodetree.py | 25 +++++++++---------------- > 1 file changed, 9 insertions(+), 16 deletions(-) > > diff --git a/scripts/decodetree.py b/scripts/decodetree.py > index 46ab917807..f9d204aa36 100755 > --- a/scripts/decodetree.py > +++ b/scripts/decodetree.py > @@ -75,13 +75,6 @@ def output(*args): > output_fd.write(a) > > > -if sys.version_info >= (3, 4): > - re_fullmatch = re.fullmatch > -else: > - def re_fullmatch(pat, str): > - return re.match('^' + pat + '$', str) > - > - > def output_autogen(): > output('/* This file is autogenerated by scripts/decodetree.py. */\n\n') > > @@ -428,18 +421,18 @@ def parse_field(lineno, name, toks): > width = 0 > func = None > for t in toks: > - if re_fullmatch('!function=' + re_ident, t): > + if re.fullmatch('!function=' + re_ident, t): > if func: > error(lineno, 'duplicate function') > func = t.split('=') > func = func[1] > continue > > - if re_fullmatch('[0-9]+:s[0-9]+', t): > + if re.fullmatch('[0-9]+:s[0-9]+', t): > # Signed field extract > subtoks = t.split(':s') > sign = True > - elif re_fullmatch('[0-9]+:[0-9]+', t): > + elif re.fullmatch('[0-9]+:[0-9]+', t): > # Unsigned field extract > subtoks = t.split(':') > sign = False > @@ -488,11 +481,11 @@ def parse_arguments(lineno, name, toks): > flds = [] > extern = False > for t in toks: > - if re_fullmatch('!extern', t): > + if re.fullmatch('!extern', t): > extern = True > anyextern = True > continue > - if not re_fullmatch(re_ident, t): > + if not re.fullmatch(re_ident, t): > error(lineno, 'invalid argument set token "{0}"'.format(t)) > if t in flds: > error(lineno, 'duplicate argument "{0}"'.format(t)) > @@ -621,13 +614,13 @@ def parse_generic(lineno, is_format, name, toks): > continue > > # 'Foo=%Bar' imports a field with a different name. > - if re_fullmatch(re_ident + '=%' + re_ident, t): > + if re.fullmatch(re_ident + '=%' + re_ident, t): > (fname, iname) = t.split('=%') > flds = add_field_byname(lineno, flds, fname, iname) > continue > > # 'Foo=number' sets an argument field to a constant value > - if re_fullmatch(re_ident + '=[+-]?[0-9]+', t): > + if re.fullmatch(re_ident + '=[+-]?[0-9]+', t): > (fname, value) = t.split('=') > value = int(value) > flds = add_field(lineno, flds, fname, ConstField(value)) > @@ -635,7 +628,7 @@ def parse_generic(lineno, is_format, name, toks): > > # Pattern of 0s, 1s, dots and dashes indicate required zeros, > # required ones, or dont-cares. > - if re_fullmatch('[01.-]+', t): > + if re.fullmatch('[01.-]+', t): > shift = len(t) > fms = t.replace('0', '1') > fms = fms.replace('.', '0') > @@ -652,7 +645,7 @@ def parse_generic(lineno, is_format, name, toks): > fixedmask = (fixedmask << shift) | fms > undefmask = (undefmask << shift) | ubm > # Otherwise, fieldname:fieldwidth > - elif re_fullmatch(re_ident + ':s?[0-9]+', t): > + elif re.fullmatch(re_ident + ':s?[0-9]+', t): > (fname, flen) = t.split(':') > sign = False > if flen[0] == 's': > Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
On 5/18/20 6:40 PM, Richard Henderson wrote: > We are now guaranteed python 3.5 or later. FYI this has been addressed by John Snow: https://www.mail-archive.com/qemu-block@nongnu.org/msg66830.html > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > scripts/decodetree.py | 25 +++++++++---------------- > 1 file changed, 9 insertions(+), 16 deletions(-) > > diff --git a/scripts/decodetree.py b/scripts/decodetree.py > index 46ab917807..f9d204aa36 100755 > --- a/scripts/decodetree.py > +++ b/scripts/decodetree.py > @@ -75,13 +75,6 @@ def output(*args): > output_fd.write(a) > > > -if sys.version_info >= (3, 4): > - re_fullmatch = re.fullmatch > -else: > - def re_fullmatch(pat, str): > - return re.match('^' + pat + '$', str) > - > - > def output_autogen(): > output('/* This file is autogenerated by scripts/decodetree.py. */\n\n') > > @@ -428,18 +421,18 @@ def parse_field(lineno, name, toks): > width = 0 > func = None > for t in toks: > - if re_fullmatch('!function=' + re_ident, t): > + if re.fullmatch('!function=' + re_ident, t): > if func: > error(lineno, 'duplicate function') > func = t.split('=') > func = func[1] > continue > > - if re_fullmatch('[0-9]+:s[0-9]+', t): > + if re.fullmatch('[0-9]+:s[0-9]+', t): > # Signed field extract > subtoks = t.split(':s') > sign = True > - elif re_fullmatch('[0-9]+:[0-9]+', t): > + elif re.fullmatch('[0-9]+:[0-9]+', t): > # Unsigned field extract > subtoks = t.split(':') > sign = False > @@ -488,11 +481,11 @@ def parse_arguments(lineno, name, toks): > flds = [] > extern = False > for t in toks: > - if re_fullmatch('!extern', t): > + if re.fullmatch('!extern', t): > extern = True > anyextern = True > continue > - if not re_fullmatch(re_ident, t): > + if not re.fullmatch(re_ident, t): > error(lineno, 'invalid argument set token "{0}"'.format(t)) > if t in flds: > error(lineno, 'duplicate argument "{0}"'.format(t)) > @@ -621,13 +614,13 @@ def parse_generic(lineno, is_format, name, toks): > continue > > # 'Foo=%Bar' imports a field with a different name. > - if re_fullmatch(re_ident + '=%' + re_ident, t): > + if re.fullmatch(re_ident + '=%' + re_ident, t): > (fname, iname) = t.split('=%') > flds = add_field_byname(lineno, flds, fname, iname) > continue > > # 'Foo=number' sets an argument field to a constant value > - if re_fullmatch(re_ident + '=[+-]?[0-9]+', t): > + if re.fullmatch(re_ident + '=[+-]?[0-9]+', t): > (fname, value) = t.split('=') > value = int(value) > flds = add_field(lineno, flds, fname, ConstField(value)) > @@ -635,7 +628,7 @@ def parse_generic(lineno, is_format, name, toks): > > # Pattern of 0s, 1s, dots and dashes indicate required zeros, > # required ones, or dont-cares. > - if re_fullmatch('[01.-]+', t): > + if re.fullmatch('[01.-]+', t): > shift = len(t) > fms = t.replace('0', '1') > fms = fms.replace('.', '0') > @@ -652,7 +645,7 @@ def parse_generic(lineno, is_format, name, toks): > fixedmask = (fixedmask << shift) | fms > undefmask = (undefmask << shift) | ubm > # Otherwise, fieldname:fieldwidth > - elif re_fullmatch(re_ident + ':s?[0-9]+', t): > + elif re.fullmatch(re_ident + ':s?[0-9]+', t): > (fname, flen) = t.split(':') > sign = False > if flen[0] == 's': >
diff --git a/scripts/decodetree.py b/scripts/decodetree.py index 46ab917807..f9d204aa36 100755 --- a/scripts/decodetree.py +++ b/scripts/decodetree.py @@ -75,13 +75,6 @@ def output(*args): output_fd.write(a) -if sys.version_info >= (3, 4): - re_fullmatch = re.fullmatch -else: - def re_fullmatch(pat, str): - return re.match('^' + pat + '$', str) - - def output_autogen(): output('/* This file is autogenerated by scripts/decodetree.py. */\n\n') @@ -428,18 +421,18 @@ def parse_field(lineno, name, toks): width = 0 func = None for t in toks: - if re_fullmatch('!function=' + re_ident, t): + if re.fullmatch('!function=' + re_ident, t): if func: error(lineno, 'duplicate function') func = t.split('=') func = func[1] continue - if re_fullmatch('[0-9]+:s[0-9]+', t): + if re.fullmatch('[0-9]+:s[0-9]+', t): # Signed field extract subtoks = t.split(':s') sign = True - elif re_fullmatch('[0-9]+:[0-9]+', t): + elif re.fullmatch('[0-9]+:[0-9]+', t): # Unsigned field extract subtoks = t.split(':') sign = False @@ -488,11 +481,11 @@ def parse_arguments(lineno, name, toks): flds = [] extern = False for t in toks: - if re_fullmatch('!extern', t): + if re.fullmatch('!extern', t): extern = True anyextern = True continue - if not re_fullmatch(re_ident, t): + if not re.fullmatch(re_ident, t): error(lineno, 'invalid argument set token "{0}"'.format(t)) if t in flds: error(lineno, 'duplicate argument "{0}"'.format(t)) @@ -621,13 +614,13 @@ def parse_generic(lineno, is_format, name, toks): continue # 'Foo=%Bar' imports a field with a different name. - if re_fullmatch(re_ident + '=%' + re_ident, t): + if re.fullmatch(re_ident + '=%' + re_ident, t): (fname, iname) = t.split('=%') flds = add_field_byname(lineno, flds, fname, iname) continue # 'Foo=number' sets an argument field to a constant value - if re_fullmatch(re_ident + '=[+-]?[0-9]+', t): + if re.fullmatch(re_ident + '=[+-]?[0-9]+', t): (fname, value) = t.split('=') value = int(value) flds = add_field(lineno, flds, fname, ConstField(value)) @@ -635,7 +628,7 @@ def parse_generic(lineno, is_format, name, toks): # Pattern of 0s, 1s, dots and dashes indicate required zeros, # required ones, or dont-cares. - if re_fullmatch('[01.-]+', t): + if re.fullmatch('[01.-]+', t): shift = len(t) fms = t.replace('0', '1') fms = fms.replace('.', '0') @@ -652,7 +645,7 @@ def parse_generic(lineno, is_format, name, toks): fixedmask = (fixedmask << shift) | fms undefmask = (undefmask << shift) | ubm # Otherwise, fieldname:fieldwidth - elif re_fullmatch(re_ident + ':s?[0-9]+', t): + elif re.fullmatch(re_ident + ':s?[0-9]+', t): (fname, flen) = t.split(':') sign = False if flen[0] == 's':
We are now guaranteed python 3.5 or later. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- scripts/decodetree.py | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) -- 2.20.1