문제

C 또는 C++에 가장 적합한(가장 사용하기 쉽고 가장 빠른) 어휘분석기/파서 생성기는 무엇입니까?저는 지금 flex와 bison을 사용하고 있지만 bison은 LALR(1) 문법만 처리합니다.내가 분석하고 있는 언어는 그렇지 않습니다. 정말 무제한 미리보기가 필요하지만 무제한 미리보기는 구문 분석을 수행합니다. 많이 더 쉽습니다.Antlr을 사용해 볼까요?코코/R?엘크하운드?다른 것?

도움이 되었습니까?

해결책

업데이트되었습니다 2015-01-05:

나의 원래 답변 지금 삭제 된 질문을 지적합니다.

이 질문에 이미 좋은 답변이 많이 있습니다. 어떤 파서 생성기를 추천합니까?

그래서 나는에서 항목 목록을 가져 왔습니다 archive.org에서 삭제 된 답변 여기에 최소 1 개의 투표로 :

나는 여러 개의 Flex/Bison 시스템을 직접 수행했지만 이제는 둘 다 레몬 SQLITE에서 하나의 도구이기 때문에 재진입 및 스레드 안전뿐만 아니라 스트리밍/풀 기반 모델을 보유하고 있습니다.

다른 팁

나쁜 소식은 대부분의 실제 컴퓨터 langauges가 "lalr (1)"이 아니라는 것입니다. 즉, YACC를 실제 langauges로 만들기 위해 상당한 해커에 의지해야합니다.

DSL을 설계하는 경우, 파서 생성기가 스쿼크 될 때 DSL의 문법을 변경할 수 있기 때문에 많은 문제없이 LALR 파서 생성기를 사용할 수 있습니다. LL 파서 생성기는 대부분 같은 이유로 여기에서도 작동하지만 왼쪽 재귀가 부족한 것은 진정한 고통이 될 수 있습니다.

구문을 좋아하는 방식이 타협하지 않는 경우 GLR 파서는 핸드 다운 승자입니다. 우리는 그것들을 사용합니다 DMS 소프트웨어 리엔지니어링 툴킷 그리고 C ++를 포함한 30 개 이상의 언어를 위해 생산 품질 파서를 구축했습니다. 민속 정리는 LL과 LALR 파서를 사용하여 C ++를 처리하려고 시도하는 사람들에 의해 시작되었습니다. GLR은 쉽게 수행합니다.

ANTLR은 '역추적' 옵션을 사용하여 무제한 미리보기를 매우 쉽게 만듭니다.또한 문법을 ​​시각화하고 디버그할 수 있는 ANTLRWORKS가 있으므로 '가장 사용하기 쉽고 가장 빠른' 기준을 충족할 수도 있습니다.

또 다른 장점은 bison에서 누락된 AST 구축을 위한 기본 지원을 통해 AST 구축을 매우 쉽게 만들어준다는 것입니다.

두 권의 책 출판 - 'ANTLR:확실한 가이드'와 '언어 디자인 패턴'은 매우 잘 문서화된 도구 중 하나입니다.당신은 또한 매우 활동적인 메일링 리스트를 가지고 있습니다.

당신이 정확히 무엇을 찾고 있는지 모르겠지만, 나는 그 부스트라고 생각합니다 xpressive 볼 가치가 있습니다 ...

정확히 파서 생성기가 아니라 문법을 다루는 훌륭한 도구이며 이상한 것들을 다룰 수 있다고 생각합니다.

저는 GOLD 구문 분석 시스템을 사용해 왔습니다(http://www.devincook.com/goldparser) 매우 좋은 결과를 얻었습니다.내 프로젝트는 소규모이며 C로 NC 파일을 구문 분석하는 시스템입니다.하지만 이 도구는 더 복잡한 프로젝트도 처리할 수 있다고 생각합니다.

최신 들소는 여러 개의 구획을 동시에 수행함으로써 무제한의 룩보드를 수행한다고 주장합니다. 이미 Bison에 투자 한 경우 다른 패키지로 전환하는 대신 시도해 볼 가치가 있습니다.

http://www.gnu.org/software/bison/manual/bison.html#glr-parsers

그래도이 기능을 직접 사용하지 않았습니다.

다른 시스템이 진행되는 한, 나는 Antlr을 사용했습니다. 나는 그것을 특별히 좋아하지 않았다 (문서는 그다지 좋지 않았으며, 운영자 우선 순위를 충족시키기 위해 문법을 수동으로 고려해야한다), 그것은 효과가 있었고, 많은 사람들이 그것을 맹세하여 확실히 볼 가치가 있다고 맹세했다.

Lrstar 9.1 LR (1) 및 LR (*) 파서를 생성 할 수 있습니다. Windows 및 Visual Studio에 친숙한 C ++ 기반 시스템입니다. 테이블 구동 파서와 테이블 구동 Lexers를 생성하며 작고 빠르게 컴파일합니다. LRSTAR 파서는 AST를 자동으로 구축 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top