컴파일러 입문] 컴파일러 프로젝트[preparser]
페이지 정보
작성일 23-02-03 23:19본문
Download : 컴파일러 입문] 컴파일러 프로젝트[p.hwp
parser의 역할을 보면 다음과 같다. X를 stack의 top에 있는 symbol이라고 하고, a를 현재 input symbol이라고 하자. 여기서 ‘$’는 stack과 input의 가장 밑에 있는 것으로 empty임을 의미하는 symbol이다.
컴파일러 입문,컴파일러 프로젝트,preparser
레포트 > 공학,기술계열
![컴파일러 입문] 컴파일러 프로젝트[p-3752_01.jpg](https://sales.happyreport.co.kr/prev/201304/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%20%EC%9E%85%EB%AC%B8%5D%20%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%20%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%5Bp-3752_01.jpg)
![컴파일러 입문] 컴파일러 프로젝트[p-3752_02_.jpg](https://sales.happyreport.co.kr/prev/201304/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%20%EC%9E%85%EB%AC%B8%5D%20%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%20%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%5Bp-3752_02_.jpg)
![컴파일러 입문] 컴파일러 프로젝트[p-3752_03_.jpg](https://sales.happyreport.co.kr/prev/201304/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%20%EC%9E%85%EB%AC%B8%5D%20%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%20%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%5Bp-3752_03_.jpg)
![컴파일러 입문] 컴파일러 프로젝트[p-3752_04_.jpg](https://sales.happyreport.co.kr/prev/201304/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%20%EC%9E%85%EB%AC%B8%5D%20%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%20%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%5Bp-3752_04_.jpg)
![컴파일러 입문] 컴파일러 프로젝트[p-3752_05_.jpg](https://sales.happyreport.co.kr/prev/201304/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%20%EC%9E%85%EB%AC%B8%5D%20%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%20%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%5Bp-3752_05_.jpg)
Download : 컴파일러 입문] 컴파일러 프로젝트[p.hwp( 31 )
predictive parser는 top-down parsing(즉, LL parsing)의 하나로 right most derivation을 이용하여 derivation의 각 step에서 right most nonterminal을 우선적으로 바꾸어 나간다. predictive parser를 사용하는 것은 일반적인 LL parsing을 사용하는 parser에서 나타나는 backtracking을 막기 위함이다.
설명
그리고 input buffer의 input pointer를 다음으로 이동시킨다.
③ X가 nonterminal인 경우 : M[A , a]를 실행한다.
다.
다음은 여기서 사용된 parsing table이다. 그리고 비어있는 부분은 error를 의미한다. parsing table은 double array로서 만들어지며, input symbol과 nonterminal에 대한 rule을 저장하고 있는 것으로서 diagram으로 보자면 transition을 의미하게 된다된다.
parsing에 사용되는 syntax는 context-free grammar를 이용하여 표현하게 된다된다. lexical analyzer로부터 token을 받아들인다.
순서
parsing table에 따라 nontermianl과 input symbol에 의해 parsing이 되는 algorithm은 다음과 같다.
parser란 compiler에서 syntax analysis를 하는 부분이다. lexical analyzer로부터 token을 받아들인다. 이 stack이 lexical analyzer와의 구조적 차이이다.
parser란 compiler에서 syntax analysis를 하는 부분이다.
parser의 역할을 보면 다음과 같다.
컴파일러 입문] 컴파일러 프로젝트[preparser]
predictive parser는 input buffer, stack, parsing table, output stream으로 구성된다된다. 그리고 source language에 대해 string이 grammar에 의해 generate될 수 있음을 증명하며, compile시 일반적으로 나타나는 error를 recover하여 processing을 진행시킨다. ② X = a ≠ $ : X를 stack에서 pop한다. 그리고 source language에 대해 string이 grammar에 의해 generate될 수 있음을 증명하며, compile시 일반적으로 나타나는 error를 recover하여 processing을 진행시킨다. input buffer는 input symbol의 access를 빠르게 하기 위해 저장해 두는 역할을 한다. stack은 grammar symbol의 sequence를 저장하는 역할을 한다.
① X = a = $ : parsing이 완료되어 parsing을 중지한다.