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