21
Regular Expression and Context- free Grammar Programming Language Theory 2015, [email protected] 1 Regular Expression and Context-free Grammar 상지대학교 컴퓨터정보공학부 ([email protected]) Lecture04_RE_CFG 2 정규 문법과 정규 언어 n 정규 문법(Regular Grammar) n 촘스키(Chomsky, N.) 문법 규칙-Type 3 n 토큰 구조 표현(어휘 분석 단계) n 정규 문법의 형태 우선형 문법(right-linear grammar; RLG) n Nonterminal이 Terminal 뒤에 나타남 n RLG: A -> tB, A -> t 좌선형 문법(left-linear grammar; LLG) n Nonterminal이 Terminal 앞에 나타남 n LLG: A -> Bt, A -> t (A,B ∈ V N 이고 t ∈ V T *) Lecture04_RE_CFG 3 n 정규 문법이 사용되는 이유 n 토큰의 구조는 간단하므로 정규 문법으로 표현 가능 n Context-Free Grammar보다는 정규 문법으로부터 식기의 구현이 쉬움. n 모듈러하게 구성할 수 있음

Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 1

Regular Expression and Context-free Grammar

상지대학교 컴퓨터정보공학부

고 광 만

([email protected])

Lecture04_RE_CFG 2

정규 문법과 정규 언어n 정규 문법(Regular Grammar)

n 촘스키(Chomsky, N.) 문법 규칙-Type 3

n 토큰 구조 표현(어휘 분석 단계)

n 정규 문법의 형태① 우선형 문법(right-linear grammar; RLG)

nNonterminal이 Terminal 뒤에 나타남

nRLG: A -> tB, A -> t

② 좌선형 문법(left-linear grammar; LLG)

nNonterminal이 Terminal 앞에 나타남

nLLG: A -> Bt, A -> t (A,B ∈ VN 이고 t ∈ VT*)

Lecture04_RE_CFG 3

n 정규 문법이 사용되는 이유n 토큰의 구조는 간단하므로 정규 문법으로 표현 가능

n Context-Free Grammar보다는 정규 문법으로부터 인식기의 구현이 쉬움.

n 모듈러하게 구성할 수 있음

Page 2: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 2

Lecture04_RE_CFG 4

정규 표현(Regular Expression)n 정 의

n 정규 문법 G를 대수학적인 성질로 표현

n 정규 언어에 속해있는 스트링의 모양을 직접 기술

n 정규 문법은 문법이 나타내는 언어의 형태를 체계적으로 구하여 정규 표현으로 나타낼 수 있음.

정규 문법(Regular Grammar)

정규 표현(Regular Grammar)

유한 오토마타(Finite Automata)

Lecture04_RE_CFG 5

n 정규 표현의 예n 정규 표현 : ab*

na가 나오고 b가 0번 이상 나오는 스트링

n {abn| n≥0}

n 정규 표현 : (0+1)*

n {0,1}*

n 정규 표현 : (a+b)*abb

na와 b로 이루어지는 모든 스트링 뒤에 abb가 나오는 언어

Lecture04_RE_CFG 6

n 명칭(identifier)의 정규 표현

n 특정한 형태의 스트링을 표현하는데 유용

n letter={A,B, ..., Z,a,b, ...,z}, digit={0,1,2, ..., 9}

n letter(letter+digit)*

Page 3: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 3

Lecture04_RE_CFG 7

n G = ({S, R}, {a,b}, P, S)

n S → aS | bR | ε

n R → aS

n정규 표현식

S = aS + bR +ε .... (1)

R = aS .... (2)

n X = αX +β 형태의 식이 존재하지 않음

Lecture04_RE_CFG 8

n 시작 심볼 S에 대해, 식 (2)를 식 (1)에 대입.

S = aS + b(aS) +ε

= aS + baS +ε

= (a+ba)S +ε

n 변환 과정에 의해 L(G) 구성

n S = (a+ba)S +ε = (a+ba)*

n L(G) = (a+ba)*

Lecture04_RE_CFG 9

