diff --git a/standard/lexical-structure.md b/standard/lexical-structure.md index c7ba3ff3e..fccf58e02 100644 --- a/standard/lexical-structure.md +++ b/standard/lexical-structure.md @@ -1026,7 +1026,7 @@ right_shift_assignment ### 6.5.1 General -The pre-processing directives provide the ability to conditionally skip sections of compilation units, to report error and warning conditions, and to delineate distinct regions of source code. +The pre-processing directives provide the ability to conditionally skip sections of compilation units, to report error and warning conditions, to delineate distinct regions of source code, and to set the nullable context. > *Note*: The term “pre-processing directives” is used only for consistency with the C and C++ programming languages. In C#, there is no separate pre-processing step; pre-processing directives are processed as part of the lexical analysis phase. *end note* @@ -1042,6 +1042,7 @@ fragment PP_Kind | PP_Diagnostic | PP_Region | PP_Pragma + | PP_Nullable ; // Only recognised at the beginning of a line @@ -1082,7 +1083,7 @@ The following pre-processing directives are available: A pre-processing directive always occupies a separate line of source code and always begins with a `#` character and a pre-processing directive name. White space may occur before the `#` character and between the `#` character and the directive name. -A source line containing a `#define`, `#undef`, `#if`, `#elif`, `#else`, `#endif`, `#line`, or `#endregion` directive can end with a single-line comment. Delimited comments (the `/* */` style of comments) are not permitted on source lines containing pre-processing directives. +A source line containing a `#define`, `#undef`, `#if`, `#elif`, `#else`, `#endif`, `#line`, `#endregion`, or `#nullable` directive can end with a single-line comment. Delimited comments (the `/* */` style of comments) are not permitted on source lines containing pre-processing directives. Pre-processing directives are not part of the syntactic grammar of C#. However, pre-processing directives can be used to include or exclude sequences of tokens and can in that way affect the meaning of a C# program.