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 7import os 8 9# Local imports 10from .pgen2 import token 11from .pgen2 import driver 12from . 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 20class 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 32python_grammar = driver.load_packaged_grammar("lib2to3", _GRAMMAR_FILE) 33 34python_symbols = Symbols(python_grammar) 35 36python_grammar_no_print_statement = python_grammar.copy() 37del python_grammar_no_print_statement.keywords["print"] 38 39python_grammar_no_print_and_exec_statement = python_grammar_no_print_statement.copy() 40del python_grammar_no_print_and_exec_statement.keywords["exec"] 41 42pattern_grammar = driver.load_packaged_grammar("lib2to3", _PATTERN_GRAMMAR_FILE) 43pattern_symbols = Symbols(pattern_grammar) 44