파숙(자바)
Parboiled (Java)| 개발자 | 마티아스 도니츠 |
|---|---|
| 초기 릴리즈 | 2009년 11월 12일; 전 |
| 안정적 해제 | 1.3.1 / 2019년 6월 24일; 전[1] |
| 리포지토리 | |
| 기록 위치 | 자바 |
| 운영 체제 | 크로스 플랫폼 |
| 면허증 | 아파치 라이선스 2.0 |
| 웹사이트 | parboiled |
parboilled는 아파치 라이선스로 발매된 오픈 소스 자바 라이브러리다.자바 소스 코드에 직접 PEG 파서를 정의하기 위한 지원을 제공한다.
파보일드(parboiled)는 일반적으로 정규식 또는 파서 생성기(예: ANTLR 또는 JavaCC)의 대안으로 사용되며, 특히 중소형 애플리케이션에서는 더욱 그러하다.
문법 정의 구문 분석의 구조 제공 외에도 추상 구문 트리 구성, 구문 오류 보고 및 구문 분석 오류 복구를 지원하는 완전한 재귀적 하강 파서를 구현한다.
예
파보기로 파싱하는 것은 별도의 렉싱 단계가 필요 없고 문법 정의 파보빙에 대해 배울 특별한 구문이 없기 때문에 비교적 쉽게 맞춤 파서를 만들 수 있다.
간단한 의사 표기법으로 다음과 같은 고전적인 "계산기"의 예를 생각해 보십시오.
표현 ← 용어 (('+' / '-') 용어)* 용어 ← 요인 (('*' / '/') 요인)* 요인 ← 숫자 / '(' 표현 ')' 숫자 ← [0-9]+ 구문 분석 기능을 사용하면 이 규칙 설명을 다음 Java 코드로 직접 변환할 수 있다.
수입하다 org.parved베이스파서; 공중의 계급 계산기파서 연장하다 베이스파서<오브젝트> { 공중의 규칙 표현() { 돌아오다 순서( 용어(), 제로오모어( 순서( 퍼스트오프('+', '-'), 용어() ) ) ); } 공중의 규칙 용어() { 돌아오다 순서( 요인(), 제로오모어( 순서( 퍼스트오프('*', '/'), 요인() ) ) ); } 공중의 규칙 요인() { 돌아오다 퍼스트오프( 숫자(), 순서('(', 표현(), ')') ); } 공중의 규칙 숫자() { 돌아오다 원오모어(샤랑주('0', '9')); } } 클래스는 다음과 같은 코드로 실제 입력을 구문 분석하는 데 사용될 수 있는 언어에 대한 파서 규칙을 정의한다.
끈 입력하다 = "1+2"; 계산기파서 파서 = 반숙.createParser(계산기파서.계급); 파싱 결과<?> 결과 = 보고파스러너.달리다(파서.표현(), 입력하다); 끈 parseTreePrintOut = ParseTreeUtils.printNodeTree(결과); 시스템.밖으로.인쇄하다(parseTreePrintOut); 참고 항목
참조
- ^ "Changelog". Parboiled. June 24, 2019. Retrieved January 7, 2020.
외부 링크