Two bugs and a refactor ..

1. parse2.py: try except in a loop with a (virtual) continue
   treat CONTINUE like JUMP_ABSOLUTE which it is
2. in taking methods off of constants, a parenthesis needs to be added

Some refactoring of global code done
This commit is contained in:
rocky
2017-12-03 10:46:22 -05:00
parent 0724dc1c0e
commit 5fe8303184
11 changed files with 116 additions and 66 deletions

View File

@@ -106,35 +106,36 @@ TABLE_DIRECT = {
(1, 'unary_op'),
(0, 'expr') ),
'unary_not': ( 'not %c',
'unary_not': ( 'not %c',
(0, 'expr' ) ),
'unary_convert': ( '`%c`',
(0, 'expr' ), ),
'get_iter': ( 'iter(%c)',
(0, 'expr'), ),
'slice0': ( '%c[:]',
'slice0': ( '%c[:]',
(0, 'expr'), ),
'slice1': ( '%c[%p:]',
'slice1': ( '%c[%p:]',
(0, 'expr'),
(1, 100) ),
'slice2': ( '%c[:%p]',
'slice2': ( '%c[:%p]',
(0, 'expr'),
(1, 100) ),
'slice3': ( '%c[%p:%p]',
'slice3': ( '%c[%p:%p]',
(0, 'expr'),
(1, 100), (2, 100) ),
'IMPORT_FROM': ( '%{pattr}', ),
'load_attr': ( '%c.%[1]{pattr}', 0),
'LOAD_FAST': ( '%{pattr}', ),
'LOAD_NAME': ( '%{pattr}', ),
'load_attr': ( '%c.%[1]{pattr}',
(0, 'expr')),
'LOAD_FAST': ( '%{pattr}', ),
'LOAD_NAME': ( '%{pattr}', ),
'LOAD_CLASSNAME': ( '%{pattr}', ),
'LOAD_GLOBAL': ( '%{pattr}', ),
'LOAD_DEREF': ( '%{pattr}', ),
'LOAD_LOCALS': ( 'locals()', ),
'LOAD_GLOBAL': ( '%{pattr}', ),
'LOAD_DEREF': ( '%{pattr}', ),
'LOAD_LOCALS': ( 'locals()', ),
'LOAD_ASSERT': ( '%{pattr}', ),
'DELETE_FAST': ( '%|del %{pattr}\n', ),
'DELETE_NAME': ( '%|del %{pattr}\n', ),
'DELETE_FAST': ( '%|del %{pattr}\n', ),
'DELETE_NAME': ( '%|del %{pattr}\n', ),
'DELETE_GLOBAL': ( '%|del %{pattr}\n', ),
'delete_subscr': ( '%|del %c[%c]\n', 0, 1,),
'subscript': ( '%c[%p]',
@@ -143,18 +144,24 @@ TABLE_DIRECT = {
'subscript2': ( '%c[%c]',
(0, 'expr'),
(1, 'expr') ),
'store_subscr': ( '%c[%c]', 0, 1),
'STORE_FAST': ( '%{pattr}', ),
'STORE_NAME': ( '%{pattr}', ),
'STORE_GLOBAL': ( '%{pattr}', ),
'STORE_DEREF': ( '%{pattr}', ),
'unpack': ( '%C%,', (1, maxint, ', ') ),
'store_subscr': ( '%c[%c]', 0, 1),
'STORE_FAST': ( '%{pattr}', ),
'STORE_NAME': ( '%{pattr}', ),
'STORE_GLOBAL': ( '%{pattr}', ),
'STORE_DEREF': ( '%{pattr}', ),
'unpack': ( '%C%,', (1, maxint, ', ') ),
# This nonterminal we create on the fly in semantic routines
'unpack_w_parens': ( '(%C%,)', (1, maxint, ', ') ),
'unpack_w_parens': ( '(%C%,)', (1, maxint, ', ') ),
'unpack_list': ( '[%C]', (1, maxint, ', ') ),
'build_tuple2': ( '%P', (0, -1, ', ', 100) ),
# This nonterminal we create on the fly in semantic routines
'load_attr': ( '(%c).%[1]{pattr}',
(0, 'expr')),
'unpack_list': ( '[%C]',
(1, maxint, ', ') ),
'build_tuple2': ( '%P',
(0, -1, ', ', 100) ),
'list_iter': ( '%c', 0 ),
'list_for': ( ' for %c in %c%c', 2, 0, 3 ),