Microsoft PowerPoint - PLT_ch04_KOR



Similar documents
3장 어휘분석

자연언어처리

컴파일러

Microsoft PowerPoint - PL_03-04.pptx

untitled

EA0015: 컴파일러

n 정의 정규표현 (Regular Expression) n 정규문법 G 를대수학적인성질로표현 n 정규언어에속해있는스트링의모양을직접기술 n 정규문법은문법이나타내는언어의형태를체계적으로구하여정규표현으로나타낼수있음. 정규문법 (Regular ) 정규표현 (Regular ) 유

Microsoft PowerPoint - chap5.ppt

lex-yacc-tutorial.hwp

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

商用

EA0015: 컴파일러

슬라이드 1


중간코드생성

Semantic Consistency in Information Exchange

종사연구자료-이야기방 hwp

목 차 국회 1 월 중 제 개정 법령 대통령령 7 건 ( 제정 -, 개정 7, 폐지 -) 1. 댐건설 및 주변지역지원 등에 관한 법률 시행령 일부개정 1 2. 지방공무원 수당 등에 관한 규정 일부개정 1 3. 경력단절여성등의 경제활동 촉진법 시행령 일부개정 2 4. 대

인천광역시의회 의원 상해 등 보상금 지급에 관한 조례 일부개정조례안 의안 번호 179 제안연월일 : 제 안 자 :조례정비특별위원회위원장 제안이유 공무상재해인정기준 (총무처훈령 제153호)이 공무원연금법 시행규칙 (행정자치부령 제89호)으로 흡수 전면 개

PowerPoint 프레젠테이션

형식 언어

< B5BFBEC6BDC3BEC6BBE E687770>

歯 조선일보.PDF

PowerPoint Presentation

1. 27 (token descriptions) (regular expressions), grep egrep.. C. 1),., C (expressions), (statements), (declarations), (blocks) (procedures). (parsing

DBPIA-NURIMEDIA

슬라이드 1

<30352DC0CCC7F6C8F B1B3292DBFACB1B8BCD2B1B3C1A42E687770>

3) 지은이가 4) ᄀ에 5) 위 어져야 하는 것이야. 5 동원 : 항상 성실한 삶의 자세를 지녀야 해. 에는 민중의 소망과 언어가 담겨 있다고 생각하기 때문 입니다. 인간의 가장 위대한 가능성은 이처럼 과거를 뛰어넘고, 사회의 벽을 뛰어넘고, 드디어 자기를 뛰어넘 는

<33C6E4C0CCC1F620C1A63139C8A320B8F1C2F72E687770>

Microsoft PowerPoint - semantics

4.18.국가직 9급_전산직_컴퓨터일반_손경희_ver.1.hwp

Microsoft PowerPoint - chap03-변수와데이터형.pptx

10김묘선

기사스크랩 (160504).hwp

산림병해충 방제규정 4. 신문 방송의 보도내용 등 제6 조( 조사지역) 제5 조에 따른 발생조사는 다음 각 호의 지역으로 구분하여 조사한다. 1. 특정지역 : 명승지 유적지 관광지 공원 유원지 및 고속국도 일반국도 철로변 등 경관보호구역 2. 주요지역 : 병해충별 선단

김기중 - 방송통신심의위원회 인터넷 내용심의의 위헌 여부.hwp

15강 판소리계 소설 심청전 다음 글을 읽고 물음에 답하시오. [1106월 평가원] 1)심청이 수궁에 머물 적에 옥황상제의 명이니 거행이 오죽 하랴. 2) 사해 용왕이 다 각기 시녀를 보내어 아침저녁으로 문 안하고, 번갈아 당번을 서서 문안하고 호위하며, 금수능라 비


LEET 추리논증 29번 유사 적중 - 기본교재 -P 다음 글로부터 추론한 것으로 옳은 것만을 에서 있 는 대로 고른 것은? 번역사 P는 고객 A, B, C로부터 문서를 의뢰받아 번역 일을 한 P는 하루에 10 쪽씩 번역한 모든 번역 의뢰는 매일 아침 업

