The denotational definition of integer arithmetic expressions is as follows.
Syntactic Domains
E: Expression
N: Number
D: Digit
E ::= E1 '+' E2 | E1 '–' E2 | E1 '*' E2 | '(' E ')' | N
N ::= N D | D
D ::= '0' | '1' | ... | '9'
Semantic Domains
Domain v: Integer = { ..., -2, -1, 0, 1, 2, ...}
Operations
+: Integer
× Integer
→ Integer
–: Integer
× Integer
→ Integer
*: Integer
× Integer
→ Integer
Semantic Functions
E: Expression → Integer
E[[E1 '+' E2]] = E[[E1]] + E[[E2]]
E[[E1 '–' E2]] = E[[E1]] – E[[E2]]
E[[E1 '*' E2]] = E[[E1]] * E[[E2]]
E[['(' E ')']] = E[[E]]
E[[N]] = N[[N]]
N: Number → Integer
N[[ND]] = 10 * N[[N]] + N[[D]]
N[[D]] = D[[D]]
D: Digit → Integer
D[['0']] = 0, D[['1']] = 1, ..., D[['9']] = 9