You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-03 00:45:53 +08:00
custom rule hacking ...
Reduce extraneous 3.x "load_list" and "load_closure" rules
This commit is contained in:
@@ -117,14 +117,26 @@ grammar-coverage-2.7:
|
|||||||
SPARK_PARSER_COVERAGE=/tmp/spark-grammar-27.cover $(PYTHON) test_pythonlib.py --bytecode-2.7
|
SPARK_PARSER_COVERAGE=/tmp/spark-grammar-27.cover $(PYTHON) test_pythonlib.py --bytecode-2.7
|
||||||
SPARK_PARSER_COVERAGE=/tmp/spark-grammar-27.cover $(PYTHON) test_pyenvlib.py --2.7.13
|
SPARK_PARSER_COVERAGE=/tmp/spark-grammar-27.cover $(PYTHON) test_pyenvlib.py --2.7.13
|
||||||
|
|
||||||
#: Get grammar coverage for Python 3.4
|
#: Get grammar coverage for Python 3.3
|
||||||
|
grammar-coverage-3.3:
|
||||||
|
rm $(COVER_DIR)/spark-grammar-33.cover || /bin/true
|
||||||
|
SPARK_PARSER_COVERAGE=$(COVER_DIR)/spark-grammar-33.cover $(PYTHON) test_pythonlib.py --bytecode-3.3
|
||||||
|
SPARK_PARSER_COVERAGE=$(COVER_DIR)/spark-grammar-33.cover $(PYTHON) test_pyenvlib.py --3.3.6
|
||||||
|
|
||||||
|
##: Get grammar coverage for Python 3.4
|
||||||
grammar-coverage-3.4:
|
grammar-coverage-3.4:
|
||||||
rm $(COVER_DIR)/spark-grammar-34.cover || /bin/true
|
rm $(COVER_DIR)/spark-grammar-34.cover || /bin/true
|
||||||
SPARK_PARSER_COVERAGE=$(COVER_DIR)/spark-grammar-34.cover $(PYTHON) test_pythonlib.py --bytecode-3.4
|
SPARK_PARSER_COVERAGE=$(COVER_DIR)/spark-grammar-34.cover $(PYTHON) test_pythonlib.py --bytecode-3.4
|
||||||
SPARK_PARSER_COVERAGE=$(COVER_DIR)/spark-grammar-34.cover $(PYTHON) test_pyenvlib.py --3.4.2
|
SPARK_PARSER_COVERAGE=$(COVER_DIR)/spark-grammar-34.cover $(PYTHON) test_pyenvlib.py --3.4.2
|
||||||
|
|
||||||
|
##: Get grammar coverage for Python 3.5
|
||||||
|
grammar-coverage-3.5:
|
||||||
|
rm $(COVER_DIR)/spark-grammar-35.cover || /bin/true
|
||||||
|
SPARK_PARSER_COVERAGE=$(COVER_DIR)/spark-grammar-35.cover $(PYTHON) test_pythonlib.py --bytecode-3.5
|
||||||
|
SPARK_PARSER_COVERAGE=$(COVER_DIR)/spark-grammar-35.cover $(PYTHON) test_pyenvlib.py --3.5.2
|
||||||
|
|
||||||
#: Check deparsing Python 2.6
|
#: Check deparsing Python 2.6
|
||||||
check-bytecode-2.6:
|
pcheck-bytecode-2.6:
|
||||||
$(PYTHON) test_pythonlib.py --bytecode-2.6 --weak-verify
|
$(PYTHON) test_pythonlib.py --bytecode-2.6 --weak-verify
|
||||||
|
|
||||||
#: Check deparsing Python 2.7
|
#: Check deparsing Python 2.7
|
||||||
|
Binary file not shown.
@@ -694,12 +694,23 @@ class Python3Parser(PythonParser):
|
|||||||
self.add_unique_rule(rule, opname, token.attr, customize)
|
self.add_unique_rule(rule, opname, token.attr, customize)
|
||||||
elif opname_base in ('BUILD_LIST', 'BUILD_TUPLE', 'BUILD_SET'):
|
elif opname_base in ('BUILD_LIST', 'BUILD_TUPLE', 'BUILD_SET'):
|
||||||
v = token.attr
|
v = token.attr
|
||||||
rule = ('build_list ::= ' + 'expr1024 ' * int(v//1024) +
|
|
||||||
'expr32 ' * int((v//32) % 32) +
|
is_LOAD_CLOSURE = False
|
||||||
'expr ' * (v % 32) + opname)
|
|
||||||
self.add_unique_rule(rule, opname, token.attr, customize)
|
|
||||||
if opname_base == 'BUILD_TUPLE':
|
if opname_base == 'BUILD_TUPLE':
|
||||||
rule = ('load_closure ::= %s%s' % (('LOAD_CLOSURE ' * v), opname))
|
# If is part of a "load_closure", then it is not part of a
|
||||||
|
# "build_list".
|
||||||
|
is_LOAD_CLOSURE = True
|
||||||
|
for j in range(v):
|
||||||
|
if tokens[i-j-1].kind != 'LOAD_CLOSURE':
|
||||||
|
is_LOAD_CLOSURE = False
|
||||||
|
break
|
||||||
|
if is_LOAD_CLOSURE:
|
||||||
|
rule = ('load_closure ::= %s%s' % (('LOAD_CLOSURE ' * v), opname))
|
||||||
|
self.add_unique_rule(rule, opname, token.attr, customize)
|
||||||
|
if not is_LOAD_CLOSURE:
|
||||||
|
rule = ('build_list ::= ' + 'expr1024 ' * int(v//1024) +
|
||||||
|
'expr32 ' * int((v//32) % 32) +
|
||||||
|
'expr ' * (v % 32) + opname)
|
||||||
self.add_unique_rule(rule, opname, token.attr, customize)
|
self.add_unique_rule(rule, opname, token.attr, customize)
|
||||||
elif opname.startswith('BUILD_TUPLE_UNPACK_WITH_CALL'):
|
elif opname.startswith('BUILD_TUPLE_UNPACK_WITH_CALL'):
|
||||||
v = token.attr
|
v = token.attr
|
||||||
|
Reference in New Issue
Block a user