GOLD(파서)
GOLD (parser)![]() |
![]() | |
![]() | |
개발자 | 데빈 쿡과 54명의 다른[1] 기여자들 |
---|---|
최종 발매 | 5.2.0 / 2012년 8월 18일; 전 |
운영 체제 | 창문들 |
유형 | LALR 파서 |
면허증 | zlib 라이센스(무료 소프트웨어) |
웹사이트 | goldparser![]() |
GOLD는 다중 프로그래밍 언어를 지원하도록 설계된 무료 파싱 시스템이다.
디자인
이 시스템은 어휘 분석에 DFA를 사용하고 파싱에 LALR 알고리즘을 사용한다.이 알고리즘은 모두 테이블을 사용하여 동작을 결정하는 상태 기계다.GOLD는 LALR과 DFA 구문 분석표를 생성하는 프로세스와 파싱 알고리즘 자체의 실제 구현을 논리적으로 분리하는 원리를 중심으로 설계되었다.이를 통해 파서들은 동일한 문법 및 개발 과정을 유지하면서 다른 프로그래밍 언어로 구현될 수 있다.
GOLD 시스템은 "빌더", "엔진" 및 "컴파일된 문법표" 파일 정의의 세 가지 논리 구성요소로 구성되며, 이 정의는 빌더와 엔진 사이의 중개자 역할을 한다.
빌더
Builder는 시스템의 주요 구성 요소 및 주요 응용 프로그램이다.Builder는 언어의 구문을 분석하고(문법으로 지정됨) LALR과 DFA 표를 구성하는데 사용된다.이 과정 동안, 문법에 모호한 부분이 보고될 것이다.이것은 기본적으로 YACC와 ANTLR과 같은 컴파일러 컴파일러 컴파일러에 의해 수행되는 것과 동일한 작업이다.
LALR 및 DFA 구문 분석 테이블이 성공적으로 구성되면, 작성자는 이 데이터를 컴파일된 문법 테이블 파일에 저장할 수 있다.이렇게 하면 나중에 Builder가 정보를 다시 열거나 엔진 중 하나에서 사용할 수 있다.현재 Builder 구성 요소는 윈도우즈 32비트 운영 체제에서만 사용할 수 있다.
Builder의 특징은 다음과 같다.
- 프리웨어 라이선스
- 상태 검색
- 통합 테스트
- 여러 파일 테스트 마법사
- 웹 페이지 생성(하이퍼링크 구문 차트 포함)
- 템플릿을 사용하여 스켈레톤 프로그램 생성
- YACC로 그래머 내보내기
- 테이블을 XML 또는 형식 텍스트로 내보내기
컴파일된 문법 테이블 파일
컴파일된 문법 테이블 파일은 작성자가 생성한 테이블 정보를 저장하는 데 사용된다.
엔진
단일 플랫폼에서만 실행되는 Builder와는 달리, 엔진 구성요소는 특정 프로그래밍 언어 및/또는 개발 플랫폼을 위해 작성된다.엔진은 LALR 및 DFA 알고리즘을 구현한다.다른 프로그래밍 언어들은 프로그램 설계에 다른 접근방식을 사용하기 때문에 엔진의 각 구현은 다를 것이다.결과적으로, Visual Basic 6용으로 작성된 엔진의 구현은 ANSI C용으로 작성된 엔진과 크게 다를 것이다.
현재, GOLD용 엔진은 다음과 같은 프로그래밍 언어/플랫폼을 위해 구현되었다.New Engine은 기존 엔진의 소스 코드를 출발점으로 하여 구현할 수 있다.
그라마르스
GOLD Grammar는 Backus-Naur 형식과 정규 표현식, 세트 표기법을 직접 기반으로 한다.
다음의 문법은 "단순"이라고 불리는 최소한의 범용 프로그래밍 언어의 구문을 정의한다.
"이름")'Simple의"작가")'Devin 쿡의"버전")'2.1의"약")'이것은 매우 간단한 문법 예의"사례 민감형"에 사용하기 위해) 잘못된"시작 기호")<>설계된;Statements>,{현악 Ch 1}){인쇄 가능로 설정}-["]{현악 Ch 2}){인쇄 가능로 설정}-["]식별자){편지}{AlphaNumeric}*!String은 단일 o. 수 있rdoubl따옴표 StringLiteral =' {String Ch 1}* ''' {String Ch 2}* ''' 숫자리터럴 = {Num}+('').{Num}+?댓글 시작 = '/*' 댓글 끝 = '*/' 댓글 줄 = '/'
<>Statements>.::=<>Statements>, <, Statement>, <, Statement>, <, Statement>.::= 디스플레이<>.Expression>, 디스플레이<>Expression>, 아이디 ID'=의<>를 할당, 읽다.Expression>한 반면,<>Expression>, <을 행하며, Statements>, 끝나면<>.Expression>. 그리고 <, Statements>, 끝나면<>.Expression>. 그리고 <, Statements>, el의심<>Statements>, 끝<>Expression>.::=<>Expression>, '>,의<>추가 Exp>, <, Expression>, '<,의<>추가 Exp>, <, Expression>, '<, =의<>추가 Exp>, <, Expression>, '>, =의<>추가 Exp>, <, Expression>, '==의<>추가 Exp>, <, Expression>, '<를<>의<>추가 Exp>, <, 추가 Exp>, <, 추가 Exp>.::=<>추가 Exp>, '+의<>내 RExp>, <, 추가 Exp>, '-의<>.;내 RExp>, <, 추가 Exp>, '&,의<>내 RExp>, <내 RExp>, <내 RExp>.::=<>.Mult Exp> '*' <Mult Exp> <Mult Exp> </> <Negate Exp> <Negate Exp> <Negate Exp> <Negate Exp> ::= '-' <Value> ::= 식별자 문자열문학번호리터럴 '()' <표현> ''
개발 개요
첫 번째 단계는 구문 분석 대상 언어에 대한 문법 작성과 시험으로 구성된다.문법은 메모장 또는 작성기에 내장된 편집기와 같은 텍스트 편집기를 사용하여 작성할 수 있다.이 단계에서는 코딩이 필요하지 않다.
문법이 완성되면 Builder에 의해 분석되고 LALR과 DFA 파스 테이블이 구성되며, 문법의 모호성이나 문제점이 보고된다.이후 테이블은 컴파일된 문법 테이블 파일에 저장되어 나중에 파싱 엔진에 의해 사용된다.이 시점에서 GOLD 파서 빌더는 더 이상 필요하지 않다.
마지막 단계에서 테이블은 엔진에 의해 읽힌다.이 시점에서, 개발 과정은 선택된 구현 언어에 의존한다.
참조
- ^ "Contributors". goldparser.org. Retrieved 28 August 2017.
외부 링크
![]() | 위키미디어 커먼즈에는 GOLD(파서)와 관련된 미디어가 있다. |