(root)/
Python-3.12.0/
Lib/
lib2to3/
pygram.py
       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 ESC[4;38;5;81mSymbols(ESC[4;38;5;149mobject):
      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_packaged_grammar("lib2to3", _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  python_grammar_no_print_and_exec_statement = python_grammar_no_print_statement.copy()
      40  del python_grammar_no_print_and_exec_statement.keywords["exec"]
      41  
      42  pattern_grammar = driver.load_packaged_grammar("lib2to3", _PATTERN_GRAMMAR_FILE)
      43  pattern_symbols = Symbols(pattern_grammar)