2. 형식언어 (Formal Language)

Slides:



Advertisements
Similar presentations
CHAPTER 5 TOP-DOWN PARSING SUNG-DONG KIM, DEPT. OF COMPUTER ENGINEERING, HANSUNG UNIVERSITY.
Advertisements

 수학 10- 나  1 학년 2 학기  Ⅰ. 도형의 방정식 1. 평면좌표 (1/24) 두 점 사이의 거리 수업 계획 수업 활동.
제 5 강 근대수학의 여명 무리수 (Irrational number) 인도, 아라비아 (0 과 음수 ) 데카르트 - 해석기하학.
제 5 장 구문 정의  프로그래밍 언어의 기본 문자 집합  Alphabet 문자 (A-Z) 26 개 + 아라비아 숫자 (0 - 9) 10 개  예 ) Fortran : 기본 문자 집합 + 13 개의 특수문자 (=+ - * / ( ),. $ ‘ : 공백 ) Algol60.
C-aC-bA-bB-aB-bB-cA-aA-c A. Head Section. A-b B-a B-b B-c C A-a A-c Top page.
문자코드 1 박 2 일 (4 조 ) 이경도 이준집 이수연 엄태규. 문자코드란 ? 문자나 기호를 컴퓨터로 다루기 위하여, 문자나 기호 하나하나에 할당 시키는 고유의 숫자를 말하는 것이다.
언어와 문법 (languages, grammar)
컴파일러 입문 제 7 장 LL 구문 분석.
컴파일러 입문 제 5 장 Context-Free 문법.
Compiler Lecture Note, Inroduction to FL theory
DS020 오토마타형식언어 Chapter 3. Regular Languages and Regular Grammars
3주 강의 Lexical Elements, Operators, and the C System
Compiler Lecture Note, Inroduction to FL theory
제 4 장 구문 분석.
해시 함수.
제 7 장  LR 파서.
1. 컴파일러 개론 1-1. Compiler 정의 1-2. Language Processing System
유한 오토마타 Finite Automata
제  2 장  어휘 분석.
제 4장 프로그래밍 언어의 구문과 구현 기법 4.1 언어 구문 4.2 프로그래밍 언어 구현 기법.
3장 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
차량용 교류발전기 alternator Byeong June MIN에 의해 창작된 Physics Lectures 은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 3.0 Unported 라이선스에 따라 이용할 수 있습니다.
Discrete Math II Howon Kim
2. 형식언어 (Formal Language)
문법과 언어.
오토메타 형식언어 2003년도 제 2학기.
부울대수(Boolean Algebra)
형식언어와 유한상태기계.
DS020 오토마타형식언어 Chapter 6. Simplification of Context-Free Grammars and Normal Forms Exercises October 16, 2003.
제 5장. Context-Free Languages
Tel : Office : 2공학관 408호 오토마타 및 형식언어 김 현 성 Tel : Office : 2공학관 408호
제10장 오토마타, 문법, 언어 오토마타 이론과 컴퓨터 관련 학문 오토마타와 관련된 3가지 개념 유한 오토마타 오토마타의 응용
3강 한글 맞춤법 총칙.
Sung-Hae Jun 자연어 처리의 이해 Sung-Hae Jun
Chapter 7. PUSHDOWN AUTOMATA Exercises
6. 구문 분석 (syntax analysis)
Discrete Math II Howon Kim
주요 내용 형식 언어와 문법 정규식과 정규 집합 유한 상태 기계 정규 문법과 유한 상태 기계와 정규집합.
컴퓨터 구조 2장. 논리회로의 활용.
3. 정규 언어(Regular Language)
디 지 털 공 학 한국폴리텍V대학.
이산수학 논리∙명제에서 알고리즘까지 √ 원리를 알면 IT가 맛있다 ehanbit.net.
이재상 기본 논리회로와 불의 대수 이재상
우리생활속의 확률 이용사례탐구 한림초등학교영재학급 6학년 김수민.
학습목표 CFL을 accept하는 오토메타인 pda를 이해 npda와 dpda의 차이를 compiler의 측면에서 학습
7. LL 구문 분석 7-1. 결정적 구문 분석 7-2. Recursive-descent 파서 7-3. Predictive 파서 7-4. Predictive 파싱 테이블의 구성 7-5. Strong LL(k) 문법과 LL(k)문법.
5. Context-free 문법 5-1. 서 론 5-2. 유도와 유도 트리 5-3. CFG표기법.
학습목표 Pumping Lemma와 Closure 특성을 통해 CFL와 Language Family간의 관계 이해
자연어 처리 (Natural Language Processing) (Lecture Note #27)
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
Discrete Math II Howon Kim
3. 정규 언어(Regular Language)
Regular Expression 1 Powerful pattern matching with regular expression to a string while () { if ( /ab*c/ ) { print $_; } } substitute operator s/abc*c/def/;
인천공항 스카이 허브라운지 상세페이지  배송비 부분에서 B2B, B2C 두가지 버전이 필요하며,
합집합과 교집합이란 무엇인가? 01 합집합 두 집합 A, B에 대하여 A에 속하거나 B에 속하는 모든 원소로 이루어진 집합을 A와 B의 합집합이라고 하며, 기호 A∪B로 나타낸다. A∪B ={x | x∈A 또는 x∈B}
Discrete Math II Howon Kim
4. 어휘 분석(Lexical analysis)
2nd day Indexing and Slicing
Regular Expression 1 Powerful pattern matching with regular expression to a string while () { if ( /ab*c/ ) { print $_; } } substitute operator s/abc*c/def/;
Chapter 5. Context-Free Language Exercises
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
진리 나무 Truth-tree  ∧ ∨ → ↔  =.
하노이 탑 두세요 투노이 탑 주세요 두세요 주세요
노동조합 활동 사례 희망연대노동조합.
엔화 대환/대출 자금용도 대상 이자 차액 효과 (A,B,C) 환율 리스크 헷징 (A,B) 엔화의 평균환율 (A,B,C)
제 3장. Regular Languages 와 Regular Grammars
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
(Permutations and Combinations)
문제의 표현 Ai3.
표준화 이론 표준형 구조나무 표준화 정리  ∧ ∨ → ↔  =.
Presentation transcript:

2. 형식언어 (Formal Language) 2-1. 형식 언어의 정의 2-2. 형식 언어의 문법 (Formal Grammar) 2-3. 형식 언어의 문법의 분류

2-1. 형식언어의 정의 언어(language) : “ 특별한 사회, 국민 또는 민족에 의해 사용되는 단어들의 모임, 그리고 그들을 결합시키는 방법의 모임” 형식언어( formal language) : 일상 생활의 언어와는 달리 기호(symbol)들을 인위적으로 결합시켜 만든 것  잘 정의된 언어(well-defined Language) 형식언어의 정의 : 몇 개의 수학적 구조와 함께 기호적 스트링(Symbolic string)들로 구성 computer 언어와 compiler 설계에 응용됨 Automata 이론과 관련 P. L.은 형식언어의 한 예

Alphabet T : Symbol들의 유한 집합 정의 2.0 Symbol : 언어에 있어서 가장 기본이 되는 요소(character, 문자), 더 이상 세분화될 수 없는 것 (예) 0, 1, ㄱ, A, a, +, , ····· 정의 2.1 Alphabet T : Symbol들의 유한 집합 (예) T1 = {0, 1} , T2 = {ㄱ,ㄴ,·····,ㅎ,ㅏ,ㅑ,····,ㅡ,ㅣ} T3 = {a,b, c,····· z}, T4 = {auto,break, case,····· while} 정의 2.2 String : Alphabet T에 속하는 Symbol이나 T에 속하는 하나 이상의 Symbol 연결 (예) T = {a, b}일 때 a, b, aa, ab, ba, bb, aaa, ·····

정의 2.3 정의 2.4 String의 길이 : String을 이루는 Symbol의 개수 (예)  = 0110 || = 4 u = dog |u| = 3  = house || = 5 정의 2.4 String 접속(Concatenation) : String을 연속으로 연결 해 놓은 것 u = a1····· an,  = b1·····bn 일 때 u· = a1·····anb1·····bn, |u| = |u| + || = n + m u   u (교환법칙 성립 안 함) (예) u = dog, |u | = 3,  = house, | | = 5 u· = u = doghouse |u | = 8

정의 2.5 empty string : 길이가 0인 string , 문자열이 없는 것 (epsilon), (lambda), (null)로 표현 || = || =|| = 0 (예) u = u = u , u = u, dog··house = doghouse an : a가 n개 연결된 string을 표시 (예) a5 = aaaaa a0 : empty String R : String의 역순 (예)  = abc R = cba  = 12····n R = n···· 21

정의 2.6 T* : empty string을 포함한 T에 속하는 Symbol로 이루어질 수 있는 모든 string의 집합 (예) T = {0, 1} T* = {, 0, 1, 00, 01, 10, 11, 000, ···} T+ : T* - {} (예) T = {a, b} T+ = {a, b, aa, ab, ba, bb, aaa, aab, ··· } 정의 2.7 Alphabet T에 대하여 언어 L은 T*의 부분집합이다. (예) T = {a, b} L1 = T* = {, a, b, ab, ba, ···} L2 = { a, ba, aba} L3 = {ap | p는 소수(prime number)} L4 = {anbn | n 1 } <P44 예제 2.5>

(예) L = {a, ba, aab} 정의 2.8 : 두 언어 L과 L´의 곱 (Product) : L·L´ L·L´ = LL´ = {xy | x L, y  L´}  L´L (예) L = {a, b} , L´ = { ab, bc, cc} LL´ = {a,b}·{ab, bc, cc} = {aab, abc, acc, bab, bbc, bcc} <P44 예제 2.6> 정의 2.9 : 언어 L의 거듭 제곱(Power)은 순환적으로 정의 L0 = {}, Ln = L·Ln-1 for n  1 (예) L = {a, ba, aab} L0 = {} L1 = {a, ba, aab} L2 = L·L = {a, ba, aab}·{a, ba, aab} = {aa, aba, aaab, baa, baba, baaab, aaba, aabba, aabaab}

언어 L의 L* (reflexive transitive closure) 정의 2.10 : 언어 L의 L* (reflexive transitive closure) L* = L0L1L2·····Ln···· = Li 정의 2.11 : 언어 L의 L+ (transitive closure) L+ = L1L2L3·····Ln···· = L*  L0 (예) l = {A,·····,Z} , d = {0,····,9} ld = {A,·····,Z}·{0,····,9} = {A0, A1, ·····, A9, B0, B1, ···· B9, C0, ····, Z0, ···· ,Z9} : 하나의 영문자와 숫자 하나와의 조합을 표시 l l : 두 개의 영문자 l 4 : 4자리의 영문자  L*는 엘 스타(L star)로, L+는 엘 대거(L dagger)로 읽는다 i=0

2-2. 형식언어의 문법(Formal Grammar) 정의 2.12 G = ( VN, VT, P, S ) VN : non-terminal Symbol의 유한집합 VT : teminal Symbol의 유한집합 VN VT =  V(Vocabulary) = VN  VT P : 생성규칙의 유한집합    (유도)  V+   V* S : start Symbol S  VN

예제 VN = {<sentence>,<subject>,<verb>,<object>,<noun><article>} VT = {The, Boy, Girl, Loves, .} S = <sentence> P : 1. <sentence>  <subject><verb><object>. 2. <subject>  <article><noun> 3. <object>  <article><noun> 4. <verb>  Loves 5. <article>  The 6. <noun>  Boy | Girl derivation(replacement:유도) <sentence> => <subject><verb><object>. => <article><noun><verb><object>. => The <noun><verb><object>. => The Boy <verb><object>. => The Boy Loves <object>. => The Boy Loves <article><noun>. => The Boy Loves The <noun>. => The Boy Loves The Girl. Left most derivation Top-down방식 Right most derivation Bottom-up방식 Sentential Form Sentence

정의 2.13  derivation(유도) : 한 String에서 생성규칙을 한 번 적용해서 다른 Sting으로 바뀌어진다.  : 한번이상 유도  : 0번 이상 유도 < 예제 1> G = ({S, A},{a, b}, P, S) P : S  aAS S a A SbA A ba A SS i) S => a ii) S => aAS => abaa < 예제 2> (P48 예제 2.9) P : S  aA | bB | A  bS B aS i) S => aA => abS => ab + * ii) S => bB => baS => ba iii) S => aA => abS => abbB => abbaS => abba

