You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-03 16:59:52 +08:00
More node checking in tables
This commit is contained in:
@@ -474,27 +474,24 @@ class PythonParser(GenericASTBuilder):
|
|||||||
expr ::= buildslice3
|
expr ::= buildslice3
|
||||||
expr ::= yield
|
expr ::= yield
|
||||||
|
|
||||||
# Possibly Python < 2.3
|
|
||||||
# expr ::= SET_LINENO
|
|
||||||
|
|
||||||
binary_expr ::= expr expr binary_op
|
binary_expr ::= expr expr binary_op
|
||||||
binary_op ::= BINARY_ADD
|
binary_op ::= BINARY_ADD
|
||||||
binary_op ::= BINARY_MULTIPLY
|
binary_op ::= BINARY_MULTIPLY
|
||||||
binary_op ::= BINARY_AND
|
binary_op ::= BINARY_AND
|
||||||
binary_op ::= BINARY_OR
|
binary_op ::= BINARY_OR
|
||||||
binary_op ::= BINARY_XOR
|
binary_op ::= BINARY_XOR
|
||||||
binary_op ::= BINARY_SUBTRACT
|
binary_op ::= BINARY_SUBTRACT
|
||||||
binary_op ::= BINARY_TRUE_DIVIDE
|
binary_op ::= BINARY_TRUE_DIVIDE
|
||||||
binary_op ::= BINARY_FLOOR_DIVIDE
|
binary_op ::= BINARY_FLOOR_DIVIDE
|
||||||
binary_op ::= BINARY_MODULO
|
binary_op ::= BINARY_MODULO
|
||||||
binary_op ::= BINARY_LSHIFT
|
binary_op ::= BINARY_LSHIFT
|
||||||
binary_op ::= BINARY_RSHIFT
|
binary_op ::= BINARY_RSHIFT
|
||||||
binary_op ::= BINARY_POWER
|
binary_op ::= BINARY_POWER
|
||||||
|
|
||||||
unary_expr ::= expr unary_op
|
unary_expr ::= expr unary_op
|
||||||
unary_op ::= UNARY_POSITIVE
|
unary_op ::= UNARY_POSITIVE
|
||||||
unary_op ::= UNARY_NEGATIVE
|
unary_op ::= UNARY_NEGATIVE
|
||||||
unary_op ::= UNARY_INVERT
|
unary_op ::= UNARY_INVERT
|
||||||
|
|
||||||
unary_not ::= expr UNARY_NOT
|
unary_not ::= expr UNARY_NOT
|
||||||
|
|
||||||
|
@@ -74,64 +74,72 @@ TABLE_DIRECT = {
|
|||||||
'BINARY_MATRIX_MULTIPLY': ( '@' ,),
|
'BINARY_MATRIX_MULTIPLY': ( '@' ,),
|
||||||
'BINARY_TRUE_DIVIDE': ( '/' ,), # Not in <= 2.1
|
'BINARY_TRUE_DIVIDE': ( '/' ,), # Not in <= 2.1
|
||||||
'BINARY_FLOOR_DIVIDE': ( '//' ,),
|
'BINARY_FLOOR_DIVIDE': ( '//' ,),
|
||||||
'BINARY_MODULO': ( '%%',),
|
'BINARY_MODULO': ( '%%',),
|
||||||
'BINARY_POWER': ( '**',),
|
'BINARY_POWER': ( '**',),
|
||||||
'BINARY_LSHIFT': ( '<<',),
|
'BINARY_LSHIFT': ( '<<',),
|
||||||
'BINARY_RSHIFT': ( '>>',),
|
'BINARY_RSHIFT': ( '>>',),
|
||||||
'BINARY_AND': ( '&' ,),
|
'BINARY_AND': ( '&' ,),
|
||||||
'BINARY_OR': ( '|' ,),
|
'BINARY_OR': ( '|' ,),
|
||||||
'BINARY_XOR': ( '^' ,),
|
'BINARY_XOR': ( '^' ,),
|
||||||
'INPLACE_ADD': ( '+=' ,),
|
'INPLACE_ADD': ( '+=' ,),
|
||||||
'INPLACE_SUBTRACT': ( '-=' ,),
|
'INPLACE_SUBTRACT': ( '-=' ,),
|
||||||
'INPLACE_MULTIPLY': ( '*=' ,),
|
'INPLACE_MULTIPLY': ( '*=' ,),
|
||||||
'INPLACE_MATRIX_MULTIPLY': ( '@=' ,),
|
'INPLACE_MATRIX_MULTIPLY': ( '@=' ,),
|
||||||
'INPLACE_DIVIDE': ( '/=' ,),
|
'INPLACE_DIVIDE': ( '/=' ,),
|
||||||
'INPLACE_TRUE_DIVIDE': ( '/=' ,), # Not in <= 2.1; 2.6 generates INPLACE_DIVIDE only?
|
'INPLACE_TRUE_DIVIDE': ( '/=' ,), # Not in <= 2.1; 2.6 generates INPLACE_DIVIDE only?
|
||||||
'INPLACE_FLOOR_DIVIDE': ( '//=' ,),
|
'INPLACE_FLOOR_DIVIDE': ( '//=' ,),
|
||||||
'INPLACE_MODULO': ( '%%=',),
|
'INPLACE_MODULO': ( '%%=',),
|
||||||
'INPLACE_POWER': ( '**=',),
|
'INPLACE_POWER': ( '**=',),
|
||||||
'INPLACE_LSHIFT': ( '<<=',),
|
'INPLACE_LSHIFT': ( '<<=',),
|
||||||
'INPLACE_RSHIFT': ( '>>=',),
|
'INPLACE_RSHIFT': ( '>>=',),
|
||||||
'INPLACE_AND': ( '&=' ,),
|
'INPLACE_AND': ( '&=' ,),
|
||||||
'INPLACE_OR': ( '|=' ,),
|
'INPLACE_OR': ( '|=' ,),
|
||||||
'INPLACE_XOR': ( '^=' ,),
|
'INPLACE_XOR': ( '^=' ,),
|
||||||
'binary_expr': ( '%c %c %c', 0, -1, 1 ),
|
'binary_expr': ( '%c %c %c', 0,
|
||||||
|
(-1, 'binary_op'),
|
||||||
|
( 1, 'expr' ) ),
|
||||||
|
|
||||||
'UNARY_POSITIVE': ( '+',),
|
'UNARY_POSITIVE': ( '+',),
|
||||||
'UNARY_NEGATIVE': ( '-',),
|
'UNARY_NEGATIVE': ( '-',),
|
||||||
'UNARY_INVERT': ( '~'),
|
'UNARY_INVERT': ( '~'),
|
||||||
'unary_expr': ( '%c%c', 1, 0),
|
'unary_expr': ( '%c%c',
|
||||||
|
(1, 'unary_op'),
|
||||||
|
(0, 'expr') ),
|
||||||
|
|
||||||
'unary_not': ( 'not %c', 0 ),
|
'unary_not': ( 'not %c',
|
||||||
'unary_convert': ( '`%c`', 0 ),
|
(0, 'expr' ) ),
|
||||||
'get_iter': ( 'iter(%c)', 0 ),
|
'unary_convert': ( '`%c`',
|
||||||
'slice0': ( '%c[:]', 0 ),
|
(0, 'expr' ), ),
|
||||||
'slice1': ( '%c[%p:]', 0, (1, 100) ),
|
'get_iter': ( 'iter(%c)', 0 ),
|
||||||
'slice2': ( '%c[:%p]', 0, (1, 100) ),
|
'slice0': ( '%c[:]', 0 ),
|
||||||
'slice3': ( '%c[%p:%p]', 0, (1, 100), (2, 100) ),
|
'slice1': ( '%c[%p:]',
|
||||||
|
0, (1, 100) ),
|
||||||
|
'slice2': ( '%c[:%p]',
|
||||||
|
0, (1, 100) ),
|
||||||
|
'slice3': ( '%c[%p:%p]',
|
||||||
|
0, (1, 100), (2, 100) ),
|
||||||
|
|
||||||
'IMPORT_FROM': ( '%{pattr}', ),
|
'IMPORT_FROM': ( '%{pattr}', ),
|
||||||
'load_attr': ( '%c.%[1]{pattr}', 0),
|
'load_attr': ( '%c.%[1]{pattr}', 0),
|
||||||
'LOAD_FAST': ( '%{pattr}', ),
|
'LOAD_FAST': ( '%{pattr}', ),
|
||||||
'LOAD_NAME': ( '%{pattr}', ),
|
'LOAD_NAME': ( '%{pattr}', ),
|
||||||
'LOAD_CLASSNAME': ( '%{pattr}', ),
|
'LOAD_CLASSNAME': ( '%{pattr}', ),
|
||||||
'LOAD_GLOBAL': ( '%{pattr}', ),
|
'LOAD_GLOBAL': ( '%{pattr}', ),
|
||||||
'LOAD_DEREF': ( '%{pattr}', ),
|
'LOAD_DEREF': ( '%{pattr}', ),
|
||||||
'LOAD_LOCALS': ( 'locals()', ),
|
'LOAD_LOCALS': ( 'locals()', ),
|
||||||
'LOAD_ASSERT': ( '%{pattr}', ),
|
'LOAD_ASSERT': ( '%{pattr}', ),
|
||||||
# 'LOAD_CONST': ( '%{pattr}', ), # handled by n_LOAD_CONST
|
'DELETE_FAST': ( '%|del %{pattr}\n', ),
|
||||||
'DELETE_FAST': ( '%|del %{pattr}\n', ),
|
'DELETE_NAME': ( '%|del %{pattr}\n', ),
|
||||||
'DELETE_NAME': ( '%|del %{pattr}\n', ),
|
'DELETE_GLOBAL': ( '%|del %{pattr}\n', ),
|
||||||
'DELETE_GLOBAL': ( '%|del %{pattr}\n', ),
|
'delete_subscr': ( '%|del %c[%c]\n', 0, 1,),
|
||||||
'delete_subscr': ( '%|del %c[%c]\n', 0, 1,),
|
'binary_subscr': ( '%c[%p]', 0, (1, 100)),
|
||||||
'binary_subscr': ( '%c[%p]', 0, (1, 100)),
|
'binary_subscr2': ( '%c[%p]', 0, (1, 100)),
|
||||||
'binary_subscr2': ( '%c[%p]', 0, (1, 100)),
|
'store_subscr': ( '%c[%c]', 0, 1),
|
||||||
'store_subscr': ( '%c[%c]', 0, 1),
|
'STORE_FAST': ( '%{pattr}', ),
|
||||||
'STORE_FAST': ( '%{pattr}', ),
|
'STORE_NAME': ( '%{pattr}', ),
|
||||||
'STORE_NAME': ( '%{pattr}', ),
|
'STORE_GLOBAL': ( '%{pattr}', ),
|
||||||
'STORE_GLOBAL': ( '%{pattr}', ),
|
'STORE_DEREF': ( '%{pattr}', ),
|
||||||
'STORE_DEREF': ( '%{pattr}', ),
|
'unpack': ( '%C%,', (1, maxint, ', ') ),
|
||||||
'unpack': ( '%C%,', (1, maxint, ', ') ),
|
|
||||||
|
|
||||||
# This nonterminal we create on the fly in semantic routines
|
# This nonterminal we create on the fly in semantic routines
|
||||||
'unpack_w_parens': ( '(%C%,)', (1, maxint, ', ') ),
|
'unpack_w_parens': ( '(%C%,)', (1, maxint, ', ') ),
|
||||||
|
Reference in New Issue
Block a user