G = ( {S,A,B}, {a,b}, P, S )에 대한 L(G) ?n 정규 문법

S → aA | bB | b

A → bA |ε

B → bS

n 정규 표현식

S = aA + bB + b .... (1)

A = bA +ε .... (2)

B = bS .... (3)

Page 4: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 4

Lecture04_RE_CFG 10

n X = αX +β형태의 식 (2)를 풀면

A = bA +ε = b*ε = b* .... (4)

n 식 (4)와 (3)을 식 (1)에 대입

S = aA + bB + b

= ab* + bbS +b

= bbS + (ab* + b)

= (bb)*(ab* + b)

L(G) = (bb)* (ab* + b)

Lecture04_RE_CFG 11

정규 표현 ?n 정규 표현식

X1 = 0X2 + 1X1 +ε .... (1)

X2 = 0X3 + 1X2 .... (2)

X3 = 0X1 + 1X3 .... (3)

n 식 (3)에서

X3 = 1X3 + 0X1

= 1*0X1 .... (4)

Lecture04_RE_CFG 12

n 식 (2)에 식(4)를 대입X2 = 01*0X1 + 1X2 = 1X2 + 01*0X1

= 1*01*0X1 .... (5)

n 식 (5)를 식 (1)에 대입X1 = 01*01*0X1 + 1X1 +ε

= (01*01*0 + 1)X1 +ε

= (01*01*0 + 1)*

n L(X1) = (01*01*0 + 1)*

Page 5: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 5

Lecture04_RE_CFG 13

유한 오토마타(Finite Automata; FA)n 언어 인식기(Language Recognizer)

n 스트링을 받아 스트링이 그 언어의 문장, "Yes"

n 인식기 중에 가장 간단한 형태

n 어휘 분석기의 고안/구현

a0 a1 a2 ... ai ai+1 ai+2 ... aninput

Input head

Auxiliary Storage

Finite State Control

Lecture04_RE_CFG 14

FA M = (Q, Σ, δ ,q0, F)n 구성 요소

n Q : 상태(state)들의 유한 집합

n Σ : 입력 심볼의 유한 집합

n δ : 사상 함수(mapping function)

nQ×Σ→2Q(power set of Q)

nδ(q, a) = {p1 ,p2 , . . . ,pn}

nq 상태에서 입력 a를 본 다음 상태는 p1부터 pn중

하나 선택

n q0 : 시작 상태(start 또는 initial state) (q0∈Q)

n F : 종결 상태의 집합 (F⊆Q)

Lecture04_RE_CFG 15

n 상태 전이 함수(state transition function)

n 결정적 유한 오토마타(Derteministic FA; DFA)

n 비결정적 유한 오토마타(Nonderteministic FA; NFA)

n DFA 정의

n 전이 함수 δ(q, a)가 다음 상태로서 오직 한 상태만 갖

는 경우

n δ(q, a) = {p}, δ(q, a) = p

Page 6: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 6

Lecture04_RE_CFG 16

DFA M = (Q, Σ ,δ, q0, F)n 구성 요소

n Q : 상태(state)들의 유한 집합

n Σ : 입력 심볼의 유한 집합

n δ : 사상 함수(mapping function)

nQ×Σ → Q

nδ(q, a) = p

nq 상태에서 입력 a를 본 다음 상태는 p.

n q0 : 시작 상태(start 또는 initial state) (q0∈Q)

n F : 종결 상태의 집합 (F⊆Q)

Lecture04_RE_CFG 17

n M = ( {q0, q1, q2}, {a, b} , δ, q0, {q2} )

δ(q0, a) = q1 δ(q0, b) = q2

δ(q1, a) = q2 δ(q1, b) = q0

δ(q2, a) = q0 δ(q2, b) = q1

n 상태수, 3개 : q0, q1, q2

n 입력 심볼 : a, b

n 시작 상태 : q0

n 종결 상태 : q2

Lecture04_RE_CFG 18

n 상태 전이표(transition table)

n FA의 전이 함수를 행렬(matrix) 형태로 표현

n 행과 열은 각각 상태 집합과 입력 심볼 표시

