|
- # -*- coding: utf-8 -*-
- from types import ModuleType
- from typing import (
- TypeVar, Type, Tuple, List, Dict, Iterator, Collection, Callable, Optional,
- Pattern as REPattern,
- )
- from abc import abstractmethod, ABC
-
- _T = TypeVar('_T')
-
-
- class Pattern(ABC):
- value: str
- flags: Collection[str]
-
- def __init__(self, value: str, flags: Collection[str] = ...):
- ...
-
- @property
- @abstractmethod
- def type(self) -> str:
- ...
-
- @abstractmethod
- def to_regexp(self) -> str:
- ...
-
- @property
- @abstractmethod
- def min_width(self) -> int:
- ...
-
- @property
- @abstractmethod
- def max_width(self) -> int:
- ...
-
-
- class PatternStr(Pattern):
- type: str = ...
-
- def to_regexp(self) -> str:
- ...
-
- @property
- def min_width(self) -> int:
- ...
-
- @property
- def max_width(self) -> int:
- ...
-
-
- class PatternRE(Pattern):
- type: str = ...
-
- def to_regexp(self) -> str:
- ...
-
- @property
- def min_width(self) -> int:
- ...
-
- @property
- def max_width(self) -> int:
- ...
-
-
- class TerminalDef:
- name: str
- pattern: Pattern
- priority: int
-
- def __init__(self, name: str, pattern: Pattern, priority: int = ...):
- ...
-
-
- class Token(str):
- type: str
- pos_in_stream: int
- value: str
- line: int
- column: int
- end_line: int
- end_column: int
- end_pos: int
-
- def update(self, type_: Optional[str] = None, value: Optional[str] = None) -> Token:
- ...
-
- @classmethod
- def new_borrow_pos(cls: Type[_T], type_: str, value: str, borrow_t: Token) -> _T:
- ...
-
-
- _Callback = Callable[[Token], Token]
-
-
- class Lexer(ABC):
- lex: Callable[..., Iterator[Token]]
-
-
- class TraditionalLexer(Lexer):
- terminals: Collection[TerminalDef]
- ignore_types: List[str]
- newline_types: List[str]
- user_callbacks: Dict[str, _Callback]
- callback: Dict[str, _Callback]
- mres: List[Tuple[REPattern, Dict[int, str]]]
- re: ModuleType
-
- def __init__(
- self,
- terminals: Collection[TerminalDef],
- re_: ModuleType,
- ignore: Collection[str] = ...,
- user_callbacks: Dict[str, _Callback] = ...,
- g_regex_flags: int = ...
- ):
- ...
-
- def build(self) -> None:
- ...
-
- def match(self, stream: str, pos: int) -> Optional[Tuple[str, str]]:
- ...
-
- def lex(self, stream: str) -> Iterator[Token]:
- ...
-
-
- class ContextualLexer(Lexer):
- lexers: Dict[str, TraditionalLexer]
- root_lexer: TraditionalLexer
-
- def __init__(
- self,
- terminals: Collection[TerminalDef],
- states: Dict[str, Collection[str]],
- re_: ModuleType,
- ignore: Collection[str] = ...,
- always_accept: Collection[str] = ...,
- user_callbacks: Dict[str, _Callback] = ...,
- g_regex_flags: int = ...
- ):
- ...
-
- def lex(self, stream: str, get_parser_state: Callable[[], str]) -> Iterator[Token]:
- ...
|