Grammar csharp

start ::=

compilation_unit ::=

namespace_declaration ::=

qualified_identifier ::=

namespace_body ::=

extern_alias_directive ::=

using_directive ::=

using_alias_directive ::=

using_namespace_directive ::=

using_static_directive ::=

namespace_member_declaration ::=

type_declaration ::=

qualified_alias_member ::=

namespace_name ::=

type_name ::=

namespace_or_type_name ::=

type ::=

value_type ::=

struct_type ::=

simple_type ::=

numeric_type ::=

integral_type ::=

floating_point_type ::=

nullable_type ::=

non_nullable_value_type ::=

enum_type ::=

reference_type ::=

class_type ::=

interface_type ::=

array_type ::=

non_array_type ::=

rank_specifier ::=

dim_separator ::=

delegate_type ::=

type_argument_list ::=

type_arguments ::=

type_argument ::=

type_parameter ::=

variable_reference ::=

argument_list ::=

argument ::=

argument_name ::=

argument_value ::=

primary_expression ::=

primary_no_array_creation_expression ::=

interpolated_string_expression ::=

interpolated_regular_string ::=

interpolated_regular_string_body ::=

interpolation ::=

interpolated_verbatim_string ::=

interpolated_verbatim_string_body ::=

simple_name ::=

parenthesized_expression ::=

member_access ::=

predefined_type ::=

invocation_expression ::=

element_access ::=

this_access ::=

base_access ::=

post_increment_expression ::=

post_decrement_expression ::=

object_creation_expression ::=

object_or_collection_initializer ::=

object_initializer ::=

member_initializer_list ::=

member_initializer ::=

initializer_target ::=

initializer_value ::=

collection_initializer ::=

element_initializer_list ::=

element_initializer ::=

expression_list ::=

array_creation_expression ::=

delegate_creation_expression ::=

anonymous_object_creation_expression ::=

anonymous_object_initializer ::=

member_declarator_list ::=

member_declarator ::=

typeof_expression ::=

unbound_type_name ::=

generic_dimension_specifier ::=

comma ::=

checked_expression ::=

unchecked_expression ::=

default_value_expression ::=

nameof_expression ::=

named_entity ::=

named_entity_target ::=

unary_expression ::=

null_conditional_expression ::=

null_conditional_operations ::=

null_conditional_member_access ::=

null_conditional_invocation_expression ::=

pre_increment_expression ::=

pre_decrement_expression ::=

cast_expression ::=

await_expression ::=

multiplicative_expression ::=

additive_expression ::=

shift_expression ::=

relational_expression ::=

equality_expression ::=

and_expression ::=

exclusive_or_expression ::=

inclusive_or_expression ::=

conditional_and_expression ::=

conditional_or_expression ::=

null_coalescing_expression ::=

conditional_expression ::=

lambda_expression ::=

anonymous_method_expression ::=

anonymous_function_signature ::=

explicit_anonymous_function_signature ::=

explicit_anonymous_function_parameter_list ::=

explicit_anonymous_function_parameter ::=

anonymous_function_parameter_modifier ::=

implicit_anonymous_function_signature ::=

implicit_anonymous_function_parameter_list ::=

implicit_anonymous_function_parameter ::=

anonymous_function_body ::=

query_expression ::=

from_clause ::=

query_body ::=

query_body_clauses ::=

query_body_clause ::=

let_clause ::=

where_clause ::=

join_clause ::=

join_into_clause ::=

orderby_clause ::=

orderings ::=

ordering ::=

ordering_direction ::=

select_or_group_clause ::=

select_clause ::=

group_clause ::=

query_continuation ::=

assignment ::=

assignment_operator ::=

expression ::=

non_assignment_expression ::=

constant_expression ::=

boolean_expression ::=

statement ::=

embedded_statement ::=

block ::=

statement_list ::=

empty_statement ::=

labeled_statement ::=

declaration_statement ::=

local_variable_declaration ::=

local_variable_type ::=

local_variable_declarators ::=

local_variable_declarator ::=

local_variable_initializer ::=

local_constant_declaration ::=

constant_declarators ::=

constant_declarator ::=

expression_statement ::=

statement_expression ::=

selection_statement ::=

if_statement ::=