며 오스본을 중심으로 한 작은 정부, 시장 개혁정책을 밀고 나갔다. 이에 대응 하여 노동당은 보수당과 극명히 반대되는 정강 정책을 내세웠다. 영국의 정치 상황은 새누리당과 더불어 민주당, 국민의당이 서로 경제 민주화 와 무차별적 복지공약을 앞세우며 표를 구걸하기 위한

<C1DF3320BCF6BEF7B0E8C8B9BCAD2E687770>

Microsoft PowerPoint - chap05-제어문.pptx

래를 북한에서 영화의 주제곡으로 사용했다든지, 남한의 반체제세력이 애창한다 든지 등등 여타의 이유를 들어 그 가요의 기념곡 지정을 반대한다는 것은 더 이상 용인될 수 없는 반민주적인 행동이 될 것이다. 동시에 그 노래가 두 가지 필요조 건을 충족시키지 못함에도 불구하고

부벽루 이색 핵심정리+핵심문제.hwp

> 1. 법 제34조제1항제3호에 따른 노인전문병원 2. 국민건강보험법 제40조제1항의 규정에 의한 요양기관(약국을 제외한다) 3. 삭제< > 4. 의료급여법 제2조제2호의 규정에 의한 의료급여기관 제9조 (건강진단) 영 제20조제1항의 규

노인복지법 시행규칙

DIY 챗봇 - LangCon

untitled

제4장 기본 의미구조 (Basic Semantics)

2005년 6월 고1 전국연합학력평가

05.PDF

슬라이드 1

<B8AEC6F7C6AEBAE4BEEE20C0CEBCE2>

진단, 표시・광고법 시행 1년

죄형법정주의2 20문 및 해설.hwp

2힉년미술

4) 이 이 6) 위 (가) 나는 소백산맥을 바라보다 문득 신라의 삼국 통 일을 못마땅해하던 당신의 말이 생각났습니다. 하나가 되는 것은 더 커지는 것이라는 당신의 말을 생각하면, 대동강 이북의 땅을 당나라에 내주기로 하고 이룩한 통 일은 더 작아진 것이라는 점에서,

0429bodo.hwp

伐)이라고 하였는데, 라자(羅字)는 나자(那字)로 쓰기도 하고 야자(耶字)로 쓰기도 한다. 또 서벌(徐伐)이라고도 한다. 세속에서 경자(京字)를 새겨 서벌(徐伐)이라고 한다. 이 때문에 또 사라(斯羅)라고 하기도 하고, 또 사로(斯盧)라고 하기도 한다. 재위 기간은 6

최우석.hwp

교사용지도서_쓰기.hwp

時 習 說 ) 5), 원호설( 元 昊 說 ) 6) 등이 있다. 7) 이 가운데 임제설에 동의하는바, 상세한 논의는 황패강의 논의로 미루나 그의 논의에 논거로서 빠져 있는 부분을 보강하여 임제설에 대한 변증( 辨 證 )을 덧붙이고자 한다. 우선, 다음의 인용문을 보도록

cls46-06(심우영).hwp

E1-정답및풀이(1~24)ok

< BDC3BAB8C1A4B1D4C6C75BC8A3BFDC D2E687770>

<C1B6BCB1B4EBBCBCBDC3B1E2342DC3D6C1BE2E687770>


<C0CEBCE2BABB2D33C2F7BCF6C1A420B1B9BFAAC3D1BCAD203130B1C72E687770>

민주장정-노동운동(분권).indd

untitled

과 위 가 오는 경우에는 앞말 받침을 대표음으로 바꾼 [다가페]와 [흐귀 에]가 올바른 발음이 [안자서], [할튼], [업쓰므로], [절믐] 풀이 자음으로 끝나는 말인 앉- 과 핥-, 없-, 젊- 에 각각 모음으로 시작하는 형식형태소인 -아서, -은, -으므로, -음

6±Ç¸ñÂ÷

<C3D6C1BE5FBBF5B1B9BEEEBBFDC8B0B0DCBFEFC8A C3D6C1BEBABB292E687770>

