Home | History | Annotate | Download | only in lib2to3
      1 # Copyright 2006 Google, Inc. All Rights Reserved.
      2 # Licensed to PSF under a Contributor Agreement.
      3 
      4 """Export the Python grammar and symbols."""
      5 
      6 # Python imports
      7 import os
      8 
      9 # Local imports
     10 from .pgen2 import token
     11 from .pgen2 import driver
     12 from . import pytree
     13 
     14 # The grammar file
     15 _GRAMMAR_FILE = os.path.join(os.path.dirname(__file__), "Grammar.txt")
     16 _PATTERN_GRAMMAR_FILE = os.path.join(os.path.dirname(__file__),
     17                                      "PatternGrammar.txt")
     18 
     19 
     20 class Symbols(object):
     21 
     22     def __init__(self, grammar):
     23         """Initializer.
     24 
     25         Creates an attribute for each grammar symbol (nonterminal),
     26         whose value is the symbol's type (an int >= 256).
     27         """
     28         for name, symbol in grammar.symbol2number.items():
     29             setattr(self, name, symbol)
     30 
     31 
     32 python_grammar = driver.load_grammar(_GRAMMAR_FILE)
     33 
     34 python_symbols = Symbols(python_grammar)
     35 
     36 python_grammar_no_print_statement = python_grammar.copy()
     37 del python_grammar_no_print_statement.keywords["print"]
     38 
     39 pattern_grammar = driver.load_grammar(_PATTERN_GRAMMAR_FILE)
     40 pattern_symbols = Symbols(pattern_grammar)
     41