3. 언어 집합
• 추론 규칙
• 공리: a 문자열은 Simple의 원소
여기에 수식을 입력하십시오.
• 𝑎 ∈ 𝑆𝑖𝑚𝑝𝑙𝑒
• 추론 규칙:
• 만약 w 문자열이 Simple의 원소라면
wb 문자열도 Simple의 원소
•
𝑤 ∈ 𝑆𝑖𝑚𝑝𝑙𝑒
𝑤𝑏 ∈ 𝑆𝑖𝑚𝑝𝑙𝑒
• 귀납 정의
• 무한 집합을 유한하게 표현하는 방법
• 생성 규칙 :
• 화살표 좌변의 기호열을 우변의 기호열로
교채(대치) 할 수 있음을 의미
• S -> a
• S -> Sb
• 문장 abb가 Simple의 원소임을 증명하
는 유도(derivation)
• S -> Sb -> Sbb -> abb
• 문장 형태 (Sentential form) :
• 시작기호로부터 문장에 이르기까지
유도에 등장하는 기호열
4. 언어의 문법
• 정형 문법 G=(T.N.S.P)
• ex) G1
• 터미널 기호 집합 T (⊆ ∑) :
• ex) T={a, b}
• 넌터미널 기호 집합 N
• ex) N = {S}
• 시작 기호 S (∈ N)
• ex) S
• 생성규칙의 집합 P
• ex) P = {S->a, S->Sb} = {S=> a | Sb}
• BNF(Backus-Naur Form)
• 프로그래밍 언어의 문법을 표현하기 위한 표
기법
• Algol60 정의에 처음 사용함
• 프로그래밍 언어의 대부분을 표기하기 위해
사용함
• 앞에서 표현된 생성규칙을 포함하여 다양한
변형이 존재함
(-> vs ::=, <> vs 대문자 표시)
• EBNF(Extended BNF)
• BNF 표기법에 다양한 매크로를 추가하여
편리하게 사용할 수 있도록 함
• 반복 {} : 0번 또는 그 이상
• 옵션 [] : 한 번 나오거나 나오지 않음을 의미
• 다중선택 () : 여러 개에서 하나를 선택
언어 Simple의 알파벳 ∑ = {a, b}
Simple = {a, ab, abb, abbb, abbbb, …}
Simple ⊆ ∑*
Simple = { w | 문자열 w는 어떤 조건을 만족한다.}
= { w | 문자열 w는 맨 앞에 a가 나오고
그 다음에 0개 이상의 b가 나온다}
5. 언어 분류
• Chomsky의 분류
• 타입 0 : 무제한 문법 (Unrestricted Grammar)
• Ex) 𝞪 -> 𝞫 생성규칙 형태에 제한이 없음
• 타입 1 : 문맥 민감 문법 (Context Sensitive Grammar)
• Ex) 𝞪A𝞫 -> 𝞪𝞬𝞫 𝞪와 𝞫에 둘러싸였을 때만 A를 𝞬로 대치
할 수 있음
• 타입 2 : 문맥 자유 문법 (Context Free Grammar)
• Ex) A -> 𝞪 언제든지 A를 𝞪로 대치할 수 있음
• 타입 3 : 정규 문법 (Regular Grammar)
• Ex) A -> a | Ba A를 단 하나의 터미널이나 넌터미널 하나
와 터미널 하나로 된 문장 형태로 대치할 수 있음
• 타입 i+1는 타입 i의 특수한 형태임.
• 따라서 단계적인 포함 관계를 가진다. 3 ⊆ 2 ⊆ 1 ⊆ 0
문법 언어 인식 기계
타입 0 : 무제한 문법 재귀나열 언어
(Recursively Enumerable
Language)
튜링 기계
(Turing Machine)
타입 1 : 문맥 민감 문
법
문맥 민감 언어
(Context-Sensitive
Language)
선형 바운드 오토마타
(Linear-Bounded
Automata)
타입 2 : 문맥 자유 문
법
문맥 자유 언어
(Context-Free Language) 푸쉬다운 오토마타
(Push-Down Automata)
타입 3 : 정규 문법 정규 언어
(Regular Language)
유한 상태 기계
(Finite State Machine)