Lark는 인체공학, 성능 및 모듈성에 중점을 두고 구축된 Python용 구문 분석 도구 키트입니다.
Lark는 모든 문맥 없는 언어를 구문 분석할 수 있습니다. 간단히 말해서, 거의 모든 프로그래밍 언어를 구문 분석할 수 있으며 어느 정도는 대부분의 자연어도 구문 분석할 수 있다는 의미입니다.
누구를 위한 것인가요?
초보자 : Lark는 실험에 매우 친화적입니다. 아무리 복잡하거나 모호하더라도 사용자가 던지는 모든 문법을 구문 분석할 수 있으며 효율적으로 수행할 수 있습니다. 또한 문법과 입력만을 사용하여 주석이 달린 구문 분석 트리를 구성하고 해당 구문 분석 트리를 처리할 수 있는 편리하고 유연한 도구를 제공합니다.
전문가 : Lark는 Earley(SPPF)와 LALR(1) 및 여러 가지 어휘 분석기를 모두 구현하므로 요구 사항에 따라 성능과 속도를 절충할 수 있습니다. 또한 다양하고 정교한 기능과 유틸리티를 제공합니다.
그것은 무엇을 할 수 있습니까?
그리고 더 많은 기능. 미리 읽고 알아보세요!
가장 중요한 것은 Lark를 사용하면 시간을 절약하고 구문 분석으로 인한 두통을 예방할 수 있다는 것입니다.
$ pip install lark --upgrade
Lark에는 종속성이 없습니다.
Lark는 문법 파일(*.lark)에 대한 구문 강조 기능을 제공합니다.
이는 다른 언어로 Lark를 구현한 것입니다. Lark 문법을 허용하고 유사한 유틸리티를 제공합니다.
다음은 "Hello, World!"를 구문 분석하는 작은 프로그램입니다. (또는 다른 유사한 문구):
from lark import Lark
l = Lark ( '''start: WORD "," WORD "!"
%import common.WORD // imports from terminal library
%ignore " " // Disregard spaces in text
''' )
print ( l . parse ( "Hello, World!" ) )
출력은 다음과 같습니다.
Tree ( start , [ Token ( WORD , 'Hello' ), Token ( WORD , 'World' )])
결과 트리에는 구두점이 표시되지 않습니다. Lark에 의해 자동으로 필터링됩니다.
Lark는 모호함을 잘 처리합니다. 다음은 "fruit flies like 바나나"라는 문구를 구문 분석한 결과입니다.
여기에서 코드를 읽고 여기에서 더 많은 예제를 확인하세요.
여기에서 전체 기능 목록을 확인하세요.
종달새는 빠르고 가볍습니다(낮을수록 좋음).
비교 방법에 대한 자세한 내용은 JSON 튜토리얼을 확인하세요.
철저한 타사 벤치마크를 보려면 Python Parsing Benchmarks 저장소를 확인하세요.
도서관 | 연산 | 문법 | 나무를 쌓는다? | 모호성을 지원합니까? | 모든 CFG를 처리할 수 있나요? | 라인/열 추적 | 독립형 생성 |
---|---|---|---|---|---|---|---|
종달새 | 얼리/LALR(1) | EBNF | 예! | 예! | 예! | 예! | 예! (LALR만 해당) |
주름 | LALR(1) | BNF | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 |
Py파싱 | 못 | 결합자 | 아니요 | 아니요 | 아니요* | 아니요 | 아니요 |
파슬리 | 못 | EBNF | 아니요 | 아니요 | 아니요* | 아니요 | 아니요 |
지극히 검소한 | 못 | EBNF | 예 | 아니요 | 아니요* | 아니요 | 아니요 |
ANTLR | LL(*) | EBNF | 예 | 아니요 | 예? | 예 | 아니요 |
(* PEG는 비결정적 문법을 처리할 수 없습니다. 또한 Wikipedia에 따르면 PEG가 실제로 모든 결정적 CFG를 구문 분석할 수 있는지 여부에 대해서는 답이 없습니다 .)
전체 목록
Lark는 MIT 라이선스를 사용합니다.
(독립형 도구는 MPL2에 속합니다)
Lark는 풀 요청을 수락합니다. Lark 개발 방법 보기
지금까지 기여해주신 모든 분들께 감사드립니다.
Lark를 좋아하고 우리가 성장하는 모습을 보고 싶다면 후원을 고려해 보세요!
코드에 대한 질문은 gitter나 이슈에 가장 잘 질문됩니다.
그 밖의 사항은 Gmail com의 erezshin으로 이메일을 통해 연락하실 수 있습니다.
-- 에레즈