2018-12-03 3장. 문법 구조(Syntax) 컴퓨터공학과 권기태 프로그래밍언어론.

Slides:



Advertisements
Similar presentations
Chapter 03. 디지털 코드. 다양한 디지털 코드를 구분하여 이해할 수 있다. 문자와 숫자를 나타내는 코드를 이해할 수 있다. 가중치 코드와 비가중치 코드를 이해하고 이를 활용할 수 있다. 에러 검출 코드를 이해하고 이를 활용할 수 있다. 01. BCD 코드와 3.
Advertisements

0 CHAPTER 0 C언어 들어가기 전. 1 1 What is the Programming Language? Ghost in the Shell, 1995.
제 5 장 구문 정의  프로그래밍 언어의 기본 문자 집합  Alphabet 문자 (A-Z) 26 개 + 아라비아 숫자 (0 - 9) 10 개  예 ) Fortran : 기본 문자 집합 + 13 개의 특수문자 (=+ - * / ( ),. $ ‘ : 공백 ) Algol60.
Copyright © 2006 The McGraw-Hill Companies, Inc. 프로그래밍 언어론 2nd edition Tucker and Noonan 5 장 타입 “ 타입은 컴퓨터 프로그래밍의 효소이다 ; 프로그래밍은 타입을 통해 소화할만한 것이 된다.” 로빈.
프로젝트 구성. 프로젝트 델파이 프로그램의 기본 단위 즉, 델파이로 만드는 프로그램을 구성하 는 모든 파일들의 집합 구성파일 확인 –View 메뉴 -> Project Manager 메뉴 – 프로젝트 파일 (DPR 확장자 ) – 폼 관련 파일 (FRM 확장자 ) – 소스.
컴퓨터의 구조 2006년 2학기 컴퓨터의 개념 및 실습.
컴파일러 입문 제 5 장 Context-Free 문법.
제 4 장 변수, 영역, 수명 변수 바인딩 영역 기억장소 할당과 수명 변수와 그 환경 변수 초기화 상수와 변수.
8장 프로그래밍 언어 8.1 프로그램이란? 8.2 프로그램 언어의 역사 8.3 프로그램 설계 절차
제 3 장 변수와 자료형.
3주 강의 Lexical Elements, Operators, and the C System
제 1장 C 언어의 소개.
Scientists who made Computers
제 3장 프로그래밍 언어 설계 3.1 설계 기준의 역사적 변천 3.2 효율성 3.3 일반성, 직교성, 획일성
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
컴퓨터 과학 개론 √ 원리를 알면 IT가 맛있다 컴퓨터 과학도를 위한 첫 전공서 ehanbit.net.
제 4장 프로그래밍 언어의 구문과 구현 기법 4.1 언어 구문 4.2 프로그래밍 언어 구현 기법.
제 4장 프로그래밍 언어의 구문과 구현 기법 4.1 언어 구문 4.2 프로그래밍 언어 구현 기법.
제 7 장 문장 구조화 제어문 지정문 조건문 반복문 GOTO 문 비결정적문.
4장 구문(Syntax).
제 2장 언어의 변천 2.1 디지털 컴퓨터 이전의 언어 년대 : 최초의 프로그래밍 언어
제 6 장 데이터 타입 6.1 데이터 타입 및 타입 정보 6.2 타입의 용도 6.3 타입 구성자 6.4 사례 연구
프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과.
3 디지털 코드 IT CookBook, 디지털 논리회로.
정보이론 PARSONS/OJA 데이터의 표현 1.
Chapter 4 – 프로그래밍 언어의 구문과 구현 기법
컴퓨터 구조론 2001년 10월 22일 발표자 황영선.
프로그래밍언어론 2nd edition Tucker and Noonan
4장 어휘 / 구문 분석 (Term project 포함)
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
Chapter 6 – 변수, 바인딩, 식 및 제어문 Outline 6.1 변수 6.2 바인딩 6.3 선언 6.4 배정문
프로그램 개발과 언어 Chapter 05 컴퓨터의 이해
Chapter 9 – 부 프로그램 Outline 9.1 개요 9.2 매개변수 평가와 전달기법 9.3 형식 매개변수 명세
제 5장. Context-Free Languages
정보(information) 데이터(data) 어떤 사물에 대한 소식이나 자료 가공된 데이터
멀티미디어시스템 멀티미디어 정보화 사회 IT응용시스템공학과 김 형 진 교수.
컴퓨터 시스템의 개요.
제 2장 컴퓨터의 등장과 발전.
제 2 장 변수와 상수.
주요 내용 형식 언어와 문법 정규식과 정규 집합 유한 상태 기계 정규 문법과 유한 상태 기계와 정규집합.
Chapter 03. 디지털 코드.
2 데이터 표현과 컴퓨터 연산 IT CookBook, 컴퓨터 구조와 원리 2.0.
2007년 1학기 전산학개론 성신여자대학교 컴퓨터정보학부
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
Lecture 01: Compiler Overview
Chapter 2 – 언어의 변천 Outline 2.1 디지털 컴퓨터 이전의 언어
5장 이름, 바인딩, 영역(2) 순천향대학교 컴퓨터공학과 하상호.
5. Context-free 문법 5-1. 서 론 5-2. 유도와 유도 트리 5-3. CFG표기법.
제 10장 부 프로그램 10.1 개요 10.2 매개 변수 평가와 전달 기법 10.3 형식 매개 변수 명세
“정보의 표현” 이 점 숙 컴퓨터와 인터넷 “정보의 표현” 이 점 숙
“소프트웨어의 표현” 이 점 숙 컴퓨터와 소프트웨어 “소프트웨어의 표현” 이 점 숙
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 05. 상수와 기본 자료형.
프로그래밍언어론 2nd edition Tucker and Noonan
제 5장 변수, 바인딩, 식 및 제어문 5.1 변수 5.6 표현식 5.2 바인딩 5.7 조건문 5.3 선언 5.8 반복문
제 1 장. 자료구조와 알고리즘.
Chapter 4 변수 및 바인딩.
디 지 털 공 학 한국폴리텍V대학.
4. 어휘 분석(Lexical analysis)
Signature, Strong Typing
Signature, Strong Typing
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
Chapter 5. Context-Free Language Exercises
Signature, Strong Typing
언어 언어 사람 사람 사람들간의 의사 소통을 위한 수단
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
박성진 컴퓨터 프로그래밍 기초 [03] 변수와 자료형 박성진
운영체제 학 번 : 이름 : 변현영.
제03장 정보의 표현.
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
Presentation transcript:

2018-12-03 3장. 문법 구조(Syntax) 컴퓨터공학과 권기태 프로그래밍언어론

언어 구문(문법 구조) 언어 정의 – 구문, 의미. 컴퓨터 – 프로그램을 실행 할 수 있는 알고리즘 + 자료구조 집합. 언어 정의 – 구문, 의미. 자연어 정의, 형식 정의 구문 형식 정의 – BNF, EBNF, 구문 챠트 컴퓨터 – 프로그램을 실행 할 수 있는 알고리즘 + 자료구조 집합. 하드웨어 컴퓨터 (실제 컴퓨터) 소프트 웨어 시뮬레이터 컴퓨터 가상 컴퓨터 (virtual computer) 컴퓨터공학과 권기태

가상 컴퓨터 고급 언어 프로그래머는 번역기를 가상의 고급 언어 컴퓨터로 간주 ....... 컴퓨터공학과 권기태 computer hardware 운영 체제 Power Builder 인터프리터 Cobol 번역기 명령어 C++ ....... Ada 어셈블러 Lisp 가상의 컴퓨터 Assembly 언어 컴퓨터공학과 권기태

어휘 구조 프로그래밍 언어의 기본 문자 집합 알파벳 문자 (A - Z) 26개 +아라비아 숫자 (0 - 9) 10개 예) Fortran : 기본 문자 집합 + 13개의 특수문자(+ + - * / ( ) , . $ ‘ : 공백) Algol 60 : 알파벳 대소문자 52개 + 아라비아 숫자 10개 + 28개의 특수문자 문자 코드 체계 EBCDIC (Extended Binary Coded Decimal Interchange Code) - IBM 표준, 8비트 조합 코드 ASCII (American Standard Code for Information Interchange) - ANSI 표준, 7비트 조합 코드(128개의 문자 표현) - 영문자 대소문자 52개 + 숫자 10개 + 33개의 특수문자 +33개의 제어문자 유니 코드 (Uni code) 16 bit ISO표준 규격 Java에 적용 컴퓨터공학과 권기태

