제 5 장 구문 정의  프로그래밍 언어의 기본 문자 집합  Alphabet 문자 (A-Z) 26 개 + 아라비아 숫자 (0 - 9) 10 개  예 ) Fortran : 기본 문자 집합 + 13 개의 특수문자 (=+ - * / ( ),. $ ‘ : 공백 ) Algol60.

Slides:



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

Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
Chapter 03. 디지털 코드. 다양한 디지털 코드를 구분하여 이해할 수 있다. 문자와 숫자를 나타내는 코드를 이해할 수 있다. 가중치 코드와 비가중치 코드를 이해하고 이를 활용할 수 있다. 에러 검출 코드를 이해하고 이를 활용할 수 있다. 01. BCD 코드와 3.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 Part 03 상수, 변수, 자료형 안산 1 대학 디지털정보통신과 임 성 국. 2 이 장의 내용 자료형이란 무엇인가 ? 상수와 변수 정수형 부동소수형 문자형.
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
아이튠즈 계정 생성. 1. 인터넷을 통해 설치한 아이튠즈를 실행 한 후 그림의 순서대로 선택을 합니다. 1 2.
조원 : 김영재(코딩) 이지영(스토리) 임병욱(그래픽)
컴파일러 입문 제 5 장 Context-Free 문법.
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
3주 강의 Lexical Elements, Operators, and the C System
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Database Laboratory, Hong Ik University
1. 컴파일러 개론 1-1. Compiler 정의 1-2. Language Processing System
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
제 4장 프로그래밍 언어의 구문과 구현 기법 4.1 언어 구문 4.2 프로그래밍 언어 구현 기법.
제 4장 프로그래밍 언어의 구문과 구현 기법 4.1 언어 구문 4.2 프로그래밍 언어 구현 기법.
3장 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
Chapter 4 – 프로그래밍 언어의 구문과 구현 기법
프로그래밍언어론 2nd edition Tucker and Noonan
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
제4장 블록 및 유효범위 Reading Chap. 5 © 숙대 창병모.
형식언어와 유한상태기계.
프로그래밍 언어 프로그래밍 언어의 개요 프로그래밍 언어의 구문 정의 변수와 영역 자료형 조건문과 반복문 부프로그램
컴퓨터 개론 √ 원리를 알면 IT가 맛있다 쉽게 배우는 컴퓨터 기본 원리 한빛미디어 교재출판부.
장. 문법 구조(Syntax) 컴퓨터공학과 권기태 프로그래밍언어론.
[Homework #3] 오류 찾기 문제 BankAccount 문제 MyMetric 문제
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
6장. printf와 scanf 함수에 대한 고찰
Chapter 03. 디지털 코드.
C#.
환경 설정 예제 데이터베이스 생성 - 그림 3.34의 SQL Server 관리 스튜디오 창의 왼쪽 영역의 데이터베
JA A V W. 03.
프로그래밍 개요
5. Context-free 문법 5-1. 서 론 5-2. 유도와 유도 트리 5-3. CFG표기법.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
☆ASCII☆ 김연주.
프로그래밍 언어론 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
제 9장 트랜스레이터.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
프로그래밍언어론 2nd edition Tucker and Noonan
Regular Expression 1 Powerful pattern matching with regular expression to a string while () { if ( /ab*c/ ) { print $_; } } substitute operator s/abc*c/def/;
자바 5.0 프로그래밍.
Chapter 02. 자바 기본 문법.
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
17장. 제어문과 내장 함수 제어문 내장 함수 제어문 내장 함수.
6.4 타입 검사 (Type Checking).
텍스트 분석 기초.
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
Regular Expression 1 Powerful pattern matching with regular expression to a string while () { if ( /ab*c/ ) { print $_; } } substitute operator s/abc*c/def/;
Chapter08 JavaScript 시작하기
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
Flow Diagram IV While.
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
Part 2 개념적 데이터 모델 Copyright © 2006 by Ehan Publishing Co. All rights reserved.
Chapter 10 데이터 검색1.
공학도를 위한 C언어 프로그래밍실습1 -통합개발환경 사용법-
3.2 분기 명령어.
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
.Net FrameWork for Web2.0 한석수
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
 6장. SQL 쿼리.
윈도우에서의 유니코드.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
6 객체.
Presentation transcript:

제 5 장 구문 정의  프로그래밍 언어의 기본 문자 집합  Alphabet 문자 (A-Z) 26 개 + 아라비아 숫자 (0 - 9) 10 개  예 ) Fortran : 기본 문자 집합 + 13 개의 특수문자 (=+ - * / ( ),. $ ‘ : 공백 ) Algol60 : 알파벳 대소문자 52 개 +Digit 10 개 + 28 개의 특수문자 Algol60 : 알파벳 대소문자 52 개 +Digit 10 개 + 28 개의 특수문자 (p82 그림 5.1 참조 )  문자 코드 체계  EBCDIC(Extended Binary Coded Decimal Interchange Code)  IBM 에서 제안, 8 비트 조합 코드  ASCII(American Standard Code for Information Interchange)  ANSI 에서 제안, 7 비트 조합 코드 (128 개의 문자 표현 )  영문자 대소문자 52 개 + 숫자 10 개 + 33 개 특수문자 +33 개의 제어문자  정합 순서 (collating sequence)  문자 또는 문자열에 대한 일반적인 순서  언어 구현시에 결정, 일반적으로 문자의 bit 조합 표현 순서에 영향  예 ) 0 < 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9, A < B < C <... < X < Y < Z

