Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

1

2 제 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

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

4 구문 정의  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, | 택일기호

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

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

7 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α1...... AA  구문 도표 그리는 방법  A ::= X 1 X 2...X n  X i 가 nonterminal 인 경우  x i 가 terminal 인 경우  A ::= α 1 | α 2 |... | α n α 1,α 2, …,α n 이 nonterminal 일 경우 구문 정의

8  구문 도표 그리는 방법 ( 계속 )  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 ββ

9 구문 정의 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, (, ) } ++

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

11  파스 트리 (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

12 구문 정의  구문과 프로그램 신뢰성 (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

13 구문 정의  각 언어에서의 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 은 일반적으로 ①의 경우로 해석

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


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

Similar presentations


Ads by Google