n 행과 열이 교차하는 위치 : 다음 상태

n 전이 함수에 대한 상태 전이표

δ a b

q0 q1 q2

q1 q2 q0

q2 q0 q1

Page 7: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 7

Lecture04_RE_CFG 19

n 전이 함수 확장

n Q×Σ→Q ⇒ Q×Σ*→Q

n 한 개의 심볼을 스트링으로 확장

nδ(q, ε) = q

nδ(q, xa) = δ( δ(q,x) , a)

n 상태 q0에서 스트링 aba를 인식

n δ(q0, aba) = δ(δ(q0, ab), a)

= δ(δ(δ(q0, a), b), a)

Lecture04_RE_CFG 20

n δ(q0, x) = p인 경우

n q0로부터 x를 본 다음 상태, p

n p가 종결 상태에 포함(p∈F)

n스트링 x는 M에 의해 인식(accept).

n 시작 상태에서 주어진 스트링을 다본 상태가 종결 상

태이면 스트링 인식

Lecture04_RE_CFG 21

n M에 의해 인식되는 언어, L(M)

n DFA M에 의해 인식되는 스트링 전체를 모아 놓은 집

n L(M) 정의

n L(M) = {x| δ(q0, x) ∈ F}.

Page 8: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 8

Lecture04_RE_CFG 22

n M = ( {p, q, r}, {0, 1}, δ, p, {r} )에 의한 스트

링 1001, 0110 인식 ?

n 오토마타 상태 전이표

δ 0 1

p q p

q r p

r r r

Lecture04_RE_CFG 23

n δ(p,1001)

=δ(p, 001) = δ(q, 01) =δ(r, 1) = r ∈ F

스트링 1001은 M에 의해 인식

n δ(p,0110)

=δ(p, 110) = δ(p, 10) = δ(p, 0) = q ∈ F

스트링 0110은 M에 의해 인식되지 못함

Lecture04_RE_CFG 24

상태 전이도(state transition diagram)n 상태 전이도

n 각 상태를 노드(node)로 표현

n 전이 함수 δ(q,a) = p

n상태 q에서 p로 이동, 레이블이 a인 지시선 사용

n 종결 상태 : 이중 원, 시작 상태 : start 지시선

n 상태 전이도 표현

n 스트링을 인식 과정을 표현한 흐름도

n 스트링을 받아 들이는 인식기를 고안하는데 사용

Page 9: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 9

Lecture04_RE_CFG 25

n 예 14(PP.80)에 대한 상태 전이도

n 예 16, 명칭에 대한 상태 전이도

start p q r0

1

1

0

0,1

start Sletter

letter, digit

A

Context-Free Grammar

Lecture04_RE_CFG 27

n 정규 문법n 간단한 패턴 기술에 적합

n 프로그래밍 언어의 구문 구조 표현에 부적합

n 토큰 구조

n정규 표현

n 프로그래밍 언어 문법 구조

nContext-Free Grammar; CFG

n Context-Free Grammar의 장점n 간단하고 이해하기 용이

n 표현된 문법으로부터 자동적으로 인식기 구현

n 입력된 프로그램의 구조를 생성 규칙에 의해 분해, 번역이 유용

Page 10: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 10

Lecture04_RE_CFG 28

n Context-Free Grammarn A → α 생성 규칙

n A : Nonterminal, α : V*

n A를 문맥에 관계없이 α로 대치

n context-free(문맥-자유 또는 문맥-무관)

Lecture04_RE_CFG 29

표기법(Notational Convention)n Terminal 심볼

n 알파벳 소문자(a, b, c, . . . ), 숫자( 0,1,2, ... ,9)

n 연산자 기호(+, - , . ..)

n 구분자(세미콜론, 콤마, 괄호)

n ' 와 ' 사이에 표기된 문법 심볼

n Nonterminal 심볼n 알파벳 대문자

n S, 시작 심볼(start symbol)

n < 와 > 로 묶어서 나타낸 문법 심볼

n <stmt>, <expr>

Lecture04_RE_CFG 30

n A→α1, A→α2, ... , A→αk

