파서발생기 비교
Comparison of parser generators이것은 다양한 언어 수업을 위한 주목할 만한 렉서 생성기와 파서 생성기의 목록입니다.
일반언어
정규 언어는 정규식으로 구성된 상태 기계(구체적으로 결정론적 유한 오토마톤 또는 비결정론적 유한 오토마톤)에 의해 일치할 수 있는 언어 범주(때로는 촘스키 유형 3이라고도 함)입니다.특히, 일반 언어는 "A는 B를 따른다", "A 또는 B 중 하나", "A 다음에 0 또는 그 이상의 B 인스턴스가 있다"와 같은 구문과 일치할 수 있지만, "A의 일부 인스턴스와 B의 인스턴스 수가 같다"와 같이 인접하지 않은 요소 간의 일관성을 요구하는 구문과 일치할 수는 없습니다.그리고 또한 재귀적 "네스팅"의 개념을 표현할 수 없습니다("모든 A는 결국 일치하는 B 뒤에 온다").정규 문법이 다룰 수 없는 문제의 전형적인 예는 주어진 문자열에 정확하게 내포된 괄호가 포함되어 있는지의 문제입니다.(이것은 일반적으로 맥락이 없는 문법이라고도 불리는 촘스키 타입 2 문법으로 다루어집니다.)
이름. | 렉서 알고리즘 | 출력 언어 | 문법,코드 | 개발플랫폼 | 면허증. |
---|---|---|---|---|---|
알렉스야. | DFA | 해스켈 | 혼합된 | 모든. | 무료, BSD |
아노플렉스 | DFA | 자바 | 혼합된 | 자바 가상 머신 | 무료, BSD |
애스티르 | DFA 테이블 구동(브랜치 포함) | C++ | 문법만(동작) | 모든. | 무료, MIT |
오스틴X | DFA | 자바 | 분리된 | 모든. | 무료, BSD |
C# 플렉스 | DFA | C# | 혼합된 | .NET CLR | 무료, GNU GPL |
C# 렉스 | DFA | C# | 혼합된 | .NET CLR | ? |
카르부레타 | DFA | C, C++ | 혼합된 | 모든. | 무료, Apache 2.0 |
쿡씨씨 | DFA | 자바 | 혼합된 | 자바 가상 머신 | 무료, Apache 2.0 |
DFA | DFA 압축 행렬 | C, C++ | 분리된 | 윈도우, 비주얼 스튜디오 | BSD |
돌고래. | DFA | C++ | 분리된 | 모든. | 사유지 |
플렉스 | DFA 테이블 구동 | C, C++ | 혼합된 | 모든. | 무료, BSD |
겔렉스 | DFA | 에펠 | 혼합된 | 에펠 | 무료, MIT |
골렉스 | DFA | 가세요 | 혼합된 | 가세요 | 무료 BSD 스타일 |
gplex | DFA | C# | 혼합된 | .NET CLR | 무료, BSD같은 |
제이플렉스 | DFA | 자바 | 혼합된 | 자바 가상 머신 | 무료, BSD |
제이렉스 | DFA | 자바 | 혼합된 | 자바 가상 머신 | 무료, BSD같은 |
렉스 | DFA | C | 혼합된 | 포식스 | 부분, 독점 CDDL |
렉서틀 | DFA | C++ | ? | 모든. | 무료, GNU LGPL |
퀼스 | DFA 다이렉트 코드 | C, C++ | 혼합된 | 모든. | 무료, GNU LGPL |
라젤 | DFA | 이동, C, C++ 어셈블리 | 혼합된 | 모든. | 무료, GNU GPL, MIT[1][2] |
RE/flex | DFA 직접 코드, DFA 테이블 구동 및 NFA regex 라이브러리 | C++ | 혼합된 | 모든. | 무료, BSD |
re2c | DFA 다이렉트 코드 | C, C++, Go, Rust | 혼합된 | 모든. | 무료 퍼블릭 도메인 |
결정론적 문맥 자유 언어
문맥이 없는 언어는 일련의 대체 규칙에 의해 매칭될 수 있는 언어의 범주(때로는 촘스키 유형 2라고도 함)이며, 각 언어는 본질적으로 각 비단자 요소를 일련의 터미널 요소 및/또는 기타 비단자 요소에 매핑합니다.이 유형의 문법은 정규 문법과 일치할 수 있는 모든 것과 일치할 수 있으며, 또한 주어진 문자열에 정확하게 내포된 괄호가 포함되어 있는지의 문제와 같은 재귀적 "네스팅"("모든 A에는 결국 일치하는 B"가 뒤따른다)의 개념을 처리할 수 있습니다.그러나 컨텍스트 프리 문법의 규칙은 순수하게 로컬이므로 "함수에 사용되는 모든 변수에 대해 선언이 존재합니까?"와 같이 로컬이 아닌 분석이 필요한 질문은 처리할 수 없습니다.기술적으로 그렇게 하기 위해서는 상황에 민감한 문법이라고 불리는 촘스키 타입 1 문법과 같은 더 정교한 문법이 필요할 것입니다.그러나 문맥이 없는 문법을 위한 파서 생성기는 종종 사용자가 작성한 코드가 제한된 양의 문맥 민감도를 도입하는 기능을 지원합니다. (예를 들어, 변수 선언을 접했을 때, 사용자가 작성한 코드는 변수의 이름과 유형을 외부 데이터 구조에 저장할 수 있습니다.파서에 의해 탐지된 이후의 변수 참조와 대조할 수 있도록 합니다.)
결정론적 문맥 자유 언어는 결정론적 푸시다운 오토마타에 의해 효율적으로 파싱될 수 있는 문맥 자유 언어의 적절한 하위 집합입니다.
이름. | 파싱 알고리즘 | 입력문법표기 | 출력 언어 | 문법,코드 | 렉서 | 개발플랫폼 | IDE | 면허증. |
---|---|---|---|---|---|---|---|---|
ANTLR4 | 적응형 LL(*)[3] | EBNF | C#, 자바, 파이썬, 자바스크립트, C++, 스위프트, Go, PHP | 분리된 | 생성된 | 자바 가상 머신 | 네. | 무료, BSD |
ANTLR3 | LL(*) | EBNF | 액션스크립트, Ada95, C, C++, C#, Java, JavaScript, Objective-C, Perl, Python, Ruby | 혼합된 | 생성된 | 자바 가상 머신 | 네. | 무료, BSD |
APG[4] | 재귀적 하강, 역추적 | ABNF | 파이썬, 자바스크립트, C, 자바 | 분리된 | 없음. | 모든. | 아니요. | 무료, BSD |
비버[5][6] | LALR(1) | EBNF | 자바 | 혼합된 | 외부의 | 자바 가상 머신 | 아니요. | 무료, BSD |
들소 | LALR(1), LR(1), IELR(1), GLR | 야크 | C, C++, Java | 혼합된 | 외부의 | 모든. | 아니요. | 무료, GNU GPL(예외 제외) |
BtYacc | 역추적 상향식 | ? | C++ | 혼합된 | 외부의 | 모든. | 아니요. | 무료 퍼블릭 도메인 |
과오로 | LALR(1) | 야크 | C | 혼합된 | 외부의 | 모든. | 아니요. | 무료 퍼블릭 도메인 |
CL-Yacc[7][8] | LALR(1) | 리스프 | 커먼 리스프 | 혼합된 | 외부의 | 모든. | 아니요. | 무료, MIT |
코코/R | LL(1) | EBNF | C, C++, C#, F#, 자바, 에이다, 오브젝트 파스칼, 델파이, Modula-2, 오베론, 루비, 스위프트, 유니콘, Visual Basic .NET | 혼합된 | 생성된 | Java 가상 시스템, .NET 프레임워크, Windows, POSIX(출력 언어에 따라 다름) | 아니요. | 무료, GNU GPL |
CppCC[9][10] | LL(k) | ? | C++ | 혼합된 | 생성된 | 포식스 | 아니요. | 무료, GNU GPL |
컵[11][12] | LALR(1) | ? | 자바 | 혼합된 | 외부의 | 자바 가상 머신 | 아니요. | 무료, BSD같은 |
일라이[13][14] | LALR(1) | ? | C | 혼합된 | 생성된 | 포식스 | 아니요. | 무료, GNU GPL, GNU LGPL |
에센스[15] | LR(?) | ? | 도식 48 | 혼합된 | 외부의 | 모든. | 아니요. | 무료, BSD |
eyapp[16] | LALR(1) | ? | 펄 | 혼합된 | 외부 또는 생성된 | 모든. | 아니요. | 자유, 예술성 |
찡그린 얼굴 | LALR(k) | ? | 해스켈 98 | 혼합된 | 외부의 | 모든. | 아니요. | 무료, GNU GPL |
게이악 | LALR(1) | ? | 에펠 | 혼합된 | 외부의 | 모든. | 아니요. | 무료, MIT |
골드 | LALR(1) | BNF | x86 어셈블리 언어, ANSIC, C#, D, 자바, 파스칼, 오브젝트 파스칼, 파이썬, 비주얼 베이직 6, 비주얼 베이직NET, 비주얼 C++ | 분리된 | 생성된 | 창문들 | 네. | 자유, zlib 수정 |
GPPG | LALR(1) | 야크 | C# | 분리된 | 외부의 | 창문들 | 네. | 무료, BSD |
그라마티카 | LL(k) | BNF 방언 | C#, 자바 | 분리된 | 생성된 | 자바 가상 머신 | 아니요. | 무료, BSD |
하이렉시드 | LL(*) | EBNF for Java | 자바 | 분리된 | 내부의 | 자바 가상 머신 | 아니요. | 무료, GNU LGPL |
히메 파서 발생기 | LALR(1), GLR | BNF 방언 | C#, 자바, 녹 | 분리된 | 생성된 | .NET 프레임워크, Java 가상 시스템 | 아니요. | 무료, GNU LGPL |
히악 | LR(1), LALR(1), LR(0) | 야크 | C | 혼합된 | 외부의 | 모든. | 아니요. | 무료, GNU GPL |
iyacc | LALR(1) | 야크 | 아이콘 | 혼합된 | 외부의 | 모든. | 아니요. | 무료, GNU LGPL |
재크 | LALR(1) | ? | 자바 | 혼합된 | 외부의 | 자바 가상 머신 | 아니요. | 무료, BSD |
자바CC | LL(k) | EBNF | 자바, C++, 자바스크립트 (GWT [17]컴파일러 경유) | 혼합된 | 생성된 | 자바 가상 머신 | 네. | 무료, BSD |
제이 | LALR(1) | 야크 | C#, 자바 | 혼합된 | 없음. | 자바 가상 머신 | 아니요. | 무료, BSD |
제이플랩 | LL(1), LALR(1) | ? | 자바 | ? | ? | 자바 가상 머신 | 네. | ? |
제트파그 | LL(k) | ? | C++ | 혼합된 | 생성된 | 모든. | 아니요. | 무료, GNU GPL |
JS/CC | LALR(1) | EBNF | 자바스크립트, J스크립트, ECMA스크립트 | 혼합된 | 내부의 | 모든. | 네. | 무료, BSD |
K개발-PG-Qt | LL(1), 역추적, 션트 야드 | ? | C++ | 혼합된 | 생성 또는 외부 | 모두, KDE | 아니요. | 무료, GNU LGPL |
켈트 | 역추적 LALR(1) | ? | C++ | 혼합된 | 생성된 | 포식스 | 아니요. | 무료, GNU GPL |
kmyacc | LALR(1) | ? | C, 자바, 펄, 자바스크립트 | 혼합된 | 외부의 | 모든. | 아니요. | 무료, GNU GPL |
라프그 | LALR(1) | ? | C, C++, C#, 자바, 자바스크립트 | 혼합된 | 생성된 | 자바 가상 머신 | 아니요. | 무료, GNU GPL |
종달새 | LALR(1) | EBNF | 파이썬, 자바스크립트 | 혼합된 | 생성된 | 모든. | 네. | 무료, MIT |
레몬 | LALR(1) | ? | C | 혼합된 | 외부의 | 모든. | 아니요. | 무료 퍼블릭 도메인 |
라임 | LALR(1) | ? | PHP | 혼합된 | 외부의 | 모든. | 아니요. | 무료, GNU GPL |
리사 | LR(?), LL(?), LALR(?), SLR(?) | ? | 자바 | 혼합된 | 생성된 | 자바 가상 머신 | 네. | 무료 퍼블릭 도메인 |
LLgen | LL(1) | ? | C | 혼합된 | 외부의 | 포식스 | 아니요. | 무료, BSD |
LL넥스트젠 | LL(1) | ? | C | 혼합된 | 외부의 | 모든. | 아니요. | 무료, GNU GPL |
LLLPG | LL(k) + 구문 및 의미 술어 | ANTLR같은 | C# | 혼합된 | 생성된(?) | .NET 프레임워크, Mono | 비주얼 스튜디오 | 무료, GNU LGPL |
LPG | 역추적 LALR(k) | ? | 자바 | 혼합된 | 생성된 | 자바 가상 머신 | 아니요. | 무료, EPL |
LRSTAR | LALR(1), LALR(*) | YACC, ANTLR, EBNF | C++ | 분리된 | 생성된 | 창문들 | 비주얼 스튜디오 | 무료, BSD |
멘히르 | LR(1) | ? | OCaml | 혼합된 | 생성된 | 모든. | 아니요. | 무료, QPL |
ML-야크 | LALR(1) | ? | ML | 혼합된 | 외부의 | 모든. | 아니요. | ? |
몽키 | LR(1) | ? | 자바 | 분리된 | 생성된 | 자바 가상 머신 | 아니요. | 무료, GNU GPL |
엠스타 | LALR(k), LR(k) | YACC, EBNF | C, C++ | 혼합된 | 외부 또는 생성된 | 포식스, 시그윈 | 아니요. | 무료, GNU GPL |
MTP(파싱 이상) | LL(1) | ? | 자바 | 분리된 | 생성된 | 자바 가상 머신 | 아니요. | 무료, GNU GPL |
마이파서 | LL(*) | 마크다운 | C++11 | 분리된 | 내부의 | 표준 C++11 컴파일러를 사용하는 모든 기능 | 아니요. | 무료, MIT |
NLT | GLR | C#/BNF같은 | C# | 혼합된 | 혼혈의 | .NET 프레임워크 | 아니요. | 무료, MIT |
냉담하게 | LALR(1) | ? | OCaml | 혼합된 | 외부의 | 모든. | 아니요. | 무료, QPL |
올렉스 | LL(1) | ? | C++ | 혼합된 | 생성된 | 모든. | 아니요. | 무료, GNU GPL |
파섹 | LL, 역추적 | 해스켈 | 해스켈 | 혼합된 | 없음. | 모든. | 아니요. | 무료, BSD |
얍[16] | LALR(1) | ? | 펄 | 혼합된 | 외부의 | 모든. | 아니요. | 무료, GNU GPL |
파서 개체 | LL(k) | ? | 자바 | 혼합된 | ? | 자바 가상 머신 | 아니요. | 프리, zlib |
PCCTS | LL | ? | C, C++ | ? | ? | 모든. | 아니요. | ? |
PLY | LALR(1) | BNF | 파이썬 | 혼합된 | 생성된 | 모든. | 아니요. | 무료, MIT |
플라이플러스 | LALR(1) | EBNF | 파이썬 | 분리된 | 생성된 | 모든. | 아니요. | 무료, MIT |
PRECC | LL(k) | ? | C | 분리된 | 생성된 | 도스, 포식스 | 아니요. | 무료, GNU GPL |
라크[18] | LALR(1) | BNF같은 yacc같은[19] | 루비 | 혼합된 | ? | Windows, Linux, macOS, FreeBSD, NetBSD | 아니요. | LGPL |
QLALR | LALR(1) | ? | C++ | 혼합된 | 외부의 | 모든. | 아니요. | 무료, GNU GPL |
세이블CC | LALR(1) | ? | C, C++, C#, Java, OCaml, Python | 분리된 | 생성된 | 자바 가상 머신 | 아니요. | 무료, GNU LGPL |
SLK[20] | LL(k) LR(k) LALR(k) | EBNF | C, C++, C#, 자바, 자바스크립트 | 분리된 | 외부의 | 모든. | 아니요. | SLK[21] |
슬리[22] | LALR(1) | BNF | 파이썬 | 혼합된 | 생성된 | 모든. | 아니요. | 무료, MIT |
SP(심플파서) | 재귀적 하강 | 파이썬 | 파이썬 | 분리된 | 생성된 | 모든. | 아니요. | 무료, GNU LGPL |
정신 | 재귀적 하강 | ? | C++ | 혼합된 | 내부의 | 모든. | 아니요. | 무료, 부스트 |
스틱스 | LALR(1) | ? | C, C++ | 분리된 | 생성된 | 모든. | 아니요. | 무료, GNU LGPL |
스위트 파서 | LALR(1) | ? | C++ | 분리된 | 생성된 | 창문들 | 아니요. | 프리, zlib |
톡톡 두드리다 | LL(1) | ? | C++ | 혼합된 | 생성된 | 모든. | 아니요. | 무료, GNU GPL |
문자 변환기 | LL(k) | ? | C++ | 혼합된 | 생성된 | 창문들 | 네. | 사유지 |
타이니PG | LL(1) | ? | C#, 비주얼 베이직 | ? | ? | 창문들 | 네. | 부분, CPOL 1.0 |
토이 파서 발생기 | 재귀적 하강 | ? | 파이썬 | 혼합된 | 생성된 | 모든. | 아니요. | 무료, GNU LGPL |
TP Yacc | LALR(1) | ? | 터보 파스칼 | 혼합된 | 외부의 | 모든. | 네. | 무료, GNU GPL |
트리시터[23] | LR(1), GLR | 자바스크립트 DSL, JSON | C, 바인딩(Rust, WebAssembly, JavaScript, Python 등) | 분리된 | 생성된 + 외부 | 모든. | 네오빔, 비주얼 스튜디오 코드 | 무료, MIT |
터널 문법 스튜디오 | 터널 파싱 | ABNF | C++ | 분리된 | 생성된 | 창문들 | 네. | 사유지 |
울트라그램 | LALR(1), LR(1), GLR | BNF | C++, Java, C#, Visual Basic .NET | 분리된 | 외부의 | 창문들 | 네. | 무료 퍼블릭 도메인 |
유니씨씨 | LALR(1) | EBNF | C, C++, 파이썬, 자바스크립트, JSON, XML | 혼합된 | 생성된 | 포식스 | 아니요. | 무료, BSD |
어친CC | LL(1) | ? | 자바 | ? | 생성된 | 자바 가상 머신 | 아니요. | ? |
Yacc AT&T/선 | LALR(1) | 야크 | C | 혼합된 | 외부의 | 포식스 | 아니요. | 무료, CPL & CDDL |
Yacc++ | LR(1), LALR(1) | 야크 | C++, C# | 혼합된 | 생성 또는 외부 | 모든. | 아니요. | 사유지 |
얍스 | LL(1) | ? | 파이썬 | 혼합된 | 생성된 | 모든. | 아니요. | 무료, MIT |
yecc | LALR(1) | ? | 얼랑 | 분리된 | 생성된 | 모든. | 아니요. | 무료, Apache 2.0 |
비주얼 BNF | LR(1), LALR(1) | ? | C# | 분리된 | 생성된 | .NET 프레임워크 | 네. | 사유지 |
유파르 | LR(1), LALR(1) | ? | C++ | 혼합된 | 외부의 | 모든. | 아니요. | 무료, MIT |
파싱[24] | LR(1) | C++타입의 BNF | ? | ? | 없음. | C++11 표준 컴파일러 | 아니요. | 무료, MIT |
GGLL | LL(1) | 그래프 | 자바 | 혼합된 | 생성된 | 창문들 | 네. | 무료, MIT |
제품. | 파싱 알고리즘 | 입력문법표기 | 출력 언어 | 문법,코드 | 렉서 | 개발플랫폼 | IDE | 면허증. |
구문 분석 식 문법, 결정론적 부울 문법
이 표에서는 파서 생성기를 파싱 식 문법, 결정론적 부울 문법과 비교합니다.
이름. | 파싱 알고리즘 | 출력 언어 | 문법,코드 | 개발플랫폼 | 면허증. |
---|---|---|---|---|---|
오스틴X | 팩쥐(수정) | 자바 | 분리된 | 모든. | 무료, BSD |
오록스 | 팩쥐 | C, OCaml, 자바 | 혼합된 | 모든. | 무료, GNU GPL |
BN플라이트 | 재귀적 하강 | C++ | 혼합된 | 모든. | 무료, MIT |
캐노피 | 팩쥐 | 자바, 자바스크립트, 파이썬, 루비 | 분리된 | 모든. | 무료, GNU GPL |
CL-peg | 팩쥐 | 커먼 리스프 | 혼합된 | 모든. | 무료, MIT |
똥꼬! | 팩쥐 | D | 혼합된 | 모든. | 무료, GNU GPL |
프리즈비 | 팩쥐 | 해스켈 | 혼합된 | 모든. | 무료, BSD |
문법::peg | 팩쥐 | Tcl | 혼합된 | 모든. | 무료, BSD |
그라코 | 포장 쥐 + 자르기 + 왼쪽 재귀 | 파이썬, C++ (베타) | 분리된 | 모든. | 무료, BSD |
아이언 메타 | 팩쥐 | C# | 혼합된 | 창문들 | 무료, BSD |
라자 | 2상 스캐너리스 하향식 역추적 + 런타임 지원 | 자바 | 분리된 | 모든. | 무료, GNU GPL |
lars::파서 | Packrat(좌측 재귀 및 문법 모호성 지원) | C++ | 동일한 | 모든. | 무료, BSD |
엘피그 | 파싱기 | 루아 | 혼합된 | 모든. | 무료, MIT |
러그 | 파싱기 | C++17 | 혼합된 | 모든. | 무료, MIT |
마우스 | 재귀적 하강 | 자바 | 분리된 | 자바 가상 머신 | 무료, Apache 2.0 |
나르왈 | 팩쥐 | C | 혼합된 | POSIX, 윈도우 | 무료, BSD |
니얼리 | 얼리 | 자바스크립트 | 혼합된 | 모든. | 무료, MIT |
네메를레.페그 | 재귀적 하강 + Pratt | 네메를레 | 분리된 | 모든. | 무료, BSD |
신토종 | 팩쥐 | 얼랑 | 분리된 | 모든. | 무료, MIT |
NPEG | 재귀적 하강 | C# | 혼합된 | 모든. | 무료, MIT |
오메타 | Packrat(수정, 부분 메모) | 자바스크립트, 스퀴크, 파이썬 | 혼합된 | 모든. | 무료, MIT |
팩CC | Packrat(수정된, 왼쪽 재귀 지원) | C | 혼합된 | 모든. | 무료, MIT |
팩쥐 | 팩쥐 | 스킴 | 혼합된 | 모든. | 무료, MIT |
패피 | 팩쥐 | 해스켈 | 혼합된 | 모든. | 무료, BSD |
데친 | 재귀적 하강 | 자바, 스칼라 | 혼합된 | 자바 가상 머신 | 무료, Apache 2.0 |
람다 PEG | 재귀적 하강 | 자바 | 혼합된 | 자바 가상 머신 | 무료, Apache 2.0 |
파셉 | 재귀적 하강 | C++ | 혼합된 | 모든. | 무료 퍼블릭 도메인 |
파르스닙 | 팩쥐 | C++ | 혼합된 | 창문들 | 무료, GNU GPL |
패턴 | 파싱기 | 스위프트 | 동일한 | 모든. | 무료, MIT |
못을 박다 | 재귀적 하강 | C | 혼합된 | 모든. | 무료, MIT |
PEG.js | 팩래트(부분 메모) | 자바스크립트 | 혼합된 | 모든. | 무료, MIT |
페기[25] | 팩래트(부분 메모) | 자바스크립트 | 혼합된 | 모든. | 무료, MIT |
페가수스 | 재귀적 하강, Packrat(선택적) | C# | 혼합된 | 창문들 | 무료, MIT |
페그크 | 재귀적 하강 | C | 혼합된 | 모든. | 무료 퍼블릭 도메인 |
해충의 | 재귀적 하강 | 녹 | 분리된 | 모든. | 무료, MIT, Apache 2.0 |
쁘띠파서 | 팩쥐 | 스몰토크, 자바, 다트 | 혼합된 | 모든. | 무료, MIT |
PEGTL | 재귀적 하강 | C++11, C++17 | 혼합된 | 모든. | 무료, 부스트 |
파서 문법 엔진(PGE) | 하이브리드 재귀적 강하/연산자[26] 우선 순위 | 패럿 바이트코드 | 혼합된 | 가상 머신 패럿 | 무료, 아티스틱 2.0 |
파이필립 | 팩쥐 | 파이썬 | 혼합된 | 모든. | 무료, MIT |
쥐들아! | 팩쥐 | 자바 | 혼합된 | 자바 가상 머신 | 무료, GNU LGPL |
레멕스 | 재귀적 하강 | 자바 | 혼합된 | 자바 가상 머신 | 무료, Apache 2.0 |
정령2 | 재귀적 하강 | C++ | 혼합된 | 모든. | 무료, 부스트 |
나무꼭대기 | 재귀적 하강 | 루비 | 혼합된 | 모든. | 무료, MIT |
마당 | 재귀적 하강 | C++ | 혼합된 | 모든. | 무료, MIT 또는 퍼블릭 도메인 |
왁스아이 | 파싱기 | C, 자바, 자바스크립트, 파이썬, 라켓, 루비 | 분리된 | 모든. | 무료, MIT |
PHP PEG | PEG 파서? | PHP | 혼합된 | 모든. | 무료, BSD |
일반 문맥이 없는 언어, 접속사 또는 부울 언어
이 표에서는 구문 분석기 생성 언어를 일반 문맥이 없는 문법, 연결 문법 또는 부울 문법과 비교합니다.
이름. | 파싱 알고리즘 | 입력문법표기 | 출력 언어 | 문법,코드 | 렉서 | 개발플랫폼 | IDE | 면허증. |
---|---|---|---|---|---|---|---|---|
악센트 | 얼리 | Yacc 변형 | C | 혼합된 | 외부의 | 모든. | 아니요. | 무료, GNU GPL |
APaGeD | GLR, LALR(1), LL(k) | ? | D | 혼합된 | 생성된 | 모든. | 아니요. | 자유, 예술성 |
들소 | LALR(1), LR(1), IELR(1), GLR | 야크 | C, C++, Java, XML | XML을 제외하고 혼합됨 | 외부의 | 모든. | 아니요. | 무료, GNU GPL |
DMS 소프트웨어 리엔지니어링 툴킷 | GLR | ? | 파란 | 혼합된 | 생성된 | 창문들 | 아니요. | 사유지 |
디파서 | 스캐너리스 GLR | ? | C | 혼합된 | 스캐너가 없는 | 포식스 | 아니요. | 무료, BSD |
디프겐 | 런타임 확장 가능 GLR | ? | OCaml | 혼합된 | 생성된 | 모든. | 아니요. | 무료, CeCIL-B |
E3 | 얼리 | ? | OCaml | 혼합된 | 외부 또는 스캐너가 없는 | 모든. | 아니요. | ? |
엘크하운드 | GLR | ? | C++, OCaml | 혼합된 | 외부의 | 모든. | 아니요. | 무료, BSD |
GDK | LALR(1), GLR | ? | C, Lex, Haskell, HTML, Java, Object Pascal, Yacc | 혼합된 | 생성된 | 포식스 | 아니요. | 무료, MIT |
행복해 | LALR, GLR | ? | 해스켈 | 혼합된 | 외부의 | 모든. | 아니요. | 무료, BSD |
히메 파서 발생기 | GLR | ? | C#, 자바, 녹 | 분리된 | 생성된 | .NET 프레임워크, Java 가상 시스템 | 아니요. | 무료, GNU LGPL |
철문 라이브러리 | LALR(1), GLR | C# | C# | 혼합된 | 생성 또는 외부 | .NET 프레임워크 | 아니요. | 무료, Apache 2.0 |
지손 | LALR(1), LR(0), SLR(1) | 야크 | 자바스크립트, C#, PHP | 혼합된 | 생성된 | 모든. | 아니요. | 무료, MIT |
구문 | LALR(1), LR(0), SLR(1) CLR(1) LL(1) | JSON/Yacc | 자바스크립트, 파이썬, PHP, 루비, C++, C#, 녹, 자바 | 혼합된 | 생성된 | 모든. | 아니요. | 무료, MIT |
라자 | 스캐너리스, 2상 | 라자 | 자바 | 분리된 | 스캐너가 없는 | 모든. | 아니요. | 무료, GNU GPL |
모델CC | 얼리 | 주석이 달린 클래스 모델 | 자바 | 생성됨 | 생성된 | 모든. | 아니요. | 무료, BSD |
P3 | 얼리-콤비네이터 | BNF같은 | OCaml | 혼합된 | 외부 또는 스캐너가 없는 | 모든. | 아니요. | ? |
P4 | 얼리-콤비네이터, 무한 CFG | BNF같은 | OCaml | 혼합된 | 외부 또는 스캐너가 없는 | 모든. | 아니요. | ? |
스캐너리스 부울 파서 | 스캐너리스 GLR(Boolean 문법 | ? | 해스켈, 자바 | 분리된 | 스캐너가 없는 | 자바 가상 머신 | 아니요. | 무료, BSD |
SDF/SGLR | 스캐너리스 GLR | SDF | C, 자바 | 분리된 | 스캐너가 없는 | 모든. | 네. | 무료, BSD |
스마CC | GLR(1), LALR(1), LR(1) | ? | 잡담 | 혼합된 | 내부의 | 모든. | 네. | 무료, MIT |
스파크 | 얼리 | ? | 파이썬 | 혼합된 | 외부의 | 모든. | 아니요. | 무료, MIT |
톰. | GLR | ? | C | 생성됨 | 없음. | 모든. | 아니요. | 무료, "라이선스 또는 저작권 제한 없음" |
울트라그램 | LALR, LR, GLR | ? | C++, C#, Java, Visual Basic .NET | 분리된 | 생성된 | 창문들 | 네. | 사유지 |
웜홀 | 가지치기, LR, GLR, 스캐너리스 GLR | ? | C, 파이썬 | 혼합된 | 스캐너가 없는 | 창문들 | 아니요. | 무료, MIT |
고래송아지 | 일반표, SLL(k), 선형 정규형(접속 문법), LR, 이진 정규형(부울 문법) | ? | C++ | 분리된 | 외부의 | 모든. | 아니요. | 사유지 |
얍 | 얼리 | 야크 같은 | C | 혼합된 | 외부의 | 모든. | 아니요. | 무료, GNU LGPL |
문맥에 민감한 문법
이 표는 구문 분석기 생성기와 문맥에 민감한 문법을 비교합니다.
이름. | 파싱 알고리즘 | 입력문법표기 | 부울 문법 능력 | 개발플랫폼 | 면허증. |
---|---|---|---|---|---|
루즈크[27][28] | 델타 사슬 | 모듈식의 | 상보적이 아닌 접속적 | 포식스 | 사유지 |
bnf2xml | 재귀적 하강(텍스트 필터 출력이 xml임) | 단순[clarification needed] BNF 문법(입력 일치), 출력은 xml | ? | 베타, 전체 EBNF 파서가 아님 | 무료, GNU GPL |
참고 항목
메모들
참고문헌
- ^ "Ragel State Machine Compiler".
- ^ http://www.colm.net/open-source/ragel/[검증 필요]
- ^ "Adaptive LL(*) Parsing: The Power of Dynamic Analysis" (PDF). Terence Parr. Retrieved 2016-04-03.
- ^ "Survey on Various Syntax Analyzer Tools". www.ijraset.com. Retrieved 2023-09-16.
- ^ Boyland, John; Spiewak, Daniel (2010-09-17). "Tool Paper: ScalaBison Recursive Ascent-Descent Parser Generator". Electronic Notes in Theoretical Computer Science. Proceedings of the Ninth Workshop on Language Descriptions Tools and Applications (LDTA 2009). 253 (7): 65–74. doi:10.1016/j.entcs.2010.08.032. ISSN 1571-0661.
- ^ "Beaver - a LALR Parser Generator". beaver.sourceforge.net. Retrieved 2023-09-16.
- ^ Newton, Jim E.; Demaille, Akim; Verna, Didier (2016-05-09). "Type-Checking of Heterogeneous Sequences in Common Lisp" (PDF). Proceedings of the 9th European Lisp Symposium on European Lisp Symposium. ELS2016. Kraków, Poland: European Lisp Scientific Activities Association: 13–20. ISBN 978-2-9557474-0-7.
- ^ "CL-Yacc — a LALR(1) parser generator for Common Lisp". www.irif.fr. Retrieved 2023-09-16.
- ^ Hosseinpour, Sahereh; Alavi Milani, Mir Mohammad Reza; Pehlivan, Hüseyin (July 2018). "A Step-by-Step Solution Methodology for Mathematical Expressions". Symmetry. 10 (7): 285. doi:10.3390/sym10070285. ISSN 2073-8994.
- ^ "CppCC's Home Page". cppcc.sourceforge.net. Retrieved 2023-09-16.
- ^ "Java Cup". pages.cs.wisc.edu. Retrieved 2023-09-16.
- ^ "CUP". www2.cs.tum.edu. Retrieved 2023-09-16.
- ^ Thiemann, Peter; Neubauer, Matthias (2004-12-31). "Parameterized LR Parsing". Electronic Notes in Theoretical Computer Science. Proceedings of the Fourth Workshop on Language Descriptions, Tools, and Applications (LDTA 2004). 110: 115–132. doi:10.1016/j.entcs.2004.06.007. ISSN 1571-0661.
- ^ Gray, Robert W.; Levi, Steven P.; Heuring, Vincent P.; Sloane, Anthony M.; Waite, William M. "Eli: a complete, flexible compiler construction system". Communications of the ACM. 35 (2): 121–130. doi:10.1145/129630.129637. ISSN 0001-0782.
- ^ Owens, Scott; Flatt, M.; Shivers, O.; McMullan, Benjamin (2004-10-01). "Lexer and Parser Generators in Scheme" (PDF). Scheme 2004: Proceedings of the Fifth Workshop on Scheme and Functional Programming.
- ^ a b Areias, Hugo; Simões, Alberto; Henriques, P.; Cruz, Daniela Carneiro da (2010-09-01). "Parser generation in Perl : an overview and available tools" (PDF).
{{cite journal}}
:저널 요구사항 인용journal=
(도움말) - ^ "Building parsers for the web with JavaCC & GWT (Part one)". Chris Ainsley. 14 April 2014. Retrieved 2014-05-04.
- ^ "Racc". i.loveruby.net. Retrieved 2021-11-26.
- ^ "Racc Grammar File Reference". i.loveruby.net. Retrieved 2021-11-26.
- ^ "The SLK Parser Generator supports C, C++, Java, JavaScript, and C#, optional backtracking, free".
- ^ http://www.slkpg.site/http.txt[bare URL 일반 텍스트 파일]
- ^ "SLY (Sly Lex Yacc)".
- ^ "Tree-Sitter - An incremental parsing system for programming tools".
- ^ "Parse - Compile time (LR) type safe parser generator for C++". GitHub. 30 December 2021.
- ^ PEG.js의 포크 유지
- ^ "Parrot: Grammar Engine". The Parrot Foundation. 2011.
PGE rules provide the full power of recursive descent parsing and operator precedence parsing.
- ^ "LuZ: A context sensitive parser". 2016-10-17. Archived from the original on 2016-10-17. Retrieved 2018-10-17.
- ^ "LuZc – A conjunctive context-sensitive parser". luzc.zohosites.com. Archived from the original on 2018-12-21. Retrieved 2018-10-17.