구문 정의  예약어 (Reserved Words, Key Words)  언어 어휘를 구성하는 단어나 기호 형태의 문자 알파벳  프로그램의 변수 이름으로 사용할 수 없음  장점 : 프로그램 판독성 증가, 컴파일러가 기호 테이블을 빠른 시간에 탐색  단점 : 많은 예약어  기억에 어려움, 언어 확장시 新 예약어와 이전에 사용된 프로그램의 식별자와 중복 우려 언어 확장시 新 예약어와 이전에 사용된 프로그램의 식별자와 중복 우려

구문 정의  BNF 표기법  BNF(Backus-Naur Form) 표기법  구문 (syntax) 형식을 정의하는 가장 보편적인 표기법  한 언어의 구문에 대한 BNF 정의  언어의 문장을 생성하는 생성 규칙 (production rule) 정의  생성 규칙  생성 규칙의 왼쪽 ( 정의될 대상 ), 오른쪽에는 그 대상에대한 정의가 표현  생성 규칙의 왼쪽 ( 정의될 대상 ), 오른쪽에는 그 대상에 대한 정의가 표현  BNF 표기법에 의한 식별자 (identifier) 정의 예 ::= | | ::= | | ::=A | B | C |... | X | Y | Z ::=A | B | C |... | X | Y | Z ::=0 | 1 | 2 |... | 8 | 9 ::=0 | 1 | 2 |... | 8 | 9 메타기호 ::= 정의하다, nonterminal, | 택일기호 메타기호 ::= 정의하다, nonterminal, | 택일기호

구문 정의  EBNF(Extended Backus-Naur Form) 표기법  BNF 표기법을 확장하여 보다 읽기 쉽고, 간단하게 표현된 표기법  BNF 보다 추가된 특수한 의미를 갖는 EBNF 의 메타 기호  반복 : { }, { } 번 이상 반복  선택 : [ ] 0 또는 1 번 선택  { }, [ ], |, ( ), ::= 와 같은 메타 기호를 언어의 terminal 로 사용하는 경우  ‘|’, ‘::=‘ 와 같이 인용부호로 묶어 표현  sub-pascal 시작부에 대한 EBNF 표기 ::=program ;. ::=program ;. ::=[ ][ ]{ } ::=[ ][ ]{ } ::=const = { ; = } ; ::=const = { ; = } ; ::=var : { ; : } ; ::=var : { ; : } ; ::= {, } ::= {, } ::=procedure ['(' ')'] ; ; ::=procedure ['(' ')'] ; ; ::=begin { ; } end ::=begin { ; } end

구문 정의  구문 도표 (Syntax diagram)  구문 도표  구문 도표는 그 형태가 순서도와 유사  구문 도표는 EBNF 와 일대일 대응  다시 정의될 대상은 네모칸으로 terminal 기호는 원이나 타원형으로 표시  이들 사이는 지시선으로 연결  예 : 예 : 예 : 예 : nonterminal B terminal x xx BB

