5. Context-free 문법 5-1. 서 론 5-2. 유도와 유도 트리 5-3. CFG표기법.

Slides:



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

학교 자체평가의 실제 신 동 한. 목 차  표지 제목  학교 소개  평가위원회 구성  지표별 평가의 실제  학교 자체평가의 향후 반영 계획  설문지 처리.
Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
제 5 장 구문 정의  프로그래밍 언어의 기본 문자 집합  Alphabet 문자 (A-Z) 26 개 + 아라비아 숫자 (0 - 9) 10 개  예 ) Fortran : 기본 문자 집합 + 13 개의 특수문자 (=+ - * / ( ),. $ ‘ : 공백 ) Algol60.
목 차 Context Of Presentation 검토 배경 IT 산업의 정의 및 특징 우리나라 IT 산업의 현황
컴파일러 입문 제 7 장 LL 구문 분석.
컴파일러 입문 제 5 장 Context-Free 문법.
3주 강의 Lexical Elements, Operators, and the C System
/ 4강_연산자 4-1 할당연산자 4-2 사칙연산자 및 나머지 연산자 4-3 자동증감 연산자 4-4 비교 연산자 4-5 논리 연산자 4-6 부정 연산자 4-7 복합대입 연산자 /
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++로 프로그래밍한다는 것의 의미 세상에서 가장 간단한 C++ 프로그램
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++ 프로그래밍 기초 : 객체지향의 시작 C++로 프로그래밍한다는 것의 의미
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
1. 컴파일러 개론 1-1. Compiler 정의 1-2. Language Processing System
제 4장 프로그래밍 언어의 구문과 구현 기법 4.1 언어 구문 4.2 프로그래밍 언어 구현 기법.
제 4장 프로그래밍 언어의 구문과 구현 기법 4.1 언어 구문 4.2 프로그래밍 언어 구현 기법.
제2장 구문(Syntax) Reading Chap 4 © 숙대 창병모.
4장 구문(Syntax).
3장 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
Chapter 4 – 프로그래밍 언어의 구문과 구현 기법
2. 형식언어 (Formal Language)
프로그래밍언어론 2nd edition Tucker and Noonan
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
4장 어휘 / 구문 분석 (Term project 포함)
Regular Expression and Context-free Grammar
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
형식언어와 유한상태기계.
프로그래밍 언어 프로그래밍 언어의 개요 프로그래밍 언어의 구문 정의 변수와 영역 자료형 조건문과 반복문 부프로그램
컴퓨터 개론 √ 원리를 알면 IT가 맛있다 쉽게 배우는 컴퓨터 기본 원리 한빛미디어 교재출판부.
장. 문법 구조(Syntax) 컴퓨터공학과 권기태 프로그래밍언어론.
Lesson 6. 형변환.
제 5장. Context-Free Languages
제3장 스택과 큐.
6. 구문 분석 (syntax analysis)
Chapter 06. printf 함수와 scanf 함수 정리하기
주요 내용 형식 언어와 문법 정규식과 정규 집합 유한 상태 기계 정규 문법과 유한 상태 기계와 정규집합.
Homework #5 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
6장. printf와 scanf 함수에 대한 고찰
2. 형식언어 (Formal Language)
JA A V W. 03.
자바 5.0 프로그래밍.
어서와 C언어는 처음이지 제14장.
Lesson 4. 수식과 연산자.
Data Structure Study Summer vacation
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
☆ASCII☆ 김연주.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
연산자 (Operator).
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
프로그래밍언어론 2nd edition Tucker and Noonan
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/;
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
자바 5.0 프로그래밍.
6.4 타입 검사 (Type Checking).
8장. 조건에 따른 흐름의 분기. 8장. 조건에 따른 흐름의 분기 8-1 흐름의 분기가 필요한 이유 상황에 따른 프로그램의 유연성 부여 그림 8-1.
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
에어 PHP 입문.
10. 중간언어의 생성 소 개 문법-지시적 변환 코드 생성 U-코드 번역기.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
3D 프린팅 프로그래밍 03 – 도형 회전 (손잡이컵 만들기) 강사: 김영준 목원대학교 겸임교수.
Tensorboard in Windows
Chapter 10 데이터 검색1.
3.2 분기 명령어.
Numerical Analysis Programming using NRs
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
제2기 지역사회복지계획 수립, 추진 및 평가 사 례 발 표
Presentation transcript:

5. Context-free 문법 5-1. 서 론 5-2. 유도와 유도 트리 5-3. CFG표기법

