9.2 Grammars
This specification presents the syntax of the C# programming language using
two grammars. The lexical
grammar (§9.2.1) defines how Unicode characters are combined to form line
terminators, white space,
comments, tokens, and pre-processing directives. The syntactic grammar (§9.2
.2) defines how the tokens
resulting from the lexical grammar are combined to form C# programs.
9.2.1 Lexical grammar
The lexical grammar of C# is presented in §9.3, §9.4, and §9.5. The
terminal symbols of the lexical grammar are
the characters of the Unicode character set, and the lexical grammar
specifies how characters are combined to
form tokens (§9.4), white space (§9.3.3), comments (§9.3.2), and
pre-processing directives (§9.5).
Every source file in a C# program must conform to the input production of
the lexical grammar (§9.3).
9.2.2 Syntactic grammar
The syntactic grammar of C# is presented in the chapters and appendices
that follow this chapter. The terminal
symbols of the syntactic grammar are the tokens defined by the lexical
grammar, and the syntactic grammar
specifies how tokens are combined to form C# programs.
Every source file in a C# program must conform to the compilation-unit
production (§16.1) of the syntactic
grammar.