앤티엘

ANTLR
앤티엘
원저작자Terence Parr 외
초기 릴리즈1992년 2월, 30년 전(1992-02)
안정된 릴리스
4.9.2 / 2021년 3월 11일; 17개월 전(2021-03-11)
저장소
기입처자바
플랫폼크로스 플랫폼
면허증.BSD 라이선스
웹 사이트www.antlr.org

컴퓨터 기반 언어 인식에서 ANTLR(Antler로 발음됨) 또는 ANother Tool for Language Recognition은 파싱에 LL(*)사용하는 파서 생성기입니다.ANTLR은 1989년에 처음 개발된 PCCTS(Purdue Compiler Construction Tool Set)의 후속 제품으로 현재 개발 중입니다.운영자는 샌프란시스코 [citation needed]대학Terence Parr 교수입니다.

사용.

ANTLR은 언어를 지정하는 문법을 입력으로 받아들여 해당 언어의 인식자에 대한 출력 소스 코드로 생성합니다.버전 3은 프로그래밍 언어 Ada95, ActionScript, C, C#, Java, JavaScript, Objective-C, Perl, Python, Ruby,[1] Standard ML의 코드 생성을 지원하지만 버전 4는 현재 타깃 C#, C++, [2][3]Dart, Java, JavaSScript, Go, Phython, 3(Phon, Python 2),

언어는 Extended Backus-Naur Form(EBNF)[citation needed][4]사용하여 표현되는 컨텍스트프리 문법을 사용하여 지정합니다.ANTLR은 렉서, 파서, 트리 파서 및 결합된 렉서 파서를 생성할 수 있습니다.파서는 자동으로 구문 분석 트리 또는 추상 구문 트리를 생성할 수 있으며 트리 파서를 사용하여 추가로 처리할 수 있습니다.ANTLR은 렉서, 파서 및 트리 파서를 지정하기 위한 단일 일관된 표기법을 제공합니다.

디폴트로는 ANTLR은 문법을 읽고 문법에 의해 정의된 언어(즉, 입력 스트림을 읽고 입력 스트림이 문법에 의해 지정된 구문을 따르지 않는 경우 오류를 생성하는 프로그램)를 생성합니다.구문 오류가 없는 경우 기본 액션은 메시지를 인쇄하지 않고 종료하는 것입니다.언어를 사용하여 유용한 무언가를 하기 위해, 문법의 문법 요소에 동작을 부가할 수 있습니다.이러한 작업은 인식자가 생성되는 프로그래밍 언어로 작성됩니다.인식자가 생성될 때 적절한 지점에서 인식자의 소스 코드에 작업이 포함됩니다.컴파일러의 [citation needed][4]경우 동작을 사용하여 심볼 테이블을 빌드 및 확인하고 대상 언어로 명령을 내보낼 수 있습니다.

렉서 및 파서 외에 ANTLR을 사용하여 트리 파서를 생성할 수 있습니다.이들은 추상 구문 트리를 처리하는 인식자로, 파서에 의해 자동으로 생성될 수 있습니다.이러한 트리 파서는 ANTLR에 고유하며 추상 구문 [citation needed][4]트리를 처리하는 데 도움이 됩니다.

라이선스

ANTLR[citation needed] 3 및 ANTLR 4는 3개 조항 BSD 라이센스[5]따라 게시된 무료 소프트웨어입니다.이전 버전은 퍼블릭 도메인 [6]소프트웨어로 출시되었습니다.BSD 라이선스가 부여된 ANTLR 4 [5][7]소스에 포함된 문서는 Parr의 저서 The Definitive ANTLR 4 Reference에서 파생되었습니다.

독점 제품인 ANTLR Studio와 SourceForge에서 [citation needed]호스팅되는 Eclipse용 "ANTLR 2"[8] 및 "ANTLR 3"[9] 플러그인을 포함하여 Eclipse 개발 환경을 위해 다양한 플러그인이 개발되었습니다.

ANTLR 4

ANTLR 4는 왼쪽 직접 재귀를 올바르게 다루지만 일반적으로 [10]왼쪽 재귀, 즉 x를 참조하는 y를 참조하는 문법 규칙 x는 다루지 않습니다.

발전

ANTLR 프로젝트의 툴 페이지에서[11] 보고한 바와 같이 구문 강조 표시, 구문 오류 검사 및 코드 완성 등의 기능을 지원하는 플러그인은 가장 일반적인 IDE(Intelij IDEA, NetBeans, Eclipse, Visual[12] Studio 및 Visual Studio Code)에서 무료로 사용할 수 있습니다.

프로젝트

ANTLR을 사용하여 빌드된 소프트웨어는 다음과 같습니다.

ANTLR 4에 구현된 200개 이상의 문법을 GitHub에서 [17]사용할 수 있습니다.URL의 문법부터 C, Java, Go와 같은 언어 전체의 문법까지 다양합니다.

다음 예제에서는 ANTLR의 파서가 식 합계를 "1 + 2 + 3" 형식으로 볼 수 있습니다.

 // 공통 옵션, 예를 들어 대상 언어 옵션 {language = "CSharp"; } // 그 파서 클래스 SumParser 확장, 옵션 {k = 1; // 파서 룩어헤드: 1 토큰 } //  정의: INTEGER(PLUS^ INTEGER)*, // 다음은 Lexer 확장 클래스입니다.exer lookahead: 1자 } 플러스: '+'; DIGIT: '0'..'9'; 정수: (DIGIT)+;

다음 목록은 프로그램 내의 파서 호출을 보여줍니다.

 텍스트 리더 독자;  // (...) TextReader에 문자 채우기  SumLlexer 렉서 = 신규 SumLlexer(독자);  SumParser 파서 = 신규 SumParser(렉서);   파서.진술(); 

「 」를 참조해 주세요.

레퍼런스

  1. ^ SML/NJ 언어 처리 도구: 사용자 가이드
  2. ^ "Runtime Libraries and Code Generation Targets". github. 6 January 2022.
  3. ^ "The ANTLR4 C++ runtime reached home – Soft Gems".
  4. ^ a b c Parr, Terence (2013-01-15). The Definitive ANTLR 4 Reference. Pragmatic Bookshelf. ISBN 978-1-68050-500-9.
  5. ^ a b "antlr4/LICENSE.txt". GitHub. 2017-03-30.
  6. ^ Parr, Terence (2004-02-05). "licensing stuff". antlr-interest (Mailing list). Archived from the original on 2011-07-18. Retrieved 2009-12-15.
  7. ^ "ANTLR 4 Documentation". GitHub. 2017-03-30.
  8. ^ "ANTLR plugin for Eclipse".
  9. ^ "ANTLR IDE. An eclipse plugin for ANTLR grammars".
  10. ^ ANTLR 3과 4의 차이점은 무엇입니까?
  11. ^ "ANTLR Development Tools".
  12. ^ "ANTLR Language Support - Visual Studio Marketplace".
  13. ^ "GroovyRecognizer (Groovy 2.4.0)".
  14. ^ "Jython: 31d97f0de5fe".
  15. ^ Ebersole, Steve (2018-12-06). "Hibernate ORM 6.0.0.Alpha1 released". In Relation To, The Hibernate team blog on everything data. Retrieved 2020-07-11.
  16. ^ "OpenJDK: Compiler Grammar".
  17. ^ Grammars written for ANTLR v4; expectation that the grammars are free of actions.: antlr/grammars-v4, Antlr Project, 2019-09-25, retrieved 2019-09-25

참고 문헌

추가 정보

외부 링크