토큰 인식을 위한 구현
정규식의 형태로 지정된 패턴을 기반으로 입력을 Accept/Reject 함
Finite Automata 정의
M={Q,Σ,δ,q0,F}
state들의 유한집합 Q={q0,q1,q2,…,qi}
입력 기호의 집합, 입력 알파벳 Σ
초기 state q0
최종 state F (F⊂Q)
state transition function δ
: δ(q0,a)=q1 -> q0에서 a 입력되면 q1으로 transition
그래프/도표 표기

(왼쪽이 transition graph, 오른쪽이 transition table)
- epsilon-move: input 없이 이동할 수 있는 경우이다.

DFA vs NFA
- DFA: Deterministic Finite Automata
(대부분) 하나의 state와 하나의 input symbol에 대해 하나의 transition만 존재.
ε-move 금지
빠른 실행
- NFA: Non-deterministic Finite Automata
하나의 state와 하나의 input symbol에 대해 여러 transition 존재 가능
ε-move 가능
빠른 구현
McNaughtom-Yamada-Thompson alghrithm (aka Thomson's construction)
각 부분을 구현하고, ε-move로 묶는다.
-
| r1r2 | r1∥r2 | r1∗ |
|---|
 |  |  |
NFA - DFA 변환
-
start state q0N로 부터, ϵ−closure(q0N) 계산
T0=ϵ−closure(A)={A,B,C}
-
s∈Σ에 대해 ϵ−closure(δ(T0,s)) 계산
T1=ϵ−closure(δ(T0,a))=ϵ−closure(D)={D,F,G}
T2=ϵ−closure(δ(T0,b))=ϵ−closure(E)={E,F,G}
-
새로운 결과가 안나올 때 까지, Ti에 대해 2번 과정 반복
T3=ϵ−closure(δ(T1,a))=ϵ−closure(H)={H}
ϵ−closure(δ(T1,b))=∅
ϵ−closure(δ(T2,a))={H}(=T3)
ϵ−closure(δ(T2,b))=∅
ϵ−closure(δ(T3,a))=∅
ϵ−closure(δ(T3,b))=∅
-
표 작성

-
내용을 바탕으로 NFA 작성