정의 2.14 정의 2.15 L(G) : 문법 G에 의해 생성되는 언어 * sentential form(문장형태) : S => ,  V* sentence (문장) :   VT 문장형태 중 nonterminal symbol을 포함하지 않은 것 정의 2.15 L(G) : 문법 G에 의해 생성되는 언어 L(G) = { | S  ,  VT }  <예제 3 > (P48 예제 2.11) G1 = ({S}, {a}, P, S) P : S a | aS i) S => a ii) S => aS => aa iii) S => aS => aaS => aaa L(G1) = { an | n 1} : L(G) 는 시작 심벌로부터 유도될 수 있는 모든 문장의 집합 * * * *

주어진 문법으로부터 생성되는 언어를 찾는 과정은 일정한 규칙이 없기 때문에 반복적인 연습이 필요하다. <예제 4> (P50 예제 2.12) G2 = ({O, E} , {a}, P, O) P : O a O  aE E  aO i) O => a ii) O => aE => aaO => aaa iii) O => aE => aaaE => aaaaO => aaaaa L(G2) = {a2n+1 | n 0} < 예제 5> (P51 예제 2.13) G3 = ({A, B, C}, {a, b, c}, P, A) P : A abc A  aBbc Bb  bB Bc  Cbcc bC  Cb aC  aaB aC  aa i) A => abc ii) A => aBbc => abBc => abCbcc => aCbbcc => aabbcc L(G3) = {anbncn | n 1} 주어진 문법으로부터 생성되는 언어를 찾는 과정은 일정한 규칙이 없기 때문에 반복적인 연습이 필요하다.

