3.3. grammar cleanup ...

need build_list in for BUILD_TUPLE_0
This commit is contained in:
rocky
2017-11-18 11:02:54 -05:00
parent f7ff4c2d41
commit a8e235de17
3 changed files with 14 additions and 8 deletions

View File

@@ -707,7 +707,7 @@ class Python3Parser(PythonParser):
if is_LOAD_CLOSURE: if is_LOAD_CLOSURE:
rule = ('load_closure ::= %s%s' % (('LOAD_CLOSURE ' * v), opname)) rule = ('load_closure ::= %s%s' % (('LOAD_CLOSURE ' * v), opname))
self.add_unique_rule(rule, opname, token.attr, customize) self.add_unique_rule(rule, opname, token.attr, customize)
if not is_LOAD_CLOSURE: if not is_LOAD_CLOSURE or v == 0:
rule = ('build_list ::= ' + 'expr1024 ' * int(v//1024) + rule = ('build_list ::= ' + 'expr1024 ' * int(v//1024) +
'expr32 ' * int((v//32) % 32) + 'expr32 ' * int((v//32) % 32) +
'expr ' * (v % 32) + opname) 'expr ' * (v % 32) + opname)

View File

@@ -35,5 +35,16 @@ class Python33Parser(Python32Parser):
jump_excepts ::= jump_except+ jump_excepts ::= jump_except+
""" """
def add_custom_rules(self, tokens, customize):
self.remove_rules("""
whileTruestmt ::= SETUP_LOOP l_stmts JUMP_ABSOLUTE JUMP_BACK COME_FROM_LOOP
whileTruestmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK NOP COME_FROM_LOOP
whileTruestmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK POP_BLOCK NOP COME_FROM_LOOP
whilestmt ::= SETUP_LOOP testexpr l_stmts_opt JUMP_BACK
POP_BLOCK JUMP_ABSOLUTE COME_FROM_LOOP
""")
super(Python33Parser, self).add_custom_rules(tokens, customize)
return
class Python33ParserSingle(Python33Parser, PythonParserSingle): class Python33ParserSingle(Python33Parser, PythonParserSingle):
pass pass

View File

@@ -24,13 +24,8 @@ class Python34Parser(Python33Parser):
""" """
def add_custom_rules(self, tokens, customize): def add_custom_rules(self, tokens, customize):
self.remove_rules(""" # self.remove_rules("""
whileTruestmt ::= SETUP_LOOP l_stmts JUMP_ABSOLUTE JUMP_BACK COME_FROM_LOOP # """)
whileTruestmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK NOP COME_FROM_LOOP
whileTruestmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK POP_BLOCK NOP COME_FROM_LOOP
whilestmt ::= SETUP_LOOP testexpr l_stmts_opt JUMP_BACK
POP_BLOCK JUMP_ABSOLUTE COME_FROM_LOOP
""")
super(Python34Parser, self).add_custom_rules(tokens, customize) super(Python34Parser, self).add_custom_rules(tokens, customize)
return return