Semantic Consistency in Information Exchange

Similar documents
Microsoft PowerPoint - semantics

제4장 기본 의미구조 (Basic Semantics)

컴파일러

03장.스택.key

chap 5: Trees

Microsoft PowerPoint - function

Microsoft PowerPoint - PL_03-04.pptx

금오공대 컴퓨터공학전공 강의자료

slide2

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

PL10

SIGPLwinterschool2012

HW5 Exercise 1 (60pts) M interpreter with a simple type system M. M. M.., M (simple type system). M, M. M., M.

untitled

Frama-C/JESSIS 사용법 소개

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap06-2pointer.ppt

Java ...

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

5.스택(강의자료).key

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint 프레젠테이션

API 매뉴얼

OCaml

EA0015: 컴파일러

Microsoft PowerPoint - ch07 - 포인터 pm0415

Observational Determinism for Concurrent Program Security

API 매뉴얼

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap03-변수와데이터형.pptx

중간고사

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

자연언어처리

11장 포인터

OCW_C언어 기초

중간코드생성

C 언어 프로그래밊 과제 풀이

슬라이드 1

λx.x (λz.λx.x z) (λx.x)(λz.(λx.x)z) (λz.(λx.x) z) Call-by Name. Normal Order. (λz.z)

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

EA0015: 컴파일러

untitled

Microsoft PowerPoint - e pptx

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap04-연산자.pptx

KNK_C_05_Pointers_Arrays_structures_summary_v02

Microsoft PowerPoint - C++ 5 .pptx


4장.문장

K&R2 Reference Manual 번역본

PowerPoint 프레젠테이션

Microsoft PowerPoint Predicates and Quantifiers.ppt

Microsoft PowerPoint - 제5장-스택의응용.pptx

PowerPoint Template

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

Exercise (10pts) k-친수 일반적으로 k진수(k > 1)는 다음과 같이 표현한다. d0 dn 여기서 di {0,, k 1}. 그리고 d0 dn 은 크기가 d0 k dn k n 인 정수를 표현한다. 이것을 살짝 확장해서 k친수 를 다음과 같이 정의

chap10.PDF

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

2002년 2학기 자료구조

chap x: G입력

C 프로그램의 기본

USER GUIDE

Microsoft Word - FunctionCall

Semantic Consistency in Information Exchange

chap x: G입력

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

chap01_time_complexity.key

윈도우즈프로그래밍(1)

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Chapter 4. LISTS

C프로-3장c03逞풚


Microsoft PowerPoint - chap-06.pptx

商用

PowerPoint 프레젠테이션

Microsoft PowerPoint - 제11장 포인터(강의)

형식 언어

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Microsoft PowerPoint - chap06-5 [호환 모드]

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

Microsoft PowerPoint - lec2.ppt

13주-14주proc.PDF

Microsoft PowerPoint - chap-03.pptx

설계란 무엇인가?

PowerPoint Presentation

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - chap12-고급기능.pptx

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Microsoft PowerPoint - Chapter_08.pptx

6주차.key

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Transcription:

제 3 장시맨틱스 (Semantics) Reading Chap 13 숙대창병모 1

시맨틱스의필요성 프로그램의미의정확한이해 소프트웨어의정확한명세 소프트웨어시스템에대한검증혹은추론 컴파일러혹은해석기작성의기초 숙대창병모 2

3.1 Operational Semantics 숙대창병모 3

의미론의종류 Operational Semantics 프로그램의동작과정을정의 Denotational Semantics 프로그램의의미를함수형태로정의 Axiomatic Semantics 프로그램의시작상태와종료상태를논리적선언 (assertion) 형태로정의 숙대창병모 4