switch_statement ::=

switch_block ::=

switch_section ::=

switch_label ::=

iteration_statement ::=

while_statement ::=

do_statement ::=

for_statement ::=

for_initializer ::=

for_condition ::=

for_iterator ::=

statement_expression_list ::=

foreach_statement ::=

jump_statement ::=

break_statement ::=

continue_statement ::=

goto_statement ::=

return_statement ::=

throw_statement ::=

try_statement ::=

catch_clause ::=

exception_specifier ::=

exception_filter ::=

finally_clause ::=

checked_statement ::=

unchecked_statement ::=

lock_statement ::=

using_statement ::=

resource_acquisition ::=

yield_statement ::=

class_declaration ::=

class_modifier ::=

type_parameter_list ::=

type_parameters ::=

class_base ::=

interface_type_list ::=

type_parameter_constraints_clause ::=

type_parameter_constraints ::=

primary_constraint ::=

secondary_constraints ::=

constructor_constraint ::=

class_body ::=

class_member_declaration ::=

constant_declaration ::=

constant_modifier ::=

field_declaration ::=

field_modifier ::=

variable_declarators ::=

variable_declarator ::=

variable_initializer ::=

method_declaration ::=

method_header ::=

method_modifier ::=

return_type ::=

member_name ::=

method_body ::=

formal_parameter_list ::=

fixed_parameters ::=

fixed_parameter ::=

default_argument ::=

parameter_modifier ::=

parameter_array ::=

property_declaration ::=

property_modifier ::=

property_body ::=

property_initializer ::=

accessor_declarations ::=

get_accessor_declaration ::=

set_accessor_declaration ::=

accessor_modifier ::=

accessor_body ::=

event_declaration ::=

event_modifier ::=

event_accessor_declarations ::=

add_accessor_declaration ::=

remove_accessor_declaration ::=

indexer_declaration ::=

indexer_modifier ::=

indexer_declarator ::=

indexer_body ::=

operator_declaration ::=

operator_modifier ::=

operator_declarator ::=

unary_operator_declarator ::=

overloadable_unary_operator ::=

binary_operator_declarator ::=

overloadable_binary_operator ::=

conversion_operator_declarator ::=

operator_body ::=

constructor_declaration ::=

constructor_modifier ::=

constructor_declarator ::=

constructor_initializer ::=

constructor_body ::=

static_constructor_declaration ::=

static_constructor_modifiers ::=

static_constructor_body ::=

destructor_declaration ::=

destructor_body ::=

struct_declaration ::=

struct_modifier ::=

struct_interfaces ::=

struct_body ::=

struct_member_declaration ::=

array_initializer ::=

variable_initializer_list ::=

interface_declaration ::=

interface_modifier ::=

variant_type_parameter_list ::=

variant_type_parameters ::=

variance_annotation ::=

interface_base ::=

interface_body ::=

interface_member_declaration ::=

interface_method_declaration ::=

interface_property_declaration ::=

interface_accessors ::=

interface_event_declaration ::=

interface_indexer_declaration ::=

enum_declaration ::=

enum_base ::=

enum_body ::=

enum_modifier ::=

enum_member_declarations ::=

enum_member_declaration ::=

delegate_declaration ::=

delegate_modifier ::=

global_attributes ::=

global_attribute_section ::=

global_attribute_target_specifier ::=

global_attribute_target ::=

attributes ::=

attribute_section ::=

attribute_target_specifier ::=

attribute_target ::=

attribute_list ::=

attribute ::=

attribute_name ::=

attribute_arguments ::=

positional_argument_list ::=

positional_argument ::=

named_argument_list ::=

named_argument ::=

attribute_argument_expression ::=

class_modifier_unsafe ::=

struct_modifier_unsafe ::=

interface_modifier_unsafe ::=

delegate_modifier_unsafe ::=

field_modifier_unsafe ::=

method_modifier_unsafe ::=

property_modifier_unsafe ::=

event_modifier_unsafe ::=

indexer_modifier_unsafe ::=

operator_modifier_unsafe ::=

constructor_modifier_unsafe ::=

destructor_declaration_unsafe ::=

static_constructor_modifiers_unsafe ::=

embedded_statement_unsafe ::=

