프로젝트 소개

ANTLR(ANother Tool for Language Recognition)는 구조화된 텍스트 또는 바이너리 파일을 읽고, 처리하고, 실행하거나 번역하는 데 사용되는 파서 생성기입니다. 문법으로부터 파스 트리를 구축할 수 있는 파서를 생성하고, 인식된 구문에 응답하기 위한 리스너 또는 비지터 인터페이스도 생성합니다. 이 프로젝트는 언어, 도구, 프레임워크를 구축하는 데 널리 사용된다고 명시합니다. 대상 언어: ANTLR 4는 Cpp, CSharp, Dart, Java, JavaScript, PHP, Python3, Swift, TypeScript, Go 등 10개 대상을 지원합니다. 각 릴리스는 대상 간 동작 일관성을 유지하기 위해 도구와 모든 런타임을 동일한 버전으로 제공합니다. Python 2 지원은 버전 4.14부터 중단되었습니다. Go 대상은 `go get` 및 `import`를 위한 전용 저장소가 있으며, Go 런타임 개발은 여전히 메인 저장소에서 이루어집니다. 버전 관리: README는 버전 관리가 semver를 엄격히 따르지 않는다고 설명합니다. 주요 버전은 완전한 재작성(ANTLR3에서 ANTLR4로, LL(*)에서 ALL(*) 파싱으로) 시에만 올라갑니다. 부 업데이트에는 사소한 호환성 파괴 변경이 포함될 수 있으며, 명시된 정책은 모든 릴리스마다 파서를 재생성하는 것입니다. 하위 호환성은 패치 버전 증가에 대해서만 보장됩니다. CI에서 semver 검증기를 사용하는 사용자는 특별 규칙을 적용하는 것이 좋습니다. 저장소 구조: 기본 `master` 브랜치는 릴리스 태그가 포함된 최신 안정 릴리스를 보유하며, `dev` 브랜치는 개발이 이루어지고 풀 리퀘스트가 파생되어야 하는 곳입니다. `dev` 브랜치는 태그된 릴리스를 만들기 위해 `master`로 다시 병합됩니다. 참조되는 문서 및 리소스에는 릴리스 노트, 시작 가이드, 공식 사이트, 문서 색인, FAQ, 대상 페이지, Java API, ANTLR v3, v3-to-v4 마이그레이션 FAQ가 포함됩니다. ANTLR 자체를 빌드하고 릴리스를 생성 및 배포하는 방법에 대한 페이지도 있습니다. README는 책 "The Definitive ANTLR 4 Reference"와 그 소스 코드를 언급하고, 별도의 grammars-v4 저장소를 가리킵니다. 이 저장소는 파싱하는 언어의 소문자 이름(예: java, cpp, csharp, c)으로 명명된 문법 모음입니다. 나열된 기여자로는 Terence Parr(프로젝트 리드), Sam Harwell, Eric Vergnaud, Peter Boyer, Mike Lischke, Dan McLaughlin, David Sisson, Janyou, Ewan Mellor, Hanzhou Shi, Ben Hamilton, Marcos Passos, Lingyu Li, Ivan Kochurkin, Justin King, Ken Domino, Jim Idle이 있으며, 특정 대상, 유니코드 지원, 오류 처리, 성능 등의 기여 영역에 대한 설명이 포함됩니다.