동작시맨틱스 (Operational Semantics) 기본아이디어 프로그램의의미를상태전이 ( 실행 ) 과정으로설명한다. 각문장S마다상태전이규칙정의 예제 read x; y = 1; while (x!= 1) do (y = y*x; x = x-1) 1. x 값을읽는다. { x n } if READ n 2. y에 1 배정 { x n, y 1 } 3. x 값이 1이아닌지검사 4. 거짓이면종료 5. 참이면 y 값을 x 값과현재 y 값의곱으로변경 { x n, y 1*n } 6. x 값 1 감소 { x n-1, y n } 7. 3 번부터반복 숙대창병모 5

언어 S 정수 변수 식 n Int x Var E Exp Stmt S x = E S; S if E then S if E then S else S while E do S read x print E Expr E n x true false E + E E E E * E E / E E == E E < E E > E!E Prgm P S 숙대창병모 6

기초지식 합집합 A + B = { a a A a B} 곱집합 A x B = {(a,b) a A b B} 함수집합 A B = {f f : A B} 함수 f A B {a 1 b 1, a 2 b 2,, a n b n } 함수수정 f[a b] f[a b](x) = { b f(x) if x = a otherwise 숙대창병모 7

변수및상태 [23 + 5] vs [x + y] [x + y] 의의미는? 변수 x, y 의현재값에따라다르다. 변수들의현재값을무엇이라고할까요? 상태 (State) also called Environment 숙대창병모 8

상태 (State) 상태 (A state) 변수들의현재값 하나의함수로생각할수있다. s Var Int 모든상태들의집합 State = Var Int 상태 s 에서변수값 s(x) 상태갱신 : s = s[y v] s (x) = { s(x) if x!= y v if x = y 숙대창병모 9

수식의의미 수식 E 의의미 상태 s에서수식 E의값 [E]s s = {x 1, y 3} [x+y]s = 4 상태 s 에서수식 E 의의미 [true]s = T [false]s = F [n]s = n [x]s = s(x) [E1 + E2]s = [E1]s + [E2]s [E1 == E2]s = T if [E1]s == [E2]s F otherwise 숙대창병모 10

문장의의미 문장 S의의미 문장 S가상태s를 s 으로변경시킨다. 상태전이 (state transition) 라고한다. (s, S) s 상태전이 (State transition) (s, S) s where s is the initial state S is a statement s is the final state S s s 동작시맨틱스 각문장S마다상태전이규칙정의 프로그램의의미를상태전이과정으로설명한다. 숙대창병모 11

추론규칙 추론규칙 p -> q p q 조상추론규칙 X parent Y X parent Y Y ancestor Z X ancestor Y X ancestor Z a parent b b parent c 숙대창병모 12

전이규칙 (Transition Rule) assignment (s, id = E) s[id [E]s] sequence (s, S1) s, (s, S2) s (s, S1; S2) s s S1 s S2 s 숙대창병모 13

전이규칙 (Transition Rule) if-then-else (s, S1) s (s, if E then S1 else S2) s if [E]s = T s (s, S2) s (s, if E then S1 else S2) s if [E]s = F E F T s S1 S2 s 숙대창병모 14

예 1 x = 1; y = 2; if x > y then max =x; else max =y; s0 = { } (s0, x = 1) s1 s1 = {x 1} (s1, y = 2) s2 s2 = {x 1, y 2} (s2, if x >y ) s3 [x>y] s2= F (s2, max=y) s3 s3 = {x 1, y 2, max 2} 숙대창병모 15

전이규칙 while (s, S) s, (s, while E do S) s if [E]s = T (s, while E do S) s (s, while E do S) s if [E]s = F s s s S S... S 숙대창병모 16

전이규칙 read READ n (s, read id) s[id n] print PRINT [E]s (s, print E) s 숙대창병모 17

예 2 read x; y = 1; while (x!= 1) do (y = y*x; x = x-1) s0 = { } (s0, read x) s1 s1 = {x 3} (s1, y = 1) s2 s2 = {x 3, y 1} (s2, while ) s [x!= 1]s2= T (s2, y =x*y; x = x-1) s3 s3 = {x 2, y 3} (s3, while ) s [x!= 1]s3= T (s3, y =x*y; x = x-1) s4 s4 = {x 1, y 6} (s4, while ) s [x!=1]s4 = F s = s4 숙대창병모 18

지금까지한것 / 앞으로할것! Topic Logic Implementation ------------------------------------------------ Syntax Grammar Parser Semantics Semantics rules Interpreter Type Typing rules Type checker 숙대창병모 19

3.2 Other Semantics 숙대창병모 20

Axiomatic Semantics read x; y = 1; while (x!= 1) do (y = x*y; x = x-1) If x = n holds before the program is executed then y = n! will hold when the execution terminates. Properties of programs are specified as assertions { P } S { Q } where S is a statement P is the precondition and Q is the postcondition 숙대창병모 21

Pre- and post conditions 예제 read x; { x=n } y =1; { x=n and y=1} while (x!=1) do (y =x *y; x = x-1) { x=1 and y=n! } 숙대창병모 22

Denotational Semantics Describe meaning of programs by mathematical Function from states to states for each statement Operational semantics (s, S) s for each statement S Denotational semantics s = f(s, S) for each statement S 숙대창병모 23

Denotational Semantics read x; y = 1; while (x!= 1) do (y = y*x; x = x-1) The program s computation is a function from states to states: The final state will be equal to the initial state except that the value of x = 1 and the value of y = the factorial of the value of x in the initial state. 숙대창병모 24

3.3 Interpreter for Lang. S 숙대창병모 25

언어 S 의인터프리터 언어 S 의인터프리터구현 구성요소 동작시맨틱스 (Operational Semantics) 에따라구현 Recursive Descent Parsing 방식을확장해서구현 어휘분석 (lexical analyzer) 심볼테이블 (Symbol table) 변수들의상태 (state) 파서 (parser) 각식, 문장에대한해석 ( 실행 ) 함수 숙대창병모 26

Stmt S id = E (S {; S}) if E then S end if E then S else S while E do S read id print E 언어 S in EBNF Expr E true false AE AE == AE AE!= AE AE < AE AE > AE!E Aexpr AE T {+T -T} Term T F {*F /F} Factor F n id (AE) Prgm P S 숙대창병모 27

기본원리 언어 S 인터프리터 입력 S 프로그램을읽어서메모리에저장한다. 메모리에서 S 프로그램을 Recursive Descent Parsing 스타일로 한문장씩읽은후해석하여실행한다. 어휘분석 gettoken( ) 메모리에서 S 프로그램을읽어서토큰들로분리해서리턴 Chapter 2 of Aho, Sethi, and Ullman, Compilers: Dragon Book 심볼테이블 (Symbol table) 심볼테이블에상태 ( 변수들의값 ) 을저장한다. 파서 (parser) Recursive Descent Parsing 스타일로읽으면서각식, 문장에대한해석 ( 실행 ) 함수수행 숙대창병모 28

S 인터프리터전체구성 init() M[ ] symtable[ ] lex.c gettoken() int.c factor() { token = gettoken() } term() { } expr() { } stmt() { } parse() { } 숙대창병모 29

자료구조 M[] 입력 S 프로그램저장을위한배열 M[] pc M[] 의인덱스 symtable[] 변수이름과그값을저장하기위한자료구조스택형태로구현 숙대창병모 30

gettoken() 어휘분석 M[] 에저장된 S 프로그램을읽어서호출될때마다하나의토큰을반환한다. 키워드, 수, 변수이름, 기타문자처리하도록확장 토큰의종류 keyword: if return IF; keyword: print return PRINT number return NUM; tokenval = val of the number identifier return ID; tokenval = i such that symtable[i] contains the name other char c return c; tokenval = NONE 숙대창병모 31

심볼테이블 (Symbol Table) 심볼테이블 식별자 ( 변수이름 ) 과그값을저장하기위한자료구조변수이름, 토큰번호, 값저장 코드 struct entry { char *lexptr; int token; int val; } struct entry symtable[ ] int lookup(char[] s) return position of entry for s int push(char[] s, int tok) push s and return top position 숙대창병모 32

심볼테이블 symtable[] lastentry token ID val 2 lexptr ( x = 1; y = 2; if x > y then max =x else max =y ) ID 2 ID 1 lastchar lexemes[] x \0 y \0 max \0 숙대창병모 33

파서 / 해석기 parse( ) 파서 / 해석기 expr( ) Recursive Descent Parsing 수행각식, 문장에대한하나의해석 ( 실행 ) 함수포함 식을읽고식의값을계산해서리턴한다. stmt( ) 문장을읽고문장에따라해석하여실행한다. Stmt S id = E (S {; S}) if E then S end if E then S else S while E do S read id 숙대창병모 print E 34

수식해석 expr() 변수를포함한수식값을계산하도록 HW#1 확장 변수값은 symtable[] 에저장되어있음 실행과정 1. expr( ) E을읽으면서값을계산한다. 2. term( ) 3. factor( ) 3.1 gettoken() 은변수이름x를만나면 symtable[] 에서해당위치를 lookup() 해서찾아준다. loc = tokenval; 3.2 symtable[loc].val에저장되어있는값을사용하여계산한다. 숙대창병모 35

문장해석기구조 void stmt( ) { int loc, result, whilestart; switch(token) { // S id = E } } case ID: loc = tokenval; // symtable[] 내의저장위치 match(id); if (token == = ) { match( = ); result = expr( ); symtable[loc].val = result; } break; case ( : // S ( S {;S} ) case IF: // S if E then S else S if E then S end case WHILE: // S while E do S case READ: // S read id case PRINT: // S print E

대입문해석 대입문 id = E E 값을 symtable[] 내의변수 id 에저장 실행과정 1. gettoken() 은변수id를읽으면 symtable[] 내의해당위치를찾아 tokenval에저장해둔다. loc = tokenval; 2. E 을읽으면서값을계산한다. 3. 계산된 E 값을 symtable[loc].val 에저장한다. 숙대창병모 37

read 문해석 read 문 read id 입력값을 symtable[] 내의변수 id 에저장 실행과정 1. match(read) gettoken() 은변수 id 를읽으면 symtable[] 내의해당위치를 찾아 tokenval 에저장해둔다. 2. 입력값을받는다. loc = tokenval; 3. 입력값을 symtable[loc].val 에저장한다. 숙대창병모 38

print 문해석 print 문 print E E 값을출력한다. 실행과정 1. match(print) 2. expr() : E을읽으면서값을계산한다. 3. 계산된값을프린트한다. 숙대창병모 39

조건문해석 조건문 if E then S1 else S2 E 값에따라 S1 혹은 S2 실행실행과정 1. expr(): E을읽으면서값을계산한다. 2. E 값이 true 이면 S1를읽고실행하고 S2는건너뛴다. 3. E 값이 false 이면 S1를건너뛰고S2를읽어서실행한다. 한 stmt 건너뛰기 matchstmt() 숙대창병모 40

반복문해석 반복문 while E do S E 와 S 를반복적으로읽으면서해석한다. 실행과정 1. while 문을처음만나면시작위치를저장해둔다. whilestart = pc; 2. expr(): E 을읽으면서값을계산한다. 3. E 값이 true 이면 S 를읽고실행하고 저장된시작위치로돌아가서 2 부터반복 pc = whilestart; token = gettoken(); 4. E 값이 false 이면 S를건너뛰고진행한다. match(do); matchstmt(); 숙대창병모 41

HW #2 언어 S 에대한인터프리터구현 global.h, lex.c, int.c 참고해서작성 순서 global.h 를읽고이해한다. gettoken() 을읽고이해한다. expr() 을완성한다. stmt() 을완성한다. S (S; S) read id print E if E then S end if E then S else S while E do S 숙대창병모 42