AA X1X1X1X1 X1X1X1X1 X2X2X2X2 X2X2X2X2 XnXnXnXn XnXnXnXn AA... x1x1x1x1 x1x1x1x1 x2x2x2x2 x2x2x2x2 xnxnxnxn xnxnxnxn α2α2α2α2 α2α2α2α2 αnαnαnαn αnαnαnαn α1α1α1α1 α1α1α1α AA  구문 도표 그리는 방법  A ::= X 1 X 2...X n  X i 가 nonterminal 인 경우  x i 가 terminal 인 경우  A ::= α 1 | α 2 |... | α n α 1,α 2, …,α n 이 nonterminal 일 경우 구문 정의

 구문 도표 그리는 방법 ( 계속 )  EBNF A ::= {  }  EBNF A ::= [  ]  A ::= (α 1  α 2 )β  구문 도표 그리는 방법 ( 계속 )  EBNF A ::= {  }  EBNF A ::= [  ]  A ::= (α 1  α 2 )β αα AA αα AA α2α2α2α2 α2α2α2α2 α1α1α1α1 α1α1α1α1 AA ββ

구문 정의 xx BB‘)’‘)’ ‘(’‘(’AAAA CC BB AA CC ++ xx ‘)’‘)’ ‘(’‘(’ AA AA AA  예제 (EBNF 구문도표 ) (EBNF 구문도표 ) A ::= x | ‘(’ B ‘)’ B ::= AC C ::= {+A} ( 조건 ) ( 조건 ) V N = { A, B, C } V T = { +, x, (, ) }  예제 (EBNF 구문도표 ) (EBNF 구문도표 ) A ::= x | ‘(’ B ‘)’ B ::= AC C ::= {+A} ( 조건 ) ( 조건 ) V N = { A, B, C } V T = { +, x, (, ) } ++

구문 정의  Sub-pascal 시작부 구문도표

 파스 트리 (Parse Tree)  파스 트리  원시 프로그램의 문법 검사 과정에서 내부적으로 생성되는 트리 형태의 자료구조  문장 표현이 BNF 에 의해 작성될 수 있는지 여부를 나타냄  예 : 식별자에 대한 BNF 를 통해 다음 TEST1 에 대한 파스 트리 작성 구문 정의 ::= | ::= | | | ::=A | B | C |... | X | Y | Z ::=A | B | C |... | X | Y | Z ::=0 | 1 | 2 |... | 8 | 9 ::=0 | 1 | 2 |... | 8 | 9 T E S T 1

구문 정의  구문과 프로그램 신뢰성 (reliability)  구문 (syntax)  언어의 신뢰성에 영향  FORTRAN  PL/I DO 10 I = 2.6 DO 10 I = 2.6 A(I) = B + C(I) A(I) = B + C(I) 10 CONTINUE DO 10 I = 2.6 DO 10 I = 2.6 A(I) = B + C(I) A(I) = B + C(I) 10 CONTINUE A = B = C  2.6 의 오류 (. 대신, 사용해야 함 )  DO10I 에 2.6 배정으로 인식  2.6 의 오류 (. 대신, 사용해야 함 )  DO10I 에 2.6 배정으로 인식  다중배정문의 의미 (A 와 B 에 C 값 저장 )  (B equal to C) 의 결과를 A 에 저장하는 문장으로 인식 문장으로 인식  다중배정문의 의미 (A 와 B 에 C 값 저장 )  (B equal to C) 의 결과를 A 에 저장하는 문장으로 인식 문장으로 인식  현수 (dangling) else 문제  중첩된 if 문에서 else 는 어떤 if 의 else 인가 ?  예제 if c1 then if c2 then S1 else S2 해석 ① if c1 then (if c2 then S1 else S2) if c1 then if c2 then S1 else S2 해석 ① if c1 then (if c2 then S1 else S2) ② if c1 then (if c2 then S1) else S2 ② if c1 then (if c2 then S1) else S2

구문 정의  각 언어에서의 dangling else 문제 해결책  Algol 60 ① if c1 then begin if c2 then S1 else S2 end ① if c1 then begin if c2 then S1 else S2 end ② if c1 then begin if c2 then S1 end else S2 ② if c1 then begin if c2 then S1 end else S2  Algol 68 ① if c1 then if c2 then S1 else S2 fi fi ① if c1 then if c2 then S1 else S2 fi fi ② if c1 then if c2 then S1 fi else S2 fi  PL/I ② IF c1 THEN IF c2 THEN S1; ELSE S2; ② IF c1 THEN IF c2 THEN S1; ELSE S2; 또는 IF c1 THEN IF c2 THEN S1; ELSE; ELSE S2;  Pascal ② if c1 then begin if c2 then S1 end else S2 ② if c1 then begin if c2 then S1 end else S2 또는 if c1 then if c2 then S1 else else S2 ※ PL/1 과 pascal 은 일반적으로 ①의 경우로 해석

Programming Languages - The end of Chapter 5 - To Be Continue... Copyright, 1999 © H. Y. Kwak, Cheju National University.