collating sequence 어휘 구조 용어 언어에 제공된 문자 순서 일반 순서 지킴. 예) 0 < 1< 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 A < B < C < . . . < X < Y < Z 특수 문자 순서 (?) 코드 체계 따름 (구현시 결정) 프로그래머 정의 가능 (RPG, Snobol) 어휘 구조 용어 어휘 토큰 언어 구성자 식별자, 미리 정의 된 식별자, 예약어 컴퓨터공학과 권기태

예약어 (reserved words) 키워드 (keywords) 프로그래밍 언어 어휘를 구성하는 단어나 기호 형태의 문자 알파벳 프로그램의 변수 이름으로 사용할 수 없음 장점 - 프로그램 가독성 증가, 컴파일러가 기호 테이블을 빠른 시간에 탐색, 구문 에러의 에러 복구가 용이 단점 – 많은 예약어를 기억하기 어려움, 언어 확장시 새로운 예약어가 확장 이전에 사용했던 프로그램의 식별자와 중복 우려 키워드 (keywords) 변수 이름으로 사용 가능 FORTRAN, PL/I은 키워드를 사용 IF IF =THEN THEN THEN = ELSE; 컴퓨터공학과 권기태

3.3 문법 구조의 표현 자연언어로 기술된 문장의 분석 => 파싱 컴퓨터공학과 권기태

문법 정의 => 생성 규칙 가능한 파스 트리 컴퓨터공학과 권기태

BNF (Backus-Naur Form) 표기법 2018-12-03 BNF (Backus-Naur Form) 표기법 구문(syntax) 형식을 정의하는 가장 보편적인 표기법 한 언어의 구문에 대한 BNF 정의 언어의 문장을 생성하는 생성 규칙(Production rule)정의 문맥 무관 문법(context-free grammar: 단말기호, 비단말기호,생성규칙,비단말기호인 시작기호로 구성) 생성 규칙 생성 규칙의 왼쪽(정의될 대상), 오른쪽에는 그 대상에 대한 정의가 표현 BNF 표기법에 의한 식별자(identifier)정의 <identifier> ::= <letter>| <identifier><letter> | <identifier><digit> <letter> ::=A | B | C | ... | X | Y | Z <digit> ::=0 | 1 | 2 | ... | 8 | 9 메타기호 ::= 정의하다 , < > 비단말(nonterminal), | 택일기호 컴퓨터공학과 권기태 프로그래밍언어론

ALGOL 60의 BNF 예 for 문의 부분적인 정의 생성 규칙에 의해 생성 가능한 문장 컴퓨터공학과 권기태 2018-12-03 ALGOL 60의 BNF 예 for 문의 부분적인 정의 생성 규칙에 의해 생성 가능한 문장 컴퓨터공학과 권기태 프로그래밍언어론

식(expression)을 표현하는 문장 2018-12-03 식(expression)을 표현하는 문장 식을 표현하는 문법의 예 파스 트리 A + B * C 의 유도 컴퓨터공학과 권기태 프로그래밍언어론

2018-12-03 파스 트리 (parse tree) 원시 프로그램의 문법을 검사하는 과정에서 내부적으로 생성되는 트리 형태의 자료구조 한 표현이 BNF에 의해 작성될 수 있는지 여부를 나타냄 예 - 식별자에 대한 BNF 를 통해 다음 TEST1 에 대한 파스 트리 작성 <identifier> ::=<letter>| <identifier><letter> | <identifier><digit> <letter> ::=A | B | C | ... | X | Y | Z <digit> ::=0 | 1 | 2 | ... | 8 | 9 <identifier> <digit> <letter> T E S 1 컴퓨터공학과 권기태 프로그래밍언어론

모호한 문법(ambiguous grammar) : 동일한 문장에 대해서 두 가지 서로 다른 파스 트리가 가능한 문법 컴퓨터공학과 권기태

