All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
1 # Copyright 2006 Google, Inc. All Rights Reserved.
2 # Licensed to PSF under a Contributor Agreement.
4 """Export the Python grammar and symbols."""
10 from .pgen2 import token
11 from .pgen2 import driver
14 _GRAMMAR_FILE = os.path.join(os.path.dirname(__file__), "Grammar.txt")
15 _PATTERN_GRAMMAR_FILE = os.path.join(os.path.dirname(__file__), "PatternGrammar.txt")
18 class Symbols(object):
19 def __init__(self, grammar):
22 Creates an attribute for each grammar symbol (nonterminal),
23 whose value is the symbol's type (an int >= 256).
25 for name, symbol in grammar.symbol2number.items():
26 setattr(self, name, symbol)
29 def initialize(cache_dir=None):
31 global python_grammar_no_print_statement
32 global python_grammar_no_print_statement_no_exec_statement
33 global python_grammar_no_print_statement_no_exec_statement_async_keywords
35 global pattern_grammar
36 global pattern_symbols
39 python_grammar = driver.load_packaged_grammar("blib2to3", _GRAMMAR_FILE, cache_dir)
41 python_symbols = Symbols(python_grammar)
43 # Python 2 + from __future__ import print_function
44 python_grammar_no_print_statement = python_grammar.copy()
45 del python_grammar_no_print_statement.keywords["print"]
48 python_grammar_no_print_statement_no_exec_statement = python_grammar.copy()
49 del python_grammar_no_print_statement_no_exec_statement.keywords["print"]
50 del python_grammar_no_print_statement_no_exec_statement.keywords["exec"]
53 python_grammar_no_print_statement_no_exec_statement_async_keywords = (
54 python_grammar_no_print_statement_no_exec_statement.copy()
56 python_grammar_no_print_statement_no_exec_statement_async_keywords.async_keywords = (
60 pattern_grammar = driver.load_packaged_grammar(
61 "blib2to3", _PATTERN_GRAMMAR_FILE, cache_dir
63 pattern_symbols = Symbols(pattern_grammar)