NLQL string front-end: grammar, transformer, and parser to Query IR.
__all__
module-attribute
__all__ = ['NLQLParser', 'parse']
NLQLParser
Parses NLQL/2 strings into :class:~nlql.ir.nodes.Query IR.
源代码位于: src/nlql/lang/parser.py
| def __init__(self) -> None:
grammar = _GRAMMAR_FILE.read_text(encoding="utf-8")
self._parser = Lark(grammar, parser="lalr", start="start", propagate_positions=True)
self._transformer = NLQLTransformer()
|
parse
parse(query: str) -> Query
Parse a query string into resolved Query IR.
引发:
源代码位于: src/nlql/lang/parser.py
| def parse(self, query: str) -> Query:
"""Parse a query string into resolved Query IR.
Raises:
NLQLParseError: on any syntax or transform error.
"""
try:
tree = self._parser.parse(query)
result: Query = self._transformer.transform(tree)
except VisitError as e:
if isinstance(e.orig_exc, NLQLError):
raise e.orig_exc from e
raise NLQLParseError(f"parse error: {e}") from e
except UnexpectedInput as e:
self._raise_parse_error(e, query)
except LarkError as e:
raise NLQLParseError(f"parse error: {e}") from e
return _resolve_query(result)
|
parse
parse(query: str) -> Query
Parse an NLQL/2 string into Query IR using a shared parser instance.
源代码位于: src/nlql/lang/parser.py
| def parse(query: str) -> Query:
"""Parse an NLQL/2 string into Query IR using a shared parser instance."""
return _default_parser().parse(query)
|