A language consists of a structure definition (called abstract syntax or meta model), a definition of the notation (also called concrete syntax) and semantics. In semantics we distinguish between the static semantics (constraints, typesystem) and the operational semantics (what something means as it is executed).