• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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