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

Similar documents
Semantic Consistency in Information Exchange

Microsoft PowerPoint - semantics

PowerPoint Presentation

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - PL_03-04.pptx

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

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

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

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

슬라이드 1

Semantic Consistency in Information Exchange

슬라이드 1

Microsoft PowerPoint - function

PowerPoint Presentation

chap 5: Trees

PowerPoint 프레젠테이션

Modern Javascript

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

Microsoft PowerPoint - Chapter 6.ppt

Microsoft Word - FunctionCall

C++ Programming

Microsoft PowerPoint - chap06-2pointer.ppt

4장.문장

컴파일러

Microsoft PowerPoint - additional01.ppt [호환 모드]

PowerPoint Presentation

Microsoft PowerPoint - a10.ppt [호환 모드]

untitled

C# Programming Guide - Types

03장.스택.key

Microsoft PowerPoint - additional06.ppt [호환 모드]

SIGPLwinterschool2012

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

chap10.PDF

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

바인딩, 메모리관리 SANGJI University Kwangman Ko 속성 (attributes) o 속성 (attributes) ~ 특성 (properties) 들의집합 ~ 변수의위치 (location) 값이저장될수있는공간,

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

기본자료형만으로이루어진인자를받아서함수를결과값으로반환하는고차함수 기본자료형과함수를인자와결과값에모두이용하는고차함수 다음절에서는여러가지예를통해서고차함수가어떤경우에유용한지를설명한다. 2 고차함수의 예??장에서대상체만바뀌고중간과정은동일한계산이반복될때함수를이용하면전체연산식을간 단

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

Ch.1 Introduction

C언어 및 실습 C Language and Practice

PowerPoint 프레젠테이션

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

PowerPoint Template

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

PowerPoint 프레젠테이션

윤성우의 열혈 TCP/IP 소켓 프로그래밍

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000

Microsoft PowerPoint - 2강

Java ...

PowerPoint 프레젠테이션

K&R2 Reference Manual 번역본

자바 프로그래밍

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

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

Microsoft PowerPoint - chap12-고급기능.pptx

비긴쿡-자바 00앞부속

Cluster management software

10주차.key

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

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

설계란 무엇인가?

Microsoft Word - ExecutionStack

OCW_C언어 기초

PowerPoint 프레젠테이션

PowerPoint Presentation

Microsoft PowerPoint - Java7.pptx

유니티 변수-함수.key

JAVA PROGRAMMING 실습 02. 표준 입출력


07 자바의 다양한 클래스.key

Microsoft PowerPoint - chap10-함수의활용.pptx

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

C프로-3장c03逞풚

Microsoft Word - java19-1-midterm-answer.doc

OCaml

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

PowerPoint Presentation

gnu-lee-oop-kor-lec06-3-chap7

중간고사

Microsoft PowerPoint - lec2.ppt

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

Microsoft PowerPoint 세션.ppt

13주-14주proc.PDF

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

PowerPoint Template

JUNIT 실습및발표

PowerPoint 프레젠테이션

Microsoft PowerPoint - o8.pptx

MPLAB C18 C

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

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

Transcription:

제 4 장블록및유효범위 Reading Chap. 5 숙대창병모 1

4.1 변수선언및유효범위 숙대창병모 2

변수선언과유효범위 변수선언 Declaration before Use! 대부분의언어에서변수는사용전에먼저선언해야한다. 변수의유효범위 (scope) 선언된변수가유효한 ( 사용될수있는 ) 프로그램내의범위 / 영역 변수이름뿐아니라함수등다른이름도생각해야한다. 정적유효범위 (Static scope) 규칙 선언된이름은선언된블록내에서만유효함대부분언어에서표준규칙으로사용됨 숙대창병모 3

변수선언 Syntax S let T x = E in S {;S} end T int bool Semantics 변수 x는 T 타입이다. 변수 x의유효범위는선언된블록내이다. Syntactic sugar let D1,D2 in S end let D1 in let D2 in S end end 숙대창병모 4

