본문 바로가기

23년 1학기 학교공부/프로그래밍언어개론

[PL] Imperative Langauge : MiniC

목차

    728x90
    반응형
    SMALL

    📁 Imperative Langauge(명령형 언어)

    연속된 command(명령)을 통해 프로그램의 의미를 수행하는 언어를 말한다.

     

    command는 상태전이를 수행한다. 즉 statement.

    상태는 일반적으로 메모리 상태를 의미하고, 특정 메모리 상태에서 command 실행시 메모리 상태가 변경된다.

     

    C/C++, Java, Javascript, Python 등 일반적으로 statement를 지원하는 언어는 모두 imperative langauge이다.

    OCaml은 expression만으로 이루어지므로 imperative language가 아니다.

     

    line 1: x = 1; 			(* state0 : x and y are uninitialized *)
    line 2: y = 2; 			(* state1 : x is 1 and y is uninitialized *)
    line 3: if (y < 3) {	(* state2 : x is 1 and y is 2 (go to line 4) *)
    line 4: x = x + 4; 	(* state2 : x is 1 and y is 2 *)
    line 5: } else {
    line 6: x = x - 5;
    line 7: } 				(* state4 : x is 5 and y is 2 *)
    line 8: ...

     

     

     

    📁 MiniC : simple imperative language

    해당 포스팅에서는 아주 간단한 imperative language인 MiniC를 정의한다.

     

     

     

    📁 Concrete Syntax in MiniC

     

     

    📁 Abstract Syntax in MiniC

     

     

     

    📁 Value Domain in MiniC

     

     

    📁 Semantics in MiniC

    Semantic relations

     

     

    Semantics

     

     

    Formal Semantics

     

     

     

    📁 Example of MiniC

    x = 3; // [x ↦→ 3]
    y = 7; // [x ↦→ 3, y ↦→ 7]
    z = x < y; // [x ↦→ 3, y ↦→ 7, z ↦→ true]
    if x > y { // x > y = false in [x ↦→ 3, y ↦→ 7, z ↦→ true]
    y = x - 4; // unreachable
    } // [x ↦→ 3, y ↦→ 7, z ↦→ true]
    if y == -1 { // y == -1 false in [x ↦→ 3, y ↦→ 7, z ↦→ true]
    y = x - 4; // unreachable
    } else {
    z = x + y; // [x ↦→ 3, y ↦→ 7, z ↦→ 10]
    z = z - 5; // [x ↦→ 3, y ↦→ 7, z ↦→ 5]
    } // [x ↦→ 3, y ↦→ 7, z ↦→ 5]

     

     

     

    📁short circuit evaluation

    논리식 연산에 있어 결과가 정해진 경우 남은 expression 계산 없이 결과를 도출하는 방법을 short circuit evaluation이라고 한다.

     

     

    728x90
    반응형
    LIST