X hits on this document





48 / 396

Chapter ‎18   Unsafe code

input-elements: input-element input-elements   input-element

input-element: whitespace comment token

Five basic elements make up the lexical structure of a C# source file: Line terminators (§‎2.3.1), white space (§‎2.3.3), comments (§‎2.3.2), tokens (§‎2.4), and pre-processing directives (§‎2.5). Of these basic elements, only tokens are significant in the syntactic grammar of a C# program (§‎2.2.3).

The lexical processing of a C# source file consists of reducing the file into a sequence of tokens which becomes the input to the syntactic analysis. Line terminators, white space, and comments can serve to separate tokens, and pre-processing directives can cause sections of the source file to be skipped, but otherwise these lexical elements have no impact on the syntactic structure of a C# program.

When several lexical grammar productions match a sequence of characters in a source file, the lexical processing always forms the longest possible lexical element. For example, the character sequence // is processed as the beginning of a single-line comment because that lexical element is longer than a single / token.

2.3.1 Line terminators

Line terminators divide the characters of a C# source file into lines.

new-line: Carriage return character (U+000D) Line feed character (U+000A) Carriage return character (U+000D) followed by line feed character (U+000A) Next line character (U+0085) Line separator character (U+2028) Paragraph separator character (U+2029)

For compatibility with source code editing tools that add end-of-file markers, and to enable a source file to be viewed as a sequence of properly terminated lines, the following transformations are applied, in order, to every source file in a C# program:

If the last character of the source file is a Control-Z character (U+001A), this character is deleted.

A carriage-return character (U+000D) is added to the end of the source file if that source file is non-empty and if the last character of the source file is not a carriage return (U+000D), a line feed (U+000A), a line separator (U+2028), or a paragraph separator (U+2029).


Two forms of comments are supported: single-line comments and delimited comments. Single-line comments start with the characters // and extend to the end of the source line. Delimited comments start with the characters /* and end with the characters */. Delimited comments may span multiple lines.

comment: single-line-comment delimited-comment

single-line-comment: //   input-charactersopt

Copyright Microsoft Corporation 1999-2003. All Rights Reserved.35

Document info
Document views1476
Page views1476
Page last viewedTue Jan 24 16:12:50 UTC 2017