unsafe_statement ::=

type_unsafe ::=

pointer_type ::=

unmanaged_type ::=

primary_no_array_creation_expression_unsafe ::=

unary_expression_unsafe ::=

pointer_indirection_expression ::=

pointer_member_access ::=

pointer_element_access ::=

addressof_expression ::=

sizeof_expression ::=

fixed_statement ::=

fixed_pointer_declarators ::=

fixed_pointer_declarator ::=

fixed_pointer_initializer ::=

struct_member_declaration_unsafe ::=

fixed_size_buffer_declaration ::=

fixed_size_buffer_modifier ::=

buffer_element_type ::=

fixed_size_buffer_declarator ::=

local_variable_initializer_unsafe ::=

stackalloc_initializer ::=

single_line_doc_comment ::=

delimited_doc_comment ::=

input ::=

input_section ::=

input_section_part ::=

input_element ::=

new_line ::=

comment ::=

single_line_comment ::=

input_character ::=

new_line_character ::=

delimited_comment ::=

delimited_comment_section ::=

asterisk ::=

not_slash_or_asterisk ::=

whitespace ::=

token ::=

unicode_escape_sequence ::=

identifier ::=

available_identifier ::=

identifier_or_keyword ::=

identifier_start_character ::=

identifier_part_character ::=

letter_character ::=

combining_character ::=

decimal_digit_character ::=

connecting_character ::=

formatting_character ::=

keyword ::=

literal ::=

boolean_literal ::=

integer_literal ::=

decimal_integer_literal ::=

decimal_digit ::=

integer_type_suffix ::=

hexadecimal_integer_literal ::=

hex_digit ::=

real_literal ::=

exponent_part ::=

sign ::=

real_type_suffix ::=

character_literal ::=

character ::=

single_character ::=

simple_escape_sequence ::=

hexadecimal_escape_sequence ::=

string_literal ::=

regular_string_literal ::=

regular_string_literal_character ::=

single_regular_string_literal_character ::=

verbatim_string_literal ::=

verbatim_string_literal_character ::=

single_verbatim_string_literal_character ::=

quote_escape_sequence ::=

interpolated_string_literal ::=

interpolated_regular_string_literal ::=

interpolated_regular_string_literal_body ::=

interpolated_regular_string_whole ::=

interpolated_regular_string_start ::=

interpolated_regular_string_mid ::=

interpolated_regular_string_end ::=

interpolated_regular_string_characters_after_brace ::=

interpolated_regular_string_character ::=

interpolated_regular_string_character_no_brace ::=

single_interpolated_regular_string_character ::=

open_brace_escape_sequence ::=

close_brace_escape_sequence ::=

regular_balanced_text ::=

regular_balanced_text_part ::=

single_regular_balanced_text_character ::=

interpolation_format ::=

interpolation_format_character ::=

interpolated_verbatim_string_literal ::=

interpolated_verbatim_string_literal_body ::=

interpolated_verbatim_string_whole ::=

interpolated_verbatim_string_start ::=

interpolated_verbatim_string_mid ::=

interpolated_verbatim_string_end ::=

interpolated_verbatim_string_characters_after_brace ::=

interpolated_verbatim_string_character ::=

interpolated_verbatim_string_character_no_brace ::=

single_interpolated_verbatim_string_character ::=

verbatim_balanced_text ::=

verbatim_balanced_text_part ::=

single_verbatim_balanced_text_character ::=

null_literal ::=

operator_or_punctuator ::=

right_shift ::=

right_shift_assignment ::=

pp_directive ::=

conditional_symbol ::=

pp_expression ::=

pp_or_expression ::=

pp_and_expression ::=

pp_equality_expression ::=

pp_unary_expression ::=

pp_primary_expression ::=

pp_declaration ::=

pp_new_line ::=

pp_conditional ::=

pp_if_section ::=

pp_elif_section ::=

pp_else_section ::=

pp_endif ::=

conditional_section ::=

skipped_section ::=

skipped_section_part ::=

skipped_characters ::=

not_number_sign ::=

pp_diagnostic ::=

pp_message ::=

pp_region ::=

pp_start_region ::=

pp_end_region ::=

pp_line ::=

line_indicator ::=