n 생성 규칙의 왼쪽이 모두 A인 경우

n A→α1|α2|...|αk, 택일(alternation) 규칙

n 예.

n E → EOE | (E) | -E | id

n O → + | - | * | /

<if_statement> -> 'if' <condition> 'then' <statement>

n< >안에 기술된 심볼, Nonterminal

n ‘ ‘사이에 기술된 심볼, Terminal

Page 11: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 11

Lecture04_RE_CFG 31

유도 및 유도 트리

n 문장 생성, In Context-free Grammarn 문장 형태의 스트링에 생성 규칙 반복 적용

n Nonterminal 확장

n 산술식

E → E+E | E*E | (E) | -E | id

n문장을 얻기 위해 시작 심볼 E로부터 반복적으로생성 규칙 적용

E ⇒ -E ⇒ - ( E ) ⇒ - ( id )

Lecture04_RE_CFG 32

n 생성 규칙 오른쪽, Nonterminal이 존재n 같은 문장을 유도하는 여러 가지 방법이 가능

n 유도시 대치해야 할 Nonterminal을 선택 ??

n여러 가지 경우가 존재

n 예. A ⇒ B C D

Lecture04_RE_CFG 33

좌측 유도 v.s 우측유도

n 좌측 유도(Left derivation)n 문장 형태의 가장 왼쪽에 있는 Nonterminal을 대치

n 좌문장 형태(Left-sentential form)

n 우측 유도(Right derivation)n 문장 형태의 가장 오른쪽에 있는 Nonterminal을 대치

n 우문장 형태(Right-sentential form)

Page 12: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 12

Lecture04_RE_CFG 34

n문장 -(id+id)가 유도되는 과정

n 좌측 유도

E ⇒ -E ⇒ -(E) ⇒ -(E+E) ⇒ -(id+E) ⇒ -(id+id).

n 우측 유도

E ⇒ -E ⇒ -(E) ⇒ -(E+E) ⇒ -(E+id) ⇒ -(id+id).

Lecture04_RE_CFG 35

좌파스 vs. 우파스

n 좌파스(left parse)n 좌측 유도에서 적용된 일련의 생성 규칙 순서.

n top-down parsing

n시작 심볼로부터터미널 생성(확장, expansion)

n 우파스(right parse)

n우측 유도에서적용된 생성 규칙 번호의 역순.

n bottom-up parsing

n터미널로부터넌터미널로 축약하여 시작심볼에도착(축약, reduce)

Lecture04_RE_CFG 36

n 예, a+a*a의 좌파스와 우파스1. E → E + T 2. E → T 3. T → T * F

4. T → F 5. F → (E) 6. F → a

E ⇒ E + T E ⇒ E + T1 1

⇒ T + T ⇒ E + T * F2 3

⇒ F + T ⇒ E + T * a4 6

⇒ a + T ⇒ E + F * a6 4

⇒ a + T * F ⇒ E + a * a3 6

⇒ a + F * F ⇒ T + a * a4 2

⇒ a + a * F ⇒ F + a * a6 4

⇒ a + a * a ⇒ a + a * a6 6

r좌파스 : 1 2 4 6 3 4 6 6.r우파스 : 6 4 2 6 4 6 3 1.

Page 13: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 13

Lecture04_RE_CFG 37

n 구문 분석기의 출력, 유도 트리n 문장의 유도 트리를 결정적으로 구성

n 모호하지 않은 문법(Unambiguous Grammar)

n 결정적 파싱(Deterministic Parsing)

n모호하지 않은 문법 구성

n모호한 문법을 모호하지 않은 문법으로 변환.

Lecture04_RE_CFG 38

CFG 표기법

n 문법 표기법n BNF(Backus-Naur Form)

n 확장된 BNF(EBNF, Extended-BNF)

n 문법 흐름도(Syntax diagram)

Lecture04_RE_CFG 39

n BNFn 프로그래밍 언어의 형식적 정의

n Nonterminal 심볼 : < 와 >

n Terminal 심볼 : ‘ 문자 ’

n 명칭(Identifier)에 대한 표현

