Expression์ ๊ฐ์ ์ฐ์ถํ๋ ๊ณ์ฐ์ด๊ณ ,
Statement๋ ํ๋์ ์ํํ๋ ๋ฌธ์ฅ์ด๋ค.
Statement๋ ์ข ์ข Expression์ ๋ดํฌํ๋ค.
| ํญ๋ชฉ | Expression (ํํ์) | Statement (๋ฌธ์ฅ) |
|---|---|---|
| ๋ชฉ์ | **๊ฐ(value)**์ ๊ณ์ฐ | **ํ๋(action)**์ ์ํ (ex: ์ํ ๋ณ๊ฒฝ) |
| ๊ฒฐ๊ณผ | ์ด๋ค ๊ฐ์ ์ฐ์ถ | ๋ณดํต ๊ฐ์ ์๊ณ ๋ถ์์ฉ(side-effect) ๋ฐ์ |
| ์ํ ๋ณํ | ์์ ๋๋ ์ ํ์ (์ผ๋ฐ์ ์ผ๋ก ์์) | ์์ (๋ณ์ ๋ณ๊ฒฝ, ๋ฃจํ ์คํ ๋ฑ) |
| ๋ ๋ฆฝ ์คํ ๊ฐ๋ฅ์ฑ | ์ผ๋ฐ์ ์ผ๋ก ๋ ๋ฆฝ ์คํ ๋ถ๊ฐ | ๋ ๋ฆฝ ์คํ ๊ฐ๋ฅ (ํ ์ค ๋จ์ ์ฝ๋) |
| ์๋ฏธ๋ก ์ ํด์ | โฆexprโง : Env โ Value |
โฆstmtโง : State โ State ๋๋ โโฅ |
| ์์ | 1 + 2, x * y, f(3) |
x := 1, if ... then ..., while ... |
| ํฌํจ ๊ด๊ณ | Statement ์์ Expression์ด ํฌํจ๋ ์ ์์ | Expression์ Statement์ ๊ตฌ์ฑ ์์์ผ ์ ์์ |
์์:
x := 1 + 2
1 + 2๋ expressionassignment statementexpression์ statement๋ฅผ ํฌํจํ์ง ์์| ์ธ์ด ์ ํ | ํน์ง |
|---|---|
| C, Java | Statement์ Expression์ ๋ช ํํ ๊ตฌ๋ถํจ |
| Python, JavaScript | ์ผ๋ถ Expression์ด Statement์ฒ๋ผ ์ฌ์ฉ๋๊ธฐ๋ ํจ (print("hi")) |
| Lisp, Haskell, Rust | ๋ชจ๋ ๊ฒ์ด Expression์ผ ์ ์์ (expression-based language) |