110 likes | 250 Views
2.3 푸쉬다운 자동장치의 한계. 문맥-무관 언어의 범위 결정적 푸쉬다운 자동장치 Lookahead principle. PDA 의 한계. 문맥-무관 언어의 범위 컴파일러 설계 - 결정성. 문맥-무관 언어의 범위. 정리 2.5 : Pumping Theorem 만약 L 이 무한히 많은 스트링을 가지고 있는 문맥-무관 언어이면, s v u w t L s v n u w n t L, n N + v 와 w 중 적어도 하나는 공백 스트링이 아니다. 정리 2.5 증명.
E N D
2.3 푸쉬다운 자동장치의 한계 • 문맥-무관 언어의 범위 • 결정적 푸쉬다운 자동장치 • Lookahead principle
PDA의 한계 • 문맥-무관 언어의 범위 • 컴파일러 설계 - 결정성
문맥-무관 언어의 범위 • 정리 2.5 : Pumping Theorem • 만약 L이 무한히 많은 스트링을 가지고 있는 문맥-무관 언어이면, • svuwt L svnuwnt L, n N+ • v와 w 중 적어도 하나는 공백 스트링이 아니다.
정리 2.5 증명 • G = (N, T, S, R) • 용어 • m : 생성 규칙들 중 가장 긴 우변의 길이 • j = |N| • Parse tree의 깊이
{xnynzn: n N+} • 이 언어는 문맥-무관 언어가 아니다. • 정리 2.5를 이용해 증명. • 워드 프로세서(word processor) • 같은 기호의 단어 • 역행 문자(back space) • 같은 개수의 밑줄
결정적 푸쉬다운 자동장치 • 컴파일러의 routines은 결정적이어야 한다 • 결정적인 파싱 루틴 개발의 설계 도구 : PDA • Deterministic pushdown automaton • 어느 순간에나 꼭 한 개의 전이만 적용 가능한 푸쉬다운 자동장치 • T에는 (p, u, v; q, z) 형태의 전이가 꼭 한 개만 존재 • (u, v)는 {(x, y), (x, ), (, y), (, )}의 원소 • 즉, 위 네 경우에서 반드시 한 경우만 존재
DPDA의 설계 방법 • 그림 2.20b • 원하지 않는 스택의 기호는 POP후에 다시 PUSH. • 스택 기호 #을 도입한다.
정리 2.6 • DPDA에 의해 수락되지 않는 문맥-무관 언어가 있다. • L = {xnyn: n N+} {xny2n: n N+} • 문맥-무관 언어 : 그림 2.21 • L은 결정적 푸쉬다운 자동장치에 의해 수락될 수 없다 : • 증명은 귀류법(by contradiction) • {xnynzn: n N+}을 수락하게 된다 : 오류
결정적 문맥-무관 언어 • 그림 2.23 • 스트링을 수락하기 전에 자신의 스택을 비우는 결정적 푸쉬다운 자동장치에 의해 수락되는 언어 • 그림 2.22 • L(M) = {xn: n N} {xnyn: n N} • 스택을 비우게 하면, xn+myn도 수락된다. • L(M)이 아니다 : 오류 발생
입력 스트링 수락 방식 • 푸쉬다운 자동장치가 스트링을 수락하기 위해서는, 그 스트링을 읽은 뒤 테이프 헤드를 더 이상 테이프의 뒤로 옮기지 않고 자신의 수락 조건을 만족해야만 한다. • PDA가 EOS 표지를 실제로 읽지 않고도 수락 상태에 도달해야 한다. • PDA가 현재 테이프 헤드의 바로 오른쪽에 있는 다음 기호를 엿볼 수 없었다.
룩어헤드 원리(Lookahead principle) • 다가오는 기호들을 실제로 읽어 들이지는 않고 엿보는 기법 • 그림 2.24의 변수 symbol • 다음 입력 기호를 위한 저장소 또는 buffer • While 구조 종료 뒤에도 buffer에 남는다 • 적용 • PDA의 비결정성을 극복하는 프로그램 구성 • 문맥-무관 문법에 대한 파싱 루틴 개발의 발판 • 파서(Parser)에 적용