(2) Lexical Analysis

CJY·2023년 3월 29일
0

컴파일러

목록 보기
2/8

Finite Automata

  • 유한한 상태의 집합으로 transition 규칙을 나타낸다.
  • transition 규칙은 하나의 상태에서 input을 받고 다른 상태로 넘어가는 것을 말한다.
  • 디지털 회로 설계를 위한 소프트웨어, 컴파일러의 lexical analyzer, 파일이나 웹의 키워드 찾는 text editor, communication 프로토콜과 같은 것에 이용된다.
    - on-off 스위치 모델링
    - 영단어 인식
    - vending머신 설계

Language

Alphabets

문자의 유한집합. 예를 들어 ASCII, Unicode, {0, 1}, {a, b, c} 등이 있다.
\sum로 나타낸다.

Strings

알파벳의 모음.
\sum^*은 스트링의 집합이다.
s\vert s \vert는 스트링 s의 길이를 의미한다.
ϵ\epsilon은 빈 스트링을 의미한다. ϵ\vert \epsilon \vert = 0.

예를 들어,
{0,1}\{0, 1\}^* = {ϵ,0,1,00,01,10,11,000,001,...}\{\epsilon, 0, 1, 00, 01, 10, 11, 000, 001, ...\}

Language는 \sum^*의 부분집합이다.

DFA (Deterministic finite automata)

  • QQ : 상태 유한 집합
  • \sum : 인풋 알파벳
  • δ\delta : transition 함수
  • q0q_0 : 시작 상태
  • FF : final state 집합

Transition function

두 개의 인자를 갖는다. state와 input symbol.
δ(q,a)\delta(q, a) = DFA에서 상태 qqaa를 받았을 때 가는 상태값

그래프

노드는 상태를 가르킨다.
화살표는 transition function이며 화살표에 쓰여 있는 값이 input symbol(=알파벳)이다.
받는 화살표가 있는 노드가 "start" state.
final state는 동그라미가 두개인 노드이다. 여러개 가능.

  • Q={X0,X1,X2,X3,X4}Q = \{X_0,X_1,X_2,X_3,X_4\}
  • ={0,1}\sum = \{0, 1\}
  • δ(X0,0)=X0\delta(X_0,0) = X_0
    δ(X0,1)=X1\delta(X_0,1) = X_1
    δ(X1,0)=X2\delta(X_1,0) = X_2
    δ(X1,1)=X3\delta(X_1,1) = X_3 등등
  • q0=X0q_0 = X_0
  • F={X4}F = \{X_4\}

테이블

transition table of DFA

State01
X0\rarr X_0X0X_0X1X_1
X1X_1X2X_2X3X_3
X2X_2X4X_4X0X_0
X3X_3X1X_1X2X_2
X4*\,X_4X3X_3X4X_4

화살표는 start state를 의미하고 *은 final state를 의미한다.

Language of a DFA

  • 모든 오토마타는 language를 정의한다.
  • A가 automaton이면 L(A)는 language를 의미한다.
  • L(A)는 start state에서 final state로 갈 수 있는 input 조합이다.
profile
열심히 성장 중인 백엔드

0개의 댓글