Upload
hyatt-rice
View
76
Download
0
Embed Size (px)
DESCRIPTION
3 장 . 문법 구조 (Syntax). 언어 구문 ( 문법 구조 ). 언어 정의 – 구문 , 의미 . 자연어 정의 , 형식 정의 구문 형식 정의 – BNF, EBNF, 구문 챠트 컴퓨터 – 프로그램을 실행 할 수 있는 알고리즘 + 자료구조 집합 . 하드웨어 컴퓨터 ( 실제 컴퓨터 ) 소프트 웨어 시뮬레이터 컴퓨터 가상 컴퓨터 (virtual computer). 가상의. 가상의. Ada. 운영. 체제. C++. 컴퓨터. 명령어. 컴퓨터. Ada. 번역기. C++. - PowerPoint PPT Presentation
Citation preview
컴퓨터공학과 권기태프로그래밍언어론 1
3 장 . 문법 구조 (Syntax)3 장 . 문법 구조 (Syntax)
컴퓨터공학과 권기태프로그래밍언어론 2
언어 정의 – 구문 , 의미 .•자연어 정의 , 형식 정의•구문 형식 정의 – BNF, EBNF, 구문 챠트
컴퓨터 – 프로그램을 실행 할 수 있는 알고리즘 + 자료구조 집합 .•하드웨어 컴퓨터 ( 실제 컴퓨터 )
•소프트 웨어 시뮬레이터 컴퓨터•가상 컴퓨터 (virtual computer)
언어 구문 ( 문법 구조 )
컴퓨터공학과 권기태프로그래밍언어론 3
computerhardware
운영 체제
PowerBuilder
인터프리터
Cobol번역기
운영 체제명령어번역기 C++
번역기
.......
Ada번역기
어셈블러
Lisp인터프리터
가상의Cobol컴퓨터
가상의 C++컴퓨터
가상의Ada컴퓨터
가상의Assembly언어컴퓨터
가상의PowerBuilder컴퓨터
가상의Lisp 컴퓨터
가상 컴퓨터고급 언어 프로그래머는 번역기를 가상의 고급 언어 컴퓨터로 간주
컴퓨터공학과 권기태프로그래밍언어론 4
어휘 구조 프로그래밍 언어의 기본 문자 집합 알파벳 문자 (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 에 적용
컴퓨터공학과 권기태프로그래밍언어론 5
• collating sequence– 언어에 제공된 문자 순서 일반 순서 지킴 . 예 ) 0 < 1< 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 A < B < C < . . . < X < Y < Z
특수 문자 순서 (?)– 코드 체계 따름 ( 구현시 결정 )
• 프로그래머 정의 가능 (RPG, Snobol)
• 어휘 구조 용어– 어휘 토큰– 언어 구성자– 식별자 , 미리 정의 된 식별자 , 예약어
컴퓨터공학과 권기태프로그래밍언어론 6
예약어 (reserved words) • 프로그래밍 언어 어휘를 구성하는 단어나 기호 형태의 문자 알파벳
• 프로그램의 변수 이름으로 사용할 수 없음
• 장점 - 프로그램 가독성 증가 , 컴파일러가 기호 테이블을 빠른
시간에 탐색 , 구문 에러의 에러 복구가 용이
• 단점 – 많은 예약어를 기억하기 어려움 , 언어 확장시 새로운 예약어가
확장 이전에 사용했던 프로그램의 식별자와 중복 우려
키워드 (keywords) • 변수 이름으로 사용 가능
• FORTRAN, PL/I 은 키워드를 사용
IF IF =THEN THEN
THEN = ELSE;
컴퓨터공학과 권기태프로그래밍언어론 7
3.3 문법 구조의 표현자연언어로 기술된 문장의 분석 => 파싱
컴퓨터공학과 권기태프로그래밍언어론 8
문법 정의 => 생성 규칙
가능한 파스 트리
컴퓨터공학과 권기태프로그래밍언어론 9
<identifier> ::= <letter>| <identifier><letter> | <identifier><digit><letter> ::=A | B | C | ... | X | Y | Z<digit> ::=0 | 1 | 2 | ... | 8 | 9
메타기호 ::= 정의하다 , < > 비단말 (nonterminal), | 택일기호
• BNF (Backus-Naur Form) 표기법– 구문 (syntax) 형식을 정의하는 가장 보편적인 표기법– 한 언어의 구문에 대한 BNF 정의
• 언어의 문장을 생성하는 생성 규칙 (Production rule) 정의• 문맥 무관 문법 (context-free grammar: 단말기호 , 비단말기호 , 생성규칙 ,
비단말기호인 시작기호로 구성 )
– 생성 규칙• 생성 규칙의 왼쪽 ( 정의될 대상 ), 오른쪽에는 그 대상에 대한 정의가 표현
– BNF 표기법에 의한 식별자 (identifier) 정의
컴퓨터공학과 권기태프로그래밍언어론 10
ALGOL 60 의 BNF 예for 문의 부분적인 정의
생성 규칙에 의해 생성 가능한 문장
컴퓨터공학과 권기태프로그래밍언어론 11
식 (expression) 을 표현하는 문장식을 표현하는 문법의 예
A + B * C 의 유도
파스 트리
컴퓨터공학과 권기태프로그래밍언어론 12
파스 트리 (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>
<identifier> <digit>
<identifier> <letter>
<identifier> <letter>
<identifier> <letter>
<letter>
T E S T 1
컴퓨터공학과 권기태프로그래밍언어론 13
모호한 문법 (ambiguous grammar) : 동일한 문장에 대해서 두 가지 서로 다른 파스 트리가 가능한 문법
컴퓨터공학과 권기태프로그래밍언어론 14
if-then-else다음 문장의 의미는 ?
모호한 문법
두 개의 파스 트리
컴퓨터공학과 권기태프로그래밍언어론 15
else 를 가장 내부의 if 와 결합시키는 모호하지 않은 문법
파스 트리
컴퓨터공학과 권기태프로그래밍언어론 16
EBNF (Extened Backus-Naur Form) 표기법
• BNF 표기법을 확장하여 보다 읽기 쉽고 , 간단하게 표현된 표기법
• BNF 보다 추가된 특수한 의미를 갖는 EBNF 의 메타 기호
- 반복 : { }, { }07 0 번 이상 반복
- 선택 : [ ] 0 또는 1 번 선택
- { }, [ ], |, ( ), ::= 와 같은 메타 기호를 언어의 terminal 로 사용하는 경우 ‘|’, ‘::=‘ 와 같이 인용부호로 묶어 표현
컴퓨터공학과 권기태프로그래밍언어론 17
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
컴퓨터공학과 권기태프로그래밍언어론 18
구문 챠트 (syntax chart)
• 구문 챠트는 그 형태가 순서도와 유사
• 구문 챠트는 EBNF 와 일대일 대응
- 다시 정의될 대상은 네모칸으로 단말 기호는 원이나 타원형으로 표시
이들 사이는 화살표로 연결
- 비단말 B
- 단말 xX
B
컴퓨터공학과 권기태프로그래밍언어론 19
• BNF 로부터 구문 챠트 유도
- A ::= α1 | α2 | | αn α1,α2, ...αn 가 비단말일 경우
- A ::= X1X2 ...Xn
① Xi 가 비단말 기호인 경우
② Xi 가 단말기호인 경우
...
XnX2X1A ...
A ...X1 X2 Xn
2
1
n
. . .A A
컴퓨터공학과 권기태프로그래밍언어론 20
– 구문 챠트 유도 ( 계속 )
• EBNF A ::= {α}
• EBNF A ::= [α]
• EBNF A ::= (α1 | α2)β
A
A
1
A
1
컴퓨터공학과 권기태프로그래밍언어론 21
컴퓨터공학과 권기태프로그래밍언어론 22
– 구문 (SYNTAX) 언어의 신뢰성에 영향
– FORTRAN
– PL/1
DO 10 I = 2.6 A(I) = B + C(I)10 CONTINUE
DO 10 I = 2.6 A(I) = B + C(I)10 CONTINUE
2.6 의 오류 (. 대신 , 사용해야 함 )DO10I 에 2.6 배정으로 인식
A = B = C A = B = C
다중배정문의 의미 (A 와 B 에 C 값 저장 )(B = C) 의 결과를 A 에 저장하는 문장으로 인식
3.9 문법 구조와 프로그램의 신뢰성
컴퓨터공학과 권기태프로그래밍언어론 23
Pascal 의 변수 선언
구문 챠트
=> 두 번째 선언문이 잘못됨