<id> ::= <letter> | <id> <letter> | <id> <digit>

<letter> ::= a|b|c|...|y|z

<digit> ::= 0|1|2|...|8|9

n ::= : →

n | : 택일(alternation)

Page 14: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 14

Lecture04_RE_CFG 40

n EBNFn 반복, 선택적인 부분을 간결하게 표현

n 특수한 의미를 갖는 메타 심볼(meta symbol) 도입

n 메타 심볼(Meta Symbol)

n언어의 일부분이 아니라 언어를 표현하려고 사용된특수 심볼.

Lecture04_RE_CFG 41

n 반복 부분(repetitive part) 표현n { }

n {a}

n a가 영번 이상 반복

n 정규 표현 a*와 같은 의미

n 콤마로 구분되는 명칭 리스트 : BNF 및 EBNFn BNF

<id_list> ::= <id_list> , <id> | <id>

n EBNF

<id_list> ::= <id> { , <id> }

Lecture04_RE_CFG 42

n혼합문에 대한 BNF 및 EBNF 표현n BNF 표현<compound_statement> ::=

begin <statement_list> end

<statement_list> ::=

<statement_list> ; <statement> | <statement>

n EBNF 표현<compound_statement> ::=

begin <statement> { ; <statement> } end

Page 15: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 15

Lecture04_RE_CFG 43

n 반복되는 최대 회수와 최소 회수 지정

<external_name> ::= <alphabet> {<alphanumeric>}7

<alphanumeric> ::= <alphabet> | <digit>

<alphabet> ::= a|b|c|…|y|z

<digit> ::= 0|1|2|…|9

n중괄호 뒤의 0은 최소 회수, 7은 최대 회수

0

Lecture04_RE_CFG 44

n 선택적인 부분(optional part)n [ ]

n [x]

n x가 나타나지 않거나 한번만 나타날 수 있음

n [x]는 {x}1

n 예

<if_st> ::= if <cond> then <stat> [else <stat>]

Lecture04_RE_CFG 45

n 단순 변수, 일차원 배열 변수 BNF 및 EBNF 표현

n BNF 표현 :

<variable> ::= <id> | <id> '[' <exp> ']'

n EBNF 표현 :

