pygram.py 1.09 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# Copyright 2006 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Export the Python grammar and symbols."""

# Python imports
import os

# Local imports
from .pgen2 import token
from .pgen2 import driver
from . import pytree

# The grammar file
_GRAMMAR_FILE = os.path.join(os.path.dirname(__file__), "Grammar.txt")
Benjamin Peterson's avatar
Benjamin Peterson committed
16 17
_PATTERN_GRAMMAR_FILE = os.path.join(os.path.dirname(__file__),
                                     "PatternGrammar.txt")
18 19 20 21 22 23 24 25 26 27


class Symbols(object):

    def __init__(self, grammar):
        """Initializer.

        Creates an attribute for each grammar symbol (nonterminal),
        whose value is the symbol's type (an int >= 256).
        """
28
        for name, symbol in grammar.symbol2number.items():
29 30 31 32
            setattr(self, name, symbol)


python_grammar = driver.load_grammar(_GRAMMAR_FILE)
33

34
python_symbols = Symbols(python_grammar)
35 36 37

python_grammar_no_print_statement = python_grammar.copy()
del python_grammar_no_print_statement.keywords["print"]
Benjamin Peterson's avatar
Benjamin Peterson committed
38 39 40

pattern_grammar = driver.load_grammar(_PATTERN_GRAMMAR_FILE)
pattern_symbols = Symbols(pattern_grammar)