5-1. 서 론 프로그래밍언어의 구조를 Context-free문법으로 표현 시 장점 간단하고 이해하기 쉽다. 5-1. 서 론 프로그래밍언어의 구조를 Context-free문법으로 표현 시 장점 간단하고 이해하기 쉽다. 표현된 문법으로부터 자동적으로 인식기를 구현 입력된 프로그램의 구조를 생성규칙에 의해 분해 할 수 있으므로 번역에 유용

문법 심벌들의 일반적인 표기법 Terminal 심벌 Nonterminal 심벌 a, b, c와 같은 알파벳 시작 부분의 소문자와 숫자 0,1,2,…,9; +, -와 같은 연산자 기호와 세미콜론, 콤마, 괄호와 같은 구분자 ‘if’또는 ‘then’과 같이 ‘과 ’사이에 표기된 문법 심벌 Nonterminal 심벌 A, B, C와 같은 알파벳 시작 부분의 대문자; S는 보통 시작 심벌(start symbol)을 나타낸다. <stmt>나 <expr>과 같이 <와 >로 묶어서 나타낸 문법 심벌 만약 아무런 언급이 없으면 첫번째 생성 규칙의 왼쪽에 있는 것이 시작 심벌이다. Aa1, Aa2, …, Aak와 같이 생성 규칙의 왼쪽이 모두 A인 경우에, Aa1|a2|…|ak로 간단히 표기 할 수 있다. 이것을 A에 대한 택일 규칙이라 부른다.

5-2. 유도와 유도 트리(Derivation Tree) 정의 좌측유도(leftmost derivation) 각 단계에서 문장 형태의 가장 왼쪽에 있는 nonterminal을 대치하는 경우  로 표기 우측 유도(rightmost derivation) 가장 오른쪽에 있는 nonterminal을 대치하는 경우 lm rm

 예 제 정의 5.2  좌측유도의 경우 좌파스(left parse) 우파스(right parse) E -E  -(E)  -(E+E)  -(id+E)  -(id+id)  우측유도의 경우 E  -E  -(E)  -(E+E)  -(E+id)  -(id+id) 정의 5.2 좌파스(left parse) 좌측 유도에서 적용된 일련의 생성 규칙 순서 우파스(right parse) 적용된 생성 규칙번호의 역순 lm rm rm rm rm rm

E T a F + *  예제 a + a * a 1. E E+T 2. E  T 3. T  T*F 4. T  F 5. F  ( E ) 6. F  a E  E + T E  E + T  T + T  E + T*F  F + T  E + T*a  a + T  E + F*a  a + T*F  E + a*a  a + F*F  T + a*a  a + a*F  F + a*a  a + a*a  a + a*a 좌파스 : 1 2 4 6 3 4 6 6 우파스 : 6 4 2 6 4 6 3 1 E T a F Top-down + * 6 4 1 2 3 Bottom-up 1 4 2 6 3 6 1 4 3 2

모호성(Ambiguity) 문법 G에 의해 생성되는 어떤 문장이 두개 이상의 유도 트리를 갖는다면 문법 G는 모호하다(ambiguous)한다.  예제 S if C then S else S S  if C then S S  a C  b S if C then else b a

E + * id  예제 E  E+E | E-E | E*E | E/E | E^E | -E | (E) | id id + id * id 연산자 우선순위를 고려한 동등한 문법 expression   expression + term | expression - term | term term  term * factor | term / factor | factor factor  primary^factor | primary primary  -primary | element element  ( expression ) | id E + * id

5-3. CFG 표기법 BNF(Backus-Naur Form) nonterminal 심벌 : <와 >로 묶어서 표기  예제 <id> ::= <letter> | <id><letter> | <id><digit> <letter> ::= a | b | c |  | y | z <digit> ::= 0 | 1 | 2 |  | 8 | 9

EBNF(Extended BNF) 메타 심벌 : 반복되는 부분이나 선택적인 부분을 간결하게 표현하기 위한 특수 심벌  예제 <external-name> ::= <alphabet> {<alphanumeric>}07 <alphanumeric> ::= <alphabet> | <digit> <alphabet> ::= a | b | c | | y | z <digit> ::= 0 | 1 | 2 | | 9

문법흐름도 (syntax diagram) terminal x nonterminal B 생성규칙 A::=X1X2X3 Xi가 nonterminal인 경우 Xi가 terminal인 경우 x B X1 X2 Xn … X1 

a1 a2 A … an A a a1 A  a2 택일 생성 규칙 A::=a1|a2|…|an EBNF A ::= [a] EBNF A ::= (a1 | a2) a1 a2 A … an A a a1 A  a2

예제 A ::= a | (B) B ::= AC C ::= {+A} a + ) ( B C A