Spaces:
Runtime error
Runtime error
| # Copyright 2006 Google, Inc. All Rights Reserved. | |
| # Licensed to PSF under a Contributor Agreement. | |
| """Export the Python grammar and symbols.""" | |
| # Python imports | |
| import os | |
| from typing import Union | |
| # Local imports | |
| from .pgen2 import driver | |
| from .pgen2.grammar import Grammar | |
| # Moved into initialize because mypyc can't handle __file__ (XXX bug) | |
| # # The grammar file | |
| # _GRAMMAR_FILE = os.path.join(os.path.dirname(__file__), "Grammar.txt") | |
| # _PATTERN_GRAMMAR_FILE = os.path.join(os.path.dirname(__file__), | |
| # "PatternGrammar.txt") | |
| class Symbols: | |
| def __init__(self, grammar: Grammar) -> None: | |
| """Initializer. | |
| Creates an attribute for each grammar symbol (nonterminal), | |
| whose value is the symbol's type (an int >= 256). | |
| """ | |
| for name, symbol in grammar.symbol2number.items(): | |
| setattr(self, name, symbol) | |
| class _python_symbols(Symbols): | |
| and_expr: int | |
| and_test: int | |
| annassign: int | |
| arglist: int | |
| argument: int | |
| arith_expr: int | |
| asexpr_test: int | |
| assert_stmt: int | |
| async_funcdef: int | |
| async_stmt: int | |
| atom: int | |
| augassign: int | |
| break_stmt: int | |
| case_block: int | |
| classdef: int | |
| comp_for: int | |
| comp_if: int | |
| comp_iter: int | |
| comp_op: int | |
| comparison: int | |
| compound_stmt: int | |
| continue_stmt: int | |
| decorated: int | |
| decorator: int | |
| decorators: int | |
| del_stmt: int | |
| dictsetmaker: int | |
| dotted_as_name: int | |
| dotted_as_names: int | |
| dotted_name: int | |
| encoding_decl: int | |
| eval_input: int | |
| except_clause: int | |
| exec_stmt: int | |
| expr: int | |
| expr_stmt: int | |
| exprlist: int | |
| factor: int | |
| file_input: int | |
| flow_stmt: int | |
| for_stmt: int | |
| funcdef: int | |
| global_stmt: int | |
| guard: int | |
| if_stmt: int | |
| import_as_name: int | |
| import_as_names: int | |
| import_from: int | |
| import_name: int | |
| import_stmt: int | |
| lambdef: int | |
| listmaker: int | |
| match_stmt: int | |
| namedexpr_test: int | |
| not_test: int | |
| old_comp_for: int | |
| old_comp_if: int | |
| old_comp_iter: int | |
| old_lambdef: int | |
| old_test: int | |
| or_test: int | |
| parameters: int | |
| paramspec: int | |
| pass_stmt: int | |
| pattern: int | |
| patterns: int | |
| power: int | |
| print_stmt: int | |
| raise_stmt: int | |
| return_stmt: int | |
| shift_expr: int | |
| simple_stmt: int | |
| single_input: int | |
| sliceop: int | |
| small_stmt: int | |
| subject_expr: int | |
| star_expr: int | |
| stmt: int | |
| subscript: int | |
| subscriptlist: int | |
| suite: int | |
| term: int | |
| test: int | |
| testlist: int | |
| testlist1: int | |
| testlist_gexp: int | |
| testlist_safe: int | |
| testlist_star_expr: int | |
| tfpdef: int | |
| tfplist: int | |
| tname: int | |
| tname_star: int | |
| trailer: int | |
| try_stmt: int | |
| type_stmt: int | |
| typedargslist: int | |
| typeparam: int | |
| typeparams: int | |
| typevar: int | |
| typevartuple: int | |
| varargslist: int | |
| vfpdef: int | |
| vfplist: int | |
| vname: int | |
| while_stmt: int | |
| with_stmt: int | |
| xor_expr: int | |
| yield_arg: int | |
| yield_expr: int | |
| yield_stmt: int | |
| class _pattern_symbols(Symbols): | |
| Alternative: int | |
| Alternatives: int | |
| Details: int | |
| Matcher: int | |
| NegatedUnit: int | |
| Repeater: int | |
| Unit: int | |
| python_grammar: Grammar | |
| python_grammar_no_print_statement: Grammar | |
| python_grammar_no_print_statement_no_exec_statement: Grammar | |
| python_grammar_no_print_statement_no_exec_statement_async_keywords: Grammar | |
| python_grammar_no_exec_statement: Grammar | |
| pattern_grammar: Grammar | |
| python_grammar_soft_keywords: Grammar | |
| python_symbols: _python_symbols | |
| pattern_symbols: _pattern_symbols | |
| def initialize(cache_dir: Union[str, "os.PathLike[str]", None] = None) -> None: | |
| global python_grammar | |
| global python_grammar_no_print_statement | |
| global python_grammar_no_print_statement_no_exec_statement | |
| global python_grammar_no_print_statement_no_exec_statement_async_keywords | |
| global python_grammar_soft_keywords | |
| global python_symbols | |
| global pattern_grammar | |
| global pattern_symbols | |
| # The grammar file | |
| _GRAMMAR_FILE = os.path.join(os.path.dirname(__file__), "Grammar.txt") | |
| _PATTERN_GRAMMAR_FILE = os.path.join( | |
| os.path.dirname(__file__), "PatternGrammar.txt" | |
| ) | |
| # Python 2 | |
| python_grammar = driver.load_packaged_grammar("blib2to3", _GRAMMAR_FILE, cache_dir) | |
| python_grammar.version = (2, 0) | |
| soft_keywords = python_grammar.soft_keywords.copy() | |
| python_grammar.soft_keywords.clear() | |
| python_symbols = _python_symbols(python_grammar) | |
| # Python 2 + from __future__ import print_function | |
| python_grammar_no_print_statement = python_grammar.copy() | |
| del python_grammar_no_print_statement.keywords["print"] | |
| # Python 3.0-3.6 | |
| python_grammar_no_print_statement_no_exec_statement = python_grammar.copy() | |
| del python_grammar_no_print_statement_no_exec_statement.keywords["print"] | |
| del python_grammar_no_print_statement_no_exec_statement.keywords["exec"] | |
| python_grammar_no_print_statement_no_exec_statement.version = (3, 0) | |
| # Python 3.7+ | |
| python_grammar_no_print_statement_no_exec_statement_async_keywords = ( | |
| python_grammar_no_print_statement_no_exec_statement.copy() | |
| ) | |
| python_grammar_no_print_statement_no_exec_statement_async_keywords.async_keywords = ( | |
| True | |
| ) | |
| python_grammar_no_print_statement_no_exec_statement_async_keywords.version = (3, 7) | |
| # Python 3.10+ | |
| python_grammar_soft_keywords = ( | |
| python_grammar_no_print_statement_no_exec_statement_async_keywords.copy() | |
| ) | |
| python_grammar_soft_keywords.soft_keywords = soft_keywords | |
| python_grammar_soft_keywords.version = (3, 10) | |
| pattern_grammar = driver.load_packaged_grammar( | |
| "blib2to3", _PATTERN_GRAMMAR_FILE, cache_dir | |
| ) | |
| pattern_symbols = _pattern_symbols(pattern_grammar) | |