There are five compilation options that affect the semantics of the language. Three options, strict type semantics, explicit declaration semantics and comparison semantics, can be specified using option directives or can be defined by the compilation environment. The other two options may only be defined by the compilation environment. An option directive applies only to the source file in which it appears, and only one of each type of option directive may appear in a source file.