<variable> ::= <id> [ '[' <exp> ']‘ ]

Page 16: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 16

Lecture04_RE_CFG 46

n 괄호와 택일 기호 : ( | )n 여러개의 생성 규칙을 간단히 표현

<exp> ::= <exp> + <exp> | <exp> - <exp> |

<exp> * <exp> | <exp> / <exp>

<exp> ::= <exp> ( + | - | * | / ) <exp>

Lecture04_RE_CFG 47

n EBNF 메타 심볼 vs. terminal 심볼n terminal 심볼을 '와 '로 묶어 표현

<BNF_rule> ::= <left_part> '::=' <right_part>

<right_part> ::= <right_part_element> { '|’<right_part_element> }

Lecture04_RE_CFG 48

n 문법 흐름도(Syntax diagram)n 문법을 도식화하여 표현

n초보자가 프로그래밍 언어의 문법을 쉽게 이해

n 구성

n사각형 :Nonterminal

n타원 : Terminal

n지시선 : 문법이 움직이는 경로(path)

Page 17: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 17

Lecture04_RE_CFG 49

n Nonterminal An 사각형 안을 A

n terminal의 경우와 같이 지시선

n 사각형의 내용은 그 안의 이름에 의해 참조

A

n Terminal an 타원안을 a

n 지시선으로 연결

a

Lecture04_RE_CFG 50

n 생성 규칙 A ::= X1 X2... Xn

n Xi가 Nonterminal인 경우

n Xi가 terminal인 경우

X1 X3 Xn...X2

...x1 x2 xnx3

Lecture04_RE_CFG 51

n A ::= α1|α2| . . . |αn

α1

αi

αn

A

Page 18: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 18

Lecture04_RE_CFG 52

r EBNF A ::= {α}

r EBNF A ::= [ α ]

α

A

α

A

Lecture04_RE_CFG 53

n EBNF A ::= ( α1 | α2 ) β

α2

A

α1

β

Lecture04_RE_CFG 54

푸시다운 오토마타

n 푸시다운 오토마타(Push-Down Automata; PDA)n 보조 기억장치를 가진 인식기.

n Context-Free Grammar 인식기.

n 구성n 유한 상태 제어(finite state control)

n전체의 행동 제어

n현재의 입력 심볼, 스택의 top 심볼에 따라 행동

n 입력 테이프(input tape)

n입력 스트링 유지

n 스택(stack)

n보조 기억장치, 푸시다운 리스트(push-down list)

Page 19: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 19

Lecture04_RE_CFG 55

n Push Down Automata, PDA

a1 a2 . . . an

Finite statecontrol

Input tape

Z1

stack

Z2

Zn

Lecture04_RE_CFG 56

n PDA P = (Q, Σ, Γ, δ, q0 , Z0, F)

n Q : 상태의 유한 집합

n Σ : 입력 알파벳의 유한 집합

n Γ : 스택 심볼의 유한집합

n δ : 사상 함수 Q × (Σ∪{ε} ) × Γ → Q × Γ*

n q0 ∈ Q : 시작 상태(start state)

n Z0 ∈ Γ : 스택의 시작 심볼

n F ⊆ Q : 종결 상태(final state)의 집합

Lecture04_RE_CFG 57

n 사상 함수(전이 함수) : δ, delta

δ(q, a, Z) = { (p1,α1), (p2,α2), . . . ,(pn,αn) }

n 현재의 상태 : q

n 입력 심볼 : a

n 스택 Top 심볼 : Z

n (pi,αi) 선택

n현재의 q 상태에서 입력 a를 본 다음 상태 : pi

n스택 top 심볼 Z를 αi로 대치.

Page 20: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 20

Lecture04_RE_CFG 58

n PDA 형태(configuration) : Pn 어떤 시점에서 PDA P의 현재 상태 표현 방법

n Q × Σ* × Γ* => Triple(q, ω, α)

nq : 현재 상태

nω : 읽지 않은 입력 부분

nα : 스택의 내용

n ω = ε인 경우, 모든 입력 심볼이 읽혀졌음

n P 에 의한 상태 이동(move) : |--

(q, aω, Zα) |-- (q', ω,Υα)

Lecture04_RE_CFG 59

n 인식(accept)

n 시작 상태에서 입력 스트링 ω를 다본 상태가 종결 상태에 도달

n "ω는 P에 의해 인식(accept)"

n P에 의해 정의되는 언어

n푸시다운 오토마타 언어 : L(P)

nP에 의해 인식되는 스트링의 집합

n L(P) = {ω|( q0,ω, Z0) |-- (q, ε, α), q∈F, α∈Γ*}

Lecture04_RE_CFG 60

n 언어 L = {0n1n|n≥1}을 인식하는 PDA

P = ( {q0, q1, q2}, {0, 1}, {Z, 0}, δ , q0, Z, {q0} )

δ(q0, 0, Z) = { (q1, 0Z) }

δ(q1, 0, 0) = { (q1, 00) }

δ(q1, 1, 0) = { (q2, ε) }

δ(q2, 1, 0) = { (q2, ε) }

δ(q2, ε, Z) = { (q0, ε) }

n 0에 대하여 차례로 스택에 모두 이동

n 1에 대하여 스택에 있는 0을 하나씩 팝(pop)

Page 21: Regular Expression and Context-free Grammarcompiler.sangji.ac.kr/lecture/plt/2015/Lecture04_Regular_cfg.pdf · Regular Expression and Context-free Grammar Programming Language Theory

Regular Expression and Context-free Grammar

Programming Language Theory 2015, [email protected] 21

Lecture04_RE_CFG 61

n 입력 스트링 0011에 대하여 P가 인식하는 과정

(q0, 0011, Z) |-- (q1, 011, 0Z)

|-- (q1, 11, 00Z)

|-- (q2, 1, 0Z)

|-- (q2, ε, Z)

|-- (q0, ε, ε)