parser란 compiler에서 syntax analysis를 하는 부분이다.
parser의 역할을 보면 다음과 같다. lexical analyzer로부터 token을 받아들인다. 그리고 source language에 대해 string이 grammar에 의해 generate될 수 있음을 증명하며, compile시 일반적으로 나타나는 error를 recover하여 processing을 진행시킨다.
본문일부/목차
parsing에 사용되는 syntax는 context-free grammar를 이용하여 표현하게 된다.
predictive parser는 top-down parsing(즉, LL parsing)의 하나로 right most derivation을 이용하여 derivation의 각 step에서 right most nonterminal을 우선적으로 바꾸어 나간다. predictive parser를 사용하는 것은 일반적인 LL parsing을 사용하는 parser에서 나타나는 backtracking을 막기 위함이다.
predictive parser는 input buffer, stack, parsing table, output stream으로 구성된다. input buffer는 input symbol의 access를 빠르게 하기 위해 저장해 두는 역할을 한다. stack은 grammar symbol의 sequence를 저장하는 역할을 한다. 이 stack이 lexical analyzer와의 구조적 차이이다. parsing table은 double array로서 만들어지며, input symbol과 nonterminal에 대한 rule을 저장하고 있는 것으로서 diagram으로 보자면 transition을 의미하게 된다.
다음은 여기서 사용된 parsing table이다.
parsing table에 따라 nontermianl과 input symbol에 의해 parsing이 되는 algorithm은 다음과 같다. X를 stack의 top에 있는 symbol이라고 하고, a를 현재 input symbol이라고 하자. 여기서 ‘$’는 stack과 input의 가장 밑에 있는 것으로 empty임을 의미하는 symbol이다. 그리고 비어있는 부분은 error를 의미한다.
① X = a = $ : parsing이 완료되어 parsing을 중지한다.
② X = a ≠ $ : X를 stack에서 pop한다.
그리고 input buffer의 input pointer를 다음으로 이동시킨다.
③ X가 nonterminal인 경우 : M[A , a]를 실행한다.
· 해피레포트는 다운로드 받은 파일에 문제가 있을 경우(손상된 파일/설명과 다른자료/중복자료 등) 1주일이내 환불요청 시 환불(재충전) 해드립니다.
(단, 단순 변심 및 실수로 인한 환불은 되지 않습니다.)
· 파일이 열리지 않거나 브라우저 오류로 인해 다운이 되지 않으면 고객센터로 문의바랍니다.
· 다운로드 받은 파일은 참고자료로 이용하셔야 하며,자료의 활용에 대한 모든 책임은 다운로드 받은 회원님에게 있습니다.
저작권안내
보고서 내용중의 의견 및 입장은 당사와 무관하며, 그 내용의 진위여부도 당사는 보증하지 않습니다.
보고서의 저작권 및 모든 법적 책임은 등록인에게 있으며, 무단전재 및 재배포를 금합니다.
저작권 문제 발생시 원저작권자의 입장에서 해결해드리고 있습니다. 저작권침해신고 바로가기