제4장 Context-free언어와 푸시다운 오토마타
제5장 구문분석
? 구문분석의 종류
(1) 파스트리의 제작 순서에 따라 Top-Down과 Bottom-Up으로 나뉜다.
① Top-Down 방법 : 시작 - 루트노드-> 터미널 노드로 만들어 나가는 방법
시작기호로부터 출발하여 정의된 문법 규칙을 적용하여 유도에 의하여
주어진 문자열을 찾아가는 방법.
- 구문분석기 : recursive decent 구문분석 방법, LL(k) 문법
② Bottom-Up 방법 : 시작 - 터미널노드->루트노드
주어진 문자열로부터 reduce 하여 시작기호를 찾아가는 방법
- 구문분석기 : 단순순위, 확장순위, 한정순위, 혼합순위, 및 LR(k) 문법들
(연산자 순위문법으로는 보통의 산술식 표현 가능, 하지만 일반적 프로그램 언어 모두
표현 불가능) -> 현재 실용화된 문법 : LR(1)
? Bottom-Up 구문분석
(1) 정의
- reduce : S * αAw αβw의 유도과정이 존재할 때, 문장형태 αβw에서 β를 A로 대체하는 것.
handle : β (αβw의 handle) ; 한 문장형태에서 reduce 되는 부분.
(2) Shift-reduce 구문분석
① 방법 : 스택과 입력버퍼를 사용하여 구현가능.
- 스택 : handle을 찾을때까지 현재의 입력기호를 유지
- 입력버퍼 : 주어진 문자열 간직
② Shift : 스택의 top에 handle이 나타날 때까지 입력기호를 하나씩 스택으로 옮기는 것
③ Shift-reduce 구문분석 : Shift 계속 -> handle 발견시 handle에 해당되는 문자열이 생성규칙의 오른쪽에 있는 것을 찾아서, 왼쪽에 있는 기호를 reduce, 작업 반복.
시작기호가 나타나면 구문분석을 멈추고 구문분석에 의해 주어진 문자열은 주어진 문법에 의해 받아들여 질 수 있음. 이 구문과정이 shift 와 reduce가 연속적으로 이루어지기 때문에 Shift - reduce 구문분석.
제6장 의미분석과 기호표
제7장 중간코드 생성
제8장 코드의 최적화
제9장 코드의 생성
<출제예상문제 - 40문제>
<02-05학년도 기출문제>