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/[email protected]/msg66830.html > > Signed-off-by: Richard Henderson <[email protected]> > --- > 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': >
