for validating the parsing.
So the main requirements of the interpreter are:
-- Parse the program, possible with tracing
+- Parse the program, possibly with tracing
- Analyse the parsed program to ensure consistency
- print the program
- execute the program
of an error message indicates one location in the file, and up to 2
types. So we provide a `printf`-like function which takes a format, a
language (a `struct exec` which has not yet been introduced), and 2
-types. "`$1`" reports the first type, "`$2`" reports the second. We
+types. "`%1`" reports the first type, "`%2`" reports the second. We
will need a function to print the location, once we know how that is
stored. As will be explained later, there are sometimes extra rules for
type matching and they might affect error messages, we need to pass those