초등국어에서 관용표현 지도 방안 연구

177

제주어 교육자료(중등)-작업.hwp

¸é¸ñ¼Ò½ÄÁö 63È£_³»Áö ÃÖÁ¾

01Report_210-4.hwp

<C3D1BCB15FC0CCC8C45FBFECB8AE5FB1B3C0B0C0C75FB9E6C7E D352D32315FC5E4292E687770>



교육 과 학기 술부 고 시 제 호 초 중등교육법 제23조 제2항에 의거하여 초 중등학교 교육과정을 다음과 같이 고시합니다. 2011년 8월 9일 교육과학기술부장관 1. 초 중등학교 교육과정 총론은 별책 1 과 같습니다. 2. 초등학교 교육과정은 별책

시험지 출제 양식

우리나라의 전통문화에는 무엇이 있는지 알아봅시다. 우리나라의 전통문화를 체험합시다. 우리나라의 전통문화를 소중히 여기는 마음을 가집시다. 5. 우리 옷 한복의 특징 자료 3 참고 남자와 여자가 입는 한복의 종류 가 달랐다는 것을 알려 준다. 85쪽 문제 8, 9 자료

상품 전단지

::: 해당사항이 없을 경우 무 표시하시기 바랍니다. 검토항목 검 토 여 부 ( 표시) 시 민 : 유 ( ) 무 시 민 참 여 고 려 사 항 이 해 당 사 자 : 유 ( ) 무 전 문 가 : 유 ( ) 무 옴 브 즈 만 : 유 ( ) 무 법 령 규 정 : 교통 환경 재

2

DBPIA-NURIMEDIA

화이련(華以戀) hwp

ÆòÈ�´©¸® 94È£ ³»Áö_ÃÖÁ¾

歯1##01.PDF

<5BC1F8C7E0C1DF2D31B1C75D2DBCF6C1A4BABB2E687770>

120229(00)(1~3).indd

VISION2009사업계획(v5.0)-3월5일 토론용 초안.hwp

untitled

OCW_C언어 기초

Microsoft PowerPoint - chap04-연산자.pptx

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

Transcription:

Chapter 4 : 구문(Syntax) Lexical Structure Syntactic Structure: BNF, EBNF, Syntax Diagrams Parse Tree, Syntax Tree, and Ambiguity Parsing Techniques and Tools Lexics vs. Syntax vs. Semantics

Introduction 언어의 계층 구조, due to Chomsky ~ Regular Grammar : Type-3 ~ Context-Free Grammar(CFG) : Type-2 ~ Context-Sensitive Grammar : Type-1 ~ Unrestricted Grammar : Type-0 프로그래밍 언어의 구문적 구조 ~ 어휘 구조(structures of words) 정규 표현(regular expressions) ~ 문법 구조(structures of sentences) Context-Free Grammar BNF(Backus-Naur Form) kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 2

어휘 구조(Lexical Structure) Lexical Structure ~ 어휘(lexicon) = 토큰(token) ~ 토큰 : 문법적으로 의미를 가진 최소 단위 technically, a token is a set of words 정규 표현(Regular Expression) ~ 토큰의 패턴(pattern)을 기술하기 위해 사용 ~ frequently used for text searching kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 3

