목차
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