문법 작성 : 특정한 형태의 언어를 생성하는 문법을 만드는 일 <예제 1> (P53 예제 2.14) L1 = {anbn | n 1}을 생성하는 문법 i) 같은 수의 terminal symbol을 생성해야 하므로 nonterminal symbol이 terminal symbol사이에 내장되어 있어야 한다. S  aSb (embedded 생성규칙) ii) 최소한의 terminal symbol은 nonterminalsymbol을 필요로 하지 않기 때문에 따로 구분지어 주어야 한다. S  ab  S  aSb | ab

< 예제 2> (P53 예제 2.15) L2 = {0i1j | ij, i, j  1} 1) i > j 일 때, 0이 많은 경우 같은 수의 0과 1을 생성하고 남은 0을 생성을 하면 된다. S  0A1 A  0A1 | 0A | 0 2) i < j 일 때, 1이 많은 경우 같은 수의 0과 1을 생성하고 남은 1을 생성을 하면 된다. S  0B1 B  0B1 | B1 | 1   S  0A1 | 0B1 주어진 문법으로부터 생성되는 언어는 유일하지만, 주어진 언어를 생성하는 문법은 다양한 형태가 될 수 있다.

2-3. 형식 언어의 문법의 분류(p57) Chomsky 4 type Grammar : 생성 규칙의 형태에 따라 구분 Type 0(Unrestricted Grammar) 생성 규칙에 어떤 제한도 두지 않는다. < 예제 > bc  b Type 1(Context-sensitive Grammar :csg) 모든 생성규칙    에서 의 길이가 의 길이보다 길다 . 즉, ||  || <예제> P : A  abc A  aABc Bb  BC CB  cc bc  c (X)

Type 2 (Context-free Grammar:cfg) A : 하나의 nonterminal symbol만 가능,   V* < 예제> L(G2) = {anban | n 1} G2 = ({S, C}, {a, b}, P, S), P : S  aCa C  aCa C  b <P58 예제 2.17 ~ P60 예제 2.18 참조>

Type 3(Regular Grammar : rg : 정규문법) 왼쪽에 하나의 nonterminal symbol이 오고, 오른쪽도 최대한 하나의 nonteminal symbol이거나 teminal symbol로 구성 A  tB A  t t  VT* A,B  VN (right linear regular grammar) A  Bt A  t t  VT* A,B  VN (left linear regular grammar) <예제> L(G3) = {anbam | n, m 1} G3 =({S,B,C}, {a,b}, P, S), P : S  aS S  aB B  bC C  aC C  a

 언어의 포함관계  문법형태에 따른 언어와 인식기 정규언어 Context-free 언어 Context-sensitive 언어 Unrestricted 언어  언어의 포함관계  문법형태에 따른 언어와 인식기