file_name ::=

file_name_character ::=

pp_pragma ::=

pragma_body ::=

pragma_warning_body ::=

warning_action ::=

warning_list ::=

interpolated_string ::=

'

-

--

!

!=

"

""

#

$

%

%=

&

&&

&=

(

)

*

*=

,

.

/

/*

/**

//

///

/=

:

::

;

?

??

@

@"

[

\'

\"

\\

\0

\a

\b

\f

\n

\r

\t

\u

\U

\v

\x

]

^

^=

_

{

{{

|

||

|=

}

}}

~

+

++

+=

<

</ (U+002F), if not directly followed by / (U+002F) or * (U+002A)>

<<

<<=

<=

<A Unicode character of classes Lu, Ll, Lt, Lm, Lo, or Nl>

<A Unicode character of classes Mn or Mc>

<A Unicode character of the class Cf>

<A Unicode character of the class Nd>

<A Unicode character of the class Pc>

<A unicode_escape_sequence representing a character of classes Lu, Ll, Lt, Lm, Lo, or Nl>

<A unicode_escape_sequence representing a character of classes Mn or Mc>

<A unicode_escape_sequence representing a character of the class Cf>

<A unicode_escape_sequence representing a character of the class Nd>

<A unicode_escape_sequence representing a character of the class Pc>

<An identifier_or_keyword that is not a keyword>

<Any character except ' (U+0027), \ (U+005C), and new_line_character>

<Any character except " (U+0022), : (U+003A), { (U+007B) and } (U+007D)>

<Any character except " (U+0022), \ (U+005C), { (U+007B), } (U+007D), and new_line_character>

<Any character except " (U+0022), \ (U+005C), and new_line_character>

<Any character except " (U+0022), { (U+007B) and } (U+007D)>

<any character except ">

<Any character except / (U+002F), @ (U+0040), " (U+0022), $ (U+0024), ( (U+0028), ) (U+0029), [ (U+005B), ] (U+005D), { (U+007B) and } (U+007D)>

<Any character except / (U+002F), @ (U+0040), " (U+0022), $ (U+0024), ( (U+0028), ) (U+0029), [ (U+005B), ] (U+005D), { (U+007B), } (U+007D) and new_line_character>

<Any character with Unicode class Zs>

<Any identifier_or_keyword except true or false>

<Any input_character except ">

<Any input_character except #>

<Any interpolated_regular_string_character except close_brace_escape_sequence and any hexadecimal_escape_sequence or unicode_escape_sequence designating } (U+007D)>

<Any interpolated_verbatim_string_character except close_brace_escape_sequence>

<Any Unicode character except / or *>

<Any Unicode character except a new_line_character>

<Carriage return character (U+000D) followed by line feed character (U+000A)>

<Carriage return character (U+000D)>

<Form feed character (U+000C)>

<Horizontal tab character (U+0009)>

<Line feed character (U+000A)>

<Line separator character (U+2028)>

<Next line character (U+0085)>

<Paragraph separator character (U+2029)>

<UNDEFINED>

<Vertical tab character (U+000B)>

=

-=

==

=>

>

->

>=

>>

>>=

0

0x

0X

1

2

3

4

5

6

7

8

9

a

A

abstract

add

alias

as

ascending

assembly

await

b

B

base

bool

break

by

byte

c

C

case

catch

char

checked

class

const

continue

d

D

decimal

default

define

delegate

descending

disable

do

double

dynamic

e

E

elif

else

endif

endregion

enum

equals

error

event

explicit

extern

f

F

false

field

finally

fixed

float

for

foreach

from

get

goto

group

hidden

if

implicit

in

int

interface

internal

into

is

join

l

L

let

line

lock

long

lu

lU

Lu

LU

m

M

method

module

nameof

namespace

new

null

object

on

operator

orderby

out

override

param

params

partial

pragma

private

property

protected

public

readonly

ref

region

remove

restore

return

right_shift

sbyte

sealed

select

set

short

sizeof

stackalloc

static

string

struct

switch

this

throw

true

try

type

typeof

u

U

uint

ul

uL

Ul

UL

ulong

unchecked

undef

unsafe

ushort

using

var

virtual

void

volatile

warning

when

where

while

yield