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