This repo contains code to mirror other repos. It also contains the code that is getting mirrored.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
1.9 KiB

  1. # -*- coding: utf-8 -*-
  2. from typing import (
  3. TypeVar, Type, List, Dict, IO, Iterator, Callable, Union, Optional,
  4. Literal, Protocol,
  5. )
  6. from .visitors import Transformer
  7. from .lexer import Token, Lexer, TerminalDef
  8. from .tree import Tree
  9. _T = TypeVar('_T')
  10. class PostLex(Protocol):
  11. def process(self, stream: Iterator[Token]) -> Iterator[Token]:
  12. ...
  13. class LarkOptions:
  14. start: List[str]
  15. parser: str
  16. lexer: str
  17. transformer: Optional[Transformer]
  18. postlex: Optional[PostLex]
  19. ambiguity: str
  20. regex: bool
  21. debug: bool
  22. keep_all_tokens: bool
  23. propagate_positions: bool
  24. maybe_placeholders: bool
  25. lexer_callbacks: Dict[str, Callable[[Token], Token]]
  26. cache: Union[bool, str]
  27. g_regex_flags: int
  28. class Lark:
  29. source: str
  30. options: LarkOptions
  31. lexer: Lexer
  32. terminals: List[TerminalDef]
  33. def __init__(
  34. self,
  35. grammar: Union[str, IO[str]],
  36. *,
  37. start: Union[None, str, List[str]] = "start",
  38. parser: Literal["earley", "lalr", "cyk"] = "auto",
  39. lexer: Union[Literal["auto", "standard", "contextual", "dynamic", "dynamic_complete"], Lexer] = "auto",
  40. transformer: Optional[Transformer] = None,
  41. postlex: Optional[PostLex] = None,
  42. ambiguity: Literal["explicit", "resolve"] = "resolve",
  43. regex: bool = False,
  44. debug: bool = False,
  45. keep_all_tokens: bool = False,
  46. propagate_positions: bool = False,
  47. maybe_placeholders: bool = False,
  48. lexer_callbacks: Optional[Dict[str, Callable[[Token], Token]]] = None,
  49. g_regex_flags: int = ...
  50. ):
  51. ...
  52. def parse(self, text: str, start: Optional[str] = None) -> Tree:
  53. ...
  54. @classmethod
  55. def open(cls: Type[_T], grammar_filename: str, rel_to: Optional[str] = None, **options) -> _T:
  56. ...
  57. def lex(self, text: str) -> Iterator[Token]:
  58. ...
  59. def get_terminal(self, name: str) -> TerminalDef:
  60. ...