Token의 종류(categories) 일반 형태 ~ 프로그래머에 의해 결정 ~ 명칭(identifier) - stk, ptr, sum1, sum2 등 ~ 상수(constant) - 526, 2.3, 0.1234e-10, 'string' 등 특수 형태 ~ 언어를 정의할 때 언어 설계자가 정의 ~ 지정어(keyword) : begin, end, for, goto, if 등 ~ 연산자 기호(operator symbol) : +, -, *, /, <, := 등 ~ 구분자(delimiter) - ;,,, (, [, : 등 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 4

토큰의 개수? if X < Y then X := 10 ; 토큰 분류 ~ 일반 형태 : ~ 특수 형태 : 토큰 저장 형태 ~ (토큰 번호, 토큰값)의 순서쌍 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 5

The number of significant characters of identifiers mostly imposed ~ not by the language ~ but by the implementation 사전-정의 식별자(predefined identifier) ~ 처음 부여된 의미를 재정의 식별자의 길이 ~ 제한(=고정된 최대 크기) ~ 무제한 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 6

정규 표현(regular expression) 패턴 기술 언어(Pattern Description Language) ~ 토큰의 패턴을 기술하기 위한 표현 방법 Examples of Regular Expressions ~ sequence of digits [0-9]+ ~ unsigned floating-point literals [0-9]+(\.[0-9]+)? kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 7

정규 표현의 예 ~ 정규 표현 : ab * a가 나오고 b가 0번 이상 나오는 스트링 {ab n n 0} ~ 정규 표현 : (0+1) * {0,1} * ~ 정규 표현 : (a+b) * abb a와 b로 이루어지는 모든 스트링 뒤에 abb가 나오는 언 어 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 8

명칭(identifier)의 정규 표현 ~ 특정한 형태의 스트링을 표현하는데 유용 ~ letter={a,b,..., Z,a,b,...,z}, digit={0,1,2,..., 9} ~ letter(letter+digit) * kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 9

어휘 분석기(scanner) 토큰 인식(Token-Recognizing) 프로그램 ~ 스케너(scanner) 원시 프로그램을 읽어들여 토큰을 인식하고 (토큰번호, 토큰값)을 다음 단계인 구문 분석 단계에 전달 ~ 어휘 분석기 생성기 = 스케너 생성기 = LEX, flex 정규 표현의 기술된 스케너의 명세(specification)를 입력으로 받아 특정 언어에 대한 스케너 생성 Scanner Example (Figure 4.1) ~ token categories: TokenType ~ the scanner: TokenType gettoken(void) ~ the scanner driver: main() kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 10

렉스(LEX) 렉스 ~ 레스크(Lesk, M.E.), 1975 ~ 어휘 분석기 생성기, 컴파일러 자동화 도구 ~ 소스 프로그램에 대해 정규 표현으로 기술된 토큰을 찾아내 는 프로그램을 작성하는데 유용한 도구 렉스의 기능 ~ 입력 : 사용자가 정의한 정규 표현과 실행 코드 ~ 출력 : C 언어로 쓰여진 프로그램 => lex.yy.c 입력 스트림에서 정규 표현에 해당하는 토큰을 찾았을 때 실행 코드를 수행 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 11

렉스의 역할 Lex source (*.ᅵ) LEX input text lex.yy.c (scanner) tokens kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 12

렉스의 입력 렉스의 입력(lex source)의 구성 { 정의 부분 } %% { 규칙 부분 } %% { 사용자 부프로그램 부분 } %% 각 부분의 구분자 각 부분은 반드시 순서적으로 기술 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 13

<정의 부분> %{ %} /* This part is merely copied onto the generated program */ 이름1 치환식1 이름2 치환식2... 이름n 치환식n kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 14

%{ 와 %} 사이 ~ 실행 코드를 C 언어로 기술할 때 필요한 자료 구조, 변수, 상 수정의 ~ 렉스의 출력인 lex.yy.c의 앞 부분에 복사 이름 정의 부분 ~ 특정한 정규 표현을 하나의 이름으로 정의 ~ 정규 표현에 대한 마크로 이름 치환식 ~ 이름에 해당하는 정규 표현 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 15

예 L [a-za-z_] D [0-9] %% {L} ( {L} {D} )* return IDENT; [a-za-z_]([a-za-z_] [0-9])*로 확장 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 16

<규칙 부분> ~ 렉스 입력의 핵심 부분 ~ 규칙 ::= 정규 표현 + 실행코드 정규 표현 : 토큰의 형태를 표현 실행 코드 : 토큰이 인식되었을 때 처리할 행위 %% R 1 {A 1 } R 2 {A 2 } : R n {A n } kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 17

%% ~ 정의 부분과 규칙 부분을 구분하는 구분자 R i ~ 정규 표현 A i ~ 정규 표현에 대해 어휘 분석기가 해야 할 행위를 표현하는 실행 코드 ~ C 프로그램 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 18

규칙 부분의 예 integer printf("found keyword INT"); ~ 입력 스트림에서 문자열 integer를 매칭했을 때"found keyword INT"라는 메시지를 출력 <사용자 부프로그램 부분> ~ 렉스의 입력 작성시 사용되는 부프로그램을 정의 ~ 렉스에 의한 어떤 처리 없이 렉스의 출력인 lex.yy.c에 복사 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 19

렉스의 정규 표현 렉스의 정규 표현 ~ 텍스트 문자 + 연산자 문자 ~ 텍스트 문자 : 입력 스트림에서 실제로 매칭되는 부분 ~ 연산자 문자 : 반복 또는 선택 등을 나타내는 특수 문자 연산자 문자의 종류와 의미 ~ " \ [ ] ^ -?. * + ( ) $ / { } % < > kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 20

" (double quote) ~ " 사이에 있는 모든 문자는 텍스트 문자 ~ a "*" b => 문자열 a*b \ ~ 한개의 문자를 에스케이프 ~ 한개의 문자를 텍스트 문자로 취급하고자 하는 경우, 특 수 문자 앞에 덧붙임. ~ XYZ++에대한정규표현 ~ XYZ"++", "XYZ++", XYZ\+\+ kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 21

[ ] : 문자 클래스 정의 ~ [ a b c ] : a,b,c 중 한 문자 ~ [ ]내에 사용된 연산자 문자의 의미는 무시 ~ -, ^, \ 문자는 [ ]내에서 특별한 의미를 갖음 ~ - : 범위(range)를 나타내는 연산자 문자 [a-z]: a부터z사이의문자중한문자 [-+0-9] : 부호와 숫자를 포함하는 숫자 클래스 [A-Za-z0-9] : 영문자와 숫자중의 한 문자 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 22

^ : 여집합(complement) ~ [^*], *를 제외한 모든 문자 ~ [^a-za-z], 영문자를 제외한 모든 문자 \ : C 언어의 에스케이프 문자열 ~ [ \t\n] : 공백, 탭, 개행 문자중 하나 ~ [\40-\176] : ASCII 값 40인 공백(blank)부터 176인 ~(tilde)까지의 모든 인쇄 가능한 문자 클래스 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 23

* : 0번이상반복 ~ a* : a가0번이상반복 ~ [a-za-z][a-za-z0-9]* : 첫문자가 영문자인 단어 + : 한번이상반복 ~ a+ : 문자a가한번이상반복 ~ [a-z]+ : 소문자로 이루어진 단어? : 선택을 의미하는 연산자 ~ ab?c는 b가 선택적, abc 또는 ac kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 24

: 택일을 위한 연산자 ~ (ab cd) : ab 또는 cd를 인식 ~ 괄호, 복잡한 식을 표현 (ab cd+)?(ef)* : abefef, efefef, cdef, cddd 등 ('+' '-')[0-9]+ : 부호가 있는 정수 ^ : 라인의 시작에서만 인식 ~ ^abc : 라인의 시작에 문자열 abc가 나타났을 때에만 토큰 으로 abc를 처리 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 25

$ : 오직 라인의 끝에서만 인식 / : 접미 문맥을 명시 ~ ab/cd, ab 다음에 cd가 이어서 나타날 때만 ab가 토큰으 로처리. : ~.(period)는 newline 문자를 제외한 모든 문자 ~ "--".* 는 -- 부터 한 라인의 끝 { } : 정의된 이름을 치환식으로 확장 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 26

렉스의 실행 코드(actions) 실행 코드 부분 ~ 토큰이 인식되었을 때 수행해야 할 행위를 C 언어로 기술 ~ 인식되지 않은 모든 문자에 대해서는 입력을 출력으로 복사 ~ 널 문장(null statement) 어떤 행위도 수행할 필요가 없는 문자열에 대한 처리 ~ [ \t\n] ; 공백, 탭, 개행 문자를 입력에서 무시하고자 할 경우 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 27

yytext ~ 렉스의 전역 변수, 문자 배열형(character array) ~ 정규 표현에 의해 실제로 매칭된 문자열 값을 저장 [a-z]+ printf( %s, yytext) ; ~ 토큰 값이 필요한 경우, 변수 yytext의 내용을 사용 ~ 매칭된 문자열을 출력 ~ [a-z]+ ECHO ; kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 28

전역 변수 ~ yytext : ~ yyleng : 매칭된 문자열의 길이를 저장하고 있는 변수. 함수 ~ yymore() ~ 매칭된 문자열의 끝에 다음에 인식될 문자열 첨가 ~ yyless(n) ~ n개의 문자만을 yytext에 남겨두고 나머지는 다시 처리 하기 위하여 입력 스트림으로 되돌려 보내는 함수. kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 29

~ yywrap() 렉스가 입력의 끝을 만났을 때 호출하는 함수 정상적인 경우에 이 함수의 복귀값은 1 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 30

입출력 함수 ~ input() 입력 스트림으로부터 다음 문자를 읽는 함수. ~ output(c) 출력 스트림으로 문자 c를 내보내는 함수. ~ unput(c) 함수 input()에 의해 다시 읽혀지도록 문자 c를 입력 스 트림으로 되돌려 보내는 기능을 하는 함수. kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 31

스캐너 생성 및 동작 렉스를 이용한 스캐너 생성 과정 Lex source Lex lex.yy.c cc a.out library 사용법(usage) lex test.l cc lex.yy.c -o test -ll test < test.dat kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 32

4.2 Context-Free Grammar BNF Example (simple English sentences) (1) sentence noun-phrase verb-phrase. (2) noun-phrase article noun (3) article a the (4) noun girl dog (5) verb-phrase verb noun-phrase (6) verb sees pets kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 33

Terminologies ~ a grammar : a set of rewriting rules metasymbols:, ~ Nonterminals : LHS es of the arrow ~ Terminals : tokens (.) ~ the start symbol: a designated nonterminal, often the LHS of the first rule (sentence) kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 34

CFG generates languages 언어(language) ~ 언어 : 문장(sentences)의 집합 ~ 문장 : 연속된 터미널의 집합 유도(derivation) ~ 시작 심볼로부터 시작하여 생성 규칙을 적용하여 문장을 생 성하는 과정 ~ 우측 유도 vs. 좌측 유도 ~ CFG에 의해 기술된 언어는 유도를 통해 정의 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 35

Derivation Example sentence noun-phrase verb-phrase. article noun verb-phrase. the noun verb-phrase. the girl verb-phrase. the girl verb noun-phrase. the girl sees noun-phrase. the girl sees article noun. the girl sees a noun. the girl sees a dog. kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 36

CFG s can be 순환(recursive) Simple Repetition number number digit digit digit 0 1 2 3 4 5 6 7 8 9 Derivation Example number number digit number digit digit digit digit digit 2 digit digit 23 digit 234 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 37

Structure Repetition expr expr + expr expr * expr ( expr ) NUMBER NUMBER = [0-9]+ Derivation Example expr expr * expr ( expr )* expr ( expr + expr ) * expr... (2 + 3) * 4 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 38

4.3 Parse Tree Rationale ~ 동일한 문장을 생성하는 다양한 유도 과정이 존재 ~ number number digit digit digit digit 3 23 ~ number number digit digit digit 2 digit 23 number number digit digit 3 2 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 39

파스 트리(parse tree) ~ 시작 심볼로 부터 문장을 유도하는 과정을 트리 형태로 표 현 파스 트리 구성 ~ root node corresponds to the start symbol ~ internal nodes correspond to nonterminals ~ leaf nodes correspond to terminals kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 40

A xyz A x y z... kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 41

Abstract Syntax Tree 파스 트리의 단점 ~ 파스 트리에는 불필요한 비단말 노드가 존재 추상화 구문 트리(AST) ~ 파스 트리의 간결한(condensed) 표현 ~ 파스 트리의 불필요한 비단말 노드 제거 ~ 단말 노드가 내부(internal) 노드로 표현 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 42

Example of Parse Tree and AST expr expr ( ) expr * expr number expr + expr digit 4 * number number + 4 digit digit 2 3 2 3 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 43

4.4 모호성(ambiguity) 모호한 문법(ambiguity grammar) ~ 문장 생성에 대해 하나 이상의 유도 과정이 존재 ~ 생성된 문장이 유일한(unique) 의미를 갖지 않음 Dealing with Ambiguity ~ Semantics help in determining which parse tree is correct. ~ Often the grammar can be rewritten to make the correct choice kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 44

Example of Ambiguity Grammar: expr expr + expr expr * expr ( expr ) NUMBER Sentence: 2 + 3 * 4 expr expr expr + expr expr * expr NUMBER (2) expr * expr expr + expr NUMBER (4) NUMBER (3) NUMBER (4) NUMBER (2) NUMBER (3) kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 45

4.5 Extended BNF 배경 ~ BNF의 선택, 반복 부분 등을 보다 용이하게 표현하기 위해 새로운 메타 심볼 도입 ~ Additional Metasymbols [ ], 선택(optional) structures { }, 반복(repetitive) structures kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 46

반복 부분(repetitive part) 표현 ~ { } ~ {a} a가 영번 이상 반복 정규 표현 a * 와같은의미 콤마로 구분되는 명칭 리스트 : BNF 및 EBNF ~ BNF <id_list> ::= <id_list>, <id> <id> ~ EBNF <id_list> ::= <id> {, <id> } kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 47

선택적인 부분(optional part) ~ [ ] ~ [x] x가 나타나지 않거나 한번만 나타날 수 있음 [x]는 {x} 1 ~ 예 <if_st> ::= if <cond> then <stat> [else <stat>] kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 48

EBNF Examples 반복(repetition) ~ BNF: expr expr + term term ~ EBNF: expr term { + term } 선택(optional) ~ BNF: if-stmt if ( expr ) stmt if ( expr ) stmt else stmt ~ EBNF: if-stmt if ( expr ) stmt [ else stmt ] kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 49

Syntax Diagram 문법 흐름도(Syntax diagram) ~ 문법을 도식화하여 표현 초보자가 프로그래밍 언어의 문법을 쉽게 이해 ~ 구성 사각형 :Nonterminal 타원 : Terminal 지시선 : 문법이 움직이는 경로(path) kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 50

Syntax Diagram Examples Repetition ~ EBNF: expr term { + term } Optional ~ EBNF: if-stmt if ( expr ) stmt [ else stmt ] if-stmt if ( expr ) stmt else stmt kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 51

Nonterminal A ~ 사각형 안을 A ~ terminal의 경우와 같이 지시선 ~ 사각형의 내용은 그 안의 이름에 의해 참조 A Terminal a ~ 타원안을 a ~ 지시선으로 연결 a kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 52

생성 규칙 A ::= X 1 X 2 ~ X i 가 Nonterminal인 경우... X n X 1 X 2 X 3... X n ~ X i 가terminal인경우 x1 x2 x3... x n kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 53

A ::= α 1 α 2... α n α 1 A α i α n kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 54

EBNF A ::= {α} A α EBNF A ::= [ α ] A α kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 55

EBNF A ::= ( α 1 α 2 ) β α 1 A β α 2 kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 56

4.6 파싱(parsing) parsing 이란? ~ 소스 프로그램의 문법을 검사 ~ 오류 없는 프로그램에 대해 파스 트리 구성 파싱 방법의 종류(categories) ~ Top-down parsing 좌측 유도, 좌파스, 확장, recursive-descent parsing, LL parsing ~ Bottom-up parsing 우측 유도, 우파스, 축약(reduce), shift-reduce parsing kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 57

파서 생성기(parser generators) ~ 복잡한 파서를 자동 생성하는 도구 ~ YACC, Bison, kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 58

Scanner/Parser Generators scanner generator ~ produces a scanner code from the given regular expression specification file parser generator ~ produces a parser code from the given grammar specification file Typical Examples ~ Unix tools : LEX and YACC ~ GNU : Flex( Fast lex ) and Bison kkman@sangji.ac.kr (Sangji Univ., Fall Semester 2007) 59