변수선언 Example in S let int x = 1 in x = x + 1 end Example in C { int x = 1; x = x + 1; } 숙대창병모 5

변수의의미 ( 시맨틱스 ) 대입문 x = E; 예를들어 x = x + 1; 오른쪽 x와왼쪽 x의의미가다르다! 변수 x 의의미 V[x]s = s(x) 메모리위치에저장된값 (r-value) (s, x = E) s[x [E]s] 메모리위치 (l-value) 숙대창병모 6

중첩블록 Example in S let int x = 2 in let int y = 3 in x = y + 2 end end outer block Example in C { int x = 2; { int y = 3; x = y+2; } } new variables declared in nested blocks inner block local variable global variable 숙대창병모 7

블록 (Blocks) Pascal procedure or function C, C++, Java {... } Ada ML declare... begin end let in end 숙대창병모 8

같은이름의변수 같은이름의변수가여러개선언될수있다. Example let int x = 1 in let int y = 2 in x = x + y end; let int x = 5 in x = x + 1 end; x = x * 2 end Example in C { int x = 1; { int y = 2; x = x + y; } { int x = 5; x = x + 1; } x = x * 2; } 숙대창병모 9

시맨틱스 수식혹은문장의의미파악 현재유효한변수들에대한바인딩정보가필요하다. 같은이름의변수가여러개있을수도있다. 각변수의바인딩정보 변수의선언된타입변수의유효범위변수의위치 컴파일러 / 인터프리터 실행 번역 / 해석을위해서변수의바인딩정보유지관리 실행을위해서변수값을저장하기위한메모리 (memory) 관리 숙대창병모 10

4.2 함수및유효범위규칙 숙대창병모 11

Syntax 함수선언 S let fun T1 f(t2 x) : S in S {;S} end return E f(e) Semantics 이름 f는선언된블록내에서만유효하다. 이름 f는정의된함수를나타낸다. Example let int y = 0, fun int square(int x) : return x * x in y = square(5) end 숙대창병모 12

함수의시맨틱스 수식혹은문장의의미파악 현재유효한함수들에대한바인딩정보가필요하다. 함수의바인딩정보 함수의선언된타입함수의유효범위함수의코드위치 컴파일러 / 인터프리터 번역 / 해석을위해서함수의바인딩정보도유지관리 숙대창병모 13

선언의유효범위 선언된식별자 ( 이름 ) 의유효범위 (scope) 선언된이름이유효한 ( 사용가능한 ) 프로그램의범위혹은영역 변수이름뿐아니라함수이름등도생각해야한다. 정적유효범위 (static scope) 규칙 선언된이름은선언된블록내에서만유효함대부분언어에서표준규칙으로사용됨 동적유효범위 (dynamic scope) 선언된이름은선언된블록의실행이끝날때까지유효함 실행경로에따라유효범위가달라질수있다. Old Lisp와 SNOBOL에서사용됨 숙대창병모 14

Example 2 0 let int x = 0 in 1 let fun int addsq(int y) : x = x + y * y in 2 let int x = 2 in 3 addsq(5) 4 end 5 end 6 end 정적유효범위규칙 동적유효범위규칙 숙대창병모 15

4.3 바인딩정보유지 / 관리 숙대창병모 16

왜바인딩정보를관리? 유효한이름 ( 식별자 ) 프로그램각지점에서유효한이름들은다르다. 컴파일러 / 인터프리터 프로그램을한줄씩읽으면서번역 / 해석한다. 프로그램의각지점에서유효한이름들에대한정보가있어야번역 / 해석할수있다. 따라서프로그램각지점에서유효한이름들에대한정보를유지관리해야한다. 숙대창병모 17

바인딩유지관리 다음블록을살펴보자 아이디어 let int x = 2 in let int y = 3 in x = y + 2 end end 블록시작 선언된변수들의바인딩정보를유지한다. 문장 바인딩정보를이용해서문장들을컴파일 / 인터프리터한다. 블록끝 선언된변수들은더이상유효하지않으므로바인딩정보를제거한다. 숙대창병모 18

