parse33.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. # Copyright (c) 2016, 2024 Rocky Bernstein
  2. """
  3. spark grammar differences over Python 3.2 for Python 3.3.
  4. """
  5. from uncompyle6.parser import PythonParserSingle
  6. from uncompyle6.parsers.parse32 import Python32Parser
  7. class Python33Parser(Python32Parser):
  8. def p_33on(self, args):
  9. """
  10. # Python 3.3+ adds yield from.
  11. expr ::= yield_from
  12. yield_from ::= expr expr YIELD_FROM
  13. stmt ::= genexpr_func
  14. """
  15. def customize_grammar_rules(self, tokens, customize):
  16. self.remove_rules(
  17. """
  18. # 3.3+ adds POP_BLOCKS
  19. whileTruestmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK POP_BLOCK NOP COME_FROM_LOOP
  20. whileTruestmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK NOP COME_FROM_LOOP
  21. """
  22. )
  23. super(Python33Parser, self).customize_grammar_rules(tokens, customize)
  24. # FIXME: move 3.3 stuff out of parse3.py and put it here.
  25. # for i, token in enumerate(tokens):
  26. # opname = token.kind
  27. # opname_base = opname[: opname.rfind("_")]
  28. return
  29. class Python33ParserSingle(Python33Parser, PythonParserSingle):
  30. pass