Languages with both Logical and Arithmetic Expressions
HNU CE 프로그래밍언어론 (2021년 1학기)
산술식 언어의 동작 과정 의미론
Syntax
e ::= n \mid x \mid e + e
Semantics
~\sigma,e \Downarrow v~
\sigma \in \texttt{Env} ~ = ~ \texttt{Name} \xrightarrow{_\mathrm{fin}} \texttt{Value}
\sigma ::= \{ x_1\mapsto v_1, \ldots, x_k\mapsto v_k\}
v \in \texttt{Value} ~ = ~ \texttt{Int}
\frac{}{\sigma,\,n \;\Downarrow\; n}
\frac{}{\sigma,\,
x \;\Downarrow\; \sigma(x)}
\frac{\sigma,\,e_1\Downarrow\,v_1 \quad \sigma,\,e_2\Downarrow\,v_2}{\sigma,\,e_1+\,e_2 \;\Downarrow\; v_1\texttt{+}\,v_2}
e \in \texttt{Expr}
n \in \texttt{Int}
논리식 언어의 동작 과정 의미론
Syntax
e ::= b \mid x \mid e \land e \mid \ldots
Semantics
~\sigma,e \Downarrow v~
\sigma \in \texttt{Env} ~ = ~ \texttt{Name} \xrightarrow{_\mathrm{fin}} \texttt{Value}
\sigma ::= \{ x_1\mapsto v_1, \ldots, x_k\mapsto v_k\}
v \in \texttt{Value} ~ = ~ \texttt{Bool}
\frac{}{\sigma,\,b \;\Downarrow\; b}
\frac{}{\sigma,\,
x \;\Downarrow\; \sigma(x)}
\frac{\sigma,\,e_1\Downarrow\,v_1 \quad \sigma,\,e_2\Downarrow\,v_2}{\sigma,\,e_1\land\,e_2 \;\Downarrow\; v_1 \texttt{\&\&}\, v_2}
e \in \texttt{Expr}
b \in \texttt{Bool}
산술식 논리식 모두 포함된 언어
Syntax
\begin{array}{l}
e \in \texttt{Expr} \quad n\in\texttt{Int} \quad b\in\texttt{Bool}
\\
e ::= x \mid \texttt{if}\;e\;\texttt{then}\;e\;\texttt{else}\;e\;
\\ \qquad\mid n \mid e + e \mid \ldots
\\ \qquad\mid b \mid e \land e \mid \neg e \mid \ldots
\\ \qquad\mid e = e \mid e \lt e \mid \ldots\\
\end{array}
Semantics
~\sigma,e \Downarrow v~
\sigma \in \texttt{Env} ~ = ~ \texttt{Name} \xrightarrow{_\mathrm{fin}} \texttt{Value}
\sigma ::= \{ x_1\mapsto v_1, \ldots, x_k\mapsto v_k\}
v \in \texttt{Value} ~ = ~~ {\color{red}???}
산술식 논리식 모두 포함된 언어
Syntax
\begin{array}{l}
e \in \texttt{Expr} \quad n\in\texttt{Int} \quad b\in\texttt{Bool}
\\
e ::= x \mid \texttt{if}\;e\;\texttt{then}\;e\;\texttt{else}\;e\;
\\ \qquad\mid n \mid e + e \mid \ldots
\\ \qquad\mid b \mid e \land e \mid \neg e \mid \ldots
\\ \qquad\mid e = e \mid e \lt e \mid \ldots\\
\end{array}
Semantics
~\sigma,e \Downarrow v~
\sigma \in \texttt{Env} ~ = ~ \texttt{Name} \xrightarrow{_\mathrm{fin}} \texttt{Value}
\sigma ::= \{ x_1\mapsto v_1, \ldots, x_k\mapsto v_k\}
v \in \texttt{Value} ~ = \texttt{Int}
\texttt{Bool} = \{0,1\} \subset \texttt{Int}
산술식 논리식 모두 포함된 언어
Syntax
\begin{array}{l}
e \in \texttt{Expr} \quad n\in\texttt{Int} \quad b\in\texttt{Bool}
\\
e ::= x \mid \texttt{if}\;e\;\texttt{then}\;e\;\texttt{else}\;e\;
\\ \qquad\mid n \mid e + e \mid \ldots
\\ \qquad\mid b \mid e \land e \mid \neg e \mid \ldots
\\ \qquad\mid e = e \mid e \lt e \mid \ldots\\
\end{array}
Semantics
~\sigma,e \Downarrow v~
\sigma \in \texttt{Env} ~ = ~ \texttt{Name} \xrightarrow{_\mathrm{fin}} \texttt{Value}
\sigma ::= \{ x_1\mapsto v_1, \ldots, x_k\mapsto v_k\}
v \in \texttt{Value} ~ = \texttt{Int} \uplus \texttt{Bool}
\texttt{Bool} \cap \texttt{Int} = \emptyset
비교식 의미규칙
Syntax
\begin{array}{l}
e ::= x \mid n \mid b
\mid e + e
\mid e \mid \neg e \mid e \land e
\\~\quad~~
\mid e = e \mid e \lt e \mid \texttt{if}\;e\;\texttt{then}\;e\;\texttt{else}\;e\;
\end{array}
Semantics
~\sigma,e \Downarrow v~
v \in \texttt{Value} \;=\; \texttt{Int} \uplus \texttt{Bool}
e \in \texttt{Expr} \quad n\in\texttt{Int} \quad b\in\texttt{Bool}
\frac{\sigma,\,e_1\,\Downarrow\,n_1 \quad \sigma,\,e_2\,\Downarrow\,n_2}{
\sigma,\,e_1 =\, e_2 \;\Downarrow\; n_1 \texttt{==}\, n_2}
\frac{\sigma,\,e_1\,\Downarrow\,b_1 \quad \sigma,\,e_2\,\Downarrow\,b_2}{
\sigma,\,e_1 =\, e_2 \;\Downarrow\; b_1 \texttt{==}\, b_2}
\frac{\sigma,\,e_1\,\Downarrow\,n_1 \quad \sigma,\,e_2\,\Downarrow\,n_2}{
\sigma,\,e_1 <\, e_2 \;\Downarrow\; n_1 \texttt{<}\, n_2}
\frac{\sigma,\,e_1\,\Downarrow\,b_1 \quad \sigma,\,e_2\,\Downarrow\,b_2}{
\sigma,\,e_1 <\, e_2 \;\Downarrow\; b_1 \texttt{<}\, b_2}
조건식 의미규칙
Syntax
\begin{array}{l}
e ::= x \mid n \mid b
\mid e + e
\mid e \mid \neg e \mid e \land e
\\~\quad~~
\mid e = e \mid e \lt e \mid \texttt{if}\;e\;\texttt{then}\;e\;\texttt{else}\;e\;
\end{array}
Semantics
~\sigma,e \Downarrow v~
v \in \texttt{Value} \;=\; \texttt{Int} \uplus \texttt{Bool}
e \in \texttt{Expr} \quad n\in\texttt{Int} \quad b\in\texttt{Bool}
\frac{\sigma,\,e\,\Downarrow\,\texttt{False} \quad \sigma,\,e_0\,\Downarrow\,v_0}{
\sigma,\,\texttt{if}\;e\;\texttt{then}\;e_1\;\texttt{else}\;e_0\;\Downarrow\; v_0}
\frac{\sigma,\,e\,\Downarrow\,\texttt{True} \quad \sigma,\,e_1\,\Downarrow\,v_1}{
\sigma,\,\texttt{if}\;e\;\texttt{then}\;e_1\;\texttt{else}\;e_0\;\Downarrow\; v_1}
의미규칙
\begin{array}{l}
e ::= x \mid n \mid b
\mid e + e
\mid \neg e \mid e \land e
\\~\quad~~
\mid e = e \mid e \lt e \mid \texttt{if}\;e\;\texttt{then}\;e\;\texttt{else}\;e\;
\end{array}
Semantics
~\sigma,e \Downarrow v~
v \in \texttt{Value} \;=\; \texttt{Int} \uplus \texttt{Bool}
e \in \texttt{Expr} \quad n\in\texttt{Int} \quad b\in\texttt{Bool}
\frac{\sigma,\,e\,\Downarrow\,\texttt{False} \quad \sigma,\,e_0\,\Downarrow\,v_0}{
\sigma,\,\texttt{if}\;e\;\texttt{then}\;e_1\;\texttt{else}\;e_0\;\Downarrow\; v_0}
\frac{\sigma,\,e\,\Downarrow\,\texttt{True} \quad \sigma,\,e_1\,\Downarrow\,v_1}{
\sigma,\,\texttt{if}\;e\;\texttt{then}\;e_1\;\texttt{else}\;e_1\;\Downarrow\; v_1}
Syntax
\frac{\sigma,\,e_1\,\Downarrow\,n_1 \quad \sigma,\,e_2\,\Downarrow\,n_2}{
\sigma,\,e_1 =\, e_2 \;\Downarrow\; n_1 \texttt{==}\, n_2}
\frac{\sigma,\,e_1\,\Downarrow\,b_1 \quad \sigma,\,e_2\,\Downarrow\,b_2}{
\sigma,\,e_1 =\, e_2 \;\Downarrow\; b_1 \texttt{==}\, b_2}
\frac{\sigma,\,e_1\,\Downarrow\,n_1 \quad \sigma,\,e_2\,\Downarrow\,n_2}{
\sigma,\,e_1 <\, e_2 \;\Downarrow\; n_1 \texttt{<}\, n_2}
\frac{\sigma,\,e_1\,\Downarrow\,b_1 \quad \sigma,\,e_2\,\Downarrow\,b_2}{
\sigma,\,e_1 <\, e_2 \;\Downarrow\; b_1 \texttt{<}\, b_2}
의미규칙
\begin{array}{l}
e ::= x \mid n \mid b
\mid e + e
\mid \neg e \mid e \land e
\\~\quad~~
\mid e = e \mid e \lt e \mid \texttt{if}\;e\;\texttt{then}\;e\;\texttt{else}\;e\;
\end{array}
Semantics
~\sigma,e \Downarrow v~
v \in \texttt{Value} \;=\; \texttt{Int} \uplus \texttt{Bool}
e \in \texttt{Expr} \quad n\in\texttt{Int} \quad b\in\texttt{Bool}
Syntax
\frac{\sigma,\,e_1\Downarrow\,n_1 \quad \sigma,\,e_2\Downarrow\,n_2}{\sigma,\,e_1+\,e_2 \;\Downarrow\; n_1\texttt{+}\,n_2}
\frac{\sigma,\,e_1\Downarrow\,b_1 \quad \sigma,\,e_2\Downarrow\,b_2}{\sigma,\,e_1\land\,e_2 \;\Downarrow\; b_1\texttt{\&\&}\,b_2}
\frac{\sigma,\,e\,\Downarrow\,b }{\sigma,\,\neg e \;\Downarrow\; \texttt{not}\,b}
하스켈에서 Value 정의하기
\begin{array}{l}
e ::= x \mid n \mid b
\mid e + e
\mid e \mid \neg e \mid e \land e
\\~\quad~~
\mid e = e \mid e \lt e \mid \texttt{if}\;e\;\texttt{then}\;e\;\texttt{else}\;e\;
\end{array}
Semantics
~\sigma,e \Downarrow v~
\texttt{Value} ~~ = \qquad \texttt{Int}~ \uplus \quad \qquad \texttt{Bool}
e \in \texttt{Expr} \quad n\in\texttt{Int} \quad b\in\texttt{Bool}
Syntax
data Value = Vint Int | Vbool Bool
v \in \texttt{Value} \;=\; \texttt{Int} \uplus \texttt{Bool}
논리식 산술식 모두 포함된 언어
By 안기영 (Ahn, Ki Yung)
논리식 산술식 모두 포함된 언어
HNU CE 프로그래밍언어론 (2021년 1학기)
- 658