Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/blib2to3/pygram.py: 100%
160 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 06:15 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 06:15 +0000
1# Copyright 2006 Google, Inc. All Rights Reserved.
2# Licensed to PSF under a Contributor Agreement.
4"""Export the Python grammar and symbols."""
6# Python imports
7import os
9from typing import Union
11# Local imports
12from .pgen2 import token
13from .pgen2 import driver
15from .pgen2.grammar import Grammar
17# Moved into initialize because mypyc can't handle __file__ (XXX bug)
18# # The grammar file
19# _GRAMMAR_FILE = os.path.join(os.path.dirname(__file__), "Grammar.txt")
20# _PATTERN_GRAMMAR_FILE = os.path.join(os.path.dirname(__file__),
21# "PatternGrammar.txt")
24class Symbols(object):
25 def __init__(self, grammar: Grammar) -> None:
26 """Initializer.
28 Creates an attribute for each grammar symbol (nonterminal),
29 whose value is the symbol's type (an int >= 256).
30 """
31 for name, symbol in grammar.symbol2number.items():
32 setattr(self, name, symbol)
35class _python_symbols(Symbols):
36 and_expr: int
37 and_test: int
38 annassign: int
39 arglist: int
40 argument: int
41 arith_expr: int
42 asexpr_test: int
43 assert_stmt: int
44 async_funcdef: int
45 async_stmt: int
46 atom: int
47 augassign: int
48 break_stmt: int
49 case_block: int
50 classdef: int
51 comp_for: int
52 comp_if: int
53 comp_iter: int
54 comp_op: int
55 comparison: int
56 compound_stmt: int
57 continue_stmt: int
58 decorated: int
59 decorator: int
60 decorators: int
61 del_stmt: int
62 dictsetmaker: int
63 dotted_as_name: int
64 dotted_as_names: int
65 dotted_name: int
66 encoding_decl: int
67 eval_input: int
68 except_clause: int
69 exec_stmt: int
70 expr: int
71 expr_stmt: int
72 exprlist: int
73 factor: int
74 file_input: int
75 flow_stmt: int
76 for_stmt: int
77 funcdef: int
78 global_stmt: int
79 guard: int
80 if_stmt: int
81 import_as_name: int
82 import_as_names: int
83 import_from: int
84 import_name: int
85 import_stmt: int
86 lambdef: int
87 listmaker: int
88 match_stmt: int
89 namedexpr_test: int
90 not_test: int
91 old_comp_for: int
92 old_comp_if: int
93 old_comp_iter: int
94 old_lambdef: int
95 old_test: int
96 or_test: int
97 parameters: int
98 paramspec: int
99 pass_stmt: int
100 pattern: int
101 patterns: int
102 power: int
103 print_stmt: int
104 raise_stmt: int
105 return_stmt: int
106 shift_expr: int
107 simple_stmt: int
108 single_input: int
109 sliceop: int
110 small_stmt: int
111 subject_expr: int
112 star_expr: int
113 stmt: int
114 subscript: int
115 subscriptlist: int
116 suite: int
117 term: int
118 test: int
119 testlist: int
120 testlist1: int
121 testlist_gexp: int
122 testlist_safe: int
123 testlist_star_expr: int
124 tfpdef: int
125 tfplist: int
126 tname: int
127 tname_star: int
128 trailer: int
129 try_stmt: int
130 type_stmt: int
131 typedargslist: int
132 typeparam: int
133 typeparams: int
134 typevar: int
135 typevartuple: int
136 varargslist: int
137 vfpdef: int
138 vfplist: int
139 vname: int
140 while_stmt: int
141 with_stmt: int
142 xor_expr: int
143 yield_arg: int
144 yield_expr: int
145 yield_stmt: int
148class _pattern_symbols(Symbols):
149 Alternative: int
150 Alternatives: int
151 Details: int
152 Matcher: int
153 NegatedUnit: int
154 Repeater: int
155 Unit: int
158python_grammar: Grammar
159python_grammar_no_print_statement: Grammar
160python_grammar_no_print_statement_no_exec_statement: Grammar
161python_grammar_no_print_statement_no_exec_statement_async_keywords: Grammar
162python_grammar_no_exec_statement: Grammar
163pattern_grammar: Grammar
164python_grammar_soft_keywords: Grammar
166python_symbols: _python_symbols
167pattern_symbols: _pattern_symbols
170def initialize(cache_dir: Union[str, "os.PathLike[str]", None] = None) -> None:
171 global python_grammar
172 global python_grammar_no_print_statement
173 global python_grammar_no_print_statement_no_exec_statement
174 global python_grammar_no_print_statement_no_exec_statement_async_keywords
175 global python_grammar_soft_keywords
176 global python_symbols
177 global pattern_grammar
178 global pattern_symbols
180 # The grammar file
181 _GRAMMAR_FILE = os.path.join(os.path.dirname(__file__), "Grammar.txt")
182 _PATTERN_GRAMMAR_FILE = os.path.join(
183 os.path.dirname(__file__), "PatternGrammar.txt"
184 )
186 # Python 2
187 python_grammar = driver.load_packaged_grammar("blib2to3", _GRAMMAR_FILE, cache_dir)
188 python_grammar.version = (2, 0)
190 soft_keywords = python_grammar.soft_keywords.copy()
191 python_grammar.soft_keywords.clear()
193 python_symbols = _python_symbols(python_grammar)
195 # Python 2 + from __future__ import print_function
196 python_grammar_no_print_statement = python_grammar.copy()
197 del python_grammar_no_print_statement.keywords["print"]
199 # Python 3.0-3.6
200 python_grammar_no_print_statement_no_exec_statement = python_grammar.copy()
201 del python_grammar_no_print_statement_no_exec_statement.keywords["print"]
202 del python_grammar_no_print_statement_no_exec_statement.keywords["exec"]
203 python_grammar_no_print_statement_no_exec_statement.version = (3, 0)
205 # Python 3.7+
206 python_grammar_no_print_statement_no_exec_statement_async_keywords = (
207 python_grammar_no_print_statement_no_exec_statement.copy()
208 )
209 python_grammar_no_print_statement_no_exec_statement_async_keywords.async_keywords = (
210 True
211 )
212 python_grammar_no_print_statement_no_exec_statement_async_keywords.version = (3, 7)
214 # Python 3.10+
215 python_grammar_soft_keywords = (
216 python_grammar_no_print_statement_no_exec_statement_async_keywords.copy()
217 )
218 python_grammar_soft_keywords.soft_keywords = soft_keywords
219 python_grammar_soft_keywords.version = (3, 10)
221 pattern_grammar = driver.load_packaged_grammar(
222 "blib2to3", _PATTERN_GRAMMAR_FILE, cache_dir
223 )
224 pattern_symbols = _pattern_symbols(pattern_grammar)