You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-04 01:09:52 +08:00
showasm and showast now accept file like objects which are used for writing the the asm or ast to.
This commit is contained in:
@@ -12,6 +12,8 @@ import sys
|
||||
|
||||
from xdis.code import iscode
|
||||
from spark_parser import GenericASTBuilder, DEFAULT_DEBUG as PARSER_DEFAULT_DEBUG
|
||||
from uncompyle6.show import maybe_show_asm
|
||||
|
||||
|
||||
class ParserError(Exception):
|
||||
def __init__(self, token, offset):
|
||||
@@ -506,15 +508,30 @@ class PythonParserSingle(PythonParser):
|
||||
call_stmt ::= expr PRINT_EXPR
|
||||
'''
|
||||
|
||||
|
||||
def python_parser(version, co, out=sys.stdout, showasm=False,
|
||||
parser_debug=PARSER_DEFAULT_DEBUG):
|
||||
"""
|
||||
Parse a code object to an abstract syntax tree representation.
|
||||
|
||||
:param version: The python version this code is from as a float, for
|
||||
example 2.6, 2.7, 3.2, 3.3, 3.4, 3.5 etc.
|
||||
:param co: The code object to parse.
|
||||
:param out: File like object to write the output to.
|
||||
:param showasm: Flag which determines whether the disassembled code
|
||||
is written to sys.stdout or not. (It is also to
|
||||
pass a file like object, into which the asm will be
|
||||
written).
|
||||
:param parser_debug: dict containing debug flags for the spark parser.
|
||||
|
||||
:return: Abstract syntax tree representation of the code object.
|
||||
"""
|
||||
|
||||
assert iscode(co)
|
||||
from uncompyle6.scanner import get_scanner
|
||||
scanner = get_scanner(version)
|
||||
tokens, customize = scanner.disassemble(co)
|
||||
if showasm:
|
||||
for t in tokens:
|
||||
print(t)
|
||||
maybe_show_asm(showasm, tokens)
|
||||
|
||||
# For heavy grammar debugging
|
||||
parser_debug = {'rules': True, 'transition': True, 'reduce' : True,
|
||||
|
Reference in New Issue
Block a user