목차
제4장 Context-free 언어와 푸시다운 오토마타 제5장 구문분석(syntax analysis, parsing) 제6장 의미분석과 기호표(semantic analysis and symbol table) 제7장 중간언어와 중간코드 생성 제8장 코드의 최적화(code optimization) 제9장 코드의 생성(code generation)
본문내용
제4장 Context-free언어와 푸시다운 오토마타 1. Context-free언어와 푸시다운(Push-Down) 오토마타 ① 촘스키에 의하면 A α, A ∈ VN, α ∈ V*의 형태를 가짐 ② 산술이나 블록구조를 표현하는데 효율적 ③ 자연언어를 표현하기 위해서 도입됨 ④ Context-free 언어는 정규언어보다 표현범위가 넓으나 push-down 오토마타를 구현하는 일은 유한 오토마타를 구현하는 것보다 훨씬 복잡하고 어렵다. 2. 유도트리 (1) 유도(derivation) ① 좌단유도: 유도과정의 각 단계에서 문장형태(sentential form)의 가장 왼쪽에 있는 논터미널기호를 계속해서 대체하는 경우 ② 우단유도: 가장오른쪽의 논터미널기호를 계속해서 대체하는 경우 (2) 파스 ① 좌파스(left parse): 좌단유도에 의해 적용된 일련의 생성규칙 순서 ② 우파스(right parse): 우단유도에 의해 적용된 생성규칙 순서의 역순 (3) 유도트리(derivation tree) 또는 파스트리(parse tree) ① 구문분석과정에서 문장이 유도되는 과정을 트리형태로 표현 ② CFG(Context Free 문법) G = (VN, VT, P, S)에 대한 유도트리는 다음과 같이 정의 - 모든 노드는 문법기호를 레이블로 가짐 - 루트(root)의 레이블은 시작기호 S이다. - 만약 어떤 노드가 하나 이상의 자노드(child node)를 갖는다면, 이 노드는 논터미널 기호를 레이블로 가짐 - 왼쪽부터 순서적으로 X1, X2, ,,, Xn의 n개의 자노드를 갖는 어떤 노드 A가 존재한다면, 생성규칙 A X1X2 ,,, Xn이 존재 - 만약 어떤 노드가 자노드를 하나도 갖고 있지 않다면, 이 노드를 잎(leaf, termnal node)이라 하고, 잎은 터미널기호를 레이블로 가짐 - 중략 -