language and Fortran). The syntax and semantics of the language has to be inferred from this description, which may be written in natural or a formal language. A model implementation, sometimes written in the language being specified (e.g., Prolog). The syntax and semantics of the language are explicit in the behavior of the model implementation. Syntax The syntax of a programming language represents the definition of acceptable words, i.e. formal parameters and rules upon which to decide whether a given code is valid in respect to the language. On that note, the language syntax usually consists of a combination of the following three construction components: An alphabet (non-empty, finite set of symbols; usually Unicode characters) Regular expressions describing its lexemes (for alphabet-wise tokenisation) A Context-free grammar which describes how the lexemes may be combined in order to form a correct program Syntax specification generally supposes a natural language description in order to provide modeste comprehensibility. However, the formal representation of the above outlined components is usually part of the section as it favors the implementation and approval of the language and its concepts. Semantics Formulating a rigorous semantics of a large, complex, practical programming language is a daunting task even for experienced specialists, and the resulting specification can be difficult for anyone but experts to understand. The following are some of the ways in which programming language semantics can be described; all languages use at least one of these description methods, and some languages combine more than one Natural language: Description by human natural language. Formal semantics: Description by mathematics. Reference implementations: Description by computer program Test suites: Description by examples of programs and their expected behaviors. While few language specifications start off in this form, the evolution of some language specifications has been influenced by the semantics of a test suite (e.g. in the past the specification of Ada has been modified to match the behavior of the Ada Conformity Assessment Test Suite). Natural language Most widely used languages are specified using natural language descriptions of their semantics. This description usually takes the form of a reference manual for the language. These manuals can run to hundreds of pages, e.g., the print version of The Java Language Specification, 3rd Ed. is 596 pages long. The imprecision of natural language as a vehicle for describing programming language semantics can lead to problems with interpreting the specification. For example, the semantics