if-then-else 다음 문장의 의미는? 모호한 문법 두 개의 파스 트리 컴퓨터공학과 권기태

else를 가장 내부의 if와 결합시키는 모호하지 않은 문법 파스 트리 컴퓨터공학과 권기태

EBNF (Extened Backus-Naur Form) 표기법 2018-12-03 EBNF (Extened Backus-Naur Form) 표기법 BNF 표기법을 확장하여 보다 읽기 쉽고, 간단하게 표현된 표기법 BNF보다 추가된 특수한 의미를 갖는 EBNF의 메타 기호 - 반복 : { }, { }07 0 번 이상 반복 - 선택 : [ ] 0 또는 1번 선택 - { }, [ ], |, ( ), ::=와 같은 메타 기호를 언어의 terminal로 사용하는 경우 ‘|’, ‘::=‘ 와 같이 인용부호로 묶어 표현 컴퓨터공학과 권기태 프로그래밍언어론

EBNF (Extened Backus-Naur Form) 표기법 2018-12-03 EBNF (Extened Backus-Naur Form) 표기법 - subpascal 시작부에 대한 EBNF 표기 <subpascal> ::=program <ident>;<block> . <block> ::=[<const_dcl>][<var_dcl>]{<proc_dcl>} <compound-st> <const_dcl> ::=const <ident> = <number> {;<ident> = <number> }; <var_dcl> ::=var <ident_list> : <type>{; <ident_list> : <type> }; <ident_list> ::=<ident> {,<ident>} <proc_dcl> ::=procedure <ident>['('<formal_param>')'];<block>; <compound-st> ::=begin <statement> {;<statement>} end 컴퓨터공학과 권기태 프로그래밍언어론

구문 챠트 (syntax chart) 구문 챠트는 그 형태가 순서도와 유사 구문 챠트는 EBNF 와 일대일 대응 2018-12-03 구문 챠트 (syntax chart) 구문 챠트는 그 형태가 순서도와 유사 구문 챠트는 EBNF 와 일대일 대응 - 다시 정의될 대상은 네모칸으로 단말 기호는 원이나 타원형으로 표시 이들 사이는 화살표로 연결 - 단말 x X - 비단말 B B 컴퓨터공학과 권기태 프로그래밍언어론

- A ::= α1|α2| |αn α1,α2, ...αn 가 비단말일 경우 2018-12-03 BNF로부터 구문 챠트 유도 - A ::= X1X2 ...Xn ① Xi가 비단말 기호인 경우 Xn X2 X1 A ... ② Xi가 단말기호인 경우 A ... X1 X2 Xn - A ::= α1|α2| |αn α1,α2, ...αn 가 비단말일 경우 2 1 n . . . A ... 컴퓨터공학과 권기태 프로그래밍언어론

구문 챠트 유도(계속) EBNF A ::= {α} EBNF A ::= [α] EBNF A ::= (α1|α2)β 2018-12-03 구문 챠트 유도(계속) EBNF A ::= {α} EBNF A ::= [α] EBNF A ::= (α1|α2)β A  A  1 A  컴퓨터공학과 권기태 프로그래밍언어론

2018-12-03 컴퓨터공학과 권기태 프로그래밍언어론

3.9 문법 구조와 프로그램의 신뢰성 구문(SYNTAX) 언어의 신뢰성에 영향 FORTRAN PL/1 2018-12-03 3.9 문법 구조와 프로그램의 신뢰성 구문(SYNTAX) 언어의 신뢰성에 영향 FORTRAN PL/1 2.6의 오류(. 대신 , 사용해야 함) DO10I에 2.6 배정으로 인식 DO 10 I = 2.6 A(I) = B + C(I) 10 CONTINUE 다중배정문의 의미(A와 B에 C값 저장) (B = C)의 결과를 A에 저장하는 문장으로 인식 A = B = C 컴퓨터공학과 권기태 프로그래밍언어론

2018-12-03 Pascal의 변수 선언 구문 챠트 => 두 번째 선언문이 잘못됨 컴퓨터공학과 권기태 프로그래밍언어론