Example 0 let int x = 0 in 1 let fun int addsq(int y) : x = x + y * y in 2 let int x = 2 in 3 addsq(5) 4 end 5 end 6 end 변수이름뿐만아니라함수이름의바인딩정보도유지 / 관리해야한다. 숙대창병모 19

바인딩유지관리 심볼테이블 (Symbol Table) 현재유효한바인딩정보를유지 / 관리하기위한자료구조 환경 (environment) 라고도한다. 심볼테이블유지 / 관리 컴파일러 컴파일하기위해바인딩정보유지 / 관리 인터프리터 해석해서실행하기위해바인딩정보유지 / 관리 숙대창병모 20

블록구조를위한심볼테이블 스택형태로유지관리 블록시작 블록내의선언을처리한다. 선언된이름의바인딩정보를심볼테이블에추가한다. 블록의끝 블록내의선언의바인딩정보를제거한다. 더이상필요없다. 숙대창병모 21

예 symtable[] token val ID 52 lexptr let int x = 1 in let int y = 2 in x = x + y end; let int x = 5 in x = x + 1 end; x = x * 2 end ID 1 lexemes[] x \0 y x \0 숙대창병모 22

HW #3 let 블록을포함한언어 S 에대한인터프리터작성 심볼테이블관리 Syntax S let T id = E {,T id = E} in S {;S} end T int bool Semantics 변수 id 는 T 타입이다. 변수 id 의유효범위는선언된블록내이다. 숙대창병모 23

4.4 Case Study 숙대창병모 24

다른언어에서선언및유효범위 무엇을선언하는가? 상수, 변수, 함수, 클래스 어디에선언하는가? 블록내혹은밖구조체 (struct) 클래스 어떻게선언하는가? 명시적선언 : Pascal, C, C++, Java, 묵시적선언 : Lisp, partly in FORTRAN 숙대창병모 25

블록구조언어 블록의중첩을허용하는언어 A B D C Algol, Pascal, Modula, Ada, C,... 숙대창병모 26

C 의블록 int x; double y; void p (void) { int x = 2; /* p 의블록 */ { int y = 3; /* 또하나의중첩블록 */ x = y + 2; } } 숙대창병모 27

Ada 블록 declare x:integer; y: boolean; begin x := 2; y := true; x := x+1; end 숙대창병모 28

Pascal 의블록 program ex; (* main 프로그램 *) var x: integer; (* 전역선언 *) procedure p; (* 전역선언 *) var y: boolean; (* p 내의선언 *) begin if x = 2 then begin end; end; begin (* main *) (* 선언할수없음 *) end. (* 프로그램 *) 숙대창병모 29

클래스내의선언 public class IntWithGcd { private int value; /* value 필트지역선언 */ public int intvalue() /* intvalue 메쏘드지역선언 */ { return value; } } public int gcd(int v) /* gcd 메쏘드지역선언 */ { } 숙대창병모 30

예 : C 언어의유효범위규칙 핵심아이디어 사용전선언 (Declaration before use) 선언의유효범위는선언된지점부터선언된블록끝까지 지역변수의유효범위 선언된지점부터함수끝까지 전역변수의유효범위 선언된지점부터파일끝까지 숙대창병모 31

예제 void p( ) { char y; y } int x; void q( ) { double z; z } p x q main() { int w[10]; w } main 숙대창병모 32

예 : Ada 언어의유효범위규칙 핵심아이디어 선언의유효범위는선언된블록내 예 B1: declare x: integer; y: boolean; begin x := 2; y := false; B2: declare a, b: integer; begin if y then a := x; else b := x; end if end B2; end B1; 숙대창병모 33

중첩블록에서선언 최중첩우선규칙 (Most closely nested rule) 한식별자가여러번선언된경우최중첩된선언을우선한다. 예 int x; void p( ) { char x; x = a ; /* local x */ } main() { x = 2; /* global x */ } 숙대창병모 34