All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
   1 # Copyright 2006 Google, Inc. All Rights Reserved.
 
   2 # Licensed to PSF under a Contributor Agreement.
 
   4 """Export the Python grammar and symbols."""
 
  10 from .pgen2 import token
 
  11 from .pgen2 import driver
 
  15 _GRAMMAR_FILE = os.path.join(os.path.dirname(__file__), "Grammar.txt")
 
  16 _PATTERN_GRAMMAR_FILE = os.path.join(os.path.dirname(__file__),
 
  20 class Symbols(object):
 
  22     def __init__(self, grammar):
 
  25         Creates an attribute for each grammar symbol (nonterminal),
 
  26         whose value is the symbol's type (an int >= 256).
 
  28         for name, symbol in grammar.symbol2number.items():
 
  29             setattr(self, name, symbol)
 
  32 def initialize(cache_dir=None):
 
  34     global python_grammar_no_print_statement
 
  35     global python_grammar_no_print_statement_no_exec_statement
 
  36     global python_grammar_no_print_statement_no_exec_statement_async_keywords
 
  38     global pattern_grammar
 
  39     global pattern_symbols
 
  42     python_grammar = driver.load_packaged_grammar("blib2to3", _GRAMMAR_FILE,
 
  45     python_symbols = Symbols(python_grammar)
 
  47     # Python 2 + from __future__ import print_function
 
  48     python_grammar_no_print_statement = python_grammar.copy()
 
  49     del python_grammar_no_print_statement.keywords["print"]
 
  52     python_grammar_no_print_statement_no_exec_statement = python_grammar.copy()
 
  53     del python_grammar_no_print_statement_no_exec_statement.keywords["print"]
 
  54     del python_grammar_no_print_statement_no_exec_statement.keywords["exec"]
 
  57     python_grammar_no_print_statement_no_exec_statement_async_keywords = (
 
  58         python_grammar_no_print_statement_no_exec_statement.copy()
 
  60     python_grammar_no_print_statement_no_exec_statement_async_keywords.async_keywords = True
 
  62     pattern_grammar = driver.load_packaged_grammar("blib2to3", _PATTERN_GRAMMAR_FILE,
 
  64     pattern_symbols = Symbols(pattern_grammar)