We start investigating the semantics of programming languages by building interpreters to simulate their execution in a well-understood framework. Definition of the abstract and concrete syntax of the language. Definition of the computation rule of each construct in the abstract syntax. Expressed values are values that can be the result of the evaluation of an expression of the language defined by the syntax.
Denoted values are values that can be associated to variables in the language.
The object-language is the language we are describing and that is evaluated by the interpreter. We can, however, restrict ourselves, and force ourselves not to use the mutation facilities of the meta-language if we want to gain a better understanding of what is involved. During the course of the investigation, we will impose on ourselves various such restrictions to understand different aspects of the object-language. The first point to clarify is how the object-language will deal with primitives. The following schema provides one solution.