From 5db3003edb17717960feeeab6b0f23ca7984897d Mon Sep 17 00:00:00 2001 From: MegaIng1 Date: Fri, 1 Jan 2021 14:54:12 +0100 Subject: [PATCH] Updated stubs --- lark-stubs/__init__.pyi | 1 + lark-stubs/grammar.pyi | 9 +++++++++ lark-stubs/lark.pyi | 4 +++- lark-stubs/load_grammar.pyi | 28 ++++++++++++++++++++++++++++ lark/load_grammar.py | 2 +- 5 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 lark-stubs/grammar.pyi create mode 100644 lark-stubs/load_grammar.pyi diff --git a/lark-stubs/__init__.pyi b/lark-stubs/__init__.pyi index c010a93..c79a6ef 100644 --- a/lark-stubs/__init__.pyi +++ b/lark-stubs/__init__.pyi @@ -4,6 +4,7 @@ from .tree import * from .visitors import * from .exceptions import * from .lexer import * +from .load_grammar import * from .lark import * from logging import Logger as _Logger diff --git a/lark-stubs/grammar.pyi b/lark-stubs/grammar.pyi new file mode 100644 index 0000000..379d7a9 --- /dev/null +++ b/lark-stubs/grammar.pyi @@ -0,0 +1,9 @@ +from typing import Optional, Tuple + + +class RuleOptions: + keep_all_tokens: bool + expand1: bool + priority: int + template_source: Optional[str] + empty_indices: Tuple[bool, ...] \ No newline at end of file diff --git a/lark-stubs/lark.pyi b/lark-stubs/lark.pyi index ecbbb09..9246938 100644 --- a/lark-stubs/lark.pyi +++ b/lark-stubs/lark.pyi @@ -8,6 +8,7 @@ from .visitors import Transformer from .lexer import Token, Lexer, TerminalDef from .tree import Tree from .exceptions import UnexpectedInput +from .load_grammar import Grammar _T = TypeVar('_T') @@ -54,13 +55,14 @@ class FromPackageLoader: class Lark: source_path: str source_grammar: str + grammar: Grammar options: LarkOptions lexer: Lexer terminals: List[TerminalDef] def __init__( self, - grammar: Union[str, IO[str]], + grammar: Union[Grammar, str, IO[str]], *, start: Union[None, str, List[str]] = "start", parser: Literal["earley", "lalr", "cyk"] = "auto", diff --git a/lark-stubs/load_grammar.pyi b/lark-stubs/load_grammar.pyi new file mode 100644 index 0000000..cadd657 --- /dev/null +++ b/lark-stubs/load_grammar.pyi @@ -0,0 +1,28 @@ +from typing import List, Tuple, Union, Callable, Dict, Optional + +from lark import Tree +from lark.grammar import RuleOptions + + +class Grammar: + rule_defs: List[Tuple[str, Tuple[str, ...], Tree, RuleOptions]] + term_defs: List[Tuple[str, Tuple[Tree, int]]] + ignore: List[str] + + +class GrammarBuilder: + global_keep_all_tokens: bool + import_paths: List[Union[str, Callable]] + + def __init__(self, global_keep_all_tokens=..., import_paths=...): ... + + def load_grammar(self, grammar_text: str, grammar_name: str = ..., mangle: Callable[[str], str] = None): ... + + def do_import(self, dotted_path: Tuple[str, ...], base_path: Optional[str], aliases: Dict[str, str], + base_mangle: Callable[[str], str] = None): ... + + def get_mangle(self, prefix: str, aliases: Dict[str, str], base_mangle: Callable[[str], str] = None): ... + + def check(self): ... + + def build(self) -> Grammar: ... diff --git a/lark/load_grammar.py b/lark/load_grammar.py index ff35052..df4d028 100644 --- a/lark/load_grammar.py +++ b/lark/load_grammar.py @@ -960,7 +960,7 @@ class GrammarBuilder: base = self._definitions[name][1] while len(base.children) == 2: - assert isinstance(base.children[0], Tree) and base.children[0].data == 'expansions', tree + assert isinstance(base.children[0], Tree) and base.children[0].data == 'expansions', base base = base.children[0] base.children.insert(0, exp)