diff --git a/topics/extraction/bnf2bgf/pdf2lll.py b/topics/extraction/bnf2bgf/pdf2lll.py
index 2e31de44..31e186a3 100644
--- a/topics/extraction/bnf2bgf/pdf2lll.py
+++ b/topics/extraction/bnf2bgf/pdf2lll.py
@@ -241,7 +241,7 @@ def massageGrammar():
grammar['keyword'] = []
for kw in knownTerminals:
if kw.isalpha():
- grammar['keyword'].append(kw)
+ grammar['keyword'].append(quote(kw))
return
if __name__ == "__main__":
diff --git a/topics/grammars/c/iso-9899-1999/Makefile b/topics/grammars/c/iso-9899-1999/Makefile
index 446e6771..7a0c2e98 100644
--- a/topics/grammars/c/iso-9899-1999/Makefile
+++ b/topics/grammars/c/iso-9899-1999/Makefile
@@ -10,4 +10,4 @@ clean:
test:
make build
- ../../../../shared/tools/gdts iso-is-grammar.bgf extracted-grammar.bgf
+ ../../../../shared/tools/gdt iso-is-grammar.bgf extracted-grammar.bgf
diff --git a/topics/grammars/c/iso-9899-1999/extracted-grammar.bgf b/topics/grammars/c/iso-9899-1999/extracted-grammar.bgf
index 4fa56ba4..0fba3865 100644
--- a/topics/grammars/c/iso-9899-1999/extracted-grammar.bgf
+++ b/topics/grammars/c/iso-9899-1999/extracted-grammar.bgf
@@ -1,2474 +1,2473 @@
-
-
-
- primary-expression
-
-
-
- identifier
-
-
- constant
-
-
- string-literal
-
-
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
-
-
- postfix-expression
-
-
-
- primary-expression
-
-
-
-
- postfix-expression
-
-
- [
-
-
- expression
-
-
- ]
-
-
-
-
-
-
- postfix-expression
-
-
- (
-
-
-
-
- argument-expression-list
-
-
-
-
- )
-
-
-
-
-
-
- postfix-expression
-
-
- .
-
-
- identifier
-
-
-
-
-
-
- postfix-expression
-
-
- ->
-
-
- identifier
-
-
-
-
-
-
- postfix-expression
-
-
- ++
-
-
-
-
-
-
- postfix-expression
-
-
- --
-
-
-
-
-
-
- (
-
-
- type-name
-
-
- )
-
-
- {
-
-
- initializer-list
-
-
- }
-
-
-
-
-
-
- (
-
-
- type-name
-
-
- )
-
-
- {
-
-
- initializer-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- argument-expression-list
-
-
-
- assignment-expression
-
-
-
-
- argument-expression-list
-
-
- ,
-
-
- assignment-expression
-
-
-
-
-
-
-
- unary-expression
-
-
-
- postfix-expression
-
-
-
-
- ++
-
-
- unary-expression
-
-
-
-
-
-
- --
-
-
- unary-expression
-
-
-
-
-
-
- unary-operator
-
-
- cast-expression
-
-
-
-
-
-
- sizeof
-
-
- unary-expression
-
-
-
-
-
-
- sizeof
-
-
- (
-
-
- type-name
-
-
- )
-
-
-
-
-
-
-
- unary-operator
-
-
-
- &
-
-
- *
-
-
- +
-
-
- -
-
-
- ~
-
-
- !
-
-
-
-
-
- cast-expression
-
-
-
- unary-expression
-
-
-
-
- (
-
-
- type-name
-
-
- )
-
-
- cast-expression
-
-
-
-
-
-
-
- multiplicative-expression
-
-
-
- cast-expression
-
-
-
-
- multiplicative-expression
-
-
- *
-
-
- cast-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- /
-
-
- cast-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- %
-
-
- cast-expression
-
-
-
-
-
-
-
- additive-expression
-
-
-
- multiplicative-expression
-
-
-
-
- additive-expression
-
-
- +
-
-
- multiplicative-expression
-
-
-
-
-
-
- additive-expression
-
-
- -
-
-
- multiplicative-expression
-
-
-
-
-
-
-
- shift-expression
-
-
-
- additive-expression
-
-
-
-
- shift-expression
-
-
- <<
-
-
- additive-expression
-
-
-
-
-
-
- shift-expression
-
-
- >>
-
-
- additive-expression
-
-
-
-
-
-
-
- relational-expression
-
-
-
- shift-expression
-
-
-
-
- relational-expression
-
-
- <
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- <=
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >=
-
-
- shift-expression
-
-
-
-
-
-
-
- equality-expression
-
-
-
- relational-expression
-
-
-
-
- equality-expression
-
-
- ==
-
-
- relational-expression
-
-
-
-
-
-
- equality-expression
-
-
- !=
-
-
- relational-expression
-
-
-
-
-
-
-
- AND-expression
-
-
-
- equality-expression
-
-
-
-
- AND-expression
-
-
- &
-
-
- equality-expression
-
-
-
-
-
-
-
- exclusive-OR-expression
-
-
-
- AND-expression
-
-
-
-
- exclusive-OR-expression
-
-
- ^
-
-
- AND-expression
-
-
-
-
-
-
-
- inclusive-OR-expression
-
-
-
- exclusive-OR-expression
-
-
-
-
- inclusive-OR-expression
-
-
- |
-
-
- exclusive-OR-expression
-
-
-
-
-
-
-
- logical-AND-expression
-
-
-
- inclusive-OR-expression
-
-
-
-
- logical-AND-expression
-
-
- &&
-
-
- inclusive-OR-expression
-
-
-
-
-
-
-
- logical-OR-expression
-
-
-
- logical-AND-expression
-
-
-
-
- logical-OR-expression
-
-
- ||
-
-
- logical-AND-expression
-
-
-
-
-
-
-
- conditional-expression
-
-
-
- logical-OR-expression
-
-
-
-
- logical-OR-expression
-
-
- ?
-
-
- expression
-
-
- :
-
-
- conditional-expression
-
-
-
-
-
-
-
- assignment-expression
-
-
-
- conditional-expression
-
-
-
-
- unary-expression
-
-
- assignment-operator
-
-
- assignment-expression
-
-
-
-
-
-
-
- assignment-operator
-
-
-
- =
-
-
- *=
-
-
- /=
-
-
- %=
-
-
- +=
-
-
- -=
-
-
- <<=
-
-
- >>=
-
-
- &=
-
-
- ^=
-
-
- |=
-
-
-
-
-
- expression
-
-
-
- assignment-expression
-
-
-
-
- expression
-
-
- ,
-
-
- assignment-expression
-
-
-
-
-
-
-
- constant-expression
-
- conditional-expression
-
-
-
- declaration
-
-
-
- declaration-specifiers
-
-
-
-
- init-declarator-list
-
-
-
-
- ;
-
-
-
-
-
- declaration-specifiers
-
-
-
-
-
- storage-class-specifier
-
-
-
-
- declaration-specifiers
-
-
-
-
-
-
-
-
- type-specifier
-
-
-
-
- declaration-specifiers
-
-
-
-
-
-
-
-
- type-qualifier
-
-
-
-
- declaration-specifiers
-
-
-
-
-
-
-
-
- function-specifier
-
-
-
-
- declaration-specifiers
-
-
-
-
-
-
-
-
-
- init-declarator-list
-
-
-
- init-declarator
-
-
-
-
- init-declarator-list
-
-
- ,
-
-
- init-declarator
-
-
-
-
-
-
-
- init-declarator
-
-
-
- declarator
-
-
-
-
- declarator
-
-
- =
-
-
- initializer
-
-
-
-
-
-
-
- storage-class-specifier
-
-
-
- typedef
-
-
- extern
-
-
- static
-
-
- auto
-
-
- register
-
-
-
-
-
- type-specifier
-
-
-
- void
-
-
- char
-
-
- short
-
-
- int
-
-
- long
-
-
- float
-
-
- double
-
-
- signed
-
-
- unsigned
-
-
- _Bool
-
-
- _Complex
-
-
- _Imaginary
-
-
- struct-or-union-specifier
-
-
- enum-specifier
-
-
- typedef-name
-
-
-
-
-
- struct-or-union-specifier
-
-
-
-
-
- struct-or-union
-
-
-
-
- identifier
-
-
-
-
- {
-
-
- struct-declaration-list
-
-
- }
-
-
-
-
-
-
- struct-or-union
-
-
- identifier
-
-
-
-
-
-
-
- struct-or-union
-
-
-
- struct
-
-
- union
-
-
-
-
-
- struct-declaration-list
-
-
-
- struct-declaration
-
-
-
-
- struct-declaration-list
-
-
- struct-declaration
-
-
-
-
-
-
-
- struct-declaration
-
-
-
- specifier-qualifier-list
-
-
- struct-declarator-list
-
-
- ;
-
-
-
-
-
- specifier-qualifier-list
-
-
-
-
-
- type-specifier
-
-
-
-
- specifier-qualifier-list
-
-
-
-
-
-
-
-
- type-qualifier
-
-
-
-
- specifier-qualifier-list
-
-
-
-
-
-
-
-
-
- struct-declarator-list
-
-
-
- struct-declarator
-
-
-
-
- struct-declarator-list
-
-
- ,
-
-
- struct-declarator
-
-
-
-
-
-
-
- struct-declarator
-
-
-
- declarator
-
-
-
-
-
-
- declarator
-
-
-
-
- :
-
-
- constant-expression
-
-
-
-
-
-
-
- enum-specifier
-
-
-
-
-
- enum
-
-
-
-
- identifier
-
-
-
-
- {
-
-
- enumerator-list
-
-
- }
-
-
-
-
-
-
- enum
-
-
-
-
- identifier
-
-
-
-
- {
-
-
- enumerator-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
- enum
-
-
- identifier
-
-
-
-
-
-
-
- enumerator-list
-
-
-
- enumerator
-
-
-
-
- enumerator-list
-
-
- ,
-
-
- enumerator
-
-
-
-
-
-
-
- enumerator
-
-
-
- enumeration-constant
-
-
-
-
- enumeration-constant
-
-
- =
-
-
- constant-expression
-
-
-
-
-
-
-
- type-qualifier
-
-
-
- const
-
-
- restrict
-
-
- volatile
-
-
-
-
-
- function-specifier
-
- inline
-
-
-
- declarator
-
-
-
-
-
- pointer
-
-
-
-
- direct-declarator
-
-
-
-
-
- direct-declarator
-
-
-
- identifier
-
-
-
-
- (
-
-
- declarator
-
-
- )
-
-
-
-
-
-
- direct-declarator
-
-
- [
-
-
-
-
- type-qualifier-list
-
-
-
-
-
-
- assignment-expression
-
-
-
-
- ]
-
-
-
-
-
-
- direct-declarator
-
-
- [
-
-
- static
-
-
-
-
- type-qualifier-list
-
-
-
-
- assignment-expression
-
-
- ]
-
-
-
-
-
-
- direct-declarator
-
-
- [
-
-
- type-qualifier-list
-
-
- static
-
-
- assignment-expression
-
-
- ]
-
-
-
-
-
-
- direct-declarator
-
-
- [
-
-
-
-
- type-qualifier-list
-
-
-
-
- *
-
-
- ]
-
-
-
-
-
-
- direct-declarator
-
-
- (
-
-
- parameter-type-list
-
-
- )
-
-
-
-
-
-
- direct-declarator
-
-
- (
-
-
-
-
- identifier-list
-
-
-
-
- )
-
-
-
-
-
-
-
- pointer
-
-
-
-
-
- *
-
-
-
-
- type-qualifier-list
-
-
-
-
-
-
-
-
- *
-
-
-
-
- type-qualifier-list
-
-
-
-
- pointer
-
-
-
-
-
-
-
- type-qualifier-list
-
-
-
- type-qualifier
-
-
-
-
- type-qualifier-list
-
-
- type-qualifier
-
-
-
-
-
-
-
- parameter-type-list
-
-
-
- parameter-list
-
-
-
-
- parameter-list
-
-
- ,
-
-
- ...
-
-
-
-
-
-
-
- parameter-list
-
-
-
- parameter-declaration
-
-
-
-
- parameter-list
-
-
- ,
-
-
- parameter-declaration
-
-
-
-
-
-
-
- parameter-declaration
-
-
-
-
-
- declaration-specifiers
-
-
- declarator
-
-
-
-
-
-
- declaration-specifiers
-
-
-
-
- abstract-declarator
-
-
-
-
-
-
-
-
-
- identifier-list
-
-
-
- identifier
-
-
-
-
- identifier-list
-
-
- ,
-
-
- identifier
-
-
-
-
-
-
-
- type-name
-
-
-
- specifier-qualifier-list
-
-
-
-
- abstract-declarator
-
-
-
-
-
-
-
- abstract-declarator
-
-
-
- pointer
-
-
-
-
-
-
- pointer
-
-
-
-
- direct-abstract-declarator
-
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
-
- (
-
-
- abstract-declarator
-
-
- )
-
-
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
- [
-
-
-
-
- assignment-expression
-
-
-
-
- ]
-
-
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
- [
-
-
- *
-
-
- ]
-
-
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
- (
-
-
-
-
- parameter-type-list
-
-
-
-
- )
-
-
-
-
-
-
-
- typedef-name
-
- identifier
-
-
-
- initializer
-
-
-
- assignment-expression
-
-
-
-
- {
-
-
- initializer-list
-
-
- }
-
-
-
-
-
-
- {
-
-
- initializer-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- initializer-list
-
-
-
-
-
-
-
- designation
-
-
-
-
- initializer
-
-
-
-
-
-
- initializer-list
-
-
- ,
-
-
-
-
- designation
-
-
-
-
- initializer
-
-
-
-
-
-
-
- designation
-
-
-
- designator-list
-
-
- =
-
-
-
-
-
- designator-list
-
-
-
- designator
-
-
-
-
- designator-list
-
-
- designator
-
-
-
-
-
-
-
- designator
-
-
-
-
-
- [
-
-
- constant-expression
-
-
- ]
-
-
-
-
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- statement
-
-
-
- labeled-statement
-
-
- compound-statement
-
-
- expression-statement
-
-
- selection-statement
-
-
- iteration-statement
-
-
- jump-statement
-
-
-
-
-
- labeled-statement
-
-
-
-
-
- identifier
-
-
- :
-
-
- statement
-
-
-
-
-
-
- case
-
-
- constant-expression
-
-
- :
-
-
- statement
-
-
-
-
-
-
- default
-
-
- :
-
-
- statement
-
-
-
-
-
-
-
- compound-statement
-
-
-
- {
-
-
-
-
- block-item-list
-
-
-
-
- }
-
-
-
-
-
- block-item-list
-
-
-
- block-item
-
-
-
-
- block-item-list
-
-
- block-item
-
-
-
-
-
-
-
- block-item
-
-
-
- declaration
-
-
- statement
-
-
-
-
-
- expression-statement
-
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
- selection-statement
-
-
-
-
-
- if
-
-
- (
-
-
- expression
-
-
- )
-
-
- statement
-
-
-
-
-
-
- if
-
-
- (
-
-
- expression
-
-
- )
-
-
- statement
-
-
- else
-
-
- statement
-
-
-
-
-
-
- switch
-
-
- (
-
-
- expression
-
-
- )
-
-
- statement
-
-
-
-
-
-
-
- iteration-statement
-
-
-
-
-
- while
-
-
- (
-
-
- expression
-
-
- )
-
-
- statement
-
-
-
-
-
-
- do
-
-
- statement
-
-
- while
-
-
- (
-
-
- expression
-
-
- )
-
-
- ;
-
-
-
-
-
-
- for
-
-
- (
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
- expression
-
-
-
-
- )
-
-
- statement
-
-
-
-
-
-
- for
-
-
- (
-
-
- declaration
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
- expression
-
-
-
-
- )
-
-
- statement
-
-
-
-
-
-
-
- jump-statement
-
-
-
-
-
- goto
-
-
- identifier
-
-
- ;
-
-
-
-
-
-
- continue
-
-
- ;
-
-
-
-
-
-
- break
-
-
- ;
-
-
-
-
-
-
- return
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
-
-
- translation-unit
-
-
-
- external-declaration
-
-
-
-
- translation-unit
-
-
- external-declaration
-
-
-
-
-
-
-
- external-declaration
-
-
-
- function-definition
-
-
- declaration
-
-
-
-
-
- function-definition
-
-
-
- declaration-specifiers
-
-
- declarator
-
-
-
-
- declaration-list
-
-
-
-
- compound-statement
-
-
-
-
-
- declaration-list
-
-
-
- declaration
-
-
-
-
- declaration-list
-
-
- declaration
-
-
-
-
-
-
-
- keyword
-
-
-
- auto
-
-
- break
-
-
- case
-
-
- char
-
-
- const
-
-
- continue
-
-
- default
-
-
- do
-
-
- double
-
-
- else
-
-
- enum
-
-
- extern
-
-
- float
-
-
- for
-
-
- goto
-
-
- if
-
-
- inline
-
-
- int
-
-
- long
-
-
- register
-
-
- restrict
-
-
- return
-
-
- short
-
-
- signed
-
-
- sizeof
-
-
- static
-
-
- struct
-
-
- switch
-
-
- typedef
-
-
- union
-
-
- unsigned
-
-
- void
-
-
- volatile
-
-
- while
-
-
-
-
-
\ No newline at end of file
+
+
+ primary-expression
+
+
+
+ identifier
+
+
+ constant
+
+
+ string-literal
+
+
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+
+
+ postfix-expression
+
+
+
+ primary-expression
+
+
+
+
+ postfix-expression
+
+
+ [
+
+
+ expression
+
+
+ ]
+
+
+
+
+
+
+ postfix-expression
+
+
+ (
+
+
+
+
+ argument-expression-list
+
+
+
+
+ )
+
+
+
+
+
+
+ postfix-expression
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+ postfix-expression
+
+
+ ->
+
+
+ identifier
+
+
+
+
+
+
+ postfix-expression
+
+
+ ++
+
+
+
+
+
+
+ postfix-expression
+
+
+ --
+
+
+
+
+
+
+ (
+
+
+ type-name
+
+
+ )
+
+
+ {
+
+
+ initializer-list
+
+
+ }
+
+
+
+
+
+
+ (
+
+
+ type-name
+
+
+ )
+
+
+ {
+
+
+ initializer-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ argument-expression-list
+
+
+
+ assignment-expression
+
+
+
+
+ argument-expression-list
+
+
+ ,
+
+
+ assignment-expression
+
+
+
+
+
+
+
+ unary-expression
+
+
+
+ postfix-expression
+
+
+
+
+ ++
+
+
+ unary-expression
+
+
+
+
+
+
+ --
+
+
+ unary-expression
+
+
+
+
+
+
+ unary-operator
+
+
+ cast-expression
+
+
+
+
+
+
+ sizeof
+
+
+ unary-expression
+
+
+
+
+
+
+ sizeof
+
+
+ (
+
+
+ type-name
+
+
+ )
+
+
+
+
+
+
+
+ unary-operator
+
+
+
+ &
+
+
+ *
+
+
+ +
+
+
+ -
+
+
+ ~
+
+
+ !
+
+
+
+
+
+ cast-expression
+
+
+
+ unary-expression
+
+
+
+
+ (
+
+
+ type-name
+
+
+ )
+
+
+ cast-expression
+
+
+
+
+
+
+
+ multiplicative-expression
+
+
+
+ cast-expression
+
+
+
+
+ multiplicative-expression
+
+
+ *
+
+
+ cast-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ /
+
+
+ cast-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ %
+
+
+ cast-expression
+
+
+
+
+
+
+
+ additive-expression
+
+
+
+ multiplicative-expression
+
+
+
+
+ additive-expression
+
+
+ +
+
+
+ multiplicative-expression
+
+
+
+
+
+
+ additive-expression
+
+
+ -
+
+
+ multiplicative-expression
+
+
+
+
+
+
+
+ shift-expression
+
+
+
+ additive-expression
+
+
+
+
+ shift-expression
+
+
+ <<
+
+
+ additive-expression
+
+
+
+
+
+
+ shift-expression
+
+
+ >>
+
+
+ additive-expression
+
+
+
+
+
+
+
+ relational-expression
+
+
+
+ shift-expression
+
+
+
+
+ relational-expression
+
+
+ <
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ <=
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >=
+
+
+ shift-expression
+
+
+
+
+
+
+
+ equality-expression
+
+
+
+ relational-expression
+
+
+
+
+ equality-expression
+
+
+ ==
+
+
+ relational-expression
+
+
+
+
+
+
+ equality-expression
+
+
+ !=
+
+
+ relational-expression
+
+
+
+
+
+
+
+ AND-expression
+
+
+
+ equality-expression
+
+
+
+
+ AND-expression
+
+
+ &
+
+
+ equality-expression
+
+
+
+
+
+
+
+ exclusive-OR-expression
+
+
+
+ AND-expression
+
+
+
+
+ exclusive-OR-expression
+
+
+ ^
+
+
+ AND-expression
+
+
+
+
+
+
+
+ inclusive-OR-expression
+
+
+
+ exclusive-OR-expression
+
+
+
+
+ inclusive-OR-expression
+
+
+ |
+
+
+ exclusive-OR-expression
+
+
+
+
+
+
+
+ logical-AND-expression
+
+
+
+ inclusive-OR-expression
+
+
+
+
+ logical-AND-expression
+
+
+ &&
+
+
+ inclusive-OR-expression
+
+
+
+
+
+
+
+ logical-OR-expression
+
+
+
+ logical-AND-expression
+
+
+
+
+ logical-OR-expression
+
+
+ ||
+
+
+ logical-AND-expression
+
+
+
+
+
+
+
+ conditional-expression
+
+
+
+ logical-OR-expression
+
+
+
+
+ logical-OR-expression
+
+
+ ?
+
+
+ expression
+
+
+ :
+
+
+ conditional-expression
+
+
+
+
+
+
+
+ assignment-expression
+
+
+
+ conditional-expression
+
+
+
+
+ unary-expression
+
+
+ assignment-operator
+
+
+ assignment-expression
+
+
+
+
+
+
+
+ assignment-operator
+
+
+
+ =
+
+
+ *=
+
+
+ /=
+
+
+ %=
+
+
+ +=
+
+
+ -=
+
+
+ <<=
+
+
+ >>=
+
+
+ &=
+
+
+ ^=
+
+
+ |=
+
+
+
+
+
+ expression
+
+
+
+ assignment-expression
+
+
+
+
+ expression
+
+
+ ,
+
+
+ assignment-expression
+
+
+
+
+
+
+
+ constant-expression
+
+ conditional-expression
+
+
+
+ declaration
+
+
+
+ declaration-specifiers
+
+
+
+
+ init-declarator-list
+
+
+
+
+ ;
+
+
+
+
+
+ declaration-specifiers
+
+
+
+
+
+ storage-class-specifier
+
+
+
+
+ declaration-specifiers
+
+
+
+
+
+
+
+
+ type-specifier
+
+
+
+
+ declaration-specifiers
+
+
+
+
+
+
+
+
+ type-qualifier
+
+
+
+
+ declaration-specifiers
+
+
+
+
+
+
+
+
+ function-specifier
+
+
+
+
+ declaration-specifiers
+
+
+
+
+
+
+
+
+
+ init-declarator-list
+
+
+
+ init-declarator
+
+
+
+
+ init-declarator-list
+
+
+ ,
+
+
+ init-declarator
+
+
+
+
+
+
+
+ init-declarator
+
+
+
+ declarator
+
+
+
+
+ declarator
+
+
+ =
+
+
+ initializer
+
+
+
+
+
+
+
+ storage-class-specifier
+
+
+
+ typedef
+
+
+ extern
+
+
+ static
+
+
+ auto
+
+
+ register
+
+
+
+
+
+ type-specifier
+
+
+
+ void
+
+
+ char
+
+
+ short
+
+
+ int
+
+
+ long
+
+
+ float
+
+
+ double
+
+
+ signed
+
+
+ unsigned
+
+
+ _Bool
+
+
+ _Complex
+
+
+ _Imaginary
+
+
+ struct-or-union-specifier
+
+
+ enum-specifier
+
+
+ typedef-name
+
+
+
+
+
+ struct-or-union-specifier
+
+
+
+
+
+ struct-or-union
+
+
+
+
+ identifier
+
+
+
+
+ {
+
+
+ struct-declaration-list
+
+
+ }
+
+
+
+
+
+
+ struct-or-union
+
+
+ identifier
+
+
+
+
+
+
+
+ struct-or-union
+
+
+
+ struct
+
+
+ union
+
+
+
+
+
+ struct-declaration-list
+
+
+
+ struct-declaration
+
+
+
+
+ struct-declaration-list
+
+
+ struct-declaration
+
+
+
+
+
+
+
+ struct-declaration
+
+
+
+ specifier-qualifier-list
+
+
+ struct-declarator-list
+
+
+ ;
+
+
+
+
+
+ specifier-qualifier-list
+
+
+
+
+
+ type-specifier
+
+
+
+
+ specifier-qualifier-list
+
+
+
+
+
+
+
+
+ type-qualifier
+
+
+
+
+ specifier-qualifier-list
+
+
+
+
+
+
+
+
+
+ struct-declarator-list
+
+
+
+ struct-declarator
+
+
+
+
+ struct-declarator-list
+
+
+ ,
+
+
+ struct-declarator
+
+
+
+
+
+
+
+ struct-declarator
+
+
+
+ declarator
+
+
+
+
+
+
+ declarator
+
+
+
+
+ :
+
+
+ constant-expression
+
+
+
+
+
+
+
+ enum-specifier
+
+
+
+
+
+ enum
+
+
+
+
+ identifier
+
+
+
+
+ {
+
+
+ enumerator-list
+
+
+ }
+
+
+
+
+
+
+ enum
+
+
+
+
+ identifier
+
+
+
+
+ {
+
+
+ enumerator-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+ enum
+
+
+ identifier
+
+
+
+
+
+
+
+ enumerator-list
+
+
+
+ enumerator
+
+
+
+
+ enumerator-list
+
+
+ ,
+
+
+ enumerator
+
+
+
+
+
+
+
+ enumerator
+
+
+
+ enumeration-constant
+
+
+
+
+ enumeration-constant
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+
+
+ type-qualifier
+
+
+
+ const
+
+
+ restrict
+
+
+ volatile
+
+
+
+
+
+ function-specifier
+
+ inline
+
+
+
+ declarator
+
+
+
+
+
+ pointer
+
+
+
+
+ direct-declarator
+
+
+
+
+
+ direct-declarator
+
+
+
+ identifier
+
+
+
+
+ (
+
+
+ declarator
+
+
+ )
+
+
+
+
+
+
+ direct-declarator
+
+
+ [
+
+
+
+
+ type-qualifier-list
+
+
+
+
+
+
+ assignment-expression
+
+
+
+
+ ]
+
+
+
+
+
+
+ direct-declarator
+
+
+ [
+
+
+ static
+
+
+
+
+ type-qualifier-list
+
+
+
+
+ assignment-expression
+
+
+ ]
+
+
+
+
+
+
+ direct-declarator
+
+
+ [
+
+
+ type-qualifier-list
+
+
+ static
+
+
+ assignment-expression
+
+
+ ]
+
+
+
+
+
+
+ direct-declarator
+
+
+ [
+
+
+
+
+ type-qualifier-list
+
+
+
+
+ *
+
+
+ ]
+
+
+
+
+
+
+ direct-declarator
+
+
+ (
+
+
+ parameter-type-list
+
+
+ )
+
+
+
+
+
+
+ direct-declarator
+
+
+ (
+
+
+
+
+ identifier-list
+
+
+
+
+ )
+
+
+
+
+
+
+
+ pointer
+
+
+
+
+
+ *
+
+
+
+
+ type-qualifier-list
+
+
+
+
+
+
+
+
+ *
+
+
+
+
+ type-qualifier-list
+
+
+
+
+ pointer
+
+
+
+
+
+
+
+ type-qualifier-list
+
+
+
+ type-qualifier
+
+
+
+
+ type-qualifier-list
+
+
+ type-qualifier
+
+
+
+
+
+
+
+ parameter-type-list
+
+
+
+ parameter-list
+
+
+
+
+ parameter-list
+
+
+ ,
+
+
+ ...
+
+
+
+
+
+
+
+ parameter-list
+
+
+
+ parameter-declaration
+
+
+
+
+ parameter-list
+
+
+ ,
+
+
+ parameter-declaration
+
+
+
+
+
+
+
+ parameter-declaration
+
+
+
+
+
+ declaration-specifiers
+
+
+ declarator
+
+
+
+
+
+
+ declaration-specifiers
+
+
+
+
+ abstract-declarator
+
+
+
+
+
+
+
+
+
+ identifier-list
+
+
+
+ identifier
+
+
+
+
+ identifier-list
+
+
+ ,
+
+
+ identifier
+
+
+
+
+
+
+
+ type-name
+
+
+
+ specifier-qualifier-list
+
+
+
+
+ abstract-declarator
+
+
+
+
+
+
+
+ abstract-declarator
+
+
+
+ pointer
+
+
+
+
+
+
+ pointer
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+
+ (
+
+
+ abstract-declarator
+
+
+ )
+
+
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+ [
+
+
+
+
+ assignment-expression
+
+
+
+
+ ]
+
+
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+ [
+
+
+ *
+
+
+ ]
+
+
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+ (
+
+
+
+
+ parameter-type-list
+
+
+
+
+ )
+
+
+
+
+
+
+
+ typedef-name
+
+ identifier
+
+
+
+ initializer
+
+
+
+ assignment-expression
+
+
+
+
+ {
+
+
+ initializer-list
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ initializer-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ initializer-list
+
+
+
+
+
+
+
+ designation
+
+
+
+
+ initializer
+
+
+
+
+
+
+ initializer-list
+
+
+ ,
+
+
+
+
+ designation
+
+
+
+
+ initializer
+
+
+
+
+
+
+
+ designation
+
+
+
+ designator-list
+
+
+ =
+
+
+
+
+
+ designator-list
+
+
+
+ designator
+
+
+
+
+ designator-list
+
+
+ designator
+
+
+
+
+
+
+
+ designator
+
+
+
+
+
+ [
+
+
+ constant-expression
+
+
+ ]
+
+
+
+
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ statement
+
+
+
+ labeled-statement
+
+
+ compound-statement
+
+
+ expression-statement
+
+
+ selection-statement
+
+
+ iteration-statement
+
+
+ jump-statement
+
+
+
+
+
+ labeled-statement
+
+
+
+
+
+ identifier
+
+
+ :
+
+
+ statement
+
+
+
+
+
+
+ case
+
+
+ constant-expression
+
+
+ :
+
+
+ statement
+
+
+
+
+
+
+ default
+
+
+ :
+
+
+ statement
+
+
+
+
+
+
+
+ compound-statement
+
+
+
+ {
+
+
+
+
+ block-item-list
+
+
+
+
+ }
+
+
+
+
+
+ block-item-list
+
+
+
+ block-item
+
+
+
+
+ block-item-list
+
+
+ block-item
+
+
+
+
+
+
+
+ block-item
+
+
+
+ declaration
+
+
+ statement
+
+
+
+
+
+ expression-statement
+
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+ selection-statement
+
+
+
+
+
+ if
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+ if
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ statement
+
+
+ else
+
+
+ statement
+
+
+
+
+
+
+ switch
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+
+ iteration-statement
+
+
+
+
+
+ while
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+ do
+
+
+ statement
+
+
+ while
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ ;
+
+
+
+
+
+
+ for
+
+
+ (
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+ expression
+
+
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+ for
+
+
+ (
+
+
+ declaration
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+ expression
+
+
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+
+ jump-statement
+
+
+
+
+
+ goto
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+
+ continue
+
+
+ ;
+
+
+
+
+
+
+ break
+
+
+ ;
+
+
+
+
+
+
+ return
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ translation-unit
+
+
+
+ external-declaration
+
+
+
+
+ translation-unit
+
+
+ external-declaration
+
+
+
+
+
+
+
+ external-declaration
+
+
+
+ function-definition
+
+
+ declaration
+
+
+
+
+
+ function-definition
+
+
+
+ declaration-specifiers
+
+
+ declarator
+
+
+
+
+ declaration-list
+
+
+
+
+ compound-statement
+
+
+
+
+
+ declaration-list
+
+
+
+ declaration
+
+
+
+
+ declaration-list
+
+
+ declaration
+
+
+
+
+
+
+
+ keyword
+
+
+
+ auto
+
+
+ break
+
+
+ case
+
+
+ char
+
+
+ const
+
+
+ continue
+
+
+ default
+
+
+ do
+
+
+ double
+
+
+ else
+
+
+ enum
+
+
+ extern
+
+
+ float
+
+
+ for
+
+
+ goto
+
+
+ if
+
+
+ inline
+
+
+ int
+
+
+ long
+
+
+ register
+
+
+ restrict
+
+
+ return
+
+
+ short
+
+
+ signed
+
+
+ sizeof
+
+
+ static
+
+
+ struct
+
+
+ switch
+
+
+ typedef
+
+
+ union
+
+
+ unsigned
+
+
+ void
+
+
+ volatile
+
+
+ while
+
+
+
+
+
diff --git a/topics/grammars/c/iso-9899-tc2/Makefile b/topics/grammars/c/iso-9899-tc2/Makefile
index 446e6771..7a0c2e98 100644
--- a/topics/grammars/c/iso-9899-tc2/Makefile
+++ b/topics/grammars/c/iso-9899-tc2/Makefile
@@ -10,4 +10,4 @@ clean:
test:
make build
- ../../../../shared/tools/gdts iso-is-grammar.bgf extracted-grammar.bgf
+ ../../../../shared/tools/gdt iso-is-grammar.bgf extracted-grammar.bgf
diff --git a/topics/grammars/c/iso-9899-tc2/extracted-grammar.bgf b/topics/grammars/c/iso-9899-tc2/extracted-grammar.bgf
index c5a79f79..9dd4aa47 100644
--- a/topics/grammars/c/iso-9899-tc2/extracted-grammar.bgf
+++ b/topics/grammars/c/iso-9899-tc2/extracted-grammar.bgf
@@ -1,2471 +1,2470 @@
-
-
-
- primary-expression
-
-
-
- identifier
-
-
- constant
-
-
- string-literal
-
-
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
-
-
- postfix-expression
-
-
-
- primary-expression
-
-
-
-
- postfix-expression
-
-
- [
-
-
- expression
-
-
- ]
-
-
-
-
-
-
- postfix-expression
-
-
- (
-
-
-
-
- argument-expression-list
-
-
-
-
- )
-
-
-
-
-
-
- postfix-expression
-
-
- .
-
-
- identifier
-
-
-
-
-
-
- postfix-expression
-
-
- ->
-
-
- identifier
-
-
-
-
-
-
- postfix-expression
-
-
- ++
-
-
-
-
-
-
- postfix-expression
-
-
- --
-
-
-
-
-
-
- (
-
-
- type-name
-
-
- )
-
-
- {
-
-
- initializer-list
-
-
- }
-
-
-
-
-
-
- (
-
-
- type-name
-
-
- )
-
-
- {
-
-
- initializer-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- argument-expression-list
-
-
-
- assignment-expression
-
-
-
-
- argument-expression-list
-
-
- ,
-
-
- assignment-expression
-
-
-
-
-
-
-
- unary-expression
-
-
-
- postfix-expression
-
-
-
-
- ++
-
-
- unary-expression
-
-
-
-
-
-
- --
-
-
- unary-expression
-
-
-
-
-
-
- unary-operator
-
-
- cast-expression
-
-
-
-
-
-
- sizeof
-
-
- unary-expression
-
-
-
-
-
-
- sizeof
-
-
- (
-
-
- type-name
-
-
- )
-
-
-
-
-
-
-
- unary-operator
-
-
-
- &
-
-
- *
-
-
- +
-
-
- -
-
-
- ~
-
-
- !
-
-
-
-
-
- cast-expression
-
-
-
- unary-expression
-
-
-
-
- (
-
-
- type-name
-
-
- )
-
-
- cast-expression
-
-
-
-
-
-
-
- multiplicative-expression
-
-
-
- cast-expression
-
-
-
-
- multiplicative-expression
-
-
- *
-
-
- cast-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- /
-
-
- cast-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- %
-
-
- cast-expression
-
-
-
-
-
-
-
- additive-expression
-
-
-
- multiplicative-expression
-
-
-
-
- additive-expression
-
-
- +
-
-
- multiplicative-expression
-
-
-
-
-
-
- additive-expression
-
-
- -
-
-
- multiplicative-expression
-
-
-
-
-
-
-
- shift-expression
-
-
-
- additive-expression
-
-
-
-
- shift-expression
-
-
- <<
-
-
- additive-expression
-
-
-
-
-
-
- shift-expression
-
-
- >>
-
-
- additive-expression
-
-
-
-
-
-
-
- relational-expression
-
-
-
- shift-expression
-
-
-
-
- relational-expression
-
-
- <
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- <=
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >=
-
-
- shift-expression
-
-
-
-
-
-
-
- equality-expression
-
-
-
- relational-expression
-
-
-
-
- equality-expression
-
-
- ==
-
-
- relational-expression
-
-
-
-
-
-
- equality-expression
-
-
- !=
-
-
- relational-expression
-
-
-
-
-
-
-
- AND-expression
-
-
-
- equality-expression
-
-
-
-
- AND-expression
-
-
- &
-
-
- equality-expression
-
-
-
-
-
-
-
- exclusive-OR-expression
-
-
-
- AND-expression
-
-
-
-
- exclusive-OR-expression
-
-
- ^
-
-
- AND-expression
-
-
-
-
-
-
-
- inclusive-OR-expression
-
-
-
- exclusive-OR-expression
-
-
-
-
- inclusive-OR-expression
-
-
- |
-
-
- exclusive-OR-expression
-
-
-
-
-
-
-
- logical-AND-expression
-
-
-
- inclusive-OR-expression
-
-
-
-
- logical-AND-expression
-
-
- &&
-
-
- inclusive-OR-expression
-
-
-
-
-
-
-
- logical-OR-expression
-
-
-
- logical-AND-expression
-
-
-
-
- logical-OR-expression
-
-
- ||
-
-
- logical-AND-expression
-
-
-
-
-
-
-
- conditional-expression
-
-
-
- logical-OR-expression
-
-
-
-
- logical-OR-expression
-
-
- ?
-
-
- expression
-
-
- :
-
-
- conditional-expression
-
-
-
-
-
-
-
- assignment-expression
-
-
-
- conditional-expression
-
-
-
-
- unary-expression
-
-
- assignment-operator
-
-
- assignment-expression
-
-
-
-
-
-
-
- assignment-operator
-
-
-
- =
-
-
- *=
-
-
- /=
-
-
- %=
-
-
- +=
-
-
- -=
-
-
- <<=
-
-
- >>=
-
-
- &=
-
-
- ^=
-
-
- |=
-
-
-
-
-
- expression
-
-
-
- assignment-expression
-
-
-
-
- expression
-
-
- ,
-
-
- assignment-expression
-
-
-
-
-
-
-
- constant-expression
-
- conditional-expression
-
-
-
- declaration
-
-
-
- declaration-specifiers
-
-
-
-
- init-declarator-list
-
-
-
-
- ;
-
-
-
-
-
- declaration-specifiers
-
-
-
-
-
- storage-class-specifier
-
-
-
-
- declaration-specifiers
-
-
-
-
-
-
-
-
- type-specifier
-
-
-
-
- declaration-specifiers
-
-
-
-
-
-
-
-
- type-qualifier
-
-
-
-
- declaration-specifiers
-
-
-
-
-
-
-
-
- function-specifier
-
-
-
-
- declaration-specifiers
-
-
-
-
-
-
-
-
-
- init-declarator-list
-
-
-
- init-declarator
-
-
-
-
- init-declarator-list
-
-
- ,
-
-
- init-declarator
-
-
-
-
-
-
-
- init-declarator
-
-
-
- declarator
-
-
-
-
- declarator
-
-
- =
-
-
- initializer
-
-
-
-
-
-
-
- storage-class-specifier
-
-
-
- typedef
-
-
- extern
-
-
- static
-
-
- auto
-
-
- register
-
-
-
-
-
- type-specifier
-
-
-
- void
-
-
- char
-
-
- short
-
-
- int
-
-
- long
-
-
- float
-
-
- double
-
-
- signed
-
-
- unsigned
-
-
- _Bool
-
-
- _Complex
-
-
- struct-or-union-specifier
-
-
- enum-specifier
-
-
- typedef-name
-
-
-
-
-
- struct-or-union-specifier
-
-
-
-
-
- struct-or-union
-
-
-
-
- identifier
-
-
-
-
- {
-
-
- struct-declaration-list
-
-
- }
-
-
-
-
-
-
- struct-or-union
-
-
- identifier
-
-
-
-
-
-
-
- struct-or-union
-
-
-
- struct
-
-
- union
-
-
-
-
-
- struct-declaration-list
-
-
-
- struct-declaration
-
-
-
-
- struct-declaration-list
-
-
- struct-declaration
-
-
-
-
-
-
-
- struct-declaration
-
-
-
- specifier-qualifier-list
-
-
- struct-declarator-list
-
-
- ;
-
-
-
-
-
- specifier-qualifier-list
-
-
-
-
-
- type-specifier
-
-
-
-
- specifier-qualifier-list
-
-
-
-
-
-
-
-
- type-qualifier
-
-
-
-
- specifier-qualifier-list
-
-
-
-
-
-
-
-
-
- struct-declarator-list
-
-
-
- struct-declarator
-
-
-
-
- struct-declarator-list
-
-
- ,
-
-
- struct-declarator
-
-
-
-
-
-
-
- struct-declarator
-
-
-
- declarator
-
-
-
-
-
-
- declarator
-
-
-
-
- :
-
-
- constant-expression
-
-
-
-
-
-
-
- enum-specifier
-
-
-
-
-
- enum
-
-
-
-
- identifier
-
-
-
-
- {
-
-
- enumerator-list
-
-
- }
-
-
-
-
-
-
- enum
-
-
-
-
- identifier
-
-
-
-
- {
-
-
- enumerator-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
- enum
-
-
- identifier
-
-
-
-
-
-
-
- enumerator-list
-
-
-
- enumerator
-
-
-
-
- enumerator-list
-
-
- ,
-
-
- enumerator
-
-
-
-
-
-
-
- enumerator
-
-
-
- enumeration-constant
-
-
-
-
- enumeration-constant
-
-
- =
-
-
- constant-expression
-
-
-
-
-
-
-
- type-qualifier
-
-
-
- const
-
-
- restrict
-
-
- volatile
-
-
-
-
-
- function-specifier
-
- inline
-
-
-
- declarator
-
-
-
-
-
- pointer
-
-
-
-
- direct-declarator
-
-
-
-
-
- direct-declarator
-
-
-
- identifier
-
-
-
-
- (
-
-
- declarator
-
-
- )
-
-
-
-
-
-
- direct-declarator
-
-
- [
-
-
-
-
- type-qualifier-list
-
-
-
-
-
-
- assignment-expression
-
-
-
-
- ]
-
-
-
-
-
-
- direct-declarator
-
-
- [
-
-
- static
-
-
-
-
- type-qualifier-list
-
-
-
-
- assignment-expression
-
-
- ]
-
-
-
-
-
-
- direct-declarator
-
-
- [
-
-
- type-qualifier-list
-
-
- static
-
-
- assignment-expression
-
-
- ]
-
-
-
-
-
-
- direct-declarator
-
-
- [
-
-
-
-
- type-qualifier-list
-
-
-
-
- *
-
-
- ]
-
-
-
-
-
-
- direct-declarator
-
-
- (
-
-
- parameter-type-list
-
-
- )
-
-
-
-
-
-
- direct-declarator
-
-
- (
-
-
-
-
- identifier-list
-
-
-
-
- )
-
-
-
-
-
-
-
- pointer
-
-
-
-
-
- *
-
-
-
-
- type-qualifier-list
-
-
-
-
-
-
-
-
- *
-
-
-
-
- type-qualifier-list
-
-
-
-
- pointer
-
-
-
-
-
-
-
- type-qualifier-list
-
-
-
- type-qualifier
-
-
-
-
- type-qualifier-list
-
-
- type-qualifier
-
-
-
-
-
-
-
- parameter-type-list
-
-
-
- parameter-list
-
-
-
-
- parameter-list
-
-
- ,
-
-
- ...
-
-
-
-
-
-
-
- parameter-list
-
-
-
- parameter-declaration
-
-
-
-
- parameter-list
-
-
- ,
-
-
- parameter-declaration
-
-
-
-
-
-
-
- parameter-declaration
-
-
-
-
-
- declaration-specifiers
-
-
- declarator
-
-
-
-
-
-
- declaration-specifiers
-
-
-
-
- abstract-declarator
-
-
-
-
-
-
-
-
-
- identifier-list
-
-
-
- identifier
-
-
-
-
- identifier-list
-
-
- ,
-
-
- identifier
-
-
-
-
-
-
-
- type-name
-
-
-
- specifier-qualifier-list
-
-
-
-
- abstract-declarator
-
-
-
-
-
-
-
- abstract-declarator
-
-
-
- pointer
-
-
-
-
-
-
- pointer
-
-
-
-
- direct-abstract-declarator
-
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
-
- (
-
-
- abstract-declarator
-
-
- )
-
-
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
- [
-
-
-
-
- assignment-expression
-
-
-
-
- ]
-
-
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
- [
-
-
- *
-
-
- ]
-
-
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
- (
-
-
-
-
- parameter-type-list
-
-
-
-
- )
-
-
-
-
-
-
-
- typedef-name
-
- identifier
-
-
-
- initializer
-
-
-
- assignment-expression
-
-
-
-
- {
-
-
- initializer-list
-
-
- }
-
-
-
-
-
-
- {
-
-
- initializer-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- initializer-list
-
-
-
-
-
-
-
- designation
-
-
-
-
- initializer
-
-
-
-
-
-
- initializer-list
-
-
- ,
-
-
-
-
- designation
-
-
-
-
- initializer
-
-
-
-
-
-
-
- designation
-
-
-
- designator-list
-
-
- =
-
-
-
-
-
- designator-list
-
-
-
- designator
-
-
-
-
- designator-list
-
-
- designator
-
-
-
-
-
-
-
- designator
-
-
-
-
-
- [
-
-
- constant-expression
-
-
- ]
-
-
-
-
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- statement
-
-
-
- labeled-statement
-
-
- compound-statement
-
-
- expression-statement
-
-
- selection-statement
-
-
- iteration-statement
-
-
- jump-statement
-
-
-
-
-
- labeled-statement
-
-
-
-
-
- identifier
-
-
- :
-
-
- statement
-
-
-
-
-
-
- case
-
-
- constant-expression
-
-
- :
-
-
- statement
-
-
-
-
-
-
- default
-
-
- :
-
-
- statement
-
-
-
-
-
-
-
- compound-statement
-
-
-
- {
-
-
-
-
- block-item-list
-
-
-
-
- }
-
-
-
-
-
- block-item-list
-
-
-
- block-item
-
-
-
-
- block-item-list
-
-
- block-item
-
-
-
-
-
-
-
- block-item
-
-
-
- declaration
-
-
- statement
-
-
-
-
-
- expression-statement
-
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
- selection-statement
-
-
-
-
-
- if
-
-
- (
-
-
- expression
-
-
- )
-
-
- statement
-
-
-
-
-
-
- if
-
-
- (
-
-
- expression
-
-
- )
-
-
- statement
-
-
- else
-
-
- statement
-
-
-
-
-
-
- switch
-
-
- (
-
-
- expression
-
-
- )
-
-
- statement
-
-
-
-
-
-
-
- iteration-statement
-
-
-
-
-
- while
-
-
- (
-
-
- expression
-
-
- )
-
-
- statement
-
-
-
-
-
-
- do
-
-
- statement
-
-
- while
-
-
- (
-
-
- expression
-
-
- )
-
-
- ;
-
-
-
-
-
-
- for
-
-
- (
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
- expression
-
-
-
-
- )
-
-
- statement
-
-
-
-
-
-
- for
-
-
- (
-
-
- declaration
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
- expression
-
-
-
-
- )
-
-
- statement
-
-
-
-
-
-
-
- jump-statement
-
-
-
-
-
- goto
-
-
- identifier
-
-
- ;
-
-
-
-
-
-
- continue
-
-
- ;
-
-
-
-
-
-
- break
-
-
- ;
-
-
-
-
-
-
- return
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
-
-
- translation-unit
-
-
-
- external-declaration
-
-
-
-
- translation-unit
-
-
- external-declaration
-
-
-
-
-
-
-
- external-declaration
-
-
-
- function-definition
-
-
- declaration
-
-
-
-
-
- function-definition
-
-
-
- declaration-specifiers
-
-
- declarator
-
-
-
-
- declaration-list
-
-
-
-
- compound-statement
-
-
-
-
-
- declaration-list
-
-
-
- declaration
-
-
-
-
- declaration-list
-
-
- declaration
-
-
-
-
-
-
-
- keyword
-
-
-
- auto
-
-
- break
-
-
- case
-
-
- char
-
-
- const
-
-
- continue
-
-
- default
-
-
- do
-
-
- double
-
-
- else
-
-
- enum
-
-
- extern
-
-
- float
-
-
- for
-
-
- goto
-
-
- if
-
-
- inline
-
-
- int
-
-
- long
-
-
- register
-
-
- restrict
-
-
- return
-
-
- short
-
-
- signed
-
-
- sizeof
-
-
- static
-
-
- struct
-
-
- switch
-
-
- typedef
-
-
- union
-
-
- unsigned
-
-
- void
-
-
- volatile
-
-
- while
-
-
-
-
-
\ No newline at end of file
+
+
+ primary-expression
+
+
+
+ identifier
+
+
+ constant
+
+
+ string-literal
+
+
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+
+
+ postfix-expression
+
+
+
+ primary-expression
+
+
+
+
+ postfix-expression
+
+
+ [
+
+
+ expression
+
+
+ ]
+
+
+
+
+
+
+ postfix-expression
+
+
+ (
+
+
+
+
+ argument-expression-list
+
+
+
+
+ )
+
+
+
+
+
+
+ postfix-expression
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+ postfix-expression
+
+
+ ->
+
+
+ identifier
+
+
+
+
+
+
+ postfix-expression
+
+
+ ++
+
+
+
+
+
+
+ postfix-expression
+
+
+ --
+
+
+
+
+
+
+ (
+
+
+ type-name
+
+
+ )
+
+
+ {
+
+
+ initializer-list
+
+
+ }
+
+
+
+
+
+
+ (
+
+
+ type-name
+
+
+ )
+
+
+ {
+
+
+ initializer-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ argument-expression-list
+
+
+
+ assignment-expression
+
+
+
+
+ argument-expression-list
+
+
+ ,
+
+
+ assignment-expression
+
+
+
+
+
+
+
+ unary-expression
+
+
+
+ postfix-expression
+
+
+
+
+ ++
+
+
+ unary-expression
+
+
+
+
+
+
+ --
+
+
+ unary-expression
+
+
+
+
+
+
+ unary-operator
+
+
+ cast-expression
+
+
+
+
+
+
+ sizeof
+
+
+ unary-expression
+
+
+
+
+
+
+ sizeof
+
+
+ (
+
+
+ type-name
+
+
+ )
+
+
+
+
+
+
+
+ unary-operator
+
+
+
+ &
+
+
+ *
+
+
+ +
+
+
+ -
+
+
+ ~
+
+
+ !
+
+
+
+
+
+ cast-expression
+
+
+
+ unary-expression
+
+
+
+
+ (
+
+
+ type-name
+
+
+ )
+
+
+ cast-expression
+
+
+
+
+
+
+
+ multiplicative-expression
+
+
+
+ cast-expression
+
+
+
+
+ multiplicative-expression
+
+
+ *
+
+
+ cast-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ /
+
+
+ cast-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ %
+
+
+ cast-expression
+
+
+
+
+
+
+
+ additive-expression
+
+
+
+ multiplicative-expression
+
+
+
+
+ additive-expression
+
+
+ +
+
+
+ multiplicative-expression
+
+
+
+
+
+
+ additive-expression
+
+
+ -
+
+
+ multiplicative-expression
+
+
+
+
+
+
+
+ shift-expression
+
+
+
+ additive-expression
+
+
+
+
+ shift-expression
+
+
+ <<
+
+
+ additive-expression
+
+
+
+
+
+
+ shift-expression
+
+
+ >>
+
+
+ additive-expression
+
+
+
+
+
+
+
+ relational-expression
+
+
+
+ shift-expression
+
+
+
+
+ relational-expression
+
+
+ <
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ <=
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >=
+
+
+ shift-expression
+
+
+
+
+
+
+
+ equality-expression
+
+
+
+ relational-expression
+
+
+
+
+ equality-expression
+
+
+ ==
+
+
+ relational-expression
+
+
+
+
+
+
+ equality-expression
+
+
+ !=
+
+
+ relational-expression
+
+
+
+
+
+
+
+ AND-expression
+
+
+
+ equality-expression
+
+
+
+
+ AND-expression
+
+
+ &
+
+
+ equality-expression
+
+
+
+
+
+
+
+ exclusive-OR-expression
+
+
+
+ AND-expression
+
+
+
+
+ exclusive-OR-expression
+
+
+ ^
+
+
+ AND-expression
+
+
+
+
+
+
+
+ inclusive-OR-expression
+
+
+
+ exclusive-OR-expression
+
+
+
+
+ inclusive-OR-expression
+
+
+ |
+
+
+ exclusive-OR-expression
+
+
+
+
+
+
+
+ logical-AND-expression
+
+
+
+ inclusive-OR-expression
+
+
+
+
+ logical-AND-expression
+
+
+ &&
+
+
+ inclusive-OR-expression
+
+
+
+
+
+
+
+ logical-OR-expression
+
+
+
+ logical-AND-expression
+
+
+
+
+ logical-OR-expression
+
+
+ ||
+
+
+ logical-AND-expression
+
+
+
+
+
+
+
+ conditional-expression
+
+
+
+ logical-OR-expression
+
+
+
+
+ logical-OR-expression
+
+
+ ?
+
+
+ expression
+
+
+ :
+
+
+ conditional-expression
+
+
+
+
+
+
+
+ assignment-expression
+
+
+
+ conditional-expression
+
+
+
+
+ unary-expression
+
+
+ assignment-operator
+
+
+ assignment-expression
+
+
+
+
+
+
+
+ assignment-operator
+
+
+
+ =
+
+
+ *=
+
+
+ /=
+
+
+ %=
+
+
+ +=
+
+
+ -=
+
+
+ <<=
+
+
+ >>=
+
+
+ &=
+
+
+ ^=
+
+
+ |=
+
+
+
+
+
+ expression
+
+
+
+ assignment-expression
+
+
+
+
+ expression
+
+
+ ,
+
+
+ assignment-expression
+
+
+
+
+
+
+
+ constant-expression
+
+ conditional-expression
+
+
+
+ declaration
+
+
+
+ declaration-specifiers
+
+
+
+
+ init-declarator-list
+
+
+
+
+ ;
+
+
+
+
+
+ declaration-specifiers
+
+
+
+
+
+ storage-class-specifier
+
+
+
+
+ declaration-specifiers
+
+
+
+
+
+
+
+
+ type-specifier
+
+
+
+
+ declaration-specifiers
+
+
+
+
+
+
+
+
+ type-qualifier
+
+
+
+
+ declaration-specifiers
+
+
+
+
+
+
+
+
+ function-specifier
+
+
+
+
+ declaration-specifiers
+
+
+
+
+
+
+
+
+
+ init-declarator-list
+
+
+
+ init-declarator
+
+
+
+
+ init-declarator-list
+
+
+ ,
+
+
+ init-declarator
+
+
+
+
+
+
+
+ init-declarator
+
+
+
+ declarator
+
+
+
+
+ declarator
+
+
+ =
+
+
+ initializer
+
+
+
+
+
+
+
+ storage-class-specifier
+
+
+
+ typedef
+
+
+ extern
+
+
+ static
+
+
+ auto
+
+
+ register
+
+
+
+
+
+ type-specifier
+
+
+
+ void
+
+
+ char
+
+
+ short
+
+
+ int
+
+
+ long
+
+
+ float
+
+
+ double
+
+
+ signed
+
+
+ unsigned
+
+
+ _Bool
+
+
+ _Complex
+
+
+ struct-or-union-specifier
+
+
+ enum-specifier
+
+
+ typedef-name
+
+
+
+
+
+ struct-or-union-specifier
+
+
+
+
+
+ struct-or-union
+
+
+
+
+ identifier
+
+
+
+
+ {
+
+
+ struct-declaration-list
+
+
+ }
+
+
+
+
+
+
+ struct-or-union
+
+
+ identifier
+
+
+
+
+
+
+
+ struct-or-union
+
+
+
+ struct
+
+
+ union
+
+
+
+
+
+ struct-declaration-list
+
+
+
+ struct-declaration
+
+
+
+
+ struct-declaration-list
+
+
+ struct-declaration
+
+
+
+
+
+
+
+ struct-declaration
+
+
+
+ specifier-qualifier-list
+
+
+ struct-declarator-list
+
+
+ ;
+
+
+
+
+
+ specifier-qualifier-list
+
+
+
+
+
+ type-specifier
+
+
+
+
+ specifier-qualifier-list
+
+
+
+
+
+
+
+
+ type-qualifier
+
+
+
+
+ specifier-qualifier-list
+
+
+
+
+
+
+
+
+
+ struct-declarator-list
+
+
+
+ struct-declarator
+
+
+
+
+ struct-declarator-list
+
+
+ ,
+
+
+ struct-declarator
+
+
+
+
+
+
+
+ struct-declarator
+
+
+
+ declarator
+
+
+
+
+
+
+ declarator
+
+
+
+
+ :
+
+
+ constant-expression
+
+
+
+
+
+
+
+ enum-specifier
+
+
+
+
+
+ enum
+
+
+
+
+ identifier
+
+
+
+
+ {
+
+
+ enumerator-list
+
+
+ }
+
+
+
+
+
+
+ enum
+
+
+
+
+ identifier
+
+
+
+
+ {
+
+
+ enumerator-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+ enum
+
+
+ identifier
+
+
+
+
+
+
+
+ enumerator-list
+
+
+
+ enumerator
+
+
+
+
+ enumerator-list
+
+
+ ,
+
+
+ enumerator
+
+
+
+
+
+
+
+ enumerator
+
+
+
+ enumeration-constant
+
+
+
+
+ enumeration-constant
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+
+
+ type-qualifier
+
+
+
+ const
+
+
+ restrict
+
+
+ volatile
+
+
+
+
+
+ function-specifier
+
+ inline
+
+
+
+ declarator
+
+
+
+
+
+ pointer
+
+
+
+
+ direct-declarator
+
+
+
+
+
+ direct-declarator
+
+
+
+ identifier
+
+
+
+
+ (
+
+
+ declarator
+
+
+ )
+
+
+
+
+
+
+ direct-declarator
+
+
+ [
+
+
+
+
+ type-qualifier-list
+
+
+
+
+
+
+ assignment-expression
+
+
+
+
+ ]
+
+
+
+
+
+
+ direct-declarator
+
+
+ [
+
+
+ static
+
+
+
+
+ type-qualifier-list
+
+
+
+
+ assignment-expression
+
+
+ ]
+
+
+
+
+
+
+ direct-declarator
+
+
+ [
+
+
+ type-qualifier-list
+
+
+ static
+
+
+ assignment-expression
+
+
+ ]
+
+
+
+
+
+
+ direct-declarator
+
+
+ [
+
+
+
+
+ type-qualifier-list
+
+
+
+
+ *
+
+
+ ]
+
+
+
+
+
+
+ direct-declarator
+
+
+ (
+
+
+ parameter-type-list
+
+
+ )
+
+
+
+
+
+
+ direct-declarator
+
+
+ (
+
+
+
+
+ identifier-list
+
+
+
+
+ )
+
+
+
+
+
+
+
+ pointer
+
+
+
+
+
+ *
+
+
+
+
+ type-qualifier-list
+
+
+
+
+
+
+
+
+ *
+
+
+
+
+ type-qualifier-list
+
+
+
+
+ pointer
+
+
+
+
+
+
+
+ type-qualifier-list
+
+
+
+ type-qualifier
+
+
+
+
+ type-qualifier-list
+
+
+ type-qualifier
+
+
+
+
+
+
+
+ parameter-type-list
+
+
+
+ parameter-list
+
+
+
+
+ parameter-list
+
+
+ ,
+
+
+ ...
+
+
+
+
+
+
+
+ parameter-list
+
+
+
+ parameter-declaration
+
+
+
+
+ parameter-list
+
+
+ ,
+
+
+ parameter-declaration
+
+
+
+
+
+
+
+ parameter-declaration
+
+
+
+
+
+ declaration-specifiers
+
+
+ declarator
+
+
+
+
+
+
+ declaration-specifiers
+
+
+
+
+ abstract-declarator
+
+
+
+
+
+
+
+
+
+ identifier-list
+
+
+
+ identifier
+
+
+
+
+ identifier-list
+
+
+ ,
+
+
+ identifier
+
+
+
+
+
+
+
+ type-name
+
+
+
+ specifier-qualifier-list
+
+
+
+
+ abstract-declarator
+
+
+
+
+
+
+
+ abstract-declarator
+
+
+
+ pointer
+
+
+
+
+
+
+ pointer
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+
+ (
+
+
+ abstract-declarator
+
+
+ )
+
+
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+ [
+
+
+
+
+ assignment-expression
+
+
+
+
+ ]
+
+
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+ [
+
+
+ *
+
+
+ ]
+
+
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+ (
+
+
+
+
+ parameter-type-list
+
+
+
+
+ )
+
+
+
+
+
+
+
+ typedef-name
+
+ identifier
+
+
+
+ initializer
+
+
+
+ assignment-expression
+
+
+
+
+ {
+
+
+ initializer-list
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ initializer-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ initializer-list
+
+
+
+
+
+
+
+ designation
+
+
+
+
+ initializer
+
+
+
+
+
+
+ initializer-list
+
+
+ ,
+
+
+
+
+ designation
+
+
+
+
+ initializer
+
+
+
+
+
+
+
+ designation
+
+
+
+ designator-list
+
+
+ =
+
+
+
+
+
+ designator-list
+
+
+
+ designator
+
+
+
+
+ designator-list
+
+
+ designator
+
+
+
+
+
+
+
+ designator
+
+
+
+
+
+ [
+
+
+ constant-expression
+
+
+ ]
+
+
+
+
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ statement
+
+
+
+ labeled-statement
+
+
+ compound-statement
+
+
+ expression-statement
+
+
+ selection-statement
+
+
+ iteration-statement
+
+
+ jump-statement
+
+
+
+
+
+ labeled-statement
+
+
+
+
+
+ identifier
+
+
+ :
+
+
+ statement
+
+
+
+
+
+
+ case
+
+
+ constant-expression
+
+
+ :
+
+
+ statement
+
+
+
+
+
+
+ default
+
+
+ :
+
+
+ statement
+
+
+
+
+
+
+
+ compound-statement
+
+
+
+ {
+
+
+
+
+ block-item-list
+
+
+
+
+ }
+
+
+
+
+
+ block-item-list
+
+
+
+ block-item
+
+
+
+
+ block-item-list
+
+
+ block-item
+
+
+
+
+
+
+
+ block-item
+
+
+
+ declaration
+
+
+ statement
+
+
+
+
+
+ expression-statement
+
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+ selection-statement
+
+
+
+
+
+ if
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+ if
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ statement
+
+
+ else
+
+
+ statement
+
+
+
+
+
+
+ switch
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+
+ iteration-statement
+
+
+
+
+
+ while
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+ do
+
+
+ statement
+
+
+ while
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ ;
+
+
+
+
+
+
+ for
+
+
+ (
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+ expression
+
+
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+ for
+
+
+ (
+
+
+ declaration
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+ expression
+
+
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+
+ jump-statement
+
+
+
+
+
+ goto
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+
+ continue
+
+
+ ;
+
+
+
+
+
+
+ break
+
+
+ ;
+
+
+
+
+
+
+ return
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ translation-unit
+
+
+
+ external-declaration
+
+
+
+
+ translation-unit
+
+
+ external-declaration
+
+
+
+
+
+
+
+ external-declaration
+
+
+
+ function-definition
+
+
+ declaration
+
+
+
+
+
+ function-definition
+
+
+
+ declaration-specifiers
+
+
+ declarator
+
+
+
+
+ declaration-list
+
+
+
+
+ compound-statement
+
+
+
+
+
+ declaration-list
+
+
+
+ declaration
+
+
+
+
+ declaration-list
+
+
+ declaration
+
+
+
+
+
+
+
+ keyword
+
+
+
+ auto
+
+
+ break
+
+
+ case
+
+
+ char
+
+
+ const
+
+
+ continue
+
+
+ default
+
+
+ do
+
+
+ double
+
+
+ else
+
+
+ enum
+
+
+ extern
+
+
+ float
+
+
+ for
+
+
+ goto
+
+
+ if
+
+
+ inline
+
+
+ int
+
+
+ long
+
+
+ register
+
+
+ restrict
+
+
+ return
+
+
+ short
+
+
+ signed
+
+
+ sizeof
+
+
+ static
+
+
+ struct
+
+
+ switch
+
+
+ typedef
+
+
+ union
+
+
+ unsigned
+
+
+ void
+
+
+ volatile
+
+
+ while
+
+
+
+
+
diff --git a/topics/grammars/c/iso-9899-tc3/Makefile b/topics/grammars/c/iso-9899-tc3/Makefile
index 446e6771..7a0c2e98 100644
--- a/topics/grammars/c/iso-9899-tc3/Makefile
+++ b/topics/grammars/c/iso-9899-tc3/Makefile
@@ -10,4 +10,4 @@ clean:
test:
make build
- ../../../../shared/tools/gdts iso-is-grammar.bgf extracted-grammar.bgf
+ ../../../../shared/tools/gdt iso-is-grammar.bgf extracted-grammar.bgf
diff --git a/topics/grammars/c/iso-9899-tc3/extracted-grammar.bgf b/topics/grammars/c/iso-9899-tc3/extracted-grammar.bgf
index a69c2766..99f908aa 100644
--- a/topics/grammars/c/iso-9899-tc3/extracted-grammar.bgf
+++ b/topics/grammars/c/iso-9899-tc3/extracted-grammar.bgf
@@ -1,2534 +1,2533 @@
-
-
-
- primary-expression
-
-
-
- identifier
-
-
- constant
-
-
- string-literal
-
-
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
-
-
- postfix-expression
-
-
-
- primary-expression
-
-
-
-
- postfix-expression
-
-
- [
-
-
- expression
-
-
- ]
-
-
-
-
-
-
- postfix-expression
-
-
- (
-
-
-
-
- argument-expression-list
-
-
-
-
- )
-
-
-
-
-
-
- postfix-expression
-
-
- .
-
-
- identifier
-
-
-
-
-
-
- postfix-expression
-
-
- ->
-
-
- identifier
-
-
-
-
-
-
- postfix-expression
-
-
- ++
-
-
-
-
-
-
- postfix-expression
-
-
- --
-
-
-
-
-
-
- (
-
-
- type-name
-
-
- )
-
-
- {
-
-
- initializer-list
-
-
- }
-
-
-
-
-
-
- (
-
-
- type-name
-
-
- )
-
-
- {
-
-
- initializer-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- argument-expression-list
-
-
-
- assignment-expression
-
-
-
-
- argument-expression-list
-
-
- ,
-
-
- assignment-expression
-
-
-
-
-
-
-
- unary-expression
-
-
-
- postfix-expression
-
-
-
-
- ++
-
-
- unary-expression
-
-
-
-
-
-
- --
-
-
- unary-expression
-
-
-
-
-
-
- unary-operator
-
-
- cast-expression
-
-
-
-
-
-
- sizeof
-
-
- unary-expression
-
-
-
-
-
-
- sizeof
-
-
- (
-
-
- type-name
-
-
- )
-
-
-
-
-
-
-
- unary-operator
-
-
-
- &
-
-
- *
-
-
- +
-
-
- -
-
-
- ~
-
-
- !
-
-
-
-
-
- cast-expression
-
-
-
- unary-expression
-
-
-
-
- (
-
-
- type-name
-
-
- )
-
-
- cast-expression
-
-
-
-
-
-
-
- multiplicative-expression
-
-
-
- cast-expression
-
-
-
-
- multiplicative-expression
-
-
- *
-
-
- cast-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- /
-
-
- cast-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- %
-
-
- cast-expression
-
-
-
-
-
-
-
- additive-expression
-
-
-
- multiplicative-expression
-
-
-
-
- additive-expression
-
-
- +
-
-
- multiplicative-expression
-
-
-
-
-
-
- additive-expression
-
-
- -
-
-
- multiplicative-expression
-
-
-
-
-
-
-
- shift-expression
-
-
-
- additive-expression
-
-
-
-
- shift-expression
-
-
- <<
-
-
- additive-expression
-
-
-
-
-
-
- shift-expression
-
-
- >>
-
-
- additive-expression
-
-
-
-
-
-
-
- relational-expression
-
-
-
- shift-expression
-
-
-
-
- relational-expression
-
-
- <
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- <=
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >=
-
-
- shift-expression
-
-
-
-
-
-
-
- equality-expression
-
-
-
- relational-expression
-
-
-
-
- equality-expression
-
-
- ==
-
-
- relational-expression
-
-
-
-
-
-
- equality-expression
-
-
- !=
-
-
- relational-expression
-
-
-
-
-
-
-
- AND-expression
-
-
-
- equality-expression
-
-
-
-
- AND-expression
-
-
- &
-
-
- equality-expression
-
-
-
-
-
-
-
- exclusive-OR-expression
-
-
-
- AND-expression
-
-
-
-
- exclusive-OR-expression
-
-
- ^
-
-
- AND-expression
-
-
-
-
-
-
-
- inclusive-OR-expression
-
-
-
- exclusive-OR-expression
-
-
-
-
- inclusive-OR-expression
-
-
- |
-
-
- exclusive-OR-expression
-
-
-
-
-
-
-
- logical-AND-expression
-
-
-
- inclusive-OR-expression
-
-
-
-
- logical-AND-expression
-
-
- &&
-
-
- inclusive-OR-expression
-
-
-
-
-
-
-
- logical-OR-expression
-
-
-
- logical-AND-expression
-
-
-
-
- logical-OR-expression
-
-
- ||
-
-
- logical-AND-expression
-
-
-
-
-
-
-
- conditional-expression
-
-
-
- logical-OR-expression
-
-
-
-
- logical-OR-expression
-
-
- ?
-
-
- expression
-
-
- :
-
-
- conditional-expression
-
-
-
-
-
-
-
- assignment-expression
-
-
-
- conditional-expression
-
-
-
-
- unary-expression
-
-
- assignment-operator
-
-
- assignment-expression
-
-
-
-
-
-
-
- assignment-operator
-
-
-
- =
-
-
- *=
-
-
- /=
-
-
- %=
-
-
- +=
-
-
- -=
-
-
- <<=
-
-
- >>=
-
-
- &=
-
-
- ^=
-
-
- |=
-
-
-
-
-
- expression
-
-
-
- assignment-expression
-
-
-
-
- expression
-
-
- ,
-
-
- assignment-expression
-
-
-
-
-
-
-
- constant-expression
-
- conditional-expression
-
-
-
- declaration
-
-
-
- declaration-specifiers
-
-
-
-
- init-declarator-list
-
-
-
-
- ;
-
-
-
-
-
- declaration-specifiers
-
-
-
-
-
- storage-class-specifier
-
-
-
-
- declaration-specifiers
-
-
-
-
-
-
-
-
- type-specifier
-
-
-
-
- declaration-specifiers
-
-
-
-
-
-
-
-
- type-qualifier
-
-
-
-
- declaration-specifiers
-
-
-
-
-
-
-
-
- function-specifier
-
-
-
-
- declaration-specifiers
-
-
-
-
-
-
-
-
-
- init-declarator-list
-
-
-
- init-declarator
-
-
-
-
- init-declarator-list
-
-
- ,
-
-
- init-declarator
-
-
-
-
-
-
-
- init-declarator
-
-
-
- declarator
-
-
-
-
- declarator
-
-
- =
-
-
- initializer
-
-
-
-
-
-
-
- storage-class-specifier
-
-
-
- typedef
-
-
- extern
-
-
- static
-
-
- auto
-
-
- register
-
-
-
-
-
- type-specifier
-
-
-
- void
-
-
- char
-
-
- short
-
-
- int
-
-
- long
-
-
- float
-
-
- double
-
-
- signed
-
-
- unsigned
-
-
- _Bool
-
-
- _Complex
-
-
- struct-or-union-specifier
-
-
- enum-specifier
-
-
- typedef-name
-
-
-
-
-
- struct-or-union-specifier
-
-
-
-
-
- struct-or-union
-
-
-
-
- identifier
-
-
-
-
- {
-
-
- struct-declaration-list
-
-
- }
-
-
-
-
-
-
- struct-or-union
-
-
- identifier
-
-
-
-
-
-
-
- struct-or-union
-
-
-
- struct
-
-
- union
-
-
-
-
-
- struct-declaration-list
-
-
-
- struct-declaration
-
-
-
-
- struct-declaration-list
-
-
- struct-declaration
-
-
-
-
-
-
-
- struct-declaration
-
-
-
- specifier-qualifier-list
-
-
- struct-declarator-list
-
-
- ;
-
-
-
-
-
- specifier-qualifier-list
-
-
-
-
-
- type-specifier
-
-
-
-
- specifier-qualifier-list
-
-
-
-
-
-
-
-
- type-qualifier
-
-
-
-
- specifier-qualifier-list
-
-
-
-
-
-
-
-
-
- struct-declarator-list
-
-
-
- struct-declarator
-
-
-
-
- struct-declarator-list
-
-
- ,
-
-
- struct-declarator
-
-
-
-
-
-
-
- struct-declarator
-
-
-
- declarator
-
-
-
-
-
-
- declarator
-
-
-
-
- :
-
-
- constant-expression
-
-
-
-
-
-
-
- enum-specifier
-
-
-
-
-
- enum
-
-
-
-
- identifier
-
-
-
-
- {
-
-
- enumerator-list
-
-
- }
-
-
-
-
-
-
- enum
-
-
-
-
- identifier
-
-
-
-
- {
-
-
- enumerator-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
- enum
-
-
- identifier
-
-
-
-
-
-
-
- enumerator-list
-
-
-
- enumerator
-
-
-
-
- enumerator-list
-
-
- ,
-
-
- enumerator
-
-
-
-
-
-
-
- enumerator
-
-
-
- enumeration-constant
-
-
-
-
- enumeration-constant
-
-
- =
-
-
- constant-expression
-
-
-
-
-
-
-
- type-qualifier
-
-
-
- const
-
-
- restrict
-
-
- volatile
-
-
-
-
-
- function-specifier
-
- inline
-
-
-
- declarator
-
-
-
-
-
- pointer
-
-
-
-
- direct-declarator
-
-
-
-
-
- direct-declarator
-
-
-
- identifier
-
-
-
-
- (
-
-
- declarator
-
-
- )
-
-
-
-
-
-
- direct-declarator
-
-
- [
-
-
-
-
- type-qualifier-list
-
-
-
-
-
-
- assignment-expression
-
-
-
-
- ]
-
-
-
-
-
-
- direct-declarator
-
-
- [
-
-
- static
-
-
-
-
- type-qualifier-list
-
-
-
-
- assignment-expression
-
-
- ]
-
-
-
-
-
-
- direct-declarator
-
-
- [
-
-
- type-qualifier-list
-
-
- static
-
-
- assignment-expression
-
-
- ]
-
-
-
-
-
-
- direct-declarator
-
-
- [
-
-
-
-
- type-qualifier-list
-
-
-
-
- *
-
-
- ]
-
-
-
-
-
-
- direct-declarator
-
-
- (
-
-
- parameter-type-list
-
-
- )
-
-
-
-
-
-
- direct-declarator
-
-
- (
-
-
-
-
- identifier-list
-
-
-
-
- )
-
-
-
-
-
-
-
- pointer
-
-
-
-
-
- *
-
-
-
-
- type-qualifier-list
-
-
-
-
-
-
-
-
- *
-
-
-
-
- type-qualifier-list
-
-
-
-
- pointer
-
-
-
-
-
-
-
- type-qualifier-list
-
-
-
- type-qualifier
-
-
-
-
- type-qualifier-list
-
-
- type-qualifier
-
-
-
-
-
-
-
- parameter-type-list
-
-
-
- parameter-list
-
-
-
-
- parameter-list
-
-
- ,
-
-
- ...
-
-
-
-
-
-
-
- parameter-list
-
-
-
- parameter-declaration
-
-
-
-
- parameter-list
-
-
- ,
-
-
- parameter-declaration
-
-
-
-
-
-
-
- parameter-declaration
-
-
-
-
-
- declaration-specifiers
-
-
- declarator
-
-
-
-
-
-
- declaration-specifiers
-
-
-
-
- abstract-declarator
-
-
-
-
-
-
-
-
-
- identifier-list
-
-
-
- identifier
-
-
-
-
- identifier-list
-
-
- ,
-
-
- identifier
-
-
-
-
-
-
-
- type-name
-
-
-
- specifier-qualifier-list
-
-
-
-
- abstract-declarator
-
-
-
-
-
-
-
- abstract-declarator
-
-
-
- pointer
-
-
-
-
-
-
- pointer
-
-
-
-
- direct-abstract-declarator
-
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
-
- (
-
-
- abstract-declarator
-
-
- )
-
-
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
- [
-
-
-
-
- type-qualifier-list
-
-
-
-
-
-
- assignment-expression
-
-
-
-
- ]
-
-
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
- [
-
-
- static
-
-
-
-
- type-qualifier-list
-
-
-
-
- assignment-expression
-
-
- ]
-
-
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
- [
-
-
- type-qualifier-list
-
-
- static
-
-
- assignment-expression
-
-
- ]
-
-
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
- [
-
-
- *
-
-
- ]
-
-
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
- (
-
-
-
-
- parameter-type-list
-
-
-
-
- )
-
-
-
-
-
-
-
- typedef-name
-
- identifier
-
-
-
- initializer
-
-
-
- assignment-expression
-
-
-
-
- {
-
-
- initializer-list
-
-
- }
-
-
-
-
-
-
- {
-
-
- initializer-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- initializer-list
-
-
-
-
-
-
-
- designation
-
-
-
-
- initializer
-
-
-
-
-
-
- initializer-list
-
-
- ,
-
-
-
-
- designation
-
-
-
-
- initializer
-
-
-
-
-
-
-
- designation
-
-
-
- designator-list
-
-
- =
-
-
-
-
-
- designator-list
-
-
-
- designator
-
-
-
-
- designator-list
-
-
- designator
-
-
-
-
-
-
-
- designator
-
-
-
-
-
- [
-
-
- constant-expression
-
-
- ]
-
-
-
-
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- statement
-
-
-
- labeled-statement
-
-
- compound-statement
-
-
- expression-statement
-
-
- selection-statement
-
-
- iteration-statement
-
-
- jump-statement
-
-
-
-
-
- labeled-statement
-
-
-
-
-
- identifier
-
-
- :
-
-
- statement
-
-
-
-
-
-
- case
-
-
- constant-expression
-
-
- :
-
-
- statement
-
-
-
-
-
-
- default
-
-
- :
-
-
- statement
-
-
-
-
-
-
-
- compound-statement
-
-
-
- {
-
-
-
-
- block-item-list
-
-
-
-
- }
-
-
-
-
-
- block-item-list
-
-
-
- block-item
-
-
-
-
- block-item-list
-
-
- block-item
-
-
-
-
-
-
-
- block-item
-
-
-
- declaration
-
-
- statement
-
-
-
-
-
- expression-statement
-
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
- selection-statement
-
-
-
-
-
- if
-
-
- (
-
-
- expression
-
-
- )
-
-
- statement
-
-
-
-
-
-
- if
-
-
- (
-
-
- expression
-
-
- )
-
-
- statement
-
-
- else
-
-
- statement
-
-
-
-
-
-
- switch
-
-
- (
-
-
- expression
-
-
- )
-
-
- statement
-
-
-
-
-
-
-
- iteration-statement
-
-
-
-
-
- while
-
-
- (
-
-
- expression
-
-
- )
-
-
- statement
-
-
-
-
-
-
- do
-
-
- statement
-
-
- while
-
-
- (
-
-
- expression
-
-
- )
-
-
- ;
-
-
-
-
-
-
- for
-
-
- (
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
- expression
-
-
-
-
- )
-
-
- statement
-
-
-
-
-
-
- for
-
-
- (
-
-
- declaration
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
- expression
-
-
-
-
- )
-
-
- statement
-
-
-
-
-
-
-
- jump-statement
-
-
-
-
-
- goto
-
-
- identifier
-
-
- ;
-
-
-
-
-
-
- continue
-
-
- ;
-
-
-
-
-
-
- break
-
-
- ;
-
-
-
-
-
-
- return
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
-
-
- translation-unit
-
-
-
- external-declaration
-
-
-
-
- translation-unit
-
-
- external-declaration
-
-
-
-
-
-
-
- external-declaration
-
-
-
- function-definition
-
-
- declaration
-
-
-
-
-
- function-definition
-
-
-
- declaration-specifiers
-
-
- declarator
-
-
-
-
- declaration-list
-
-
-
-
- compound-statement
-
-
-
-
-
- declaration-list
-
-
-
- declaration
-
-
-
-
- declaration-list
-
-
- declaration
-
-
-
-
-
-
-
- keyword
-
-
-
- auto
-
-
- break
-
-
- case
-
-
- char
-
-
- const
-
-
- continue
-
-
- default
-
-
- do
-
-
- double
-
-
- else
-
-
- enum
-
-
- extern
-
-
- float
-
-
- for
-
-
- goto
-
-
- if
-
-
- inline
-
-
- int
-
-
- long
-
-
- register
-
-
- restrict
-
-
- return
-
-
- short
-
-
- signed
-
-
- sizeof
-
-
- static
-
-
- struct
-
-
- switch
-
-
- typedef
-
-
- union
-
-
- unsigned
-
-
- void
-
-
- volatile
-
-
- while
-
-
-
-
-
\ No newline at end of file
+
+
+ primary-expression
+
+
+
+ identifier
+
+
+ constant
+
+
+ string-literal
+
+
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+
+
+ postfix-expression
+
+
+
+ primary-expression
+
+
+
+
+ postfix-expression
+
+
+ [
+
+
+ expression
+
+
+ ]
+
+
+
+
+
+
+ postfix-expression
+
+
+ (
+
+
+
+
+ argument-expression-list
+
+
+
+
+ )
+
+
+
+
+
+
+ postfix-expression
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+ postfix-expression
+
+
+ ->
+
+
+ identifier
+
+
+
+
+
+
+ postfix-expression
+
+
+ ++
+
+
+
+
+
+
+ postfix-expression
+
+
+ --
+
+
+
+
+
+
+ (
+
+
+ type-name
+
+
+ )
+
+
+ {
+
+
+ initializer-list
+
+
+ }
+
+
+
+
+
+
+ (
+
+
+ type-name
+
+
+ )
+
+
+ {
+
+
+ initializer-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ argument-expression-list
+
+
+
+ assignment-expression
+
+
+
+
+ argument-expression-list
+
+
+ ,
+
+
+ assignment-expression
+
+
+
+
+
+
+
+ unary-expression
+
+
+
+ postfix-expression
+
+
+
+
+ ++
+
+
+ unary-expression
+
+
+
+
+
+
+ --
+
+
+ unary-expression
+
+
+
+
+
+
+ unary-operator
+
+
+ cast-expression
+
+
+
+
+
+
+ sizeof
+
+
+ unary-expression
+
+
+
+
+
+
+ sizeof
+
+
+ (
+
+
+ type-name
+
+
+ )
+
+
+
+
+
+
+
+ unary-operator
+
+
+
+ &
+
+
+ *
+
+
+ +
+
+
+ -
+
+
+ ~
+
+
+ !
+
+
+
+
+
+ cast-expression
+
+
+
+ unary-expression
+
+
+
+
+ (
+
+
+ type-name
+
+
+ )
+
+
+ cast-expression
+
+
+
+
+
+
+
+ multiplicative-expression
+
+
+
+ cast-expression
+
+
+
+
+ multiplicative-expression
+
+
+ *
+
+
+ cast-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ /
+
+
+ cast-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ %
+
+
+ cast-expression
+
+
+
+
+
+
+
+ additive-expression
+
+
+
+ multiplicative-expression
+
+
+
+
+ additive-expression
+
+
+ +
+
+
+ multiplicative-expression
+
+
+
+
+
+
+ additive-expression
+
+
+ -
+
+
+ multiplicative-expression
+
+
+
+
+
+
+
+ shift-expression
+
+
+
+ additive-expression
+
+
+
+
+ shift-expression
+
+
+ <<
+
+
+ additive-expression
+
+
+
+
+
+
+ shift-expression
+
+
+ >>
+
+
+ additive-expression
+
+
+
+
+
+
+
+ relational-expression
+
+
+
+ shift-expression
+
+
+
+
+ relational-expression
+
+
+ <
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ <=
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >=
+
+
+ shift-expression
+
+
+
+
+
+
+
+ equality-expression
+
+
+
+ relational-expression
+
+
+
+
+ equality-expression
+
+
+ ==
+
+
+ relational-expression
+
+
+
+
+
+
+ equality-expression
+
+
+ !=
+
+
+ relational-expression
+
+
+
+
+
+
+
+ AND-expression
+
+
+
+ equality-expression
+
+
+
+
+ AND-expression
+
+
+ &
+
+
+ equality-expression
+
+
+
+
+
+
+
+ exclusive-OR-expression
+
+
+
+ AND-expression
+
+
+
+
+ exclusive-OR-expression
+
+
+ ^
+
+
+ AND-expression
+
+
+
+
+
+
+
+ inclusive-OR-expression
+
+
+
+ exclusive-OR-expression
+
+
+
+
+ inclusive-OR-expression
+
+
+ |
+
+
+ exclusive-OR-expression
+
+
+
+
+
+
+
+ logical-AND-expression
+
+
+
+ inclusive-OR-expression
+
+
+
+
+ logical-AND-expression
+
+
+ &&
+
+
+ inclusive-OR-expression
+
+
+
+
+
+
+
+ logical-OR-expression
+
+
+
+ logical-AND-expression
+
+
+
+
+ logical-OR-expression
+
+
+ ||
+
+
+ logical-AND-expression
+
+
+
+
+
+
+
+ conditional-expression
+
+
+
+ logical-OR-expression
+
+
+
+
+ logical-OR-expression
+
+
+ ?
+
+
+ expression
+
+
+ :
+
+
+ conditional-expression
+
+
+
+
+
+
+
+ assignment-expression
+
+
+
+ conditional-expression
+
+
+
+
+ unary-expression
+
+
+ assignment-operator
+
+
+ assignment-expression
+
+
+
+
+
+
+
+ assignment-operator
+
+
+
+ =
+
+
+ *=
+
+
+ /=
+
+
+ %=
+
+
+ +=
+
+
+ -=
+
+
+ <<=
+
+
+ >>=
+
+
+ &=
+
+
+ ^=
+
+
+ |=
+
+
+
+
+
+ expression
+
+
+
+ assignment-expression
+
+
+
+
+ expression
+
+
+ ,
+
+
+ assignment-expression
+
+
+
+
+
+
+
+ constant-expression
+
+ conditional-expression
+
+
+
+ declaration
+
+
+
+ declaration-specifiers
+
+
+
+
+ init-declarator-list
+
+
+
+
+ ;
+
+
+
+
+
+ declaration-specifiers
+
+
+
+
+
+ storage-class-specifier
+
+
+
+
+ declaration-specifiers
+
+
+
+
+
+
+
+
+ type-specifier
+
+
+
+
+ declaration-specifiers
+
+
+
+
+
+
+
+
+ type-qualifier
+
+
+
+
+ declaration-specifiers
+
+
+
+
+
+
+
+
+ function-specifier
+
+
+
+
+ declaration-specifiers
+
+
+
+
+
+
+
+
+
+ init-declarator-list
+
+
+
+ init-declarator
+
+
+
+
+ init-declarator-list
+
+
+ ,
+
+
+ init-declarator
+
+
+
+
+
+
+
+ init-declarator
+
+
+
+ declarator
+
+
+
+
+ declarator
+
+
+ =
+
+
+ initializer
+
+
+
+
+
+
+
+ storage-class-specifier
+
+
+
+ typedef
+
+
+ extern
+
+
+ static
+
+
+ auto
+
+
+ register
+
+
+
+
+
+ type-specifier
+
+
+
+ void
+
+
+ char
+
+
+ short
+
+
+ int
+
+
+ long
+
+
+ float
+
+
+ double
+
+
+ signed
+
+
+ unsigned
+
+
+ _Bool
+
+
+ _Complex
+
+
+ struct-or-union-specifier
+
+
+ enum-specifier
+
+
+ typedef-name
+
+
+
+
+
+ struct-or-union-specifier
+
+
+
+
+
+ struct-or-union
+
+
+
+
+ identifier
+
+
+
+
+ {
+
+
+ struct-declaration-list
+
+
+ }
+
+
+
+
+
+
+ struct-or-union
+
+
+ identifier
+
+
+
+
+
+
+
+ struct-or-union
+
+
+
+ struct
+
+
+ union
+
+
+
+
+
+ struct-declaration-list
+
+
+
+ struct-declaration
+
+
+
+
+ struct-declaration-list
+
+
+ struct-declaration
+
+
+
+
+
+
+
+ struct-declaration
+
+
+
+ specifier-qualifier-list
+
+
+ struct-declarator-list
+
+
+ ;
+
+
+
+
+
+ specifier-qualifier-list
+
+
+
+
+
+ type-specifier
+
+
+
+
+ specifier-qualifier-list
+
+
+
+
+
+
+
+
+ type-qualifier
+
+
+
+
+ specifier-qualifier-list
+
+
+
+
+
+
+
+
+
+ struct-declarator-list
+
+
+
+ struct-declarator
+
+
+
+
+ struct-declarator-list
+
+
+ ,
+
+
+ struct-declarator
+
+
+
+
+
+
+
+ struct-declarator
+
+
+
+ declarator
+
+
+
+
+
+
+ declarator
+
+
+
+
+ :
+
+
+ constant-expression
+
+
+
+
+
+
+
+ enum-specifier
+
+
+
+
+
+ enum
+
+
+
+
+ identifier
+
+
+
+
+ {
+
+
+ enumerator-list
+
+
+ }
+
+
+
+
+
+
+ enum
+
+
+
+
+ identifier
+
+
+
+
+ {
+
+
+ enumerator-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+ enum
+
+
+ identifier
+
+
+
+
+
+
+
+ enumerator-list
+
+
+
+ enumerator
+
+
+
+
+ enumerator-list
+
+
+ ,
+
+
+ enumerator
+
+
+
+
+
+
+
+ enumerator
+
+
+
+ enumeration-constant
+
+
+
+
+ enumeration-constant
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+
+
+ type-qualifier
+
+
+
+ const
+
+
+ restrict
+
+
+ volatile
+
+
+
+
+
+ function-specifier
+
+ inline
+
+
+
+ declarator
+
+
+
+
+
+ pointer
+
+
+
+
+ direct-declarator
+
+
+
+
+
+ direct-declarator
+
+
+
+ identifier
+
+
+
+
+ (
+
+
+ declarator
+
+
+ )
+
+
+
+
+
+
+ direct-declarator
+
+
+ [
+
+
+
+
+ type-qualifier-list
+
+
+
+
+
+
+ assignment-expression
+
+
+
+
+ ]
+
+
+
+
+
+
+ direct-declarator
+
+
+ [
+
+
+ static
+
+
+
+
+ type-qualifier-list
+
+
+
+
+ assignment-expression
+
+
+ ]
+
+
+
+
+
+
+ direct-declarator
+
+
+ [
+
+
+ type-qualifier-list
+
+
+ static
+
+
+ assignment-expression
+
+
+ ]
+
+
+
+
+
+
+ direct-declarator
+
+
+ [
+
+
+
+
+ type-qualifier-list
+
+
+
+
+ *
+
+
+ ]
+
+
+
+
+
+
+ direct-declarator
+
+
+ (
+
+
+ parameter-type-list
+
+
+ )
+
+
+
+
+
+
+ direct-declarator
+
+
+ (
+
+
+
+
+ identifier-list
+
+
+
+
+ )
+
+
+
+
+
+
+
+ pointer
+
+
+
+
+
+ *
+
+
+
+
+ type-qualifier-list
+
+
+
+
+
+
+
+
+ *
+
+
+
+
+ type-qualifier-list
+
+
+
+
+ pointer
+
+
+
+
+
+
+
+ type-qualifier-list
+
+
+
+ type-qualifier
+
+
+
+
+ type-qualifier-list
+
+
+ type-qualifier
+
+
+
+
+
+
+
+ parameter-type-list
+
+
+
+ parameter-list
+
+
+
+
+ parameter-list
+
+
+ ,
+
+
+ ...
+
+
+
+
+
+
+
+ parameter-list
+
+
+
+ parameter-declaration
+
+
+
+
+ parameter-list
+
+
+ ,
+
+
+ parameter-declaration
+
+
+
+
+
+
+
+ parameter-declaration
+
+
+
+
+
+ declaration-specifiers
+
+
+ declarator
+
+
+
+
+
+
+ declaration-specifiers
+
+
+
+
+ abstract-declarator
+
+
+
+
+
+
+
+
+
+ identifier-list
+
+
+
+ identifier
+
+
+
+
+ identifier-list
+
+
+ ,
+
+
+ identifier
+
+
+
+
+
+
+
+ type-name
+
+
+
+ specifier-qualifier-list
+
+
+
+
+ abstract-declarator
+
+
+
+
+
+
+
+ abstract-declarator
+
+
+
+ pointer
+
+
+
+
+
+
+ pointer
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+
+ (
+
+
+ abstract-declarator
+
+
+ )
+
+
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+ [
+
+
+
+
+ type-qualifier-list
+
+
+
+
+
+
+ assignment-expression
+
+
+
+
+ ]
+
+
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+ [
+
+
+ static
+
+
+
+
+ type-qualifier-list
+
+
+
+
+ assignment-expression
+
+
+ ]
+
+
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+ [
+
+
+ type-qualifier-list
+
+
+ static
+
+
+ assignment-expression
+
+
+ ]
+
+
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+ [
+
+
+ *
+
+
+ ]
+
+
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+ (
+
+
+
+
+ parameter-type-list
+
+
+
+
+ )
+
+
+
+
+
+
+
+ typedef-name
+
+ identifier
+
+
+
+ initializer
+
+
+
+ assignment-expression
+
+
+
+
+ {
+
+
+ initializer-list
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ initializer-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ initializer-list
+
+
+
+
+
+
+
+ designation
+
+
+
+
+ initializer
+
+
+
+
+
+
+ initializer-list
+
+
+ ,
+
+
+
+
+ designation
+
+
+
+
+ initializer
+
+
+
+
+
+
+
+ designation
+
+
+
+ designator-list
+
+
+ =
+
+
+
+
+
+ designator-list
+
+
+
+ designator
+
+
+
+
+ designator-list
+
+
+ designator
+
+
+
+
+
+
+
+ designator
+
+
+
+
+
+ [
+
+
+ constant-expression
+
+
+ ]
+
+
+
+
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ statement
+
+
+
+ labeled-statement
+
+
+ compound-statement
+
+
+ expression-statement
+
+
+ selection-statement
+
+
+ iteration-statement
+
+
+ jump-statement
+
+
+
+
+
+ labeled-statement
+
+
+
+
+
+ identifier
+
+
+ :
+
+
+ statement
+
+
+
+
+
+
+ case
+
+
+ constant-expression
+
+
+ :
+
+
+ statement
+
+
+
+
+
+
+ default
+
+
+ :
+
+
+ statement
+
+
+
+
+
+
+
+ compound-statement
+
+
+
+ {
+
+
+
+
+ block-item-list
+
+
+
+
+ }
+
+
+
+
+
+ block-item-list
+
+
+
+ block-item
+
+
+
+
+ block-item-list
+
+
+ block-item
+
+
+
+
+
+
+
+ block-item
+
+
+
+ declaration
+
+
+ statement
+
+
+
+
+
+ expression-statement
+
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+ selection-statement
+
+
+
+
+
+ if
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+ if
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ statement
+
+
+ else
+
+
+ statement
+
+
+
+
+
+
+ switch
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+
+ iteration-statement
+
+
+
+
+
+ while
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+ do
+
+
+ statement
+
+
+ while
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ ;
+
+
+
+
+
+
+ for
+
+
+ (
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+ expression
+
+
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+ for
+
+
+ (
+
+
+ declaration
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+ expression
+
+
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+
+ jump-statement
+
+
+
+
+
+ goto
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+
+ continue
+
+
+ ;
+
+
+
+
+
+
+ break
+
+
+ ;
+
+
+
+
+
+
+ return
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ translation-unit
+
+
+
+ external-declaration
+
+
+
+
+ translation-unit
+
+
+ external-declaration
+
+
+
+
+
+
+
+ external-declaration
+
+
+
+ function-definition
+
+
+ declaration
+
+
+
+
+
+ function-definition
+
+
+
+ declaration-specifiers
+
+
+ declarator
+
+
+
+
+ declaration-list
+
+
+
+
+ compound-statement
+
+
+
+
+
+ declaration-list
+
+
+
+ declaration
+
+
+
+
+ declaration-list
+
+
+ declaration
+
+
+
+
+
+
+
+ keyword
+
+
+
+ auto
+
+
+ break
+
+
+ case
+
+
+ char
+
+
+ const
+
+
+ continue
+
+
+ default
+
+
+ do
+
+
+ double
+
+
+ else
+
+
+ enum
+
+
+ extern
+
+
+ float
+
+
+ for
+
+
+ goto
+
+
+ if
+
+
+ inline
+
+
+ int
+
+
+ long
+
+
+ register
+
+
+ restrict
+
+
+ return
+
+
+ short
+
+
+ signed
+
+
+ sizeof
+
+
+ static
+
+
+ struct
+
+
+ switch
+
+
+ typedef
+
+
+ union
+
+
+ unsigned
+
+
+ void
+
+
+ volatile
+
+
+ while
+
+
+
+
+
diff --git a/topics/grammars/cpp/iso-14882-1998/Makefile b/topics/grammars/cpp/iso-14882-1998/Makefile
index 446e6771..7a0c2e98 100644
--- a/topics/grammars/cpp/iso-14882-1998/Makefile
+++ b/topics/grammars/cpp/iso-14882-1998/Makefile
@@ -10,4 +10,4 @@ clean:
test:
make build
- ../../../../shared/tools/gdts iso-is-grammar.bgf extracted-grammar.bgf
+ ../../../../shared/tools/gdt iso-is-grammar.bgf extracted-grammar.bgf
diff --git a/topics/grammars/cpp/iso-14882-1998/extracted-grammar.bgf b/topics/grammars/cpp/iso-14882-1998/extracted-grammar.bgf
index 11710bc4..f9a8af7a 100644
--- a/topics/grammars/cpp/iso-14882-1998/extracted-grammar.bgf
+++ b/topics/grammars/cpp/iso-14882-1998/extracted-grammar.bgf
@@ -1,4842 +1,4841 @@
-
-
-
- translation-unit
-
-
-
- declaration-seq
-
-
-
-
-
- primary-expression
-
-
-
- literal
-
-
- this
-
-
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
- id-expression
-
-
-
-
-
- id-expression
-
-
-
- unqualified-id
-
-
- qualified-id
-
-
-
-
-
- unqualified-id
-
-
-
- identifier
-
-
- operator-function-id
-
-
- conversion-function-id
-
-
-
-
- ~
-
-
- class-name
-
-
-
-
- template-id
-
-
-
-
-
- qualified-id
-
-
-
-
-
-
-
- ::
-
-
-
-
- nested-name-specifier
-
-
-
-
- template
-
-
-
-
- unqualified-id
-
-
-
-
-
-
- ::
-
-
- identifier
-
-
-
-
-
-
- ::
-
-
- operator-function-id
-
-
-
-
-
-
- ::
-
-
- template-id
-
-
-
-
-
-
-
- nested-name-specifier
-
-
-
-
-
- class-or-namespace-name
-
-
- ::
-
-
-
-
- nested-name-specifier
-
-
-
-
-
-
-
-
- class-or-namespace-name
-
-
- ::
-
-
- template
-
-
- nested-name-specifier
-
-
-
-
-
-
-
- class-or-namespace-name
-
-
-
- class-name
-
-
- namespace-name
-
-
-
-
-
- postfix-expression
-
-
-
- primary-expression
-
-
-
-
- postfix-expression
-
-
- [
-
-
- expression
-
-
- ]
-
-
-
-
-
-
- postfix-expression
-
-
- (
-
-
-
-
- expression-list
-
-
-
-
- )
-
-
-
-
-
-
- simple-type-specifier
-
-
- (
-
-
-
-
- expression-list
-
-
-
-
- )
-
-
-
-
-
-
- typename
-
-
-
-
- ::
-
-
-
-
- nested-name-specifier
-
-
- identifier
-
-
- (
-
-
-
-
- expression-list
-
-
-
-
- )
-
-
-
-
-
-
- typename
-
-
-
-
- ::
-
-
-
-
- nested-name-specifier
-
-
-
-
- template
-
-
-
-
- template-id
-
-
- (
-
-
-
-
- expression-list
-
-
-
-
- )
-
-
-
-
-
-
- postfix-expression
-
-
- .
-
-
-
-
- template
-
-
-
-
- id-expression
-
-
-
-
-
-
- postfix-expression
-
-
- ->
-
-
-
-
- template
-
-
-
-
- id-expression
-
-
-
-
-
-
- postfix-expression
-
-
- .
-
-
- pseudo-destructor-name
-
-
-
-
-
-
- postfix-expression
-
-
- ->
-
-
- pseudo-destructor-name
-
-
-
-
-
-
- postfix-expression
-
-
- ++
-
-
-
-
-
-
- postfix-expression
-
-
- --
-
-
-
-
-
-
- dynamic_cast
-
-
- <
-
-
- type-id
-
-
- >
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
-
- static_cast
-
-
- <
-
-
- type-id
-
-
- >
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
-
- reinterpret_cast
-
-
- <
-
-
- type-id
-
-
- >
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
-
- const_cast
-
-
- <
-
-
- type-id
-
-
- >
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
-
- typeid
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
-
- typeid
-
-
- (
-
-
- type-id
-
-
- )
-
-
-
-
-
-
-
- expression-list
-
-
-
- assignment-expression
-
-
-
-
- expression-list
-
-
- ,
-
-
- assignment-expression
-
-
-
-
-
-
-
- pseudo-destructor-name
-
-
-
-
-
-
-
- ::
-
-
-
-
-
-
- nested-name-specifier
-
-
-
-
- type-name
-
-
- ::
-
-
- ~
-
-
- type-name
-
-
-
-
-
-
-
-
- ::
-
-
-
-
- nested-name-specifier
-
-
- template
-
-
- template-id
-
-
- ::
-
-
- ~
-
-
- type-name
-
-
-
-
-
-
-
-
- ::
-
-
-
-
-
-
- nested-name-specifier
-
-
-
-
- ~
-
-
- type-name
-
-
-
-
-
-
-
- unary-expression
-
-
-
- postfix-expression
-
-
-
-
- ++
-
-
- cast-expression
-
-
-
-
-
-
- --
-
-
- cast-expression
-
-
-
-
-
-
- unary-operator
-
-
- cast-expression
-
-
-
-
-
-
- sizeof
-
-
- unary-expression
-
-
-
-
-
-
- sizeof
-
-
- (
-
-
- type-id
-
-
- )
-
-
-
-
- new-expression
-
-
- delete-expression
-
-
-
-
-
- unary-operator
-
-
-
- *
-
-
- &
-
-
- +
-
-
- -
-
-
- !
-
-
- ~
-
-
-
-
-
- new-expression
-
-
-
-
-
-
-
- ::
-
-
-
-
- new
-
-
-
-
- new-placement
-
-
-
-
- new-type-id
-
-
-
-
- new-initializer
-
-
-
-
-
-
-
-
-
-
- ::
-
-
-
-
- new
-
-
-
-
- new-placement
-
-
-
-
- (
-
-
- type-id
-
-
- )
-
-
-
-
- new-initializer
-
-
-
-
-
-
-
-
-
- new-placement
-
-
-
- (
-
-
- expression-list
-
-
- )
-
-
-
-
-
- new-type-id
-
-
-
- type-specifier-seq
-
-
-
-
- new-declarator
-
-
-
-
-
-
-
- new-declarator
-
-
-
-
-
- ptr-operator
-
-
-
-
- new-declarator
-
-
-
-
-
-
- direct-new-declarator
-
-
-
-
-
- direct-new-declarator
-
-
-
-
-
- [
-
-
- expression
-
-
- ]
-
-
-
-
-
-
- direct-new-declarator
-
-
- [
-
-
- constant-expression
-
-
- ]
-
-
-
-
-
-
-
- new-initializer
-
-
-
- (
-
-
-
-
- expression-list
-
-
-
-
- )
-
-
-
-
-
- delete-expression
-
-
-
-
-
-
-
- ::
-
-
-
-
- delete
-
-
- cast-expression
-
-
-
-
-
-
-
-
- ::
-
-
-
-
- delete
-
-
- [
-
-
- ]
-
-
- cast-expression
-
-
-
-
-
-
-
- cast-expression
-
-
-
- unary-expression
-
-
-
-
- (
-
-
- type-id
-
-
- )
-
-
- cast-expression
-
-
-
-
-
-
-
- pm-expression
-
-
-
- cast-expression
-
-
-
-
- pm-expression
-
-
- .*
-
-
- cast-expression
-
-
-
-
-
-
- pm-expression
-
-
- ->*
-
-
- cast-expression
-
-
-
-
-
-
-
- multiplicative-expression
-
-
-
- pm-expression
-
-
-
-
- multiplicative-expression
-
-
- *
-
-
- pm-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- /
-
-
- pm-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- %
-
-
- pm-expression
-
-
-
-
-
-
-
- additive-expression
-
-
-
- multiplicative-expression
-
-
-
-
- additive-expression
-
-
- +
-
-
- multiplicative-expression
-
-
-
-
-
-
- additive-expression
-
-
- -
-
-
- multiplicative-expression
-
-
-
-
-
-
-
- shift-expression
-
-
-
- additive-expression
-
-
-
-
- shift-expression
-
-
- <<
-
-
- additive-expression
-
-
-
-
-
-
- shift-expression
-
-
- >>
-
-
- additive-expression
-
-
-
-
-
-
-
- relational-expression
-
-
-
- shift-expression
-
-
-
-
- relational-expression
-
-
- <
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- <=
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >=
-
-
- shift-expression
-
-
-
-
-
-
-
- equality-expression
-
-
-
- relational-expression
-
-
-
-
- equality-expression
-
-
- ==
-
-
- relational-expression
-
-
-
-
-
-
- equality-expression
-
-
- !=
-
-
- relational-expression
-
-
-
-
-
-
-
- and-expression
-
-
-
- equality-expression
-
-
-
-
- and-expression
-
-
- &
-
-
- equality-expression
-
-
-
-
-
-
-
- exclusive-or-expression
-
-
-
- and-expression
-
-
-
-
- exclusive-or-expression
-
-
- ^
-
-
- and-expression
-
-
-
-
-
-
-
- inclusive-or-expression
-
-
-
- exclusive-or-expression
-
-
-
-
- inclusive-or-expression
-
-
- |
-
-
- exclusive-or-expression
-
-
-
-
-
-
-
- logical-and-expression
-
-
-
- inclusive-or-expression
-
-
-
-
- logical-and-expression
-
-
- &&
-
-
- inclusive-or-expression
-
-
-
-
-
-
-
- logical-or-expression
-
-
-
- logical-and-expression
-
-
-
-
- logical-or-expression
-
-
- ||
-
-
- logical-and-expression
-
-
-
-
-
-
-
- conditional-expression
-
-
-
- logical-or-expression
-
-
-
-
- logical-or-expression
-
-
- ?
-
-
- expression
-
-
- :
-
-
- assignment-expression
-
-
-
-
-
-
-
- assignment-expression
-
-
-
- conditional-expression
-
-
-
-
- logical-or-expression
-
-
- assignment-operator
-
-
- assignment-expression
-
-
-
-
- throw-expression
-
-
-
-
-
- assignment-operator
-
-
-
- =
-
-
- *=
-
-
- /=
-
-
- %=
-
-
- +=
-
-
- -=
-
-
- >>=
-
-
- <<=
-
-
- &=
-
-
- ^=
-
-
- |=
-
-
-
-
-
- expression
-
-
-
- assignment-expression
-
-
-
-
- expression
-
-
- ,
-
-
- assignment-expression
-
-
-
-
-
-
-
- constant-expression
-
- conditional-expression
-
-
-
- statement
-
-
-
- labeled-statement
-
-
- expression-statement
-
-
- compound-statement
-
-
- selection-statement
-
-
- iteration-statement
-
-
- jump-statement
-
-
- declaration-statement
-
-
- try-block
-
-
-
-
-
- labeled-statement
-
-
-
-
-
- identifier
-
-
- :
-
-
- statement
-
-
-
-
-
-
- case
-
-
- constant-expression
-
-
- :
-
-
- statement
-
-
-
-
-
-
- default
-
-
- :
-
-
- statement
-
-
-
-
-
-
-
- expression-statement
-
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
- compound-statement
-
-
-
- {
-
-
-
-
- statement-seq
-
-
-
-
- }
-
-
-
-
-
- statement-seq
-
-
-
- statement
-
-
-
-
- statement-seq
-
-
- statement
-
-
-
-
-
-
-
- selection-statement
-
-
-
-
-
- if
-
-
- (
-
-
- condition
-
-
- )
-
-
- statement
-
-
-
-
-
-
- if
-
-
- (
-
-
- condition
-
-
- )
-
-
- statement
-
-
- else
-
-
- statement
-
-
-
-
-
-
- switch
-
-
- (
-
-
- condition
-
-
- )
-
-
- statement
-
-
-
-
-
-
-
- condition
-
-
-
- expression
-
-
-
-
- type-specifier-seq
-
-
- declarator
-
-
- =
-
-
- assignment-expression
-
-
-
-
-
-
-
- iteration-statement
-
-
-
-
-
- while
-
-
- (
-
-
- condition
-
-
- )
-
-
- statement
-
-
-
-
-
-
- do
-
-
- statement
-
-
- while
-
-
- (
-
-
- expression
-
-
- )
-
-
- ;
-
-
-
-
-
-
- for
-
-
- (
-
-
- for-init-statement
-
-
-
-
- condition
-
-
-
-
- ;
-
-
-
-
- expression
-
-
-
-
- )
-
-
- statement
-
-
-
-
-
-
-
- for-init-statement
-
-
-
- expression-statement
-
-
- simple-declaration
-
-
-
-
-
- jump-statement
-
-
-
-
-
- break
-
-
- ;
-
-
-
-
-
-
- continue
-
-
- ;
-
-
-
-
-
-
- return
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
-
- goto
-
-
- identifier
-
-
- ;
-
-
-
-
-
-
-
- declaration-statement
-
- block-declaration
-
-
-
- declaration-seq
-
-
-
- declaration
-
-
-
-
- declaration-seq
-
-
- declaration
-
-
-
-
-
-
-
- declaration
-
-
-
- block-declaration
-
-
- function-definition
-
-
- template-declaration
-
-
- explicit-instantiation
-
-
- explicit-specialization
-
-
- linkage-specification
-
-
- namespace-definition
-
-
-
-
-
- block-declaration
-
-
-
- simple-declaration
-
-
- asm-definition
-
-
- namespace-alias-definition
-
-
- using-declaration
-
-
- using-directive
-
-
-
-
-
- simple-declaration
-
-
-
-
-
- decl-specifier-seq
-
-
-
-
-
-
- init-declarator-list
-
-
-
-
- ;
-
-
-
-
-
- decl-specifier
-
-
-
- storage-class-specifier
-
-
- type-specifier
-
-
- function-specifier
-
-
- friend
-
-
- typedef
-
-
-
-
-
- decl-specifier-seq
-
-
-
-
-
- decl-specifier-seq
-
-
-
-
- decl-specifier
-
-
-
-
-
- storage-class-specifier
-
-
-
- auto
-
-
- register
-
-
- static
-
-
- extern
-
-
- mutable
-
-
-
-
-
- function-specifier
-
-
-
- inline
-
-
- virtual
-
-
- explicit
-
-
-
-
-
- typedef-name
-
- identifier
-
-
-
- type-specifier
-
-
-
- simple-type-specifier
-
-
- class-specifier
-
-
- enum-specifier
-
-
- elaborated-type-specifier
-
-
- cv-qualifier
-
-
-
-
-
- simple-type-specifier
-
-
-
-
-
-
-
- ::
-
-
-
-
-
-
- nested-name-specifier
-
-
-
-
- type-name
-
-
-
-
-
-
-
-
- ::
-
-
-
-
- nested-name-specifier
-
-
- template
-
-
- template-id
-
-
-
-
- char
-
-
- wchar_t
-
-
- bool
-
-
- short
-
-
- int
-
-
- long
-
-
- signed
-
-
- unsigned
-
-
- float
-
-
- double
-
-
- void
-
-
-
-
-
- type-name
-
-
-
- class-name
-
-
- enum-name
-
-
- typedef-name
-
-
-
-
-
- elaborated-type-specifier
-
-
-
-
-
- class-key
-
-
-
-
- ::
-
-
-
-
-
-
- nested-name-specifier
-
-
-
-
- identifier
-
-
-
-
-
-
- enum
-
-
-
-
- ::
-
-
-
-
-
-
- nested-name-specifier
-
-
-
-
- identifier
-
-
-
-
-
-
- typename
-
-
-
-
- ::
-
-
-
-
- nested-name-specifier
-
-
- identifier
-
-
-
-
-
-
- typename
-
-
-
-
- ::
-
-
-
-
- nested-name-specifier
-
-
-
-
- template
-
-
-
-
- template-id
-
-
-
-
-
-
-
- enum-name
-
- identifier
-
-
-
- enum-specifier
-
-
-
- enum
-
-
-
-
- identifier
-
-
-
-
- {
-
-
-
-
- enumerator-list
-
-
-
-
- }
-
-
-
-
-
- enumerator-list
-
-
-
- enumerator-definition
-
-
-
-
- enumerator-list
-
-
- ,
-
-
- enumerator-definition
-
-
-
-
-
-
-
- enumerator-definition
-
-
-
- enumerator
-
-
-
-
- enumerator
-
-
- =
-
-
- constant-expression
-
-
-
-
-
-
-
- enumerator
-
- identifier
-
-
-
- namespace-name
-
-
-
- original-namespace-name
-
-
- namespace-alias
-
-
-
-
-
- original-namespace-name
-
- identifier
-
-
-
- namespace-definition
-
-
-
- named-namespace-definition
-
-
- unnamed-namespace-definition
-
-
-
-
-
- named-namespace-definition
-
-
-
- original-namespace-definition
-
-
- extension-namespace-definition
-
-
-
-
-
- original-namespace-definition
-
-
-
- namespace
-
-
- identifier
-
-
- {
-
-
- namespace-body
-
-
- }
-
-
-
-
-
- extension-namespace-definition
-
-
-
- namespace
-
-
- original-namespace-name
-
-
- {
-
-
- namespace-body
-
-
- }
-
-
-
-
-
- unnamed-namespace-definition
-
-
-
- namespace
-
-
- {
-
-
- namespace-body
-
-
- }
-
-
-
-
-
- namespace-body
-
-
-
- declaration-seq
-
-
-
-
-
- namespace-alias
-
- identifier
-
-
-
- namespace-alias-definition
-
-
-
- namespace
-
-
- identifier
-
-
- =
-
-
- qualified-namespace-specifier
-
-
- ;
-
-
-
-
-
- qualified-namespace-specifier
-
-
-
-
-
- ::
-
-
-
-
-
-
- nested-name-specifier
-
-
-
-
- namespace-name
-
-
-
-
-
- using-declaration
-
-
-
-
-
- using
-
-
-
-
- typename
-
-
-
-
-
-
- ::
-
-
-
-
- nested-name-specifier
-
-
- unqualified-id
-
-
- ;
-
-
-
-
-
-
- using
-
-
- ::
-
-
- unqualified-id
-
-
- ;
-
-
-
-
-
-
-
- using-directive
-
-
-
- using
-
-
- namespace
-
-
-
-
- ::
-
-
-
-
-
-
- nested-name-specifier
-
-
-
-
- namespace-name
-
-
- ;
-
-
-
-
-
- asm-definition
-
-
-
- asm
-
-
- (
-
-
- string-literal
-
-
- )
-
-
- ;
-
-
-
-
-
- linkage-specification
-
-
-
-
-
- extern
-
-
- string-literal
-
-
- {
-
-
-
-
- declaration-seq
-
-
-
-
- }
-
-
-
-
-
-
- extern
-
-
- string-literal
-
-
- declaration
-
-
-
-
-
-
-
- init-declarator-list
-
-
-
- init-declarator
-
-
-
-
- init-declarator-list
-
-
- ,
-
-
- init-declarator
-
-
-
-
-
-
-
- init-declarator
-
-
-
- declarator
-
-
-
-
- initializer
-
-
-
-
-
-
-
- declarator
-
-
-
- direct-declarator
-
-
-
-
- ptr-operator
-
-
- declarator
-
-
-
-
-
-
-
- direct-declarator
-
-
-
- declarator-id
-
-
-
-
- direct-declarator
-
-
- (
-
-
- parameter-declaration-clause
-
-
- )
-
-
-
-
- cv-qualifier-seq
-
-
-
-
-
-
- exception-specification
-
-
-
-
-
-
-
-
- direct-declarator
-
-
- [
-
-
-
-
- constant-expression
-
-
-
-
- ]
-
-
-
-
-
-
- (
-
-
- declarator
-
-
- )
-
-
-
-
-
-
-
- ptr-operator
-
-
-
-
-
- *
-
-
-
-
- cv-qualifier-seq
-
-
-
-
-
-
- &
-
-
-
-
-
-
- ::
-
-
-
-
- nested-name-specifier
-
-
- *
-
-
-
-
- cv-qualifier-seq
-
-
-
-
-
-
-
-
-
- cv-qualifier-seq
-
-
-
- cv-qualifier
-
-
-
-
- cv-qualifier-seq
-
-
-
-
-
-
-
- cv-qualifier
-
-
-
- const
-
-
- volatile
-
-
-
-
-
- declarator-id
-
-
-
- id-expression
-
-
-
-
-
-
- ::
-
-
-
-
-
-
- nested-name-specifier
-
-
-
-
- type-name
-
-
-
-
-
-
-
- type-id
-
-
-
- type-specifier-seq
-
-
-
-
- abstract-declarator
-
-
-
-
-
-
-
- type-specifier-seq
-
-
-
- type-specifier
-
-
-
-
- type-specifier-seq
-
-
-
-
-
-
-
- abstract-declarator
-
-
-
-
-
- ptr-operator
-
-
-
-
- abstract-declarator
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
- (
-
-
- parameter-declaration-clause
-
-
- )
-
-
-
-
- cv-qualifier-seq
-
-
-
-
-
-
- exception-specification
-
-
-
-
-
-
-
-
-
-
- direct-abstract-declarator
-
-
-
-
- [
-
-
-
-
- constant-expression
-
-
-
-
- ]
-
-
-
-
-
-
- (
-
-
- abstract-declarator
-
-
- )
-
-
-
-
-
-
-
- parameter-declaration-clause
-
-
-
-
-
-
-
- parameter-declaration-list
-
-
-
-
-
-
- ...
-
-
-
-
-
-
-
-
- parameter-declaration-list
-
-
- ,
-
-
- ...
-
-
-
-
-
-
-
- parameter-declaration-list
-
-
-
- parameter-declaration
-
-
-
-
- parameter-declaration-list
-
-
- ,
-
-
- parameter-declaration
-
-
-
-
-
-
-
- parameter-declaration
-
-
-
-
-
- decl-specifier-seq
-
-
- declarator
-
-
-
-
-
-
- decl-specifier-seq
-
-
- declarator
-
-
- =
-
-
- assignment-expression
-
-
-
-
-
-
- decl-specifier-seq
-
-
-
-
- abstract-declarator
-
-
-
-
-
-
-
-
- decl-specifier-seq
-
-
-
-
- abstract-declarator
-
-
-
-
- =
-
-
- assignment-expression
-
-
-
-
-
-
-
- function-definition
-
-
-
-
-
-
-
- decl-specifier-seq
-
-
-
-
- declarator
-
-
-
-
- ctor-initializer
-
-
-
-
- function-body
-
-
-
-
-
-
-
-
- decl-specifier-seq
-
-
-
-
- declarator
-
-
- function-try-block
-
-
-
-
-
-
-
- function-body
-
- compound-statement
-
-
-
- initializer
-
-
-
-
-
- =
-
-
- initializer-clause
-
-
-
-
-
-
- (
-
-
- expression-list
-
-
- )
-
-
-
-
-
-
-
- initializer-clause
-
-
-
- assignment-expression
-
-
-
-
- {
-
-
- initializer-list
-
-
-
-
- ,
-
-
-
-
- }
-
-
-
-
-
-
- {
-
-
- }
-
-
-
-
-
-
-
- initializer-list
-
-
-
- initializer-clause
-
-
-
-
- initializer-list
-
-
- ,
-
-
- initializer-clause
-
-
-
-
-
-
-
- class-name
-
-
-
- identifier
-
-
- template-id
-
-
-
-
-
- class-specifier
-
-
-
- class-head
-
-
- {
-
-
-
-
- member-specification
-
-
-
-
- }
-
-
-
-
-
- class-head
-
-
-
-
-
- class-key
-
-
-
-
- identifier
-
-
-
-
-
-
- base-clause
-
-
-
-
-
-
-
-
- class-key
-
-
- nested-name-specifier
-
-
- identifier
-
-
-
-
- base-clause
-
-
-
-
-
-
-
-
- class-key
-
-
-
-
- nested-name-specifier
-
-
-
-
- template-id
-
-
-
-
- base-clause
-
-
-
-
-
-
-
-
-
- class-key
-
-
-
- class
-
-
- struct
-
-
- union
-
-
-
-
-
- member-specification
-
-
-
-
-
- member-declaration
-
-
-
-
- member-specification
-
-
-
-
-
-
-
-
- access-specifier
-
-
- :
-
-
-
-
- member-specification
-
-
-
-
-
-
-
-
-
- member-declaration
-
-
-
-
-
-
-
- decl-specifier-seq
-
-
-
-
-
-
- member-declarator-list
-
-
-
-
- ;
-
-
-
-
-
-
- function-definition
-
-
-
-
- ;
-
-
-
-
-
-
-
-
-
-
- ::
-
-
-
-
- nested-name-specifier
-
-
-
-
- template
-
-
-
-
- unqualified-id
-
-
- ;
-
-
-
-
- using-declaration
-
-
- template-declaration
-
-
-
-
-
- member-declarator-list
-
-
-
- member-declarator
-
-
-
-
- member-declarator-list
-
-
- ,
-
-
- member-declarator
-
-
-
-
-
-
-
- member-declarator
-
-
-
-
-
- declarator
-
-
-
-
- pure-specifier
-
-
-
-
-
-
-
-
- declarator
-
-
-
-
- constant-initializer
-
-
-
-
-
-
-
-
-
-
- identifier
-
-
-
-
- :
-
-
- constant-expression
-
-
-
-
-
-
-
- pure-specifier
-
-
-
- =
-
-
- 0
-
-
-
-
-
- constant-initializer
-
-
-
- =
-
-
- constant-expression
-
-
-
-
-
- base-clause
-
-
-
- :
-
-
- base-specifier-list
-
-
-
-
-
- base-specifier-list
-
-
-
- base-specifier
-
-
-
-
- base-specifier-list
-
-
- ,
-
-
- base-specifier
-
-
-
-
-
-
-
- base-specifier
-
-
-
-
-
-
-
- ::
-
-
-
-
-
-
- nested-name-specifier
-
-
-
-
- class-name
-
-
-
-
-
-
- virtual
-
-
-
-
- access-specifier
-
-
-
-
-
-
- ::
-
-
-
-
-
-
- nested-name-specifier
-
-
-
-
- class-name
-
-
-
-
-
-
- access-specifier
-
-
-
-
- virtual
-
-
-
-
-
-
- ::
-
-
-
-
-
-
- nested-name-specifier
-
-
-
-
- class-name
-
-
-
-
-
-
-
- access-specifier
-
-
-
- private
-
-
- protected
-
-
- public
-
-
-
-
-
- conversion-function-id
-
-
-
- operator
-
-
- conversion-type-id
-
-
-
-
-
- conversion-type-id
-
-
-
- type-specifier-seq
-
-
-
-
- conversion-declarator
-
-
-
-
-
-
-
- conversion-declarator
-
-
-
- ptr-operator
-
-
-
-
- conversion-declarator
-
-
-
-
-
-
-
- ctor-initializer
-
-
-
- :
-
-
- mem-initializer-list
-
-
-
-
-
- mem-initializer-list
-
-
-
- mem-initializer
-
-
-
-
- mem-initializer
-
-
- ,
-
-
- mem-initializer-list
-
-
-
-
-
-
-
- mem-initializer
-
-
-
- mem-initializer-id
-
-
- (
-
-
-
-
- expression-list
-
-
-
-
- )
-
-
-
-
-
- mem-initializer-id
-
-
-
-
-
-
-
- ::
-
-
-
-
-
-
- nested-name-specifier
-
-
-
-
- class-name
-
-
-
-
- identifier
-
-
-
-
-
- operator-function-id
-
-
-
- operator
-
-
- operator
-
-
-
-
-
- operator
-
-
-
- new
-
-
- delete
-
-
-
-
- new
-
-
- [
-
-
- ]
-
-
-
-
-
-
- delete
-
-
- [
-
-
- ]
-
-
-
-
- +
-
-
- -
-
-
- *
-
-
- /
-
-
- %
-
-
- ^
-
-
- &
-
-
- |
-
-
- ~
-
-
- !
-
-
- =
-
-
- <
-
-
- >
-
-
- +=
-
-
- -=
-
-
- *=
-
-
- /=
-
-
- %=
-
-
- ^=
-
-
- &=
-
-
- |=
-
-
- <<
-
-
- >>
-
-
- >>=
-
-
- <<=
-
-
- ==
-
-
- !=
-
-
- <=
-
-
- >=
-
-
- &&
-
-
- ||
-
-
- ++
-
-
- --
-
-
- ,
-
-
- ->*
-
-
- ->
-
-
-
-
- (
-
-
- )
-
-
-
-
-
-
- [
-
-
- ]
-
-
-
-
-
-
-
- template-declaration
-
-
-
-
-
- export
-
-
-
-
- template
-
-
- <
-
-
- template-parameter-list
-
-
- >
-
-
- declaration
-
-
-
-
-
- template-parameter-list
-
-
-
- template-parameter
-
-
-
-
- template-parameter-list
-
-
- ,
-
-
- template-parameter
-
-
-
-
-
-
-
- template-parameter
-
-
-
- type-parameter
-
-
- parameter-declaration
-
-
-
-
-
- type-parameter
-
-
-
-
-
- class
-
-
-
-
- identifier
-
-
-
-
-
-
-
-
- class
-
-
-
-
- identifier
-
-
-
-
- =
-
-
- type-id
-
-
-
-
-
-
- typename
-
-
-
-
- identifier
-
-
-
-
-
-
-
-
- typename
-
-
-
-
- identifier
-
-
-
-
- =
-
-
- type-id
-
-
-
-
-
-
- template
-
-
- <
-
-
- template-parameter-list
-
-
- >
-
-
- class
-
-
-
-
- identifier
-
-
-
-
-
-
-
-
- template
-
-
- <
-
-
- template-parameter-list
-
-
- >
-
-
- class
-
-
-
-
- identifier
-
-
-
-
- =
-
-
- id-expression
-
-
-
-
-
-
-
- template-id
-
-
-
- template-name
-
-
- <
-
-
-
-
- template-argument-list
-
-
-
-
- >
-
-
-
-
-
- template-name
-
- identifier
-
-
-
- template-argument-list
-
-
-
- template-argument
-
-
-
-
- template-argument-list
-
-
- ,
-
-
- template-argument
-
-
-
-
-
-
-
- template-argument
-
-
-
- assignment-expression
-
-
- type-id
-
-
- id-expression
-
-
-
-
-
- explicit-instantiation
-
-
-
- template
-
-
- declaration
-
-
-
-
-
- explicit-specialization
-
-
-
- template
-
-
- <
-
-
- >
-
-
- declaration
-
-
-
-
-
- try-block
-
-
-
- try
-
-
- compound-statement
-
-
- handler-seq
-
-
-
-
-
- function-try-block
-
-
-
- try
-
-
-
-
- ctor-initializer
-
-
-
-
- function-body
-
-
- handler-seq
-
-
-
-
-
- handler-seq
-
-
-
- handler
-
-
-
-
- handler-seq
-
-
-
-
-
-
-
- handler
-
-
-
- catch
-
-
- (
-
-
- exception-declaration
-
-
- )
-
-
- compound-statement
-
-
-
-
-
- exception-declaration
-
-
-
-
-
- type-specifier-seq
-
-
- declarator
-
-
-
-
-
-
- type-specifier-seq
-
-
- abstract-declarator
-
-
-
-
- type-specifier-seq
-
-
- ...
-
-
-
-
-
- throw-expression
-
-
-
- throw
-
-
-
-
- assignment-expression
-
-
-
-
-
-
-
- exception-specification
-
-
-
- throw
-
-
- (
-
-
-
-
- type-id-list
-
-
-
-
- )
-
-
-
-
-
- type-id-list
-
-
-
- type-id
-
-
-
-
- type-id-list
-
-
- ,
-
-
- type-id
-
-
-
-
-
-
-
- keyword
-
-
-
- new
-
-
- delete
-
-
- and
-
-
- bitand
-
-
- bitor
-
-
- compl
-
-
- not
-
-
- or
-
-
- xor
-
-
- enum
-
-
- try
-
-
- namespace
-
-
- template
-
-
- case
-
-
- default
-
-
- using
-
-
- throw
-
-
- break
-
-
- continue
-
-
- return
-
-
- goto
-
-
- char
-
-
- bool
-
-
- short
-
-
- int
-
-
- long
-
-
- signed
-
-
- unsigned
-
-
- float
-
-
- double
-
-
- void
-
-
- extern
-
-
- private
-
-
- protected
-
-
- public
-
-
- export
-
-
- typename
-
-
- typeid
-
-
- if
-
-
- else
-
-
- switch
-
-
- virtual
-
-
- sizeof
-
-
- friend
-
-
- typedef
-
-
- catch
-
-
- auto
-
-
- register
-
-
- static
-
-
- mutable
-
-
- asm
-
-
- while
-
-
- do
-
-
- for
-
-
- inline
-
-
- explicit
-
-
- const
-
-
- volatile
-
-
- class
-
-
- struct
-
-
- union
-
-
- this
-
-
- operator
-
-
-
-
-
\ No newline at end of file
+
+
+ translation-unit
+
+
+
+ declaration-seq
+
+
+
+
+
+ primary-expression
+
+
+
+ literal
+
+
+ this
+
+
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+ id-expression
+
+
+
+
+
+ id-expression
+
+
+
+ unqualified-id
+
+
+ qualified-id
+
+
+
+
+
+ unqualified-id
+
+
+
+ identifier
+
+
+ operator-function-id
+
+
+ conversion-function-id
+
+
+
+
+ ~
+
+
+ class-name
+
+
+
+
+ template-id
+
+
+
+
+
+ qualified-id
+
+
+
+
+
+
+
+ ::
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ template
+
+
+
+
+ unqualified-id
+
+
+
+
+
+
+ ::
+
+
+ identifier
+
+
+
+
+
+
+ ::
+
+
+ operator-function-id
+
+
+
+
+
+
+ ::
+
+
+ template-id
+
+
+
+
+
+
+
+ nested-name-specifier
+
+
+
+
+
+ class-or-namespace-name
+
+
+ ::
+
+
+
+
+ nested-name-specifier
+
+
+
+
+
+
+
+
+ class-or-namespace-name
+
+
+ ::
+
+
+ template
+
+
+ nested-name-specifier
+
+
+
+
+
+
+
+ class-or-namespace-name
+
+
+
+ class-name
+
+
+ namespace-name
+
+
+
+
+
+ postfix-expression
+
+
+
+ primary-expression
+
+
+
+
+ postfix-expression
+
+
+ [
+
+
+ expression
+
+
+ ]
+
+
+
+
+
+
+ postfix-expression
+
+
+ (
+
+
+
+
+ expression-list
+
+
+
+
+ )
+
+
+
+
+
+
+ simple-type-specifier
+
+
+ (
+
+
+
+
+ expression-list
+
+
+
+
+ )
+
+
+
+
+
+
+ typename
+
+
+
+
+ ::
+
+
+
+
+ nested-name-specifier
+
+
+ identifier
+
+
+ (
+
+
+
+
+ expression-list
+
+
+
+
+ )
+
+
+
+
+
+
+ typename
+
+
+
+
+ ::
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ template
+
+
+
+
+ template-id
+
+
+ (
+
+
+
+
+ expression-list
+
+
+
+
+ )
+
+
+
+
+
+
+ postfix-expression
+
+
+ .
+
+
+
+
+ template
+
+
+
+
+ id-expression
+
+
+
+
+
+
+ postfix-expression
+
+
+ ->
+
+
+
+
+ template
+
+
+
+
+ id-expression
+
+
+
+
+
+
+ postfix-expression
+
+
+ .
+
+
+ pseudo-destructor-name
+
+
+
+
+
+
+ postfix-expression
+
+
+ ->
+
+
+ pseudo-destructor-name
+
+
+
+
+
+
+ postfix-expression
+
+
+ ++
+
+
+
+
+
+
+ postfix-expression
+
+
+ --
+
+
+
+
+
+
+ dynamic_cast
+
+
+ <
+
+
+ type-id
+
+
+ >
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+
+ static_cast
+
+
+ <
+
+
+ type-id
+
+
+ >
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+
+ reinterpret_cast
+
+
+ <
+
+
+ type-id
+
+
+ >
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+
+ const_cast
+
+
+ <
+
+
+ type-id
+
+
+ >
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+
+ typeid
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+
+ typeid
+
+
+ (
+
+
+ type-id
+
+
+ )
+
+
+
+
+
+
+
+ expression-list
+
+
+
+ assignment-expression
+
+
+
+
+ expression-list
+
+
+ ,
+
+
+ assignment-expression
+
+
+
+
+
+
+
+ pseudo-destructor-name
+
+
+
+
+
+
+
+ ::
+
+
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ type-name
+
+
+ ::
+
+
+ ~
+
+
+ type-name
+
+
+
+
+
+
+
+
+ ::
+
+
+
+
+ nested-name-specifier
+
+
+ template
+
+
+ template-id
+
+
+ ::
+
+
+ ~
+
+
+ type-name
+
+
+
+
+
+
+
+
+ ::
+
+
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ ~
+
+
+ type-name
+
+
+
+
+
+
+
+ unary-expression
+
+
+
+ postfix-expression
+
+
+
+
+ ++
+
+
+ cast-expression
+
+
+
+
+
+
+ --
+
+
+ cast-expression
+
+
+
+
+
+
+ unary-operator
+
+
+ cast-expression
+
+
+
+
+
+
+ sizeof
+
+
+ unary-expression
+
+
+
+
+
+
+ sizeof
+
+
+ (
+
+
+ type-id
+
+
+ )
+
+
+
+
+ new-expression
+
+
+ delete-expression
+
+
+
+
+
+ unary-operator
+
+
+
+ *
+
+
+ &
+
+
+ +
+
+
+ -
+
+
+ !
+
+
+ ~
+
+
+
+
+
+ new-expression
+
+
+
+
+
+
+
+ ::
+
+
+
+
+ new
+
+
+
+
+ new-placement
+
+
+
+
+ new-type-id
+
+
+
+
+ new-initializer
+
+
+
+
+
+
+
+
+
+
+ ::
+
+
+
+
+ new
+
+
+
+
+ new-placement
+
+
+
+
+ (
+
+
+ type-id
+
+
+ )
+
+
+
+
+ new-initializer
+
+
+
+
+
+
+
+
+
+ new-placement
+
+
+
+ (
+
+
+ expression-list
+
+
+ )
+
+
+
+
+
+ new-type-id
+
+
+
+ type-specifier-seq
+
+
+
+
+ new-declarator
+
+
+
+
+
+
+
+ new-declarator
+
+
+
+
+
+ ptr-operator
+
+
+
+
+ new-declarator
+
+
+
+
+
+
+ direct-new-declarator
+
+
+
+
+
+ direct-new-declarator
+
+
+
+
+
+ [
+
+
+ expression
+
+
+ ]
+
+
+
+
+
+
+ direct-new-declarator
+
+
+ [
+
+
+ constant-expression
+
+
+ ]
+
+
+
+
+
+
+
+ new-initializer
+
+
+
+ (
+
+
+
+
+ expression-list
+
+
+
+
+ )
+
+
+
+
+
+ delete-expression
+
+
+
+
+
+
+
+ ::
+
+
+
+
+ delete
+
+
+ cast-expression
+
+
+
+
+
+
+
+
+ ::
+
+
+
+
+ delete
+
+
+ [
+
+
+ ]
+
+
+ cast-expression
+
+
+
+
+
+
+
+ cast-expression
+
+
+
+ unary-expression
+
+
+
+
+ (
+
+
+ type-id
+
+
+ )
+
+
+ cast-expression
+
+
+
+
+
+
+
+ pm-expression
+
+
+
+ cast-expression
+
+
+
+
+ pm-expression
+
+
+ .*
+
+
+ cast-expression
+
+
+
+
+
+
+ pm-expression
+
+
+ ->*
+
+
+ cast-expression
+
+
+
+
+
+
+
+ multiplicative-expression
+
+
+
+ pm-expression
+
+
+
+
+ multiplicative-expression
+
+
+ *
+
+
+ pm-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ /
+
+
+ pm-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ %
+
+
+ pm-expression
+
+
+
+
+
+
+
+ additive-expression
+
+
+
+ multiplicative-expression
+
+
+
+
+ additive-expression
+
+
+ +
+
+
+ multiplicative-expression
+
+
+
+
+
+
+ additive-expression
+
+
+ -
+
+
+ multiplicative-expression
+
+
+
+
+
+
+
+ shift-expression
+
+
+
+ additive-expression
+
+
+
+
+ shift-expression
+
+
+ <<
+
+
+ additive-expression
+
+
+
+
+
+
+ shift-expression
+
+
+ >>
+
+
+ additive-expression
+
+
+
+
+
+
+
+ relational-expression
+
+
+
+ shift-expression
+
+
+
+
+ relational-expression
+
+
+ <
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ <=
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >=
+
+
+ shift-expression
+
+
+
+
+
+
+
+ equality-expression
+
+
+
+ relational-expression
+
+
+
+
+ equality-expression
+
+
+ ==
+
+
+ relational-expression
+
+
+
+
+
+
+ equality-expression
+
+
+ !=
+
+
+ relational-expression
+
+
+
+
+
+
+
+ and-expression
+
+
+
+ equality-expression
+
+
+
+
+ and-expression
+
+
+ &
+
+
+ equality-expression
+
+
+
+
+
+
+
+ exclusive-or-expression
+
+
+
+ and-expression
+
+
+
+
+ exclusive-or-expression
+
+
+ ^
+
+
+ and-expression
+
+
+
+
+
+
+
+ inclusive-or-expression
+
+
+
+ exclusive-or-expression
+
+
+
+
+ inclusive-or-expression
+
+
+ |
+
+
+ exclusive-or-expression
+
+
+
+
+
+
+
+ logical-and-expression
+
+
+
+ inclusive-or-expression
+
+
+
+
+ logical-and-expression
+
+
+ &&
+
+
+ inclusive-or-expression
+
+
+
+
+
+
+
+ logical-or-expression
+
+
+
+ logical-and-expression
+
+
+
+
+ logical-or-expression
+
+
+ ||
+
+
+ logical-and-expression
+
+
+
+
+
+
+
+ conditional-expression
+
+
+
+ logical-or-expression
+
+
+
+
+ logical-or-expression
+
+
+ ?
+
+
+ expression
+
+
+ :
+
+
+ assignment-expression
+
+
+
+
+
+
+
+ assignment-expression
+
+
+
+ conditional-expression
+
+
+
+
+ logical-or-expression
+
+
+ assignment-operator
+
+
+ assignment-expression
+
+
+
+
+ throw-expression
+
+
+
+
+
+ assignment-operator
+
+
+
+ =
+
+
+ *=
+
+
+ /=
+
+
+ %=
+
+
+ +=
+
+
+ -=
+
+
+ >>=
+
+
+ <<=
+
+
+ &=
+
+
+ ^=
+
+
+ |=
+
+
+
+
+
+ expression
+
+
+
+ assignment-expression
+
+
+
+
+ expression
+
+
+ ,
+
+
+ assignment-expression
+
+
+
+
+
+
+
+ constant-expression
+
+ conditional-expression
+
+
+
+ statement
+
+
+
+ labeled-statement
+
+
+ expression-statement
+
+
+ compound-statement
+
+
+ selection-statement
+
+
+ iteration-statement
+
+
+ jump-statement
+
+
+ declaration-statement
+
+
+ try-block
+
+
+
+
+
+ labeled-statement
+
+
+
+
+
+ identifier
+
+
+ :
+
+
+ statement
+
+
+
+
+
+
+ case
+
+
+ constant-expression
+
+
+ :
+
+
+ statement
+
+
+
+
+
+
+ default
+
+
+ :
+
+
+ statement
+
+
+
+
+
+
+
+ expression-statement
+
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+ compound-statement
+
+
+
+ {
+
+
+
+
+ statement-seq
+
+
+
+
+ }
+
+
+
+
+
+ statement-seq
+
+
+
+ statement
+
+
+
+
+ statement-seq
+
+
+ statement
+
+
+
+
+
+
+
+ selection-statement
+
+
+
+
+
+ if
+
+
+ (
+
+
+ condition
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+ if
+
+
+ (
+
+
+ condition
+
+
+ )
+
+
+ statement
+
+
+ else
+
+
+ statement
+
+
+
+
+
+
+ switch
+
+
+ (
+
+
+ condition
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+
+ condition
+
+
+
+ expression
+
+
+
+
+ type-specifier-seq
+
+
+ declarator
+
+
+ =
+
+
+ assignment-expression
+
+
+
+
+
+
+
+ iteration-statement
+
+
+
+
+
+ while
+
+
+ (
+
+
+ condition
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+ do
+
+
+ statement
+
+
+ while
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ ;
+
+
+
+
+
+
+ for
+
+
+ (
+
+
+ for-init-statement
+
+
+
+
+ condition
+
+
+
+
+ ;
+
+
+
+
+ expression
+
+
+
+
+ )
+
+
+ statement
+
+
+
+
+
+
+
+ for-init-statement
+
+
+
+ expression-statement
+
+
+ simple-declaration
+
+
+
+
+
+ jump-statement
+
+
+
+
+
+ break
+
+
+ ;
+
+
+
+
+
+
+ continue
+
+
+ ;
+
+
+
+
+
+
+ return
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+
+ goto
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+
+
+ declaration-statement
+
+ block-declaration
+
+
+
+ declaration-seq
+
+
+
+ declaration
+
+
+
+
+ declaration-seq
+
+
+ declaration
+
+
+
+
+
+
+
+ declaration
+
+
+
+ block-declaration
+
+
+ function-definition
+
+
+ template-declaration
+
+
+ explicit-instantiation
+
+
+ explicit-specialization
+
+
+ linkage-specification
+
+
+ namespace-definition
+
+
+
+
+
+ block-declaration
+
+
+
+ simple-declaration
+
+
+ asm-definition
+
+
+ namespace-alias-definition
+
+
+ using-declaration
+
+
+ using-directive
+
+
+
+
+
+ simple-declaration
+
+
+
+
+
+ decl-specifier-seq
+
+
+
+
+
+
+ init-declarator-list
+
+
+
+
+ ;
+
+
+
+
+
+ decl-specifier
+
+
+
+ storage-class-specifier
+
+
+ type-specifier
+
+
+ function-specifier
+
+
+ friend
+
+
+ typedef
+
+
+
+
+
+ decl-specifier-seq
+
+
+
+
+
+ decl-specifier-seq
+
+
+
+
+ decl-specifier
+
+
+
+
+
+ storage-class-specifier
+
+
+
+ auto
+
+
+ register
+
+
+ static
+
+
+ extern
+
+
+ mutable
+
+
+
+
+
+ function-specifier
+
+
+
+ inline
+
+
+ virtual
+
+
+ explicit
+
+
+
+
+
+ typedef-name
+
+ identifier
+
+
+
+ type-specifier
+
+
+
+ simple-type-specifier
+
+
+ class-specifier
+
+
+ enum-specifier
+
+
+ elaborated-type-specifier
+
+
+ cv-qualifier
+
+
+
+
+
+ simple-type-specifier
+
+
+
+
+
+
+
+ ::
+
+
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ type-name
+
+
+
+
+
+
+
+
+ ::
+
+
+
+
+ nested-name-specifier
+
+
+ template
+
+
+ template-id
+
+
+
+
+ char
+
+
+ wchar_t
+
+
+ bool
+
+
+ short
+
+
+ int
+
+
+ long
+
+
+ signed
+
+
+ unsigned
+
+
+ float
+
+
+ double
+
+
+ void
+
+
+
+
+
+ type-name
+
+
+
+ class-name
+
+
+ enum-name
+
+
+ typedef-name
+
+
+
+
+
+ elaborated-type-specifier
+
+
+
+
+
+ class-key
+
+
+
+
+ ::
+
+
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ identifier
+
+
+
+
+
+
+ enum
+
+
+
+
+ ::
+
+
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ identifier
+
+
+
+
+
+
+ typename
+
+
+
+
+ ::
+
+
+
+
+ nested-name-specifier
+
+
+ identifier
+
+
+
+
+
+
+ typename
+
+
+
+
+ ::
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ template
+
+
+
+
+ template-id
+
+
+
+
+
+
+
+ enum-name
+
+ identifier
+
+
+
+ enum-specifier
+
+
+
+ enum
+
+
+
+
+ identifier
+
+
+
+
+ {
+
+
+
+
+ enumerator-list
+
+
+
+
+ }
+
+
+
+
+
+ enumerator-list
+
+
+
+ enumerator-definition
+
+
+
+
+ enumerator-list
+
+
+ ,
+
+
+ enumerator-definition
+
+
+
+
+
+
+
+ enumerator-definition
+
+
+
+ enumerator
+
+
+
+
+ enumerator
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+
+
+ enumerator
+
+ identifier
+
+
+
+ namespace-name
+
+
+
+ original-namespace-name
+
+
+ namespace-alias
+
+
+
+
+
+ original-namespace-name
+
+ identifier
+
+
+
+ namespace-definition
+
+
+
+ named-namespace-definition
+
+
+ unnamed-namespace-definition
+
+
+
+
+
+ named-namespace-definition
+
+
+
+ original-namespace-definition
+
+
+ extension-namespace-definition
+
+
+
+
+
+ original-namespace-definition
+
+
+
+ namespace
+
+
+ identifier
+
+
+ {
+
+
+ namespace-body
+
+
+ }
+
+
+
+
+
+ extension-namespace-definition
+
+
+
+ namespace
+
+
+ original-namespace-name
+
+
+ {
+
+
+ namespace-body
+
+
+ }
+
+
+
+
+
+ unnamed-namespace-definition
+
+
+
+ namespace
+
+
+ {
+
+
+ namespace-body
+
+
+ }
+
+
+
+
+
+ namespace-body
+
+
+
+ declaration-seq
+
+
+
+
+
+ namespace-alias
+
+ identifier
+
+
+
+ namespace-alias-definition
+
+
+
+ namespace
+
+
+ identifier
+
+
+ =
+
+
+ qualified-namespace-specifier
+
+
+ ;
+
+
+
+
+
+ qualified-namespace-specifier
+
+
+
+
+
+ ::
+
+
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ namespace-name
+
+
+
+
+
+ using-declaration
+
+
+
+
+
+ using
+
+
+
+
+ typename
+
+
+
+
+
+
+ ::
+
+
+
+
+ nested-name-specifier
+
+
+ unqualified-id
+
+
+ ;
+
+
+
+
+
+
+ using
+
+
+ ::
+
+
+ unqualified-id
+
+
+ ;
+
+
+
+
+
+
+
+ using-directive
+
+
+
+ using
+
+
+ namespace
+
+
+
+
+ ::
+
+
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ namespace-name
+
+
+ ;
+
+
+
+
+
+ asm-definition
+
+
+
+ asm
+
+
+ (
+
+
+ string-literal
+
+
+ )
+
+
+ ;
+
+
+
+
+
+ linkage-specification
+
+
+
+
+
+ extern
+
+
+ string-literal
+
+
+ {
+
+
+
+
+ declaration-seq
+
+
+
+
+ }
+
+
+
+
+
+
+ extern
+
+
+ string-literal
+
+
+ declaration
+
+
+
+
+
+
+
+ init-declarator-list
+
+
+
+ init-declarator
+
+
+
+
+ init-declarator-list
+
+
+ ,
+
+
+ init-declarator
+
+
+
+
+
+
+
+ init-declarator
+
+
+
+ declarator
+
+
+
+
+ initializer
+
+
+
+
+
+
+
+ declarator
+
+
+
+ direct-declarator
+
+
+
+
+ ptr-operator
+
+
+ declarator
+
+
+
+
+
+
+
+ direct-declarator
+
+
+
+ declarator-id
+
+
+
+
+ direct-declarator
+
+
+ (
+
+
+ parameter-declaration-clause
+
+
+ )
+
+
+
+
+ cv-qualifier-seq
+
+
+
+
+
+
+ exception-specification
+
+
+
+
+
+
+
+
+ direct-declarator
+
+
+ [
+
+
+
+
+ constant-expression
+
+
+
+
+ ]
+
+
+
+
+
+
+ (
+
+
+ declarator
+
+
+ )
+
+
+
+
+
+
+
+ ptr-operator
+
+
+
+
+
+ *
+
+
+
+
+ cv-qualifier-seq
+
+
+
+
+
+
+ &
+
+
+
+
+
+
+ ::
+
+
+
+
+ nested-name-specifier
+
+
+ *
+
+
+
+
+ cv-qualifier-seq
+
+
+
+
+
+
+
+
+
+ cv-qualifier-seq
+
+
+
+ cv-qualifier
+
+
+
+
+ cv-qualifier-seq
+
+
+
+
+
+
+
+ cv-qualifier
+
+
+
+ const
+
+
+ volatile
+
+
+
+
+
+ declarator-id
+
+
+
+ id-expression
+
+
+
+
+
+
+ ::
+
+
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ type-name
+
+
+
+
+
+
+
+ type-id
+
+
+
+ type-specifier-seq
+
+
+
+
+ abstract-declarator
+
+
+
+
+
+
+
+ type-specifier-seq
+
+
+
+ type-specifier
+
+
+
+
+ type-specifier-seq
+
+
+
+
+
+
+
+ abstract-declarator
+
+
+
+
+
+ ptr-operator
+
+
+
+
+ abstract-declarator
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+ (
+
+
+ parameter-declaration-clause
+
+
+ )
+
+
+
+
+ cv-qualifier-seq
+
+
+
+
+
+
+ exception-specification
+
+
+
+
+
+
+
+
+
+
+ direct-abstract-declarator
+
+
+
+
+ [
+
+
+
+
+ constant-expression
+
+
+
+
+ ]
+
+
+
+
+
+
+ (
+
+
+ abstract-declarator
+
+
+ )
+
+
+
+
+
+
+
+ parameter-declaration-clause
+
+
+
+
+
+
+
+ parameter-declaration-list
+
+
+
+
+
+
+ ...
+
+
+
+
+
+
+
+
+ parameter-declaration-list
+
+
+ ,
+
+
+ ...
+
+
+
+
+
+
+
+ parameter-declaration-list
+
+
+
+ parameter-declaration
+
+
+
+
+ parameter-declaration-list
+
+
+ ,
+
+
+ parameter-declaration
+
+
+
+
+
+
+
+ parameter-declaration
+
+
+
+
+
+ decl-specifier-seq
+
+
+ declarator
+
+
+
+
+
+
+ decl-specifier-seq
+
+
+ declarator
+
+
+ =
+
+
+ assignment-expression
+
+
+
+
+
+
+ decl-specifier-seq
+
+
+
+
+ abstract-declarator
+
+
+
+
+
+
+
+
+ decl-specifier-seq
+
+
+
+
+ abstract-declarator
+
+
+
+
+ =
+
+
+ assignment-expression
+
+
+
+
+
+
+
+ function-definition
+
+
+
+
+
+
+
+ decl-specifier-seq
+
+
+
+
+ declarator
+
+
+
+
+ ctor-initializer
+
+
+
+
+ function-body
+
+
+
+
+
+
+
+
+ decl-specifier-seq
+
+
+
+
+ declarator
+
+
+ function-try-block
+
+
+
+
+
+
+
+ function-body
+
+ compound-statement
+
+
+
+ initializer
+
+
+
+
+
+ =
+
+
+ initializer-clause
+
+
+
+
+
+
+ (
+
+
+ expression-list
+
+
+ )
+
+
+
+
+
+
+
+ initializer-clause
+
+
+
+ assignment-expression
+
+
+
+
+ {
+
+
+ initializer-list
+
+
+
+
+ ,
+
+
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ }
+
+
+
+
+
+
+
+ initializer-list
+
+
+
+ initializer-clause
+
+
+
+
+ initializer-list
+
+
+ ,
+
+
+ initializer-clause
+
+
+
+
+
+
+
+ class-name
+
+
+
+ identifier
+
+
+ template-id
+
+
+
+
+
+ class-specifier
+
+
+
+ class-head
+
+
+ {
+
+
+
+
+ member-specification
+
+
+
+
+ }
+
+
+
+
+
+ class-head
+
+
+
+
+
+ class-key
+
+
+
+
+ identifier
+
+
+
+
+
+
+ base-clause
+
+
+
+
+
+
+
+
+ class-key
+
+
+ nested-name-specifier
+
+
+ identifier
+
+
+
+
+ base-clause
+
+
+
+
+
+
+
+
+ class-key
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ template-id
+
+
+
+
+ base-clause
+
+
+
+
+
+
+
+
+
+ class-key
+
+
+
+ class
+
+
+ struct
+
+
+ union
+
+
+
+
+
+ member-specification
+
+
+
+
+
+ member-declaration
+
+
+
+
+ member-specification
+
+
+
+
+
+
+
+
+ access-specifier
+
+
+ :
+
+
+
+
+ member-specification
+
+
+
+
+
+
+
+
+
+ member-declaration
+
+
+
+
+
+
+
+ decl-specifier-seq
+
+
+
+
+
+
+ member-declarator-list
+
+
+
+
+ ;
+
+
+
+
+
+
+ function-definition
+
+
+
+
+ ;
+
+
+
+
+
+
+
+
+
+
+ ::
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ template
+
+
+
+
+ unqualified-id
+
+
+ ;
+
+
+
+
+ using-declaration
+
+
+ template-declaration
+
+
+
+
+
+ member-declarator-list
+
+
+
+ member-declarator
+
+
+
+
+ member-declarator-list
+
+
+ ,
+
+
+ member-declarator
+
+
+
+
+
+
+
+ member-declarator
+
+
+
+
+
+ declarator
+
+
+
+
+ pure-specifier
+
+
+
+
+
+
+
+
+ declarator
+
+
+
+
+ constant-initializer
+
+
+
+
+
+
+
+
+
+
+ identifier
+
+
+
+
+ :
+
+
+ constant-expression
+
+
+
+
+
+
+
+ pure-specifier
+
+
+
+ =
+
+
+ 0
+
+
+
+
+
+ constant-initializer
+
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+ base-clause
+
+
+
+ :
+
+
+ base-specifier-list
+
+
+
+
+
+ base-specifier-list
+
+
+
+ base-specifier
+
+
+
+
+ base-specifier-list
+
+
+ ,
+
+
+ base-specifier
+
+
+
+
+
+
+
+ base-specifier
+
+
+
+
+
+
+
+ ::
+
+
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ class-name
+
+
+
+
+
+
+ virtual
+
+
+
+
+ access-specifier
+
+
+
+
+
+
+ ::
+
+
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ class-name
+
+
+
+
+
+
+ access-specifier
+
+
+
+
+ virtual
+
+
+
+
+
+
+ ::
+
+
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ class-name
+
+
+
+
+
+
+
+ access-specifier
+
+
+
+ private
+
+
+ protected
+
+
+ public
+
+
+
+
+
+ conversion-function-id
+
+
+
+ operator
+
+
+ conversion-type-id
+
+
+
+
+
+ conversion-type-id
+
+
+
+ type-specifier-seq
+
+
+
+
+ conversion-declarator
+
+
+
+
+
+
+
+ conversion-declarator
+
+
+
+ ptr-operator
+
+
+
+
+ conversion-declarator
+
+
+
+
+
+
+
+ ctor-initializer
+
+
+
+ :
+
+
+ mem-initializer-list
+
+
+
+
+
+ mem-initializer-list
+
+
+
+ mem-initializer
+
+
+
+
+ mem-initializer
+
+
+ ,
+
+
+ mem-initializer-list
+
+
+
+
+
+
+
+ mem-initializer
+
+
+
+ mem-initializer-id
+
+
+ (
+
+
+
+
+ expression-list
+
+
+
+
+ )
+
+
+
+
+
+ mem-initializer-id
+
+
+
+
+
+
+
+ ::
+
+
+
+
+
+
+ nested-name-specifier
+
+
+
+
+ class-name
+
+
+
+
+ identifier
+
+
+
+
+
+ operator-function-id
+
+
+
+ operator
+
+
+ operator
+
+
+
+
+
+ operator
+
+
+
+ new
+
+
+ delete
+
+
+
+
+ new
+
+
+ [
+
+
+ ]
+
+
+
+
+
+
+ delete
+
+
+ [
+
+
+ ]
+
+
+
+
+ +
+
+
+ -
+
+
+ *
+
+
+ /
+
+
+ %
+
+
+ ^
+
+
+ &
+
+
+ |
+
+
+ ~
+
+
+ !
+
+
+ =
+
+
+ <
+
+
+ >
+
+
+ +=
+
+
+ -=
+
+
+ *=
+
+
+ /=
+
+
+ %=
+
+
+ ^=
+
+
+ &=
+
+
+ |=
+
+
+ <<
+
+
+ >>
+
+
+ >>=
+
+
+ <<=
+
+
+ ==
+
+
+ !=
+
+
+ <=
+
+
+ >=
+
+
+ &&
+
+
+ ||
+
+
+ ++
+
+
+ --
+
+
+ ,
+
+
+ ->*
+
+
+ ->
+
+
+
+
+ (
+
+
+ )
+
+
+
+
+
+
+ [
+
+
+ ]
+
+
+
+
+
+
+
+ template-declaration
+
+
+
+
+
+ export
+
+
+
+
+ template
+
+
+ <
+
+
+ template-parameter-list
+
+
+ >
+
+
+ declaration
+
+
+
+
+
+ template-parameter-list
+
+
+
+ template-parameter
+
+
+
+
+ template-parameter-list
+
+
+ ,
+
+
+ template-parameter
+
+
+
+
+
+
+
+ template-parameter
+
+
+
+ type-parameter
+
+
+ parameter-declaration
+
+
+
+
+
+ type-parameter
+
+
+
+
+
+ class
+
+
+
+
+ identifier
+
+
+
+
+
+
+
+
+ class
+
+
+
+
+ identifier
+
+
+
+
+ =
+
+
+ type-id
+
+
+
+
+
+
+ typename
+
+
+
+
+ identifier
+
+
+
+
+
+
+
+
+ typename
+
+
+
+
+ identifier
+
+
+
+
+ =
+
+
+ type-id
+
+
+
+
+
+
+ template
+
+
+ <
+
+
+ template-parameter-list
+
+
+ >
+
+
+ class
+
+
+
+
+ identifier
+
+
+
+
+
+
+
+
+ template
+
+
+ <
+
+
+ template-parameter-list
+
+
+ >
+
+
+ class
+
+
+
+
+ identifier
+
+
+
+
+ =
+
+
+ id-expression
+
+
+
+
+
+
+
+ template-id
+
+
+
+ template-name
+
+
+ <
+
+
+
+
+ template-argument-list
+
+
+
+
+ >
+
+
+
+
+
+ template-name
+
+ identifier
+
+
+
+ template-argument-list
+
+
+
+ template-argument
+
+
+
+
+ template-argument-list
+
+
+ ,
+
+
+ template-argument
+
+
+
+
+
+
+
+ template-argument
+
+
+
+ assignment-expression
+
+
+ type-id
+
+
+ id-expression
+
+
+
+
+
+ explicit-instantiation
+
+
+
+ template
+
+
+ declaration
+
+
+
+
+
+ explicit-specialization
+
+
+
+ template
+
+
+ <
+
+
+ >
+
+
+ declaration
+
+
+
+
+
+ try-block
+
+
+
+ try
+
+
+ compound-statement
+
+
+ handler-seq
+
+
+
+
+
+ function-try-block
+
+
+
+ try
+
+
+
+
+ ctor-initializer
+
+
+
+
+ function-body
+
+
+ handler-seq
+
+
+
+
+
+ handler-seq
+
+
+
+ handler
+
+
+
+
+ handler-seq
+
+
+
+
+
+
+
+ handler
+
+
+
+ catch
+
+
+ (
+
+
+ exception-declaration
+
+
+ )
+
+
+ compound-statement
+
+
+
+
+
+ exception-declaration
+
+
+
+
+
+ type-specifier-seq
+
+
+ declarator
+
+
+
+
+
+
+ type-specifier-seq
+
+
+ abstract-declarator
+
+
+
+
+ type-specifier-seq
+
+
+ ...
+
+
+
+
+
+ throw-expression
+
+
+
+ throw
+
+
+
+
+ assignment-expression
+
+
+
+
+
+
+
+ exception-specification
+
+
+
+ throw
+
+
+ (
+
+
+
+
+ type-id-list
+
+
+
+
+ )
+
+
+
+
+
+ type-id-list
+
+
+
+ type-id
+
+
+
+
+ type-id-list
+
+
+ ,
+
+
+ type-id
+
+
+
+
+
+
+
+ keyword
+
+
+
+ new
+
+
+ delete
+
+
+ and
+
+
+ bitand
+
+
+ bitor
+
+
+ compl
+
+
+ not
+
+
+ or
+
+
+ xor
+
+
+ enum
+
+
+ try
+
+
+ namespace
+
+
+ template
+
+
+ case
+
+
+ default
+
+
+ using
+
+
+ throw
+
+
+ break
+
+
+ continue
+
+
+ return
+
+
+ goto
+
+
+ char
+
+
+ bool
+
+
+ short
+
+
+ int
+
+
+ long
+
+
+ signed
+
+
+ unsigned
+
+
+ float
+
+
+ double
+
+
+ void
+
+
+ extern
+
+
+ private
+
+
+ protected
+
+
+ public
+
+
+ export
+
+
+ typename
+
+
+ typeid
+
+
+ if
+
+
+ else
+
+
+ switch
+
+
+ virtual
+
+
+ sizeof
+
+
+ friend
+
+
+ typedef
+
+
+ catch
+
+
+ auto
+
+
+ register
+
+
+ static
+
+
+ mutable
+
+
+ asm
+
+
+ while
+
+
+ do
+
+
+ for
+
+
+ inline
+
+
+ explicit
+
+
+ const
+
+
+ volatile
+
+
+ class
+
+
+ struct
+
+
+ union
+
+
+ this
+
+
+ operator
+
+
+
+
+
diff --git a/topics/grammars/csharp/ecma-334-2005/Makefile b/topics/grammars/csharp/ecma-334-2005/Makefile
index be472388..6fc420f7 100644
--- a/topics/grammars/csharp/ecma-334-2005/Makefile
+++ b/topics/grammars/csharp/ecma-334-2005/Makefile
@@ -10,4 +10,4 @@ clean:
test:
make build
- ../../../../shared/tools/gdts ecma-334-grammar.bgf extracted-grammar.bgf
+ ../../../../shared/tools/gdt ecma-334-grammar.bgf extracted-grammar.bgf
diff --git a/topics/grammars/csharp/ecma-334-2005/extracted-grammar.bgf b/topics/grammars/csharp/ecma-334-2005/extracted-grammar.bgf
index a1898e40..bd47f5c7 100644
--- a/topics/grammars/csharp/ecma-334-2005/extracted-grammar.bgf
+++ b/topics/grammars/csharp/ecma-334-2005/extracted-grammar.bgf
@@ -1,7040 +1,7039 @@
-
-
-
- compilation-unit
-
-
-
-
-
- extern-alias-directives
-
-
-
-
-
-
- using-directives
-
-
-
-
-
-
- global-attributes
-
-
-
-
-
-
- namespace-member-declarations
-
-
-
-
-
-
-
- namespace-name
-
- namespace-or-type-name
-
-
-
- type-name
-
- namespace-or-type-name
-
-
-
- namespace-or-type-name
-
-
-
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
- qualified-alias-member
-
-
-
-
- namespace-or-type-name
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
-
- type
-
-
-
- value-type
-
-
- reference-type
-
-
- type-parameter
-
-
-
-
-
- value-type
-
-
-
- struct-type
-
-
- enum-type
-
-
-
-
-
- struct-type
-
-
-
- type-name
-
-
- simple-type
-
-
- nullable-type
-
-
-
-
-
- simple-type
-
-
-
- numeric-type
-
-
- bool
-
-
-
-
-
- numeric-type
-
-
-
- integral-type
-
-
- floating-point-type
-
-
- decimal
-
-
-
-
-
- integral-type
-
-
-
- sbyte
-
-
- byte
-
-
- short
-
-
- ushort
-
-
- int
-
-
- uint
-
-
- long
-
-
- ulong
-
-
- char
-
-
-
-
-
- floating-point-type
-
-
-
- float
-
-
- double
-
-
-
-
-
- enum-type
-
- type-name
-
-
-
- nullable-type
-
-
-
- non-nullable-value-type
-
-
- ?
-
-
-
-
-
- non-nullable-value-type
-
-
-
- enum-type
-
-
- type-name
-
-
- simple-type
-
-
-
-
-
- reference-type
-
-
-
- class-type
-
-
- interface-type
-
-
- array-type
-
-
- delegate-type
-
-
-
-
-
- class-type
-
-
-
- type-name
-
-
- object
-
-
- string
-
-
-
-
-
- interface-type
-
- type-name
-
-
-
- array-type
-
-
-
- non-array-type
-
-
- rank-specifiers
-
-
-
-
-
- non-array-type
-
-
-
- value-type
-
-
- class-type
-
-
- interface-type
-
-
- delegate-type
-
-
- type-parameter
-
-
-
-
-
- rank-specifiers
-
-
-
- rank-specifier
-
-
-
-
- rank-specifiers
-
-
- rank-specifier
-
-
-
-
-
-
-
- rank-specifier
-
-
-
- [
-
-
-
-
- dim-separators
-
-
-
-
- ]
-
-
-
-
-
- dim-separators
-
-
-
- ,
-
-
-
-
- dim-separators
-
-
- ,
-
-
-
-
-
-
-
- delegate-type
-
- type-name
-
-
-
- variable-reference
-
- expression
-
-
-
- argument-list
-
-
-
- argument
-
-
-
-
- argument-list
-
-
- ,
-
-
- argument
-
-
-
-
-
-
-
- argument
-
-
-
- expression
-
-
-
-
- ref
-
-
- variable-reference
-
-
-
-
-
-
- out
-
-
- variable-reference
-
-
-
-
-
-
-
- primary-expression
-
-
-
- array-creation-expression
-
-
- primary-no-array-creation-expression
-
-
-
-
-
- primary-no-array-creation-expression
-
-
-
- literal
-
-
- simple-name
-
-
- parenthesized-expression
-
-
- member-access
-
-
- invocation-expression
-
-
- element-access
-
-
- this-access
-
-
- base-access
-
-
- post-increment-expression
-
-
- post-decrement-expression
-
-
- object-creation-expression
-
-
- delegate-creation-expression
-
-
- typeof-expression
-
-
- checked-expression
-
-
- unchecked-expression
-
-
- default-value-expression
-
-
- anonymous-method-expression
-
-
-
-
-
- simple-name
-
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
- parenthesized-expression
-
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- member-access
-
-
-
-
-
- primary-expression
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
- predefined-type
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
- qualified-alias-member
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
-
- predefined-type
-
-
-
- bool
-
-
- byte
-
-
- char
-
-
- decimal
-
-
- double
-
-
- float
-
-
- int
-
-
- long
-
-
- object
-
-
- sbyte
-
-
- short
-
-
- string
-
-
- uint
-
-
- ulong
-
-
- ushort
-
-
-
-
-
- invocation-expression
-
-
-
- primary-expression
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
- element-access
-
-
-
- primary-no-array-creation-expression
-
-
- [
-
-
- expression-list
-
-
- ]
-
-
-
-
-
- expression-list
-
-
-
- expression
-
-
-
-
- expression-list
-
-
- ,
-
-
- expression
-
-
-
-
-
-
-
- this-access
-
- this
-
-
-
- base-access
-
-
-
-
-
- base
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
- base
-
-
- [
-
-
- expression-list
-
-
- ]
-
-
-
-
-
-
-
- post-increment-expression
-
-
-
- primary-expression
-
-
- ++
-
-
-
-
-
- post-decrement-expression
-
-
-
- primary-expression
-
-
- --
-
-
-
-
-
- object-creation-expression
-
-
-
- new
-
-
- type
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
- array-creation-expression
-
-
-
-
-
- new
-
-
- non-array-type
-
-
- [
-
-
- expression-list
-
-
- ]
-
-
-
-
- rank-specifiers
-
-
-
-
-
-
- array-initializer
-
-
-
-
-
-
-
-
- new
-
-
- array-type
-
-
- array-initializer
-
-
-
-
-
-
-
- delegate-creation-expression
-
-
-
- new
-
-
- delegate-type
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- typeof-expression
-
-
-
-
-
- typeof
-
-
- (
-
-
- type
-
-
- )
-
-
-
-
-
-
- typeof
-
-
- (
-
-
- unbound-type-name
-
-
- )
-
-
-
-
-
-
- typeof
-
-
- (
-
-
- void
-
-
- )
-
-
-
-
-
-
-
- unbound-type-name
-
-
-
-
-
- identifier
-
-
-
-
- generic-dimension-specifier
-
-
-
-
-
-
-
-
- identifier
-
-
- ::
-
-
- identifier
-
-
-
-
- generic-dimension-specifier
-
-
-
-
-
-
-
-
- unbound-type-name
-
-
- .
-
-
- identifier
-
-
-
-
- generic-dimension-specifier
-
-
-
-
-
-
-
-
-
- generic-dimension-specifier
-
-
-
- <
-
-
-
-
- commas
-
-
-
-
- >
-
-
-
-
-
- commas
-
-
-
- ,
-
-
-
-
- commas
-
-
- ,
-
-
-
-
-
-
-
- checked-expression
-
-
-
- checked
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- unchecked-expression
-
-
-
- unchecked
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- default-value-expression
-
-
-
- default
-
-
- (
-
-
- type
-
-
- )
-
-
-
-
-
- anonymous-method-expression
-
-
-
- delegate
-
-
-
-
- anonymous-method-signature
-
-
-
-
- block
-
-
-
-
-
- anonymous-method-signature
-
-
-
- (
-
-
-
-
- anonymous-method-parameter-list
-
-
-
-
- )
-
-
-
-
-
- anonymous-method-parameter-list
-
-
-
- anonymous-method-parameter
-
-
-
-
- anonymous-method-parameter-list
-
-
- ,
-
-
- anonymous-method-parameter
-
-
-
-
-
-
-
- anonymous-method-parameter
-
-
-
-
-
- parameter-modifier
-
-
-
-
- type
-
-
- identifier
-
-
-
-
-
- unary-expression
-
-
-
- primary-expression
-
-
-
-
- +
-
-
- unary-expression
-
-
-
-
-
-
- -
-
-
- unary-expression
-
-
-
-
-
-
- !
-
-
- unary-expression
-
-
-
-
-
-
- ~
-
-
- unary-expression
-
-
-
-
- pre-increment-expression
-
-
- pre-decrement-expression
-
-
- cast-expression
-
-
-
-
-
- pre-increment-expression
-
-
-
- ++
-
-
- unary-expression
-
-
-
-
-
- pre-decrement-expression
-
-
-
- --
-
-
- unary-expression
-
-
-
-
-
- cast-expression
-
-
-
- (
-
-
- type
-
-
- )
-
-
- unary-expression
-
-
-
-
-
- multiplicative-expression
-
-
-
- unary-expression
-
-
-
-
- multiplicative-expression
-
-
- *
-
-
- unary-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- /
-
-
- unary-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- %
-
-
- unary-expression
-
-
-
-
-
-
-
- additive-expression
-
-
-
- multiplicative-expression
-
-
-
-
- additive-expression
-
-
- +
-
-
- multiplicative-expression
-
-
-
-
-
-
- additive-expression
-
-
- -
-
-
- multiplicative-expression
-
-
-
-
-
-
-
- shift-expression
-
-
-
- additive-expression
-
-
-
-
- shift-expression
-
-
- <<
-
-
- additive-expression
-
-
-
-
-
-
- shift-expression
-
-
- right-shift
-
-
- additive-expression
-
-
-
-
-
-
-
- relational-expression
-
-
-
- shift-expression
-
-
-
-
- relational-expression
-
-
- <
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- <=
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >=
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- is
-
-
- type
-
-
-
-
-
-
- relational-expression
-
-
- as
-
-
- type
-
-
-
-
-
-
-
- equality-expression
-
-
-
- relational-expression
-
-
-
-
- equality-expression
-
-
- ==
-
-
- relational-expression
-
-
-
-
-
-
- equality-expression
-
-
- !=
-
-
- relational-expression
-
-
-
-
-
-
-
- and-expression
-
-
-
- equality-expression
-
-
-
-
- and-expression
-
-
- &
-
-
- equality-expression
-
-
-
-
-
-
-
- exclusive-or-expression
-
-
-
- and-expression
-
-
-
-
- exclusive-or-expression
-
-
- ^
-
-
- and-expression
-
-
-
-
-
-
-
- inclusive-or-expression
-
-
-
- exclusive-or-expression
-
-
-
-
- inclusive-or-expression
-
-
- |
-
-
- exclusive-or-expression
-
-
-
-
-
-
-
- conditional-and-expression
-
-
-
- inclusive-or-expression
-
-
-
-
- conditional-and-expression
-
-
- &&
-
-
- inclusive-or-expression
-
-
-
-
-
-
-
- conditional-or-expression
-
-
-
- conditional-and-expression
-
-
-
-
- conditional-or-expression
-
-
- ||
-
-
- conditional-and-expression
-
-
-
-
-
-
-
- null-coalescing-expression
-
-
-
- conditional-or-expression
-
-
-
-
- conditional-or-expression
-
-
- ??
-
-
- null-coalescing-expression
-
-
-
-
-
-
-
- conditional-expression
-
-
-
- null-coalescing-expression
-
-
-
-
- null-coalescing-expression
-
-
- ?
-
-
- expression
-
-
- :
-
-
- expression
-
-
-
-
-
-
-
- assignment
-
-
-
- unary-expression
-
-
- assignment-operator
-
-
- expression
-
-
-
-
-
- assignment-operator
-
-
-
- =
-
-
- +=
-
-
- -=
-
-
- *=
-
-
- /=
-
-
- %=
-
-
- &=
-
-
- |=
-
-
- ^=
-
-
- <<=
-
-
- right-shift-assignment
-
-
-
-
-
- expression
-
-
-
- conditional-expression
-
-
- assignment
-
-
-
-
-
- constant-expression
-
- expression
-
-
-
- boolean-expression
-
- expression
-
-
-
- statement
-
-
-
- labeled-statement
-
-
- declaration-statement
-
-
- embedded-statement
-
-
-
-
-
- embedded-statement
-
-
-
- block
-
-
- empty-statement
-
-
- expression-statement
-
-
- selection-statement
-
-
- iteration-statement
-
-
- jump-statement
-
-
- try-statement
-
-
- checked-statement
-
-
- unchecked-statement
-
-
- lock-statement
-
-
- using-statement
-
-
- yield-statement
-
-
-
-
-
- block
-
-
-
- {
-
-
-
-
- statement-list
-
-
-
-
- }
-
-
-
-
-
- statement-list
-
-
-
- statement
-
-
-
-
- statement-list
-
-
- statement
-
-
-
-
-
-
-
- empty-statement
-
- ;
-
-
-
- labeled-statement
-
-
-
- identifier
-
-
- :
-
-
- statement
-
-
-
-
-
- declaration-statement
-
-
-
-
-
- local-variable-declaration
-
-
- ;
-
-
-
-
-
-
- local-constant-declaration
-
-
- ;
-
-
-
-
-
-
-
- local-variable-declaration
-
-
-
- type
-
-
- local-variable-declarators
-
-
-
-
-
- local-variable-declarators
-
-
-
- local-variable-declarator
-
-
-
-
- local-variable-declarators
-
-
- ,
-
-
- local-variable-declarator
-
-
-
-
-
-
-
- local-variable-declarator
-
-
-
- identifier
-
-
-
-
- identifier
-
-
- =
-
-
- local-variable-initializer
-
-
-
-
-
-
-
- local-variable-initializer
-
-
-
- expression
-
-
- array-initializer
-
-
-
-
-
- local-constant-declaration
-
-
-
- const
-
-
- type
-
-
- constant-declarators
-
-
-
-
-
- constant-declarators
-
-
-
- constant-declarator
-
-
-
-
- constant-declarators
-
-
- ,
-
-
- constant-declarator
-
-
-
-
-
-
-
- constant-declarator
-
-
-
- identifier
-
-
- =
-
-
- constant-expression
-
-
-
-
-
- expression-statement
-
-
-
- statement-expression
-
-
- ;
-
-
-
-
-
- statement-expression
-
-
-
- invocation-expression
-
-
- object-creation-expression
-
-
- assignment
-
-
- post-increment-expression
-
-
- post-decrement-expression
-
-
- pre-increment-expression
-
-
- pre-decrement-expression
-
-
-
-
-
- selection-statement
-
-
-
- if-statement
-
-
- switch-statement
-
-
-
-
-
- if-statement
-
-
-
-
-
- if
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
-
- if
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
- else
-
-
- embedded-statement
-
-
-
-
-
-
-
- switch-statement
-
-
-
- switch
-
-
- (
-
-
- expression
-
-
- )
-
-
- switch-block
-
-
-
-
-
- switch-block
-
-
-
- {
-
-
-
-
- switch-sections
-
-
-
-
- }
-
-
-
-
-
- switch-sections
-
-
-
- switch-section
-
-
-
-
- switch-sections
-
-
- switch-section
-
-
-
-
-
-
-
- switch-section
-
-
-
- switch-labels
-
-
- statement-list
-
-
-
-
-
- switch-labels
-
-
-
- switch-label
-
-
-
-
- switch-labels
-
-
- switch-label
-
-
-
-
-
-
-
- switch-label
-
-
-
-
-
- case
-
-
- constant-expression
-
-
- :
-
-
-
-
-
-
- default
-
-
- :
-
-
-
-
-
-
-
- iteration-statement
-
-
-
- while-statement
-
-
- do-statement
-
-
- for-statement
-
-
- foreach-statement
-
-
-
-
-
- while-statement
-
-
-
- while
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- do-statement
-
-
-
- do
-
-
- embedded-statement
-
-
- while
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- ;
-
-
-
-
-
- for-statement
-
-
-
- for
-
-
- (
-
-
-
-
- for-initializer
-
-
-
-
- ;
-
-
-
-
- for-condition
-
-
-
-
- ;
-
-
-
-
- for-iterator
-
-
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- for-initializer
-
-
-
- local-variable-declaration
-
-
- statement-expression-list
-
-
-
-
-
- for-condition
-
- boolean-expression
-
-
-
- for-iterator
-
- statement-expression-list
-
-
-
- statement-expression-list
-
-
-
- statement-expression
-
-
-
-
- statement-expression-list
-
-
- ,
-
-
- statement-expression
-
-
-
-
-
-
-
- foreach-statement
-
-
-
- foreach
-
-
- (
-
-
- type
-
-
- identifier
-
-
- in
-
-
- expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- jump-statement
-
-
-
- break-statement
-
-
- continue-statement
-
-
- goto-statement
-
-
- return-statement
-
-
- throw-statement
-
-
-
-
-
- break-statement
-
-
-
- break
-
-
- ;
-
-
-
-
-
- continue-statement
-
-
-
- continue
-
-
- ;
-
-
-
-
-
- goto-statement
-
-
-
-
-
- goto
-
-
- identifier
-
-
- ;
-
-
-
-
-
-
- goto
-
-
- case
-
-
- constant-expression
-
-
- ;
-
-
-
-
-
-
- goto
-
-
- default
-
-
- ;
-
-
-
-
-
-
-
- return-statement
-
-
-
- return
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
- throw-statement
-
-
-
- throw
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
- try-statement
-
-
-
-
-
- try
-
-
- block
-
-
- catch-clauses
-
-
-
-
-
-
- try
-
-
- block
-
-
-
-
- catch-clauses
-
-
-
-
- finally-clause
-
-
-
-
-
-
-
- catch-clauses
-
-
-
- specific-catch-clauses
-
-
-
-
-
-
- specific-catch-clauses
-
-
-
-
- general-catch-clause
-
-
-
-
-
-
-
- specific-catch-clauses
-
-
-
- specific-catch-clause
-
-
-
-
- specific-catch-clauses
-
-
- specific-catch-clause
-
-
-
-
-
-
-
- specific-catch-clause
-
-
-
- catch
-
-
- (
-
-
- class-type
-
-
-
-
- identifier
-
-
-
-
- )
-
-
- block
-
-
-
-
-
- general-catch-clause
-
-
-
- catch
-
-
- block
-
-
-
-
-
- finally-clause
-
-
-
- finally
-
-
- block
-
-
-
-
-
- checked-statement
-
-
-
- checked
-
-
- block
-
-
-
-
-
- unchecked-statement
-
-
-
- unchecked
-
-
- block
-
-
-
-
-
- lock-statement
-
-
-
- lock
-
-
- (
-
-
- expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- using-statement
-
-
-
- using
-
-
- (
-
-
- resource-acquisition
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- resource-acquisition
-
-
-
- local-variable-declaration
-
-
- expression
-
-
-
-
-
- yield-statement
-
-
-
-
-
- yield
-
-
- return
-
-
- expression
-
-
- ;
-
-
-
-
-
-
- yield
-
-
- break
-
-
- ;
-
-
-
-
-
-
-
- namespace-declaration
-
-
-
- namespace
-
-
- qualified-identifier
-
-
- namespace-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- qualified-identifier
-
-
-
- identifier
-
-
-
-
- qualified-identifier
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- namespace-body
-
-
-
- {
-
-
-
-
- extern-alias-directives
-
-
-
-
-
-
- using-directives
-
-
-
-
-
-
- namespace-member-declarations
-
-
-
-
- }
-
-
-
-
-
- extern-alias-directives
-
-
-
- extern-alias-directive
-
-
-
-
- extern-alias-directives
-
-
- extern-alias-directive
-
-
-
-
-
-
-
- extern-alias-directive
-
-
-
- extern
-
-
- alias
-
-
- identifier
-
-
- ;
-
-
-
-
-
- using-directives
-
-
-
- using-directive
-
-
-
-
- using-directives
-
-
- using-directive
-
-
-
-
-
-
-
- using-directive
-
-
-
- using-alias-directive
-
-
- using-namespace-directive
-
-
-
-
-
- using-alias-directive
-
-
-
- using
-
-
- identifier
-
-
- =
-
-
- namespace-or-type-name
-
-
- ;
-
-
-
-
-
- using-namespace-directive
-
-
-
- using
-
-
- namespace-name
-
-
- ;
-
-
-
-
-
- namespace-member-declarations
-
-
-
- namespace-member-declaration
-
-
-
-
- namespace-member-declarations
-
-
- namespace-member-declaration
-
-
-
-
-
-
-
- namespace-member-declaration
-
-
-
- namespace-declaration
-
-
- type-declaration
-
-
-
-
-
- type-declaration
-
-
-
- class-declaration
-
-
- struct-declaration
-
-
- interface-declaration
-
-
- enum-declaration
-
-
- delegate-declaration
-
-
-
-
-
- qualified-alias-member
-
-
-
- identifier
-
-
- ::
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
- class-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- class-modifiers
-
-
-
-
-
-
- partial
-
-
-
-
- class
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
-
-
- class-base
-
-
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- class-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- class-modifiers
-
-
-
- class-modifier
-
-
-
-
- class-modifiers
-
-
- class-modifier
-
-
-
-
-
-
-
- class-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- abstract
-
-
- sealed
-
-
- static
-
-
-
-
-
- class-base
-
-
-
-
-
- :
-
-
- class-type
-
-
-
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
-
- :
-
-
- class-type
-
-
- ,
-
-
- interface-type-list
-
-
-
-
-
-
-
- interface-type-list
-
-
-
- interface-type
-
-
-
-
- interface-type-list
-
-
- ,
-
-
- interface-type
-
-
-
-
-
-
-
- class-body
-
-
-
- {
-
-
-
-
- class-member-declarations
-
-
-
-
- }
-
-
-
-
-
- class-member-declarations
-
-
-
- class-member-declaration
-
-
-
-
- class-member-declarations
-
-
- class-member-declaration
-
-
-
-
-
-
-
- class-member-declaration
-
-
-
- constant-declaration
-
-
- field-declaration
-
-
- method-declaration
-
-
- property-declaration
-
-
- event-declaration
-
-
- indexer-declaration
-
-
- operator-declaration
-
-
- constructor-declaration
-
-
- finalizer-declaration
-
-
- static-constructor-declaration
-
-
- type-declaration
-
-
-
-
-
- constant-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- constant-modifiers
-
-
-
-
- const
-
-
- type
-
-
- constant-declarators
-
-
- ;
-
-
-
-
-
- constant-modifiers
-
-
-
- constant-modifier
-
-
-
-
- constant-modifiers
-
-
- constant-modifier
-
-
-
-
-
-
-
- constant-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- field-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- field-modifiers
-
-
-
-
- type
-
-
- variable-declarators
-
-
- ;
-
-
-
-
-
- field-modifiers
-
-
-
- field-modifier
-
-
-
-
- field-modifiers
-
-
- field-modifier
-
-
-
-
-
-
-
- field-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- readonly
-
-
- volatile
-
-
-
-
-
- variable-declarators
-
-
-
- variable-declarator
-
-
-
-
- variable-declarators
-
-
- ,
-
-
- variable-declarator
-
-
-
-
-
-
-
- variable-declarator
-
-
-
- identifier
-
-
-
-
- identifier
-
-
- =
-
-
- variable-initializer
-
-
-
-
-
-
-
- variable-initializer
-
-
-
- expression
-
-
- array-initializer
-
-
-
-
-
- method-declaration
-
-
-
- method-header
-
-
- method-body
-
-
-
-
-
- method-header
-
-
-
-
-
- attributes
-
-
-
-
-
-
- method-modifiers
-
-
-
-
- return-type
-
-
- member-name
-
-
-
-
- type-parameter-list
-
-
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
-
-
-
- method-modifiers
-
-
-
- method-modifier
-
-
-
-
- method-modifiers
-
-
- method-modifier
-
-
-
-
-
-
-
- method-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- return-type
-
-
-
- type
-
-
- void
-
-
-
-
-
- member-name
-
-
-
- identifier
-
-
-
-
- interface-type
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- method-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- formal-parameter-list
-
-
-
- fixed-parameters
-
-
-
-
- fixed-parameters
-
-
- ,
-
-
- parameter-array
-
-
-
-
- parameter-array
-
-
-
-
-
- fixed-parameters
-
-
-
- fixed-parameter
-
-
-
-
- fixed-parameters
-
-
- ,
-
-
- fixed-parameter
-
-
-
-
-
-
-
- fixed-parameter
-
-
-
-
-
- attributes
-
-
-
-
-
-
- parameter-modifier
-
-
-
-
- type
-
-
- identifier
-
-
-
-
-
- parameter-modifier
-
-
-
- ref
-
-
- out
-
-
-
-
-
- parameter-array
-
-
-
-
-
- attributes
-
-
-
-
- params
-
-
- array-type
-
-
- identifier
-
-
-
-
-
- property-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- property-modifiers
-
-
-
-
- type
-
-
- member-name
-
-
- {
-
-
- accessor-declarations
-
-
- }
-
-
-
-
-
- property-modifiers
-
-
-
- property-modifier
-
-
-
-
- property-modifiers
-
-
- property-modifier
-
-
-
-
-
-
-
- property-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- accessor-declarations
-
-
-
-
-
- get-accessor-declaration
-
-
-
-
- set-accessor-declaration
-
-
-
-
-
-
-
-
- set-accessor-declaration
-
-
-
-
- get-accessor-declaration
-
-
-
-
-
-
-
-
-
- get-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- accessor-modifier
-
-
-
-
- get
-
-
- accessor-body
-
-
-
-
-
- set-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- accessor-modifier
-
-
-
-
- set
-
-
- accessor-body
-
-
-
-
-
- accessor-modifier
-
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
- protected
-
-
- internal
-
-
-
-
-
-
- internal
-
-
- protected
-
-
-
-
-
-
-
- accessor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- event-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- event-modifiers
-
-
-
-
- event
-
-
- type
-
-
- variable-declarators
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- event-modifiers
-
-
-
-
- event
-
-
- type
-
-
- member-name
-
-
- {
-
-
- event-accessor-declarations
-
-
- }
-
-
-
-
-
-
-
- event-modifiers
-
-
-
- event-modifier
-
-
-
-
- event-modifiers
-
-
- event-modifier
-
-
-
-
-
-
-
- event-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- event-accessor-declarations
-
-
-
-
-
- add-accessor-declaration
-
-
- remove-accessor-declaration
-
-
-
-
-
-
- remove-accessor-declaration
-
-
- add-accessor-declaration
-
-
-
-
-
-
-
- add-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- add
-
-
- block
-
-
-
-
-
- remove-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- remove
-
-
- block
-
-
-
-
-
- indexer-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- indexer-modifiers
-
-
-
-
- indexer-declarator
-
-
- {
-
-
- accessor-declarations
-
-
- }
-
-
-
-
-
- indexer-modifiers
-
-
-
- indexer-modifier
-
-
-
-
- indexer-modifiers
-
-
- indexer-modifier
-
-
-
-
-
-
-
- indexer-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- indexer-declarator
-
-
-
-
-
- type
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
-
-
-
-
- type
-
-
- interface-type
-
-
- .
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
-
-
-
-
-
- operator-declaration
-
-
-
-
-
- attributes
-
-
-
-
- operator-modifiers
-
-
- operator-declarator
-
-
- operator-body
-
-
-
-
-
- operator-modifiers
-
-
-
- operator-modifier
-
-
-
-
- operator-modifiers
-
-
- operator-modifier
-
-
-
-
-
-
-
- operator-modifier
-
-
-
- public
-
-
- static
-
-
- extern
-
-
-
-
-
- operator-declarator
-
-
-
- unary-operator-declarator
-
-
- binary-operator-declarator
-
-
- conversion-operator-declarator
-
-
-
-
-
- unary-operator-declarator
-
-
-
- type
-
-
- operator
-
-
- overloadable-unary-operator
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
- overloadable-unary-operator
-
-
-
- +
-
-
- -
-
-
- !
-
-
- ~
-
-
- ++
-
-
- --
-
-
- true
-
-
- false
-
-
-
-
-
- binary-operator-declarator
-
-
-
- type
-
-
- operator
-
-
- overloadable-binary-operator
-
-
- (
-
-
- type
-
-
- identifier
-
-
- ,
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
- overloadable-binary-operator
-
-
-
- +
-
-
- -
-
-
- *
-
-
- /
-
-
- %
-
-
- &
-
-
- |
-
-
- ^
-
-
- <<
-
-
- right-shift
-
-
- ==
-
-
- !=
-
-
- >
-
-
- <
-
-
- >=
-
-
- <=
-
-
-
-
-
- conversion-operator-declarator
-
-
-
-
-
- implicit
-
-
- operator
-
-
- type
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
-
- explicit
-
-
- operator
-
-
- type
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
-
-
- operator-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- constructor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- constructor-modifiers
-
-
-
-
- constructor-declarator
-
-
- constructor-body
-
-
-
-
-
- constructor-modifiers
-
-
-
- constructor-modifier
-
-
-
-
- constructor-modifiers
-
-
- constructor-modifier
-
-
-
-
-
-
-
- constructor-modifier
-
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- extern
-
-
-
-
-
- constructor-declarator
-
-
-
- identifier
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- constructor-initializer
-
-
-
-
-
-
-
- constructor-initializer
-
-
-
-
-
- :
-
-
- base
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
-
- :
-
-
- this
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
-
-
- constructor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- static-constructor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- static-constructor-modifiers
-
-
- identifier
-
-
- (
-
-
- )
-
-
- static-constructor-body
-
-
-
-
-
- static-constructor-modifiers
-
-
-
-
-
-
-
- extern
-
-
-
-
- static
-
-
-
-
-
-
- static
-
-
-
-
- extern
-
-
-
-
-
-
-
-
-
- static-constructor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- finalizer-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- extern
-
-
-
-
- ~
-
-
- identifier
-
-
- (
-
-
- )
-
-
- finalizer-body
-
-
-
-
-
- finalizer-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- struct-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- struct-modifiers
-
-
-
-
-
-
- partial
-
-
-
-
- struct
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
-
-
- struct-interfaces
-
-
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- struct-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- struct-modifiers
-
-
-
- struct-modifier
-
-
-
-
- struct-modifiers
-
-
- struct-modifier
-
-
-
-
-
-
-
- struct-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- struct-interfaces
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
- struct-body
-
-
-
- {
-
-
-
-
- struct-member-declarations
-
-
-
-
- }
-
-
-
-
-
- struct-member-declarations
-
-
-
- struct-member-declaration
-
-
-
-
- struct-member-declarations
-
-
- struct-member-declaration
-
-
-
-
-
-
-
- struct-member-declaration
-
-
-
- constant-declaration
-
-
- field-declaration
-
-
- method-declaration
-
-
- property-declaration
-
-
- event-declaration
-
-
- indexer-declaration
-
-
- operator-declaration
-
-
- constructor-declaration
-
-
- static-constructor-declaration
-
-
- type-declaration
-
-
-
-
-
- array-initializer
-
-
-
-
-
- {
-
-
-
-
- variable-initializer-list
-
-
-
-
- }
-
-
-
-
-
-
- {
-
-
- variable-initializer-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- variable-initializer-list
-
-
-
- variable-initializer
-
-
-
-
- variable-initializer-list
-
-
- ,
-
-
- variable-initializer
-
-
-
-
-
-
-
- interface-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- interface-modifiers
-
-
-
-
-
-
- partial
-
-
-
-
- interface
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
-
-
- interface-base
-
-
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- interface-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- interface-modifiers
-
-
-
- interface-modifier
-
-
-
-
- interface-modifiers
-
-
- interface-modifier
-
-
-
-
-
-
-
- interface-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- interface-base
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
- interface-body
-
-
-
- {
-
-
-
-
- interface-member-declarations
-
-
-
-
- }
-
-
-
-
-
- interface-member-declarations
-
-
-
- interface-member-declaration
-
-
-
-
- interface-member-declarations
-
-
- interface-member-declaration
-
-
-
-
-
-
-
- interface-member-declaration
-
-
-
- interface-method-declaration
-
-
- interface-property-declaration
-
-
- interface-event-declaration
-
-
- interface-indexer-declaration
-
-
-
-
-
- interface-method-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- return-type
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- ;
-
-
-
-
-
- interface-property-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- type
-
-
- identifier
-
-
- {
-
-
- interface-accessors
-
-
- }
-
-
-
-
-
- interface-accessors
-
-
-
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
-
-
-
- interface-event-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- event
-
-
- type
-
-
- identifier
-
-
- ;
-
-
-
-
-
- interface-indexer-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- type
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
- {
-
-
- interface-accessors
-
-
- }
-
-
-
-
-
- enum-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- enum-modifiers
-
-
-
-
- enum
-
-
- identifier
-
-
-
-
- enum-base
-
-
-
-
- enum-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- enum-base
-
-
-
- :
-
-
- integral-type
-
-
-
-
-
- enum-body
-
-
-
-
-
- {
-
-
-
-
- enum-member-declarations
-
-
-
-
- }
-
-
-
-
-
-
- {
-
-
- enum-member-declarations
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- enum-modifiers
-
-
-
- enum-modifier
-
-
-
-
- enum-modifiers
-
-
- enum-modifier
-
-
-
-
-
-
-
- enum-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- enum-member-declarations
-
-
-
- enum-member-declaration
-
-
-
-
- enum-member-declarations
-
-
- ,
-
-
- enum-member-declaration
-
-
-
-
-
-
-
- enum-member-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
- identifier
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- identifier
-
-
- =
-
-
- constant-expression
-
-
-
-
-
-
-
- delegate-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- delegate-modifiers
-
-
-
-
- delegate
-
-
- return-type
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- ;
-
-
-
-
-
- delegate-modifiers
-
-
-
- delegate-modifier
-
-
-
-
- delegate-modifiers
-
-
- delegate-modifier
-
-
-
-
-
-
-
- delegate-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- global-attributes
-
- global-attribute-sections
-
-
-
- global-attribute-sections
-
-
-
- global-attribute-section
-
-
-
-
- global-attribute-sections
-
-
- global-attribute-section
-
-
-
-
-
-
-
- global-attribute-section
-
-
-
-
-
- [
-
-
- global-attribute-target-specifier
-
-
- attribute-list
-
-
- ]
-
-
-
-
-
-
- [
-
-
- global-attribute-target-specifier
-
-
- attribute-list
-
-
- ,
-
-
- ]
-
-
-
-
-
-
-
- global-attribute-target-specifier
-
-
-
- global-attribute-target
-
-
- :
-
-
-
-
-
- global-attribute-target
-
-
-
- identifier
-
-
- keyword
-
-
-
-
-
- attributes
-
- attribute-sections
-
-
-
- attribute-sections
-
-
-
- attribute-section
-
-
-
-
- attribute-sections
-
-
- attribute-section
-
-
-
-
-
-
-
- attribute-section
-
-
-
-
-
- [
-
-
-
-
- attribute-target-specifier
-
-
-
-
- attribute-list
-
-
- ]
-
-
-
-
-
-
- [
-
-
-
-
- attribute-target-specifier
-
-
-
-
- attribute-list
-
-
- ,
-
-
- ]
-
-
-
-
-
-
-
- attribute-target-specifier
-
-
-
- attribute-target
-
-
- :
-
-
-
-
-
- attribute-target
-
-
-
- identifier
-
-
- keyword
-
-
-
-
-
- attribute-list
-
-
-
- attribute
-
-
-
-
- attribute-list
-
-
- ,
-
-
- attribute
-
-
-
-
-
-
-
- attribute
-
-
-
- attribute-name
-
-
-
-
- attribute-arguments
-
-
-
-
-
-
-
- attribute-name
-
- type-name
-
-
-
- attribute-arguments
-
-
-
-
-
- (
-
-
-
-
- positional-argument-list
-
-
-
-
- )
-
-
-
-
-
-
- (
-
-
- positional-argument-list
-
-
- ,
-
-
- named-argument-list
-
-
- )
-
-
-
-
-
-
- (
-
-
- named-argument-list
-
-
- )
-
-
-
-
-
-
-
- positional-argument-list
-
-
-
- positional-argument
-
-
-
-
- positional-argument-list
-
-
- ,
-
-
- positional-argument
-
-
-
-
-
-
-
- positional-argument
-
- attribute-argument-expression
-
-
-
- named-argument-list
-
-
-
- named-argument
-
-
-
-
- named-argument-list
-
-
- ,
-
-
- named-argument
-
-
-
-
-
-
-
- named-argument
-
-
-
- identifier
-
-
- =
-
-
- attribute-argument-expression
-
-
-
-
-
- attribute-argument-expression
-
- expression
-
-
-
- type-parameter-list
-
-
-
- <
-
-
- type-parameters
-
-
- >
-
-
-
-
-
- type-parameters
-
-
-
-
-
-
-
- attributes
-
-
-
-
- type-parameter
-
-
-
-
-
-
- type-parameters
-
-
- ,
-
-
-
-
- attributes
-
-
-
-
- type-parameter
-
-
-
-
-
-
-
- type-parameter
-
- identifier
-
-
-
- type-argument-list
-
-
-
- <
-
-
- type-arguments
-
-
- >
-
-
-
-
-
- type-arguments
-
-
-
- type-argument
-
-
-
-
- type-arguments
-
-
- ,
-
-
- type-argument
-
-
-
-
-
-
-
- type-argument
-
- type
-
-
-
- type-parameter-constraints-clauses
-
-
-
- type-parameter-constraints-clause
-
-
-
-
- type-parameter-constraints-clauses
-
-
- type-parameter-constraints-clause
-
-
-
-
-
-
-
- type-parameter-constraints-clause
-
-
-
- where
-
-
- type-parameter
-
-
- :
-
-
- type-parameter-constraints
-
-
-
-
-
- type-parameter-constraints
-
-
-
- primary-constraint
-
-
- secondary-constraints
-
-
- constructor-constraint
-
-
-
-
- primary-constraint
-
-
- ,
-
-
- secondary-constraints
-
-
-
-
-
-
- primary-constraint
-
-
- ,
-
-
- constructor-constraint
-
-
-
-
-
-
- secondary-constraints
-
-
- ,
-
-
- constructor-constraint
-
-
-
-
-
-
- primary-constraint
-
-
- ,
-
-
- secondary-constraints
-
-
- ,
-
-
- constructor-constraint
-
-
-
-
-
-
-
- primary-constraint
-
-
-
- class-type
-
-
- class
-
-
- struct
-
-
-
-
-
- secondary-constraints
-
-
-
- interface-type
-
-
- type-parameter
-
-
-
-
- secondary-constraints
-
-
- ,
-
-
- interface-type
-
-
-
-
-
-
- secondary-constraints
-
-
- ,
-
-
- type-parameter
-
-
-
-
-
-
-
- constructor-constraint
-
-
-
- new
-
-
- (
-
-
- )
-
-
-
-
-
- keyword
-
-
-
- abstract
-
-
- as
-
-
- base
-
-
- bool
-
-
- break
-
-
- byte
-
-
- case
-
-
- catch
-
-
- char
-
-
- checked
-
-
- class
-
-
- const
-
-
- continue
-
-
- decimal
-
-
- default
-
-
- delegate
-
-
- do
-
-
- double
-
-
- else
-
-
- enum
-
-
- event
-
-
- explicit
-
-
- extern
-
-
- false
-
-
- finally
-
-
- fixed
-
-
- float
-
-
- for
-
-
- foreach
-
-
- goto
-
-
- if
-
-
- implicit
-
-
- in
-
-
- int
-
-
- interface
-
-
- internal
-
-
- is
-
-
- lock
-
-
- long
-
-
- namespace
-
-
- new
-
-
- null
-
-
- object
-
-
- operator
-
-
- out
-
-
- override
-
-
- params
-
-
- private
-
-
- protected
-
-
- public
-
-
- readonly
-
-
- ref
-
-
- return
-
-
- sbyte
-
-
- sealed
-
-
- short
-
-
- sizeof
-
-
- stackalloc
-
-
- static
-
-
- string
-
-
- struct
-
-
- switch
-
-
- this
-
-
- throw
-
-
- true
-
-
- try
-
-
- typeof
-
-
- uint
-
-
- ulong
-
-
- unchecked
-
-
- unsafe
-
-
- ushort
-
-
- using
-
-
- virtual
-
-
- void
-
-
- volatile
-
-
- while
-
-
- get
-
-
- set
-
-
- yield
-
-
- add
-
-
- remove
-
-
- alias
-
-
- partial
-
-
- where
-
-
-
-
-
\ No newline at end of file
+
+
+ compilation-unit
+
+
+
+
+
+ extern-alias-directives
+
+
+
+
+
+
+ using-directives
+
+
+
+
+
+
+ global-attributes
+
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+
+
+
+
+ namespace-name
+
+ namespace-or-type-name
+
+
+
+ type-name
+
+ namespace-or-type-name
+
+
+
+ namespace-or-type-name
+
+
+
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+ qualified-alias-member
+
+
+
+
+ namespace-or-type-name
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+
+ type
+
+
+
+ value-type
+
+
+ reference-type
+
+
+ type-parameter
+
+
+
+
+
+ value-type
+
+
+
+ struct-type
+
+
+ enum-type
+
+
+
+
+
+ struct-type
+
+
+
+ type-name
+
+
+ simple-type
+
+
+ nullable-type
+
+
+
+
+
+ simple-type
+
+
+
+ numeric-type
+
+
+ bool
+
+
+
+
+
+ numeric-type
+
+
+
+ integral-type
+
+
+ floating-point-type
+
+
+ decimal
+
+
+
+
+
+ integral-type
+
+
+
+ sbyte
+
+
+ byte
+
+
+ short
+
+
+ ushort
+
+
+ int
+
+
+ uint
+
+
+ long
+
+
+ ulong
+
+
+ char
+
+
+
+
+
+ floating-point-type
+
+
+
+ float
+
+
+ double
+
+
+
+
+
+ enum-type
+
+ type-name
+
+
+
+ nullable-type
+
+
+
+ non-nullable-value-type
+
+
+ ?
+
+
+
+
+
+ non-nullable-value-type
+
+
+
+ enum-type
+
+
+ type-name
+
+
+ simple-type
+
+
+
+
+
+ reference-type
+
+
+
+ class-type
+
+
+ interface-type
+
+
+ array-type
+
+
+ delegate-type
+
+
+
+
+
+ class-type
+
+
+
+ type-name
+
+
+ object
+
+
+ string
+
+
+
+
+
+ interface-type
+
+ type-name
+
+
+
+ array-type
+
+
+
+ non-array-type
+
+
+ rank-specifiers
+
+
+
+
+
+ non-array-type
+
+
+
+ value-type
+
+
+ class-type
+
+
+ interface-type
+
+
+ delegate-type
+
+
+ type-parameter
+
+
+
+
+
+ rank-specifiers
+
+
+
+ rank-specifier
+
+
+
+
+ rank-specifiers
+
+
+ rank-specifier
+
+
+
+
+
+
+
+ rank-specifier
+
+
+
+ [
+
+
+
+
+ dim-separators
+
+
+
+
+ ]
+
+
+
+
+
+ dim-separators
+
+
+
+ ,
+
+
+
+
+ dim-separators
+
+
+ ,
+
+
+
+
+
+
+
+ delegate-type
+
+ type-name
+
+
+
+ variable-reference
+
+ expression
+
+
+
+ argument-list
+
+
+
+ argument
+
+
+
+
+ argument-list
+
+
+ ,
+
+
+ argument
+
+
+
+
+
+
+
+ argument
+
+
+
+ expression
+
+
+
+
+ ref
+
+
+ variable-reference
+
+
+
+
+
+
+ out
+
+
+ variable-reference
+
+
+
+
+
+
+
+ primary-expression
+
+
+
+ array-creation-expression
+
+
+ primary-no-array-creation-expression
+
+
+
+
+
+ primary-no-array-creation-expression
+
+
+
+ literal
+
+
+ simple-name
+
+
+ parenthesized-expression
+
+
+ member-access
+
+
+ invocation-expression
+
+
+ element-access
+
+
+ this-access
+
+
+ base-access
+
+
+ post-increment-expression
+
+
+ post-decrement-expression
+
+
+ object-creation-expression
+
+
+ delegate-creation-expression
+
+
+ typeof-expression
+
+
+ checked-expression
+
+
+ unchecked-expression
+
+
+ default-value-expression
+
+
+ anonymous-method-expression
+
+
+
+
+
+ simple-name
+
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+ parenthesized-expression
+
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ member-access
+
+
+
+
+
+ primary-expression
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+ predefined-type
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+ qualified-alias-member
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+
+ predefined-type
+
+
+
+ bool
+
+
+ byte
+
+
+ char
+
+
+ decimal
+
+
+ double
+
+
+ float
+
+
+ int
+
+
+ long
+
+
+ object
+
+
+ sbyte
+
+
+ short
+
+
+ string
+
+
+ uint
+
+
+ ulong
+
+
+ ushort
+
+
+
+
+
+ invocation-expression
+
+
+
+ primary-expression
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+ element-access
+
+
+
+ primary-no-array-creation-expression
+
+
+ [
+
+
+ expression-list
+
+
+ ]
+
+
+
+
+
+ expression-list
+
+
+
+ expression
+
+
+
+
+ expression-list
+
+
+ ,
+
+
+ expression
+
+
+
+
+
+
+
+ this-access
+
+ this
+
+
+
+ base-access
+
+
+
+
+
+ base
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+ base
+
+
+ [
+
+
+ expression-list
+
+
+ ]
+
+
+
+
+
+
+
+ post-increment-expression
+
+
+
+ primary-expression
+
+
+ ++
+
+
+
+
+
+ post-decrement-expression
+
+
+
+ primary-expression
+
+
+ --
+
+
+
+
+
+ object-creation-expression
+
+
+
+ new
+
+
+ type
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+ array-creation-expression
+
+
+
+
+
+ new
+
+
+ non-array-type
+
+
+ [
+
+
+ expression-list
+
+
+ ]
+
+
+
+
+ rank-specifiers
+
+
+
+
+
+
+ array-initializer
+
+
+
+
+
+
+
+
+ new
+
+
+ array-type
+
+
+ array-initializer
+
+
+
+
+
+
+
+ delegate-creation-expression
+
+
+
+ new
+
+
+ delegate-type
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ typeof-expression
+
+
+
+
+
+ typeof
+
+
+ (
+
+
+ type
+
+
+ )
+
+
+
+
+
+
+ typeof
+
+
+ (
+
+
+ unbound-type-name
+
+
+ )
+
+
+
+
+
+
+ typeof
+
+
+ (
+
+
+ void
+
+
+ )
+
+
+
+
+
+
+
+ unbound-type-name
+
+
+
+
+
+ identifier
+
+
+
+
+ generic-dimension-specifier
+
+
+
+
+
+
+
+
+ identifier
+
+
+ ::
+
+
+ identifier
+
+
+
+
+ generic-dimension-specifier
+
+
+
+
+
+
+
+
+ unbound-type-name
+
+
+ .
+
+
+ identifier
+
+
+
+
+ generic-dimension-specifier
+
+
+
+
+
+
+
+
+
+ generic-dimension-specifier
+
+
+
+ <
+
+
+
+
+ commas
+
+
+
+
+ >
+
+
+
+
+
+ commas
+
+
+
+ ,
+
+
+
+
+ commas
+
+
+ ,
+
+
+
+
+
+
+
+ checked-expression
+
+
+
+ checked
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ unchecked-expression
+
+
+
+ unchecked
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ default-value-expression
+
+
+
+ default
+
+
+ (
+
+
+ type
+
+
+ )
+
+
+
+
+
+ anonymous-method-expression
+
+
+
+ delegate
+
+
+
+
+ anonymous-method-signature
+
+
+
+
+ block
+
+
+
+
+
+ anonymous-method-signature
+
+
+
+ (
+
+
+
+
+ anonymous-method-parameter-list
+
+
+
+
+ )
+
+
+
+
+
+ anonymous-method-parameter-list
+
+
+
+ anonymous-method-parameter
+
+
+
+
+ anonymous-method-parameter-list
+
+
+ ,
+
+
+ anonymous-method-parameter
+
+
+
+
+
+
+
+ anonymous-method-parameter
+
+
+
+
+
+ parameter-modifier
+
+
+
+
+ type
+
+
+ identifier
+
+
+
+
+
+ unary-expression
+
+
+
+ primary-expression
+
+
+
+
+ +
+
+
+ unary-expression
+
+
+
+
+
+
+ -
+
+
+ unary-expression
+
+
+
+
+
+
+ !
+
+
+ unary-expression
+
+
+
+
+
+
+ ~
+
+
+ unary-expression
+
+
+
+
+ pre-increment-expression
+
+
+ pre-decrement-expression
+
+
+ cast-expression
+
+
+
+
+
+ pre-increment-expression
+
+
+
+ ++
+
+
+ unary-expression
+
+
+
+
+
+ pre-decrement-expression
+
+
+
+ --
+
+
+ unary-expression
+
+
+
+
+
+ cast-expression
+
+
+
+ (
+
+
+ type
+
+
+ )
+
+
+ unary-expression
+
+
+
+
+
+ multiplicative-expression
+
+
+
+ unary-expression
+
+
+
+
+ multiplicative-expression
+
+
+ *
+
+
+ unary-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ /
+
+
+ unary-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ %
+
+
+ unary-expression
+
+
+
+
+
+
+
+ additive-expression
+
+
+
+ multiplicative-expression
+
+
+
+
+ additive-expression
+
+
+ +
+
+
+ multiplicative-expression
+
+
+
+
+
+
+ additive-expression
+
+
+ -
+
+
+ multiplicative-expression
+
+
+
+
+
+
+
+ shift-expression
+
+
+
+ additive-expression
+
+
+
+
+ shift-expression
+
+
+ <<
+
+
+ additive-expression
+
+
+
+
+
+
+ shift-expression
+
+
+ right-shift
+
+
+ additive-expression
+
+
+
+
+
+
+
+ relational-expression
+
+
+
+ shift-expression
+
+
+
+
+ relational-expression
+
+
+ <
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ <=
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >=
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ is
+
+
+ type
+
+
+
+
+
+
+ relational-expression
+
+
+ as
+
+
+ type
+
+
+
+
+
+
+
+ equality-expression
+
+
+
+ relational-expression
+
+
+
+
+ equality-expression
+
+
+ ==
+
+
+ relational-expression
+
+
+
+
+
+
+ equality-expression
+
+
+ !=
+
+
+ relational-expression
+
+
+
+
+
+
+
+ and-expression
+
+
+
+ equality-expression
+
+
+
+
+ and-expression
+
+
+ &
+
+
+ equality-expression
+
+
+
+
+
+
+
+ exclusive-or-expression
+
+
+
+ and-expression
+
+
+
+
+ exclusive-or-expression
+
+
+ ^
+
+
+ and-expression
+
+
+
+
+
+
+
+ inclusive-or-expression
+
+
+
+ exclusive-or-expression
+
+
+
+
+ inclusive-or-expression
+
+
+ |
+
+
+ exclusive-or-expression
+
+
+
+
+
+
+
+ conditional-and-expression
+
+
+
+ inclusive-or-expression
+
+
+
+
+ conditional-and-expression
+
+
+ &&
+
+
+ inclusive-or-expression
+
+
+
+
+
+
+
+ conditional-or-expression
+
+
+
+ conditional-and-expression
+
+
+
+
+ conditional-or-expression
+
+
+ ||
+
+
+ conditional-and-expression
+
+
+
+
+
+
+
+ null-coalescing-expression
+
+
+
+ conditional-or-expression
+
+
+
+
+ conditional-or-expression
+
+
+ ??
+
+
+ null-coalescing-expression
+
+
+
+
+
+
+
+ conditional-expression
+
+
+
+ null-coalescing-expression
+
+
+
+
+ null-coalescing-expression
+
+
+ ?
+
+
+ expression
+
+
+ :
+
+
+ expression
+
+
+
+
+
+
+
+ assignment
+
+
+
+ unary-expression
+
+
+ assignment-operator
+
+
+ expression
+
+
+
+
+
+ assignment-operator
+
+
+
+ =
+
+
+ +=
+
+
+ -=
+
+
+ *=
+
+
+ /=
+
+
+ %=
+
+
+ &=
+
+
+ |=
+
+
+ ^=
+
+
+ <<=
+
+
+ right-shift-assignment
+
+
+
+
+
+ expression
+
+
+
+ conditional-expression
+
+
+ assignment
+
+
+
+
+
+ constant-expression
+
+ expression
+
+
+
+ boolean-expression
+
+ expression
+
+
+
+ statement
+
+
+
+ labeled-statement
+
+
+ declaration-statement
+
+
+ embedded-statement
+
+
+
+
+
+ embedded-statement
+
+
+
+ block
+
+
+ empty-statement
+
+
+ expression-statement
+
+
+ selection-statement
+
+
+ iteration-statement
+
+
+ jump-statement
+
+
+ try-statement
+
+
+ checked-statement
+
+
+ unchecked-statement
+
+
+ lock-statement
+
+
+ using-statement
+
+
+ yield-statement
+
+
+
+
+
+ block
+
+
+
+ {
+
+
+
+
+ statement-list
+
+
+
+
+ }
+
+
+
+
+
+ statement-list
+
+
+
+ statement
+
+
+
+
+ statement-list
+
+
+ statement
+
+
+
+
+
+
+
+ empty-statement
+
+ ;
+
+
+
+ labeled-statement
+
+
+
+ identifier
+
+
+ :
+
+
+ statement
+
+
+
+
+
+ declaration-statement
+
+
+
+
+
+ local-variable-declaration
+
+
+ ;
+
+
+
+
+
+
+ local-constant-declaration
+
+
+ ;
+
+
+
+
+
+
+
+ local-variable-declaration
+
+
+
+ type
+
+
+ local-variable-declarators
+
+
+
+
+
+ local-variable-declarators
+
+
+
+ local-variable-declarator
+
+
+
+
+ local-variable-declarators
+
+
+ ,
+
+
+ local-variable-declarator
+
+
+
+
+
+
+
+ local-variable-declarator
+
+
+
+ identifier
+
+
+
+
+ identifier
+
+
+ =
+
+
+ local-variable-initializer
+
+
+
+
+
+
+
+ local-variable-initializer
+
+
+
+ expression
+
+
+ array-initializer
+
+
+
+
+
+ local-constant-declaration
+
+
+
+ const
+
+
+ type
+
+
+ constant-declarators
+
+
+
+
+
+ constant-declarators
+
+
+
+ constant-declarator
+
+
+
+
+ constant-declarators
+
+
+ ,
+
+
+ constant-declarator
+
+
+
+
+
+
+
+ constant-declarator
+
+
+
+ identifier
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+ expression-statement
+
+
+
+ statement-expression
+
+
+ ;
+
+
+
+
+
+ statement-expression
+
+
+
+ invocation-expression
+
+
+ object-creation-expression
+
+
+ assignment
+
+
+ post-increment-expression
+
+
+ post-decrement-expression
+
+
+ pre-increment-expression
+
+
+ pre-decrement-expression
+
+
+
+
+
+ selection-statement
+
+
+
+ if-statement
+
+
+ switch-statement
+
+
+
+
+
+ if-statement
+
+
+
+
+
+ if
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+
+ if
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+ else
+
+
+ embedded-statement
+
+
+
+
+
+
+
+ switch-statement
+
+
+
+ switch
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ switch-block
+
+
+
+
+
+ switch-block
+
+
+
+ {
+
+
+
+
+ switch-sections
+
+
+
+
+ }
+
+
+
+
+
+ switch-sections
+
+
+
+ switch-section
+
+
+
+
+ switch-sections
+
+
+ switch-section
+
+
+
+
+
+
+
+ switch-section
+
+
+
+ switch-labels
+
+
+ statement-list
+
+
+
+
+
+ switch-labels
+
+
+
+ switch-label
+
+
+
+
+ switch-labels
+
+
+ switch-label
+
+
+
+
+
+
+
+ switch-label
+
+
+
+
+
+ case
+
+
+ constant-expression
+
+
+ :
+
+
+
+
+
+
+ default
+
+
+ :
+
+
+
+
+
+
+
+ iteration-statement
+
+
+
+ while-statement
+
+
+ do-statement
+
+
+ for-statement
+
+
+ foreach-statement
+
+
+
+
+
+ while-statement
+
+
+
+ while
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ do-statement
+
+
+
+ do
+
+
+ embedded-statement
+
+
+ while
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ ;
+
+
+
+
+
+ for-statement
+
+
+
+ for
+
+
+ (
+
+
+
+
+ for-initializer
+
+
+
+
+ ;
+
+
+
+
+ for-condition
+
+
+
+
+ ;
+
+
+
+
+ for-iterator
+
+
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ for-initializer
+
+
+
+ local-variable-declaration
+
+
+ statement-expression-list
+
+
+
+
+
+ for-condition
+
+ boolean-expression
+
+
+
+ for-iterator
+
+ statement-expression-list
+
+
+
+ statement-expression-list
+
+
+
+ statement-expression
+
+
+
+
+ statement-expression-list
+
+
+ ,
+
+
+ statement-expression
+
+
+
+
+
+
+
+ foreach-statement
+
+
+
+ foreach
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ in
+
+
+ expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ jump-statement
+
+
+
+ break-statement
+
+
+ continue-statement
+
+
+ goto-statement
+
+
+ return-statement
+
+
+ throw-statement
+
+
+
+
+
+ break-statement
+
+
+
+ break
+
+
+ ;
+
+
+
+
+
+ continue-statement
+
+
+
+ continue
+
+
+ ;
+
+
+
+
+
+ goto-statement
+
+
+
+
+
+ goto
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+
+ goto
+
+
+ case
+
+
+ constant-expression
+
+
+ ;
+
+
+
+
+
+
+ goto
+
+
+ default
+
+
+ ;
+
+
+
+
+
+
+
+ return-statement
+
+
+
+ return
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+ throw-statement
+
+
+
+ throw
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+ try-statement
+
+
+
+
+
+ try
+
+
+ block
+
+
+ catch-clauses
+
+
+
+
+
+
+ try
+
+
+ block
+
+
+
+
+ catch-clauses
+
+
+
+
+ finally-clause
+
+
+
+
+
+
+
+ catch-clauses
+
+
+
+ specific-catch-clauses
+
+
+
+
+
+
+ specific-catch-clauses
+
+
+
+
+ general-catch-clause
+
+
+
+
+
+
+
+ specific-catch-clauses
+
+
+
+ specific-catch-clause
+
+
+
+
+ specific-catch-clauses
+
+
+ specific-catch-clause
+
+
+
+
+
+
+
+ specific-catch-clause
+
+
+
+ catch
+
+
+ (
+
+
+ class-type
+
+
+
+
+ identifier
+
+
+
+
+ )
+
+
+ block
+
+
+
+
+
+ general-catch-clause
+
+
+
+ catch
+
+
+ block
+
+
+
+
+
+ finally-clause
+
+
+
+ finally
+
+
+ block
+
+
+
+
+
+ checked-statement
+
+
+
+ checked
+
+
+ block
+
+
+
+
+
+ unchecked-statement
+
+
+
+ unchecked
+
+
+ block
+
+
+
+
+
+ lock-statement
+
+
+
+ lock
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ using-statement
+
+
+
+ using
+
+
+ (
+
+
+ resource-acquisition
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ resource-acquisition
+
+
+
+ local-variable-declaration
+
+
+ expression
+
+
+
+
+
+ yield-statement
+
+
+
+
+
+ yield
+
+
+ return
+
+
+ expression
+
+
+ ;
+
+
+
+
+
+
+ yield
+
+
+ break
+
+
+ ;
+
+
+
+
+
+
+
+ namespace-declaration
+
+
+
+ namespace
+
+
+ qualified-identifier
+
+
+ namespace-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ qualified-identifier
+
+
+
+ identifier
+
+
+
+
+ qualified-identifier
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ namespace-body
+
+
+
+ {
+
+
+
+
+ extern-alias-directives
+
+
+
+
+
+
+ using-directives
+
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ extern-alias-directives
+
+
+
+ extern-alias-directive
+
+
+
+
+ extern-alias-directives
+
+
+ extern-alias-directive
+
+
+
+
+
+
+
+ extern-alias-directive
+
+
+
+ extern
+
+
+ alias
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+ using-directives
+
+
+
+ using-directive
+
+
+
+
+ using-directives
+
+
+ using-directive
+
+
+
+
+
+
+
+ using-directive
+
+
+
+ using-alias-directive
+
+
+ using-namespace-directive
+
+
+
+
+
+ using-alias-directive
+
+
+
+ using
+
+
+ identifier
+
+
+ =
+
+
+ namespace-or-type-name
+
+
+ ;
+
+
+
+
+
+ using-namespace-directive
+
+
+
+ using
+
+
+ namespace-name
+
+
+ ;
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+ namespace-member-declaration
+
+
+
+
+ namespace-member-declarations
+
+
+ namespace-member-declaration
+
+
+
+
+
+
+
+ namespace-member-declaration
+
+
+
+ namespace-declaration
+
+
+ type-declaration
+
+
+
+
+
+ type-declaration
+
+
+
+ class-declaration
+
+
+ struct-declaration
+
+
+ interface-declaration
+
+
+ enum-declaration
+
+
+ delegate-declaration
+
+
+
+
+
+ qualified-alias-member
+
+
+
+ identifier
+
+
+ ::
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+ class-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ class-modifiers
+
+
+
+
+
+
+ partial
+
+
+
+
+ class
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+
+
+ class-base
+
+
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ class-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ class-modifiers
+
+
+
+ class-modifier
+
+
+
+
+ class-modifiers
+
+
+ class-modifier
+
+
+
+
+
+
+
+ class-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ abstract
+
+
+ sealed
+
+
+ static
+
+
+
+
+
+ class-base
+
+
+
+
+
+ :
+
+
+ class-type
+
+
+
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+
+ :
+
+
+ class-type
+
+
+ ,
+
+
+ interface-type-list
+
+
+
+
+
+
+
+ interface-type-list
+
+
+
+ interface-type
+
+
+
+
+ interface-type-list
+
+
+ ,
+
+
+ interface-type
+
+
+
+
+
+
+
+ class-body
+
+
+
+ {
+
+
+
+
+ class-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ class-member-declarations
+
+
+
+ class-member-declaration
+
+
+
+
+ class-member-declarations
+
+
+ class-member-declaration
+
+
+
+
+
+
+
+ class-member-declaration
+
+
+
+ constant-declaration
+
+
+ field-declaration
+
+
+ method-declaration
+
+
+ property-declaration
+
+
+ event-declaration
+
+
+ indexer-declaration
+
+
+ operator-declaration
+
+
+ constructor-declaration
+
+
+ finalizer-declaration
+
+
+ static-constructor-declaration
+
+
+ type-declaration
+
+
+
+
+
+ constant-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ constant-modifiers
+
+
+
+
+ const
+
+
+ type
+
+
+ constant-declarators
+
+
+ ;
+
+
+
+
+
+ constant-modifiers
+
+
+
+ constant-modifier
+
+
+
+
+ constant-modifiers
+
+
+ constant-modifier
+
+
+
+
+
+
+
+ constant-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ field-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ field-modifiers
+
+
+
+
+ type
+
+
+ variable-declarators
+
+
+ ;
+
+
+
+
+
+ field-modifiers
+
+
+
+ field-modifier
+
+
+
+
+ field-modifiers
+
+
+ field-modifier
+
+
+
+
+
+
+
+ field-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ readonly
+
+
+ volatile
+
+
+
+
+
+ variable-declarators
+
+
+
+ variable-declarator
+
+
+
+
+ variable-declarators
+
+
+ ,
+
+
+ variable-declarator
+
+
+
+
+
+
+
+ variable-declarator
+
+
+
+ identifier
+
+
+
+
+ identifier
+
+
+ =
+
+
+ variable-initializer
+
+
+
+
+
+
+
+ variable-initializer
+
+
+
+ expression
+
+
+ array-initializer
+
+
+
+
+
+ method-declaration
+
+
+
+ method-header
+
+
+ method-body
+
+
+
+
+
+ method-header
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ method-modifiers
+
+
+
+
+ return-type
+
+
+ member-name
+
+
+
+
+ type-parameter-list
+
+
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+
+
+
+ method-modifiers
+
+
+
+ method-modifier
+
+
+
+
+ method-modifiers
+
+
+ method-modifier
+
+
+
+
+
+
+
+ method-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ return-type
+
+
+
+ type
+
+
+ void
+
+
+
+
+
+ member-name
+
+
+
+ identifier
+
+
+
+
+ interface-type
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ method-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ formal-parameter-list
+
+
+
+ fixed-parameters
+
+
+
+
+ fixed-parameters
+
+
+ ,
+
+
+ parameter-array
+
+
+
+
+ parameter-array
+
+
+
+
+
+ fixed-parameters
+
+
+
+ fixed-parameter
+
+
+
+
+ fixed-parameters
+
+
+ ,
+
+
+ fixed-parameter
+
+
+
+
+
+
+
+ fixed-parameter
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ parameter-modifier
+
+
+
+
+ type
+
+
+ identifier
+
+
+
+
+
+ parameter-modifier
+
+
+
+ ref
+
+
+ out
+
+
+
+
+
+ parameter-array
+
+
+
+
+
+ attributes
+
+
+
+
+ params
+
+
+ array-type
+
+
+ identifier
+
+
+
+
+
+ property-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ property-modifiers
+
+
+
+
+ type
+
+
+ member-name
+
+
+ {
+
+
+ accessor-declarations
+
+
+ }
+
+
+
+
+
+ property-modifiers
+
+
+
+ property-modifier
+
+
+
+
+ property-modifiers
+
+
+ property-modifier
+
+
+
+
+
+
+
+ property-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ accessor-declarations
+
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ accessor-modifier
+
+
+
+
+ get
+
+
+ accessor-body
+
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ accessor-modifier
+
+
+
+
+ set
+
+
+ accessor-body
+
+
+
+
+
+ accessor-modifier
+
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+ protected
+
+
+ internal
+
+
+
+
+
+
+ internal
+
+
+ protected
+
+
+
+
+
+
+
+ accessor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ event-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ event-modifiers
+
+
+
+
+ event
+
+
+ type
+
+
+ variable-declarators
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ event-modifiers
+
+
+
+
+ event
+
+
+ type
+
+
+ member-name
+
+
+ {
+
+
+ event-accessor-declarations
+
+
+ }
+
+
+
+
+
+
+
+ event-modifiers
+
+
+
+ event-modifier
+
+
+
+
+ event-modifiers
+
+
+ event-modifier
+
+
+
+
+
+
+
+ event-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ event-accessor-declarations
+
+
+
+
+
+ add-accessor-declaration
+
+
+ remove-accessor-declaration
+
+
+
+
+
+
+ remove-accessor-declaration
+
+
+ add-accessor-declaration
+
+
+
+
+
+
+
+ add-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ add
+
+
+ block
+
+
+
+
+
+ remove-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ remove
+
+
+ block
+
+
+
+
+
+ indexer-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ indexer-modifiers
+
+
+
+
+ indexer-declarator
+
+
+ {
+
+
+ accessor-declarations
+
+
+ }
+
+
+
+
+
+ indexer-modifiers
+
+
+
+ indexer-modifier
+
+
+
+
+ indexer-modifiers
+
+
+ indexer-modifier
+
+
+
+
+
+
+
+ indexer-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ indexer-declarator
+
+
+
+
+
+ type
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+
+
+
+
+ type
+
+
+ interface-type
+
+
+ .
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+
+
+
+
+
+ operator-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ operator-modifiers
+
+
+ operator-declarator
+
+
+ operator-body
+
+
+
+
+
+ operator-modifiers
+
+
+
+ operator-modifier
+
+
+
+
+ operator-modifiers
+
+
+ operator-modifier
+
+
+
+
+
+
+
+ operator-modifier
+
+
+
+ public
+
+
+ static
+
+
+ extern
+
+
+
+
+
+ operator-declarator
+
+
+
+ unary-operator-declarator
+
+
+ binary-operator-declarator
+
+
+ conversion-operator-declarator
+
+
+
+
+
+ unary-operator-declarator
+
+
+
+ type
+
+
+ operator
+
+
+ overloadable-unary-operator
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+ overloadable-unary-operator
+
+
+
+ +
+
+
+ -
+
+
+ !
+
+
+ ~
+
+
+ ++
+
+
+ --
+
+
+ true
+
+
+ false
+
+
+
+
+
+ binary-operator-declarator
+
+
+
+ type
+
+
+ operator
+
+
+ overloadable-binary-operator
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ ,
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+ overloadable-binary-operator
+
+
+
+ +
+
+
+ -
+
+
+ *
+
+
+ /
+
+
+ %
+
+
+ &
+
+
+ |
+
+
+ ^
+
+
+ <<
+
+
+ right-shift
+
+
+ ==
+
+
+ !=
+
+
+ >
+
+
+ <
+
+
+ >=
+
+
+ <=
+
+
+
+
+
+ conversion-operator-declarator
+
+
+
+
+
+ implicit
+
+
+ operator
+
+
+ type
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+
+ explicit
+
+
+ operator
+
+
+ type
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+
+
+ operator-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ constructor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ constructor-modifiers
+
+
+
+
+ constructor-declarator
+
+
+ constructor-body
+
+
+
+
+
+ constructor-modifiers
+
+
+
+ constructor-modifier
+
+
+
+
+ constructor-modifiers
+
+
+ constructor-modifier
+
+
+
+
+
+
+
+ constructor-modifier
+
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ extern
+
+
+
+
+
+ constructor-declarator
+
+
+
+ identifier
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ constructor-initializer
+
+
+
+
+
+
+
+ constructor-initializer
+
+
+
+
+
+ :
+
+
+ base
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+ :
+
+
+ this
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+
+ constructor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ static-constructor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ static-constructor-modifiers
+
+
+ identifier
+
+
+ (
+
+
+ )
+
+
+ static-constructor-body
+
+
+
+
+
+ static-constructor-modifiers
+
+
+
+
+
+
+
+ extern
+
+
+
+
+ static
+
+
+
+
+
+
+ static
+
+
+
+
+ extern
+
+
+
+
+
+
+
+
+
+ static-constructor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ finalizer-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ extern
+
+
+
+
+ ~
+
+
+ identifier
+
+
+ (
+
+
+ )
+
+
+ finalizer-body
+
+
+
+
+
+ finalizer-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ struct-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ struct-modifiers
+
+
+
+
+
+
+ partial
+
+
+
+
+ struct
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+
+
+ struct-interfaces
+
+
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ struct-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ struct-modifiers
+
+
+
+ struct-modifier
+
+
+
+
+ struct-modifiers
+
+
+ struct-modifier
+
+
+
+
+
+
+
+ struct-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ struct-interfaces
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+ struct-body
+
+
+
+ {
+
+
+
+
+ struct-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ struct-member-declarations
+
+
+
+ struct-member-declaration
+
+
+
+
+ struct-member-declarations
+
+
+ struct-member-declaration
+
+
+
+
+
+
+
+ struct-member-declaration
+
+
+
+ constant-declaration
+
+
+ field-declaration
+
+
+ method-declaration
+
+
+ property-declaration
+
+
+ event-declaration
+
+
+ indexer-declaration
+
+
+ operator-declaration
+
+
+ constructor-declaration
+
+
+ static-constructor-declaration
+
+
+ type-declaration
+
+
+
+
+
+ array-initializer
+
+
+
+
+
+ {
+
+
+
+
+ variable-initializer-list
+
+
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ variable-initializer-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ variable-initializer-list
+
+
+
+ variable-initializer
+
+
+
+
+ variable-initializer-list
+
+
+ ,
+
+
+ variable-initializer
+
+
+
+
+
+
+
+ interface-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ interface-modifiers
+
+
+
+
+
+
+ partial
+
+
+
+
+ interface
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+
+
+ interface-base
+
+
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ interface-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ interface-modifiers
+
+
+
+ interface-modifier
+
+
+
+
+ interface-modifiers
+
+
+ interface-modifier
+
+
+
+
+
+
+
+ interface-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ interface-base
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+ interface-body
+
+
+
+ {
+
+
+
+
+ interface-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ interface-member-declarations
+
+
+
+ interface-member-declaration
+
+
+
+
+ interface-member-declarations
+
+
+ interface-member-declaration
+
+
+
+
+
+
+
+ interface-member-declaration
+
+
+
+ interface-method-declaration
+
+
+ interface-property-declaration
+
+
+ interface-event-declaration
+
+
+ interface-indexer-declaration
+
+
+
+
+
+ interface-method-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ return-type
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ ;
+
+
+
+
+
+ interface-property-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ type
+
+
+ identifier
+
+
+ {
+
+
+ interface-accessors
+
+
+ }
+
+
+
+
+
+ interface-accessors
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+
+
+
+ interface-event-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ event
+
+
+ type
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+ interface-indexer-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ type
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+ {
+
+
+ interface-accessors
+
+
+ }
+
+
+
+
+
+ enum-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ enum-modifiers
+
+
+
+
+ enum
+
+
+ identifier
+
+
+
+
+ enum-base
+
+
+
+
+ enum-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ enum-base
+
+
+
+ :
+
+
+ integral-type
+
+
+
+
+
+ enum-body
+
+
+
+
+
+ {
+
+
+
+
+ enum-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ enum-member-declarations
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ enum-modifiers
+
+
+
+ enum-modifier
+
+
+
+
+ enum-modifiers
+
+
+ enum-modifier
+
+
+
+
+
+
+
+ enum-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ enum-member-declarations
+
+
+
+ enum-member-declaration
+
+
+
+
+ enum-member-declarations
+
+
+ ,
+
+
+ enum-member-declaration
+
+
+
+
+
+
+
+ enum-member-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ identifier
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ identifier
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+
+
+ delegate-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ delegate-modifiers
+
+
+
+
+ delegate
+
+
+ return-type
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ ;
+
+
+
+
+
+ delegate-modifiers
+
+
+
+ delegate-modifier
+
+
+
+
+ delegate-modifiers
+
+
+ delegate-modifier
+
+
+
+
+
+
+
+ delegate-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ global-attributes
+
+ global-attribute-sections
+
+
+
+ global-attribute-sections
+
+
+
+ global-attribute-section
+
+
+
+
+ global-attribute-sections
+
+
+ global-attribute-section
+
+
+
+
+
+
+
+ global-attribute-section
+
+
+
+
+
+ [
+
+
+ global-attribute-target-specifier
+
+
+ attribute-list
+
+
+ ]
+
+
+
+
+
+
+ [
+
+
+ global-attribute-target-specifier
+
+
+ attribute-list
+
+
+ ,
+
+
+ ]
+
+
+
+
+
+
+
+ global-attribute-target-specifier
+
+
+
+ global-attribute-target
+
+
+ :
+
+
+
+
+
+ global-attribute-target
+
+
+
+ identifier
+
+
+ keyword
+
+
+
+
+
+ attributes
+
+ attribute-sections
+
+
+
+ attribute-sections
+
+
+
+ attribute-section
+
+
+
+
+ attribute-sections
+
+
+ attribute-section
+
+
+
+
+
+
+
+ attribute-section
+
+
+
+
+
+ [
+
+
+
+
+ attribute-target-specifier
+
+
+
+
+ attribute-list
+
+
+ ]
+
+
+
+
+
+
+ [
+
+
+
+
+ attribute-target-specifier
+
+
+
+
+ attribute-list
+
+
+ ,
+
+
+ ]
+
+
+
+
+
+
+
+ attribute-target-specifier
+
+
+
+ attribute-target
+
+
+ :
+
+
+
+
+
+ attribute-target
+
+
+
+ identifier
+
+
+ keyword
+
+
+
+
+
+ attribute-list
+
+
+
+ attribute
+
+
+
+
+ attribute-list
+
+
+ ,
+
+
+ attribute
+
+
+
+
+
+
+
+ attribute
+
+
+
+ attribute-name
+
+
+
+
+ attribute-arguments
+
+
+
+
+
+
+
+ attribute-name
+
+ type-name
+
+
+
+ attribute-arguments
+
+
+
+
+
+ (
+
+
+
+
+ positional-argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+ (
+
+
+ positional-argument-list
+
+
+ ,
+
+
+ named-argument-list
+
+
+ )
+
+
+
+
+
+
+ (
+
+
+ named-argument-list
+
+
+ )
+
+
+
+
+
+
+
+ positional-argument-list
+
+
+
+ positional-argument
+
+
+
+
+ positional-argument-list
+
+
+ ,
+
+
+ positional-argument
+
+
+
+
+
+
+
+ positional-argument
+
+ attribute-argument-expression
+
+
+
+ named-argument-list
+
+
+
+ named-argument
+
+
+
+
+ named-argument-list
+
+
+ ,
+
+
+ named-argument
+
+
+
+
+
+
+
+ named-argument
+
+
+
+ identifier
+
+
+ =
+
+
+ attribute-argument-expression
+
+
+
+
+
+ attribute-argument-expression
+
+ expression
+
+
+
+ type-parameter-list
+
+
+
+ <
+
+
+ type-parameters
+
+
+ >
+
+
+
+
+
+ type-parameters
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ type-parameter
+
+
+
+
+
+
+ type-parameters
+
+
+ ,
+
+
+
+
+ attributes
+
+
+
+
+ type-parameter
+
+
+
+
+
+
+
+ type-parameter
+
+ identifier
+
+
+
+ type-argument-list
+
+
+
+ <
+
+
+ type-arguments
+
+
+ >
+
+
+
+
+
+ type-arguments
+
+
+
+ type-argument
+
+
+
+
+ type-arguments
+
+
+ ,
+
+
+ type-argument
+
+
+
+
+
+
+
+ type-argument
+
+ type
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+ type-parameter-constraints-clause
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+ type-parameter-constraints-clause
+
+
+
+
+
+
+
+ type-parameter-constraints-clause
+
+
+
+ where
+
+
+ type-parameter
+
+
+ :
+
+
+ type-parameter-constraints
+
+
+
+
+
+ type-parameter-constraints
+
+
+
+ primary-constraint
+
+
+ secondary-constraints
+
+
+ constructor-constraint
+
+
+
+
+ primary-constraint
+
+
+ ,
+
+
+ secondary-constraints
+
+
+
+
+
+
+ primary-constraint
+
+
+ ,
+
+
+ constructor-constraint
+
+
+
+
+
+
+ secondary-constraints
+
+
+ ,
+
+
+ constructor-constraint
+
+
+
+
+
+
+ primary-constraint
+
+
+ ,
+
+
+ secondary-constraints
+
+
+ ,
+
+
+ constructor-constraint
+
+
+
+
+
+
+
+ primary-constraint
+
+
+
+ class-type
+
+
+ class
+
+
+ struct
+
+
+
+
+
+ secondary-constraints
+
+
+
+ interface-type
+
+
+ type-parameter
+
+
+
+
+ secondary-constraints
+
+
+ ,
+
+
+ interface-type
+
+
+
+
+
+
+ secondary-constraints
+
+
+ ,
+
+
+ type-parameter
+
+
+
+
+
+
+
+ constructor-constraint
+
+
+
+ new
+
+
+ (
+
+
+ )
+
+
+
+
+
+ keyword
+
+
+
+ abstract
+
+
+ as
+
+
+ base
+
+
+ bool
+
+
+ break
+
+
+ byte
+
+
+ case
+
+
+ catch
+
+
+ char
+
+
+ checked
+
+
+ class
+
+
+ const
+
+
+ continue
+
+
+ decimal
+
+
+ default
+
+
+ delegate
+
+
+ do
+
+
+ double
+
+
+ else
+
+
+ enum
+
+
+ event
+
+
+ explicit
+
+
+ extern
+
+
+ false
+
+
+ finally
+
+
+ fixed
+
+
+ float
+
+
+ for
+
+
+ foreach
+
+
+ goto
+
+
+ if
+
+
+ implicit
+
+
+ in
+
+
+ int
+
+
+ interface
+
+
+ internal
+
+
+ is
+
+
+ lock
+
+
+ long
+
+
+ namespace
+
+
+ new
+
+
+ null
+
+
+ object
+
+
+ operator
+
+
+ out
+
+
+ override
+
+
+ params
+
+
+ private
+
+
+ protected
+
+
+ public
+
+
+ readonly
+
+
+ ref
+
+
+ return
+
+
+ sbyte
+
+
+ sealed
+
+
+ short
+
+
+ sizeof
+
+
+ stackalloc
+
+
+ static
+
+
+ string
+
+
+ struct
+
+
+ switch
+
+
+ this
+
+
+ throw
+
+
+ true
+
+
+ try
+
+
+ typeof
+
+
+ uint
+
+
+ ulong
+
+
+ unchecked
+
+
+ unsafe
+
+
+ ushort
+
+
+ using
+
+
+ virtual
+
+
+ void
+
+
+ volatile
+
+
+ while
+
+
+ get
+
+
+ set
+
+
+ yield
+
+
+ add
+
+
+ remove
+
+
+ alias
+
+
+ partial
+
+
+ where
+
+
+
+
+
diff --git a/topics/grammars/csharp/ecma-334-2006/Makefile b/topics/grammars/csharp/ecma-334-2006/Makefile
index be472388..6fc420f7 100644
--- a/topics/grammars/csharp/ecma-334-2006/Makefile
+++ b/topics/grammars/csharp/ecma-334-2006/Makefile
@@ -10,4 +10,4 @@ clean:
test:
make build
- ../../../../shared/tools/gdts ecma-334-grammar.bgf extracted-grammar.bgf
+ ../../../../shared/tools/gdt ecma-334-grammar.bgf extracted-grammar.bgf
diff --git a/topics/grammars/csharp/ecma-334-2006/extracted-grammar.bgf b/topics/grammars/csharp/ecma-334-2006/extracted-grammar.bgf
index a1898e40..bd47f5c7 100644
--- a/topics/grammars/csharp/ecma-334-2006/extracted-grammar.bgf
+++ b/topics/grammars/csharp/ecma-334-2006/extracted-grammar.bgf
@@ -1,7040 +1,7039 @@
-
-
-
- compilation-unit
-
-
-
-
-
- extern-alias-directives
-
-
-
-
-
-
- using-directives
-
-
-
-
-
-
- global-attributes
-
-
-
-
-
-
- namespace-member-declarations
-
-
-
-
-
-
-
- namespace-name
-
- namespace-or-type-name
-
-
-
- type-name
-
- namespace-or-type-name
-
-
-
- namespace-or-type-name
-
-
-
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
- qualified-alias-member
-
-
-
-
- namespace-or-type-name
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
-
- type
-
-
-
- value-type
-
-
- reference-type
-
-
- type-parameter
-
-
-
-
-
- value-type
-
-
-
- struct-type
-
-
- enum-type
-
-
-
-
-
- struct-type
-
-
-
- type-name
-
-
- simple-type
-
-
- nullable-type
-
-
-
-
-
- simple-type
-
-
-
- numeric-type
-
-
- bool
-
-
-
-
-
- numeric-type
-
-
-
- integral-type
-
-
- floating-point-type
-
-
- decimal
-
-
-
-
-
- integral-type
-
-
-
- sbyte
-
-
- byte
-
-
- short
-
-
- ushort
-
-
- int
-
-
- uint
-
-
- long
-
-
- ulong
-
-
- char
-
-
-
-
-
- floating-point-type
-
-
-
- float
-
-
- double
-
-
-
-
-
- enum-type
-
- type-name
-
-
-
- nullable-type
-
-
-
- non-nullable-value-type
-
-
- ?
-
-
-
-
-
- non-nullable-value-type
-
-
-
- enum-type
-
-
- type-name
-
-
- simple-type
-
-
-
-
-
- reference-type
-
-
-
- class-type
-
-
- interface-type
-
-
- array-type
-
-
- delegate-type
-
-
-
-
-
- class-type
-
-
-
- type-name
-
-
- object
-
-
- string
-
-
-
-
-
- interface-type
-
- type-name
-
-
-
- array-type
-
-
-
- non-array-type
-
-
- rank-specifiers
-
-
-
-
-
- non-array-type
-
-
-
- value-type
-
-
- class-type
-
-
- interface-type
-
-
- delegate-type
-
-
- type-parameter
-
-
-
-
-
- rank-specifiers
-
-
-
- rank-specifier
-
-
-
-
- rank-specifiers
-
-
- rank-specifier
-
-
-
-
-
-
-
- rank-specifier
-
-
-
- [
-
-
-
-
- dim-separators
-
-
-
-
- ]
-
-
-
-
-
- dim-separators
-
-
-
- ,
-
-
-
-
- dim-separators
-
-
- ,
-
-
-
-
-
-
-
- delegate-type
-
- type-name
-
-
-
- variable-reference
-
- expression
-
-
-
- argument-list
-
-
-
- argument
-
-
-
-
- argument-list
-
-
- ,
-
-
- argument
-
-
-
-
-
-
-
- argument
-
-
-
- expression
-
-
-
-
- ref
-
-
- variable-reference
-
-
-
-
-
-
- out
-
-
- variable-reference
-
-
-
-
-
-
-
- primary-expression
-
-
-
- array-creation-expression
-
-
- primary-no-array-creation-expression
-
-
-
-
-
- primary-no-array-creation-expression
-
-
-
- literal
-
-
- simple-name
-
-
- parenthesized-expression
-
-
- member-access
-
-
- invocation-expression
-
-
- element-access
-
-
- this-access
-
-
- base-access
-
-
- post-increment-expression
-
-
- post-decrement-expression
-
-
- object-creation-expression
-
-
- delegate-creation-expression
-
-
- typeof-expression
-
-
- checked-expression
-
-
- unchecked-expression
-
-
- default-value-expression
-
-
- anonymous-method-expression
-
-
-
-
-
- simple-name
-
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
- parenthesized-expression
-
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- member-access
-
-
-
-
-
- primary-expression
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
- predefined-type
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
- qualified-alias-member
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
-
- predefined-type
-
-
-
- bool
-
-
- byte
-
-
- char
-
-
- decimal
-
-
- double
-
-
- float
-
-
- int
-
-
- long
-
-
- object
-
-
- sbyte
-
-
- short
-
-
- string
-
-
- uint
-
-
- ulong
-
-
- ushort
-
-
-
-
-
- invocation-expression
-
-
-
- primary-expression
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
- element-access
-
-
-
- primary-no-array-creation-expression
-
-
- [
-
-
- expression-list
-
-
- ]
-
-
-
-
-
- expression-list
-
-
-
- expression
-
-
-
-
- expression-list
-
-
- ,
-
-
- expression
-
-
-
-
-
-
-
- this-access
-
- this
-
-
-
- base-access
-
-
-
-
-
- base
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
- base
-
-
- [
-
-
- expression-list
-
-
- ]
-
-
-
-
-
-
-
- post-increment-expression
-
-
-
- primary-expression
-
-
- ++
-
-
-
-
-
- post-decrement-expression
-
-
-
- primary-expression
-
-
- --
-
-
-
-
-
- object-creation-expression
-
-
-
- new
-
-
- type
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
- array-creation-expression
-
-
-
-
-
- new
-
-
- non-array-type
-
-
- [
-
-
- expression-list
-
-
- ]
-
-
-
-
- rank-specifiers
-
-
-
-
-
-
- array-initializer
-
-
-
-
-
-
-
-
- new
-
-
- array-type
-
-
- array-initializer
-
-
-
-
-
-
-
- delegate-creation-expression
-
-
-
- new
-
-
- delegate-type
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- typeof-expression
-
-
-
-
-
- typeof
-
-
- (
-
-
- type
-
-
- )
-
-
-
-
-
-
- typeof
-
-
- (
-
-
- unbound-type-name
-
-
- )
-
-
-
-
-
-
- typeof
-
-
- (
-
-
- void
-
-
- )
-
-
-
-
-
-
-
- unbound-type-name
-
-
-
-
-
- identifier
-
-
-
-
- generic-dimension-specifier
-
-
-
-
-
-
-
-
- identifier
-
-
- ::
-
-
- identifier
-
-
-
-
- generic-dimension-specifier
-
-
-
-
-
-
-
-
- unbound-type-name
-
-
- .
-
-
- identifier
-
-
-
-
- generic-dimension-specifier
-
-
-
-
-
-
-
-
-
- generic-dimension-specifier
-
-
-
- <
-
-
-
-
- commas
-
-
-
-
- >
-
-
-
-
-
- commas
-
-
-
- ,
-
-
-
-
- commas
-
-
- ,
-
-
-
-
-
-
-
- checked-expression
-
-
-
- checked
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- unchecked-expression
-
-
-
- unchecked
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- default-value-expression
-
-
-
- default
-
-
- (
-
-
- type
-
-
- )
-
-
-
-
-
- anonymous-method-expression
-
-
-
- delegate
-
-
-
-
- anonymous-method-signature
-
-
-
-
- block
-
-
-
-
-
- anonymous-method-signature
-
-
-
- (
-
-
-
-
- anonymous-method-parameter-list
-
-
-
-
- )
-
-
-
-
-
- anonymous-method-parameter-list
-
-
-
- anonymous-method-parameter
-
-
-
-
- anonymous-method-parameter-list
-
-
- ,
-
-
- anonymous-method-parameter
-
-
-
-
-
-
-
- anonymous-method-parameter
-
-
-
-
-
- parameter-modifier
-
-
-
-
- type
-
-
- identifier
-
-
-
-
-
- unary-expression
-
-
-
- primary-expression
-
-
-
-
- +
-
-
- unary-expression
-
-
-
-
-
-
- -
-
-
- unary-expression
-
-
-
-
-
-
- !
-
-
- unary-expression
-
-
-
-
-
-
- ~
-
-
- unary-expression
-
-
-
-
- pre-increment-expression
-
-
- pre-decrement-expression
-
-
- cast-expression
-
-
-
-
-
- pre-increment-expression
-
-
-
- ++
-
-
- unary-expression
-
-
-
-
-
- pre-decrement-expression
-
-
-
- --
-
-
- unary-expression
-
-
-
-
-
- cast-expression
-
-
-
- (
-
-
- type
-
-
- )
-
-
- unary-expression
-
-
-
-
-
- multiplicative-expression
-
-
-
- unary-expression
-
-
-
-
- multiplicative-expression
-
-
- *
-
-
- unary-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- /
-
-
- unary-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- %
-
-
- unary-expression
-
-
-
-
-
-
-
- additive-expression
-
-
-
- multiplicative-expression
-
-
-
-
- additive-expression
-
-
- +
-
-
- multiplicative-expression
-
-
-
-
-
-
- additive-expression
-
-
- -
-
-
- multiplicative-expression
-
-
-
-
-
-
-
- shift-expression
-
-
-
- additive-expression
-
-
-
-
- shift-expression
-
-
- <<
-
-
- additive-expression
-
-
-
-
-
-
- shift-expression
-
-
- right-shift
-
-
- additive-expression
-
-
-
-
-
-
-
- relational-expression
-
-
-
- shift-expression
-
-
-
-
- relational-expression
-
-
- <
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- <=
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >=
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- is
-
-
- type
-
-
-
-
-
-
- relational-expression
-
-
- as
-
-
- type
-
-
-
-
-
-
-
- equality-expression
-
-
-
- relational-expression
-
-
-
-
- equality-expression
-
-
- ==
-
-
- relational-expression
-
-
-
-
-
-
- equality-expression
-
-
- !=
-
-
- relational-expression
-
-
-
-
-
-
-
- and-expression
-
-
-
- equality-expression
-
-
-
-
- and-expression
-
-
- &
-
-
- equality-expression
-
-
-
-
-
-
-
- exclusive-or-expression
-
-
-
- and-expression
-
-
-
-
- exclusive-or-expression
-
-
- ^
-
-
- and-expression
-
-
-
-
-
-
-
- inclusive-or-expression
-
-
-
- exclusive-or-expression
-
-
-
-
- inclusive-or-expression
-
-
- |
-
-
- exclusive-or-expression
-
-
-
-
-
-
-
- conditional-and-expression
-
-
-
- inclusive-or-expression
-
-
-
-
- conditional-and-expression
-
-
- &&
-
-
- inclusive-or-expression
-
-
-
-
-
-
-
- conditional-or-expression
-
-
-
- conditional-and-expression
-
-
-
-
- conditional-or-expression
-
-
- ||
-
-
- conditional-and-expression
-
-
-
-
-
-
-
- null-coalescing-expression
-
-
-
- conditional-or-expression
-
-
-
-
- conditional-or-expression
-
-
- ??
-
-
- null-coalescing-expression
-
-
-
-
-
-
-
- conditional-expression
-
-
-
- null-coalescing-expression
-
-
-
-
- null-coalescing-expression
-
-
- ?
-
-
- expression
-
-
- :
-
-
- expression
-
-
-
-
-
-
-
- assignment
-
-
-
- unary-expression
-
-
- assignment-operator
-
-
- expression
-
-
-
-
-
- assignment-operator
-
-
-
- =
-
-
- +=
-
-
- -=
-
-
- *=
-
-
- /=
-
-
- %=
-
-
- &=
-
-
- |=
-
-
- ^=
-
-
- <<=
-
-
- right-shift-assignment
-
-
-
-
-
- expression
-
-
-
- conditional-expression
-
-
- assignment
-
-
-
-
-
- constant-expression
-
- expression
-
-
-
- boolean-expression
-
- expression
-
-
-
- statement
-
-
-
- labeled-statement
-
-
- declaration-statement
-
-
- embedded-statement
-
-
-
-
-
- embedded-statement
-
-
-
- block
-
-
- empty-statement
-
-
- expression-statement
-
-
- selection-statement
-
-
- iteration-statement
-
-
- jump-statement
-
-
- try-statement
-
-
- checked-statement
-
-
- unchecked-statement
-
-
- lock-statement
-
-
- using-statement
-
-
- yield-statement
-
-
-
-
-
- block
-
-
-
- {
-
-
-
-
- statement-list
-
-
-
-
- }
-
-
-
-
-
- statement-list
-
-
-
- statement
-
-
-
-
- statement-list
-
-
- statement
-
-
-
-
-
-
-
- empty-statement
-
- ;
-
-
-
- labeled-statement
-
-
-
- identifier
-
-
- :
-
-
- statement
-
-
-
-
-
- declaration-statement
-
-
-
-
-
- local-variable-declaration
-
-
- ;
-
-
-
-
-
-
- local-constant-declaration
-
-
- ;
-
-
-
-
-
-
-
- local-variable-declaration
-
-
-
- type
-
-
- local-variable-declarators
-
-
-
-
-
- local-variable-declarators
-
-
-
- local-variable-declarator
-
-
-
-
- local-variable-declarators
-
-
- ,
-
-
- local-variable-declarator
-
-
-
-
-
-
-
- local-variable-declarator
-
-
-
- identifier
-
-
-
-
- identifier
-
-
- =
-
-
- local-variable-initializer
-
-
-
-
-
-
-
- local-variable-initializer
-
-
-
- expression
-
-
- array-initializer
-
-
-
-
-
- local-constant-declaration
-
-
-
- const
-
-
- type
-
-
- constant-declarators
-
-
-
-
-
- constant-declarators
-
-
-
- constant-declarator
-
-
-
-
- constant-declarators
-
-
- ,
-
-
- constant-declarator
-
-
-
-
-
-
-
- constant-declarator
-
-
-
- identifier
-
-
- =
-
-
- constant-expression
-
-
-
-
-
- expression-statement
-
-
-
- statement-expression
-
-
- ;
-
-
-
-
-
- statement-expression
-
-
-
- invocation-expression
-
-
- object-creation-expression
-
-
- assignment
-
-
- post-increment-expression
-
-
- post-decrement-expression
-
-
- pre-increment-expression
-
-
- pre-decrement-expression
-
-
-
-
-
- selection-statement
-
-
-
- if-statement
-
-
- switch-statement
-
-
-
-
-
- if-statement
-
-
-
-
-
- if
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
-
- if
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
- else
-
-
- embedded-statement
-
-
-
-
-
-
-
- switch-statement
-
-
-
- switch
-
-
- (
-
-
- expression
-
-
- )
-
-
- switch-block
-
-
-
-
-
- switch-block
-
-
-
- {
-
-
-
-
- switch-sections
-
-
-
-
- }
-
-
-
-
-
- switch-sections
-
-
-
- switch-section
-
-
-
-
- switch-sections
-
-
- switch-section
-
-
-
-
-
-
-
- switch-section
-
-
-
- switch-labels
-
-
- statement-list
-
-
-
-
-
- switch-labels
-
-
-
- switch-label
-
-
-
-
- switch-labels
-
-
- switch-label
-
-
-
-
-
-
-
- switch-label
-
-
-
-
-
- case
-
-
- constant-expression
-
-
- :
-
-
-
-
-
-
- default
-
-
- :
-
-
-
-
-
-
-
- iteration-statement
-
-
-
- while-statement
-
-
- do-statement
-
-
- for-statement
-
-
- foreach-statement
-
-
-
-
-
- while-statement
-
-
-
- while
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- do-statement
-
-
-
- do
-
-
- embedded-statement
-
-
- while
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- ;
-
-
-
-
-
- for-statement
-
-
-
- for
-
-
- (
-
-
-
-
- for-initializer
-
-
-
-
- ;
-
-
-
-
- for-condition
-
-
-
-
- ;
-
-
-
-
- for-iterator
-
-
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- for-initializer
-
-
-
- local-variable-declaration
-
-
- statement-expression-list
-
-
-
-
-
- for-condition
-
- boolean-expression
-
-
-
- for-iterator
-
- statement-expression-list
-
-
-
- statement-expression-list
-
-
-
- statement-expression
-
-
-
-
- statement-expression-list
-
-
- ,
-
-
- statement-expression
-
-
-
-
-
-
-
- foreach-statement
-
-
-
- foreach
-
-
- (
-
-
- type
-
-
- identifier
-
-
- in
-
-
- expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- jump-statement
-
-
-
- break-statement
-
-
- continue-statement
-
-
- goto-statement
-
-
- return-statement
-
-
- throw-statement
-
-
-
-
-
- break-statement
-
-
-
- break
-
-
- ;
-
-
-
-
-
- continue-statement
-
-
-
- continue
-
-
- ;
-
-
-
-
-
- goto-statement
-
-
-
-
-
- goto
-
-
- identifier
-
-
- ;
-
-
-
-
-
-
- goto
-
-
- case
-
-
- constant-expression
-
-
- ;
-
-
-
-
-
-
- goto
-
-
- default
-
-
- ;
-
-
-
-
-
-
-
- return-statement
-
-
-
- return
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
- throw-statement
-
-
-
- throw
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
- try-statement
-
-
-
-
-
- try
-
-
- block
-
-
- catch-clauses
-
-
-
-
-
-
- try
-
-
- block
-
-
-
-
- catch-clauses
-
-
-
-
- finally-clause
-
-
-
-
-
-
-
- catch-clauses
-
-
-
- specific-catch-clauses
-
-
-
-
-
-
- specific-catch-clauses
-
-
-
-
- general-catch-clause
-
-
-
-
-
-
-
- specific-catch-clauses
-
-
-
- specific-catch-clause
-
-
-
-
- specific-catch-clauses
-
-
- specific-catch-clause
-
-
-
-
-
-
-
- specific-catch-clause
-
-
-
- catch
-
-
- (
-
-
- class-type
-
-
-
-
- identifier
-
-
-
-
- )
-
-
- block
-
-
-
-
-
- general-catch-clause
-
-
-
- catch
-
-
- block
-
-
-
-
-
- finally-clause
-
-
-
- finally
-
-
- block
-
-
-
-
-
- checked-statement
-
-
-
- checked
-
-
- block
-
-
-
-
-
- unchecked-statement
-
-
-
- unchecked
-
-
- block
-
-
-
-
-
- lock-statement
-
-
-
- lock
-
-
- (
-
-
- expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- using-statement
-
-
-
- using
-
-
- (
-
-
- resource-acquisition
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- resource-acquisition
-
-
-
- local-variable-declaration
-
-
- expression
-
-
-
-
-
- yield-statement
-
-
-
-
-
- yield
-
-
- return
-
-
- expression
-
-
- ;
-
-
-
-
-
-
- yield
-
-
- break
-
-
- ;
-
-
-
-
-
-
-
- namespace-declaration
-
-
-
- namespace
-
-
- qualified-identifier
-
-
- namespace-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- qualified-identifier
-
-
-
- identifier
-
-
-
-
- qualified-identifier
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- namespace-body
-
-
-
- {
-
-
-
-
- extern-alias-directives
-
-
-
-
-
-
- using-directives
-
-
-
-
-
-
- namespace-member-declarations
-
-
-
-
- }
-
-
-
-
-
- extern-alias-directives
-
-
-
- extern-alias-directive
-
-
-
-
- extern-alias-directives
-
-
- extern-alias-directive
-
-
-
-
-
-
-
- extern-alias-directive
-
-
-
- extern
-
-
- alias
-
-
- identifier
-
-
- ;
-
-
-
-
-
- using-directives
-
-
-
- using-directive
-
-
-
-
- using-directives
-
-
- using-directive
-
-
-
-
-
-
-
- using-directive
-
-
-
- using-alias-directive
-
-
- using-namespace-directive
-
-
-
-
-
- using-alias-directive
-
-
-
- using
-
-
- identifier
-
-
- =
-
-
- namespace-or-type-name
-
-
- ;
-
-
-
-
-
- using-namespace-directive
-
-
-
- using
-
-
- namespace-name
-
-
- ;
-
-
-
-
-
- namespace-member-declarations
-
-
-
- namespace-member-declaration
-
-
-
-
- namespace-member-declarations
-
-
- namespace-member-declaration
-
-
-
-
-
-
-
- namespace-member-declaration
-
-
-
- namespace-declaration
-
-
- type-declaration
-
-
-
-
-
- type-declaration
-
-
-
- class-declaration
-
-
- struct-declaration
-
-
- interface-declaration
-
-
- enum-declaration
-
-
- delegate-declaration
-
-
-
-
-
- qualified-alias-member
-
-
-
- identifier
-
-
- ::
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
- class-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- class-modifiers
-
-
-
-
-
-
- partial
-
-
-
-
- class
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
-
-
- class-base
-
-
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- class-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- class-modifiers
-
-
-
- class-modifier
-
-
-
-
- class-modifiers
-
-
- class-modifier
-
-
-
-
-
-
-
- class-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- abstract
-
-
- sealed
-
-
- static
-
-
-
-
-
- class-base
-
-
-
-
-
- :
-
-
- class-type
-
-
-
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
-
- :
-
-
- class-type
-
-
- ,
-
-
- interface-type-list
-
-
-
-
-
-
-
- interface-type-list
-
-
-
- interface-type
-
-
-
-
- interface-type-list
-
-
- ,
-
-
- interface-type
-
-
-
-
-
-
-
- class-body
-
-
-
- {
-
-
-
-
- class-member-declarations
-
-
-
-
- }
-
-
-
-
-
- class-member-declarations
-
-
-
- class-member-declaration
-
-
-
-
- class-member-declarations
-
-
- class-member-declaration
-
-
-
-
-
-
-
- class-member-declaration
-
-
-
- constant-declaration
-
-
- field-declaration
-
-
- method-declaration
-
-
- property-declaration
-
-
- event-declaration
-
-
- indexer-declaration
-
-
- operator-declaration
-
-
- constructor-declaration
-
-
- finalizer-declaration
-
-
- static-constructor-declaration
-
-
- type-declaration
-
-
-
-
-
- constant-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- constant-modifiers
-
-
-
-
- const
-
-
- type
-
-
- constant-declarators
-
-
- ;
-
-
-
-
-
- constant-modifiers
-
-
-
- constant-modifier
-
-
-
-
- constant-modifiers
-
-
- constant-modifier
-
-
-
-
-
-
-
- constant-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- field-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- field-modifiers
-
-
-
-
- type
-
-
- variable-declarators
-
-
- ;
-
-
-
-
-
- field-modifiers
-
-
-
- field-modifier
-
-
-
-
- field-modifiers
-
-
- field-modifier
-
-
-
-
-
-
-
- field-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- readonly
-
-
- volatile
-
-
-
-
-
- variable-declarators
-
-
-
- variable-declarator
-
-
-
-
- variable-declarators
-
-
- ,
-
-
- variable-declarator
-
-
-
-
-
-
-
- variable-declarator
-
-
-
- identifier
-
-
-
-
- identifier
-
-
- =
-
-
- variable-initializer
-
-
-
-
-
-
-
- variable-initializer
-
-
-
- expression
-
-
- array-initializer
-
-
-
-
-
- method-declaration
-
-
-
- method-header
-
-
- method-body
-
-
-
-
-
- method-header
-
-
-
-
-
- attributes
-
-
-
-
-
-
- method-modifiers
-
-
-
-
- return-type
-
-
- member-name
-
-
-
-
- type-parameter-list
-
-
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
-
-
-
- method-modifiers
-
-
-
- method-modifier
-
-
-
-
- method-modifiers
-
-
- method-modifier
-
-
-
-
-
-
-
- method-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- return-type
-
-
-
- type
-
-
- void
-
-
-
-
-
- member-name
-
-
-
- identifier
-
-
-
-
- interface-type
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- method-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- formal-parameter-list
-
-
-
- fixed-parameters
-
-
-
-
- fixed-parameters
-
-
- ,
-
-
- parameter-array
-
-
-
-
- parameter-array
-
-
-
-
-
- fixed-parameters
-
-
-
- fixed-parameter
-
-
-
-
- fixed-parameters
-
-
- ,
-
-
- fixed-parameter
-
-
-
-
-
-
-
- fixed-parameter
-
-
-
-
-
- attributes
-
-
-
-
-
-
- parameter-modifier
-
-
-
-
- type
-
-
- identifier
-
-
-
-
-
- parameter-modifier
-
-
-
- ref
-
-
- out
-
-
-
-
-
- parameter-array
-
-
-
-
-
- attributes
-
-
-
-
- params
-
-
- array-type
-
-
- identifier
-
-
-
-
-
- property-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- property-modifiers
-
-
-
-
- type
-
-
- member-name
-
-
- {
-
-
- accessor-declarations
-
-
- }
-
-
-
-
-
- property-modifiers
-
-
-
- property-modifier
-
-
-
-
- property-modifiers
-
-
- property-modifier
-
-
-
-
-
-
-
- property-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- accessor-declarations
-
-
-
-
-
- get-accessor-declaration
-
-
-
-
- set-accessor-declaration
-
-
-
-
-
-
-
-
- set-accessor-declaration
-
-
-
-
- get-accessor-declaration
-
-
-
-
-
-
-
-
-
- get-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- accessor-modifier
-
-
-
-
- get
-
-
- accessor-body
-
-
-
-
-
- set-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- accessor-modifier
-
-
-
-
- set
-
-
- accessor-body
-
-
-
-
-
- accessor-modifier
-
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
- protected
-
-
- internal
-
-
-
-
-
-
- internal
-
-
- protected
-
-
-
-
-
-
-
- accessor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- event-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- event-modifiers
-
-
-
-
- event
-
-
- type
-
-
- variable-declarators
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- event-modifiers
-
-
-
-
- event
-
-
- type
-
-
- member-name
-
-
- {
-
-
- event-accessor-declarations
-
-
- }
-
-
-
-
-
-
-
- event-modifiers
-
-
-
- event-modifier
-
-
-
-
- event-modifiers
-
-
- event-modifier
-
-
-
-
-
-
-
- event-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- event-accessor-declarations
-
-
-
-
-
- add-accessor-declaration
-
-
- remove-accessor-declaration
-
-
-
-
-
-
- remove-accessor-declaration
-
-
- add-accessor-declaration
-
-
-
-
-
-
-
- add-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- add
-
-
- block
-
-
-
-
-
- remove-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- remove
-
-
- block
-
-
-
-
-
- indexer-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- indexer-modifiers
-
-
-
-
- indexer-declarator
-
-
- {
-
-
- accessor-declarations
-
-
- }
-
-
-
-
-
- indexer-modifiers
-
-
-
- indexer-modifier
-
-
-
-
- indexer-modifiers
-
-
- indexer-modifier
-
-
-
-
-
-
-
- indexer-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- indexer-declarator
-
-
-
-
-
- type
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
-
-
-
-
- type
-
-
- interface-type
-
-
- .
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
-
-
-
-
-
- operator-declaration
-
-
-
-
-
- attributes
-
-
-
-
- operator-modifiers
-
-
- operator-declarator
-
-
- operator-body
-
-
-
-
-
- operator-modifiers
-
-
-
- operator-modifier
-
-
-
-
- operator-modifiers
-
-
- operator-modifier
-
-
-
-
-
-
-
- operator-modifier
-
-
-
- public
-
-
- static
-
-
- extern
-
-
-
-
-
- operator-declarator
-
-
-
- unary-operator-declarator
-
-
- binary-operator-declarator
-
-
- conversion-operator-declarator
-
-
-
-
-
- unary-operator-declarator
-
-
-
- type
-
-
- operator
-
-
- overloadable-unary-operator
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
- overloadable-unary-operator
-
-
-
- +
-
-
- -
-
-
- !
-
-
- ~
-
-
- ++
-
-
- --
-
-
- true
-
-
- false
-
-
-
-
-
- binary-operator-declarator
-
-
-
- type
-
-
- operator
-
-
- overloadable-binary-operator
-
-
- (
-
-
- type
-
-
- identifier
-
-
- ,
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
- overloadable-binary-operator
-
-
-
- +
-
-
- -
-
-
- *
-
-
- /
-
-
- %
-
-
- &
-
-
- |
-
-
- ^
-
-
- <<
-
-
- right-shift
-
-
- ==
-
-
- !=
-
-
- >
-
-
- <
-
-
- >=
-
-
- <=
-
-
-
-
-
- conversion-operator-declarator
-
-
-
-
-
- implicit
-
-
- operator
-
-
- type
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
-
- explicit
-
-
- operator
-
-
- type
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
-
-
- operator-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- constructor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- constructor-modifiers
-
-
-
-
- constructor-declarator
-
-
- constructor-body
-
-
-
-
-
- constructor-modifiers
-
-
-
- constructor-modifier
-
-
-
-
- constructor-modifiers
-
-
- constructor-modifier
-
-
-
-
-
-
-
- constructor-modifier
-
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- extern
-
-
-
-
-
- constructor-declarator
-
-
-
- identifier
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- constructor-initializer
-
-
-
-
-
-
-
- constructor-initializer
-
-
-
-
-
- :
-
-
- base
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
-
- :
-
-
- this
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
-
-
- constructor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- static-constructor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- static-constructor-modifiers
-
-
- identifier
-
-
- (
-
-
- )
-
-
- static-constructor-body
-
-
-
-
-
- static-constructor-modifiers
-
-
-
-
-
-
-
- extern
-
-
-
-
- static
-
-
-
-
-
-
- static
-
-
-
-
- extern
-
-
-
-
-
-
-
-
-
- static-constructor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- finalizer-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- extern
-
-
-
-
- ~
-
-
- identifier
-
-
- (
-
-
- )
-
-
- finalizer-body
-
-
-
-
-
- finalizer-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- struct-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- struct-modifiers
-
-
-
-
-
-
- partial
-
-
-
-
- struct
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
-
-
- struct-interfaces
-
-
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- struct-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- struct-modifiers
-
-
-
- struct-modifier
-
-
-
-
- struct-modifiers
-
-
- struct-modifier
-
-
-
-
-
-
-
- struct-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- struct-interfaces
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
- struct-body
-
-
-
- {
-
-
-
-
- struct-member-declarations
-
-
-
-
- }
-
-
-
-
-
- struct-member-declarations
-
-
-
- struct-member-declaration
-
-
-
-
- struct-member-declarations
-
-
- struct-member-declaration
-
-
-
-
-
-
-
- struct-member-declaration
-
-
-
- constant-declaration
-
-
- field-declaration
-
-
- method-declaration
-
-
- property-declaration
-
-
- event-declaration
-
-
- indexer-declaration
-
-
- operator-declaration
-
-
- constructor-declaration
-
-
- static-constructor-declaration
-
-
- type-declaration
-
-
-
-
-
- array-initializer
-
-
-
-
-
- {
-
-
-
-
- variable-initializer-list
-
-
-
-
- }
-
-
-
-
-
-
- {
-
-
- variable-initializer-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- variable-initializer-list
-
-
-
- variable-initializer
-
-
-
-
- variable-initializer-list
-
-
- ,
-
-
- variable-initializer
-
-
-
-
-
-
-
- interface-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- interface-modifiers
-
-
-
-
-
-
- partial
-
-
-
-
- interface
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
-
-
- interface-base
-
-
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- interface-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- interface-modifiers
-
-
-
- interface-modifier
-
-
-
-
- interface-modifiers
-
-
- interface-modifier
-
-
-
-
-
-
-
- interface-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- interface-base
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
- interface-body
-
-
-
- {
-
-
-
-
- interface-member-declarations
-
-
-
-
- }
-
-
-
-
-
- interface-member-declarations
-
-
-
- interface-member-declaration
-
-
-
-
- interface-member-declarations
-
-
- interface-member-declaration
-
-
-
-
-
-
-
- interface-member-declaration
-
-
-
- interface-method-declaration
-
-
- interface-property-declaration
-
-
- interface-event-declaration
-
-
- interface-indexer-declaration
-
-
-
-
-
- interface-method-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- return-type
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- ;
-
-
-
-
-
- interface-property-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- type
-
-
- identifier
-
-
- {
-
-
- interface-accessors
-
-
- }
-
-
-
-
-
- interface-accessors
-
-
-
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
-
-
-
- interface-event-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- event
-
-
- type
-
-
- identifier
-
-
- ;
-
-
-
-
-
- interface-indexer-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- type
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
- {
-
-
- interface-accessors
-
-
- }
-
-
-
-
-
- enum-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- enum-modifiers
-
-
-
-
- enum
-
-
- identifier
-
-
-
-
- enum-base
-
-
-
-
- enum-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- enum-base
-
-
-
- :
-
-
- integral-type
-
-
-
-
-
- enum-body
-
-
-
-
-
- {
-
-
-
-
- enum-member-declarations
-
-
-
-
- }
-
-
-
-
-
-
- {
-
-
- enum-member-declarations
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- enum-modifiers
-
-
-
- enum-modifier
-
-
-
-
- enum-modifiers
-
-
- enum-modifier
-
-
-
-
-
-
-
- enum-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- enum-member-declarations
-
-
-
- enum-member-declaration
-
-
-
-
- enum-member-declarations
-
-
- ,
-
-
- enum-member-declaration
-
-
-
-
-
-
-
- enum-member-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
- identifier
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- identifier
-
-
- =
-
-
- constant-expression
-
-
-
-
-
-
-
- delegate-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- delegate-modifiers
-
-
-
-
- delegate
-
-
- return-type
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- ;
-
-
-
-
-
- delegate-modifiers
-
-
-
- delegate-modifier
-
-
-
-
- delegate-modifiers
-
-
- delegate-modifier
-
-
-
-
-
-
-
- delegate-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- global-attributes
-
- global-attribute-sections
-
-
-
- global-attribute-sections
-
-
-
- global-attribute-section
-
-
-
-
- global-attribute-sections
-
-
- global-attribute-section
-
-
-
-
-
-
-
- global-attribute-section
-
-
-
-
-
- [
-
-
- global-attribute-target-specifier
-
-
- attribute-list
-
-
- ]
-
-
-
-
-
-
- [
-
-
- global-attribute-target-specifier
-
-
- attribute-list
-
-
- ,
-
-
- ]
-
-
-
-
-
-
-
- global-attribute-target-specifier
-
-
-
- global-attribute-target
-
-
- :
-
-
-
-
-
- global-attribute-target
-
-
-
- identifier
-
-
- keyword
-
-
-
-
-
- attributes
-
- attribute-sections
-
-
-
- attribute-sections
-
-
-
- attribute-section
-
-
-
-
- attribute-sections
-
-
- attribute-section
-
-
-
-
-
-
-
- attribute-section
-
-
-
-
-
- [
-
-
-
-
- attribute-target-specifier
-
-
-
-
- attribute-list
-
-
- ]
-
-
-
-
-
-
- [
-
-
-
-
- attribute-target-specifier
-
-
-
-
- attribute-list
-
-
- ,
-
-
- ]
-
-
-
-
-
-
-
- attribute-target-specifier
-
-
-
- attribute-target
-
-
- :
-
-
-
-
-
- attribute-target
-
-
-
- identifier
-
-
- keyword
-
-
-
-
-
- attribute-list
-
-
-
- attribute
-
-
-
-
- attribute-list
-
-
- ,
-
-
- attribute
-
-
-
-
-
-
-
- attribute
-
-
-
- attribute-name
-
-
-
-
- attribute-arguments
-
-
-
-
-
-
-
- attribute-name
-
- type-name
-
-
-
- attribute-arguments
-
-
-
-
-
- (
-
-
-
-
- positional-argument-list
-
-
-
-
- )
-
-
-
-
-
-
- (
-
-
- positional-argument-list
-
-
- ,
-
-
- named-argument-list
-
-
- )
-
-
-
-
-
-
- (
-
-
- named-argument-list
-
-
- )
-
-
-
-
-
-
-
- positional-argument-list
-
-
-
- positional-argument
-
-
-
-
- positional-argument-list
-
-
- ,
-
-
- positional-argument
-
-
-
-
-
-
-
- positional-argument
-
- attribute-argument-expression
-
-
-
- named-argument-list
-
-
-
- named-argument
-
-
-
-
- named-argument-list
-
-
- ,
-
-
- named-argument
-
-
-
-
-
-
-
- named-argument
-
-
-
- identifier
-
-
- =
-
-
- attribute-argument-expression
-
-
-
-
-
- attribute-argument-expression
-
- expression
-
-
-
- type-parameter-list
-
-
-
- <
-
-
- type-parameters
-
-
- >
-
-
-
-
-
- type-parameters
-
-
-
-
-
-
-
- attributes
-
-
-
-
- type-parameter
-
-
-
-
-
-
- type-parameters
-
-
- ,
-
-
-
-
- attributes
-
-
-
-
- type-parameter
-
-
-
-
-
-
-
- type-parameter
-
- identifier
-
-
-
- type-argument-list
-
-
-
- <
-
-
- type-arguments
-
-
- >
-
-
-
-
-
- type-arguments
-
-
-
- type-argument
-
-
-
-
- type-arguments
-
-
- ,
-
-
- type-argument
-
-
-
-
-
-
-
- type-argument
-
- type
-
-
-
- type-parameter-constraints-clauses
-
-
-
- type-parameter-constraints-clause
-
-
-
-
- type-parameter-constraints-clauses
-
-
- type-parameter-constraints-clause
-
-
-
-
-
-
-
- type-parameter-constraints-clause
-
-
-
- where
-
-
- type-parameter
-
-
- :
-
-
- type-parameter-constraints
-
-
-
-
-
- type-parameter-constraints
-
-
-
- primary-constraint
-
-
- secondary-constraints
-
-
- constructor-constraint
-
-
-
-
- primary-constraint
-
-
- ,
-
-
- secondary-constraints
-
-
-
-
-
-
- primary-constraint
-
-
- ,
-
-
- constructor-constraint
-
-
-
-
-
-
- secondary-constraints
-
-
- ,
-
-
- constructor-constraint
-
-
-
-
-
-
- primary-constraint
-
-
- ,
-
-
- secondary-constraints
-
-
- ,
-
-
- constructor-constraint
-
-
-
-
-
-
-
- primary-constraint
-
-
-
- class-type
-
-
- class
-
-
- struct
-
-
-
-
-
- secondary-constraints
-
-
-
- interface-type
-
-
- type-parameter
-
-
-
-
- secondary-constraints
-
-
- ,
-
-
- interface-type
-
-
-
-
-
-
- secondary-constraints
-
-
- ,
-
-
- type-parameter
-
-
-
-
-
-
-
- constructor-constraint
-
-
-
- new
-
-
- (
-
-
- )
-
-
-
-
-
- keyword
-
-
-
- abstract
-
-
- as
-
-
- base
-
-
- bool
-
-
- break
-
-
- byte
-
-
- case
-
-
- catch
-
-
- char
-
-
- checked
-
-
- class
-
-
- const
-
-
- continue
-
-
- decimal
-
-
- default
-
-
- delegate
-
-
- do
-
-
- double
-
-
- else
-
-
- enum
-
-
- event
-
-
- explicit
-
-
- extern
-
-
- false
-
-
- finally
-
-
- fixed
-
-
- float
-
-
- for
-
-
- foreach
-
-
- goto
-
-
- if
-
-
- implicit
-
-
- in
-
-
- int
-
-
- interface
-
-
- internal
-
-
- is
-
-
- lock
-
-
- long
-
-
- namespace
-
-
- new
-
-
- null
-
-
- object
-
-
- operator
-
-
- out
-
-
- override
-
-
- params
-
-
- private
-
-
- protected
-
-
- public
-
-
- readonly
-
-
- ref
-
-
- return
-
-
- sbyte
-
-
- sealed
-
-
- short
-
-
- sizeof
-
-
- stackalloc
-
-
- static
-
-
- string
-
-
- struct
-
-
- switch
-
-
- this
-
-
- throw
-
-
- true
-
-
- try
-
-
- typeof
-
-
- uint
-
-
- ulong
-
-
- unchecked
-
-
- unsafe
-
-
- ushort
-
-
- using
-
-
- virtual
-
-
- void
-
-
- volatile
-
-
- while
-
-
- get
-
-
- set
-
-
- yield
-
-
- add
-
-
- remove
-
-
- alias
-
-
- partial
-
-
- where
-
-
-
-
-
\ No newline at end of file
+
+
+ compilation-unit
+
+
+
+
+
+ extern-alias-directives
+
+
+
+
+
+
+ using-directives
+
+
+
+
+
+
+ global-attributes
+
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+
+
+
+
+ namespace-name
+
+ namespace-or-type-name
+
+
+
+ type-name
+
+ namespace-or-type-name
+
+
+
+ namespace-or-type-name
+
+
+
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+ qualified-alias-member
+
+
+
+
+ namespace-or-type-name
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+
+ type
+
+
+
+ value-type
+
+
+ reference-type
+
+
+ type-parameter
+
+
+
+
+
+ value-type
+
+
+
+ struct-type
+
+
+ enum-type
+
+
+
+
+
+ struct-type
+
+
+
+ type-name
+
+
+ simple-type
+
+
+ nullable-type
+
+
+
+
+
+ simple-type
+
+
+
+ numeric-type
+
+
+ bool
+
+
+
+
+
+ numeric-type
+
+
+
+ integral-type
+
+
+ floating-point-type
+
+
+ decimal
+
+
+
+
+
+ integral-type
+
+
+
+ sbyte
+
+
+ byte
+
+
+ short
+
+
+ ushort
+
+
+ int
+
+
+ uint
+
+
+ long
+
+
+ ulong
+
+
+ char
+
+
+
+
+
+ floating-point-type
+
+
+
+ float
+
+
+ double
+
+
+
+
+
+ enum-type
+
+ type-name
+
+
+
+ nullable-type
+
+
+
+ non-nullable-value-type
+
+
+ ?
+
+
+
+
+
+ non-nullable-value-type
+
+
+
+ enum-type
+
+
+ type-name
+
+
+ simple-type
+
+
+
+
+
+ reference-type
+
+
+
+ class-type
+
+
+ interface-type
+
+
+ array-type
+
+
+ delegate-type
+
+
+
+
+
+ class-type
+
+
+
+ type-name
+
+
+ object
+
+
+ string
+
+
+
+
+
+ interface-type
+
+ type-name
+
+
+
+ array-type
+
+
+
+ non-array-type
+
+
+ rank-specifiers
+
+
+
+
+
+ non-array-type
+
+
+
+ value-type
+
+
+ class-type
+
+
+ interface-type
+
+
+ delegate-type
+
+
+ type-parameter
+
+
+
+
+
+ rank-specifiers
+
+
+
+ rank-specifier
+
+
+
+
+ rank-specifiers
+
+
+ rank-specifier
+
+
+
+
+
+
+
+ rank-specifier
+
+
+
+ [
+
+
+
+
+ dim-separators
+
+
+
+
+ ]
+
+
+
+
+
+ dim-separators
+
+
+
+ ,
+
+
+
+
+ dim-separators
+
+
+ ,
+
+
+
+
+
+
+
+ delegate-type
+
+ type-name
+
+
+
+ variable-reference
+
+ expression
+
+
+
+ argument-list
+
+
+
+ argument
+
+
+
+
+ argument-list
+
+
+ ,
+
+
+ argument
+
+
+
+
+
+
+
+ argument
+
+
+
+ expression
+
+
+
+
+ ref
+
+
+ variable-reference
+
+
+
+
+
+
+ out
+
+
+ variable-reference
+
+
+
+
+
+
+
+ primary-expression
+
+
+
+ array-creation-expression
+
+
+ primary-no-array-creation-expression
+
+
+
+
+
+ primary-no-array-creation-expression
+
+
+
+ literal
+
+
+ simple-name
+
+
+ parenthesized-expression
+
+
+ member-access
+
+
+ invocation-expression
+
+
+ element-access
+
+
+ this-access
+
+
+ base-access
+
+
+ post-increment-expression
+
+
+ post-decrement-expression
+
+
+ object-creation-expression
+
+
+ delegate-creation-expression
+
+
+ typeof-expression
+
+
+ checked-expression
+
+
+ unchecked-expression
+
+
+ default-value-expression
+
+
+ anonymous-method-expression
+
+
+
+
+
+ simple-name
+
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+ parenthesized-expression
+
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ member-access
+
+
+
+
+
+ primary-expression
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+ predefined-type
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+ qualified-alias-member
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+
+ predefined-type
+
+
+
+ bool
+
+
+ byte
+
+
+ char
+
+
+ decimal
+
+
+ double
+
+
+ float
+
+
+ int
+
+
+ long
+
+
+ object
+
+
+ sbyte
+
+
+ short
+
+
+ string
+
+
+ uint
+
+
+ ulong
+
+
+ ushort
+
+
+
+
+
+ invocation-expression
+
+
+
+ primary-expression
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+ element-access
+
+
+
+ primary-no-array-creation-expression
+
+
+ [
+
+
+ expression-list
+
+
+ ]
+
+
+
+
+
+ expression-list
+
+
+
+ expression
+
+
+
+
+ expression-list
+
+
+ ,
+
+
+ expression
+
+
+
+
+
+
+
+ this-access
+
+ this
+
+
+
+ base-access
+
+
+
+
+
+ base
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+ base
+
+
+ [
+
+
+ expression-list
+
+
+ ]
+
+
+
+
+
+
+
+ post-increment-expression
+
+
+
+ primary-expression
+
+
+ ++
+
+
+
+
+
+ post-decrement-expression
+
+
+
+ primary-expression
+
+
+ --
+
+
+
+
+
+ object-creation-expression
+
+
+
+ new
+
+
+ type
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+ array-creation-expression
+
+
+
+
+
+ new
+
+
+ non-array-type
+
+
+ [
+
+
+ expression-list
+
+
+ ]
+
+
+
+
+ rank-specifiers
+
+
+
+
+
+
+ array-initializer
+
+
+
+
+
+
+
+
+ new
+
+
+ array-type
+
+
+ array-initializer
+
+
+
+
+
+
+
+ delegate-creation-expression
+
+
+
+ new
+
+
+ delegate-type
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ typeof-expression
+
+
+
+
+
+ typeof
+
+
+ (
+
+
+ type
+
+
+ )
+
+
+
+
+
+
+ typeof
+
+
+ (
+
+
+ unbound-type-name
+
+
+ )
+
+
+
+
+
+
+ typeof
+
+
+ (
+
+
+ void
+
+
+ )
+
+
+
+
+
+
+
+ unbound-type-name
+
+
+
+
+
+ identifier
+
+
+
+
+ generic-dimension-specifier
+
+
+
+
+
+
+
+
+ identifier
+
+
+ ::
+
+
+ identifier
+
+
+
+
+ generic-dimension-specifier
+
+
+
+
+
+
+
+
+ unbound-type-name
+
+
+ .
+
+
+ identifier
+
+
+
+
+ generic-dimension-specifier
+
+
+
+
+
+
+
+
+
+ generic-dimension-specifier
+
+
+
+ <
+
+
+
+
+ commas
+
+
+
+
+ >
+
+
+
+
+
+ commas
+
+
+
+ ,
+
+
+
+
+ commas
+
+
+ ,
+
+
+
+
+
+
+
+ checked-expression
+
+
+
+ checked
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ unchecked-expression
+
+
+
+ unchecked
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ default-value-expression
+
+
+
+ default
+
+
+ (
+
+
+ type
+
+
+ )
+
+
+
+
+
+ anonymous-method-expression
+
+
+
+ delegate
+
+
+
+
+ anonymous-method-signature
+
+
+
+
+ block
+
+
+
+
+
+ anonymous-method-signature
+
+
+
+ (
+
+
+
+
+ anonymous-method-parameter-list
+
+
+
+
+ )
+
+
+
+
+
+ anonymous-method-parameter-list
+
+
+
+ anonymous-method-parameter
+
+
+
+
+ anonymous-method-parameter-list
+
+
+ ,
+
+
+ anonymous-method-parameter
+
+
+
+
+
+
+
+ anonymous-method-parameter
+
+
+
+
+
+ parameter-modifier
+
+
+
+
+ type
+
+
+ identifier
+
+
+
+
+
+ unary-expression
+
+
+
+ primary-expression
+
+
+
+
+ +
+
+
+ unary-expression
+
+
+
+
+
+
+ -
+
+
+ unary-expression
+
+
+
+
+
+
+ !
+
+
+ unary-expression
+
+
+
+
+
+
+ ~
+
+
+ unary-expression
+
+
+
+
+ pre-increment-expression
+
+
+ pre-decrement-expression
+
+
+ cast-expression
+
+
+
+
+
+ pre-increment-expression
+
+
+
+ ++
+
+
+ unary-expression
+
+
+
+
+
+ pre-decrement-expression
+
+
+
+ --
+
+
+ unary-expression
+
+
+
+
+
+ cast-expression
+
+
+
+ (
+
+
+ type
+
+
+ )
+
+
+ unary-expression
+
+
+
+
+
+ multiplicative-expression
+
+
+
+ unary-expression
+
+
+
+
+ multiplicative-expression
+
+
+ *
+
+
+ unary-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ /
+
+
+ unary-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ %
+
+
+ unary-expression
+
+
+
+
+
+
+
+ additive-expression
+
+
+
+ multiplicative-expression
+
+
+
+
+ additive-expression
+
+
+ +
+
+
+ multiplicative-expression
+
+
+
+
+
+
+ additive-expression
+
+
+ -
+
+
+ multiplicative-expression
+
+
+
+
+
+
+
+ shift-expression
+
+
+
+ additive-expression
+
+
+
+
+ shift-expression
+
+
+ <<
+
+
+ additive-expression
+
+
+
+
+
+
+ shift-expression
+
+
+ right-shift
+
+
+ additive-expression
+
+
+
+
+
+
+
+ relational-expression
+
+
+
+ shift-expression
+
+
+
+
+ relational-expression
+
+
+ <
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ <=
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >=
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ is
+
+
+ type
+
+
+
+
+
+
+ relational-expression
+
+
+ as
+
+
+ type
+
+
+
+
+
+
+
+ equality-expression
+
+
+
+ relational-expression
+
+
+
+
+ equality-expression
+
+
+ ==
+
+
+ relational-expression
+
+
+
+
+
+
+ equality-expression
+
+
+ !=
+
+
+ relational-expression
+
+
+
+
+
+
+
+ and-expression
+
+
+
+ equality-expression
+
+
+
+
+ and-expression
+
+
+ &
+
+
+ equality-expression
+
+
+
+
+
+
+
+ exclusive-or-expression
+
+
+
+ and-expression
+
+
+
+
+ exclusive-or-expression
+
+
+ ^
+
+
+ and-expression
+
+
+
+
+
+
+
+ inclusive-or-expression
+
+
+
+ exclusive-or-expression
+
+
+
+
+ inclusive-or-expression
+
+
+ |
+
+
+ exclusive-or-expression
+
+
+
+
+
+
+
+ conditional-and-expression
+
+
+
+ inclusive-or-expression
+
+
+
+
+ conditional-and-expression
+
+
+ &&
+
+
+ inclusive-or-expression
+
+
+
+
+
+
+
+ conditional-or-expression
+
+
+
+ conditional-and-expression
+
+
+
+
+ conditional-or-expression
+
+
+ ||
+
+
+ conditional-and-expression
+
+
+
+
+
+
+
+ null-coalescing-expression
+
+
+
+ conditional-or-expression
+
+
+
+
+ conditional-or-expression
+
+
+ ??
+
+
+ null-coalescing-expression
+
+
+
+
+
+
+
+ conditional-expression
+
+
+
+ null-coalescing-expression
+
+
+
+
+ null-coalescing-expression
+
+
+ ?
+
+
+ expression
+
+
+ :
+
+
+ expression
+
+
+
+
+
+
+
+ assignment
+
+
+
+ unary-expression
+
+
+ assignment-operator
+
+
+ expression
+
+
+
+
+
+ assignment-operator
+
+
+
+ =
+
+
+ +=
+
+
+ -=
+
+
+ *=
+
+
+ /=
+
+
+ %=
+
+
+ &=
+
+
+ |=
+
+
+ ^=
+
+
+ <<=
+
+
+ right-shift-assignment
+
+
+
+
+
+ expression
+
+
+
+ conditional-expression
+
+
+ assignment
+
+
+
+
+
+ constant-expression
+
+ expression
+
+
+
+ boolean-expression
+
+ expression
+
+
+
+ statement
+
+
+
+ labeled-statement
+
+
+ declaration-statement
+
+
+ embedded-statement
+
+
+
+
+
+ embedded-statement
+
+
+
+ block
+
+
+ empty-statement
+
+
+ expression-statement
+
+
+ selection-statement
+
+
+ iteration-statement
+
+
+ jump-statement
+
+
+ try-statement
+
+
+ checked-statement
+
+
+ unchecked-statement
+
+
+ lock-statement
+
+
+ using-statement
+
+
+ yield-statement
+
+
+
+
+
+ block
+
+
+
+ {
+
+
+
+
+ statement-list
+
+
+
+
+ }
+
+
+
+
+
+ statement-list
+
+
+
+ statement
+
+
+
+
+ statement-list
+
+
+ statement
+
+
+
+
+
+
+
+ empty-statement
+
+ ;
+
+
+
+ labeled-statement
+
+
+
+ identifier
+
+
+ :
+
+
+ statement
+
+
+
+
+
+ declaration-statement
+
+
+
+
+
+ local-variable-declaration
+
+
+ ;
+
+
+
+
+
+
+ local-constant-declaration
+
+
+ ;
+
+
+
+
+
+
+
+ local-variable-declaration
+
+
+
+ type
+
+
+ local-variable-declarators
+
+
+
+
+
+ local-variable-declarators
+
+
+
+ local-variable-declarator
+
+
+
+
+ local-variable-declarators
+
+
+ ,
+
+
+ local-variable-declarator
+
+
+
+
+
+
+
+ local-variable-declarator
+
+
+
+ identifier
+
+
+
+
+ identifier
+
+
+ =
+
+
+ local-variable-initializer
+
+
+
+
+
+
+
+ local-variable-initializer
+
+
+
+ expression
+
+
+ array-initializer
+
+
+
+
+
+ local-constant-declaration
+
+
+
+ const
+
+
+ type
+
+
+ constant-declarators
+
+
+
+
+
+ constant-declarators
+
+
+
+ constant-declarator
+
+
+
+
+ constant-declarators
+
+
+ ,
+
+
+ constant-declarator
+
+
+
+
+
+
+
+ constant-declarator
+
+
+
+ identifier
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+ expression-statement
+
+
+
+ statement-expression
+
+
+ ;
+
+
+
+
+
+ statement-expression
+
+
+
+ invocation-expression
+
+
+ object-creation-expression
+
+
+ assignment
+
+
+ post-increment-expression
+
+
+ post-decrement-expression
+
+
+ pre-increment-expression
+
+
+ pre-decrement-expression
+
+
+
+
+
+ selection-statement
+
+
+
+ if-statement
+
+
+ switch-statement
+
+
+
+
+
+ if-statement
+
+
+
+
+
+ if
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+
+ if
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+ else
+
+
+ embedded-statement
+
+
+
+
+
+
+
+ switch-statement
+
+
+
+ switch
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ switch-block
+
+
+
+
+
+ switch-block
+
+
+
+ {
+
+
+
+
+ switch-sections
+
+
+
+
+ }
+
+
+
+
+
+ switch-sections
+
+
+
+ switch-section
+
+
+
+
+ switch-sections
+
+
+ switch-section
+
+
+
+
+
+
+
+ switch-section
+
+
+
+ switch-labels
+
+
+ statement-list
+
+
+
+
+
+ switch-labels
+
+
+
+ switch-label
+
+
+
+
+ switch-labels
+
+
+ switch-label
+
+
+
+
+
+
+
+ switch-label
+
+
+
+
+
+ case
+
+
+ constant-expression
+
+
+ :
+
+
+
+
+
+
+ default
+
+
+ :
+
+
+
+
+
+
+
+ iteration-statement
+
+
+
+ while-statement
+
+
+ do-statement
+
+
+ for-statement
+
+
+ foreach-statement
+
+
+
+
+
+ while-statement
+
+
+
+ while
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ do-statement
+
+
+
+ do
+
+
+ embedded-statement
+
+
+ while
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ ;
+
+
+
+
+
+ for-statement
+
+
+
+ for
+
+
+ (
+
+
+
+
+ for-initializer
+
+
+
+
+ ;
+
+
+
+
+ for-condition
+
+
+
+
+ ;
+
+
+
+
+ for-iterator
+
+
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ for-initializer
+
+
+
+ local-variable-declaration
+
+
+ statement-expression-list
+
+
+
+
+
+ for-condition
+
+ boolean-expression
+
+
+
+ for-iterator
+
+ statement-expression-list
+
+
+
+ statement-expression-list
+
+
+
+ statement-expression
+
+
+
+
+ statement-expression-list
+
+
+ ,
+
+
+ statement-expression
+
+
+
+
+
+
+
+ foreach-statement
+
+
+
+ foreach
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ in
+
+
+ expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ jump-statement
+
+
+
+ break-statement
+
+
+ continue-statement
+
+
+ goto-statement
+
+
+ return-statement
+
+
+ throw-statement
+
+
+
+
+
+ break-statement
+
+
+
+ break
+
+
+ ;
+
+
+
+
+
+ continue-statement
+
+
+
+ continue
+
+
+ ;
+
+
+
+
+
+ goto-statement
+
+
+
+
+
+ goto
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+
+ goto
+
+
+ case
+
+
+ constant-expression
+
+
+ ;
+
+
+
+
+
+
+ goto
+
+
+ default
+
+
+ ;
+
+
+
+
+
+
+
+ return-statement
+
+
+
+ return
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+ throw-statement
+
+
+
+ throw
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+ try-statement
+
+
+
+
+
+ try
+
+
+ block
+
+
+ catch-clauses
+
+
+
+
+
+
+ try
+
+
+ block
+
+
+
+
+ catch-clauses
+
+
+
+
+ finally-clause
+
+
+
+
+
+
+
+ catch-clauses
+
+
+
+ specific-catch-clauses
+
+
+
+
+
+
+ specific-catch-clauses
+
+
+
+
+ general-catch-clause
+
+
+
+
+
+
+
+ specific-catch-clauses
+
+
+
+ specific-catch-clause
+
+
+
+
+ specific-catch-clauses
+
+
+ specific-catch-clause
+
+
+
+
+
+
+
+ specific-catch-clause
+
+
+
+ catch
+
+
+ (
+
+
+ class-type
+
+
+
+
+ identifier
+
+
+
+
+ )
+
+
+ block
+
+
+
+
+
+ general-catch-clause
+
+
+
+ catch
+
+
+ block
+
+
+
+
+
+ finally-clause
+
+
+
+ finally
+
+
+ block
+
+
+
+
+
+ checked-statement
+
+
+
+ checked
+
+
+ block
+
+
+
+
+
+ unchecked-statement
+
+
+
+ unchecked
+
+
+ block
+
+
+
+
+
+ lock-statement
+
+
+
+ lock
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ using-statement
+
+
+
+ using
+
+
+ (
+
+
+ resource-acquisition
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ resource-acquisition
+
+
+
+ local-variable-declaration
+
+
+ expression
+
+
+
+
+
+ yield-statement
+
+
+
+
+
+ yield
+
+
+ return
+
+
+ expression
+
+
+ ;
+
+
+
+
+
+
+ yield
+
+
+ break
+
+
+ ;
+
+
+
+
+
+
+
+ namespace-declaration
+
+
+
+ namespace
+
+
+ qualified-identifier
+
+
+ namespace-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ qualified-identifier
+
+
+
+ identifier
+
+
+
+
+ qualified-identifier
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ namespace-body
+
+
+
+ {
+
+
+
+
+ extern-alias-directives
+
+
+
+
+
+
+ using-directives
+
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ extern-alias-directives
+
+
+
+ extern-alias-directive
+
+
+
+
+ extern-alias-directives
+
+
+ extern-alias-directive
+
+
+
+
+
+
+
+ extern-alias-directive
+
+
+
+ extern
+
+
+ alias
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+ using-directives
+
+
+
+ using-directive
+
+
+
+
+ using-directives
+
+
+ using-directive
+
+
+
+
+
+
+
+ using-directive
+
+
+
+ using-alias-directive
+
+
+ using-namespace-directive
+
+
+
+
+
+ using-alias-directive
+
+
+
+ using
+
+
+ identifier
+
+
+ =
+
+
+ namespace-or-type-name
+
+
+ ;
+
+
+
+
+
+ using-namespace-directive
+
+
+
+ using
+
+
+ namespace-name
+
+
+ ;
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+ namespace-member-declaration
+
+
+
+
+ namespace-member-declarations
+
+
+ namespace-member-declaration
+
+
+
+
+
+
+
+ namespace-member-declaration
+
+
+
+ namespace-declaration
+
+
+ type-declaration
+
+
+
+
+
+ type-declaration
+
+
+
+ class-declaration
+
+
+ struct-declaration
+
+
+ interface-declaration
+
+
+ enum-declaration
+
+
+ delegate-declaration
+
+
+
+
+
+ qualified-alias-member
+
+
+
+ identifier
+
+
+ ::
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+ class-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ class-modifiers
+
+
+
+
+
+
+ partial
+
+
+
+
+ class
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+
+
+ class-base
+
+
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ class-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ class-modifiers
+
+
+
+ class-modifier
+
+
+
+
+ class-modifiers
+
+
+ class-modifier
+
+
+
+
+
+
+
+ class-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ abstract
+
+
+ sealed
+
+
+ static
+
+
+
+
+
+ class-base
+
+
+
+
+
+ :
+
+
+ class-type
+
+
+
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+
+ :
+
+
+ class-type
+
+
+ ,
+
+
+ interface-type-list
+
+
+
+
+
+
+
+ interface-type-list
+
+
+
+ interface-type
+
+
+
+
+ interface-type-list
+
+
+ ,
+
+
+ interface-type
+
+
+
+
+
+
+
+ class-body
+
+
+
+ {
+
+
+
+
+ class-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ class-member-declarations
+
+
+
+ class-member-declaration
+
+
+
+
+ class-member-declarations
+
+
+ class-member-declaration
+
+
+
+
+
+
+
+ class-member-declaration
+
+
+
+ constant-declaration
+
+
+ field-declaration
+
+
+ method-declaration
+
+
+ property-declaration
+
+
+ event-declaration
+
+
+ indexer-declaration
+
+
+ operator-declaration
+
+
+ constructor-declaration
+
+
+ finalizer-declaration
+
+
+ static-constructor-declaration
+
+
+ type-declaration
+
+
+
+
+
+ constant-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ constant-modifiers
+
+
+
+
+ const
+
+
+ type
+
+
+ constant-declarators
+
+
+ ;
+
+
+
+
+
+ constant-modifiers
+
+
+
+ constant-modifier
+
+
+
+
+ constant-modifiers
+
+
+ constant-modifier
+
+
+
+
+
+
+
+ constant-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ field-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ field-modifiers
+
+
+
+
+ type
+
+
+ variable-declarators
+
+
+ ;
+
+
+
+
+
+ field-modifiers
+
+
+
+ field-modifier
+
+
+
+
+ field-modifiers
+
+
+ field-modifier
+
+
+
+
+
+
+
+ field-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ readonly
+
+
+ volatile
+
+
+
+
+
+ variable-declarators
+
+
+
+ variable-declarator
+
+
+
+
+ variable-declarators
+
+
+ ,
+
+
+ variable-declarator
+
+
+
+
+
+
+
+ variable-declarator
+
+
+
+ identifier
+
+
+
+
+ identifier
+
+
+ =
+
+
+ variable-initializer
+
+
+
+
+
+
+
+ variable-initializer
+
+
+
+ expression
+
+
+ array-initializer
+
+
+
+
+
+ method-declaration
+
+
+
+ method-header
+
+
+ method-body
+
+
+
+
+
+ method-header
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ method-modifiers
+
+
+
+
+ return-type
+
+
+ member-name
+
+
+
+
+ type-parameter-list
+
+
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+
+
+
+ method-modifiers
+
+
+
+ method-modifier
+
+
+
+
+ method-modifiers
+
+
+ method-modifier
+
+
+
+
+
+
+
+ method-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ return-type
+
+
+
+ type
+
+
+ void
+
+
+
+
+
+ member-name
+
+
+
+ identifier
+
+
+
+
+ interface-type
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ method-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ formal-parameter-list
+
+
+
+ fixed-parameters
+
+
+
+
+ fixed-parameters
+
+
+ ,
+
+
+ parameter-array
+
+
+
+
+ parameter-array
+
+
+
+
+
+ fixed-parameters
+
+
+
+ fixed-parameter
+
+
+
+
+ fixed-parameters
+
+
+ ,
+
+
+ fixed-parameter
+
+
+
+
+
+
+
+ fixed-parameter
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ parameter-modifier
+
+
+
+
+ type
+
+
+ identifier
+
+
+
+
+
+ parameter-modifier
+
+
+
+ ref
+
+
+ out
+
+
+
+
+
+ parameter-array
+
+
+
+
+
+ attributes
+
+
+
+
+ params
+
+
+ array-type
+
+
+ identifier
+
+
+
+
+
+ property-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ property-modifiers
+
+
+
+
+ type
+
+
+ member-name
+
+
+ {
+
+
+ accessor-declarations
+
+
+ }
+
+
+
+
+
+ property-modifiers
+
+
+
+ property-modifier
+
+
+
+
+ property-modifiers
+
+
+ property-modifier
+
+
+
+
+
+
+
+ property-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ accessor-declarations
+
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ accessor-modifier
+
+
+
+
+ get
+
+
+ accessor-body
+
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ accessor-modifier
+
+
+
+
+ set
+
+
+ accessor-body
+
+
+
+
+
+ accessor-modifier
+
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+ protected
+
+
+ internal
+
+
+
+
+
+
+ internal
+
+
+ protected
+
+
+
+
+
+
+
+ accessor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ event-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ event-modifiers
+
+
+
+
+ event
+
+
+ type
+
+
+ variable-declarators
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ event-modifiers
+
+
+
+
+ event
+
+
+ type
+
+
+ member-name
+
+
+ {
+
+
+ event-accessor-declarations
+
+
+ }
+
+
+
+
+
+
+
+ event-modifiers
+
+
+
+ event-modifier
+
+
+
+
+ event-modifiers
+
+
+ event-modifier
+
+
+
+
+
+
+
+ event-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ event-accessor-declarations
+
+
+
+
+
+ add-accessor-declaration
+
+
+ remove-accessor-declaration
+
+
+
+
+
+
+ remove-accessor-declaration
+
+
+ add-accessor-declaration
+
+
+
+
+
+
+
+ add-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ add
+
+
+ block
+
+
+
+
+
+ remove-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ remove
+
+
+ block
+
+
+
+
+
+ indexer-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ indexer-modifiers
+
+
+
+
+ indexer-declarator
+
+
+ {
+
+
+ accessor-declarations
+
+
+ }
+
+
+
+
+
+ indexer-modifiers
+
+
+
+ indexer-modifier
+
+
+
+
+ indexer-modifiers
+
+
+ indexer-modifier
+
+
+
+
+
+
+
+ indexer-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ indexer-declarator
+
+
+
+
+
+ type
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+
+
+
+
+ type
+
+
+ interface-type
+
+
+ .
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+
+
+
+
+
+ operator-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ operator-modifiers
+
+
+ operator-declarator
+
+
+ operator-body
+
+
+
+
+
+ operator-modifiers
+
+
+
+ operator-modifier
+
+
+
+
+ operator-modifiers
+
+
+ operator-modifier
+
+
+
+
+
+
+
+ operator-modifier
+
+
+
+ public
+
+
+ static
+
+
+ extern
+
+
+
+
+
+ operator-declarator
+
+
+
+ unary-operator-declarator
+
+
+ binary-operator-declarator
+
+
+ conversion-operator-declarator
+
+
+
+
+
+ unary-operator-declarator
+
+
+
+ type
+
+
+ operator
+
+
+ overloadable-unary-operator
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+ overloadable-unary-operator
+
+
+
+ +
+
+
+ -
+
+
+ !
+
+
+ ~
+
+
+ ++
+
+
+ --
+
+
+ true
+
+
+ false
+
+
+
+
+
+ binary-operator-declarator
+
+
+
+ type
+
+
+ operator
+
+
+ overloadable-binary-operator
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ ,
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+ overloadable-binary-operator
+
+
+
+ +
+
+
+ -
+
+
+ *
+
+
+ /
+
+
+ %
+
+
+ &
+
+
+ |
+
+
+ ^
+
+
+ <<
+
+
+ right-shift
+
+
+ ==
+
+
+ !=
+
+
+ >
+
+
+ <
+
+
+ >=
+
+
+ <=
+
+
+
+
+
+ conversion-operator-declarator
+
+
+
+
+
+ implicit
+
+
+ operator
+
+
+ type
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+
+ explicit
+
+
+ operator
+
+
+ type
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+
+
+ operator-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ constructor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ constructor-modifiers
+
+
+
+
+ constructor-declarator
+
+
+ constructor-body
+
+
+
+
+
+ constructor-modifiers
+
+
+
+ constructor-modifier
+
+
+
+
+ constructor-modifiers
+
+
+ constructor-modifier
+
+
+
+
+
+
+
+ constructor-modifier
+
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ extern
+
+
+
+
+
+ constructor-declarator
+
+
+
+ identifier
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ constructor-initializer
+
+
+
+
+
+
+
+ constructor-initializer
+
+
+
+
+
+ :
+
+
+ base
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+ :
+
+
+ this
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+
+ constructor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ static-constructor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ static-constructor-modifiers
+
+
+ identifier
+
+
+ (
+
+
+ )
+
+
+ static-constructor-body
+
+
+
+
+
+ static-constructor-modifiers
+
+
+
+
+
+
+
+ extern
+
+
+
+
+ static
+
+
+
+
+
+
+ static
+
+
+
+
+ extern
+
+
+
+
+
+
+
+
+
+ static-constructor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ finalizer-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ extern
+
+
+
+
+ ~
+
+
+ identifier
+
+
+ (
+
+
+ )
+
+
+ finalizer-body
+
+
+
+
+
+ finalizer-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ struct-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ struct-modifiers
+
+
+
+
+
+
+ partial
+
+
+
+
+ struct
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+
+
+ struct-interfaces
+
+
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ struct-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ struct-modifiers
+
+
+
+ struct-modifier
+
+
+
+
+ struct-modifiers
+
+
+ struct-modifier
+
+
+
+
+
+
+
+ struct-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ struct-interfaces
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+ struct-body
+
+
+
+ {
+
+
+
+
+ struct-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ struct-member-declarations
+
+
+
+ struct-member-declaration
+
+
+
+
+ struct-member-declarations
+
+
+ struct-member-declaration
+
+
+
+
+
+
+
+ struct-member-declaration
+
+
+
+ constant-declaration
+
+
+ field-declaration
+
+
+ method-declaration
+
+
+ property-declaration
+
+
+ event-declaration
+
+
+ indexer-declaration
+
+
+ operator-declaration
+
+
+ constructor-declaration
+
+
+ static-constructor-declaration
+
+
+ type-declaration
+
+
+
+
+
+ array-initializer
+
+
+
+
+
+ {
+
+
+
+
+ variable-initializer-list
+
+
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ variable-initializer-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ variable-initializer-list
+
+
+
+ variable-initializer
+
+
+
+
+ variable-initializer-list
+
+
+ ,
+
+
+ variable-initializer
+
+
+
+
+
+
+
+ interface-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ interface-modifiers
+
+
+
+
+
+
+ partial
+
+
+
+
+ interface
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+
+
+ interface-base
+
+
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ interface-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ interface-modifiers
+
+
+
+ interface-modifier
+
+
+
+
+ interface-modifiers
+
+
+ interface-modifier
+
+
+
+
+
+
+
+ interface-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ interface-base
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+ interface-body
+
+
+
+ {
+
+
+
+
+ interface-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ interface-member-declarations
+
+
+
+ interface-member-declaration
+
+
+
+
+ interface-member-declarations
+
+
+ interface-member-declaration
+
+
+
+
+
+
+
+ interface-member-declaration
+
+
+
+ interface-method-declaration
+
+
+ interface-property-declaration
+
+
+ interface-event-declaration
+
+
+ interface-indexer-declaration
+
+
+
+
+
+ interface-method-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ return-type
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ ;
+
+
+
+
+
+ interface-property-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ type
+
+
+ identifier
+
+
+ {
+
+
+ interface-accessors
+
+
+ }
+
+
+
+
+
+ interface-accessors
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+
+
+
+ interface-event-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ event
+
+
+ type
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+ interface-indexer-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ type
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+ {
+
+
+ interface-accessors
+
+
+ }
+
+
+
+
+
+ enum-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ enum-modifiers
+
+
+
+
+ enum
+
+
+ identifier
+
+
+
+
+ enum-base
+
+
+
+
+ enum-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ enum-base
+
+
+
+ :
+
+
+ integral-type
+
+
+
+
+
+ enum-body
+
+
+
+
+
+ {
+
+
+
+
+ enum-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ enum-member-declarations
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ enum-modifiers
+
+
+
+ enum-modifier
+
+
+
+
+ enum-modifiers
+
+
+ enum-modifier
+
+
+
+
+
+
+
+ enum-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ enum-member-declarations
+
+
+
+ enum-member-declaration
+
+
+
+
+ enum-member-declarations
+
+
+ ,
+
+
+ enum-member-declaration
+
+
+
+
+
+
+
+ enum-member-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ identifier
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ identifier
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+
+
+ delegate-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ delegate-modifiers
+
+
+
+
+ delegate
+
+
+ return-type
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ ;
+
+
+
+
+
+ delegate-modifiers
+
+
+
+ delegate-modifier
+
+
+
+
+ delegate-modifiers
+
+
+ delegate-modifier
+
+
+
+
+
+
+
+ delegate-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ global-attributes
+
+ global-attribute-sections
+
+
+
+ global-attribute-sections
+
+
+
+ global-attribute-section
+
+
+
+
+ global-attribute-sections
+
+
+ global-attribute-section
+
+
+
+
+
+
+
+ global-attribute-section
+
+
+
+
+
+ [
+
+
+ global-attribute-target-specifier
+
+
+ attribute-list
+
+
+ ]
+
+
+
+
+
+
+ [
+
+
+ global-attribute-target-specifier
+
+
+ attribute-list
+
+
+ ,
+
+
+ ]
+
+
+
+
+
+
+
+ global-attribute-target-specifier
+
+
+
+ global-attribute-target
+
+
+ :
+
+
+
+
+
+ global-attribute-target
+
+
+
+ identifier
+
+
+ keyword
+
+
+
+
+
+ attributes
+
+ attribute-sections
+
+
+
+ attribute-sections
+
+
+
+ attribute-section
+
+
+
+
+ attribute-sections
+
+
+ attribute-section
+
+
+
+
+
+
+
+ attribute-section
+
+
+
+
+
+ [
+
+
+
+
+ attribute-target-specifier
+
+
+
+
+ attribute-list
+
+
+ ]
+
+
+
+
+
+
+ [
+
+
+
+
+ attribute-target-specifier
+
+
+
+
+ attribute-list
+
+
+ ,
+
+
+ ]
+
+
+
+
+
+
+
+ attribute-target-specifier
+
+
+
+ attribute-target
+
+
+ :
+
+
+
+
+
+ attribute-target
+
+
+
+ identifier
+
+
+ keyword
+
+
+
+
+
+ attribute-list
+
+
+
+ attribute
+
+
+
+
+ attribute-list
+
+
+ ,
+
+
+ attribute
+
+
+
+
+
+
+
+ attribute
+
+
+
+ attribute-name
+
+
+
+
+ attribute-arguments
+
+
+
+
+
+
+
+ attribute-name
+
+ type-name
+
+
+
+ attribute-arguments
+
+
+
+
+
+ (
+
+
+
+
+ positional-argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+ (
+
+
+ positional-argument-list
+
+
+ ,
+
+
+ named-argument-list
+
+
+ )
+
+
+
+
+
+
+ (
+
+
+ named-argument-list
+
+
+ )
+
+
+
+
+
+
+
+ positional-argument-list
+
+
+
+ positional-argument
+
+
+
+
+ positional-argument-list
+
+
+ ,
+
+
+ positional-argument
+
+
+
+
+
+
+
+ positional-argument
+
+ attribute-argument-expression
+
+
+
+ named-argument-list
+
+
+
+ named-argument
+
+
+
+
+ named-argument-list
+
+
+ ,
+
+
+ named-argument
+
+
+
+
+
+
+
+ named-argument
+
+
+
+ identifier
+
+
+ =
+
+
+ attribute-argument-expression
+
+
+
+
+
+ attribute-argument-expression
+
+ expression
+
+
+
+ type-parameter-list
+
+
+
+ <
+
+
+ type-parameters
+
+
+ >
+
+
+
+
+
+ type-parameters
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ type-parameter
+
+
+
+
+
+
+ type-parameters
+
+
+ ,
+
+
+
+
+ attributes
+
+
+
+
+ type-parameter
+
+
+
+
+
+
+
+ type-parameter
+
+ identifier
+
+
+
+ type-argument-list
+
+
+
+ <
+
+
+ type-arguments
+
+
+ >
+
+
+
+
+
+ type-arguments
+
+
+
+ type-argument
+
+
+
+
+ type-arguments
+
+
+ ,
+
+
+ type-argument
+
+
+
+
+
+
+
+ type-argument
+
+ type
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+ type-parameter-constraints-clause
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+ type-parameter-constraints-clause
+
+
+
+
+
+
+
+ type-parameter-constraints-clause
+
+
+
+ where
+
+
+ type-parameter
+
+
+ :
+
+
+ type-parameter-constraints
+
+
+
+
+
+ type-parameter-constraints
+
+
+
+ primary-constraint
+
+
+ secondary-constraints
+
+
+ constructor-constraint
+
+
+
+
+ primary-constraint
+
+
+ ,
+
+
+ secondary-constraints
+
+
+
+
+
+
+ primary-constraint
+
+
+ ,
+
+
+ constructor-constraint
+
+
+
+
+
+
+ secondary-constraints
+
+
+ ,
+
+
+ constructor-constraint
+
+
+
+
+
+
+ primary-constraint
+
+
+ ,
+
+
+ secondary-constraints
+
+
+ ,
+
+
+ constructor-constraint
+
+
+
+
+
+
+
+ primary-constraint
+
+
+
+ class-type
+
+
+ class
+
+
+ struct
+
+
+
+
+
+ secondary-constraints
+
+
+
+ interface-type
+
+
+ type-parameter
+
+
+
+
+ secondary-constraints
+
+
+ ,
+
+
+ interface-type
+
+
+
+
+
+
+ secondary-constraints
+
+
+ ,
+
+
+ type-parameter
+
+
+
+
+
+
+
+ constructor-constraint
+
+
+
+ new
+
+
+ (
+
+
+ )
+
+
+
+
+
+ keyword
+
+
+
+ abstract
+
+
+ as
+
+
+ base
+
+
+ bool
+
+
+ break
+
+
+ byte
+
+
+ case
+
+
+ catch
+
+
+ char
+
+
+ checked
+
+
+ class
+
+
+ const
+
+
+ continue
+
+
+ decimal
+
+
+ default
+
+
+ delegate
+
+
+ do
+
+
+ double
+
+
+ else
+
+
+ enum
+
+
+ event
+
+
+ explicit
+
+
+ extern
+
+
+ false
+
+
+ finally
+
+
+ fixed
+
+
+ float
+
+
+ for
+
+
+ foreach
+
+
+ goto
+
+
+ if
+
+
+ implicit
+
+
+ in
+
+
+ int
+
+
+ interface
+
+
+ internal
+
+
+ is
+
+
+ lock
+
+
+ long
+
+
+ namespace
+
+
+ new
+
+
+ null
+
+
+ object
+
+
+ operator
+
+
+ out
+
+
+ override
+
+
+ params
+
+
+ private
+
+
+ protected
+
+
+ public
+
+
+ readonly
+
+
+ ref
+
+
+ return
+
+
+ sbyte
+
+
+ sealed
+
+
+ short
+
+
+ sizeof
+
+
+ stackalloc
+
+
+ static
+
+
+ string
+
+
+ struct
+
+
+ switch
+
+
+ this
+
+
+ throw
+
+
+ true
+
+
+ try
+
+
+ typeof
+
+
+ uint
+
+
+ ulong
+
+
+ unchecked
+
+
+ unsafe
+
+
+ ushort
+
+
+ using
+
+
+ virtual
+
+
+ void
+
+
+ volatile
+
+
+ while
+
+
+ get
+
+
+ set
+
+
+ yield
+
+
+ add
+
+
+ remove
+
+
+ alias
+
+
+ partial
+
+
+ where
+
+
+
+
+
diff --git a/topics/grammars/csharp/iso-23270-2003/Makefile b/topics/grammars/csharp/iso-23270-2003/Makefile
index 930e910d..40a3b139 100644
--- a/topics/grammars/csharp/iso-23270-2003/Makefile
+++ b/topics/grammars/csharp/iso-23270-2003/Makefile
@@ -11,5 +11,5 @@ clean:
test:
make build
- ../../../../shared/tools/gdts iso-cs-1-original.bgf extracted-grammar.bgf
- ../../../../shared/tools/gdts iso-cs-1-browsable.bgf recovered-grammar.bgf
+ ../../../../shared/tools/gdt iso-cs-1-original.bgf extracted-grammar.bgf
+ ../../../../shared/tools/gdt iso-cs-1-browsable.bgf recovered-grammar.bgf
diff --git a/topics/grammars/csharp/iso-23270-2006/Makefile b/topics/grammars/csharp/iso-23270-2006/Makefile
index 446e6771..7a0c2e98 100644
--- a/topics/grammars/csharp/iso-23270-2006/Makefile
+++ b/topics/grammars/csharp/iso-23270-2006/Makefile
@@ -10,4 +10,4 @@ clean:
test:
make build
- ../../../../shared/tools/gdts iso-is-grammar.bgf extracted-grammar.bgf
+ ../../../../shared/tools/gdt iso-is-grammar.bgf extracted-grammar.bgf
diff --git a/topics/grammars/csharp/iso-23270-2006/extracted-grammar.bgf b/topics/grammars/csharp/iso-23270-2006/extracted-grammar.bgf
index f3564757..2c946fbf 100644
--- a/topics/grammars/csharp/iso-23270-2006/extracted-grammar.bgf
+++ b/topics/grammars/csharp/iso-23270-2006/extracted-grammar.bgf
@@ -1,7040 +1,7039 @@
-
-
-
- compilation-unit
-
-
-
-
-
- extern-alias-directives
-
-
-
-
-
-
- using-directives
-
-
-
-
-
-
- global-attributes
-
-
-
-
-
-
- namespace-member-declarations
-
-
-
-
-
-
-
- namespace-name
-
- namespace-or-type-name
-
-
-
- type-name
-
- namespace-or-type-name
-
-
-
- namespace-or-type-name
-
-
-
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
- qualified-alias-member
-
-
-
-
- namespace-or-type-name
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
-
- type
-
-
-
- value-type
-
-
- reference-type
-
-
- type-parameter
-
-
-
-
-
- value-type
-
-
-
- struct-type
-
-
- enum-type
-
-
-
-
-
- struct-type
-
-
-
- type-name
-
-
- simple-type
-
-
- nullable-type
-
-
-
-
-
- simple-type
-
-
-
- numeric-type
-
-
- bool
-
-
-
-
-
- numeric-type
-
-
-
- integral-type
-
-
- floating-point-type
-
-
- decimal
-
-
-
-
-
- integral-type
-
-
-
- sbyte
-
-
- byte
-
-
- short
-
-
- ushort
-
-
- int
-
-
- uint
-
-
- long
-
-
- ulong
-
-
- char
-
-
-
-
-
- floating-point-type
-
-
-
- float
-
-
- double
-
-
-
-
-
- enum-type
-
- type-name
-
-
-
- nullable-type
-
-
-
- non-nullable-value-type
-
-
- ?
-
-
-
-
-
- non-nullable-value-type
-
-
-
- enum-type
-
-
- type-name
-
-
- simple-type
-
-
-
-
-
- reference-type
-
-
-
- class-type
-
-
- interface-type
-
-
- array-type
-
-
- delegate-type
-
-
-
-
-
- class-type
-
-
-
- type-name
-
-
- object
-
-
- string
-
-
-
-
-
- interface-type
-
- type-name
-
-
-
- array-type
-
-
-
- non-array-type
-
-
- rank-specifiers
-
-
-
-
-
- non-array-type
-
-
-
- value-type
-
-
- class-type
-
-
- interface-type
-
-
- delegate-type
-
-
- type-parameter
-
-
-
-
-
- rank-specifiers
-
-
-
- rank-specifier
-
-
-
-
- rank-specifiers
-
-
- rank-specifier
-
-
-
-
-
-
-
- rank-specifier
-
-
-
- [
-
-
-
-
- dim-separators
-
-
-
-
- ]
-
-
-
-
-
- dim-separators
-
-
-
- ,
-
-
-
-
- dim-separators
-
-
- ,
-
-
-
-
-
-
-
- delegate-type
-
- type-name
-
-
-
- variable-reference
-
- expression
-
-
-
- argument-list
-
-
-
- argument
-
-
-
-
- argument-list
-
-
- ,
-
-
- argument
-
-
-
-
-
-
-
- argument
-
-
-
- expression
-
-
-
-
- ref
-
-
- variable-reference
-
-
-
-
-
-
- out
-
-
- variable-reference
-
-
-
-
-
-
-
- primary-expression
-
-
-
- array-creation-expression
-
-
- primary-no-array-creation-expression
-
-
-
-
-
- primary-no-array-creation-expression
-
-
-
- literal
-
-
- simple-name
-
-
- parenthesized-expression
-
-
- member-access
-
-
- invocation-expression
-
-
- element-access
-
-
- this-access
-
-
- base-access
-
-
- post-increment-expression
-
-
- post-decrement-expression
-
-
- object-creation-expression
-
-
- delegate-creation-expression
-
-
- typeof-expression
-
-
- checked-expression
-
-
- unchecked-expression
-
-
- default-value-expression
-
-
- anonymous-method-expression
-
-
-
-
-
- simple-name
-
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
- parenthesized-expression
-
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- member-access
-
-
-
-
-
- primary-expression
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
- predefined-type
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
- qualified-alias-member
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
-
- predefined-type
-
-
-
- bool
-
-
- byte
-
-
- char
-
-
- decimal
-
-
- double
-
-
- float
-
-
- int
-
-
- long
-
-
- object
-
-
- sbyte
-
-
- short
-
-
- string
-
-
- uint
-
-
- ulong
-
-
- ushort
-
-
-
-
-
- invocation-expression
-
-
-
- primary-expression
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
- element-access
-
-
-
- primary-no-array-creation-expression
-
-
- [
-
-
- expression-list
-
-
- ]
-
-
-
-
-
- expression-list
-
-
-
- expression
-
-
-
-
- expression-list
-
-
- ,
-
-
- expression
-
-
-
-
-
-
-
- this-access
-
- this
-
-
-
- base-access
-
-
-
-
-
- base
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
- base
-
-
- [
-
-
- expression-list
-
-
- ]
-
-
-
-
-
-
-
- post-increment-expression
-
-
-
- primary-expression
-
-
- ++
-
-
-
-
-
- post-decrement-expression
-
-
-
- primary-expression
-
-
- --
-
-
-
-
-
- object-creation-expression
-
-
-
- new
-
-
- type
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
- array-creation-expression
-
-
-
-
-
- new
-
-
- non-array-type
-
-
- [
-
-
- expression-list
-
-
- ]
-
-
-
-
- rank-specifiers
-
-
-
-
-
-
- array-initializer
-
-
-
-
-
-
-
-
- new
-
-
- array-type
-
-
- array-initializer
-
-
-
-
-
-
-
- delegate-creation-expression
-
-
-
- new
-
-
- delegate-type
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- typeof-expression
-
-
-
-
-
- typeof
-
-
- (
-
-
- type
-
-
- )
-
-
-
-
-
-
- typeof
-
-
- (
-
-
- unbound-type-name
-
-
- )
-
-
-
-
-
-
- typeof
-
-
- (
-
-
- void
-
-
- )
-
-
-
-
-
-
-
- unbound-type-name
-
-
-
-
-
- identifier
-
-
-
-
- generic-dimension-specifier
-
-
-
-
-
-
-
-
- identifier
-
-
- ::
-
-
- identifier
-
-
-
-
- generic-dimension-specifier
-
-
-
-
-
-
-
-
- unbound-type-name
-
-
- .
-
-
- identifier
-
-
-
-
- generic-dimension-specifier
-
-
-
-
-
-
-
-
-
- generic-dimension-specifier
-
-
-
- <
-
-
-
-
- commas
-
-
-
-
- >
-
-
-
-
-
- commas
-
-
-
- ,
-
-
-
-
- commas
-
-
- ,
-
-
-
-
-
-
-
- checked-expression
-
-
-
- checked
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- unchecked-expression
-
-
-
- unchecked
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- default-value-expression
-
-
-
- default
-
-
- (
-
-
- type
-
-
- )
-
-
-
-
-
- anonymous-method-expression
-
-
-
- delegate
-
-
-
-
- anonymous-method-signature
-
-
-
-
- block
-
-
-
-
-
- anonymous-method-signature
-
-
-
- (
-
-
-
-
- anonymous-method-parameter-list
-
-
-
-
- )
-
-
-
-
-
- anonymous-method-parameter-list
-
-
-
- anonymous-method-parameter
-
-
-
-
- anonymous-method-parameter-list
-
-
- ,
-
-
- anonymous-method-parameter
-
-
-
-
-
-
-
- anonymous-method-parameter
-
-
-
-
-
- parameter-modifier
-
-
-
-
- type
-
-
- identifier
-
-
-
-
-
- unary-expression
-
-
-
- primary-expression
-
-
-
-
- +
-
-
- unary-expression
-
-
-
-
-
-
- -
-
-
- unary-expression
-
-
-
-
-
-
- !
-
-
- unary-expression
-
-
-
-
-
-
- ~
-
-
- unary-expression
-
-
-
-
- pre-increment-expression
-
-
- pre-decrement-expression
-
-
- cast-expression
-
-
-
-
-
- pre-increment-expression
-
-
-
- ++
-
-
- unary-expression
-
-
-
-
-
- pre-decrement-expression
-
-
-
- --
-
-
- unary-expression
-
-
-
-
-
- cast-expression
-
-
-
- (
-
-
- type
-
-
- )
-
-
- unary-expression
-
-
-
-
-
- multiplicative-expression
-
-
-
- unary-expression
-
-
-
-
- multiplicative-expression
-
-
- *
-
-
- unary-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- /
-
-
- unary-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- %
-
-
- unary-expression
-
-
-
-
-
-
-
- additive-expression
-
-
-
- multiplicative-expression
-
-
-
-
- additive-expression
-
-
- +
-
-
- multiplicative-expression
-
-
-
-
-
-
- additive-expression
-
-
- -
-
-
- multiplicative-expression
-
-
-
-
-
-
-
- shift-expression
-
-
-
- additive-expression
-
-
-
-
- shift-expression
-
-
- <<
-
-
- additive-expression
-
-
-
-
-
-
- shift-expression
-
-
- right-shift
-
-
- additive-expression
-
-
-
-
-
-
-
- relational-expression
-
-
-
- shift-expression
-
-
-
-
- relational-expression
-
-
- <
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- <=
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >=
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- is
-
-
- type
-
-
-
-
-
-
- relational-expression
-
-
- as
-
-
- type
-
-
-
-
-
-
-
- equality-expression
-
-
-
- relational-expression
-
-
-
-
- equality-expression
-
-
- ==
-
-
- relational-expression
-
-
-
-
-
-
- equality-expression
-
-
- !=
-
-
- relational-expression
-
-
-
-
-
-
-
- and-expression
-
-
-
- equality-expression
-
-
-
-
- and-expression
-
-
- &
-
-
- equality-expression
-
-
-
-
-
-
-
- exclusive-or-expression
-
-
-
- and-expression
-
-
-
-
- exclusive-or-expression
-
-
- ^
-
-
- and-expression
-
-
-
-
-
-
-
- inclusive-or-expression
-
-
-
- exclusive-or-expression
-
-
-
-
- inclusive-or-expression
-
-
- |
-
-
- exclusive-or-expression
-
-
-
-
-
-
-
- conditional-and-expression
-
-
-
- inclusive-or-expression
-
-
-
-
- conditional-and-expression
-
-
- &&
-
-
- inclusive-or-expression
-
-
-
-
-
-
-
- conditional-or-expression
-
-
-
- conditional-and-expression
-
-
-
-
- conditional-or-expression
-
-
- ||
-
-
- conditional-and-expression
-
-
-
-
-
-
-
- null-coalescing-expression
-
-
-
- conditional-or-expression
-
-
-
-
- conditional-or-expression
-
-
- ??
-
-
- null-coalescing-expression
-
-
-
-
-
-
-
- conditional-expression
-
-
-
- null-coalescing-expression
-
-
-
-
- null-coalescing-expression
-
-
- ?
-
-
- expression
-
-
- :
-
-
- expression
-
-
-
-
-
-
-
- assignment
-
-
-
- unary-expression
-
-
- assignment-operator
-
-
- expression
-
-
-
-
-
- assignment-operator
-
-
-
- =
-
-
- +=
-
-
- -=
-
-
- *=
-
-
- /=
-
-
- %=
-
-
- &=
-
-
- |=
-
-
- ^=
-
-
- <<=
-
-
- right-shift-assignment
-
-
-
-
-
- expression
-
-
-
- conditional-expression
-
-
- assignment
-
-
-
-
-
- constant-expression
-
- expression
-
-
-
- boolean-expression
-
- expression
-
-
-
- statement
-
-
-
- labeled-statement
-
-
- declaration-statement
-
-
- embedded-statement
-
-
-
-
-
- embedded-statement
-
-
-
- block
-
-
- empty-statement
-
-
- expression-statement
-
-
- selection-statement
-
-
- iteration-statement
-
-
- jump-statement
-
-
- try-statement
-
-
- checked-statement
-
-
- unchecked-statement
-
-
- lock-statement
-
-
- using-statement
-
-
- yield-statement
-
-
-
-
-
- block
-
-
-
- {
-
-
-
-
- statement-list
-
-
-
-
- }
-
-
-
-
-
- statement-list
-
-
-
- statement
-
-
-
-
- statement-list
-
-
- statement
-
-
-
-
-
-
-
- empty-statement
-
- ;
-
-
-
- labeled-statement
-
-
-
- identifier
-
-
- :
-
-
- statement
-
-
-
-
-
- declaration-statement
-
-
-
-
-
- local-variable-declaration
-
-
- ;
-
-
-
-
-
-
- local-constant-declaration
-
-
- ;
-
-
-
-
-
-
-
- local-variable-declaration
-
-
-
- type
-
-
- local-variable-declarators
-
-
-
-
-
- local-variable-declarators
-
-
-
- local-variable-declarator
-
-
-
-
- local-variable-declarators
-
-
- ,
-
-
- local-variable-declarator
-
-
-
-
-
-
-
- local-variable-declarator
-
-
-
- identifier
-
-
-
-
- identifier
-
-
- =
-
-
- local-variable-initializer
-
-
-
-
-
-
-
- local-variable-initializer
-
-
-
- expression
-
-
- array-initializer
-
-
-
-
-
- local-constant-declaration
-
-
-
- const
-
-
- type
-
-
- constant-declarators
-
-
-
-
-
- constant-declarators
-
-
-
- constant-declarator
-
-
-
-
- constant-declarators
-
-
- ,
-
-
- constant-declarator
-
-
-
-
-
-
-
- constant-declarator
-
-
-
- identifier
-
-
- =
-
-
- constant-expression
-
-
-
-
-
- expression-statement
-
-
-
- statement-expression
-
-
- ;
-
-
-
-
-
- statement-expression
-
-
-
- invocation-expression
-
-
- object-creation-expression
-
-
- assignment
-
-
- post-increment-expression
-
-
- post-decrement-expression
-
-
- pre-increment-expression
-
-
- pre-decrement-expression
-
-
-
-
-
- selection-statement
-
-
-
- if-statement
-
-
- switch-statement
-
-
-
-
-
- if-statement
-
-
-
-
-
- if
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
-
- if
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
- else
-
-
- embedded-statement
-
-
-
-
-
-
-
- switch-statement
-
-
-
- switch
-
-
- (
-
-
- expression
-
-
- )
-
-
- switch-block
-
-
-
-
-
- switch-block
-
-
-
- {
-
-
-
-
- switch-sections
-
-
-
-
- }
-
-
-
-
-
- switch-sections
-
-
-
- switch-section
-
-
-
-
- switch-sections
-
-
- switch-section
-
-
-
-
-
-
-
- switch-section
-
-
-
- switch-labels
-
-
- statement-list
-
-
-
-
-
- switch-labels
-
-
-
- switch-label
-
-
-
-
- switch-labels
-
-
- switch-label
-
-
-
-
-
-
-
- switch-label
-
-
-
-
-
- case
-
-
- constant-expression
-
-
- :
-
-
-
-
-
-
- default
-
-
- :
-
-
-
-
-
-
-
- iteration-statement
-
-
-
- while-statement
-
-
- do-statement
-
-
- for-statement
-
-
- foreach-statement
-
-
-
-
-
- while-statement
-
-
-
- while
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- do-statement
-
-
-
- do
-
-
- embedded-statement
-
-
- while
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- ;
-
-
-
-
-
- for-statement
-
-
-
- for
-
-
- (
-
-
-
-
- for-initializer
-
-
-
-
- ;
-
-
-
-
- for-condition
-
-
-
-
- ;
-
-
-
-
- for-iterator
-
-
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- for-initializer
-
-
-
- local-variable-declaration
-
-
- statement-expression-list
-
-
-
-
-
- for-condition
-
- boolean-expression
-
-
-
- for-iterator
-
- statement-expression-list
-
-
-
- statement-expression-list
-
-
-
- statement-expression
-
-
-
-
- statement-expression-list
-
-
- ,
-
-
- statement-expression
-
-
-
-
-
-
-
- foreach-statement
-
-
-
- foreach
-
-
- (
-
-
- type
-
-
- identifier
-
-
- in
-
-
- expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- jump-statement
-
-
-
- break-statement
-
-
- continue-statement
-
-
- goto-statement
-
-
- return-statement
-
-
- throw-statement
-
-
-
-
-
- break-statement
-
-
-
- break
-
-
- ;
-
-
-
-
-
- continue-statement
-
-
-
- continue
-
-
- ;
-
-
-
-
-
- goto-statement
-
-
-
-
-
- goto
-
-
- identifier
-
-
- ;
-
-
-
-
-
-
- goto
-
-
- case
-
-
- constant-expression
-
-
- ;
-
-
-
-
-
-
- goto
-
-
- default
-
-
- ;
-
-
-
-
-
-
-
- return-statement
-
-
-
- return
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
- throw-statement
-
-
-
- throw
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
- try-statement
-
-
-
-
-
- try
-
-
- block
-
-
- catch-clauses
-
-
-
-
-
-
- try
-
-
- block
-
-
-
-
- catch-clauses
-
-
-
-
- finally-clause
-
-
-
-
-
-
-
- catch-clauses
-
-
-
- specific-catch-clauses
-
-
-
-
-
-
- specific-catch-clauses
-
-
-
-
- general-catch-clause
-
-
-
-
-
-
-
- specific-catch-clauses
-
-
-
- specific-catch-clause
-
-
-
-
- specific-catch-clauses
-
-
- specific-catch-clause
-
-
-
-
-
-
-
- specific-catch-clause
-
-
-
- catch
-
-
- (
-
-
- class-type
-
-
-
-
- identifier
-
-
-
-
- )
-
-
- block
-
-
-
-
-
- general-catch-clause
-
-
-
- catch
-
-
- block
-
-
-
-
-
- finally-clause
-
-
-
- finally
-
-
- block
-
-
-
-
-
- checked-statement
-
-
-
- checked
-
-
- block
-
-
-
-
-
- unchecked-statement
-
-
-
- unchecked
-
-
- block
-
-
-
-
-
- lock-statement
-
-
-
- lock
-
-
- (
-
-
- expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- using-statement
-
-
-
- using
-
-
- (
-
-
- resource-acquisition
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- resource-acquisition
-
-
-
- local-variable-declaration
-
-
- expression
-
-
-
-
-
- yield-statement
-
-
-
-
-
- yield
-
-
- return
-
-
- expression
-
-
- ;
-
-
-
-
-
-
- yield
-
-
- break
-
-
- ;
-
-
-
-
-
-
-
- namespace-declaration
-
-
-
- namespace
-
-
- qualified-identifier
-
-
- namespace-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- qualified-identifier
-
-
-
- identifier
-
-
-
-
- qualified-identifier
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- namespace-body
-
-
-
- {
-
-
-
-
- extern-alias-directives
-
-
-
-
-
-
- using-directives
-
-
-
-
-
-
- namespace-member-declarations
-
-
-
-
- }
-
-
-
-
-
- extern-alias-directives
-
-
-
- extern-alias-directive
-
-
-
-
- extern-alias-directives
-
-
- extern-alias-directive
-
-
-
-
-
-
-
- extern-alias-directive
-
-
-
- extern
-
-
- alias
-
-
- identifier
-
-
- ;
-
-
-
-
-
- using-directives
-
-
-
- using-directive
-
-
-
-
- using-directives
-
-
- using-directive
-
-
-
-
-
-
-
- using-directive
-
-
-
- using-alias-directive
-
-
- using-namespace-directive
-
-
-
-
-
- using-alias-directive
-
-
-
- using
-
-
- identifier
-
-
- =
-
-
- namespace-or-type-name
-
-
- ;
-
-
-
-
-
- using-namespace-directive
-
-
-
- using
-
-
- namespace-name
-
-
- ;
-
-
-
-
-
- namespace-member-declarations
-
-
-
- namespace-member-declaration
-
-
-
-
- namespace-member-declarations
-
-
- namespace-member-declaration
-
-
-
-
-
-
-
- namespace-member-declaration
-
-
-
- namespace-declaration
-
-
- type-declaration
-
-
-
-
-
- type-declaration
-
-
-
- class-declaration
-
-
- struct-declaration
-
-
- interface-declaration
-
-
- enum-declaration
-
-
- delegate-declaration
-
-
-
-
-
- qualified-alias-member
-
-
-
- identifier
-
-
- ::
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
- class-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- class-modifiers
-
-
-
-
-
-
- partial
-
-
-
-
- class
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
-
-
- class-base
-
-
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- class-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- class-modifiers
-
-
-
- class-modifier
-
-
-
-
- class-modifiers
-
-
- class-modifier
-
-
-
-
-
-
-
- class-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- abstract
-
-
- sealed
-
-
- static
-
-
-
-
-
- class-base
-
-
-
-
-
- :
-
-
- class-type
-
-
-
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
-
- :
-
-
- class-type
-
-
- ,
-
-
- interface-type-list
-
-
-
-
-
-
-
- interface-type-list
-
-
-
- interface-type
-
-
-
-
- interface-type-list
-
-
- ,
-
-
- interface-type
-
-
-
-
-
-
-
- class-body
-
-
-
- {
-
-
-
-
- class-member-declarations
-
-
-
-
- }
-
-
-
-
-
- class-member-declarations
-
-
-
- class-member-declaration
-
-
-
-
- class-member-declarations
-
-
- class-member-declaration
-
-
-
-
-
-
-
- class-member-declaration
-
-
-
- constant-declaration
-
-
- field-declaration
-
-
- method-declaration
-
-
- property-declaration
-
-
- event-declaration
-
-
- indexer-declaration
-
-
- operator-declaration
-
-
- constructor-declaration
-
-
- finalizer-declaration
-
-
- static-constructor-declaration
-
-
- type-declaration
-
-
-
-
-
- constant-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- constant-modifiers
-
-
-
-
- const
-
-
- type
-
-
- constant-declarators
-
-
- ;
-
-
-
-
-
- constant-modifiers
-
-
-
- constant-modifier
-
-
-
-
- constant-modifiers
-
-
- constant-modifier
-
-
-
-
-
-
-
- constant-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- field-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- field-modifiers
-
-
-
-
- type
-
-
- variable-declarators
-
-
- ;
-
-
-
-
-
- field-modifiers
-
-
-
- field-modifier
-
-
-
-
- field-modifiers
-
-
- field-modifier
-
-
-
-
-
-
-
- field-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- readonly
-
-
- volatile
-
-
-
-
-
- variable-declarators
-
-
-
- variable-declarator
-
-
-
-
- variable-declarators
-
-
- ,
-
-
- variable-declarator
-
-
-
-
-
-
-
- variable-declarator
-
-
-
- identifier
-
-
-
-
- identifier
-
-
- =
-
-
- variable-initializer
-
-
-
-
-
-
-
- variable-initializer
-
-
-
- expression
-
-
- array-initializer
-
-
-
-
-
- method-declaration
-
-
-
- method-header
-
-
- method-body
-
-
-
-
-
- method-header
-
-
-
-
-
- attributes
-
-
-
-
-
-
- method-modifiers
-
-
-
-
- return-type
-
-
- member-name
-
-
-
-
- type-parameter-list
-
-
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
-
-
-
- method-modifiers
-
-
-
- method-modifier
-
-
-
-
- method-modifiers
-
-
- method-modifier
-
-
-
-
-
-
-
- method-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- return-type
-
-
-
- type
-
-
- void
-
-
-
-
-
- member-name
-
-
-
- identifier
-
-
-
-
- interface-type
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- method-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- formal-parameter-list
-
-
-
- fixed-parameters
-
-
-
-
- fixed-parameters
-
-
- ,
-
-
- parameter-array
-
-
-
-
- parameter-array
-
-
-
-
-
- fixed-parameters
-
-
-
- fixed-parameter
-
-
-
-
- fixed-parameters
-
-
- ,
-
-
- fixed-parameter
-
-
-
-
-
-
-
- fixed-parameter
-
-
-
-
-
- attributes
-
-
-
-
-
-
- parameter-modifier
-
-
-
-
- type
-
-
- identifier
-
-
-
-
-
- parameter-modifier
-
-
-
- ref
-
-
- out
-
-
-
-
-
- parameter-array
-
-
-
-
-
- attributes
-
-
-
-
- params
-
-
- array-type
-
-
- identifier
-
-
-
-
-
- property-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- property-modifiers
-
-
-
-
- type
-
-
- member-name
-
-
- {
-
-
- accessor-declarations
-
-
- }
-
-
-
-
-
- property-modifiers
-
-
-
- property-modifier
-
-
-
-
- property-modifiers
-
-
- property-modifier
-
-
-
-
-
-
-
- property-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- accessor-declarations
-
-
-
-
-
- get-accessor-declaration
-
-
-
-
- set-accessor-declaration
-
-
-
-
-
-
-
-
- set-accessor-declaration
-
-
-
-
- get-accessor-declaration
-
-
-
-
-
-
-
-
-
- get-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- accessor-modifier
-
-
-
-
- get
-
-
- accessor-body
-
-
-
-
-
- set-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- accessor-modifier
-
-
-
-
- set
-
-
- accessor-body
-
-
-
-
-
- accessor-modifier
-
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
- protected
-
-
- internal
-
-
-
-
-
-
- internal
-
-
- protected
-
-
-
-
-
-
-
- accessor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- event-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- event-modifiers
-
-
-
-
- event
-
-
- type
-
-
- variable-declarators
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- event-modifiers
-
-
-
-
- event
-
-
- type
-
-
- member-name
-
-
- {
-
-
- event-accessor-declarations
-
-
- }
-
-
-
-
-
-
-
- event-modifiers
-
-
-
- event-modifier
-
-
-
-
- event-modifiers
-
-
- event-modifier
-
-
-
-
-
-
-
- event-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- event-accessor-declarations
-
-
-
-
-
- add-accessor-declaration
-
-
- remove-accessor-declaration
-
-
-
-
-
-
- remove-accessor-declaration
-
-
- add-accessor-declaration
-
-
-
-
-
-
-
- add-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- add
-
-
- block
-
-
-
-
-
- remove-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- remove
-
-
- block
-
-
-
-
-
- indexer-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- indexer-modifiers
-
-
-
-
- indexer-declarator
-
-
- {
-
-
- accessor-declarations
-
-
- }
-
-
-
-
-
- indexer-modifiers
-
-
-
- indexer-modifier
-
-
-
-
- indexer-modifiers
-
-
- indexer-modifier
-
-
-
-
-
-
-
- indexer-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- indexer-declarator
-
-
-
-
-
- type
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
-
-
-
-
- type
-
-
- interface-type
-
-
- .
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
-
-
-
-
-
- operator-declaration
-
-
-
-
-
- attributes
-
-
-
-
- operator-modifiers
-
-
- operator-declarator
-
-
- operator-body
-
-
-
-
-
- operator-modifiers
-
-
-
- operator-modifier
-
-
-
-
- operator-modifiers
-
-
- operator-modifier
-
-
-
-
-
-
-
- operator-modifier
-
-
-
- public
-
-
- static
-
-
- extern
-
-
-
-
-
- operator-declarator
-
-
-
- unary-operator-declarator
-
-
- binary-operator-declarator
-
-
- conversion-operator-declarator
-
-
-
-
-
- unary-operator-declarator
-
-
-
- type
-
-
- operator
-
-
- overloadable-unary-operator
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
- overloadable-unary-operator
-
-
-
- +
-
-
- -
-
-
- !
-
-
- ~
-
-
- ++
-
-
- --
-
-
- true
-
-
- false
-
-
-
-
-
- binary-operator-declarator
-
-
-
- type
-
-
- operator
-
-
- overloadable-binary-operator
-
-
- (
-
-
- type
-
-
- identifier
-
-
- ,
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
- overloadable-binary-operator
-
-
-
- +
-
-
- -
-
-
- *
-
-
- /
-
-
- %
-
-
- &
-
-
- |
-
-
- ^
-
-
- <<
-
-
- right-shift
-
-
- ==
-
-
- !=
-
-
- >
-
-
- <
-
-
- >=
-
-
- <=
-
-
-
-
-
- conversion-operator-declarator
-
-
-
-
-
- implicit
-
-
- operator
-
-
- type
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
-
- explicit
-
-
- operator
-
-
- type
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
-
-
- operator-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- constructor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- constructor-modifiers
-
-
-
-
- constructor-declarator
-
-
- constructor-body
-
-
-
-
-
- constructor-modifiers
-
-
-
- constructor-modifier
-
-
-
-
- constructor-modifiers
-
-
- constructor-modifier
-
-
-
-
-
-
-
- constructor-modifier
-
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- extern
-
-
-
-
-
- constructor-declarator
-
-
-
- identifier
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- constructor-initializer
-
-
-
-
-
-
-
- constructor-initializer
-
-
-
-
-
- :
-
-
- base
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
-
- :
-
-
- this
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
-
-
- constructor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- static-constructor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- static-constructor-modifiers
-
-
- identifier
-
-
- (
-
-
- )
-
-
- static-constructor-body
-
-
-
-
-
- static-constructor-modifiers
-
-
-
-
-
-
-
- extern
-
-
-
-
- static
-
-
-
-
-
-
- static
-
-
-
-
- extern
-
-
-
-
-
-
-
-
-
- static-constructor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- finalizer-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- extern
-
-
-
-
- ~
-
-
- identifier
-
-
- (
-
-
- )
-
-
- finalizer-body
-
-
-
-
-
- finalizer-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- struct-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- struct-modifiers
-
-
-
-
-
-
- partial
-
-
-
-
- struct
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
-
-
- struct-interfaces
-
-
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- struct-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- struct-modifiers
-
-
-
- struct-modifier
-
-
-
-
- struct-modifiers
-
-
- struct-modifier
-
-
-
-
-
-
-
- struct-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- struct-interfaces
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
- struct-body
-
-
-
- {
-
-
-
-
- struct-member-declarations
-
-
-
-
- }
-
-
-
-
-
- struct-member-declarations
-
-
-
- struct-member-declaration
-
-
-
-
- struct-member-declarations
-
-
- struct-member-declaration
-
-
-
-
-
-
-
- struct-member-declaration
-
-
-
- constant-declaration
-
-
- field-declaration
-
-
- method-declaration
-
-
- property-declaration
-
-
- event-declaration
-
-
- indexer-declaration
-
-
- operator-declaration
-
-
- constructor-declaration
-
-
- static-constructor-declaration
-
-
- type-declaration
-
-
-
-
-
- array-initializer
-
-
-
-
-
- {
-
-
-
-
- variable-initializer-list
-
-
-
-
- }
-
-
-
-
-
-
- {
-
-
- variable-initializer-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- variable-initializer-list
-
-
-
- variable-initializer
-
-
-
-
- variable-initializer-list
-
-
- ,
-
-
- variable-initializer
-
-
-
-
-
-
-
- interface-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- interface-modifiers
-
-
-
-
-
-
- partial
-
-
-
-
- interface
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
-
-
- interface-base
-
-
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- interface-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- interface-modifiers
-
-
-
- interface-modifier
-
-
-
-
- interface-modifiers
-
-
- interface-modifier
-
-
-
-
-
-
-
- interface-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- interface-base
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
- interface-body
-
-
-
- {
-
-
-
-
- interface-member-declarations
-
-
-
-
- }
-
-
-
-
-
- interface-member-declarations
-
-
-
- interface-member-declaration
-
-
-
-
- interface-member-declarations
-
-
- interface-member-declaration
-
-
-
-
-
-
-
- interface-member-declaration
-
-
-
- interface-method-declaration
-
-
- interface-property-declaration
-
-
- interface-event-declaration
-
-
- interface-indexer-declaration
-
-
-
-
-
- interface-method-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- return-type
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- ;
-
-
-
-
-
- interface-property-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- type
-
-
- identifier
-
-
- {
-
-
- interface-accessors
-
-
- }
-
-
-
-
-
- interface-accessors
-
-
-
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
-
-
-
- interface-event-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- event
-
-
- type
-
-
- identifier
-
-
- ;
-
-
-
-
-
- interface-indexer-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- type
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
- {
-
-
- interface-accessors
-
-
- }
-
-
-
-
-
- enum-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- enum-modifiers
-
-
-
-
- enum
-
-
- identifier
-
-
-
-
- enum-base
-
-
-
-
- enum-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- enum-base
-
-
-
- :
-
-
- integral-type
-
-
-
-
-
- enum-body
-
-
-
-
-
- {
-
-
-
-
- enum-member-declarations
-
-
-
-
- }
-
-
-
-
-
-
- {
-
-
- enum-member-declarations
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- enum-modifiers
-
-
-
- enum-modifier
-
-
-
-
- enum-modifiers
-
-
- enum-modifier
-
-
-
-
-
-
-
- enum-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- enum-member-declarations
-
-
-
- enum-member-declaration
-
-
-
-
- enum-member-declarations
-
-
- ,
-
-
- enum-member-declaration
-
-
-
-
-
-
-
- enum-member-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
- identifier
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- identifier
-
-
- =
-
-
- constant-expression
-
-
-
-
-
-
-
- delegate-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- delegate-modifiers
-
-
-
-
- delegate
-
-
- return-type
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- ;
-
-
-
-
-
- delegate-modifiers
-
-
-
- delegate-modifier
-
-
-
-
- delegate-modifiers
-
-
- delegate-modifier
-
-
-
-
-
-
-
- delegate-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- global-attributes
-
- global-attribute-sections
-
-
-
- global-attribute-sections
-
-
-
- global-attribute-section
-
-
-
-
- global-attribute-sections
-
-
- global-attribute-section
-
-
-
-
-
-
-
- global-attribute-section
-
-
-
-
-
- [
-
-
- global-attribute-target-specifier
-
-
- attribute-list
-
-
- ]
-
-
-
-
-
-
- [
-
-
- global-attribute-target-specifier
-
-
- attribute-list
-
-
- ,
-
-
- ]
-
-
-
-
-
-
-
- global-attribute-target-specifier
-
-
-
- global-attribute-target
-
-
- :
-
-
-
-
-
- global-attribute-target
-
-
-
- identifier
-
-
- keyword
-
-
-
-
-
- attributes
-
- attribute-sections
-
-
-
- attribute-sections
-
-
-
- attribute-section
-
-
-
-
- attribute-sections
-
-
- attribute-section
-
-
-
-
-
-
-
- attribute-section
-
-
-
-
-
- [
-
-
-
-
- attribute-target-specifier
-
-
-
-
- attribute-list
-
-
- ]
-
-
-
-
-
-
- [
-
-
-
-
- attribute-target-specifier
-
-
-
-
- attribute-list
-
-
- ,
-
-
- ]
-
-
-
-
-
-
-
- attribute-target-specifier
-
-
-
- attribute-target
-
-
- :
-
-
-
-
-
- attribute-target
-
-
-
- identifier
-
-
- keyword
-
-
-
-
-
- attribute-list
-
-
-
- attribute
-
-
-
-
- attribute-list
-
-
- ,
-
-
- attribute
-
-
-
-
-
-
-
- attribute
-
-
-
- attribute-name
-
-
-
-
- attribute-arguments
-
-
-
-
-
-
-
- attribute-name
-
- type-name
-
-
-
- attribute-arguments
-
-
-
-
-
- (
-
-
-
-
- positional-argument-list
-
-
-
-
- )
-
-
-
-
-
-
- (
-
-
- positional-argument-list
-
-
- ,
-
-
- named-argument-list
-
-
- )
-
-
-
-
-
-
- (
-
-
- named-argument-list
-
-
- )
-
-
-
-
-
-
-
- positional-argument-list
-
-
-
- positional-argument
-
-
-
-
- positional-argument-list
-
-
- ,
-
-
- positional-argument
-
-
-
-
-
-
-
- positional-argument
-
- attribute-argument-expression
-
-
-
- named-argument-list
-
-
-
- named-argument
-
-
-
-
- named-argument-list
-
-
- ,
-
-
- named-argument
-
-
-
-
-
-
-
- named-argument
-
-
-
- identifier
-
-
- =
-
-
- attribute-argument-expression
-
-
-
-
-
- attribute-argument-expression
-
- expression
-
-
-
- type-parameter-list
-
-
-
- <
-
-
- type-parameters
-
-
- >
-
-
-
-
-
- type-parameters
-
-
-
-
-
-
-
- attributes
-
-
-
-
- type-parameter
-
-
-
-
-
-
- type-parameters
-
-
- ,
-
-
-
-
- attributes
-
-
-
-
- type-parameter
-
-
-
-
-
-
-
- type-parameter
-
- identifier
-
-
-
- type-argument-list
-
-
-
- <
-
-
- type-arguments
-
-
- >
-
-
-
-
-
- type-arguments
-
-
-
- type-argument
-
-
-
-
- type-arguments
-
-
- ,
-
-
- type-argument
-
-
-
-
-
-
-
- type-argument
-
- type
-
-
-
- type-parameter-constraints-clauses
-
-
-
- type-parameter-constraints-clause
-
-
-
-
- type-parameter-constraints-clauses
-
-
- type-parameter-constraints-clause
-
-
-
-
-
-
-
- type-parameter-constraints-clause
-
-
-
- where
-
-
- type-parameter
-
-
- :
-
-
- type-parameter-constraints
-
-
-
-
-
- type-parameter-constraints
-
-
-
- primary-constraint
-
-
- secondary-constraints
-
-
- constructor-constraint
-
-
-
-
- primary-constraint
-
-
- ,
-
-
- secondary-constraints
-
-
-
-
-
-
- primary-constraint
-
-
- ,
-
-
- constructor-constraint
-
-
-
-
-
-
- secondary-constraints
-
-
- ,
-
-
- constructor-constraint
-
-
-
-
-
-
- primary-constraint
-
-
- ,
-
-
- secondary-constraints
-
-
- ,
-
-
- constructor-constraint
-
-
-
-
-
-
-
- primary-constraint
-
-
-
- class-type
-
-
- class
-
-
- struct
-
-
-
-
-
- secondary-constraints
-
-
-
- interface-type
-
-
- type-parameter
-
-
-
-
- secondary-constraints
-
-
- ,
-
-
- interface-type
-
-
-
-
-
-
- secondary-constraints
-
-
- ,
-
-
- type-parameter
-
-
-
-
-
-
-
- constructor-constraint
-
-
-
- new
-
-
- (
-
-
- )
-
-
-
-
-
- keyword
-
-
-
- abstract
-
-
- as
-
-
- base
-
-
- bool
-
-
- break
-
-
- byte
-
-
- case
-
-
- catch
-
-
- char
-
-
- checked
-
-
- class
-
-
- const
-
-
- continue
-
-
- decimal
-
-
- default
-
-
- delegate
-
-
- do
-
-
- double
-
-
- else
-
-
- enum
-
-
- event
-
-
- explicit
-
-
- extern
-
-
- false
-
-
- finally
-
-
- fixed
-
-
- float
-
-
- for
-
-
- foreach
-
-
- goto
-
-
- if
-
-
- implicit
-
-
- in
-
-
- int
-
-
- interface
-
-
- internal
-
-
- is
-
-
- lock
-
-
- long
-
-
- namespace
-
-
- new
-
-
- null
-
-
- object
-
-
- operator
-
-
- out
-
-
- override
-
-
- params
-
-
- private
-
-
- protected
-
-
- public
-
-
- readonly
-
-
- ref
-
-
- return
-
-
- sbyte
-
-
- sealed
-
-
- short
-
-
- sizeof
-
-
- stackalloc
-
-
- static
-
-
- string
-
-
- struct
-
-
- switch
-
-
- this
-
-
- throw
-
-
- true
-
-
- try
-
-
- typeof
-
-
- uint
-
-
- ulong
-
-
- unchecked
-
-
- unsafe
-
-
- ushort
-
-
- using
-
-
- virtual
-
-
- void
-
-
- volatile
-
-
- while
-
-
- yield
-
-
- partial
-
-
- add
-
-
- remove
-
-
- get
-
-
- set
-
-
- where
-
-
- alias
-
-
-
-
-
\ No newline at end of file
+
+
+ compilation-unit
+
+
+
+
+
+ extern-alias-directives
+
+
+
+
+
+
+ using-directives
+
+
+
+
+
+
+ global-attributes
+
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+
+
+
+
+ namespace-name
+
+ namespace-or-type-name
+
+
+
+ type-name
+
+ namespace-or-type-name
+
+
+
+ namespace-or-type-name
+
+
+
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+ qualified-alias-member
+
+
+
+
+ namespace-or-type-name
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+
+ type
+
+
+
+ value-type
+
+
+ reference-type
+
+
+ type-parameter
+
+
+
+
+
+ value-type
+
+
+
+ struct-type
+
+
+ enum-type
+
+
+
+
+
+ struct-type
+
+
+
+ type-name
+
+
+ simple-type
+
+
+ nullable-type
+
+
+
+
+
+ simple-type
+
+
+
+ numeric-type
+
+
+ bool
+
+
+
+
+
+ numeric-type
+
+
+
+ integral-type
+
+
+ floating-point-type
+
+
+ decimal
+
+
+
+
+
+ integral-type
+
+
+
+ sbyte
+
+
+ byte
+
+
+ short
+
+
+ ushort
+
+
+ int
+
+
+ uint
+
+
+ long
+
+
+ ulong
+
+
+ char
+
+
+
+
+
+ floating-point-type
+
+
+
+ float
+
+
+ double
+
+
+
+
+
+ enum-type
+
+ type-name
+
+
+
+ nullable-type
+
+
+
+ non-nullable-value-type
+
+
+ ?
+
+
+
+
+
+ non-nullable-value-type
+
+
+
+ enum-type
+
+
+ type-name
+
+
+ simple-type
+
+
+
+
+
+ reference-type
+
+
+
+ class-type
+
+
+ interface-type
+
+
+ array-type
+
+
+ delegate-type
+
+
+
+
+
+ class-type
+
+
+
+ type-name
+
+
+ object
+
+
+ string
+
+
+
+
+
+ interface-type
+
+ type-name
+
+
+
+ array-type
+
+
+
+ non-array-type
+
+
+ rank-specifiers
+
+
+
+
+
+ non-array-type
+
+
+
+ value-type
+
+
+ class-type
+
+
+ interface-type
+
+
+ delegate-type
+
+
+ type-parameter
+
+
+
+
+
+ rank-specifiers
+
+
+
+ rank-specifier
+
+
+
+
+ rank-specifiers
+
+
+ rank-specifier
+
+
+
+
+
+
+
+ rank-specifier
+
+
+
+ [
+
+
+
+
+ dim-separators
+
+
+
+
+ ]
+
+
+
+
+
+ dim-separators
+
+
+
+ ,
+
+
+
+
+ dim-separators
+
+
+ ,
+
+
+
+
+
+
+
+ delegate-type
+
+ type-name
+
+
+
+ variable-reference
+
+ expression
+
+
+
+ argument-list
+
+
+
+ argument
+
+
+
+
+ argument-list
+
+
+ ,
+
+
+ argument
+
+
+
+
+
+
+
+ argument
+
+
+
+ expression
+
+
+
+
+ ref
+
+
+ variable-reference
+
+
+
+
+
+
+ out
+
+
+ variable-reference
+
+
+
+
+
+
+
+ primary-expression
+
+
+
+ array-creation-expression
+
+
+ primary-no-array-creation-expression
+
+
+
+
+
+ primary-no-array-creation-expression
+
+
+
+ literal
+
+
+ simple-name
+
+
+ parenthesized-expression
+
+
+ member-access
+
+
+ invocation-expression
+
+
+ element-access
+
+
+ this-access
+
+
+ base-access
+
+
+ post-increment-expression
+
+
+ post-decrement-expression
+
+
+ object-creation-expression
+
+
+ delegate-creation-expression
+
+
+ typeof-expression
+
+
+ checked-expression
+
+
+ unchecked-expression
+
+
+ default-value-expression
+
+
+ anonymous-method-expression
+
+
+
+
+
+ simple-name
+
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+ parenthesized-expression
+
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ member-access
+
+
+
+
+
+ primary-expression
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+ predefined-type
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+ qualified-alias-member
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+
+ predefined-type
+
+
+
+ bool
+
+
+ byte
+
+
+ char
+
+
+ decimal
+
+
+ double
+
+
+ float
+
+
+ int
+
+
+ long
+
+
+ object
+
+
+ sbyte
+
+
+ short
+
+
+ string
+
+
+ uint
+
+
+ ulong
+
+
+ ushort
+
+
+
+
+
+ invocation-expression
+
+
+
+ primary-expression
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+ element-access
+
+
+
+ primary-no-array-creation-expression
+
+
+ [
+
+
+ expression-list
+
+
+ ]
+
+
+
+
+
+ expression-list
+
+
+
+ expression
+
+
+
+
+ expression-list
+
+
+ ,
+
+
+ expression
+
+
+
+
+
+
+
+ this-access
+
+ this
+
+
+
+ base-access
+
+
+
+
+
+ base
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+ base
+
+
+ [
+
+
+ expression-list
+
+
+ ]
+
+
+
+
+
+
+
+ post-increment-expression
+
+
+
+ primary-expression
+
+
+ ++
+
+
+
+
+
+ post-decrement-expression
+
+
+
+ primary-expression
+
+
+ --
+
+
+
+
+
+ object-creation-expression
+
+
+
+ new
+
+
+ type
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+ array-creation-expression
+
+
+
+
+
+ new
+
+
+ non-array-type
+
+
+ [
+
+
+ expression-list
+
+
+ ]
+
+
+
+
+ rank-specifiers
+
+
+
+
+
+
+ array-initializer
+
+
+
+
+
+
+
+
+ new
+
+
+ array-type
+
+
+ array-initializer
+
+
+
+
+
+
+
+ delegate-creation-expression
+
+
+
+ new
+
+
+ delegate-type
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ typeof-expression
+
+
+
+
+
+ typeof
+
+
+ (
+
+
+ type
+
+
+ )
+
+
+
+
+
+
+ typeof
+
+
+ (
+
+
+ unbound-type-name
+
+
+ )
+
+
+
+
+
+
+ typeof
+
+
+ (
+
+
+ void
+
+
+ )
+
+
+
+
+
+
+
+ unbound-type-name
+
+
+
+
+
+ identifier
+
+
+
+
+ generic-dimension-specifier
+
+
+
+
+
+
+
+
+ identifier
+
+
+ ::
+
+
+ identifier
+
+
+
+
+ generic-dimension-specifier
+
+
+
+
+
+
+
+
+ unbound-type-name
+
+
+ .
+
+
+ identifier
+
+
+
+
+ generic-dimension-specifier
+
+
+
+
+
+
+
+
+
+ generic-dimension-specifier
+
+
+
+ <
+
+
+
+
+ commas
+
+
+
+
+ >
+
+
+
+
+
+ commas
+
+
+
+ ,
+
+
+
+
+ commas
+
+
+ ,
+
+
+
+
+
+
+
+ checked-expression
+
+
+
+ checked
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ unchecked-expression
+
+
+
+ unchecked
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ default-value-expression
+
+
+
+ default
+
+
+ (
+
+
+ type
+
+
+ )
+
+
+
+
+
+ anonymous-method-expression
+
+
+
+ delegate
+
+
+
+
+ anonymous-method-signature
+
+
+
+
+ block
+
+
+
+
+
+ anonymous-method-signature
+
+
+
+ (
+
+
+
+
+ anonymous-method-parameter-list
+
+
+
+
+ )
+
+
+
+
+
+ anonymous-method-parameter-list
+
+
+
+ anonymous-method-parameter
+
+
+
+
+ anonymous-method-parameter-list
+
+
+ ,
+
+
+ anonymous-method-parameter
+
+
+
+
+
+
+
+ anonymous-method-parameter
+
+
+
+
+
+ parameter-modifier
+
+
+
+
+ type
+
+
+ identifier
+
+
+
+
+
+ unary-expression
+
+
+
+ primary-expression
+
+
+
+
+ +
+
+
+ unary-expression
+
+
+
+
+
+
+ -
+
+
+ unary-expression
+
+
+
+
+
+
+ !
+
+
+ unary-expression
+
+
+
+
+
+
+ ~
+
+
+ unary-expression
+
+
+
+
+ pre-increment-expression
+
+
+ pre-decrement-expression
+
+
+ cast-expression
+
+
+
+
+
+ pre-increment-expression
+
+
+
+ ++
+
+
+ unary-expression
+
+
+
+
+
+ pre-decrement-expression
+
+
+
+ --
+
+
+ unary-expression
+
+
+
+
+
+ cast-expression
+
+
+
+ (
+
+
+ type
+
+
+ )
+
+
+ unary-expression
+
+
+
+
+
+ multiplicative-expression
+
+
+
+ unary-expression
+
+
+
+
+ multiplicative-expression
+
+
+ *
+
+
+ unary-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ /
+
+
+ unary-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ %
+
+
+ unary-expression
+
+
+
+
+
+
+
+ additive-expression
+
+
+
+ multiplicative-expression
+
+
+
+
+ additive-expression
+
+
+ +
+
+
+ multiplicative-expression
+
+
+
+
+
+
+ additive-expression
+
+
+ -
+
+
+ multiplicative-expression
+
+
+
+
+
+
+
+ shift-expression
+
+
+
+ additive-expression
+
+
+
+
+ shift-expression
+
+
+ <<
+
+
+ additive-expression
+
+
+
+
+
+
+ shift-expression
+
+
+ right-shift
+
+
+ additive-expression
+
+
+
+
+
+
+
+ relational-expression
+
+
+
+ shift-expression
+
+
+
+
+ relational-expression
+
+
+ <
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ <=
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >=
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ is
+
+
+ type
+
+
+
+
+
+
+ relational-expression
+
+
+ as
+
+
+ type
+
+
+
+
+
+
+
+ equality-expression
+
+
+
+ relational-expression
+
+
+
+
+ equality-expression
+
+
+ ==
+
+
+ relational-expression
+
+
+
+
+
+
+ equality-expression
+
+
+ !=
+
+
+ relational-expression
+
+
+
+
+
+
+
+ and-expression
+
+
+
+ equality-expression
+
+
+
+
+ and-expression
+
+
+ &
+
+
+ equality-expression
+
+
+
+
+
+
+
+ exclusive-or-expression
+
+
+
+ and-expression
+
+
+
+
+ exclusive-or-expression
+
+
+ ^
+
+
+ and-expression
+
+
+
+
+
+
+
+ inclusive-or-expression
+
+
+
+ exclusive-or-expression
+
+
+
+
+ inclusive-or-expression
+
+
+ |
+
+
+ exclusive-or-expression
+
+
+
+
+
+
+
+ conditional-and-expression
+
+
+
+ inclusive-or-expression
+
+
+
+
+ conditional-and-expression
+
+
+ &&
+
+
+ inclusive-or-expression
+
+
+
+
+
+
+
+ conditional-or-expression
+
+
+
+ conditional-and-expression
+
+
+
+
+ conditional-or-expression
+
+
+ ||
+
+
+ conditional-and-expression
+
+
+
+
+
+
+
+ null-coalescing-expression
+
+
+
+ conditional-or-expression
+
+
+
+
+ conditional-or-expression
+
+
+ ??
+
+
+ null-coalescing-expression
+
+
+
+
+
+
+
+ conditional-expression
+
+
+
+ null-coalescing-expression
+
+
+
+
+ null-coalescing-expression
+
+
+ ?
+
+
+ expression
+
+
+ :
+
+
+ expression
+
+
+
+
+
+
+
+ assignment
+
+
+
+ unary-expression
+
+
+ assignment-operator
+
+
+ expression
+
+
+
+
+
+ assignment-operator
+
+
+
+ =
+
+
+ +=
+
+
+ -=
+
+
+ *=
+
+
+ /=
+
+
+ %=
+
+
+ &=
+
+
+ |=
+
+
+ ^=
+
+
+ <<=
+
+
+ right-shift-assignment
+
+
+
+
+
+ expression
+
+
+
+ conditional-expression
+
+
+ assignment
+
+
+
+
+
+ constant-expression
+
+ expression
+
+
+
+ boolean-expression
+
+ expression
+
+
+
+ statement
+
+
+
+ labeled-statement
+
+
+ declaration-statement
+
+
+ embedded-statement
+
+
+
+
+
+ embedded-statement
+
+
+
+ block
+
+
+ empty-statement
+
+
+ expression-statement
+
+
+ selection-statement
+
+
+ iteration-statement
+
+
+ jump-statement
+
+
+ try-statement
+
+
+ checked-statement
+
+
+ unchecked-statement
+
+
+ lock-statement
+
+
+ using-statement
+
+
+ yield-statement
+
+
+
+
+
+ block
+
+
+
+ {
+
+
+
+
+ statement-list
+
+
+
+
+ }
+
+
+
+
+
+ statement-list
+
+
+
+ statement
+
+
+
+
+ statement-list
+
+
+ statement
+
+
+
+
+
+
+
+ empty-statement
+
+ ;
+
+
+
+ labeled-statement
+
+
+
+ identifier
+
+
+ :
+
+
+ statement
+
+
+
+
+
+ declaration-statement
+
+
+
+
+
+ local-variable-declaration
+
+
+ ;
+
+
+
+
+
+
+ local-constant-declaration
+
+
+ ;
+
+
+
+
+
+
+
+ local-variable-declaration
+
+
+
+ type
+
+
+ local-variable-declarators
+
+
+
+
+
+ local-variable-declarators
+
+
+
+ local-variable-declarator
+
+
+
+
+ local-variable-declarators
+
+
+ ,
+
+
+ local-variable-declarator
+
+
+
+
+
+
+
+ local-variable-declarator
+
+
+
+ identifier
+
+
+
+
+ identifier
+
+
+ =
+
+
+ local-variable-initializer
+
+
+
+
+
+
+
+ local-variable-initializer
+
+
+
+ expression
+
+
+ array-initializer
+
+
+
+
+
+ local-constant-declaration
+
+
+
+ const
+
+
+ type
+
+
+ constant-declarators
+
+
+
+
+
+ constant-declarators
+
+
+
+ constant-declarator
+
+
+
+
+ constant-declarators
+
+
+ ,
+
+
+ constant-declarator
+
+
+
+
+
+
+
+ constant-declarator
+
+
+
+ identifier
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+ expression-statement
+
+
+
+ statement-expression
+
+
+ ;
+
+
+
+
+
+ statement-expression
+
+
+
+ invocation-expression
+
+
+ object-creation-expression
+
+
+ assignment
+
+
+ post-increment-expression
+
+
+ post-decrement-expression
+
+
+ pre-increment-expression
+
+
+ pre-decrement-expression
+
+
+
+
+
+ selection-statement
+
+
+
+ if-statement
+
+
+ switch-statement
+
+
+
+
+
+ if-statement
+
+
+
+
+
+ if
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+
+ if
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+ else
+
+
+ embedded-statement
+
+
+
+
+
+
+
+ switch-statement
+
+
+
+ switch
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ switch-block
+
+
+
+
+
+ switch-block
+
+
+
+ {
+
+
+
+
+ switch-sections
+
+
+
+
+ }
+
+
+
+
+
+ switch-sections
+
+
+
+ switch-section
+
+
+
+
+ switch-sections
+
+
+ switch-section
+
+
+
+
+
+
+
+ switch-section
+
+
+
+ switch-labels
+
+
+ statement-list
+
+
+
+
+
+ switch-labels
+
+
+
+ switch-label
+
+
+
+
+ switch-labels
+
+
+ switch-label
+
+
+
+
+
+
+
+ switch-label
+
+
+
+
+
+ case
+
+
+ constant-expression
+
+
+ :
+
+
+
+
+
+
+ default
+
+
+ :
+
+
+
+
+
+
+
+ iteration-statement
+
+
+
+ while-statement
+
+
+ do-statement
+
+
+ for-statement
+
+
+ foreach-statement
+
+
+
+
+
+ while-statement
+
+
+
+ while
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ do-statement
+
+
+
+ do
+
+
+ embedded-statement
+
+
+ while
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ ;
+
+
+
+
+
+ for-statement
+
+
+
+ for
+
+
+ (
+
+
+
+
+ for-initializer
+
+
+
+
+ ;
+
+
+
+
+ for-condition
+
+
+
+
+ ;
+
+
+
+
+ for-iterator
+
+
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ for-initializer
+
+
+
+ local-variable-declaration
+
+
+ statement-expression-list
+
+
+
+
+
+ for-condition
+
+ boolean-expression
+
+
+
+ for-iterator
+
+ statement-expression-list
+
+
+
+ statement-expression-list
+
+
+
+ statement-expression
+
+
+
+
+ statement-expression-list
+
+
+ ,
+
+
+ statement-expression
+
+
+
+
+
+
+
+ foreach-statement
+
+
+
+ foreach
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ in
+
+
+ expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ jump-statement
+
+
+
+ break-statement
+
+
+ continue-statement
+
+
+ goto-statement
+
+
+ return-statement
+
+
+ throw-statement
+
+
+
+
+
+ break-statement
+
+
+
+ break
+
+
+ ;
+
+
+
+
+
+ continue-statement
+
+
+
+ continue
+
+
+ ;
+
+
+
+
+
+ goto-statement
+
+
+
+
+
+ goto
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+
+ goto
+
+
+ case
+
+
+ constant-expression
+
+
+ ;
+
+
+
+
+
+
+ goto
+
+
+ default
+
+
+ ;
+
+
+
+
+
+
+
+ return-statement
+
+
+
+ return
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+ throw-statement
+
+
+
+ throw
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+ try-statement
+
+
+
+
+
+ try
+
+
+ block
+
+
+ catch-clauses
+
+
+
+
+
+
+ try
+
+
+ block
+
+
+
+
+ catch-clauses
+
+
+
+
+ finally-clause
+
+
+
+
+
+
+
+ catch-clauses
+
+
+
+ specific-catch-clauses
+
+
+
+
+
+
+ specific-catch-clauses
+
+
+
+
+ general-catch-clause
+
+
+
+
+
+
+
+ specific-catch-clauses
+
+
+
+ specific-catch-clause
+
+
+
+
+ specific-catch-clauses
+
+
+ specific-catch-clause
+
+
+
+
+
+
+
+ specific-catch-clause
+
+
+
+ catch
+
+
+ (
+
+
+ class-type
+
+
+
+
+ identifier
+
+
+
+
+ )
+
+
+ block
+
+
+
+
+
+ general-catch-clause
+
+
+
+ catch
+
+
+ block
+
+
+
+
+
+ finally-clause
+
+
+
+ finally
+
+
+ block
+
+
+
+
+
+ checked-statement
+
+
+
+ checked
+
+
+ block
+
+
+
+
+
+ unchecked-statement
+
+
+
+ unchecked
+
+
+ block
+
+
+
+
+
+ lock-statement
+
+
+
+ lock
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ using-statement
+
+
+
+ using
+
+
+ (
+
+
+ resource-acquisition
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ resource-acquisition
+
+
+
+ local-variable-declaration
+
+
+ expression
+
+
+
+
+
+ yield-statement
+
+
+
+
+
+ yield
+
+
+ return
+
+
+ expression
+
+
+ ;
+
+
+
+
+
+
+ yield
+
+
+ break
+
+
+ ;
+
+
+
+
+
+
+
+ namespace-declaration
+
+
+
+ namespace
+
+
+ qualified-identifier
+
+
+ namespace-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ qualified-identifier
+
+
+
+ identifier
+
+
+
+
+ qualified-identifier
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ namespace-body
+
+
+
+ {
+
+
+
+
+ extern-alias-directives
+
+
+
+
+
+
+ using-directives
+
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ extern-alias-directives
+
+
+
+ extern-alias-directive
+
+
+
+
+ extern-alias-directives
+
+
+ extern-alias-directive
+
+
+
+
+
+
+
+ extern-alias-directive
+
+
+
+ extern
+
+
+ alias
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+ using-directives
+
+
+
+ using-directive
+
+
+
+
+ using-directives
+
+
+ using-directive
+
+
+
+
+
+
+
+ using-directive
+
+
+
+ using-alias-directive
+
+
+ using-namespace-directive
+
+
+
+
+
+ using-alias-directive
+
+
+
+ using
+
+
+ identifier
+
+
+ =
+
+
+ namespace-or-type-name
+
+
+ ;
+
+
+
+
+
+ using-namespace-directive
+
+
+
+ using
+
+
+ namespace-name
+
+
+ ;
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+ namespace-member-declaration
+
+
+
+
+ namespace-member-declarations
+
+
+ namespace-member-declaration
+
+
+
+
+
+
+
+ namespace-member-declaration
+
+
+
+ namespace-declaration
+
+
+ type-declaration
+
+
+
+
+
+ type-declaration
+
+
+
+ class-declaration
+
+
+ struct-declaration
+
+
+ interface-declaration
+
+
+ enum-declaration
+
+
+ delegate-declaration
+
+
+
+
+
+ qualified-alias-member
+
+
+
+ identifier
+
+
+ ::
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+ class-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ class-modifiers
+
+
+
+
+
+
+ partial
+
+
+
+
+ class
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+
+
+ class-base
+
+
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ class-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ class-modifiers
+
+
+
+ class-modifier
+
+
+
+
+ class-modifiers
+
+
+ class-modifier
+
+
+
+
+
+
+
+ class-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ abstract
+
+
+ sealed
+
+
+ static
+
+
+
+
+
+ class-base
+
+
+
+
+
+ :
+
+
+ class-type
+
+
+
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+
+ :
+
+
+ class-type
+
+
+ ,
+
+
+ interface-type-list
+
+
+
+
+
+
+
+ interface-type-list
+
+
+
+ interface-type
+
+
+
+
+ interface-type-list
+
+
+ ,
+
+
+ interface-type
+
+
+
+
+
+
+
+ class-body
+
+
+
+ {
+
+
+
+
+ class-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ class-member-declarations
+
+
+
+ class-member-declaration
+
+
+
+
+ class-member-declarations
+
+
+ class-member-declaration
+
+
+
+
+
+
+
+ class-member-declaration
+
+
+
+ constant-declaration
+
+
+ field-declaration
+
+
+ method-declaration
+
+
+ property-declaration
+
+
+ event-declaration
+
+
+ indexer-declaration
+
+
+ operator-declaration
+
+
+ constructor-declaration
+
+
+ finalizer-declaration
+
+
+ static-constructor-declaration
+
+
+ type-declaration
+
+
+
+
+
+ constant-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ constant-modifiers
+
+
+
+
+ const
+
+
+ type
+
+
+ constant-declarators
+
+
+ ;
+
+
+
+
+
+ constant-modifiers
+
+
+
+ constant-modifier
+
+
+
+
+ constant-modifiers
+
+
+ constant-modifier
+
+
+
+
+
+
+
+ constant-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ field-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ field-modifiers
+
+
+
+
+ type
+
+
+ variable-declarators
+
+
+ ;
+
+
+
+
+
+ field-modifiers
+
+
+
+ field-modifier
+
+
+
+
+ field-modifiers
+
+
+ field-modifier
+
+
+
+
+
+
+
+ field-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ readonly
+
+
+ volatile
+
+
+
+
+
+ variable-declarators
+
+
+
+ variable-declarator
+
+
+
+
+ variable-declarators
+
+
+ ,
+
+
+ variable-declarator
+
+
+
+
+
+
+
+ variable-declarator
+
+
+
+ identifier
+
+
+
+
+ identifier
+
+
+ =
+
+
+ variable-initializer
+
+
+
+
+
+
+
+ variable-initializer
+
+
+
+ expression
+
+
+ array-initializer
+
+
+
+
+
+ method-declaration
+
+
+
+ method-header
+
+
+ method-body
+
+
+
+
+
+ method-header
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ method-modifiers
+
+
+
+
+ return-type
+
+
+ member-name
+
+
+
+
+ type-parameter-list
+
+
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+
+
+
+ method-modifiers
+
+
+
+ method-modifier
+
+
+
+
+ method-modifiers
+
+
+ method-modifier
+
+
+
+
+
+
+
+ method-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ return-type
+
+
+
+ type
+
+
+ void
+
+
+
+
+
+ member-name
+
+
+
+ identifier
+
+
+
+
+ interface-type
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ method-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ formal-parameter-list
+
+
+
+ fixed-parameters
+
+
+
+
+ fixed-parameters
+
+
+ ,
+
+
+ parameter-array
+
+
+
+
+ parameter-array
+
+
+
+
+
+ fixed-parameters
+
+
+
+ fixed-parameter
+
+
+
+
+ fixed-parameters
+
+
+ ,
+
+
+ fixed-parameter
+
+
+
+
+
+
+
+ fixed-parameter
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ parameter-modifier
+
+
+
+
+ type
+
+
+ identifier
+
+
+
+
+
+ parameter-modifier
+
+
+
+ ref
+
+
+ out
+
+
+
+
+
+ parameter-array
+
+
+
+
+
+ attributes
+
+
+
+
+ params
+
+
+ array-type
+
+
+ identifier
+
+
+
+
+
+ property-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ property-modifiers
+
+
+
+
+ type
+
+
+ member-name
+
+
+ {
+
+
+ accessor-declarations
+
+
+ }
+
+
+
+
+
+ property-modifiers
+
+
+
+ property-modifier
+
+
+
+
+ property-modifiers
+
+
+ property-modifier
+
+
+
+
+
+
+
+ property-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ accessor-declarations
+
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ accessor-modifier
+
+
+
+
+ get
+
+
+ accessor-body
+
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ accessor-modifier
+
+
+
+
+ set
+
+
+ accessor-body
+
+
+
+
+
+ accessor-modifier
+
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+ protected
+
+
+ internal
+
+
+
+
+
+
+ internal
+
+
+ protected
+
+
+
+
+
+
+
+ accessor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ event-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ event-modifiers
+
+
+
+
+ event
+
+
+ type
+
+
+ variable-declarators
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ event-modifiers
+
+
+
+
+ event
+
+
+ type
+
+
+ member-name
+
+
+ {
+
+
+ event-accessor-declarations
+
+
+ }
+
+
+
+
+
+
+
+ event-modifiers
+
+
+
+ event-modifier
+
+
+
+
+ event-modifiers
+
+
+ event-modifier
+
+
+
+
+
+
+
+ event-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ event-accessor-declarations
+
+
+
+
+
+ add-accessor-declaration
+
+
+ remove-accessor-declaration
+
+
+
+
+
+
+ remove-accessor-declaration
+
+
+ add-accessor-declaration
+
+
+
+
+
+
+
+ add-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ add
+
+
+ block
+
+
+
+
+
+ remove-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ remove
+
+
+ block
+
+
+
+
+
+ indexer-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ indexer-modifiers
+
+
+
+
+ indexer-declarator
+
+
+ {
+
+
+ accessor-declarations
+
+
+ }
+
+
+
+
+
+ indexer-modifiers
+
+
+
+ indexer-modifier
+
+
+
+
+ indexer-modifiers
+
+
+ indexer-modifier
+
+
+
+
+
+
+
+ indexer-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ indexer-declarator
+
+
+
+
+
+ type
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+
+
+
+
+ type
+
+
+ interface-type
+
+
+ .
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+
+
+
+
+
+ operator-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ operator-modifiers
+
+
+ operator-declarator
+
+
+ operator-body
+
+
+
+
+
+ operator-modifiers
+
+
+
+ operator-modifier
+
+
+
+
+ operator-modifiers
+
+
+ operator-modifier
+
+
+
+
+
+
+
+ operator-modifier
+
+
+
+ public
+
+
+ static
+
+
+ extern
+
+
+
+
+
+ operator-declarator
+
+
+
+ unary-operator-declarator
+
+
+ binary-operator-declarator
+
+
+ conversion-operator-declarator
+
+
+
+
+
+ unary-operator-declarator
+
+
+
+ type
+
+
+ operator
+
+
+ overloadable-unary-operator
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+ overloadable-unary-operator
+
+
+
+ +
+
+
+ -
+
+
+ !
+
+
+ ~
+
+
+ ++
+
+
+ --
+
+
+ true
+
+
+ false
+
+
+
+
+
+ binary-operator-declarator
+
+
+
+ type
+
+
+ operator
+
+
+ overloadable-binary-operator
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ ,
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+ overloadable-binary-operator
+
+
+
+ +
+
+
+ -
+
+
+ *
+
+
+ /
+
+
+ %
+
+
+ &
+
+
+ |
+
+
+ ^
+
+
+ <<
+
+
+ right-shift
+
+
+ ==
+
+
+ !=
+
+
+ >
+
+
+ <
+
+
+ >=
+
+
+ <=
+
+
+
+
+
+ conversion-operator-declarator
+
+
+
+
+
+ implicit
+
+
+ operator
+
+
+ type
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+
+ explicit
+
+
+ operator
+
+
+ type
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+
+
+ operator-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ constructor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ constructor-modifiers
+
+
+
+
+ constructor-declarator
+
+
+ constructor-body
+
+
+
+
+
+ constructor-modifiers
+
+
+
+ constructor-modifier
+
+
+
+
+ constructor-modifiers
+
+
+ constructor-modifier
+
+
+
+
+
+
+
+ constructor-modifier
+
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ extern
+
+
+
+
+
+ constructor-declarator
+
+
+
+ identifier
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ constructor-initializer
+
+
+
+
+
+
+
+ constructor-initializer
+
+
+
+
+
+ :
+
+
+ base
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+ :
+
+
+ this
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+
+ constructor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ static-constructor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ static-constructor-modifiers
+
+
+ identifier
+
+
+ (
+
+
+ )
+
+
+ static-constructor-body
+
+
+
+
+
+ static-constructor-modifiers
+
+
+
+
+
+
+
+ extern
+
+
+
+
+ static
+
+
+
+
+
+
+ static
+
+
+
+
+ extern
+
+
+
+
+
+
+
+
+
+ static-constructor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ finalizer-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ extern
+
+
+
+
+ ~
+
+
+ identifier
+
+
+ (
+
+
+ )
+
+
+ finalizer-body
+
+
+
+
+
+ finalizer-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ struct-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ struct-modifiers
+
+
+
+
+
+
+ partial
+
+
+
+
+ struct
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+
+
+ struct-interfaces
+
+
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ struct-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ struct-modifiers
+
+
+
+ struct-modifier
+
+
+
+
+ struct-modifiers
+
+
+ struct-modifier
+
+
+
+
+
+
+
+ struct-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ struct-interfaces
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+ struct-body
+
+
+
+ {
+
+
+
+
+ struct-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ struct-member-declarations
+
+
+
+ struct-member-declaration
+
+
+
+
+ struct-member-declarations
+
+
+ struct-member-declaration
+
+
+
+
+
+
+
+ struct-member-declaration
+
+
+
+ constant-declaration
+
+
+ field-declaration
+
+
+ method-declaration
+
+
+ property-declaration
+
+
+ event-declaration
+
+
+ indexer-declaration
+
+
+ operator-declaration
+
+
+ constructor-declaration
+
+
+ static-constructor-declaration
+
+
+ type-declaration
+
+
+
+
+
+ array-initializer
+
+
+
+
+
+ {
+
+
+
+
+ variable-initializer-list
+
+
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ variable-initializer-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ variable-initializer-list
+
+
+
+ variable-initializer
+
+
+
+
+ variable-initializer-list
+
+
+ ,
+
+
+ variable-initializer
+
+
+
+
+
+
+
+ interface-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ interface-modifiers
+
+
+
+
+
+
+ partial
+
+
+
+
+ interface
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+
+
+ interface-base
+
+
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ interface-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ interface-modifiers
+
+
+
+ interface-modifier
+
+
+
+
+ interface-modifiers
+
+
+ interface-modifier
+
+
+
+
+
+
+
+ interface-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ interface-base
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+ interface-body
+
+
+
+ {
+
+
+
+
+ interface-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ interface-member-declarations
+
+
+
+ interface-member-declaration
+
+
+
+
+ interface-member-declarations
+
+
+ interface-member-declaration
+
+
+
+
+
+
+
+ interface-member-declaration
+
+
+
+ interface-method-declaration
+
+
+ interface-property-declaration
+
+
+ interface-event-declaration
+
+
+ interface-indexer-declaration
+
+
+
+
+
+ interface-method-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ return-type
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ ;
+
+
+
+
+
+ interface-property-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ type
+
+
+ identifier
+
+
+ {
+
+
+ interface-accessors
+
+
+ }
+
+
+
+
+
+ interface-accessors
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+
+
+
+ interface-event-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ event
+
+
+ type
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+ interface-indexer-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ type
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+ {
+
+
+ interface-accessors
+
+
+ }
+
+
+
+
+
+ enum-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ enum-modifiers
+
+
+
+
+ enum
+
+
+ identifier
+
+
+
+
+ enum-base
+
+
+
+
+ enum-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ enum-base
+
+
+
+ :
+
+
+ integral-type
+
+
+
+
+
+ enum-body
+
+
+
+
+
+ {
+
+
+
+
+ enum-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ enum-member-declarations
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ enum-modifiers
+
+
+
+ enum-modifier
+
+
+
+
+ enum-modifiers
+
+
+ enum-modifier
+
+
+
+
+
+
+
+ enum-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ enum-member-declarations
+
+
+
+ enum-member-declaration
+
+
+
+
+ enum-member-declarations
+
+
+ ,
+
+
+ enum-member-declaration
+
+
+
+
+
+
+
+ enum-member-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ identifier
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ identifier
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+
+
+ delegate-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ delegate-modifiers
+
+
+
+
+ delegate
+
+
+ return-type
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ ;
+
+
+
+
+
+ delegate-modifiers
+
+
+
+ delegate-modifier
+
+
+
+
+ delegate-modifiers
+
+
+ delegate-modifier
+
+
+
+
+
+
+
+ delegate-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ global-attributes
+
+ global-attribute-sections
+
+
+
+ global-attribute-sections
+
+
+
+ global-attribute-section
+
+
+
+
+ global-attribute-sections
+
+
+ global-attribute-section
+
+
+
+
+
+
+
+ global-attribute-section
+
+
+
+
+
+ [
+
+
+ global-attribute-target-specifier
+
+
+ attribute-list
+
+
+ ]
+
+
+
+
+
+
+ [
+
+
+ global-attribute-target-specifier
+
+
+ attribute-list
+
+
+ ,
+
+
+ ]
+
+
+
+
+
+
+
+ global-attribute-target-specifier
+
+
+
+ global-attribute-target
+
+
+ :
+
+
+
+
+
+ global-attribute-target
+
+
+
+ identifier
+
+
+ keyword
+
+
+
+
+
+ attributes
+
+ attribute-sections
+
+
+
+ attribute-sections
+
+
+
+ attribute-section
+
+
+
+
+ attribute-sections
+
+
+ attribute-section
+
+
+
+
+
+
+
+ attribute-section
+
+
+
+
+
+ [
+
+
+
+
+ attribute-target-specifier
+
+
+
+
+ attribute-list
+
+
+ ]
+
+
+
+
+
+
+ [
+
+
+
+
+ attribute-target-specifier
+
+
+
+
+ attribute-list
+
+
+ ,
+
+
+ ]
+
+
+
+
+
+
+
+ attribute-target-specifier
+
+
+
+ attribute-target
+
+
+ :
+
+
+
+
+
+ attribute-target
+
+
+
+ identifier
+
+
+ keyword
+
+
+
+
+
+ attribute-list
+
+
+
+ attribute
+
+
+
+
+ attribute-list
+
+
+ ,
+
+
+ attribute
+
+
+
+
+
+
+
+ attribute
+
+
+
+ attribute-name
+
+
+
+
+ attribute-arguments
+
+
+
+
+
+
+
+ attribute-name
+
+ type-name
+
+
+
+ attribute-arguments
+
+
+
+
+
+ (
+
+
+
+
+ positional-argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+ (
+
+
+ positional-argument-list
+
+
+ ,
+
+
+ named-argument-list
+
+
+ )
+
+
+
+
+
+
+ (
+
+
+ named-argument-list
+
+
+ )
+
+
+
+
+
+
+
+ positional-argument-list
+
+
+
+ positional-argument
+
+
+
+
+ positional-argument-list
+
+
+ ,
+
+
+ positional-argument
+
+
+
+
+
+
+
+ positional-argument
+
+ attribute-argument-expression
+
+
+
+ named-argument-list
+
+
+
+ named-argument
+
+
+
+
+ named-argument-list
+
+
+ ,
+
+
+ named-argument
+
+
+
+
+
+
+
+ named-argument
+
+
+
+ identifier
+
+
+ =
+
+
+ attribute-argument-expression
+
+
+
+
+
+ attribute-argument-expression
+
+ expression
+
+
+
+ type-parameter-list
+
+
+
+ <
+
+
+ type-parameters
+
+
+ >
+
+
+
+
+
+ type-parameters
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ type-parameter
+
+
+
+
+
+
+ type-parameters
+
+
+ ,
+
+
+
+
+ attributes
+
+
+
+
+ type-parameter
+
+
+
+
+
+
+
+ type-parameter
+
+ identifier
+
+
+
+ type-argument-list
+
+
+
+ <
+
+
+ type-arguments
+
+
+ >
+
+
+
+
+
+ type-arguments
+
+
+
+ type-argument
+
+
+
+
+ type-arguments
+
+
+ ,
+
+
+ type-argument
+
+
+
+
+
+
+
+ type-argument
+
+ type
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+ type-parameter-constraints-clause
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+ type-parameter-constraints-clause
+
+
+
+
+
+
+
+ type-parameter-constraints-clause
+
+
+
+ where
+
+
+ type-parameter
+
+
+ :
+
+
+ type-parameter-constraints
+
+
+
+
+
+ type-parameter-constraints
+
+
+
+ primary-constraint
+
+
+ secondary-constraints
+
+
+ constructor-constraint
+
+
+
+
+ primary-constraint
+
+
+ ,
+
+
+ secondary-constraints
+
+
+
+
+
+
+ primary-constraint
+
+
+ ,
+
+
+ constructor-constraint
+
+
+
+
+
+
+ secondary-constraints
+
+
+ ,
+
+
+ constructor-constraint
+
+
+
+
+
+
+ primary-constraint
+
+
+ ,
+
+
+ secondary-constraints
+
+
+ ,
+
+
+ constructor-constraint
+
+
+
+
+
+
+
+ primary-constraint
+
+
+
+ class-type
+
+
+ class
+
+
+ struct
+
+
+
+
+
+ secondary-constraints
+
+
+
+ interface-type
+
+
+ type-parameter
+
+
+
+
+ secondary-constraints
+
+
+ ,
+
+
+ interface-type
+
+
+
+
+
+
+ secondary-constraints
+
+
+ ,
+
+
+ type-parameter
+
+
+
+
+
+
+
+ constructor-constraint
+
+
+
+ new
+
+
+ (
+
+
+ )
+
+
+
+
+
+ keyword
+
+
+
+ abstract
+
+
+ as
+
+
+ base
+
+
+ bool
+
+
+ break
+
+
+ byte
+
+
+ case
+
+
+ catch
+
+
+ char
+
+
+ checked
+
+
+ class
+
+
+ const
+
+
+ continue
+
+
+ decimal
+
+
+ default
+
+
+ delegate
+
+
+ do
+
+
+ double
+
+
+ else
+
+
+ enum
+
+
+ event
+
+
+ explicit
+
+
+ extern
+
+
+ false
+
+
+ finally
+
+
+ fixed
+
+
+ float
+
+
+ for
+
+
+ foreach
+
+
+ goto
+
+
+ if
+
+
+ implicit
+
+
+ in
+
+
+ int
+
+
+ interface
+
+
+ internal
+
+
+ is
+
+
+ lock
+
+
+ long
+
+
+ namespace
+
+
+ new
+
+
+ null
+
+
+ object
+
+
+ operator
+
+
+ out
+
+
+ override
+
+
+ params
+
+
+ private
+
+
+ protected
+
+
+ public
+
+
+ readonly
+
+
+ ref
+
+
+ return
+
+
+ sbyte
+
+
+ sealed
+
+
+ short
+
+
+ sizeof
+
+
+ stackalloc
+
+
+ static
+
+
+ string
+
+
+ struct
+
+
+ switch
+
+
+ this
+
+
+ throw
+
+
+ true
+
+
+ try
+
+
+ typeof
+
+
+ uint
+
+
+ ulong
+
+
+ unchecked
+
+
+ unsafe
+
+
+ ushort
+
+
+ using
+
+
+ virtual
+
+
+ void
+
+
+ volatile
+
+
+ while
+
+
+ yield
+
+
+ partial
+
+
+ add
+
+
+ remove
+
+
+ get
+
+
+ set
+
+
+ where
+
+
+ alias
+
+
+
+
+
diff --git a/topics/grammars/csharp/msft-ls-1.0/Makefile b/topics/grammars/csharp/msft-ls-1.0/Makefile
index ed06dafa..6cf47d29 100644
--- a/topics/grammars/csharp/msft-ls-1.0/Makefile
+++ b/topics/grammars/csharp/msft-ls-1.0/Makefile
@@ -10,4 +10,4 @@ clean:
test:
make build
- ../../../../shared/tools/gdts msft-ls-grammar.bgf extracted-grammar.bgf
+ ../../../../shared/tools/gdt msft-ls-grammar.bgf extracted-grammar.bgf
diff --git a/topics/grammars/csharp/msft-ls-1.0/extracted-grammar.bgf b/topics/grammars/csharp/msft-ls-1.0/extracted-grammar.bgf
index 134cf920..d38b4404 100644
--- a/topics/grammars/csharp/msft-ls-1.0/extracted-grammar.bgf
+++ b/topics/grammars/csharp/msft-ls-1.0/extracted-grammar.bgf
@@ -1,6152 +1,6151 @@
-
-
-
- namespace-name
-
- namespace-or-type-name
-
-
-
- type-name
-
- namespace-or-type-name
-
-
-
- namespace-or-type-name
-
-
-
- identifier
-
-
-
-
- namespace-or-type-name
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- type
-
-
-
- value-type
-
-
- reference-type
-
-
-
-
-
- value-type
-
-
-
- struct-type
-
-
- enum-type
-
-
-
-
-
- struct-type
-
-
-
- type-name
-
-
- simple-type
-
-
-
-
-
- simple-type
-
-
-
- numeric-type
-
-
- bool
-
-
-
-
-
- numeric-type
-
-
-
- integral-type
-
-
- floating-point-type
-
-
- decimal
-
-
-
-
-
- integral-type
-
-
-
- sbyte
-
-
- byte
-
-
- short
-
-
- ushort
-
-
- int
-
-
- uint
-
-
- long
-
-
- ulong
-
-
- char
-
-
-
-
-
- floating-point-type
-
-
-
- float
-
-
- double
-
-
-
-
-
- enum-type
-
- type-name
-
-
-
- reference-type
-
-
-
- class-type
-
-
- interface-type
-
-
- array-type
-
-
- delegate-type
-
-
-
-
-
- class-type
-
-
-
- type-name
-
-
- object
-
-
- string
-
-
-
-
-
- interface-type
-
- type-name
-
-
-
- array-type
-
-
-
- non-array-type
-
-
- rank-specifiers
-
-
-
-
-
- non-array-type
-
- type
-
-
-
- rank-specifiers
-
-
-
- rank-specifier
-
-
-
-
- rank-specifiers
-
-
- rank-specifier
-
-
-
-
-
-
-
- rank-specifier
-
-
-
- [
-
-
-
-
- dim-separators
-
-
-
-
- ]
-
-
-
-
-
- dim-separators
-
-
-
- ,
-
-
-
-
- dim-separators
-
-
- ,
-
-
-
-
-
-
-
- delegate-type
-
- type-name
-
-
-
- variable-reference
-
- expression
-
-
-
- argument-list
-
-
-
- argument
-
-
-
-
- argument-list
-
-
- ,
-
-
- argument
-
-
-
-
-
-
-
- argument
-
-
-
- expression
-
-
-
-
- ref
-
-
- variable-reference
-
-
-
-
-
-
- out
-
-
- variable-reference
-
-
-
-
-
-
-
- primary-expression
-
-
-
- primary-no-array-creation-expression
-
-
- array-creation-expression
-
-
-
-
-
- primary-no-array-creation-expression
-
-
-
- literal
-
-
- simple-name
-
-
- parenthesized-expression
-
-
- member-access
-
-
- invocation-expression
-
-
- element-access
-
-
- this-access
-
-
- base-access
-
-
- post-increment-expression
-
-
- post-decrement-expression
-
-
- object-creation-expression
-
-
- delegate-creation-expression
-
-
- typeof-expression
-
-
- checked-expression
-
-
- unchecked-expression
-
-
-
-
-
- simple-name
-
- identifier
-
-
-
- parenthesized-expression
-
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- member-access
-
-
-
-
-
- primary-expression
-
-
- .
-
-
- identifier
-
-
-
-
-
-
- predefined-type
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- predefined-type
-
-
-
- bool
-
-
- byte
-
-
- char
-
-
- decimal
-
-
- double
-
-
- float
-
-
- int
-
-
- long
-
-
- object
-
-
- sbyte
-
-
- short
-
-
- string
-
-
- uint
-
-
- ulong
-
-
- ushort
-
-
-
-
-
- invocation-expression
-
-
-
- primary-expression
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
- element-access
-
-
-
- primary-no-array-creation-expression
-
-
- [
-
-
- expression-list
-
-
- ]
-
-
-
-
-
- expression-list
-
-
-
- expression
-
-
-
-
- expression-list
-
-
- ,
-
-
- expression
-
-
-
-
-
-
-
- this-access
-
- this
-
-
-
- base-access
-
-
-
-
-
- base
-
-
- .
-
-
- identifier
-
-
-
-
-
-
- base
-
-
- [
-
-
- expression-list
-
-
- ]
-
-
-
-
-
-
-
- post-increment-expression
-
-
-
- primary-expression
-
-
- ++
-
-
-
-
-
- post-decrement-expression
-
-
-
- primary-expression
-
-
- --
-
-
-
-
-
- object-creation-expression
-
-
-
- new
-
-
- type
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
- array-creation-expression
-
-
-
-
-
- new
-
-
- non-array-type
-
-
- [
-
-
- expression-list
-
-
- ]
-
-
-
-
- rank-specifiers
-
-
-
-
-
-
- array-initializer
-
-
-
-
-
-
-
-
- new
-
-
- array-type
-
-
- array-initializer
-
-
-
-
-
-
-
- delegate-creation-expression
-
-
-
- new
-
-
- delegate-type
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- typeof-expression
-
-
-
-
-
- typeof
-
-
- (
-
-
- type
-
-
- )
-
-
-
-
-
-
- typeof
-
-
- (
-
-
- void
-
-
- )
-
-
-
-
-
-
-
- checked-expression
-
-
-
- checked
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- unchecked-expression
-
-
-
- unchecked
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- unary-expression
-
-
-
- primary-expression
-
-
-
-
- +
-
-
- unary-expression
-
-
-
-
-
-
- -
-
-
- unary-expression
-
-
-
-
-
-
- !
-
-
- unary-expression
-
-
-
-
-
-
- ~
-
-
- unary-expression
-
-
-
-
- pre-increment-expression
-
-
- pre-decrement-expression
-
-
- cast-expression
-
-
-
-
-
- pre-increment-expression
-
-
-
- ++
-
-
- unary-expression
-
-
-
-
-
- pre-decrement-expression
-
-
-
- --
-
-
- unary-expression
-
-
-
-
-
- cast-expression
-
-
-
- (
-
-
- type
-
-
- )
-
-
- unary-expression
-
-
-
-
-
- multiplicative-expression
-
-
-
- unary-expression
-
-
-
-
- multiplicative-expression
-
-
- *
-
-
- unary-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- /
-
-
- unary-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- %
-
-
- unary-expression
-
-
-
-
-
-
-
- additive-expression
-
-
-
- multiplicative-expression
-
-
-
-
- additive-expression
-
-
- +
-
-
- multiplicative-expression
-
-
-
-
-
-
- additive-expression
-
-
- -
-
-
- multiplicative-expression
-
-
-
-
-
-
-
- shift-expression
-
-
-
- additive-expression
-
-
-
-
- shift-expression
-
-
- <<
-
-
- additive-expression
-
-
-
-
-
-
- shift-expression
-
-
- >>
-
-
- additive-expression
-
-
-
-
-
-
-
- relational-expression
-
-
-
- shift-expression
-
-
-
-
- relational-expression
-
-
- <
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- <=
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >=
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- is
-
-
- type
-
-
-
-
-
-
- relational-expression
-
-
- as
-
-
- type
-
-
-
-
-
-
-
- equality-expression
-
-
-
- relational-expression
-
-
-
-
- equality-expression
-
-
- ==
-
-
- relational-expression
-
-
-
-
-
-
- equality-expression
-
-
- !=
-
-
- relational-expression
-
-
-
-
-
-
-
- and-expression
-
-
-
- equality-expression
-
-
-
-
- and-expression
-
-
- &
-
-
- equality-expression
-
-
-
-
-
-
-
- exclusive-or-expression
-
-
-
- and-expression
-
-
-
-
- exclusive-or-expression
-
-
- ^
-
-
- and-expression
-
-
-
-
-
-
-
- inclusive-or-expression
-
-
-
- exclusive-or-expression
-
-
-
-
- inclusive-or-expression
-
-
- |
-
-
- exclusive-or-expression
-
-
-
-
-
-
-
- conditional-and-expression
-
-
-
- inclusive-or-expression
-
-
-
-
- conditional-and-expression
-
-
- &&
-
-
- inclusive-or-expression
-
-
-
-
-
-
-
- conditional-or-expression
-
-
-
- conditional-and-expression
-
-
-
-
- conditional-or-expression
-
-
- ||
-
-
- conditional-and-expression
-
-
-
-
-
-
-
- conditional-expression
-
-
-
- conditional-or-expression
-
-
-
-
- conditional-or-expression
-
-
- ?
-
-
- expression
-
-
- :
-
-
- expression
-
-
-
-
-
-
-
- assignment
-
-
-
- unary-expression
-
-
- assignment-operator
-
-
- expression
-
-
-
-
-
- assignment-operator
-
-
-
- =
-
-
- +=
-
-
- -=
-
-
- *=
-
-
- /=
-
-
- %=
-
-
- &=
-
-
- |=
-
-
- ^=
-
-
- <<=
-
-
- >>=
-
-
-
-
-
- expression
-
-
-
- conditional-expression
-
-
- assignment
-
-
-
-
-
- constant-expression
-
- expression
-
-
-
- boolean-expression
-
- expression
-
-
-
- statement
-
-
-
- labeled-statement
-
-
- declaration-statement
-
-
- embedded-statement
-
-
-
-
-
- embedded-statement
-
-
-
- block
-
-
- empty-statement
-
-
- expression-statement
-
-
- selection-statement
-
-
- iteration-statement
-
-
- jump-statement
-
-
- try-statement
-
-
- checked-statement
-
-
- unchecked-statement
-
-
- lock-statement
-
-
- using-statement
-
-
-
-
-
- block
-
-
-
- {
-
-
-
-
- statement-list
-
-
-
-
- }
-
-
-
-
-
- statement-list
-
-
-
- statement
-
-
-
-
- statement-list
-
-
- statement
-
-
-
-
-
-
-
- empty-statement
-
- ;
-
-
-
- labeled-statement
-
-
-
- identifier
-
-
- :
-
-
- statement
-
-
-
-
-
- declaration-statement
-
-
-
-
-
- local-variable-declaration
-
-
- ;
-
-
-
-
-
-
- local-constant-declaration
-
-
- ;
-
-
-
-
-
-
-
- local-variable-declaration
-
-
-
- type
-
-
- local-variable-declarators
-
-
-
-
-
- local-variable-declarators
-
-
-
- local-variable-declarator
-
-
-
-
- local-variable-declarators
-
-
- ,
-
-
- local-variable-declarator
-
-
-
-
-
-
-
- local-variable-declarator
-
-
-
- identifier
-
-
-
-
- identifier
-
-
- =
-
-
- local-variable-initializer
-
-
-
-
-
-
-
- local-variable-initializer
-
-
-
- expression
-
-
- array-initializer
-
-
-
-
-
- local-constant-declaration
-
-
-
- const
-
-
- type
-
-
- constant-declarators
-
-
-
-
-
- constant-declarators
-
-
-
- constant-declarator
-
-
-
-
- constant-declarators
-
-
- ,
-
-
- constant-declarator
-
-
-
-
-
-
-
- constant-declarator
-
-
-
- identifier
-
-
- =
-
-
- constant-expression
-
-
-
-
-
- expression-statement
-
-
-
- statement-expression
-
-
- ;
-
-
-
-
-
- statement-expression
-
-
-
- invocation-expression
-
-
- object-creation-expression
-
-
- assignment
-
-
- post-increment-expression
-
-
- post-decrement-expression
-
-
- pre-increment-expression
-
-
- pre-decrement-expression
-
-
-
-
-
- selection-statement
-
-
-
- if-statement
-
-
- switch-statement
-
-
-
-
-
- if-statement
-
-
-
-
-
- if
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
-
- if
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
- else
-
-
- embedded-statement
-
-
-
-
-
-
-
- switch-statement
-
-
-
- switch
-
-
- (
-
-
- expression
-
-
- )
-
-
- switch-block
-
-
-
-
-
- switch-block
-
-
-
- {
-
-
-
-
- switch-sections
-
-
-
-
- }
-
-
-
-
-
- switch-sections
-
-
-
- switch-section
-
-
-
-
- switch-sections
-
-
- switch-section
-
-
-
-
-
-
-
- switch-section
-
-
-
- switch-labels
-
-
- statement-list
-
-
-
-
-
- switch-labels
-
-
-
- switch-label
-
-
-
-
- switch-labels
-
-
- switch-label
-
-
-
-
-
-
-
- switch-label
-
-
-
-
-
- case
-
-
- constant-expression
-
-
- :
-
-
-
-
-
-
- default
-
-
- :
-
-
-
-
-
-
-
- iteration-statement
-
-
-
- while-statement
-
-
- do-statement
-
-
- for-statement
-
-
- foreach-statement
-
-
-
-
-
- while-statement
-
-
-
- while
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- do-statement
-
-
-
- do
-
-
- embedded-statement
-
-
- while
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- ;
-
-
-
-
-
- for-statement
-
-
-
- for
-
-
- (
-
-
-
-
- for-initializer
-
-
-
-
- ;
-
-
-
-
- for-condition
-
-
-
-
- ;
-
-
-
-
- for-iterator
-
-
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- for-initializer
-
-
-
- local-variable-declaration
-
-
- statement-expression-list
-
-
-
-
-
- for-condition
-
- boolean-expression
-
-
-
- for-iterator
-
- statement-expression-list
-
-
-
- statement-expression-list
-
-
-
- statement-expression
-
-
-
-
- statement-expression-list
-
-
- ,
-
-
- statement-expression
-
-
-
-
-
-
-
- foreach-statement
-
-
-
- foreach
-
-
- (
-
-
- type
-
-
- identifier
-
-
- in
-
-
- expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- jump-statement
-
-
-
- break-statement
-
-
- continue-statement
-
-
- goto-statement
-
-
- return-statement
-
-
- throw-statement
-
-
-
-
-
- break-statement
-
-
-
- break
-
-
- ;
-
-
-
-
-
- continue-statement
-
-
-
- continue
-
-
- ;
-
-
-
-
-
- goto-statement
-
-
-
-
-
- goto
-
-
- identifier
-
-
- ;
-
-
-
-
-
-
- goto
-
-
- case
-
-
- constant-expression
-
-
- ;
-
-
-
-
-
-
- goto
-
-
- default
-
-
- ;
-
-
-
-
-
-
-
- return-statement
-
-
-
- return
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
- throw-statement
-
-
-
- throw
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
- try-statement
-
-
-
-
-
- try
-
-
- block
-
-
- catch-clauses
-
-
-
-
-
-
- try
-
-
- block
-
-
- finally-clause
-
-
-
-
-
-
- try
-
-
- block
-
-
- catch-clauses
-
-
- finally-clause
-
-
-
-
-
-
-
- catch-clauses
-
-
-
-
-
- specific-catch-clauses
-
-
-
-
- general-catch-clause
-
-
-
-
-
-
-
-
-
-
- specific-catch-clauses
-
-
-
-
- general-catch-clause
-
-
-
-
-
-
-
- specific-catch-clauses
-
-
-
- specific-catch-clause
-
-
-
-
- specific-catch-clauses
-
-
- specific-catch-clause
-
-
-
-
-
-
-
- specific-catch-clause
-
-
-
- catch
-
-
- (
-
-
- class-type
-
-
-
-
- identifier
-
-
-
-
- )
-
-
- block
-
-
-
-
-
- general-catch-clause
-
-
-
- catch
-
-
- block
-
-
-
-
-
- finally-clause
-
-
-
- finally
-
-
- block
-
-
-
-
-
- checked-statement
-
-
-
- checked
-
-
- block
-
-
-
-
-
- unchecked-statement
-
-
-
- unchecked
-
-
- block
-
-
-
-
-
- lock-statement
-
-
-
- lock
-
-
- (
-
-
- expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- using-statement
-
-
-
- using
-
-
- (
-
-
- resource-acquisition
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- resource-acquisition
-
-
-
- local-variable-declaration
-
-
- expression
-
-
-
-
-
- compilation-unit
-
-
-
-
-
- using-directives
-
-
-
-
-
-
- global-attributes
-
-
-
-
-
-
- namespace-member-declarations
-
-
-
-
-
-
-
- namespace-declaration
-
-
-
- namespace
-
-
- qualified-identifier
-
-
- namespace-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- qualified-identifier
-
-
-
- identifier
-
-
-
-
- qualified-identifier
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- namespace-body
-
-
-
- {
-
-
-
-
- using-directives
-
-
-
-
-
-
- namespace-member-declarations
-
-
-
-
- }
-
-
-
-
-
- using-directives
-
-
-
- using-directive
-
-
-
-
- using-directives
-
-
- using-directive
-
-
-
-
-
-
-
- using-directive
-
-
-
- using-alias-directive
-
-
- using-namespace-directive
-
-
-
-
-
- using-alias-directive
-
-
-
- using
-
-
- identifier
-
-
- =
-
-
- namespace-or-type-name
-
-
- ;
-
-
-
-
-
- using-namespace-directive
-
-
-
- using
-
-
- namespace-name
-
-
- ;
-
-
-
-
-
- namespace-member-declarations
-
-
-
- namespace-member-declaration
-
-
-
-
- namespace-member-declarations
-
-
- namespace-member-declaration
-
-
-
-
-
-
-
- namespace-member-declaration
-
-
-
- namespace-declaration
-
-
- type-declaration
-
-
-
-
-
- type-declaration
-
-
-
- class-declaration
-
-
- struct-declaration
-
-
- interface-declaration
-
-
- enum-declaration
-
-
- delegate-declaration
-
-
-
-
-
- class-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- class-modifiers
-
-
-
-
- class
-
-
- identifier
-
-
-
-
- class-base
-
-
-
-
- class-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- class-modifiers
-
-
-
- class-modifier
-
-
-
-
- class-modifiers
-
-
- class-modifier
-
-
-
-
-
-
-
- class-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- abstract
-
-
- sealed
-
-
-
-
-
- class-base
-
-
-
-
-
- :
-
-
- class-type
-
-
-
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
-
- :
-
-
- class-type
-
-
- ,
-
-
- interface-type-list
-
-
-
-
-
-
-
- interface-type-list
-
-
-
- interface-type
-
-
-
-
- interface-type-list
-
-
- ,
-
-
- interface-type
-
-
-
-
-
-
-
- class-body
-
-
-
- {
-
-
-
-
- class-member-declarations
-
-
-
-
- }
-
-
-
-
-
- class-member-declarations
-
-
-
- class-member-declaration
-
-
-
-
- class-member-declarations
-
-
- class-member-declaration
-
-
-
-
-
-
-
- class-member-declaration
-
-
-
- constant-declaration
-
-
- field-declaration
-
-
- method-declaration
-
-
- property-declaration
-
-
- event-declaration
-
-
- indexer-declaration
-
-
- operator-declaration
-
-
- constructor-declaration
-
-
- destructor-declaration
-
-
- static-constructor-declaration
-
-
- type-declaration
-
-
-
-
-
- constant-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- constant-modifiers
-
-
-
-
- const
-
-
- type
-
-
- constant-declarators
-
-
- ;
-
-
-
-
-
- constant-modifiers
-
-
-
- constant-modifier
-
-
-
-
- constant-modifiers
-
-
- constant-modifier
-
-
-
-
-
-
-
- constant-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- field-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- field-modifiers
-
-
-
-
- type
-
-
- variable-declarators
-
-
- ;
-
-
-
-
-
- field-modifiers
-
-
-
- field-modifier
-
-
-
-
- field-modifiers
-
-
- field-modifier
-
-
-
-
-
-
-
- field-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- readonly
-
-
- volatile
-
-
-
-
-
- variable-declarators
-
-
-
- variable-declarator
-
-
-
-
- variable-declarators
-
-
- ,
-
-
- variable-declarator
-
-
-
-
-
-
-
- variable-declarator
-
-
-
- identifier
-
-
-
-
- identifier
-
-
- =
-
-
- variable-initializer
-
-
-
-
-
-
-
- variable-initializer
-
-
-
- expression
-
-
- array-initializer
-
-
-
-
-
- method-declaration
-
-
-
- method-header
-
-
- method-body
-
-
-
-
-
- method-header
-
-
-
-
-
- attributes
-
-
-
-
-
-
- method-modifiers
-
-
-
-
- return-type
-
-
- member-name
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
-
- method-modifiers
-
-
-
- method-modifier
-
-
-
-
- method-modifiers
-
-
- method-modifier
-
-
-
-
-
-
-
- method-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- return-type
-
-
-
- type
-
-
- void
-
-
-
-
-
- member-name
-
-
-
- identifier
-
-
-
-
- interface-type
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- method-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- formal-parameter-list
-
-
-
- fixed-parameters
-
-
-
-
- fixed-parameters
-
-
- ,
-
-
- parameter-array
-
-
-
-
- parameter-array
-
-
-
-
-
- fixed-parameters
-
-
-
- fixed-parameter
-
-
-
-
- fixed-parameters
-
-
- ,
-
-
- fixed-parameter
-
-
-
-
-
-
-
- fixed-parameter
-
-
-
-
-
- attributes
-
-
-
-
-
-
- parameter-modifier
-
-
-
-
- type
-
-
- identifier
-
-
-
-
-
- parameter-modifier
-
-
-
- ref
-
-
- out
-
-
-
-
-
- parameter-array
-
-
-
-
-
- attributes
-
-
-
-
- params
-
-
- array-type
-
-
- identifier
-
-
-
-
-
- property-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- property-modifiers
-
-
-
-
- type
-
-
- member-name
-
-
- {
-
-
- accessor-declarations
-
-
- }
-
-
-
-
-
- property-modifiers
-
-
-
- property-modifier
-
-
-
-
- property-modifiers
-
-
- property-modifier
-
-
-
-
-
-
-
- property-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- accessor-declarations
-
-
-
-
-
- get-accessor-declaration
-
-
-
-
- set-accessor-declaration
-
-
-
-
-
-
-
-
- set-accessor-declaration
-
-
-
-
- get-accessor-declaration
-
-
-
-
-
-
-
-
-
- get-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- accessor-body
-
-
-
-
-
- set-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- accessor-body
-
-
-
-
-
- accessor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- event-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- event-modifiers
-
-
-
-
- event
-
-
- type
-
-
- variable-declarators
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- event-modifiers
-
-
-
-
- event
-
-
- type
-
-
- member-name
-
-
- {
-
-
- event-accessor-declarations
-
-
- }
-
-
-
-
-
-
-
- event-modifiers
-
-
-
- event-modifier
-
-
-
-
- event-modifiers
-
-
- event-modifier
-
-
-
-
-
-
-
- event-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- event-accessor-declarations
-
-
-
-
-
- add-accessor-declaration
-
-
- remove-accessor-declaration
-
-
-
-
-
-
- remove-accessor-declaration
-
-
- add-accessor-declaration
-
-
-
-
-
-
-
- add-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- add
-
-
- block
-
-
-
-
-
- remove-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- remove
-
-
- block
-
-
-
-
-
- indexer-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- indexer-modifiers
-
-
-
-
- indexer-declarator
-
-
- {
-
-
- accessor-declarations
-
-
- }
-
-
-
-
-
- indexer-modifiers
-
-
-
- indexer-modifier
-
-
-
-
- indexer-modifiers
-
-
- indexer-modifier
-
-
-
-
-
-
-
- indexer-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- indexer-declarator
-
-
-
-
-
- type
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
-
-
-
-
- type
-
-
- interface-type
-
-
- .
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
-
-
-
-
-
- operator-declaration
-
-
-
-
-
- attributes
-
-
-
-
- operator-modifiers
-
-
- operator-declarator
-
-
- operator-body
-
-
-
-
-
- operator-modifiers
-
-
-
- operator-modifier
-
-
-
-
- operator-modifiers
-
-
- operator-modifier
-
-
-
-
-
-
-
- operator-modifier
-
-
-
- public
-
-
- static
-
-
- extern
-
-
-
-
-
- operator-declarator
-
-
-
- unary-operator-declarator
-
-
- binary-operator-declarator
-
-
- conversion-operator-declarator
-
-
-
-
-
- unary-operator-declarator
-
-
-
- type
-
-
- operator
-
-
- overloadable-unary-operator
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
- overloadable-unary-operator
-
-
-
- +
-
-
- -
-
-
- !
-
-
- ~
-
-
- ++
-
-
- --
-
-
- true
-
-
- false
-
-
-
-
-
- binary-operator-declarator
-
-
-
- type
-
-
- operator
-
-
- overloadable-binary-operator
-
-
- (
-
-
- type
-
-
- identifier
-
-
- ,
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
- overloadable-binary-operator
-
-
-
- +
-
-
- -
-
-
- *
-
-
- /
-
-
- %
-
-
- &
-
-
- |
-
-
- ^
-
-
- <<
-
-
- >>
-
-
- ==
-
-
- !=
-
-
- >
-
-
- <
-
-
- >=
-
-
- <=
-
-
-
-
-
- conversion-operator-declarator
-
-
-
-
-
- implicit
-
-
- operator
-
-
- type
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
-
- explicit
-
-
- operator
-
-
- type
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
-
-
- operator-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- constructor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- constructor-modifiers
-
-
-
-
- constructor-declarator
-
-
- constructor-body
-
-
-
-
-
- constructor-modifiers
-
-
-
- constructor-modifier
-
-
-
-
- constructor-modifiers
-
-
- constructor-modifier
-
-
-
-
-
-
-
- constructor-modifier
-
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- extern
-
-
-
-
-
- constructor-declarator
-
-
-
- identifier
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- constructor-initializer
-
-
-
-
-
-
-
- constructor-initializer
-
-
-
-
-
- :
-
-
- base
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
-
- :
-
-
- this
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
-
-
- constructor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- static-constructor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- static-constructor-modifiers
-
-
- identifier
-
-
- (
-
-
- )
-
-
- static-constructor-body
-
-
-
-
-
- static-constructor-modifiers
-
-
-
-
-
-
-
- extern
-
-
-
-
- static
-
-
-
-
-
-
- static
-
-
-
-
- extern
-
-
-
-
-
-
-
-
-
- static-constructor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- destructor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- extern
-
-
-
-
- ~
-
-
- identifier
-
-
- (
-
-
- )
-
-
- destructor-body
-
-
-
-
-
- destructor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- struct-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- struct-modifiers
-
-
-
-
- struct
-
-
- identifier
-
-
-
-
- struct-interfaces
-
-
-
-
- struct-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- struct-modifiers
-
-
-
- struct-modifier
-
-
-
-
- struct-modifiers
-
-
- struct-modifier
-
-
-
-
-
-
-
- struct-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- struct-interfaces
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
- struct-body
-
-
-
- {
-
-
-
-
- struct-member-declarations
-
-
-
-
- }
-
-
-
-
-
- struct-member-declarations
-
-
-
- struct-member-declaration
-
-
-
-
- struct-member-declarations
-
-
- struct-member-declaration
-
-
-
-
-
-
-
- struct-member-declaration
-
-
-
- constant-declaration
-
-
- field-declaration
-
-
- method-declaration
-
-
- property-declaration
-
-
- event-declaration
-
-
- indexer-declaration
-
-
- operator-declaration
-
-
- constructor-declaration
-
-
- static-constructor-declaration
-
-
- type-declaration
-
-
-
-
-
- array-initializer
-
-
-
-
-
- {
-
-
-
-
- variable-initializer-list
-
-
-
-
- }
-
-
-
-
-
-
- {
-
-
- variable-initializer-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- variable-initializer-list
-
-
-
- variable-initializer
-
-
-
-
- variable-initializer-list
-
-
- ,
-
-
- variable-initializer
-
-
-
-
-
-
-
- interface-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- interface-modifiers
-
-
-
-
- interface
-
-
- identifier
-
-
-
-
- interface-base
-
-
-
-
- interface-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- interface-modifiers
-
-
-
- interface-modifier
-
-
-
-
- interface-modifiers
-
-
- interface-modifier
-
-
-
-
-
-
-
- interface-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- interface-base
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
- interface-body
-
-
-
- {
-
-
-
-
- interface-member-declarations
-
-
-
-
- }
-
-
-
-
-
- interface-member-declarations
-
-
-
- interface-member-declaration
-
-
-
-
- interface-member-declarations
-
-
- interface-member-declaration
-
-
-
-
-
-
-
- interface-member-declaration
-
-
-
- interface-method-declaration
-
-
- interface-property-declaration
-
-
- interface-event-declaration
-
-
- interface-indexer-declaration
-
-
-
-
-
- interface-method-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- return-type
-
-
- identifier
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
- ;
-
-
-
-
-
- interface-property-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- type
-
-
- identifier
-
-
- {
-
-
- interface-accessors
-
-
- }
-
-
-
-
-
- interface-accessors
-
-
-
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
-
-
-
- interface-event-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- event
-
-
- type
-
-
- identifier
-
-
- ;
-
-
-
-
-
- interface-indexer-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- type
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
- {
-
-
- interface-accessors
-
-
- }
-
-
-
-
-
- enum-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- enum-modifiers
-
-
-
-
- enum
-
-
- identifier
-
-
-
-
- enum-base
-
-
-
-
- enum-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- enum-base
-
-
-
- :
-
-
- integral-type
-
-
-
-
-
- enum-body
-
-
-
-
-
- {
-
-
-
-
- enum-member-declarations
-
-
-
-
- }
-
-
-
-
-
-
- {
-
-
- enum-member-declarations
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- enum-modifiers
-
-
-
- enum-modifier
-
-
-
-
- enum-modifiers
-
-
- enum-modifier
-
-
-
-
-
-
-
- enum-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- enum-member-declarations
-
-
-
- enum-member-declaration
-
-
-
-
- enum-member-declarations
-
-
- ,
-
-
- enum-member-declaration
-
-
-
-
-
-
-
- enum-member-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
- identifier
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- identifier
-
-
- =
-
-
- constant-expression
-
-
-
-
-
-
-
- delegate-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- delegate-modifiers
-
-
-
-
- delegate
-
-
- return-type
-
-
- identifier
-
-
-
-
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
- ;
-
-
-
-
-
-
-
- delegate-modifiers
-
-
-
- delegate-modifier
-
-
-
-
- delegate-modifiers
-
-
- delegate-modifier
-
-
-
-
-
-
-
- delegate-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- global-attributes
-
- global-attribute-sections
-
-
-
- global-attribute-sections
-
-
-
- global-attribute-section
-
-
-
-
- global-attribute-sections
-
-
- global-attribute-section
-
-
-
-
-
-
-
- global-attribute-section
-
-
-
-
-
- [
-
-
- global-attribute-target-specifier
-
-
- attribute-list
-
-
- ]
-
-
-
-
-
-
- [
-
-
- global-attribute-target-specifier
-
-
- attribute-list
-
-
- ,
-
-
- ]
-
-
-
-
-
-
-
- global-attribute-target-specifier
-
-
-
- global-attribute-target
-
-
- :
-
-
-
-
-
- global-attribute-target
-
-
-
- assembly
-
-
- module
-
-
-
-
-
- attributes
-
- attribute-sections
-
-
-
- attribute-sections
-
-
-
- attribute-section
-
-
-
-
- attribute-sections
-
-
- attribute-section
-
-
-
-
-
-
-
- attribute-section
-
-
-
-
-
- [
-
-
-
-
- attribute-target-specifier
-
-
-
-
- attribute-list
-
-
- ]
-
-
-
-
-
-
- [
-
-
-
-
- attribute-target-specifier
-
-
-
-
- attribute-list
-
-
- ,
-
-
- ]
-
-
-
-
-
-
-
- attribute-target-specifier
-
-
-
- attribute-target
-
-
- :
-
-
-
-
-
- attribute-target
-
-
-
- field
-
-
- event
-
-
- method
-
-
- param
-
-
- property
-
-
- return
-
-
- type
-
-
-
-
-
- attribute-list
-
-
-
- attribute
-
-
-
-
- attribute-list
-
-
- ,
-
-
- attribute
-
-
-
-
-
-
-
- attribute
-
-
-
- attribute-name
-
-
-
-
- attribute-arguments
-
-
-
-
-
-
-
- attribute-name
-
- type-name
-
-
-
- attribute-arguments
-
-
-
-
-
- (
-
-
-
-
- positional-argument-list
-
-
-
-
- )
-
-
-
-
-
-
- (
-
-
- positional-argument-list
-
-
- ,
-
-
- named-argument-list
-
-
- )
-
-
-
-
-
-
- (
-
-
- named-argument-list
-
-
- )
-
-
-
-
-
-
-
- positional-argument-list
-
-
-
- positional-argument
-
-
-
-
- positional-argument-list
-
-
- ,
-
-
- positional-argument
-
-
-
-
-
-
-
- positional-argument
-
- attribute-argument-expression
-
-
-
- named-argument-list
-
-
-
- named-argument
-
-
-
-
- named-argument-list
-
-
- ,
-
-
- named-argument
-
-
-
-
-
-
-
- named-argument
-
-
-
- identifier
-
-
- =
-
-
- attribute-argument-expression
-
-
-
-
-
- attribute-argument-expression
-
- expression
-
-
-
- keyword
-
-
-
- abstract
-
-
- as
-
-
- base
-
-
- bool
-
-
- break
-
-
- byte
-
-
- case
-
-
- catch
-
-
- char
-
-
- checked
-
-
- class
-
-
- const
-
-
- continue
-
-
- decimal
-
-
- default
-
-
- delegate
-
-
- do
-
-
- double
-
-
- else
-
-
- enum
-
-
- event
-
-
- explicit
-
-
- extern
-
-
- false
-
-
- finally
-
-
- fixed
-
-
- float
-
-
- for
-
-
- foreach
-
-
- goto
-
-
- if
-
-
- implicit
-
-
- in
-
-
- int
-
-
- interface
-
-
- internal
-
-
- is
-
-
- lock
-
-
- long
-
-
- namespace
-
-
- new
-
-
- null
-
-
- object
-
-
- operator
-
-
- out
-
-
- override
-
-
- params
-
-
- private
-
-
- protected
-
-
- public
-
-
- readonly
-
-
- ref
-
-
- return
-
-
- sbyte
-
-
- sealed
-
-
- short
-
-
- sizeof
-
-
- stackalloc
-
-
- static
-
-
- string
-
-
- struct
-
-
- switch
-
-
- this
-
-
- throw
-
-
- true
-
-
- try
-
-
- typeof
-
-
- uint
-
-
- ulong
-
-
- unchecked
-
-
- unsafe
-
-
- ushort
-
-
- using
-
-
- virtual
-
-
- void
-
-
- volatile
-
-
- while
-
-
- assembly
-
-
- module
-
-
- add
-
-
- remove
-
-
- get
-
-
- set
-
-
- field
-
-
- method
-
-
- param
-
-
- property
-
-
-
-
-
\ No newline at end of file
+
+
+ namespace-name
+
+ namespace-or-type-name
+
+
+
+ type-name
+
+ namespace-or-type-name
+
+
+
+ namespace-or-type-name
+
+
+
+ identifier
+
+
+
+
+ namespace-or-type-name
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ type
+
+
+
+ value-type
+
+
+ reference-type
+
+
+
+
+
+ value-type
+
+
+
+ struct-type
+
+
+ enum-type
+
+
+
+
+
+ struct-type
+
+
+
+ type-name
+
+
+ simple-type
+
+
+
+
+
+ simple-type
+
+
+
+ numeric-type
+
+
+ bool
+
+
+
+
+
+ numeric-type
+
+
+
+ integral-type
+
+
+ floating-point-type
+
+
+ decimal
+
+
+
+
+
+ integral-type
+
+
+
+ sbyte
+
+
+ byte
+
+
+ short
+
+
+ ushort
+
+
+ int
+
+
+ uint
+
+
+ long
+
+
+ ulong
+
+
+ char
+
+
+
+
+
+ floating-point-type
+
+
+
+ float
+
+
+ double
+
+
+
+
+
+ enum-type
+
+ type-name
+
+
+
+ reference-type
+
+
+
+ class-type
+
+
+ interface-type
+
+
+ array-type
+
+
+ delegate-type
+
+
+
+
+
+ class-type
+
+
+
+ type-name
+
+
+ object
+
+
+ string
+
+
+
+
+
+ interface-type
+
+ type-name
+
+
+
+ array-type
+
+
+
+ non-array-type
+
+
+ rank-specifiers
+
+
+
+
+
+ non-array-type
+
+ type
+
+
+
+ rank-specifiers
+
+
+
+ rank-specifier
+
+
+
+
+ rank-specifiers
+
+
+ rank-specifier
+
+
+
+
+
+
+
+ rank-specifier
+
+
+
+ [
+
+
+
+
+ dim-separators
+
+
+
+
+ ]
+
+
+
+
+
+ dim-separators
+
+
+
+ ,
+
+
+
+
+ dim-separators
+
+
+ ,
+
+
+
+
+
+
+
+ delegate-type
+
+ type-name
+
+
+
+ variable-reference
+
+ expression
+
+
+
+ argument-list
+
+
+
+ argument
+
+
+
+
+ argument-list
+
+
+ ,
+
+
+ argument
+
+
+
+
+
+
+
+ argument
+
+
+
+ expression
+
+
+
+
+ ref
+
+
+ variable-reference
+
+
+
+
+
+
+ out
+
+
+ variable-reference
+
+
+
+
+
+
+
+ primary-expression
+
+
+
+ primary-no-array-creation-expression
+
+
+ array-creation-expression
+
+
+
+
+
+ primary-no-array-creation-expression
+
+
+
+ literal
+
+
+ simple-name
+
+
+ parenthesized-expression
+
+
+ member-access
+
+
+ invocation-expression
+
+
+ element-access
+
+
+ this-access
+
+
+ base-access
+
+
+ post-increment-expression
+
+
+ post-decrement-expression
+
+
+ object-creation-expression
+
+
+ delegate-creation-expression
+
+
+ typeof-expression
+
+
+ checked-expression
+
+
+ unchecked-expression
+
+
+
+
+
+ simple-name
+
+ identifier
+
+
+
+ parenthesized-expression
+
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ member-access
+
+
+
+
+
+ primary-expression
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+ predefined-type
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ predefined-type
+
+
+
+ bool
+
+
+ byte
+
+
+ char
+
+
+ decimal
+
+
+ double
+
+
+ float
+
+
+ int
+
+
+ long
+
+
+ object
+
+
+ sbyte
+
+
+ short
+
+
+ string
+
+
+ uint
+
+
+ ulong
+
+
+ ushort
+
+
+
+
+
+ invocation-expression
+
+
+
+ primary-expression
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+ element-access
+
+
+
+ primary-no-array-creation-expression
+
+
+ [
+
+
+ expression-list
+
+
+ ]
+
+
+
+
+
+ expression-list
+
+
+
+ expression
+
+
+
+
+ expression-list
+
+
+ ,
+
+
+ expression
+
+
+
+
+
+
+
+ this-access
+
+ this
+
+
+
+ base-access
+
+
+
+
+
+ base
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+ base
+
+
+ [
+
+
+ expression-list
+
+
+ ]
+
+
+
+
+
+
+
+ post-increment-expression
+
+
+
+ primary-expression
+
+
+ ++
+
+
+
+
+
+ post-decrement-expression
+
+
+
+ primary-expression
+
+
+ --
+
+
+
+
+
+ object-creation-expression
+
+
+
+ new
+
+
+ type
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+ array-creation-expression
+
+
+
+
+
+ new
+
+
+ non-array-type
+
+
+ [
+
+
+ expression-list
+
+
+ ]
+
+
+
+
+ rank-specifiers
+
+
+
+
+
+
+ array-initializer
+
+
+
+
+
+
+
+
+ new
+
+
+ array-type
+
+
+ array-initializer
+
+
+
+
+
+
+
+ delegate-creation-expression
+
+
+
+ new
+
+
+ delegate-type
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ typeof-expression
+
+
+
+
+
+ typeof
+
+
+ (
+
+
+ type
+
+
+ )
+
+
+
+
+
+
+ typeof
+
+
+ (
+
+
+ void
+
+
+ )
+
+
+
+
+
+
+
+ checked-expression
+
+
+
+ checked
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ unchecked-expression
+
+
+
+ unchecked
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ unary-expression
+
+
+
+ primary-expression
+
+
+
+
+ +
+
+
+ unary-expression
+
+
+
+
+
+
+ -
+
+
+ unary-expression
+
+
+
+
+
+
+ !
+
+
+ unary-expression
+
+
+
+
+
+
+ ~
+
+
+ unary-expression
+
+
+
+
+ pre-increment-expression
+
+
+ pre-decrement-expression
+
+
+ cast-expression
+
+
+
+
+
+ pre-increment-expression
+
+
+
+ ++
+
+
+ unary-expression
+
+
+
+
+
+ pre-decrement-expression
+
+
+
+ --
+
+
+ unary-expression
+
+
+
+
+
+ cast-expression
+
+
+
+ (
+
+
+ type
+
+
+ )
+
+
+ unary-expression
+
+
+
+
+
+ multiplicative-expression
+
+
+
+ unary-expression
+
+
+
+
+ multiplicative-expression
+
+
+ *
+
+
+ unary-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ /
+
+
+ unary-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ %
+
+
+ unary-expression
+
+
+
+
+
+
+
+ additive-expression
+
+
+
+ multiplicative-expression
+
+
+
+
+ additive-expression
+
+
+ +
+
+
+ multiplicative-expression
+
+
+
+
+
+
+ additive-expression
+
+
+ -
+
+
+ multiplicative-expression
+
+
+
+
+
+
+
+ shift-expression
+
+
+
+ additive-expression
+
+
+
+
+ shift-expression
+
+
+ <<
+
+
+ additive-expression
+
+
+
+
+
+
+ shift-expression
+
+
+ >>
+
+
+ additive-expression
+
+
+
+
+
+
+
+ relational-expression
+
+
+
+ shift-expression
+
+
+
+
+ relational-expression
+
+
+ <
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ <=
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >=
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ is
+
+
+ type
+
+
+
+
+
+
+ relational-expression
+
+
+ as
+
+
+ type
+
+
+
+
+
+
+
+ equality-expression
+
+
+
+ relational-expression
+
+
+
+
+ equality-expression
+
+
+ ==
+
+
+ relational-expression
+
+
+
+
+
+
+ equality-expression
+
+
+ !=
+
+
+ relational-expression
+
+
+
+
+
+
+
+ and-expression
+
+
+
+ equality-expression
+
+
+
+
+ and-expression
+
+
+ &
+
+
+ equality-expression
+
+
+
+
+
+
+
+ exclusive-or-expression
+
+
+
+ and-expression
+
+
+
+
+ exclusive-or-expression
+
+
+ ^
+
+
+ and-expression
+
+
+
+
+
+
+
+ inclusive-or-expression
+
+
+
+ exclusive-or-expression
+
+
+
+
+ inclusive-or-expression
+
+
+ |
+
+
+ exclusive-or-expression
+
+
+
+
+
+
+
+ conditional-and-expression
+
+
+
+ inclusive-or-expression
+
+
+
+
+ conditional-and-expression
+
+
+ &&
+
+
+ inclusive-or-expression
+
+
+
+
+
+
+
+ conditional-or-expression
+
+
+
+ conditional-and-expression
+
+
+
+
+ conditional-or-expression
+
+
+ ||
+
+
+ conditional-and-expression
+
+
+
+
+
+
+
+ conditional-expression
+
+
+
+ conditional-or-expression
+
+
+
+
+ conditional-or-expression
+
+
+ ?
+
+
+ expression
+
+
+ :
+
+
+ expression
+
+
+
+
+
+
+
+ assignment
+
+
+
+ unary-expression
+
+
+ assignment-operator
+
+
+ expression
+
+
+
+
+
+ assignment-operator
+
+
+
+ =
+
+
+ +=
+
+
+ -=
+
+
+ *=
+
+
+ /=
+
+
+ %=
+
+
+ &=
+
+
+ |=
+
+
+ ^=
+
+
+ <<=
+
+
+ >>=
+
+
+
+
+
+ expression
+
+
+
+ conditional-expression
+
+
+ assignment
+
+
+
+
+
+ constant-expression
+
+ expression
+
+
+
+ boolean-expression
+
+ expression
+
+
+
+ statement
+
+
+
+ labeled-statement
+
+
+ declaration-statement
+
+
+ embedded-statement
+
+
+
+
+
+ embedded-statement
+
+
+
+ block
+
+
+ empty-statement
+
+
+ expression-statement
+
+
+ selection-statement
+
+
+ iteration-statement
+
+
+ jump-statement
+
+
+ try-statement
+
+
+ checked-statement
+
+
+ unchecked-statement
+
+
+ lock-statement
+
+
+ using-statement
+
+
+
+
+
+ block
+
+
+
+ {
+
+
+
+
+ statement-list
+
+
+
+
+ }
+
+
+
+
+
+ statement-list
+
+
+
+ statement
+
+
+
+
+ statement-list
+
+
+ statement
+
+
+
+
+
+
+
+ empty-statement
+
+ ;
+
+
+
+ labeled-statement
+
+
+
+ identifier
+
+
+ :
+
+
+ statement
+
+
+
+
+
+ declaration-statement
+
+
+
+
+
+ local-variable-declaration
+
+
+ ;
+
+
+
+
+
+
+ local-constant-declaration
+
+
+ ;
+
+
+
+
+
+
+
+ local-variable-declaration
+
+
+
+ type
+
+
+ local-variable-declarators
+
+
+
+
+
+ local-variable-declarators
+
+
+
+ local-variable-declarator
+
+
+
+
+ local-variable-declarators
+
+
+ ,
+
+
+ local-variable-declarator
+
+
+
+
+
+
+
+ local-variable-declarator
+
+
+
+ identifier
+
+
+
+
+ identifier
+
+
+ =
+
+
+ local-variable-initializer
+
+
+
+
+
+
+
+ local-variable-initializer
+
+
+
+ expression
+
+
+ array-initializer
+
+
+
+
+
+ local-constant-declaration
+
+
+
+ const
+
+
+ type
+
+
+ constant-declarators
+
+
+
+
+
+ constant-declarators
+
+
+
+ constant-declarator
+
+
+
+
+ constant-declarators
+
+
+ ,
+
+
+ constant-declarator
+
+
+
+
+
+
+
+ constant-declarator
+
+
+
+ identifier
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+ expression-statement
+
+
+
+ statement-expression
+
+
+ ;
+
+
+
+
+
+ statement-expression
+
+
+
+ invocation-expression
+
+
+ object-creation-expression
+
+
+ assignment
+
+
+ post-increment-expression
+
+
+ post-decrement-expression
+
+
+ pre-increment-expression
+
+
+ pre-decrement-expression
+
+
+
+
+
+ selection-statement
+
+
+
+ if-statement
+
+
+ switch-statement
+
+
+
+
+
+ if-statement
+
+
+
+
+
+ if
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+
+ if
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+ else
+
+
+ embedded-statement
+
+
+
+
+
+
+
+ switch-statement
+
+
+
+ switch
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ switch-block
+
+
+
+
+
+ switch-block
+
+
+
+ {
+
+
+
+
+ switch-sections
+
+
+
+
+ }
+
+
+
+
+
+ switch-sections
+
+
+
+ switch-section
+
+
+
+
+ switch-sections
+
+
+ switch-section
+
+
+
+
+
+
+
+ switch-section
+
+
+
+ switch-labels
+
+
+ statement-list
+
+
+
+
+
+ switch-labels
+
+
+
+ switch-label
+
+
+
+
+ switch-labels
+
+
+ switch-label
+
+
+
+
+
+
+
+ switch-label
+
+
+
+
+
+ case
+
+
+ constant-expression
+
+
+ :
+
+
+
+
+
+
+ default
+
+
+ :
+
+
+
+
+
+
+
+ iteration-statement
+
+
+
+ while-statement
+
+
+ do-statement
+
+
+ for-statement
+
+
+ foreach-statement
+
+
+
+
+
+ while-statement
+
+
+
+ while
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ do-statement
+
+
+
+ do
+
+
+ embedded-statement
+
+
+ while
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ ;
+
+
+
+
+
+ for-statement
+
+
+
+ for
+
+
+ (
+
+
+
+
+ for-initializer
+
+
+
+
+ ;
+
+
+
+
+ for-condition
+
+
+
+
+ ;
+
+
+
+
+ for-iterator
+
+
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ for-initializer
+
+
+
+ local-variable-declaration
+
+
+ statement-expression-list
+
+
+
+
+
+ for-condition
+
+ boolean-expression
+
+
+
+ for-iterator
+
+ statement-expression-list
+
+
+
+ statement-expression-list
+
+
+
+ statement-expression
+
+
+
+
+ statement-expression-list
+
+
+ ,
+
+
+ statement-expression
+
+
+
+
+
+
+
+ foreach-statement
+
+
+
+ foreach
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ in
+
+
+ expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ jump-statement
+
+
+
+ break-statement
+
+
+ continue-statement
+
+
+ goto-statement
+
+
+ return-statement
+
+
+ throw-statement
+
+
+
+
+
+ break-statement
+
+
+
+ break
+
+
+ ;
+
+
+
+
+
+ continue-statement
+
+
+
+ continue
+
+
+ ;
+
+
+
+
+
+ goto-statement
+
+
+
+
+
+ goto
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+
+ goto
+
+
+ case
+
+
+ constant-expression
+
+
+ ;
+
+
+
+
+
+
+ goto
+
+
+ default
+
+
+ ;
+
+
+
+
+
+
+
+ return-statement
+
+
+
+ return
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+ throw-statement
+
+
+
+ throw
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+ try-statement
+
+
+
+
+
+ try
+
+
+ block
+
+
+ catch-clauses
+
+
+
+
+
+
+ try
+
+
+ block
+
+
+ finally-clause
+
+
+
+
+
+
+ try
+
+
+ block
+
+
+ catch-clauses
+
+
+ finally-clause
+
+
+
+
+
+
+
+ catch-clauses
+
+
+
+
+
+ specific-catch-clauses
+
+
+
+
+ general-catch-clause
+
+
+
+
+
+
+
+
+
+
+ specific-catch-clauses
+
+
+
+
+ general-catch-clause
+
+
+
+
+
+
+
+ specific-catch-clauses
+
+
+
+ specific-catch-clause
+
+
+
+
+ specific-catch-clauses
+
+
+ specific-catch-clause
+
+
+
+
+
+
+
+ specific-catch-clause
+
+
+
+ catch
+
+
+ (
+
+
+ class-type
+
+
+
+
+ identifier
+
+
+
+
+ )
+
+
+ block
+
+
+
+
+
+ general-catch-clause
+
+
+
+ catch
+
+
+ block
+
+
+
+
+
+ finally-clause
+
+
+
+ finally
+
+
+ block
+
+
+
+
+
+ checked-statement
+
+
+
+ checked
+
+
+ block
+
+
+
+
+
+ unchecked-statement
+
+
+
+ unchecked
+
+
+ block
+
+
+
+
+
+ lock-statement
+
+
+
+ lock
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ using-statement
+
+
+
+ using
+
+
+ (
+
+
+ resource-acquisition
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ resource-acquisition
+
+
+
+ local-variable-declaration
+
+
+ expression
+
+
+
+
+
+ compilation-unit
+
+
+
+
+
+ using-directives
+
+
+
+
+
+
+ global-attributes
+
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+
+
+
+
+ namespace-declaration
+
+
+
+ namespace
+
+
+ qualified-identifier
+
+
+ namespace-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ qualified-identifier
+
+
+
+ identifier
+
+
+
+
+ qualified-identifier
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ namespace-body
+
+
+
+ {
+
+
+
+
+ using-directives
+
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ using-directives
+
+
+
+ using-directive
+
+
+
+
+ using-directives
+
+
+ using-directive
+
+
+
+
+
+
+
+ using-directive
+
+
+
+ using-alias-directive
+
+
+ using-namespace-directive
+
+
+
+
+
+ using-alias-directive
+
+
+
+ using
+
+
+ identifier
+
+
+ =
+
+
+ namespace-or-type-name
+
+
+ ;
+
+
+
+
+
+ using-namespace-directive
+
+
+
+ using
+
+
+ namespace-name
+
+
+ ;
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+ namespace-member-declaration
+
+
+
+
+ namespace-member-declarations
+
+
+ namespace-member-declaration
+
+
+
+
+
+
+
+ namespace-member-declaration
+
+
+
+ namespace-declaration
+
+
+ type-declaration
+
+
+
+
+
+ type-declaration
+
+
+
+ class-declaration
+
+
+ struct-declaration
+
+
+ interface-declaration
+
+
+ enum-declaration
+
+
+ delegate-declaration
+
+
+
+
+
+ class-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ class-modifiers
+
+
+
+
+ class
+
+
+ identifier
+
+
+
+
+ class-base
+
+
+
+
+ class-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ class-modifiers
+
+
+
+ class-modifier
+
+
+
+
+ class-modifiers
+
+
+ class-modifier
+
+
+
+
+
+
+
+ class-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ abstract
+
+
+ sealed
+
+
+
+
+
+ class-base
+
+
+
+
+
+ :
+
+
+ class-type
+
+
+
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+
+ :
+
+
+ class-type
+
+
+ ,
+
+
+ interface-type-list
+
+
+
+
+
+
+
+ interface-type-list
+
+
+
+ interface-type
+
+
+
+
+ interface-type-list
+
+
+ ,
+
+
+ interface-type
+
+
+
+
+
+
+
+ class-body
+
+
+
+ {
+
+
+
+
+ class-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ class-member-declarations
+
+
+
+ class-member-declaration
+
+
+
+
+ class-member-declarations
+
+
+ class-member-declaration
+
+
+
+
+
+
+
+ class-member-declaration
+
+
+
+ constant-declaration
+
+
+ field-declaration
+
+
+ method-declaration
+
+
+ property-declaration
+
+
+ event-declaration
+
+
+ indexer-declaration
+
+
+ operator-declaration
+
+
+ constructor-declaration
+
+
+ destructor-declaration
+
+
+ static-constructor-declaration
+
+
+ type-declaration
+
+
+
+
+
+ constant-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ constant-modifiers
+
+
+
+
+ const
+
+
+ type
+
+
+ constant-declarators
+
+
+ ;
+
+
+
+
+
+ constant-modifiers
+
+
+
+ constant-modifier
+
+
+
+
+ constant-modifiers
+
+
+ constant-modifier
+
+
+
+
+
+
+
+ constant-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ field-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ field-modifiers
+
+
+
+
+ type
+
+
+ variable-declarators
+
+
+ ;
+
+
+
+
+
+ field-modifiers
+
+
+
+ field-modifier
+
+
+
+
+ field-modifiers
+
+
+ field-modifier
+
+
+
+
+
+
+
+ field-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ readonly
+
+
+ volatile
+
+
+
+
+
+ variable-declarators
+
+
+
+ variable-declarator
+
+
+
+
+ variable-declarators
+
+
+ ,
+
+
+ variable-declarator
+
+
+
+
+
+
+
+ variable-declarator
+
+
+
+ identifier
+
+
+
+
+ identifier
+
+
+ =
+
+
+ variable-initializer
+
+
+
+
+
+
+
+ variable-initializer
+
+
+
+ expression
+
+
+ array-initializer
+
+
+
+
+
+ method-declaration
+
+
+
+ method-header
+
+
+ method-body
+
+
+
+
+
+ method-header
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ method-modifiers
+
+
+
+
+ return-type
+
+
+ member-name
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+
+ method-modifiers
+
+
+
+ method-modifier
+
+
+
+
+ method-modifiers
+
+
+ method-modifier
+
+
+
+
+
+
+
+ method-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ return-type
+
+
+
+ type
+
+
+ void
+
+
+
+
+
+ member-name
+
+
+
+ identifier
+
+
+
+
+ interface-type
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ method-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ formal-parameter-list
+
+
+
+ fixed-parameters
+
+
+
+
+ fixed-parameters
+
+
+ ,
+
+
+ parameter-array
+
+
+
+
+ parameter-array
+
+
+
+
+
+ fixed-parameters
+
+
+
+ fixed-parameter
+
+
+
+
+ fixed-parameters
+
+
+ ,
+
+
+ fixed-parameter
+
+
+
+
+
+
+
+ fixed-parameter
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ parameter-modifier
+
+
+
+
+ type
+
+
+ identifier
+
+
+
+
+
+ parameter-modifier
+
+
+
+ ref
+
+
+ out
+
+
+
+
+
+ parameter-array
+
+
+
+
+
+ attributes
+
+
+
+
+ params
+
+
+ array-type
+
+
+ identifier
+
+
+
+
+
+ property-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ property-modifiers
+
+
+
+
+ type
+
+
+ member-name
+
+
+ {
+
+
+ accessor-declarations
+
+
+ }
+
+
+
+
+
+ property-modifiers
+
+
+
+ property-modifier
+
+
+
+
+ property-modifiers
+
+
+ property-modifier
+
+
+
+
+
+
+
+ property-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ accessor-declarations
+
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ accessor-body
+
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ accessor-body
+
+
+
+
+
+ accessor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ event-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ event-modifiers
+
+
+
+
+ event
+
+
+ type
+
+
+ variable-declarators
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ event-modifiers
+
+
+
+
+ event
+
+
+ type
+
+
+ member-name
+
+
+ {
+
+
+ event-accessor-declarations
+
+
+ }
+
+
+
+
+
+
+
+ event-modifiers
+
+
+
+ event-modifier
+
+
+
+
+ event-modifiers
+
+
+ event-modifier
+
+
+
+
+
+
+
+ event-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ event-accessor-declarations
+
+
+
+
+
+ add-accessor-declaration
+
+
+ remove-accessor-declaration
+
+
+
+
+
+
+ remove-accessor-declaration
+
+
+ add-accessor-declaration
+
+
+
+
+
+
+
+ add-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ add
+
+
+ block
+
+
+
+
+
+ remove-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ remove
+
+
+ block
+
+
+
+
+
+ indexer-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ indexer-modifiers
+
+
+
+
+ indexer-declarator
+
+
+ {
+
+
+ accessor-declarations
+
+
+ }
+
+
+
+
+
+ indexer-modifiers
+
+
+
+ indexer-modifier
+
+
+
+
+ indexer-modifiers
+
+
+ indexer-modifier
+
+
+
+
+
+
+
+ indexer-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ indexer-declarator
+
+
+
+
+
+ type
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+
+
+
+
+ type
+
+
+ interface-type
+
+
+ .
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+
+
+
+
+
+ operator-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ operator-modifiers
+
+
+ operator-declarator
+
+
+ operator-body
+
+
+
+
+
+ operator-modifiers
+
+
+
+ operator-modifier
+
+
+
+
+ operator-modifiers
+
+
+ operator-modifier
+
+
+
+
+
+
+
+ operator-modifier
+
+
+
+ public
+
+
+ static
+
+
+ extern
+
+
+
+
+
+ operator-declarator
+
+
+
+ unary-operator-declarator
+
+
+ binary-operator-declarator
+
+
+ conversion-operator-declarator
+
+
+
+
+
+ unary-operator-declarator
+
+
+
+ type
+
+
+ operator
+
+
+ overloadable-unary-operator
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+ overloadable-unary-operator
+
+
+
+ +
+
+
+ -
+
+
+ !
+
+
+ ~
+
+
+ ++
+
+
+ --
+
+
+ true
+
+
+ false
+
+
+
+
+
+ binary-operator-declarator
+
+
+
+ type
+
+
+ operator
+
+
+ overloadable-binary-operator
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ ,
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+ overloadable-binary-operator
+
+
+
+ +
+
+
+ -
+
+
+ *
+
+
+ /
+
+
+ %
+
+
+ &
+
+
+ |
+
+
+ ^
+
+
+ <<
+
+
+ >>
+
+
+ ==
+
+
+ !=
+
+
+ >
+
+
+ <
+
+
+ >=
+
+
+ <=
+
+
+
+
+
+ conversion-operator-declarator
+
+
+
+
+
+ implicit
+
+
+ operator
+
+
+ type
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+
+ explicit
+
+
+ operator
+
+
+ type
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+
+
+ operator-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ constructor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ constructor-modifiers
+
+
+
+
+ constructor-declarator
+
+
+ constructor-body
+
+
+
+
+
+ constructor-modifiers
+
+
+
+ constructor-modifier
+
+
+
+
+ constructor-modifiers
+
+
+ constructor-modifier
+
+
+
+
+
+
+
+ constructor-modifier
+
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ extern
+
+
+
+
+
+ constructor-declarator
+
+
+
+ identifier
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ constructor-initializer
+
+
+
+
+
+
+
+ constructor-initializer
+
+
+
+
+
+ :
+
+
+ base
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+ :
+
+
+ this
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+
+ constructor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ static-constructor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ static-constructor-modifiers
+
+
+ identifier
+
+
+ (
+
+
+ )
+
+
+ static-constructor-body
+
+
+
+
+
+ static-constructor-modifiers
+
+
+
+
+
+
+
+ extern
+
+
+
+
+ static
+
+
+
+
+
+
+ static
+
+
+
+
+ extern
+
+
+
+
+
+
+
+
+
+ static-constructor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ destructor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ extern
+
+
+
+
+ ~
+
+
+ identifier
+
+
+ (
+
+
+ )
+
+
+ destructor-body
+
+
+
+
+
+ destructor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ struct-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ struct-modifiers
+
+
+
+
+ struct
+
+
+ identifier
+
+
+
+
+ struct-interfaces
+
+
+
+
+ struct-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ struct-modifiers
+
+
+
+ struct-modifier
+
+
+
+
+ struct-modifiers
+
+
+ struct-modifier
+
+
+
+
+
+
+
+ struct-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ struct-interfaces
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+ struct-body
+
+
+
+ {
+
+
+
+
+ struct-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ struct-member-declarations
+
+
+
+ struct-member-declaration
+
+
+
+
+ struct-member-declarations
+
+
+ struct-member-declaration
+
+
+
+
+
+
+
+ struct-member-declaration
+
+
+
+ constant-declaration
+
+
+ field-declaration
+
+
+ method-declaration
+
+
+ property-declaration
+
+
+ event-declaration
+
+
+ indexer-declaration
+
+
+ operator-declaration
+
+
+ constructor-declaration
+
+
+ static-constructor-declaration
+
+
+ type-declaration
+
+
+
+
+
+ array-initializer
+
+
+
+
+
+ {
+
+
+
+
+ variable-initializer-list
+
+
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ variable-initializer-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ variable-initializer-list
+
+
+
+ variable-initializer
+
+
+
+
+ variable-initializer-list
+
+
+ ,
+
+
+ variable-initializer
+
+
+
+
+
+
+
+ interface-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ interface-modifiers
+
+
+
+
+ interface
+
+
+ identifier
+
+
+
+
+ interface-base
+
+
+
+
+ interface-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ interface-modifiers
+
+
+
+ interface-modifier
+
+
+
+
+ interface-modifiers
+
+
+ interface-modifier
+
+
+
+
+
+
+
+ interface-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ interface-base
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+ interface-body
+
+
+
+ {
+
+
+
+
+ interface-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ interface-member-declarations
+
+
+
+ interface-member-declaration
+
+
+
+
+ interface-member-declarations
+
+
+ interface-member-declaration
+
+
+
+
+
+
+
+ interface-member-declaration
+
+
+
+ interface-method-declaration
+
+
+ interface-property-declaration
+
+
+ interface-event-declaration
+
+
+ interface-indexer-declaration
+
+
+
+
+
+ interface-method-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ return-type
+
+
+ identifier
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+ ;
+
+
+
+
+
+ interface-property-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ type
+
+
+ identifier
+
+
+ {
+
+
+ interface-accessors
+
+
+ }
+
+
+
+
+
+ interface-accessors
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+
+
+
+ interface-event-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ event
+
+
+ type
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+ interface-indexer-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ type
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+ {
+
+
+ interface-accessors
+
+
+ }
+
+
+
+
+
+ enum-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ enum-modifiers
+
+
+
+
+ enum
+
+
+ identifier
+
+
+
+
+ enum-base
+
+
+
+
+ enum-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ enum-base
+
+
+
+ :
+
+
+ integral-type
+
+
+
+
+
+ enum-body
+
+
+
+
+
+ {
+
+
+
+
+ enum-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ enum-member-declarations
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ enum-modifiers
+
+
+
+ enum-modifier
+
+
+
+
+ enum-modifiers
+
+
+ enum-modifier
+
+
+
+
+
+
+
+ enum-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ enum-member-declarations
+
+
+
+ enum-member-declaration
+
+
+
+
+ enum-member-declarations
+
+
+ ,
+
+
+ enum-member-declaration
+
+
+
+
+
+
+
+ enum-member-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ identifier
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ identifier
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+
+
+ delegate-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ delegate-modifiers
+
+
+
+
+ delegate
+
+
+ return-type
+
+
+ identifier
+
+
+
+
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+ ;
+
+
+
+
+
+
+
+ delegate-modifiers
+
+
+
+ delegate-modifier
+
+
+
+
+ delegate-modifiers
+
+
+ delegate-modifier
+
+
+
+
+
+
+
+ delegate-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ global-attributes
+
+ global-attribute-sections
+
+
+
+ global-attribute-sections
+
+
+
+ global-attribute-section
+
+
+
+
+ global-attribute-sections
+
+
+ global-attribute-section
+
+
+
+
+
+
+
+ global-attribute-section
+
+
+
+
+
+ [
+
+
+ global-attribute-target-specifier
+
+
+ attribute-list
+
+
+ ]
+
+
+
+
+
+
+ [
+
+
+ global-attribute-target-specifier
+
+
+ attribute-list
+
+
+ ,
+
+
+ ]
+
+
+
+
+
+
+
+ global-attribute-target-specifier
+
+
+
+ global-attribute-target
+
+
+ :
+
+
+
+
+
+ global-attribute-target
+
+
+
+ assembly
+
+
+ module
+
+
+
+
+
+ attributes
+
+ attribute-sections
+
+
+
+ attribute-sections
+
+
+
+ attribute-section
+
+
+
+
+ attribute-sections
+
+
+ attribute-section
+
+
+
+
+
+
+
+ attribute-section
+
+
+
+
+
+ [
+
+
+
+
+ attribute-target-specifier
+
+
+
+
+ attribute-list
+
+
+ ]
+
+
+
+
+
+
+ [
+
+
+
+
+ attribute-target-specifier
+
+
+
+
+ attribute-list
+
+
+ ,
+
+
+ ]
+
+
+
+
+
+
+
+ attribute-target-specifier
+
+
+
+ attribute-target
+
+
+ :
+
+
+
+
+
+ attribute-target
+
+
+
+ field
+
+
+ event
+
+
+ method
+
+
+ param
+
+
+ property
+
+
+ return
+
+
+ type
+
+
+
+
+
+ attribute-list
+
+
+
+ attribute
+
+
+
+
+ attribute-list
+
+
+ ,
+
+
+ attribute
+
+
+
+
+
+
+
+ attribute
+
+
+
+ attribute-name
+
+
+
+
+ attribute-arguments
+
+
+
+
+
+
+
+ attribute-name
+
+ type-name
+
+
+
+ attribute-arguments
+
+
+
+
+
+ (
+
+
+
+
+ positional-argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+ (
+
+
+ positional-argument-list
+
+
+ ,
+
+
+ named-argument-list
+
+
+ )
+
+
+
+
+
+
+ (
+
+
+ named-argument-list
+
+
+ )
+
+
+
+
+
+
+
+ positional-argument-list
+
+
+
+ positional-argument
+
+
+
+
+ positional-argument-list
+
+
+ ,
+
+
+ positional-argument
+
+
+
+
+
+
+
+ positional-argument
+
+ attribute-argument-expression
+
+
+
+ named-argument-list
+
+
+
+ named-argument
+
+
+
+
+ named-argument-list
+
+
+ ,
+
+
+ named-argument
+
+
+
+
+
+
+
+ named-argument
+
+
+
+ identifier
+
+
+ =
+
+
+ attribute-argument-expression
+
+
+
+
+
+ attribute-argument-expression
+
+ expression
+
+
+
+ keyword
+
+
+
+ abstract
+
+
+ as
+
+
+ base
+
+
+ bool
+
+
+ break
+
+
+ byte
+
+
+ case
+
+
+ catch
+
+
+ char
+
+
+ checked
+
+
+ class
+
+
+ const
+
+
+ continue
+
+
+ decimal
+
+
+ default
+
+
+ delegate
+
+
+ do
+
+
+ double
+
+
+ else
+
+
+ enum
+
+
+ event
+
+
+ explicit
+
+
+ extern
+
+
+ false
+
+
+ finally
+
+
+ fixed
+
+
+ float
+
+
+ for
+
+
+ foreach
+
+
+ goto
+
+
+ if
+
+
+ implicit
+
+
+ in
+
+
+ int
+
+
+ interface
+
+
+ internal
+
+
+ is
+
+
+ lock
+
+
+ long
+
+
+ namespace
+
+
+ new
+
+
+ null
+
+
+ object
+
+
+ operator
+
+
+ out
+
+
+ override
+
+
+ params
+
+
+ private
+
+
+ protected
+
+
+ public
+
+
+ readonly
+
+
+ ref
+
+
+ return
+
+
+ sbyte
+
+
+ sealed
+
+
+ short
+
+
+ sizeof
+
+
+ stackalloc
+
+
+ static
+
+
+ string
+
+
+ struct
+
+
+ switch
+
+
+ this
+
+
+ throw
+
+
+ true
+
+
+ try
+
+
+ typeof
+
+
+ uint
+
+
+ ulong
+
+
+ unchecked
+
+
+ unsafe
+
+
+ ushort
+
+
+ using
+
+
+ virtual
+
+
+ void
+
+
+ volatile
+
+
+ while
+
+
+ assembly
+
+
+ module
+
+
+ add
+
+
+ remove
+
+
+ get
+
+
+ set
+
+
+ field
+
+
+ method
+
+
+ param
+
+
+ property
+
+
+
+
+
diff --git a/topics/grammars/csharp/msft-ls-1.2/Makefile b/topics/grammars/csharp/msft-ls-1.2/Makefile
index ed06dafa..6cf47d29 100644
--- a/topics/grammars/csharp/msft-ls-1.2/Makefile
+++ b/topics/grammars/csharp/msft-ls-1.2/Makefile
@@ -10,4 +10,4 @@ clean:
test:
make build
- ../../../../shared/tools/gdts msft-ls-grammar.bgf extracted-grammar.bgf
+ ../../../../shared/tools/gdt msft-ls-grammar.bgf extracted-grammar.bgf
diff --git a/topics/grammars/csharp/msft-ls-1.2/extracted-grammar.bgf b/topics/grammars/csharp/msft-ls-1.2/extracted-grammar.bgf
index 134cf920..d38b4404 100644
--- a/topics/grammars/csharp/msft-ls-1.2/extracted-grammar.bgf
+++ b/topics/grammars/csharp/msft-ls-1.2/extracted-grammar.bgf
@@ -1,6152 +1,6151 @@
-
-
-
- namespace-name
-
- namespace-or-type-name
-
-
-
- type-name
-
- namespace-or-type-name
-
-
-
- namespace-or-type-name
-
-
-
- identifier
-
-
-
-
- namespace-or-type-name
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- type
-
-
-
- value-type
-
-
- reference-type
-
-
-
-
-
- value-type
-
-
-
- struct-type
-
-
- enum-type
-
-
-
-
-
- struct-type
-
-
-
- type-name
-
-
- simple-type
-
-
-
-
-
- simple-type
-
-
-
- numeric-type
-
-
- bool
-
-
-
-
-
- numeric-type
-
-
-
- integral-type
-
-
- floating-point-type
-
-
- decimal
-
-
-
-
-
- integral-type
-
-
-
- sbyte
-
-
- byte
-
-
- short
-
-
- ushort
-
-
- int
-
-
- uint
-
-
- long
-
-
- ulong
-
-
- char
-
-
-
-
-
- floating-point-type
-
-
-
- float
-
-
- double
-
-
-
-
-
- enum-type
-
- type-name
-
-
-
- reference-type
-
-
-
- class-type
-
-
- interface-type
-
-
- array-type
-
-
- delegate-type
-
-
-
-
-
- class-type
-
-
-
- type-name
-
-
- object
-
-
- string
-
-
-
-
-
- interface-type
-
- type-name
-
-
-
- array-type
-
-
-
- non-array-type
-
-
- rank-specifiers
-
-
-
-
-
- non-array-type
-
- type
-
-
-
- rank-specifiers
-
-
-
- rank-specifier
-
-
-
-
- rank-specifiers
-
-
- rank-specifier
-
-
-
-
-
-
-
- rank-specifier
-
-
-
- [
-
-
-
-
- dim-separators
-
-
-
-
- ]
-
-
-
-
-
- dim-separators
-
-
-
- ,
-
-
-
-
- dim-separators
-
-
- ,
-
-
-
-
-
-
-
- delegate-type
-
- type-name
-
-
-
- variable-reference
-
- expression
-
-
-
- argument-list
-
-
-
- argument
-
-
-
-
- argument-list
-
-
- ,
-
-
- argument
-
-
-
-
-
-
-
- argument
-
-
-
- expression
-
-
-
-
- ref
-
-
- variable-reference
-
-
-
-
-
-
- out
-
-
- variable-reference
-
-
-
-
-
-
-
- primary-expression
-
-
-
- primary-no-array-creation-expression
-
-
- array-creation-expression
-
-
-
-
-
- primary-no-array-creation-expression
-
-
-
- literal
-
-
- simple-name
-
-
- parenthesized-expression
-
-
- member-access
-
-
- invocation-expression
-
-
- element-access
-
-
- this-access
-
-
- base-access
-
-
- post-increment-expression
-
-
- post-decrement-expression
-
-
- object-creation-expression
-
-
- delegate-creation-expression
-
-
- typeof-expression
-
-
- checked-expression
-
-
- unchecked-expression
-
-
-
-
-
- simple-name
-
- identifier
-
-
-
- parenthesized-expression
-
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- member-access
-
-
-
-
-
- primary-expression
-
-
- .
-
-
- identifier
-
-
-
-
-
-
- predefined-type
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- predefined-type
-
-
-
- bool
-
-
- byte
-
-
- char
-
-
- decimal
-
-
- double
-
-
- float
-
-
- int
-
-
- long
-
-
- object
-
-
- sbyte
-
-
- short
-
-
- string
-
-
- uint
-
-
- ulong
-
-
- ushort
-
-
-
-
-
- invocation-expression
-
-
-
- primary-expression
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
- element-access
-
-
-
- primary-no-array-creation-expression
-
-
- [
-
-
- expression-list
-
-
- ]
-
-
-
-
-
- expression-list
-
-
-
- expression
-
-
-
-
- expression-list
-
-
- ,
-
-
- expression
-
-
-
-
-
-
-
- this-access
-
- this
-
-
-
- base-access
-
-
-
-
-
- base
-
-
- .
-
-
- identifier
-
-
-
-
-
-
- base
-
-
- [
-
-
- expression-list
-
-
- ]
-
-
-
-
-
-
-
- post-increment-expression
-
-
-
- primary-expression
-
-
- ++
-
-
-
-
-
- post-decrement-expression
-
-
-
- primary-expression
-
-
- --
-
-
-
-
-
- object-creation-expression
-
-
-
- new
-
-
- type
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
- array-creation-expression
-
-
-
-
-
- new
-
-
- non-array-type
-
-
- [
-
-
- expression-list
-
-
- ]
-
-
-
-
- rank-specifiers
-
-
-
-
-
-
- array-initializer
-
-
-
-
-
-
-
-
- new
-
-
- array-type
-
-
- array-initializer
-
-
-
-
-
-
-
- delegate-creation-expression
-
-
-
- new
-
-
- delegate-type
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- typeof-expression
-
-
-
-
-
- typeof
-
-
- (
-
-
- type
-
-
- )
-
-
-
-
-
-
- typeof
-
-
- (
-
-
- void
-
-
- )
-
-
-
-
-
-
-
- checked-expression
-
-
-
- checked
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- unchecked-expression
-
-
-
- unchecked
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- unary-expression
-
-
-
- primary-expression
-
-
-
-
- +
-
-
- unary-expression
-
-
-
-
-
-
- -
-
-
- unary-expression
-
-
-
-
-
-
- !
-
-
- unary-expression
-
-
-
-
-
-
- ~
-
-
- unary-expression
-
-
-
-
- pre-increment-expression
-
-
- pre-decrement-expression
-
-
- cast-expression
-
-
-
-
-
- pre-increment-expression
-
-
-
- ++
-
-
- unary-expression
-
-
-
-
-
- pre-decrement-expression
-
-
-
- --
-
-
- unary-expression
-
-
-
-
-
- cast-expression
-
-
-
- (
-
-
- type
-
-
- )
-
-
- unary-expression
-
-
-
-
-
- multiplicative-expression
-
-
-
- unary-expression
-
-
-
-
- multiplicative-expression
-
-
- *
-
-
- unary-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- /
-
-
- unary-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- %
-
-
- unary-expression
-
-
-
-
-
-
-
- additive-expression
-
-
-
- multiplicative-expression
-
-
-
-
- additive-expression
-
-
- +
-
-
- multiplicative-expression
-
-
-
-
-
-
- additive-expression
-
-
- -
-
-
- multiplicative-expression
-
-
-
-
-
-
-
- shift-expression
-
-
-
- additive-expression
-
-
-
-
- shift-expression
-
-
- <<
-
-
- additive-expression
-
-
-
-
-
-
- shift-expression
-
-
- >>
-
-
- additive-expression
-
-
-
-
-
-
-
- relational-expression
-
-
-
- shift-expression
-
-
-
-
- relational-expression
-
-
- <
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- <=
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >=
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- is
-
-
- type
-
-
-
-
-
-
- relational-expression
-
-
- as
-
-
- type
-
-
-
-
-
-
-
- equality-expression
-
-
-
- relational-expression
-
-
-
-
- equality-expression
-
-
- ==
-
-
- relational-expression
-
-
-
-
-
-
- equality-expression
-
-
- !=
-
-
- relational-expression
-
-
-
-
-
-
-
- and-expression
-
-
-
- equality-expression
-
-
-
-
- and-expression
-
-
- &
-
-
- equality-expression
-
-
-
-
-
-
-
- exclusive-or-expression
-
-
-
- and-expression
-
-
-
-
- exclusive-or-expression
-
-
- ^
-
-
- and-expression
-
-
-
-
-
-
-
- inclusive-or-expression
-
-
-
- exclusive-or-expression
-
-
-
-
- inclusive-or-expression
-
-
- |
-
-
- exclusive-or-expression
-
-
-
-
-
-
-
- conditional-and-expression
-
-
-
- inclusive-or-expression
-
-
-
-
- conditional-and-expression
-
-
- &&
-
-
- inclusive-or-expression
-
-
-
-
-
-
-
- conditional-or-expression
-
-
-
- conditional-and-expression
-
-
-
-
- conditional-or-expression
-
-
- ||
-
-
- conditional-and-expression
-
-
-
-
-
-
-
- conditional-expression
-
-
-
- conditional-or-expression
-
-
-
-
- conditional-or-expression
-
-
- ?
-
-
- expression
-
-
- :
-
-
- expression
-
-
-
-
-
-
-
- assignment
-
-
-
- unary-expression
-
-
- assignment-operator
-
-
- expression
-
-
-
-
-
- assignment-operator
-
-
-
- =
-
-
- +=
-
-
- -=
-
-
- *=
-
-
- /=
-
-
- %=
-
-
- &=
-
-
- |=
-
-
- ^=
-
-
- <<=
-
-
- >>=
-
-
-
-
-
- expression
-
-
-
- conditional-expression
-
-
- assignment
-
-
-
-
-
- constant-expression
-
- expression
-
-
-
- boolean-expression
-
- expression
-
-
-
- statement
-
-
-
- labeled-statement
-
-
- declaration-statement
-
-
- embedded-statement
-
-
-
-
-
- embedded-statement
-
-
-
- block
-
-
- empty-statement
-
-
- expression-statement
-
-
- selection-statement
-
-
- iteration-statement
-
-
- jump-statement
-
-
- try-statement
-
-
- checked-statement
-
-
- unchecked-statement
-
-
- lock-statement
-
-
- using-statement
-
-
-
-
-
- block
-
-
-
- {
-
-
-
-
- statement-list
-
-
-
-
- }
-
-
-
-
-
- statement-list
-
-
-
- statement
-
-
-
-
- statement-list
-
-
- statement
-
-
-
-
-
-
-
- empty-statement
-
- ;
-
-
-
- labeled-statement
-
-
-
- identifier
-
-
- :
-
-
- statement
-
-
-
-
-
- declaration-statement
-
-
-
-
-
- local-variable-declaration
-
-
- ;
-
-
-
-
-
-
- local-constant-declaration
-
-
- ;
-
-
-
-
-
-
-
- local-variable-declaration
-
-
-
- type
-
-
- local-variable-declarators
-
-
-
-
-
- local-variable-declarators
-
-
-
- local-variable-declarator
-
-
-
-
- local-variable-declarators
-
-
- ,
-
-
- local-variable-declarator
-
-
-
-
-
-
-
- local-variable-declarator
-
-
-
- identifier
-
-
-
-
- identifier
-
-
- =
-
-
- local-variable-initializer
-
-
-
-
-
-
-
- local-variable-initializer
-
-
-
- expression
-
-
- array-initializer
-
-
-
-
-
- local-constant-declaration
-
-
-
- const
-
-
- type
-
-
- constant-declarators
-
-
-
-
-
- constant-declarators
-
-
-
- constant-declarator
-
-
-
-
- constant-declarators
-
-
- ,
-
-
- constant-declarator
-
-
-
-
-
-
-
- constant-declarator
-
-
-
- identifier
-
-
- =
-
-
- constant-expression
-
-
-
-
-
- expression-statement
-
-
-
- statement-expression
-
-
- ;
-
-
-
-
-
- statement-expression
-
-
-
- invocation-expression
-
-
- object-creation-expression
-
-
- assignment
-
-
- post-increment-expression
-
-
- post-decrement-expression
-
-
- pre-increment-expression
-
-
- pre-decrement-expression
-
-
-
-
-
- selection-statement
-
-
-
- if-statement
-
-
- switch-statement
-
-
-
-
-
- if-statement
-
-
-
-
-
- if
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
-
- if
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
- else
-
-
- embedded-statement
-
-
-
-
-
-
-
- switch-statement
-
-
-
- switch
-
-
- (
-
-
- expression
-
-
- )
-
-
- switch-block
-
-
-
-
-
- switch-block
-
-
-
- {
-
-
-
-
- switch-sections
-
-
-
-
- }
-
-
-
-
-
- switch-sections
-
-
-
- switch-section
-
-
-
-
- switch-sections
-
-
- switch-section
-
-
-
-
-
-
-
- switch-section
-
-
-
- switch-labels
-
-
- statement-list
-
-
-
-
-
- switch-labels
-
-
-
- switch-label
-
-
-
-
- switch-labels
-
-
- switch-label
-
-
-
-
-
-
-
- switch-label
-
-
-
-
-
- case
-
-
- constant-expression
-
-
- :
-
-
-
-
-
-
- default
-
-
- :
-
-
-
-
-
-
-
- iteration-statement
-
-
-
- while-statement
-
-
- do-statement
-
-
- for-statement
-
-
- foreach-statement
-
-
-
-
-
- while-statement
-
-
-
- while
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- do-statement
-
-
-
- do
-
-
- embedded-statement
-
-
- while
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- ;
-
-
-
-
-
- for-statement
-
-
-
- for
-
-
- (
-
-
-
-
- for-initializer
-
-
-
-
- ;
-
-
-
-
- for-condition
-
-
-
-
- ;
-
-
-
-
- for-iterator
-
-
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- for-initializer
-
-
-
- local-variable-declaration
-
-
- statement-expression-list
-
-
-
-
-
- for-condition
-
- boolean-expression
-
-
-
- for-iterator
-
- statement-expression-list
-
-
-
- statement-expression-list
-
-
-
- statement-expression
-
-
-
-
- statement-expression-list
-
-
- ,
-
-
- statement-expression
-
-
-
-
-
-
-
- foreach-statement
-
-
-
- foreach
-
-
- (
-
-
- type
-
-
- identifier
-
-
- in
-
-
- expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- jump-statement
-
-
-
- break-statement
-
-
- continue-statement
-
-
- goto-statement
-
-
- return-statement
-
-
- throw-statement
-
-
-
-
-
- break-statement
-
-
-
- break
-
-
- ;
-
-
-
-
-
- continue-statement
-
-
-
- continue
-
-
- ;
-
-
-
-
-
- goto-statement
-
-
-
-
-
- goto
-
-
- identifier
-
-
- ;
-
-
-
-
-
-
- goto
-
-
- case
-
-
- constant-expression
-
-
- ;
-
-
-
-
-
-
- goto
-
-
- default
-
-
- ;
-
-
-
-
-
-
-
- return-statement
-
-
-
- return
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
- throw-statement
-
-
-
- throw
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
- try-statement
-
-
-
-
-
- try
-
-
- block
-
-
- catch-clauses
-
-
-
-
-
-
- try
-
-
- block
-
-
- finally-clause
-
-
-
-
-
-
- try
-
-
- block
-
-
- catch-clauses
-
-
- finally-clause
-
-
-
-
-
-
-
- catch-clauses
-
-
-
-
-
- specific-catch-clauses
-
-
-
-
- general-catch-clause
-
-
-
-
-
-
-
-
-
-
- specific-catch-clauses
-
-
-
-
- general-catch-clause
-
-
-
-
-
-
-
- specific-catch-clauses
-
-
-
- specific-catch-clause
-
-
-
-
- specific-catch-clauses
-
-
- specific-catch-clause
-
-
-
-
-
-
-
- specific-catch-clause
-
-
-
- catch
-
-
- (
-
-
- class-type
-
-
-
-
- identifier
-
-
-
-
- )
-
-
- block
-
-
-
-
-
- general-catch-clause
-
-
-
- catch
-
-
- block
-
-
-
-
-
- finally-clause
-
-
-
- finally
-
-
- block
-
-
-
-
-
- checked-statement
-
-
-
- checked
-
-
- block
-
-
-
-
-
- unchecked-statement
-
-
-
- unchecked
-
-
- block
-
-
-
-
-
- lock-statement
-
-
-
- lock
-
-
- (
-
-
- expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- using-statement
-
-
-
- using
-
-
- (
-
-
- resource-acquisition
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- resource-acquisition
-
-
-
- local-variable-declaration
-
-
- expression
-
-
-
-
-
- compilation-unit
-
-
-
-
-
- using-directives
-
-
-
-
-
-
- global-attributes
-
-
-
-
-
-
- namespace-member-declarations
-
-
-
-
-
-
-
- namespace-declaration
-
-
-
- namespace
-
-
- qualified-identifier
-
-
- namespace-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- qualified-identifier
-
-
-
- identifier
-
-
-
-
- qualified-identifier
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- namespace-body
-
-
-
- {
-
-
-
-
- using-directives
-
-
-
-
-
-
- namespace-member-declarations
-
-
-
-
- }
-
-
-
-
-
- using-directives
-
-
-
- using-directive
-
-
-
-
- using-directives
-
-
- using-directive
-
-
-
-
-
-
-
- using-directive
-
-
-
- using-alias-directive
-
-
- using-namespace-directive
-
-
-
-
-
- using-alias-directive
-
-
-
- using
-
-
- identifier
-
-
- =
-
-
- namespace-or-type-name
-
-
- ;
-
-
-
-
-
- using-namespace-directive
-
-
-
- using
-
-
- namespace-name
-
-
- ;
-
-
-
-
-
- namespace-member-declarations
-
-
-
- namespace-member-declaration
-
-
-
-
- namespace-member-declarations
-
-
- namespace-member-declaration
-
-
-
-
-
-
-
- namespace-member-declaration
-
-
-
- namespace-declaration
-
-
- type-declaration
-
-
-
-
-
- type-declaration
-
-
-
- class-declaration
-
-
- struct-declaration
-
-
- interface-declaration
-
-
- enum-declaration
-
-
- delegate-declaration
-
-
-
-
-
- class-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- class-modifiers
-
-
-
-
- class
-
-
- identifier
-
-
-
-
- class-base
-
-
-
-
- class-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- class-modifiers
-
-
-
- class-modifier
-
-
-
-
- class-modifiers
-
-
- class-modifier
-
-
-
-
-
-
-
- class-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- abstract
-
-
- sealed
-
-
-
-
-
- class-base
-
-
-
-
-
- :
-
-
- class-type
-
-
-
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
-
- :
-
-
- class-type
-
-
- ,
-
-
- interface-type-list
-
-
-
-
-
-
-
- interface-type-list
-
-
-
- interface-type
-
-
-
-
- interface-type-list
-
-
- ,
-
-
- interface-type
-
-
-
-
-
-
-
- class-body
-
-
-
- {
-
-
-
-
- class-member-declarations
-
-
-
-
- }
-
-
-
-
-
- class-member-declarations
-
-
-
- class-member-declaration
-
-
-
-
- class-member-declarations
-
-
- class-member-declaration
-
-
-
-
-
-
-
- class-member-declaration
-
-
-
- constant-declaration
-
-
- field-declaration
-
-
- method-declaration
-
-
- property-declaration
-
-
- event-declaration
-
-
- indexer-declaration
-
-
- operator-declaration
-
-
- constructor-declaration
-
-
- destructor-declaration
-
-
- static-constructor-declaration
-
-
- type-declaration
-
-
-
-
-
- constant-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- constant-modifiers
-
-
-
-
- const
-
-
- type
-
-
- constant-declarators
-
-
- ;
-
-
-
-
-
- constant-modifiers
-
-
-
- constant-modifier
-
-
-
-
- constant-modifiers
-
-
- constant-modifier
-
-
-
-
-
-
-
- constant-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- field-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- field-modifiers
-
-
-
-
- type
-
-
- variable-declarators
-
-
- ;
-
-
-
-
-
- field-modifiers
-
-
-
- field-modifier
-
-
-
-
- field-modifiers
-
-
- field-modifier
-
-
-
-
-
-
-
- field-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- readonly
-
-
- volatile
-
-
-
-
-
- variable-declarators
-
-
-
- variable-declarator
-
-
-
-
- variable-declarators
-
-
- ,
-
-
- variable-declarator
-
-
-
-
-
-
-
- variable-declarator
-
-
-
- identifier
-
-
-
-
- identifier
-
-
- =
-
-
- variable-initializer
-
-
-
-
-
-
-
- variable-initializer
-
-
-
- expression
-
-
- array-initializer
-
-
-
-
-
- method-declaration
-
-
-
- method-header
-
-
- method-body
-
-
-
-
-
- method-header
-
-
-
-
-
- attributes
-
-
-
-
-
-
- method-modifiers
-
-
-
-
- return-type
-
-
- member-name
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
-
- method-modifiers
-
-
-
- method-modifier
-
-
-
-
- method-modifiers
-
-
- method-modifier
-
-
-
-
-
-
-
- method-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- return-type
-
-
-
- type
-
-
- void
-
-
-
-
-
- member-name
-
-
-
- identifier
-
-
-
-
- interface-type
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- method-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- formal-parameter-list
-
-
-
- fixed-parameters
-
-
-
-
- fixed-parameters
-
-
- ,
-
-
- parameter-array
-
-
-
-
- parameter-array
-
-
-
-
-
- fixed-parameters
-
-
-
- fixed-parameter
-
-
-
-
- fixed-parameters
-
-
- ,
-
-
- fixed-parameter
-
-
-
-
-
-
-
- fixed-parameter
-
-
-
-
-
- attributes
-
-
-
-
-
-
- parameter-modifier
-
-
-
-
- type
-
-
- identifier
-
-
-
-
-
- parameter-modifier
-
-
-
- ref
-
-
- out
-
-
-
-
-
- parameter-array
-
-
-
-
-
- attributes
-
-
-
-
- params
-
-
- array-type
-
-
- identifier
-
-
-
-
-
- property-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- property-modifiers
-
-
-
-
- type
-
-
- member-name
-
-
- {
-
-
- accessor-declarations
-
-
- }
-
-
-
-
-
- property-modifiers
-
-
-
- property-modifier
-
-
-
-
- property-modifiers
-
-
- property-modifier
-
-
-
-
-
-
-
- property-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- accessor-declarations
-
-
-
-
-
- get-accessor-declaration
-
-
-
-
- set-accessor-declaration
-
-
-
-
-
-
-
-
- set-accessor-declaration
-
-
-
-
- get-accessor-declaration
-
-
-
-
-
-
-
-
-
- get-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- accessor-body
-
-
-
-
-
- set-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- accessor-body
-
-
-
-
-
- accessor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- event-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- event-modifiers
-
-
-
-
- event
-
-
- type
-
-
- variable-declarators
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- event-modifiers
-
-
-
-
- event
-
-
- type
-
-
- member-name
-
-
- {
-
-
- event-accessor-declarations
-
-
- }
-
-
-
-
-
-
-
- event-modifiers
-
-
-
- event-modifier
-
-
-
-
- event-modifiers
-
-
- event-modifier
-
-
-
-
-
-
-
- event-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- event-accessor-declarations
-
-
-
-
-
- add-accessor-declaration
-
-
- remove-accessor-declaration
-
-
-
-
-
-
- remove-accessor-declaration
-
-
- add-accessor-declaration
-
-
-
-
-
-
-
- add-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- add
-
-
- block
-
-
-
-
-
- remove-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- remove
-
-
- block
-
-
-
-
-
- indexer-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- indexer-modifiers
-
-
-
-
- indexer-declarator
-
-
- {
-
-
- accessor-declarations
-
-
- }
-
-
-
-
-
- indexer-modifiers
-
-
-
- indexer-modifier
-
-
-
-
- indexer-modifiers
-
-
- indexer-modifier
-
-
-
-
-
-
-
- indexer-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- indexer-declarator
-
-
-
-
-
- type
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
-
-
-
-
- type
-
-
- interface-type
-
-
- .
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
-
-
-
-
-
- operator-declaration
-
-
-
-
-
- attributes
-
-
-
-
- operator-modifiers
-
-
- operator-declarator
-
-
- operator-body
-
-
-
-
-
- operator-modifiers
-
-
-
- operator-modifier
-
-
-
-
- operator-modifiers
-
-
- operator-modifier
-
-
-
-
-
-
-
- operator-modifier
-
-
-
- public
-
-
- static
-
-
- extern
-
-
-
-
-
- operator-declarator
-
-
-
- unary-operator-declarator
-
-
- binary-operator-declarator
-
-
- conversion-operator-declarator
-
-
-
-
-
- unary-operator-declarator
-
-
-
- type
-
-
- operator
-
-
- overloadable-unary-operator
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
- overloadable-unary-operator
-
-
-
- +
-
-
- -
-
-
- !
-
-
- ~
-
-
- ++
-
-
- --
-
-
- true
-
-
- false
-
-
-
-
-
- binary-operator-declarator
-
-
-
- type
-
-
- operator
-
-
- overloadable-binary-operator
-
-
- (
-
-
- type
-
-
- identifier
-
-
- ,
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
- overloadable-binary-operator
-
-
-
- +
-
-
- -
-
-
- *
-
-
- /
-
-
- %
-
-
- &
-
-
- |
-
-
- ^
-
-
- <<
-
-
- >>
-
-
- ==
-
-
- !=
-
-
- >
-
-
- <
-
-
- >=
-
-
- <=
-
-
-
-
-
- conversion-operator-declarator
-
-
-
-
-
- implicit
-
-
- operator
-
-
- type
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
-
- explicit
-
-
- operator
-
-
- type
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
-
-
- operator-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- constructor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- constructor-modifiers
-
-
-
-
- constructor-declarator
-
-
- constructor-body
-
-
-
-
-
- constructor-modifiers
-
-
-
- constructor-modifier
-
-
-
-
- constructor-modifiers
-
-
- constructor-modifier
-
-
-
-
-
-
-
- constructor-modifier
-
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- extern
-
-
-
-
-
- constructor-declarator
-
-
-
- identifier
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- constructor-initializer
-
-
-
-
-
-
-
- constructor-initializer
-
-
-
-
-
- :
-
-
- base
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
-
- :
-
-
- this
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
-
-
- constructor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- static-constructor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- static-constructor-modifiers
-
-
- identifier
-
-
- (
-
-
- )
-
-
- static-constructor-body
-
-
-
-
-
- static-constructor-modifiers
-
-
-
-
-
-
-
- extern
-
-
-
-
- static
-
-
-
-
-
-
- static
-
-
-
-
- extern
-
-
-
-
-
-
-
-
-
- static-constructor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- destructor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- extern
-
-
-
-
- ~
-
-
- identifier
-
-
- (
-
-
- )
-
-
- destructor-body
-
-
-
-
-
- destructor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- struct-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- struct-modifiers
-
-
-
-
- struct
-
-
- identifier
-
-
-
-
- struct-interfaces
-
-
-
-
- struct-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- struct-modifiers
-
-
-
- struct-modifier
-
-
-
-
- struct-modifiers
-
-
- struct-modifier
-
-
-
-
-
-
-
- struct-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- struct-interfaces
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
- struct-body
-
-
-
- {
-
-
-
-
- struct-member-declarations
-
-
-
-
- }
-
-
-
-
-
- struct-member-declarations
-
-
-
- struct-member-declaration
-
-
-
-
- struct-member-declarations
-
-
- struct-member-declaration
-
-
-
-
-
-
-
- struct-member-declaration
-
-
-
- constant-declaration
-
-
- field-declaration
-
-
- method-declaration
-
-
- property-declaration
-
-
- event-declaration
-
-
- indexer-declaration
-
-
- operator-declaration
-
-
- constructor-declaration
-
-
- static-constructor-declaration
-
-
- type-declaration
-
-
-
-
-
- array-initializer
-
-
-
-
-
- {
-
-
-
-
- variable-initializer-list
-
-
-
-
- }
-
-
-
-
-
-
- {
-
-
- variable-initializer-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- variable-initializer-list
-
-
-
- variable-initializer
-
-
-
-
- variable-initializer-list
-
-
- ,
-
-
- variable-initializer
-
-
-
-
-
-
-
- interface-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- interface-modifiers
-
-
-
-
- interface
-
-
- identifier
-
-
-
-
- interface-base
-
-
-
-
- interface-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- interface-modifiers
-
-
-
- interface-modifier
-
-
-
-
- interface-modifiers
-
-
- interface-modifier
-
-
-
-
-
-
-
- interface-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- interface-base
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
- interface-body
-
-
-
- {
-
-
-
-
- interface-member-declarations
-
-
-
-
- }
-
-
-
-
-
- interface-member-declarations
-
-
-
- interface-member-declaration
-
-
-
-
- interface-member-declarations
-
-
- interface-member-declaration
-
-
-
-
-
-
-
- interface-member-declaration
-
-
-
- interface-method-declaration
-
-
- interface-property-declaration
-
-
- interface-event-declaration
-
-
- interface-indexer-declaration
-
-
-
-
-
- interface-method-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- return-type
-
-
- identifier
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
- ;
-
-
-
-
-
- interface-property-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- type
-
-
- identifier
-
-
- {
-
-
- interface-accessors
-
-
- }
-
-
-
-
-
- interface-accessors
-
-
-
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
-
-
-
- interface-event-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- event
-
-
- type
-
-
- identifier
-
-
- ;
-
-
-
-
-
- interface-indexer-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- type
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
- {
-
-
- interface-accessors
-
-
- }
-
-
-
-
-
- enum-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- enum-modifiers
-
-
-
-
- enum
-
-
- identifier
-
-
-
-
- enum-base
-
-
-
-
- enum-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- enum-base
-
-
-
- :
-
-
- integral-type
-
-
-
-
-
- enum-body
-
-
-
-
-
- {
-
-
-
-
- enum-member-declarations
-
-
-
-
- }
-
-
-
-
-
-
- {
-
-
- enum-member-declarations
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- enum-modifiers
-
-
-
- enum-modifier
-
-
-
-
- enum-modifiers
-
-
- enum-modifier
-
-
-
-
-
-
-
- enum-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- enum-member-declarations
-
-
-
- enum-member-declaration
-
-
-
-
- enum-member-declarations
-
-
- ,
-
-
- enum-member-declaration
-
-
-
-
-
-
-
- enum-member-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
- identifier
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- identifier
-
-
- =
-
-
- constant-expression
-
-
-
-
-
-
-
- delegate-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- delegate-modifiers
-
-
-
-
- delegate
-
-
- return-type
-
-
- identifier
-
-
-
-
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
- ;
-
-
-
-
-
-
-
- delegate-modifiers
-
-
-
- delegate-modifier
-
-
-
-
- delegate-modifiers
-
-
- delegate-modifier
-
-
-
-
-
-
-
- delegate-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- global-attributes
-
- global-attribute-sections
-
-
-
- global-attribute-sections
-
-
-
- global-attribute-section
-
-
-
-
- global-attribute-sections
-
-
- global-attribute-section
-
-
-
-
-
-
-
- global-attribute-section
-
-
-
-
-
- [
-
-
- global-attribute-target-specifier
-
-
- attribute-list
-
-
- ]
-
-
-
-
-
-
- [
-
-
- global-attribute-target-specifier
-
-
- attribute-list
-
-
- ,
-
-
- ]
-
-
-
-
-
-
-
- global-attribute-target-specifier
-
-
-
- global-attribute-target
-
-
- :
-
-
-
-
-
- global-attribute-target
-
-
-
- assembly
-
-
- module
-
-
-
-
-
- attributes
-
- attribute-sections
-
-
-
- attribute-sections
-
-
-
- attribute-section
-
-
-
-
- attribute-sections
-
-
- attribute-section
-
-
-
-
-
-
-
- attribute-section
-
-
-
-
-
- [
-
-
-
-
- attribute-target-specifier
-
-
-
-
- attribute-list
-
-
- ]
-
-
-
-
-
-
- [
-
-
-
-
- attribute-target-specifier
-
-
-
-
- attribute-list
-
-
- ,
-
-
- ]
-
-
-
-
-
-
-
- attribute-target-specifier
-
-
-
- attribute-target
-
-
- :
-
-
-
-
-
- attribute-target
-
-
-
- field
-
-
- event
-
-
- method
-
-
- param
-
-
- property
-
-
- return
-
-
- type
-
-
-
-
-
- attribute-list
-
-
-
- attribute
-
-
-
-
- attribute-list
-
-
- ,
-
-
- attribute
-
-
-
-
-
-
-
- attribute
-
-
-
- attribute-name
-
-
-
-
- attribute-arguments
-
-
-
-
-
-
-
- attribute-name
-
- type-name
-
-
-
- attribute-arguments
-
-
-
-
-
- (
-
-
-
-
- positional-argument-list
-
-
-
-
- )
-
-
-
-
-
-
- (
-
-
- positional-argument-list
-
-
- ,
-
-
- named-argument-list
-
-
- )
-
-
-
-
-
-
- (
-
-
- named-argument-list
-
-
- )
-
-
-
-
-
-
-
- positional-argument-list
-
-
-
- positional-argument
-
-
-
-
- positional-argument-list
-
-
- ,
-
-
- positional-argument
-
-
-
-
-
-
-
- positional-argument
-
- attribute-argument-expression
-
-
-
- named-argument-list
-
-
-
- named-argument
-
-
-
-
- named-argument-list
-
-
- ,
-
-
- named-argument
-
-
-
-
-
-
-
- named-argument
-
-
-
- identifier
-
-
- =
-
-
- attribute-argument-expression
-
-
-
-
-
- attribute-argument-expression
-
- expression
-
-
-
- keyword
-
-
-
- abstract
-
-
- as
-
-
- base
-
-
- bool
-
-
- break
-
-
- byte
-
-
- case
-
-
- catch
-
-
- char
-
-
- checked
-
-
- class
-
-
- const
-
-
- continue
-
-
- decimal
-
-
- default
-
-
- delegate
-
-
- do
-
-
- double
-
-
- else
-
-
- enum
-
-
- event
-
-
- explicit
-
-
- extern
-
-
- false
-
-
- finally
-
-
- fixed
-
-
- float
-
-
- for
-
-
- foreach
-
-
- goto
-
-
- if
-
-
- implicit
-
-
- in
-
-
- int
-
-
- interface
-
-
- internal
-
-
- is
-
-
- lock
-
-
- long
-
-
- namespace
-
-
- new
-
-
- null
-
-
- object
-
-
- operator
-
-
- out
-
-
- override
-
-
- params
-
-
- private
-
-
- protected
-
-
- public
-
-
- readonly
-
-
- ref
-
-
- return
-
-
- sbyte
-
-
- sealed
-
-
- short
-
-
- sizeof
-
-
- stackalloc
-
-
- static
-
-
- string
-
-
- struct
-
-
- switch
-
-
- this
-
-
- throw
-
-
- true
-
-
- try
-
-
- typeof
-
-
- uint
-
-
- ulong
-
-
- unchecked
-
-
- unsafe
-
-
- ushort
-
-
- using
-
-
- virtual
-
-
- void
-
-
- volatile
-
-
- while
-
-
- assembly
-
-
- module
-
-
- add
-
-
- remove
-
-
- get
-
-
- set
-
-
- field
-
-
- method
-
-
- param
-
-
- property
-
-
-
-
-
\ No newline at end of file
+
+
+ namespace-name
+
+ namespace-or-type-name
+
+
+
+ type-name
+
+ namespace-or-type-name
+
+
+
+ namespace-or-type-name
+
+
+
+ identifier
+
+
+
+
+ namespace-or-type-name
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ type
+
+
+
+ value-type
+
+
+ reference-type
+
+
+
+
+
+ value-type
+
+
+
+ struct-type
+
+
+ enum-type
+
+
+
+
+
+ struct-type
+
+
+
+ type-name
+
+
+ simple-type
+
+
+
+
+
+ simple-type
+
+
+
+ numeric-type
+
+
+ bool
+
+
+
+
+
+ numeric-type
+
+
+
+ integral-type
+
+
+ floating-point-type
+
+
+ decimal
+
+
+
+
+
+ integral-type
+
+
+
+ sbyte
+
+
+ byte
+
+
+ short
+
+
+ ushort
+
+
+ int
+
+
+ uint
+
+
+ long
+
+
+ ulong
+
+
+ char
+
+
+
+
+
+ floating-point-type
+
+
+
+ float
+
+
+ double
+
+
+
+
+
+ enum-type
+
+ type-name
+
+
+
+ reference-type
+
+
+
+ class-type
+
+
+ interface-type
+
+
+ array-type
+
+
+ delegate-type
+
+
+
+
+
+ class-type
+
+
+
+ type-name
+
+
+ object
+
+
+ string
+
+
+
+
+
+ interface-type
+
+ type-name
+
+
+
+ array-type
+
+
+
+ non-array-type
+
+
+ rank-specifiers
+
+
+
+
+
+ non-array-type
+
+ type
+
+
+
+ rank-specifiers
+
+
+
+ rank-specifier
+
+
+
+
+ rank-specifiers
+
+
+ rank-specifier
+
+
+
+
+
+
+
+ rank-specifier
+
+
+
+ [
+
+
+
+
+ dim-separators
+
+
+
+
+ ]
+
+
+
+
+
+ dim-separators
+
+
+
+ ,
+
+
+
+
+ dim-separators
+
+
+ ,
+
+
+
+
+
+
+
+ delegate-type
+
+ type-name
+
+
+
+ variable-reference
+
+ expression
+
+
+
+ argument-list
+
+
+
+ argument
+
+
+
+
+ argument-list
+
+
+ ,
+
+
+ argument
+
+
+
+
+
+
+
+ argument
+
+
+
+ expression
+
+
+
+
+ ref
+
+
+ variable-reference
+
+
+
+
+
+
+ out
+
+
+ variable-reference
+
+
+
+
+
+
+
+ primary-expression
+
+
+
+ primary-no-array-creation-expression
+
+
+ array-creation-expression
+
+
+
+
+
+ primary-no-array-creation-expression
+
+
+
+ literal
+
+
+ simple-name
+
+
+ parenthesized-expression
+
+
+ member-access
+
+
+ invocation-expression
+
+
+ element-access
+
+
+ this-access
+
+
+ base-access
+
+
+ post-increment-expression
+
+
+ post-decrement-expression
+
+
+ object-creation-expression
+
+
+ delegate-creation-expression
+
+
+ typeof-expression
+
+
+ checked-expression
+
+
+ unchecked-expression
+
+
+
+
+
+ simple-name
+
+ identifier
+
+
+
+ parenthesized-expression
+
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ member-access
+
+
+
+
+
+ primary-expression
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+ predefined-type
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ predefined-type
+
+
+
+ bool
+
+
+ byte
+
+
+ char
+
+
+ decimal
+
+
+ double
+
+
+ float
+
+
+ int
+
+
+ long
+
+
+ object
+
+
+ sbyte
+
+
+ short
+
+
+ string
+
+
+ uint
+
+
+ ulong
+
+
+ ushort
+
+
+
+
+
+ invocation-expression
+
+
+
+ primary-expression
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+ element-access
+
+
+
+ primary-no-array-creation-expression
+
+
+ [
+
+
+ expression-list
+
+
+ ]
+
+
+
+
+
+ expression-list
+
+
+
+ expression
+
+
+
+
+ expression-list
+
+
+ ,
+
+
+ expression
+
+
+
+
+
+
+
+ this-access
+
+ this
+
+
+
+ base-access
+
+
+
+
+
+ base
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+ base
+
+
+ [
+
+
+ expression-list
+
+
+ ]
+
+
+
+
+
+
+
+ post-increment-expression
+
+
+
+ primary-expression
+
+
+ ++
+
+
+
+
+
+ post-decrement-expression
+
+
+
+ primary-expression
+
+
+ --
+
+
+
+
+
+ object-creation-expression
+
+
+
+ new
+
+
+ type
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+ array-creation-expression
+
+
+
+
+
+ new
+
+
+ non-array-type
+
+
+ [
+
+
+ expression-list
+
+
+ ]
+
+
+
+
+ rank-specifiers
+
+
+
+
+
+
+ array-initializer
+
+
+
+
+
+
+
+
+ new
+
+
+ array-type
+
+
+ array-initializer
+
+
+
+
+
+
+
+ delegate-creation-expression
+
+
+
+ new
+
+
+ delegate-type
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ typeof-expression
+
+
+
+
+
+ typeof
+
+
+ (
+
+
+ type
+
+
+ )
+
+
+
+
+
+
+ typeof
+
+
+ (
+
+
+ void
+
+
+ )
+
+
+
+
+
+
+
+ checked-expression
+
+
+
+ checked
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ unchecked-expression
+
+
+
+ unchecked
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ unary-expression
+
+
+
+ primary-expression
+
+
+
+
+ +
+
+
+ unary-expression
+
+
+
+
+
+
+ -
+
+
+ unary-expression
+
+
+
+
+
+
+ !
+
+
+ unary-expression
+
+
+
+
+
+
+ ~
+
+
+ unary-expression
+
+
+
+
+ pre-increment-expression
+
+
+ pre-decrement-expression
+
+
+ cast-expression
+
+
+
+
+
+ pre-increment-expression
+
+
+
+ ++
+
+
+ unary-expression
+
+
+
+
+
+ pre-decrement-expression
+
+
+
+ --
+
+
+ unary-expression
+
+
+
+
+
+ cast-expression
+
+
+
+ (
+
+
+ type
+
+
+ )
+
+
+ unary-expression
+
+
+
+
+
+ multiplicative-expression
+
+
+
+ unary-expression
+
+
+
+
+ multiplicative-expression
+
+
+ *
+
+
+ unary-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ /
+
+
+ unary-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ %
+
+
+ unary-expression
+
+
+
+
+
+
+
+ additive-expression
+
+
+
+ multiplicative-expression
+
+
+
+
+ additive-expression
+
+
+ +
+
+
+ multiplicative-expression
+
+
+
+
+
+
+ additive-expression
+
+
+ -
+
+
+ multiplicative-expression
+
+
+
+
+
+
+
+ shift-expression
+
+
+
+ additive-expression
+
+
+
+
+ shift-expression
+
+
+ <<
+
+
+ additive-expression
+
+
+
+
+
+
+ shift-expression
+
+
+ >>
+
+
+ additive-expression
+
+
+
+
+
+
+
+ relational-expression
+
+
+
+ shift-expression
+
+
+
+
+ relational-expression
+
+
+ <
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ <=
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >=
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ is
+
+
+ type
+
+
+
+
+
+
+ relational-expression
+
+
+ as
+
+
+ type
+
+
+
+
+
+
+
+ equality-expression
+
+
+
+ relational-expression
+
+
+
+
+ equality-expression
+
+
+ ==
+
+
+ relational-expression
+
+
+
+
+
+
+ equality-expression
+
+
+ !=
+
+
+ relational-expression
+
+
+
+
+
+
+
+ and-expression
+
+
+
+ equality-expression
+
+
+
+
+ and-expression
+
+
+ &
+
+
+ equality-expression
+
+
+
+
+
+
+
+ exclusive-or-expression
+
+
+
+ and-expression
+
+
+
+
+ exclusive-or-expression
+
+
+ ^
+
+
+ and-expression
+
+
+
+
+
+
+
+ inclusive-or-expression
+
+
+
+ exclusive-or-expression
+
+
+
+
+ inclusive-or-expression
+
+
+ |
+
+
+ exclusive-or-expression
+
+
+
+
+
+
+
+ conditional-and-expression
+
+
+
+ inclusive-or-expression
+
+
+
+
+ conditional-and-expression
+
+
+ &&
+
+
+ inclusive-or-expression
+
+
+
+
+
+
+
+ conditional-or-expression
+
+
+
+ conditional-and-expression
+
+
+
+
+ conditional-or-expression
+
+
+ ||
+
+
+ conditional-and-expression
+
+
+
+
+
+
+
+ conditional-expression
+
+
+
+ conditional-or-expression
+
+
+
+
+ conditional-or-expression
+
+
+ ?
+
+
+ expression
+
+
+ :
+
+
+ expression
+
+
+
+
+
+
+
+ assignment
+
+
+
+ unary-expression
+
+
+ assignment-operator
+
+
+ expression
+
+
+
+
+
+ assignment-operator
+
+
+
+ =
+
+
+ +=
+
+
+ -=
+
+
+ *=
+
+
+ /=
+
+
+ %=
+
+
+ &=
+
+
+ |=
+
+
+ ^=
+
+
+ <<=
+
+
+ >>=
+
+
+
+
+
+ expression
+
+
+
+ conditional-expression
+
+
+ assignment
+
+
+
+
+
+ constant-expression
+
+ expression
+
+
+
+ boolean-expression
+
+ expression
+
+
+
+ statement
+
+
+
+ labeled-statement
+
+
+ declaration-statement
+
+
+ embedded-statement
+
+
+
+
+
+ embedded-statement
+
+
+
+ block
+
+
+ empty-statement
+
+
+ expression-statement
+
+
+ selection-statement
+
+
+ iteration-statement
+
+
+ jump-statement
+
+
+ try-statement
+
+
+ checked-statement
+
+
+ unchecked-statement
+
+
+ lock-statement
+
+
+ using-statement
+
+
+
+
+
+ block
+
+
+
+ {
+
+
+
+
+ statement-list
+
+
+
+
+ }
+
+
+
+
+
+ statement-list
+
+
+
+ statement
+
+
+
+
+ statement-list
+
+
+ statement
+
+
+
+
+
+
+
+ empty-statement
+
+ ;
+
+
+
+ labeled-statement
+
+
+
+ identifier
+
+
+ :
+
+
+ statement
+
+
+
+
+
+ declaration-statement
+
+
+
+
+
+ local-variable-declaration
+
+
+ ;
+
+
+
+
+
+
+ local-constant-declaration
+
+
+ ;
+
+
+
+
+
+
+
+ local-variable-declaration
+
+
+
+ type
+
+
+ local-variable-declarators
+
+
+
+
+
+ local-variable-declarators
+
+
+
+ local-variable-declarator
+
+
+
+
+ local-variable-declarators
+
+
+ ,
+
+
+ local-variable-declarator
+
+
+
+
+
+
+
+ local-variable-declarator
+
+
+
+ identifier
+
+
+
+
+ identifier
+
+
+ =
+
+
+ local-variable-initializer
+
+
+
+
+
+
+
+ local-variable-initializer
+
+
+
+ expression
+
+
+ array-initializer
+
+
+
+
+
+ local-constant-declaration
+
+
+
+ const
+
+
+ type
+
+
+ constant-declarators
+
+
+
+
+
+ constant-declarators
+
+
+
+ constant-declarator
+
+
+
+
+ constant-declarators
+
+
+ ,
+
+
+ constant-declarator
+
+
+
+
+
+
+
+ constant-declarator
+
+
+
+ identifier
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+ expression-statement
+
+
+
+ statement-expression
+
+
+ ;
+
+
+
+
+
+ statement-expression
+
+
+
+ invocation-expression
+
+
+ object-creation-expression
+
+
+ assignment
+
+
+ post-increment-expression
+
+
+ post-decrement-expression
+
+
+ pre-increment-expression
+
+
+ pre-decrement-expression
+
+
+
+
+
+ selection-statement
+
+
+
+ if-statement
+
+
+ switch-statement
+
+
+
+
+
+ if-statement
+
+
+
+
+
+ if
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+
+ if
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+ else
+
+
+ embedded-statement
+
+
+
+
+
+
+
+ switch-statement
+
+
+
+ switch
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ switch-block
+
+
+
+
+
+ switch-block
+
+
+
+ {
+
+
+
+
+ switch-sections
+
+
+
+
+ }
+
+
+
+
+
+ switch-sections
+
+
+
+ switch-section
+
+
+
+
+ switch-sections
+
+
+ switch-section
+
+
+
+
+
+
+
+ switch-section
+
+
+
+ switch-labels
+
+
+ statement-list
+
+
+
+
+
+ switch-labels
+
+
+
+ switch-label
+
+
+
+
+ switch-labels
+
+
+ switch-label
+
+
+
+
+
+
+
+ switch-label
+
+
+
+
+
+ case
+
+
+ constant-expression
+
+
+ :
+
+
+
+
+
+
+ default
+
+
+ :
+
+
+
+
+
+
+
+ iteration-statement
+
+
+
+ while-statement
+
+
+ do-statement
+
+
+ for-statement
+
+
+ foreach-statement
+
+
+
+
+
+ while-statement
+
+
+
+ while
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ do-statement
+
+
+
+ do
+
+
+ embedded-statement
+
+
+ while
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ ;
+
+
+
+
+
+ for-statement
+
+
+
+ for
+
+
+ (
+
+
+
+
+ for-initializer
+
+
+
+
+ ;
+
+
+
+
+ for-condition
+
+
+
+
+ ;
+
+
+
+
+ for-iterator
+
+
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ for-initializer
+
+
+
+ local-variable-declaration
+
+
+ statement-expression-list
+
+
+
+
+
+ for-condition
+
+ boolean-expression
+
+
+
+ for-iterator
+
+ statement-expression-list
+
+
+
+ statement-expression-list
+
+
+
+ statement-expression
+
+
+
+
+ statement-expression-list
+
+
+ ,
+
+
+ statement-expression
+
+
+
+
+
+
+
+ foreach-statement
+
+
+
+ foreach
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ in
+
+
+ expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ jump-statement
+
+
+
+ break-statement
+
+
+ continue-statement
+
+
+ goto-statement
+
+
+ return-statement
+
+
+ throw-statement
+
+
+
+
+
+ break-statement
+
+
+
+ break
+
+
+ ;
+
+
+
+
+
+ continue-statement
+
+
+
+ continue
+
+
+ ;
+
+
+
+
+
+ goto-statement
+
+
+
+
+
+ goto
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+
+ goto
+
+
+ case
+
+
+ constant-expression
+
+
+ ;
+
+
+
+
+
+
+ goto
+
+
+ default
+
+
+ ;
+
+
+
+
+
+
+
+ return-statement
+
+
+
+ return
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+ throw-statement
+
+
+
+ throw
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+ try-statement
+
+
+
+
+
+ try
+
+
+ block
+
+
+ catch-clauses
+
+
+
+
+
+
+ try
+
+
+ block
+
+
+ finally-clause
+
+
+
+
+
+
+ try
+
+
+ block
+
+
+ catch-clauses
+
+
+ finally-clause
+
+
+
+
+
+
+
+ catch-clauses
+
+
+
+
+
+ specific-catch-clauses
+
+
+
+
+ general-catch-clause
+
+
+
+
+
+
+
+
+
+
+ specific-catch-clauses
+
+
+
+
+ general-catch-clause
+
+
+
+
+
+
+
+ specific-catch-clauses
+
+
+
+ specific-catch-clause
+
+
+
+
+ specific-catch-clauses
+
+
+ specific-catch-clause
+
+
+
+
+
+
+
+ specific-catch-clause
+
+
+
+ catch
+
+
+ (
+
+
+ class-type
+
+
+
+
+ identifier
+
+
+
+
+ )
+
+
+ block
+
+
+
+
+
+ general-catch-clause
+
+
+
+ catch
+
+
+ block
+
+
+
+
+
+ finally-clause
+
+
+
+ finally
+
+
+ block
+
+
+
+
+
+ checked-statement
+
+
+
+ checked
+
+
+ block
+
+
+
+
+
+ unchecked-statement
+
+
+
+ unchecked
+
+
+ block
+
+
+
+
+
+ lock-statement
+
+
+
+ lock
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ using-statement
+
+
+
+ using
+
+
+ (
+
+
+ resource-acquisition
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ resource-acquisition
+
+
+
+ local-variable-declaration
+
+
+ expression
+
+
+
+
+
+ compilation-unit
+
+
+
+
+
+ using-directives
+
+
+
+
+
+
+ global-attributes
+
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+
+
+
+
+ namespace-declaration
+
+
+
+ namespace
+
+
+ qualified-identifier
+
+
+ namespace-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ qualified-identifier
+
+
+
+ identifier
+
+
+
+
+ qualified-identifier
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ namespace-body
+
+
+
+ {
+
+
+
+
+ using-directives
+
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ using-directives
+
+
+
+ using-directive
+
+
+
+
+ using-directives
+
+
+ using-directive
+
+
+
+
+
+
+
+ using-directive
+
+
+
+ using-alias-directive
+
+
+ using-namespace-directive
+
+
+
+
+
+ using-alias-directive
+
+
+
+ using
+
+
+ identifier
+
+
+ =
+
+
+ namespace-or-type-name
+
+
+ ;
+
+
+
+
+
+ using-namespace-directive
+
+
+
+ using
+
+
+ namespace-name
+
+
+ ;
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+ namespace-member-declaration
+
+
+
+
+ namespace-member-declarations
+
+
+ namespace-member-declaration
+
+
+
+
+
+
+
+ namespace-member-declaration
+
+
+
+ namespace-declaration
+
+
+ type-declaration
+
+
+
+
+
+ type-declaration
+
+
+
+ class-declaration
+
+
+ struct-declaration
+
+
+ interface-declaration
+
+
+ enum-declaration
+
+
+ delegate-declaration
+
+
+
+
+
+ class-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ class-modifiers
+
+
+
+
+ class
+
+
+ identifier
+
+
+
+
+ class-base
+
+
+
+
+ class-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ class-modifiers
+
+
+
+ class-modifier
+
+
+
+
+ class-modifiers
+
+
+ class-modifier
+
+
+
+
+
+
+
+ class-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ abstract
+
+
+ sealed
+
+
+
+
+
+ class-base
+
+
+
+
+
+ :
+
+
+ class-type
+
+
+
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+
+ :
+
+
+ class-type
+
+
+ ,
+
+
+ interface-type-list
+
+
+
+
+
+
+
+ interface-type-list
+
+
+
+ interface-type
+
+
+
+
+ interface-type-list
+
+
+ ,
+
+
+ interface-type
+
+
+
+
+
+
+
+ class-body
+
+
+
+ {
+
+
+
+
+ class-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ class-member-declarations
+
+
+
+ class-member-declaration
+
+
+
+
+ class-member-declarations
+
+
+ class-member-declaration
+
+
+
+
+
+
+
+ class-member-declaration
+
+
+
+ constant-declaration
+
+
+ field-declaration
+
+
+ method-declaration
+
+
+ property-declaration
+
+
+ event-declaration
+
+
+ indexer-declaration
+
+
+ operator-declaration
+
+
+ constructor-declaration
+
+
+ destructor-declaration
+
+
+ static-constructor-declaration
+
+
+ type-declaration
+
+
+
+
+
+ constant-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ constant-modifiers
+
+
+
+
+ const
+
+
+ type
+
+
+ constant-declarators
+
+
+ ;
+
+
+
+
+
+ constant-modifiers
+
+
+
+ constant-modifier
+
+
+
+
+ constant-modifiers
+
+
+ constant-modifier
+
+
+
+
+
+
+
+ constant-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ field-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ field-modifiers
+
+
+
+
+ type
+
+
+ variable-declarators
+
+
+ ;
+
+
+
+
+
+ field-modifiers
+
+
+
+ field-modifier
+
+
+
+
+ field-modifiers
+
+
+ field-modifier
+
+
+
+
+
+
+
+ field-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ readonly
+
+
+ volatile
+
+
+
+
+
+ variable-declarators
+
+
+
+ variable-declarator
+
+
+
+
+ variable-declarators
+
+
+ ,
+
+
+ variable-declarator
+
+
+
+
+
+
+
+ variable-declarator
+
+
+
+ identifier
+
+
+
+
+ identifier
+
+
+ =
+
+
+ variable-initializer
+
+
+
+
+
+
+
+ variable-initializer
+
+
+
+ expression
+
+
+ array-initializer
+
+
+
+
+
+ method-declaration
+
+
+
+ method-header
+
+
+ method-body
+
+
+
+
+
+ method-header
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ method-modifiers
+
+
+
+
+ return-type
+
+
+ member-name
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+
+ method-modifiers
+
+
+
+ method-modifier
+
+
+
+
+ method-modifiers
+
+
+ method-modifier
+
+
+
+
+
+
+
+ method-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ return-type
+
+
+
+ type
+
+
+ void
+
+
+
+
+
+ member-name
+
+
+
+ identifier
+
+
+
+
+ interface-type
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ method-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ formal-parameter-list
+
+
+
+ fixed-parameters
+
+
+
+
+ fixed-parameters
+
+
+ ,
+
+
+ parameter-array
+
+
+
+
+ parameter-array
+
+
+
+
+
+ fixed-parameters
+
+
+
+ fixed-parameter
+
+
+
+
+ fixed-parameters
+
+
+ ,
+
+
+ fixed-parameter
+
+
+
+
+
+
+
+ fixed-parameter
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ parameter-modifier
+
+
+
+
+ type
+
+
+ identifier
+
+
+
+
+
+ parameter-modifier
+
+
+
+ ref
+
+
+ out
+
+
+
+
+
+ parameter-array
+
+
+
+
+
+ attributes
+
+
+
+
+ params
+
+
+ array-type
+
+
+ identifier
+
+
+
+
+
+ property-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ property-modifiers
+
+
+
+
+ type
+
+
+ member-name
+
+
+ {
+
+
+ accessor-declarations
+
+
+ }
+
+
+
+
+
+ property-modifiers
+
+
+
+ property-modifier
+
+
+
+
+ property-modifiers
+
+
+ property-modifier
+
+
+
+
+
+
+
+ property-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ accessor-declarations
+
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ accessor-body
+
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ accessor-body
+
+
+
+
+
+ accessor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ event-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ event-modifiers
+
+
+
+
+ event
+
+
+ type
+
+
+ variable-declarators
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ event-modifiers
+
+
+
+
+ event
+
+
+ type
+
+
+ member-name
+
+
+ {
+
+
+ event-accessor-declarations
+
+
+ }
+
+
+
+
+
+
+
+ event-modifiers
+
+
+
+ event-modifier
+
+
+
+
+ event-modifiers
+
+
+ event-modifier
+
+
+
+
+
+
+
+ event-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ event-accessor-declarations
+
+
+
+
+
+ add-accessor-declaration
+
+
+ remove-accessor-declaration
+
+
+
+
+
+
+ remove-accessor-declaration
+
+
+ add-accessor-declaration
+
+
+
+
+
+
+
+ add-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ add
+
+
+ block
+
+
+
+
+
+ remove-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ remove
+
+
+ block
+
+
+
+
+
+ indexer-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ indexer-modifiers
+
+
+
+
+ indexer-declarator
+
+
+ {
+
+
+ accessor-declarations
+
+
+ }
+
+
+
+
+
+ indexer-modifiers
+
+
+
+ indexer-modifier
+
+
+
+
+ indexer-modifiers
+
+
+ indexer-modifier
+
+
+
+
+
+
+
+ indexer-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ indexer-declarator
+
+
+
+
+
+ type
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+
+
+
+
+ type
+
+
+ interface-type
+
+
+ .
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+
+
+
+
+
+ operator-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ operator-modifiers
+
+
+ operator-declarator
+
+
+ operator-body
+
+
+
+
+
+ operator-modifiers
+
+
+
+ operator-modifier
+
+
+
+
+ operator-modifiers
+
+
+ operator-modifier
+
+
+
+
+
+
+
+ operator-modifier
+
+
+
+ public
+
+
+ static
+
+
+ extern
+
+
+
+
+
+ operator-declarator
+
+
+
+ unary-operator-declarator
+
+
+ binary-operator-declarator
+
+
+ conversion-operator-declarator
+
+
+
+
+
+ unary-operator-declarator
+
+
+
+ type
+
+
+ operator
+
+
+ overloadable-unary-operator
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+ overloadable-unary-operator
+
+
+
+ +
+
+
+ -
+
+
+ !
+
+
+ ~
+
+
+ ++
+
+
+ --
+
+
+ true
+
+
+ false
+
+
+
+
+
+ binary-operator-declarator
+
+
+
+ type
+
+
+ operator
+
+
+ overloadable-binary-operator
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ ,
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+ overloadable-binary-operator
+
+
+
+ +
+
+
+ -
+
+
+ *
+
+
+ /
+
+
+ %
+
+
+ &
+
+
+ |
+
+
+ ^
+
+
+ <<
+
+
+ >>
+
+
+ ==
+
+
+ !=
+
+
+ >
+
+
+ <
+
+
+ >=
+
+
+ <=
+
+
+
+
+
+ conversion-operator-declarator
+
+
+
+
+
+ implicit
+
+
+ operator
+
+
+ type
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+
+ explicit
+
+
+ operator
+
+
+ type
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+
+
+ operator-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ constructor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ constructor-modifiers
+
+
+
+
+ constructor-declarator
+
+
+ constructor-body
+
+
+
+
+
+ constructor-modifiers
+
+
+
+ constructor-modifier
+
+
+
+
+ constructor-modifiers
+
+
+ constructor-modifier
+
+
+
+
+
+
+
+ constructor-modifier
+
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ extern
+
+
+
+
+
+ constructor-declarator
+
+
+
+ identifier
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ constructor-initializer
+
+
+
+
+
+
+
+ constructor-initializer
+
+
+
+
+
+ :
+
+
+ base
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+ :
+
+
+ this
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+
+ constructor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ static-constructor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ static-constructor-modifiers
+
+
+ identifier
+
+
+ (
+
+
+ )
+
+
+ static-constructor-body
+
+
+
+
+
+ static-constructor-modifiers
+
+
+
+
+
+
+
+ extern
+
+
+
+
+ static
+
+
+
+
+
+
+ static
+
+
+
+
+ extern
+
+
+
+
+
+
+
+
+
+ static-constructor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ destructor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ extern
+
+
+
+
+ ~
+
+
+ identifier
+
+
+ (
+
+
+ )
+
+
+ destructor-body
+
+
+
+
+
+ destructor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ struct-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ struct-modifiers
+
+
+
+
+ struct
+
+
+ identifier
+
+
+
+
+ struct-interfaces
+
+
+
+
+ struct-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ struct-modifiers
+
+
+
+ struct-modifier
+
+
+
+
+ struct-modifiers
+
+
+ struct-modifier
+
+
+
+
+
+
+
+ struct-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ struct-interfaces
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+ struct-body
+
+
+
+ {
+
+
+
+
+ struct-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ struct-member-declarations
+
+
+
+ struct-member-declaration
+
+
+
+
+ struct-member-declarations
+
+
+ struct-member-declaration
+
+
+
+
+
+
+
+ struct-member-declaration
+
+
+
+ constant-declaration
+
+
+ field-declaration
+
+
+ method-declaration
+
+
+ property-declaration
+
+
+ event-declaration
+
+
+ indexer-declaration
+
+
+ operator-declaration
+
+
+ constructor-declaration
+
+
+ static-constructor-declaration
+
+
+ type-declaration
+
+
+
+
+
+ array-initializer
+
+
+
+
+
+ {
+
+
+
+
+ variable-initializer-list
+
+
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ variable-initializer-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ variable-initializer-list
+
+
+
+ variable-initializer
+
+
+
+
+ variable-initializer-list
+
+
+ ,
+
+
+ variable-initializer
+
+
+
+
+
+
+
+ interface-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ interface-modifiers
+
+
+
+
+ interface
+
+
+ identifier
+
+
+
+
+ interface-base
+
+
+
+
+ interface-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ interface-modifiers
+
+
+
+ interface-modifier
+
+
+
+
+ interface-modifiers
+
+
+ interface-modifier
+
+
+
+
+
+
+
+ interface-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ interface-base
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+ interface-body
+
+
+
+ {
+
+
+
+
+ interface-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ interface-member-declarations
+
+
+
+ interface-member-declaration
+
+
+
+
+ interface-member-declarations
+
+
+ interface-member-declaration
+
+
+
+
+
+
+
+ interface-member-declaration
+
+
+
+ interface-method-declaration
+
+
+ interface-property-declaration
+
+
+ interface-event-declaration
+
+
+ interface-indexer-declaration
+
+
+
+
+
+ interface-method-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ return-type
+
+
+ identifier
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+ ;
+
+
+
+
+
+ interface-property-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ type
+
+
+ identifier
+
+
+ {
+
+
+ interface-accessors
+
+
+ }
+
+
+
+
+
+ interface-accessors
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+
+
+
+ interface-event-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ event
+
+
+ type
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+ interface-indexer-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ type
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+ {
+
+
+ interface-accessors
+
+
+ }
+
+
+
+
+
+ enum-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ enum-modifiers
+
+
+
+
+ enum
+
+
+ identifier
+
+
+
+
+ enum-base
+
+
+
+
+ enum-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ enum-base
+
+
+
+ :
+
+
+ integral-type
+
+
+
+
+
+ enum-body
+
+
+
+
+
+ {
+
+
+
+
+ enum-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ enum-member-declarations
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ enum-modifiers
+
+
+
+ enum-modifier
+
+
+
+
+ enum-modifiers
+
+
+ enum-modifier
+
+
+
+
+
+
+
+ enum-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ enum-member-declarations
+
+
+
+ enum-member-declaration
+
+
+
+
+ enum-member-declarations
+
+
+ ,
+
+
+ enum-member-declaration
+
+
+
+
+
+
+
+ enum-member-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ identifier
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ identifier
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+
+
+ delegate-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ delegate-modifiers
+
+
+
+
+ delegate
+
+
+ return-type
+
+
+ identifier
+
+
+
+
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+ ;
+
+
+
+
+
+
+
+ delegate-modifiers
+
+
+
+ delegate-modifier
+
+
+
+
+ delegate-modifiers
+
+
+ delegate-modifier
+
+
+
+
+
+
+
+ delegate-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ global-attributes
+
+ global-attribute-sections
+
+
+
+ global-attribute-sections
+
+
+
+ global-attribute-section
+
+
+
+
+ global-attribute-sections
+
+
+ global-attribute-section
+
+
+
+
+
+
+
+ global-attribute-section
+
+
+
+
+
+ [
+
+
+ global-attribute-target-specifier
+
+
+ attribute-list
+
+
+ ]
+
+
+
+
+
+
+ [
+
+
+ global-attribute-target-specifier
+
+
+ attribute-list
+
+
+ ,
+
+
+ ]
+
+
+
+
+
+
+
+ global-attribute-target-specifier
+
+
+
+ global-attribute-target
+
+
+ :
+
+
+
+
+
+ global-attribute-target
+
+
+
+ assembly
+
+
+ module
+
+
+
+
+
+ attributes
+
+ attribute-sections
+
+
+
+ attribute-sections
+
+
+
+ attribute-section
+
+
+
+
+ attribute-sections
+
+
+ attribute-section
+
+
+
+
+
+
+
+ attribute-section
+
+
+
+
+
+ [
+
+
+
+
+ attribute-target-specifier
+
+
+
+
+ attribute-list
+
+
+ ]
+
+
+
+
+
+
+ [
+
+
+
+
+ attribute-target-specifier
+
+
+
+
+ attribute-list
+
+
+ ,
+
+
+ ]
+
+
+
+
+
+
+
+ attribute-target-specifier
+
+
+
+ attribute-target
+
+
+ :
+
+
+
+
+
+ attribute-target
+
+
+
+ field
+
+
+ event
+
+
+ method
+
+
+ param
+
+
+ property
+
+
+ return
+
+
+ type
+
+
+
+
+
+ attribute-list
+
+
+
+ attribute
+
+
+
+
+ attribute-list
+
+
+ ,
+
+
+ attribute
+
+
+
+
+
+
+
+ attribute
+
+
+
+ attribute-name
+
+
+
+
+ attribute-arguments
+
+
+
+
+
+
+
+ attribute-name
+
+ type-name
+
+
+
+ attribute-arguments
+
+
+
+
+
+ (
+
+
+
+
+ positional-argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+ (
+
+
+ positional-argument-list
+
+
+ ,
+
+
+ named-argument-list
+
+
+ )
+
+
+
+
+
+
+ (
+
+
+ named-argument-list
+
+
+ )
+
+
+
+
+
+
+
+ positional-argument-list
+
+
+
+ positional-argument
+
+
+
+
+ positional-argument-list
+
+
+ ,
+
+
+ positional-argument
+
+
+
+
+
+
+
+ positional-argument
+
+ attribute-argument-expression
+
+
+
+ named-argument-list
+
+
+
+ named-argument
+
+
+
+
+ named-argument-list
+
+
+ ,
+
+
+ named-argument
+
+
+
+
+
+
+
+ named-argument
+
+
+
+ identifier
+
+
+ =
+
+
+ attribute-argument-expression
+
+
+
+
+
+ attribute-argument-expression
+
+ expression
+
+
+
+ keyword
+
+
+
+ abstract
+
+
+ as
+
+
+ base
+
+
+ bool
+
+
+ break
+
+
+ byte
+
+
+ case
+
+
+ catch
+
+
+ char
+
+
+ checked
+
+
+ class
+
+
+ const
+
+
+ continue
+
+
+ decimal
+
+
+ default
+
+
+ delegate
+
+
+ do
+
+
+ double
+
+
+ else
+
+
+ enum
+
+
+ event
+
+
+ explicit
+
+
+ extern
+
+
+ false
+
+
+ finally
+
+
+ fixed
+
+
+ float
+
+
+ for
+
+
+ foreach
+
+
+ goto
+
+
+ if
+
+
+ implicit
+
+
+ in
+
+
+ int
+
+
+ interface
+
+
+ internal
+
+
+ is
+
+
+ lock
+
+
+ long
+
+
+ namespace
+
+
+ new
+
+
+ null
+
+
+ object
+
+
+ operator
+
+
+ out
+
+
+ override
+
+
+ params
+
+
+ private
+
+
+ protected
+
+
+ public
+
+
+ readonly
+
+
+ ref
+
+
+ return
+
+
+ sbyte
+
+
+ sealed
+
+
+ short
+
+
+ sizeof
+
+
+ stackalloc
+
+
+ static
+
+
+ string
+
+
+ struct
+
+
+ switch
+
+
+ this
+
+
+ throw
+
+
+ true
+
+
+ try
+
+
+ typeof
+
+
+ uint
+
+
+ ulong
+
+
+ unchecked
+
+
+ unsafe
+
+
+ ushort
+
+
+ using
+
+
+ virtual
+
+
+ void
+
+
+ volatile
+
+
+ while
+
+
+ assembly
+
+
+ module
+
+
+ add
+
+
+ remove
+
+
+ get
+
+
+ set
+
+
+ field
+
+
+ method
+
+
+ param
+
+
+ property
+
+
+
+
+
diff --git a/topics/grammars/csharp/msft-ls-3.0/Makefile b/topics/grammars/csharp/msft-ls-3.0/Makefile
index ed06dafa..6cf47d29 100644
--- a/topics/grammars/csharp/msft-ls-3.0/Makefile
+++ b/topics/grammars/csharp/msft-ls-3.0/Makefile
@@ -10,4 +10,4 @@ clean:
test:
make build
- ../../../../shared/tools/gdts msft-ls-grammar.bgf extracted-grammar.bgf
+ ../../../../shared/tools/gdt msft-ls-grammar.bgf extracted-grammar.bgf
diff --git a/topics/grammars/csharp/msft-ls-3.0/extracted-grammar.bgf b/topics/grammars/csharp/msft-ls-3.0/extracted-grammar.bgf
index c7e9ad5c..493be960 100644
--- a/topics/grammars/csharp/msft-ls-3.0/extracted-grammar.bgf
+++ b/topics/grammars/csharp/msft-ls-3.0/extracted-grammar.bgf
@@ -7651,316 +7651,316 @@
- abstract
+ abstract
- as
+ as
- base
+ base
- bool
+ bool
- break
+ break
- byte
+ byte
- case
+ case
- catch
+ catch
- char
+ char
- checked
+ checked
- class
+ class
- const
+ const
- continue
+ continue
- decimal
+ decimal
- default
+ default
- delegate
+ delegate
- do
+ do
- double
+ double
- else
+ else
- enum
+ enum
- event
+ event
- explicit
+ explicit
- extern
+ extern
- false
+ false
- finally
+ finally
- fixed
+ fixed
- float
+ float
- for
+ for
- foreach
+ foreach
- goto
+ goto
- if
+ if
- implicit
+ implicit
- in
+ in
- int
+ int
- interface
+ interface
- internal
+ internal
- is
+ is
- lock
+ lock
- long
+ long
- namespace
+ namespace
- new
+ new
- null
+ null
- object
+ object
- operator
+ operator
- out
+ out
- override
+ override
- params
+ params
- private
+ private
- protected
+ protected
- public
+ public
- readonly
+ readonly
- ref
+ ref
- return
+ return
- sbyte
+ sbyte
- sealed
+ sealed
- short
+ short
- sizeof
+ sizeof
- stackalloc
+ stackalloc
- static
+ static
- string
+ string
- struct
+ struct
- switch
+ switch
- this
+ this
- throw
+ throw
- true
+ true
- try
+ try
- typeof
+ typeof
- uint
+ uint
- ulong
+ ulong
- unchecked
+ unchecked
- unsafe
+ unsafe
- ushort
+ ushort
- using
+ using
- virtual
+ virtual
- void
+ void
- volatile
+ volatile
- while
+ while
- group
+ group
- by
+ by
- join
+ join
- on
+ on
- equals
+ equals
- into
+ into
- let
+ let
- get
+ get
- set
+ set
- yield
+ yield
- partial
+ partial
- var
+ var
- orderby
+ orderby
- add
+ add
- remove
+ remove
- where
+ where
- from
+ from
- select
+ select
- ascending
+ ascending
- descending
+ descending
- alias
+ alias
- field
+ field
- method
+ method
- param
+ param
- property
+ property
- assembly
+ assembly
- module
+ module
diff --git a/topics/grammars/csharp/msft-ls-4.0/Makefile b/topics/grammars/csharp/msft-ls-4.0/Makefile
index ed06dafa..6cf47d29 100644
--- a/topics/grammars/csharp/msft-ls-4.0/Makefile
+++ b/topics/grammars/csharp/msft-ls-4.0/Makefile
@@ -10,4 +10,4 @@ clean:
test:
make build
- ../../../../shared/tools/gdts msft-ls-grammar.bgf extracted-grammar.bgf
+ ../../../../shared/tools/gdt msft-ls-grammar.bgf extracted-grammar.bgf
diff --git a/topics/grammars/csharp/msft-ls-4.0/extracted-grammar.bgf b/topics/grammars/csharp/msft-ls-4.0/extracted-grammar.bgf
index b0465c82..10c2a8fe 100644
--- a/topics/grammars/csharp/msft-ls-4.0/extracted-grammar.bgf
+++ b/topics/grammars/csharp/msft-ls-4.0/extracted-grammar.bgf
@@ -1,8127 +1,8126 @@
-
-
-
- namespace-name
-
- namespace-or-type-name
-
-
-
- type-name
-
- namespace-or-type-name
-
-
-
- namespace-or-type-name
-
-
-
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
- namespace-or-type-name
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
- qualified-alias-member
-
-
-
-
-
- type
-
-
-
- value-type
-
-
- reference-type
-
-
- type-parameter
-
-
-
-
-
- value-type
-
-
-
- struct-type
-
-
- enum-type
-
-
-
-
-
- struct-type
-
-
-
- type-name
-
-
- simple-type
-
-
- nullable-type
-
-
-
-
-
- simple-type
-
-
-
- numeric-type
-
-
- bool
-
-
-
-
-
- numeric-type
-
-
-
- integral-type
-
-
- floating-point-type
-
-
- decimal
-
-
-
-
-
- integral-type
-
-
-
- sbyte
-
-
- byte
-
-
- short
-
-
- ushort
-
-
- int
-
-
- uint
-
-
- long
-
-
- ulong
-
-
- char
-
-
-
-
-
- floating-point-type
-
-
-
- float
-
-
- double
-
-
-
-
-
- nullable-type
-
-
-
- non-nullable-value-type
-
-
- ?
-
-
-
-
-
- non-nullable-value-type
-
- type
-
-
-
- enum-type
-
- type-name
-
-
-
- reference-type
-
-
-
- class-type
-
-
- interface-type
-
-
- array-type
-
-
- delegate-type
-
-
-
-
-
- class-type
-
-
-
- type-name
-
-
- object
-
-
- dynamic
-
-
- string
-
-
-
-
-
- interface-type
-
- type-name
-
-
-
- rank-specifiers
-
-
-
- rank-specifier
-
-
-
-
- rank-specifiers
-
-
- rank-specifier
-
-
-
-
-
-
-
- rank-specifier
-
-
-
- [
-
-
-
-
- dim-separators
-
-
-
-
- ]
-
-
-
-
-
- dim-separators
-
-
-
- ,
-
-
-
-
- dim-separators
-
-
- ,
-
-
-
-
-
-
-
- delegate-type
-
- type-name
-
-
-
- type-argument-list
-
-
-
- <
-
-
- type-arguments
-
-
- >
-
-
-
-
-
- type-arguments
-
-
-
- type-argument
-
-
-
-
- type-arguments
-
-
- ,
-
-
- type-argument
-
-
-
-
-
-
-
- type-argument
-
- type
-
-
-
- type-parameter
-
- identifier
-
-
-
- variable-reference
-
- expression
-
-
-
- argument-list
-
-
-
- argument
-
-
-
-
- argument-list
-
-
- ,
-
-
- argument
-
-
-
-
-
-
-
- argument
-
-
-
-
-
- argument-name
-
-
-
-
- argument-value
-
-
-
-
-
- argument-name
-
-
-
- identifier
-
-
- :
-
-
-
-
-
- argument-value
-
-
-
- expression
-
-
-
-
- ref
-
-
- variable-reference
-
-
-
-
-
-
- out
-
-
- variable-reference
-
-
-
-
-
-
-
- primary-expression
-
-
-
- primary-no-array-creation-expression
-
-
- array-creation-expression
-
-
-
-
-
- primary-no-array-creation-expression
-
-
-
- literal
-
-
- simple-name
-
-
- parenthesized-expression
-
-
- member-access
-
-
- invocation-expression
-
-
- element-access
-
-
- this-access
-
-
- base-access
-
-
- post-increment-expression
-
-
- post-decrement-expression
-
-
- object-creation-expression
-
-
- delegate-creation-expression
-
-
- anonymous-object-creation-expression
-
-
- typeof-expression
-
-
- checked-expression
-
-
- unchecked-expression
-
-
- default-value-expression
-
-
- anonymous-method-expression
-
-
-
-
-
- simple-name
-
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
- parenthesized-expression
-
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- member-access
-
-
-
-
-
- primary-expression
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
- predefined-type
-
-
- .
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
-
- qualified-alias-member
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- predefined-type
-
-
-
- bool
-
-
- byte
-
-
- char
-
-
- decimal
-
-
- double
-
-
- float
-
-
- int
-
-
- long
-
-
- object
-
-
- sbyte
-
-
- short
-
-
- string
-
-
- uint
-
-
- ulong
-
-
- ushort
-
-
-
-
-
- invocation-expression
-
-
-
- primary-expression
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
- element-access
-
-
-
- primary-no-array-creation-expression
-
-
- [
-
-
- argument-list
-
-
- ]
-
-
-
-
-
- this-access
-
- this
-
-
-
- base-access
-
-
-
-
-
- base
-
-
- .
-
-
- identifier
-
-
-
-
-
-
- base
-
-
- [
-
-
- argument-list
-
-
- ]
-
-
-
-
-
-
-
- post-increment-expression
-
-
-
- primary-expression
-
-
- ++
-
-
-
-
-
- post-decrement-expression
-
-
-
- primary-expression
-
-
- --
-
-
-
-
-
- object-creation-expression
-
-
-
-
-
- new
-
-
- type
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
- object-or-collection-initializer
-
-
-
-
-
-
-
-
- new
-
-
- type
-
-
- object-or-collection-initializer
-
-
-
-
-
-
-
- object-or-collection-initializer
-
-
-
- object-initializer
-
-
- collection-initializer
-
-
-
-
-
- object-initializer
-
-
-
-
-
- {
-
-
-
-
- member-initializer-list
-
-
-
-
- }
-
-
-
-
-
-
- {
-
-
- member-initializer-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- member-initializer-list
-
-
-
- member-initializer
-
-
-
-
- member-initializer-list
-
-
- ,
-
-
- member-initializer
-
-
-
-
-
-
-
- member-initializer
-
-
-
- identifier
-
-
- =
-
-
- initializer-value
-
-
-
-
-
- initializer-value
-
-
-
- expression
-
-
- object-or-collection-initializer
-
-
-
-
-
- collection-initializer
-
-
-
-
-
- {
-
-
- element-initializer-list
-
-
- }
-
-
-
-
-
-
- {
-
-
- element-initializer-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- element-initializer-list
-
-
-
- element-initializer
-
-
-
-
- element-initializer-list
-
-
- ,
-
-
- element-initializer
-
-
-
-
-
-
-
- element-initializer
-
-
-
- non-assignment-expression
-
-
-
-
- {
-
-
- expression-list
-
-
- }
-
-
-
-
-
-
-
- expression-list
-
-
-
- expression
-
-
-
-
- expression-list
-
-
- ,
-
-
- expression
-
-
-
-
-
-
-
- array-creation-expression
-
-
-
-
-
- new
-
-
- non-array-type
-
-
- [
-
-
- expression-list
-
-
- ]
-
-
-
-
- rank-specifiers
-
-
-
-
-
-
- array-initializer
-
-
-
-
-
-
-
-
- new
-
-
- array-type
-
-
- array-initializer
-
-
-
-
-
-
- new
-
-
- rank-specifier
-
-
- array-initializer
-
-
-
-
-
-
-
- delegate-creation-expression
-
-
-
- new
-
-
- delegate-type
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- anonymous-object-creation-expression
-
-
-
- new
-
-
- anonymous-object-initializer
-
-
-
-
-
- anonymous-object-initializer
-
-
-
-
-
- {
-
-
-
-
- member-declarator-list
-
-
-
-
- }
-
-
-
-
-
-
- {
-
-
- member-declarator-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- member-declarator-list
-
-
-
- member-declarator
-
-
-
-
- member-declarator-list
-
-
- ,
-
-
- member-declarator
-
-
-
-
-
-
-
- member-declarator
-
-
-
- simple-name
-
-
- member-access
-
-
-
-
- identifier
-
-
- =
-
-
- expression
-
-
-
-
-
-
-
- typeof-expression
-
-
-
-
-
- typeof
-
-
- (
-
-
- type
-
-
- )
-
-
-
-
-
-
- typeof
-
-
- (
-
-
- unbound-type-name
-
-
- )
-
-
-
-
-
-
- typeof
-
-
- (
-
-
- void
-
-
- )
-
-
-
-
-
-
-
- unbound-type-name
-
-
-
-
-
- identifier
-
-
-
-
- generic-dimension-specifier
-
-
-
-
-
-
-
-
- identifier
-
-
- ::
-
-
- identifier
-
-
-
-
- generic-dimension-specifier
-
-
-
-
-
-
-
-
- unbound-type-name
-
-
- .
-
-
- identifier
-
-
-
-
- generic-dimension-specifier
-
-
-
-
-
-
-
-
-
- generic-dimension-specifier
-
-
-
- <
-
-
-
-
- commas
-
-
-
-
- >
-
-
-
-
-
- commas
-
-
-
- ,
-
-
-
-
- commas
-
-
- ,
-
-
-
-
-
-
-
- checked-expression
-
-
-
- checked
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- unchecked-expression
-
-
-
- unchecked
-
-
- (
-
-
- expression
-
-
- )
-
-
-
-
-
- default-value-expression
-
-
-
- default
-
-
- (
-
-
- type
-
-
- )
-
-
-
-
-
- unary-expression
-
-
-
- primary-expression
-
-
-
-
- +
-
-
- unary-expression
-
-
-
-
-
-
- -
-
-
- unary-expression
-
-
-
-
-
-
- !
-
-
- unary-expression
-
-
-
-
-
-
- ~
-
-
- unary-expression
-
-
-
-
- pre-increment-expression
-
-
- pre-decrement-expression
-
-
- cast-expression
-
-
-
-
-
- pre-increment-expression
-
-
-
- ++
-
-
- unary-expression
-
-
-
-
-
- pre-decrement-expression
-
-
-
- --
-
-
- unary-expression
-
-
-
-
-
- cast-expression
-
-
-
- (
-
-
- type
-
-
- )
-
-
- unary-expression
-
-
-
-
-
- multiplicative-expression
-
-
-
- unary-expression
-
-
-
-
- multiplicative-expression
-
-
- *
-
-
- unary-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- /
-
-
- unary-expression
-
-
-
-
-
-
- multiplicative-expression
-
-
- %
-
-
- unary-expression
-
-
-
-
-
-
-
- additive-expression
-
-
-
- multiplicative-expression
-
-
-
-
- additive-expression
-
-
- +
-
-
- multiplicative-expression
-
-
-
-
-
-
- additive-expression
-
-
- -
-
-
- multiplicative-expression
-
-
-
-
-
-
-
- shift-expression
-
-
-
- additive-expression
-
-
-
-
- shift-expression
-
-
- <<
-
-
- additive-expression
-
-
-
-
-
-
- shift-expression
-
-
- right-shift
-
-
- additive-expression
-
-
-
-
-
-
-
- relational-expression
-
-
-
- shift-expression
-
-
-
-
- relational-expression
-
-
- <
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- <=
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- >=
-
-
- shift-expression
-
-
-
-
-
-
- relational-expression
-
-
- is
-
-
- type
-
-
-
-
-
-
- relational-expression
-
-
- as
-
-
- type
-
-
-
-
-
-
-
- equality-expression
-
-
-
- relational-expression
-
-
-
-
- equality-expression
-
-
- ==
-
-
- relational-expression
-
-
-
-
-
-
- equality-expression
-
-
- !=
-
-
- relational-expression
-
-
-
-
-
-
-
- and-expression
-
-
-
- equality-expression
-
-
-
-
- and-expression
-
-
- &
-
-
- equality-expression
-
-
-
-
-
-
-
- exclusive-or-expression
-
-
-
- and-expression
-
-
-
-
- exclusive-or-expression
-
-
- ^
-
-
- and-expression
-
-
-
-
-
-
-
- inclusive-or-expression
-
-
-
- exclusive-or-expression
-
-
-
-
- inclusive-or-expression
-
-
- |
-
-
- exclusive-or-expression
-
-
-
-
-
-
-
- conditional-and-expression
-
-
-
- inclusive-or-expression
-
-
-
-
- conditional-and-expression
-
-
- &&
-
-
- inclusive-or-expression
-
-
-
-
-
-
-
- conditional-or-expression
-
-
-
- conditional-and-expression
-
-
-
-
- conditional-or-expression
-
-
- ||
-
-
- conditional-and-expression
-
-
-
-
-
-
-
- null-coalescing-expression
-
-
-
- conditional-or-expression
-
-
-
-
- conditional-or-expression
-
-
- ??
-
-
- null-coalescing-expression
-
-
-
-
-
-
-
- conditional-expression
-
-
-
- null-coalescing-expression
-
-
-
-
- null-coalescing-expression
-
-
- ?
-
-
- expression
-
-
- :
-
-
- expression
-
-
-
-
-
-
-
- lambda-expression
-
-
-
- anonymous-function-signature
-
-
- =>
-
-
- anonymous-function-body
-
-
-
-
-
- anonymous-method-expression
-
-
-
- delegate
-
-
-
-
- explicit-anonymous-function-signature
-
-
-
-
- block
-
-
-
-
-
- anonymous-function-signature
-
-
-
- explicit-anonymous-function-signature
-
-
- implicit-anonymous-function-signature
-
-
-
-
-
- explicit-anonymous-function-signature
-
-
-
- (
-
-
-
-
- explicit-anonymous-function-parameter-list
-
-
-
-
- )
-
-
-
-
-
- explicit-anonymous-function-parameter-list
-
-
-
- explicit-anonymous-function-parameter
-
-
-
-
- explicit-anonymous-function-parameter-list
-
-
- ,
-
-
- explicit-anonymous-function-parameter
-
-
-
-
-
-
-
- explicit-anonymous-function-parameter
-
-
-
-
-
- anonymous-function-parameter-modifier
-
-
-
-
- type
-
-
- identifier
-
-
-
-
-
- anonymous-function-parameter-modifier
-
-
-
- ref
-
-
- out
-
-
-
-
-
- implicit-anonymous-function-signature
-
-
-
-
-
- (
-
-
-
-
- implicit-anonymous-function-parameter-list
-
-
-
-
- )
-
-
-
-
- implicit-anonymous-function-parameter
-
-
-
-
-
- implicit-anonymous-function-parameter-list
-
-
-
- implicit-anonymous-function-parameter
-
-
-
-
- implicit-anonymous-function-parameter-list
-
-
- ,
-
-
- implicit-anonymous-function-parameter
-
-
-
-
-
-
-
- implicit-anonymous-function-parameter
-
- identifier
-
-
-
- anonymous-function-body
-
-
-
- expression
-
-
- block
-
-
-
-
-
- query-expression
-
-
-
- from-clause
-
-
- query-body
-
-
-
-
-
- from-clause
-
-
-
- from
-
-
-
-
- type
-
-
-
-
- identifier
-
-
- in
-
-
- expression
-
-
-
-
-
- query-body
-
-
-
-
-
- query-body-clauses
-
-
-
-
- select-or-group-clause
-
-
-
-
- query-continuation
-
-
-
-
-
-
-
- query-body-clauses
-
-
-
- query-body-clause
-
-
-
-
- query-body-clauses
-
-
- query-body-clause
-
-
-
-
-
-
-
- query-body-clause
-
-
-
- from-clause
-
-
- let-clause
-
-
- where-clause
-
-
- join-clause
-
-
- join-into-clause
-
-
- orderby-clause
-
-
-
-
-
- let-clause
-
-
-
- let
-
-
- identifier
-
-
- =
-
-
- expression
-
-
-
-
-
- where-clause
-
-
-
- where
-
-
- boolean-expression
-
-
-
-
-
- join-clause
-
-
-
- join
-
-
-
-
- type
-
-
-
-
- identifier
-
-
- in
-
-
- expression
-
-
- on
-
-
- expression
-
-
- equals
-
-
- expression
-
-
-
-
-
- join-into-clause
-
-
-
- join
-
-
-
-
- type
-
-
-
-
- identifier
-
-
- in
-
-
- expression
-
-
- on
-
-
- expression
-
-
- equals
-
-
- expression
-
-
- into
-
-
- identifier
-
-
-
-
-
- orderby-clause
-
-
-
- orderby
-
-
- orderings
-
-
-
-
-
- orderings
-
-
-
- ordering
-
-
-
-
- orderings
-
-
- ,
-
-
- ordering
-
-
-
-
-
-
-
- ordering
-
-
-
- expression
-
-
-
-
- ordering-direction
-
-
-
-
-
-
-
- ordering-direction
-
-
-
- ascending
-
-
- descending
-
-
-
-
-
- select-or-group-clause
-
-
-
- select-clause
-
-
- group-clause
-
-
-
-
-
- select-clause
-
-
-
- select
-
-
- expression
-
-
-
-
-
- group-clause
-
-
-
- group
-
-
- expression
-
-
- by
-
-
- expression
-
-
-
-
-
- query-continuation
-
-
-
- into
-
-
- identifier
-
-
- query-body
-
-
-
-
-
- assignment
-
-
-
- unary-expression
-
-
- assignment-operator
-
-
- expression
-
-
-
-
-
- assignment-operator
-
-
-
- =
-
-
- +=
-
-
- -=
-
-
- *=
-
-
- /=
-
-
- %=
-
-
- &=
-
-
- |=
-
-
- ^=
-
-
- <<=
-
-
- right-shift-assignment
-
-
-
-
-
- expression
-
-
-
- non-assignment-expression
-
-
- assignment
-
-
-
-
-
- non-assignment-expression
-
-
-
- conditional-expression
-
-
- lambda-expression
-
-
- query-expression
-
-
-
-
-
- constant-expression
-
- expression
-
-
-
- boolean-expression
-
- expression
-
-
-
- statement
-
-
-
- labeled-statement
-
-
- declaration-statement
-
-
- embedded-statement
-
-
-
-
-
- embedded-statement
-
-
-
- block
-
-
- empty-statement
-
-
- expression-statement
-
-
- selection-statement
-
-
- iteration-statement
-
-
- jump-statement
-
-
- try-statement
-
-
- checked-statement
-
-
- unchecked-statement
-
-
- lock-statement
-
-
- using-statement
-
-
- yield-statement
-
-
-
-
-
- block
-
-
-
- {
-
-
-
-
- statement-list
-
-
-
-
- }
-
-
-
-
-
- statement-list
-
-
-
- statement
-
-
-
-
- statement-list
-
-
- statement
-
-
-
-
-
-
-
- empty-statement
-
- ;
-
-
-
- labeled-statement
-
-
-
- identifier
-
-
- :
-
-
- statement
-
-
-
-
-
- declaration-statement
-
-
-
-
-
- local-variable-declaration
-
-
- ;
-
-
-
-
-
-
- local-constant-declaration
-
-
- ;
-
-
-
-
-
-
-
- local-variable-declaration
-
-
-
- local-variable-type
-
-
- local-variable-declarators
-
-
-
-
-
- local-variable-type
-
-
-
- type
-
-
- var
-
-
-
-
-
- local-variable-declarators
-
-
-
- local-variable-declarator
-
-
-
-
- local-variable-declarators
-
-
- ,
-
-
- local-variable-declarator
-
-
-
-
-
-
-
- local-variable-declarator
-
-
-
- identifier
-
-
-
-
- identifier
-
-
- =
-
-
- local-variable-initializer
-
-
-
-
-
-
-
- local-variable-initializer
-
-
-
- expression
-
-
- array-initializer
-
-
-
-
-
- local-constant-declaration
-
-
-
- const
-
-
- type
-
-
- constant-declarators
-
-
-
-
-
- constant-declarators
-
-
-
- constant-declarator
-
-
-
-
- constant-declarators
-
-
- ,
-
-
- constant-declarator
-
-
-
-
-
-
-
- constant-declarator
-
-
-
- identifier
-
-
- =
-
-
- constant-expression
-
-
-
-
-
- expression-statement
-
-
-
- statement-expression
-
-
- ;
-
-
-
-
-
- statement-expression
-
-
-
- invocation-expression
-
-
- object-creation-expression
-
-
- assignment
-
-
- post-increment-expression
-
-
- post-decrement-expression
-
-
- pre-increment-expression
-
-
- pre-decrement-expression
-
-
-
-
-
- selection-statement
-
-
-
- if-statement
-
-
- switch-statement
-
-
-
-
-
- if-statement
-
-
-
-
-
- if
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
-
- if
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
- else
-
-
- embedded-statement
-
-
-
-
-
-
-
- switch-statement
-
-
-
- switch
-
-
- (
-
-
- expression
-
-
- )
-
-
- switch-block
-
-
-
-
-
- switch-block
-
-
-
- {
-
-
-
-
- switch-sections
-
-
-
-
- }
-
-
-
-
-
- switch-sections
-
-
-
- switch-section
-
-
-
-
- switch-sections
-
-
- switch-section
-
-
-
-
-
-
-
- switch-section
-
-
-
- switch-labels
-
-
- statement-list
-
-
-
-
-
- switch-labels
-
-
-
- switch-label
-
-
-
-
- switch-labels
-
-
- switch-label
-
-
-
-
-
-
-
- switch-label
-
-
-
-
-
- case
-
-
- constant-expression
-
-
- :
-
-
-
-
-
-
- default
-
-
- :
-
-
-
-
-
-
-
- iteration-statement
-
-
-
- while-statement
-
-
- do-statement
-
-
- for-statement
-
-
- foreach-statement
-
-
-
-
-
- while-statement
-
-
-
- while
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- do-statement
-
-
-
- do
-
-
- embedded-statement
-
-
- while
-
-
- (
-
-
- boolean-expression
-
-
- )
-
-
- ;
-
-
-
-
-
- for-statement
-
-
-
- for
-
-
- (
-
-
-
-
- for-initializer
-
-
-
-
- ;
-
-
-
-
- for-condition
-
-
-
-
- ;
-
-
-
-
- for-iterator
-
-
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- for-initializer
-
-
-
- local-variable-declaration
-
-
- statement-expression-list
-
-
-
-
-
- for-condition
-
- boolean-expression
-
-
-
- for-iterator
-
- statement-expression-list
-
-
-
- statement-expression-list
-
-
-
- statement-expression
-
-
-
-
- statement-expression-list
-
-
- ,
-
-
- statement-expression
-
-
-
-
-
-
-
- foreach-statement
-
-
-
- foreach
-
-
- (
-
-
- local-variable-type
-
-
- identifier
-
-
- in
-
-
- expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- jump-statement
-
-
-
- break-statement
-
-
- continue-statement
-
-
- goto-statement
-
-
- return-statement
-
-
- throw-statement
-
-
-
-
-
- break-statement
-
-
-
- break
-
-
- ;
-
-
-
-
-
- continue-statement
-
-
-
- continue
-
-
- ;
-
-
-
-
-
- goto-statement
-
-
-
-
-
- goto
-
-
- identifier
-
-
- ;
-
-
-
-
-
-
- goto
-
-
- case
-
-
- constant-expression
-
-
- ;
-
-
-
-
-
-
- goto
-
-
- default
-
-
- ;
-
-
-
-
-
-
-
- return-statement
-
-
-
- return
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
- throw-statement
-
-
-
- throw
-
-
-
-
- expression
-
-
-
-
- ;
-
-
-
-
-
- try-statement
-
-
-
-
-
- try
-
-
- block
-
-
- catch-clauses
-
-
-
-
-
-
- try
-
-
- block
-
-
- finally-clause
-
-
-
-
-
-
- try
-
-
- block
-
-
- catch-clauses
-
-
- finally-clause
-
-
-
-
-
-
-
- catch-clauses
-
-
-
-
-
- specific-catch-clauses
-
-
-
-
- general-catch-clause
-
-
-
-
-
-
-
-
-
-
- specific-catch-clauses
-
-
-
-
- general-catch-clause
-
-
-
-
-
-
-
- specific-catch-clauses
-
-
-
- specific-catch-clause
-
-
-
-
- specific-catch-clauses
-
-
- specific-catch-clause
-
-
-
-
-
-
-
- specific-catch-clause
-
-
-
- catch
-
-
- (
-
-
- class-type
-
-
-
-
- identifier
-
-
-
-
- )
-
-
- block
-
-
-
-
-
- general-catch-clause
-
-
-
- catch
-
-
- block
-
-
-
-
-
- finally-clause
-
-
-
- finally
-
-
- block
-
-
-
-
-
- checked-statement
-
-
-
- checked
-
-
- block
-
-
-
-
-
- unchecked-statement
-
-
-
- unchecked
-
-
- block
-
-
-
-
-
- lock-statement
-
-
-
- lock
-
-
- (
-
-
- expression
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- using-statement
-
-
-
- using
-
-
- (
-
-
- resource-acquisition
-
-
- )
-
-
- embedded-statement
-
-
-
-
-
- resource-acquisition
-
-
-
- local-variable-declaration
-
-
- expression
-
-
-
-
-
- yield-statement
-
-
-
-
-
- yield
-
-
- return
-
-
- expression
-
-
- ;
-
-
-
-
-
-
- yield
-
-
- break
-
-
- ;
-
-
-
-
-
-
-
- compilation-unit
-
-
-
-
-
-
-
- extern-alias-directives
-
-
-
-
-
-
- using-directives
-
-
-
-
-
-
- global-attributes
-
-
-
-
-
-
-
-
- namespace-member-declarations
-
-
-
-
-
-
-
- namespace-declaration
-
-
-
- namespace
-
-
- qualified-identifier
-
-
- namespace-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- qualified-identifier
-
-
-
- identifier
-
-
-
-
- qualified-identifier
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- namespace-body
-
-
-
- {
-
-
-
-
- extern-alias-directives
-
-
-
-
-
-
- using-directives
-
-
-
-
-
-
- namespace-member-declarations
-
-
-
-
- }
-
-
-
-
-
- extern-alias-directives
-
-
-
- extern-alias-directive
-
-
-
-
- extern-alias-directives
-
-
- extern-alias-directive
-
-
-
-
-
-
-
- extern-alias-directive
-
-
-
- extern
-
-
- alias
-
-
- identifier
-
-
- ;
-
-
-
-
-
- using-directives
-
-
-
- using-directive
-
-
-
-
- using-directives
-
-
- using-directive
-
-
-
-
-
-
-
- using-directive
-
-
-
- using-alias-directive
-
-
- using-namespace-directive
-
-
-
-
-
- using-alias-directive
-
-
-
- using
-
-
- identifier
-
-
- =
-
-
- namespace-or-type-name
-
-
- ;
-
-
-
-
-
- using-namespace-directive
-
-
-
- using
-
-
- namespace-name
-
-
- ;
-
-
-
-
-
- namespace-member-declarations
-
-
-
- namespace-member-declaration
-
-
-
-
- namespace-member-declarations
-
-
- namespace-member-declaration
-
-
-
-
-
-
-
- namespace-member-declaration
-
-
-
- namespace-declaration
-
-
- type-declaration
-
-
-
-
-
- type-declaration
-
-
-
- class-declaration
-
-
- struct-declaration
-
-
- interface-declaration
-
-
- enum-declaration
-
-
- delegate-declaration
-
-
-
-
-
- qualified-alias-member
-
-
-
- identifier
-
-
- ::
-
-
- identifier
-
-
-
-
- type-argument-list
-
-
-
-
-
-
-
- class-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- class-modifiers
-
-
-
-
-
-
- partial
-
-
-
-
- class
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
-
-
-
-
-
-
- class-base
-
-
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- class-body
-
-
-
-
- ;
-
-
-
-
-
-
-
-
-
- class-modifiers
-
-
-
- class-modifier
-
-
-
-
- class-modifiers
-
-
- class-modifier
-
-
-
-
-
-
-
- class-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- abstract
-
-
- sealed
-
-
- static
-
-
-
-
-
- type-parameter-list
-
-
-
- <
-
-
- type-parameters
-
-
- >
-
-
-
-
-
- type-parameters
-
-
-
-
-
-
-
- attributes
-
-
-
-
- type-parameter
-
-
-
-
-
-
- type-parameters
-
-
- ,
-
-
-
-
- attributes
-
-
-
-
- type-parameter
-
-
-
-
-
-
-
- class-base
-
-
-
-
-
- :
-
-
- class-type
-
-
-
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
-
- :
-
-
- class-type
-
-
- ,
-
-
- interface-type-list
-
-
-
-
-
-
-
- interface-type-list
-
-
-
- interface-type
-
-
-
-
- interface-type-list
-
-
- ,
-
-
- interface-type
-
-
-
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
- type-parameter-constraints-clause
-
-
-
-
- type-parameter-constraints-clauses
-
-
- type-parameter-constraints-clause
-
-
-
-
-
-
-
- type-parameter-constraints-clause
-
-
-
- where
-
-
- type-parameter
-
-
- :
-
-
- type-parameter-constraints
-
-
-
-
-
- type-parameter-constraints
-
-
-
- primary-constraint
-
-
- secondary-constraints
-
-
- constructor-constraint
-
-
-
-
- primary-constraint
-
-
- ,
-
-
- secondary-constraints
-
-
-
-
-
-
- primary-constraint
-
-
- ,
-
-
- constructor-constraint
-
-
-
-
-
-
- secondary-constraints
-
-
- ,
-
-
- constructor-constraint
-
-
-
-
-
-
- primary-constraint
-
-
- ,
-
-
- secondary-constraints
-
-
- ,
-
-
- constructor-constraint
-
-
-
-
-
-
-
- primary-constraint
-
-
-
- class-type
-
-
- class
-
-
- struct
-
-
-
-
-
- secondary-constraints
-
-
-
- interface-type
-
-
- type-parameter
-
-
-
-
- secondary-constraints
-
-
- ,
-
-
- interface-type
-
-
-
-
-
-
- secondary-constraints
-
-
- ,
-
-
- type-parameter
-
-
-
-
-
-
-
- constructor-constraint
-
-
-
- new
-
-
- (
-
-
- )
-
-
-
-
-
- class-body
-
-
-
- {
-
-
-
-
- class-member-declarations
-
-
-
-
- }
-
-
-
-
-
- class-member-declarations
-
-
-
- class-member-declaration
-
-
-
-
- class-member-declarations
-
-
- class-member-declaration
-
-
-
-
-
-
-
- class-member-declaration
-
-
-
- constant-declaration
-
-
- field-declaration
-
-
- method-declaration
-
-
- property-declaration
-
-
- event-declaration
-
-
- indexer-declaration
-
-
- operator-declaration
-
-
- constructor-declaration
-
-
- destructor-declaration
-
-
- static-constructor-declaration
-
-
- type-declaration
-
-
-
-
-
- constant-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- constant-modifiers
-
-
-
-
- const
-
-
- type
-
-
- constant-declarators
-
-
- ;
-
-
-
-
-
- constant-modifiers
-
-
-
- constant-modifier
-
-
-
-
- constant-modifiers
-
-
- constant-modifier
-
-
-
-
-
-
-
- constant-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- field-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- field-modifiers
-
-
-
-
- type
-
-
- variable-declarators
-
-
- ;
-
-
-
-
-
- field-modifiers
-
-
-
- field-modifier
-
-
-
-
- field-modifiers
-
-
- field-modifier
-
-
-
-
-
-
-
- field-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- readonly
-
-
- volatile
-
-
-
-
-
- variable-declarators
-
-
-
- variable-declarator
-
-
-
-
- variable-declarators
-
-
- ,
-
-
- variable-declarator
-
-
-
-
-
-
-
- variable-declarator
-
-
-
- identifier
-
-
-
-
- identifier
-
-
- =
-
-
- variable-initializer
-
-
-
-
-
-
-
- variable-initializer
-
-
-
- expression
-
-
- array-initializer
-
-
-
-
-
- method-declaration
-
-
-
- method-header
-
-
- method-body
-
-
-
-
-
- method-header
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- method-modifiers
-
-
-
-
-
-
- partial
-
-
-
-
- return-type
-
-
- member-name
-
-
-
-
- type-parameter-list
-
-
-
-
-
-
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
-
-
-
-
-
- method-modifiers
-
-
-
- method-modifier
-
-
-
-
- method-modifiers
-
-
- method-modifier
-
-
-
-
-
-
-
- method-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- return-type
-
-
-
- type
-
-
- void
-
-
-
-
-
- member-name
-
-
-
- identifier
-
-
-
-
- interface-type
-
-
- .
-
-
- identifier
-
-
-
-
-
-
-
- method-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- formal-parameter-list
-
-
-
- fixed-parameters
-
-
-
-
- fixed-parameters
-
-
- ,
-
-
- parameter-array
-
-
-
-
- parameter-array
-
-
-
-
-
- fixed-parameters
-
-
-
- fixed-parameter
-
-
-
-
- fixed-parameters
-
-
- ,
-
-
- fixed-parameter
-
-
-
-
-
-
-
- fixed-parameter
-
-
-
-
-
- attributes
-
-
-
-
-
-
- parameter-modifier
-
-
-
-
- type
-
-
- identifier
-
-
-
-
- default-argument
-
-
-
-
-
-
-
- default-argument
-
-
-
- =
-
-
- expression
-
-
-
-
-
- parameter-modifier
-
-
-
- ref
-
-
- out
-
-
- this
-
-
-
-
-
- parameter-array
-
-
-
-
-
- attributes
-
-
-
-
- params
-
-
- array-type
-
-
- identifier
-
-
-
-
-
- property-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- property-modifiers
-
-
-
-
- type
-
-
- member-name
-
-
- {
-
-
- accessor-declarations
-
-
- }
-
-
-
-
-
- property-modifiers
-
-
-
- property-modifier
-
-
-
-
- property-modifiers
-
-
- property-modifier
-
-
-
-
-
-
-
- property-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- accessor-declarations
-
-
-
-
-
- get-accessor-declaration
-
-
-
-
- set-accessor-declaration
-
-
-
-
-
-
-
-
- set-accessor-declaration
-
-
-
-
- get-accessor-declaration
-
-
-
-
-
-
-
-
-
- get-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- accessor-modifier
-
-
-
-
- get
-
-
- accessor-body
-
-
-
-
-
- set-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- accessor-modifier
-
-
-
-
- set
-
-
- accessor-body
-
-
-
-
-
- accessor-modifier
-
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
- protected
-
-
- internal
-
-
-
-
-
-
- internal
-
-
- protected
-
-
-
-
-
-
-
- accessor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- event-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- event-modifiers
-
-
-
-
- event
-
-
- type
-
-
- variable-declarators
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- event-modifiers
-
-
-
-
- event
-
-
- type
-
-
- member-name
-
-
- {
-
-
- event-accessor-declarations
-
-
- }
-
-
-
-
-
-
-
- event-modifiers
-
-
-
- event-modifier
-
-
-
-
- event-modifiers
-
-
- event-modifier
-
-
-
-
-
-
-
- event-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- static
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- event-accessor-declarations
-
-
-
-
-
- add-accessor-declaration
-
-
- remove-accessor-declaration
-
-
-
-
-
-
- remove-accessor-declaration
-
-
- add-accessor-declaration
-
-
-
-
-
-
-
- add-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- add
-
-
- block
-
-
-
-
-
- remove-accessor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- remove
-
-
- block
-
-
-
-
-
- indexer-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- indexer-modifiers
-
-
-
-
- indexer-declarator
-
-
- {
-
-
- accessor-declarations
-
-
- }
-
-
-
-
-
- indexer-modifiers
-
-
-
- indexer-modifier
-
-
-
-
- indexer-modifiers
-
-
- indexer-modifier
-
-
-
-
-
-
-
- indexer-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- virtual
-
-
- sealed
-
-
- override
-
-
- abstract
-
-
- extern
-
-
-
-
-
- indexer-declarator
-
-
-
-
-
- type
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
-
-
-
-
- type
-
-
- interface-type
-
-
- .
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
-
-
-
-
-
- operator-declaration
-
-
-
-
-
- attributes
-
-
-
-
- operator-modifiers
-
-
- operator-declarator
-
-
- operator-body
-
-
-
-
-
- operator-modifiers
-
-
-
- operator-modifier
-
-
-
-
- operator-modifiers
-
-
- operator-modifier
-
-
-
-
-
-
-
- operator-modifier
-
-
-
- public
-
-
- static
-
-
- extern
-
-
-
-
-
- operator-declarator
-
-
-
- unary-operator-declarator
-
-
- binary-operator-declarator
-
-
- conversion-operator-declarator
-
-
-
-
-
- unary-operator-declarator
-
-
-
- type
-
-
- operator
-
-
- overloadable-unary-operator
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
- overloadable-unary-operator
-
-
-
- +
-
-
- -
-
-
- !
-
-
- ~
-
-
- ++
-
-
- --
-
-
- true
-
-
- false
-
-
-
-
-
- binary-operator-declarator
-
-
-
- type
-
-
- operator
-
-
- overloadable-binary-operator
-
-
- (
-
-
- type
-
-
- identifier
-
-
- ,
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
- overloadable-binary-operator
-
-
-
- +
-
-
- -
-
-
- *
-
-
- /
-
-
- %
-
-
- &
-
-
- |
-
-
- ^
-
-
- <<
-
-
- right-shift
-
-
- ==
-
-
- !=
-
-
- >
-
-
- <
-
-
- >=
-
-
- <=
-
-
-
-
-
- conversion-operator-declarator
-
-
-
-
-
- implicit
-
-
- operator
-
-
- type
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
-
- explicit
-
-
- operator
-
-
- type
-
-
- (
-
-
- type
-
-
- identifier
-
-
- )
-
-
-
-
-
-
-
- operator-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- constructor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- constructor-modifiers
-
-
-
-
- constructor-declarator
-
-
- constructor-body
-
-
-
-
-
- constructor-modifiers
-
-
-
- constructor-modifier
-
-
-
-
- constructor-modifiers
-
-
- constructor-modifier
-
-
-
-
-
-
-
- constructor-modifier
-
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
- extern
-
-
-
-
-
- constructor-declarator
-
-
-
- identifier
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- constructor-initializer
-
-
-
-
-
-
-
- constructor-initializer
-
-
-
-
-
- :
-
-
- base
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
-
- :
-
-
- this
-
-
- (
-
-
-
-
- argument-list
-
-
-
-
- )
-
-
-
-
-
-
-
- constructor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- static-constructor-declaration
-
-
-
-
-
- attributes
-
-
-
-
- static-constructor-modifiers
-
-
- identifier
-
-
- (
-
-
- )
-
-
- static-constructor-body
-
-
-
-
-
- static-constructor-modifiers
-
-
-
-
-
-
-
- extern
-
-
-
-
- static
-
-
-
-
-
-
- static
-
-
-
-
- extern
-
-
-
-
-
-
-
-
-
- static-constructor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- destructor-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- extern
-
-
-
-
- ~
-
-
- identifier
-
-
- (
-
-
- )
-
-
- destructor-body
-
-
-
-
-
- destructor-body
-
-
-
- block
-
-
- ;
-
-
-
-
-
- struct-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- struct-modifiers
-
-
-
-
-
-
- partial
-
-
-
-
- struct
-
-
- identifier
-
-
-
-
- type-parameter-list
-
-
-
-
-
-
-
-
-
-
- struct-interfaces
-
-
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- struct-body
-
-
-
-
- ;
-
-
-
-
-
-
-
-
-
- struct-modifiers
-
-
-
- struct-modifier
-
-
-
-
- struct-modifiers
-
-
- struct-modifier
-
-
-
-
-
-
-
- struct-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- struct-interfaces
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
- struct-body
-
-
-
- {
-
-
-
-
- struct-member-declarations
-
-
-
-
- }
-
-
-
-
-
- struct-member-declarations
-
-
-
- struct-member-declaration
-
-
-
-
- struct-member-declarations
-
-
- struct-member-declaration
-
-
-
-
-
-
-
- struct-member-declaration
-
-
-
- constant-declaration
-
-
- field-declaration
-
-
- method-declaration
-
-
- property-declaration
-
-
- event-declaration
-
-
- indexer-declaration
-
-
- operator-declaration
-
-
- constructor-declaration
-
-
- static-constructor-declaration
-
-
- type-declaration
-
-
-
-
-
- array-type
-
-
-
- non-array-type
-
-
- rank-specifiers
-
-
-
-
-
- non-array-type
-
- type
-
-
-
- array-initializer
-
-
-
-
-
- {
-
-
-
-
- variable-initializer-list
-
-
-
-
- }
-
-
-
-
-
-
- {
-
-
- variable-initializer-list
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- variable-initializer-list
-
-
-
- variable-initializer
-
-
-
-
- variable-initializer-list
-
-
- ,
-
-
- variable-initializer
-
-
-
-
-
-
-
- interface-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- interface-modifiers
-
-
-
-
-
-
- partial
-
-
-
-
- interface
-
-
-
-
-
-
- identifier
-
-
-
-
- variant-type-parameter-list
-
-
-
-
-
-
- interface-base
-
-
-
-
-
-
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- interface-body
-
-
-
-
- ;
-
-
-
-
-
-
-
-
-
- interface-modifiers
-
-
-
- interface-modifier
-
-
-
-
- interface-modifiers
-
-
- interface-modifier
-
-
-
-
-
-
-
- interface-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- variant-type-parameter-list
-
-
-
- <
-
-
- variant-type-parameters
-
-
- >
-
-
-
-
-
- variant-type-parameters
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- variance-annotation
-
-
-
-
- type-parameter
-
-
-
-
-
-
- variant-type-parameters
-
-
- ,
-
-
-
-
- attributes
-
-
-
-
-
-
- variance-annotation
-
-
-
-
- type-parameter
-
-
-
-
-
-
-
- variance-annotation
-
-
-
- in
-
-
- out
-
-
-
-
-
- interface-base
-
-
-
- :
-
-
- interface-type-list
-
-
-
-
-
- interface-body
-
-
-
- {
-
-
-
-
- interface-member-declarations
-
-
-
-
- }
-
-
-
-
-
- interface-member-declarations
-
-
-
- interface-member-declaration
-
-
-
-
- interface-member-declarations
-
-
- interface-member-declaration
-
-
-
-
-
-
-
- interface-member-declaration
-
-
-
- interface-method-declaration
-
-
- interface-property-declaration
-
-
- interface-event-declaration
-
-
- interface-indexer-declaration
-
-
-
-
-
- interface-method-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- return-type
-
-
- identifier
-
-
- type-parameter-list
-
-
-
-
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- ;
-
-
-
-
-
-
-
- interface-property-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- type
-
-
- identifier
-
-
- {
-
-
- interface-accessors
-
-
- }
-
-
-
-
-
- interface-accessors
-
-
-
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- set
-
-
- ;
-
-
-
-
- attributes
-
-
-
-
- get
-
-
- ;
-
-
-
-
-
-
-
- interface-event-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- event
-
-
- type
-
-
- identifier
-
-
- ;
-
-
-
-
-
- interface-indexer-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- new
-
-
-
-
- type
-
-
- this
-
-
- [
-
-
- formal-parameter-list
-
-
- ]
-
-
- {
-
-
- interface-accessors
-
-
- }
-
-
-
-
-
- enum-declaration
-
-
-
-
-
- attributes
-
-
-
-
-
-
- enum-modifiers
-
-
-
-
- enum
-
-
- identifier
-
-
-
-
- enum-base
-
-
-
-
- enum-body
-
-
-
-
- ;
-
-
-
-
-
-
-
- enum-base
-
-
-
- :
-
-
- integral-type
-
-
-
-
-
- enum-body
-
-
-
-
-
- {
-
-
-
-
- enum-member-declarations
-
-
-
-
- }
-
-
-
-
-
-
- {
-
-
- enum-member-declarations
-
-
- ,
-
-
- }
-
-
-
-
-
-
-
- enum-modifiers
-
-
-
- enum-modifier
-
-
-
-
- enum-modifiers
-
-
- enum-modifier
-
-
-
-
-
-
-
- enum-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- enum-member-declarations
-
-
-
- enum-member-declaration
-
-
-
-
- enum-member-declarations
-
-
- ,
-
-
- enum-member-declaration
-
-
-
-
-
-
-
- enum-member-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
- identifier
-
-
-
-
-
-
-
-
- attributes
-
-
-
-
- identifier
-
-
- =
-
-
- constant-expression
-
-
-
-
-
-
-
- delegate-declaration
-
-
-
-
-
-
-
- attributes
-
-
-
-
-
-
- delegate-modifiers
-
-
-
-
- delegate
-
-
- return-type
-
-
-
-
-
-
- identifier
-
-
-
-
- variant-type-parameter-list
-
-
-
-
-
-
-
-
- (
-
-
-
-
- formal-parameter-list
-
-
-
-
- )
-
-
-
-
- type-parameter-constraints-clauses
-
-
-
-
- ;
-
-
-
-
-
-
-
- delegate-modifiers
-
-
-
- delegate-modifier
-
-
-
-
- delegate-modifiers
-
-
- delegate-modifier
-
-
-
-
-
-
-
- delegate-modifier
-
-
-
- new
-
-
- public
-
-
- protected
-
-
- internal
-
-
- private
-
-
-
-
-
- global-attributes
-
- global-attribute-sections
-
-
-
- global-attribute-sections
-
-
-
- global-attribute-section
-
-
-
-
- global-attribute-sections
-
-
- global-attribute-section
-
-
-
-
-
-
-
- global-attribute-section
-
-
-
-
-
- [
-
-
- global-attribute-target-specifier
-
-
- attribute-list
-
-
- ]
-
-
-
-
-
-
- [
-
-
- global-attribute-target-specifier
-
-
- attribute-list
-
-
- ,
-
-
- ]
-
-
-
-
-
-
-
- global-attribute-target-specifier
-
-
-
- global-attribute-target
-
-
- :
-
-
-
-
-
- global-attribute-target
-
-
-
- assembly
-
-
- module
-
-
-
-
-
- attributes
-
- attribute-sections
-
-
-
- attribute-sections
-
-
-
- attribute-section
-
-
-
-
- attribute-sections
-
-
- attribute-section
-
-
-
-
-
-
-
- attribute-section
-
-
-
-
-
- [
-
-
-
-
- attribute-target-specifier
-
-
-
-
- attribute-list
-
-
- ]
-
-
-
-
-
-
- [
-
-
-
-
- attribute-target-specifier
-
-
-
-
- attribute-list
-
-
- ,
-
-
- ]
-
-
-
-
-
-
-
- attribute-target-specifier
-
-
-
- attribute-target
-
-
- :
-
-
-
-
-
- attribute-target
-
-
-
- field
-
-
- event
-
-
- method
-
-
- param
-
-
- property
-
-
- return
-
-
- type
-
-
-
-
-
- attribute-list
-
-
-
- attribute
-
-
-
-
- attribute-list
-
-
- ,
-
-
- attribute
-
-
-
-
-
-
-
- attribute
-
-
-
- attribute-name
-
-
-
-
- attribute-arguments
-
-
-
-
-
-
-
- attribute-name
-
- type-name
-
-
-
- attribute-arguments
-
-
-
-
-
- (
-
-
-
-
- positional-argument-list
-
-
-
-
- )
-
-
-
-
-
-
- (
-
-
- positional-argument-list
-
-
- ,
-
-
- named-argument-list
-
-
- )
-
-
-
-
-
-
- (
-
-
- named-argument-list
-
-
- )
-
-
-
-
-
-
-
- positional-argument-list
-
-
-
- positional-argument
-
-
-
-
- positional-argument-list
-
-
- ,
-
-
- positional-argument
-
-
-
-
-
-
-
- positional-argument
-
-
-
-
-
- argument-name
-
-
-
-
- attribute-argument-expression
-
-
-
-
-
- named-argument-list
-
-
-
- named-argument
-
-
-
-
- named-argument-list
-
-
- ,
-
-
- named-argument
-
-
-
-
-
-
-
- named-argument
-
-
-
- identifier
-
-
- =
-
-
- attribute-argument-expression
-
-
-
-
-
- attribute-argument-expression
-
- expression
-
-
-
- keyword
-
-
-
- abstract
-
-
- as
-
-
- base
-
-
- bool
-
-
- break
-
-
- byte
-
-
- case
-
-
- catch
-
-
- char
-
-
- checked
-
-
- class
-
-
- const
-
-
- continue
-
-
- decimal
-
-
- default
-
-
- delegate
-
-
- do
-
-
- double
-
-
- else
-
-
- enum
-
-
- event
-
-
- explicit
-
-
- extern
-
-
- false
-
-
- finally
-
-
- fixed
-
-
- float
-
-
- for
-
-
- foreach
-
-
- goto
-
-
- if
-
-
- implicit
-
-
- in
-
-
- int
-
-
- interface
-
-
- internal
-
-
- is
-
-
- lock
-
-
- long
-
-
- namespace
-
-
- new
-
-
- null
-
-
- object
-
-
- operator
-
-
- out
-
-
- override
-
-
- params
-
-
- private
-
-
- protected
-
-
- public
-
-
- readonly
-
-
- ref
-
-
- return
-
-
- sbyte
-
-
- sealed
-
-
- short
-
-
- sizeof
-
-
- stackalloc
-
-
- static
-
-
- string
-
-
- struct
-
-
- switch
-
-
- this
-
-
- throw
-
-
- true
-
-
- try
-
-
- typeof
-
-
- uint
-
-
- ulong
-
-
- unchecked
-
-
- unsafe
-
-
- ushort
-
-
- using
-
-
- virtual
-
-
- void
-
-
- volatile
-
-
- while
-
-
- group
-
-
- by
-
-
- join
-
-
- on
-
-
- equals
-
-
- into
-
-
- let
-
-
- get
-
-
- set
-
-
- yield
-
-
- partial
-
-
- var
-
-
- orderby
-
-
- add
-
-
- remove
-
-
- where
-
-
- from
-
-
- select
-
-
- ascending
-
-
- descending
-
-
- alias
-
-
- field
-
-
- method
-
-
- param
-
-
- property
-
-
- dynamic
-
-
- assembly
-
-
- module
-
-
-
-
-
\ No newline at end of file
+
+
+ namespace-name
+
+ namespace-or-type-name
+
+
+
+ type-name
+
+ namespace-or-type-name
+
+
+
+ namespace-or-type-name
+
+
+
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+ namespace-or-type-name
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+ qualified-alias-member
+
+
+
+
+
+ type
+
+
+
+ value-type
+
+
+ reference-type
+
+
+ type-parameter
+
+
+
+
+
+ value-type
+
+
+
+ struct-type
+
+
+ enum-type
+
+
+
+
+
+ struct-type
+
+
+
+ type-name
+
+
+ simple-type
+
+
+ nullable-type
+
+
+
+
+
+ simple-type
+
+
+
+ numeric-type
+
+
+ bool
+
+
+
+
+
+ numeric-type
+
+
+
+ integral-type
+
+
+ floating-point-type
+
+
+ decimal
+
+
+
+
+
+ integral-type
+
+
+
+ sbyte
+
+
+ byte
+
+
+ short
+
+
+ ushort
+
+
+ int
+
+
+ uint
+
+
+ long
+
+
+ ulong
+
+
+ char
+
+
+
+
+
+ floating-point-type
+
+
+
+ float
+
+
+ double
+
+
+
+
+
+ nullable-type
+
+
+
+ non-nullable-value-type
+
+
+ ?
+
+
+
+
+
+ non-nullable-value-type
+
+ type
+
+
+
+ enum-type
+
+ type-name
+
+
+
+ reference-type
+
+
+
+ class-type
+
+
+ interface-type
+
+
+ array-type
+
+
+ delegate-type
+
+
+
+
+
+ class-type
+
+
+
+ type-name
+
+
+ object
+
+
+ dynamic
+
+
+ string
+
+
+
+
+
+ interface-type
+
+ type-name
+
+
+
+ rank-specifiers
+
+
+
+ rank-specifier
+
+
+
+
+ rank-specifiers
+
+
+ rank-specifier
+
+
+
+
+
+
+
+ rank-specifier
+
+
+
+ [
+
+
+
+
+ dim-separators
+
+
+
+
+ ]
+
+
+
+
+
+ dim-separators
+
+
+
+ ,
+
+
+
+
+ dim-separators
+
+
+ ,
+
+
+
+
+
+
+
+ delegate-type
+
+ type-name
+
+
+
+ type-argument-list
+
+
+
+ <
+
+
+ type-arguments
+
+
+ >
+
+
+
+
+
+ type-arguments
+
+
+
+ type-argument
+
+
+
+
+ type-arguments
+
+
+ ,
+
+
+ type-argument
+
+
+
+
+
+
+
+ type-argument
+
+ type
+
+
+
+ type-parameter
+
+ identifier
+
+
+
+ variable-reference
+
+ expression
+
+
+
+ argument-list
+
+
+
+ argument
+
+
+
+
+ argument-list
+
+
+ ,
+
+
+ argument
+
+
+
+
+
+
+
+ argument
+
+
+
+
+
+ argument-name
+
+
+
+
+ argument-value
+
+
+
+
+
+ argument-name
+
+
+
+ identifier
+
+
+ :
+
+
+
+
+
+ argument-value
+
+
+
+ expression
+
+
+
+
+ ref
+
+
+ variable-reference
+
+
+
+
+
+
+ out
+
+
+ variable-reference
+
+
+
+
+
+
+
+ primary-expression
+
+
+
+ primary-no-array-creation-expression
+
+
+ array-creation-expression
+
+
+
+
+
+ primary-no-array-creation-expression
+
+
+
+ literal
+
+
+ simple-name
+
+
+ parenthesized-expression
+
+
+ member-access
+
+
+ invocation-expression
+
+
+ element-access
+
+
+ this-access
+
+
+ base-access
+
+
+ post-increment-expression
+
+
+ post-decrement-expression
+
+
+ object-creation-expression
+
+
+ delegate-creation-expression
+
+
+ anonymous-object-creation-expression
+
+
+ typeof-expression
+
+
+ checked-expression
+
+
+ unchecked-expression
+
+
+ default-value-expression
+
+
+ anonymous-method-expression
+
+
+
+
+
+ simple-name
+
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+ parenthesized-expression
+
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ member-access
+
+
+
+
+
+ primary-expression
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+ predefined-type
+
+
+ .
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+
+ qualified-alias-member
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ predefined-type
+
+
+
+ bool
+
+
+ byte
+
+
+ char
+
+
+ decimal
+
+
+ double
+
+
+ float
+
+
+ int
+
+
+ long
+
+
+ object
+
+
+ sbyte
+
+
+ short
+
+
+ string
+
+
+ uint
+
+
+ ulong
+
+
+ ushort
+
+
+
+
+
+ invocation-expression
+
+
+
+ primary-expression
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+ element-access
+
+
+
+ primary-no-array-creation-expression
+
+
+ [
+
+
+ argument-list
+
+
+ ]
+
+
+
+
+
+ this-access
+
+ this
+
+
+
+ base-access
+
+
+
+
+
+ base
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+ base
+
+
+ [
+
+
+ argument-list
+
+
+ ]
+
+
+
+
+
+
+
+ post-increment-expression
+
+
+
+ primary-expression
+
+
+ ++
+
+
+
+
+
+ post-decrement-expression
+
+
+
+ primary-expression
+
+
+ --
+
+
+
+
+
+ object-creation-expression
+
+
+
+
+
+ new
+
+
+ type
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+ object-or-collection-initializer
+
+
+
+
+
+
+
+
+ new
+
+
+ type
+
+
+ object-or-collection-initializer
+
+
+
+
+
+
+
+ object-or-collection-initializer
+
+
+
+ object-initializer
+
+
+ collection-initializer
+
+
+
+
+
+ object-initializer
+
+
+
+
+
+ {
+
+
+
+
+ member-initializer-list
+
+
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ member-initializer-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ member-initializer-list
+
+
+
+ member-initializer
+
+
+
+
+ member-initializer-list
+
+
+ ,
+
+
+ member-initializer
+
+
+
+
+
+
+
+ member-initializer
+
+
+
+ identifier
+
+
+ =
+
+
+ initializer-value
+
+
+
+
+
+ initializer-value
+
+
+
+ expression
+
+
+ object-or-collection-initializer
+
+
+
+
+
+ collection-initializer
+
+
+
+
+
+ {
+
+
+ element-initializer-list
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ element-initializer-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ element-initializer-list
+
+
+
+ element-initializer
+
+
+
+
+ element-initializer-list
+
+
+ ,
+
+
+ element-initializer
+
+
+
+
+
+
+
+ element-initializer
+
+
+
+ non-assignment-expression
+
+
+
+
+ {
+
+
+ expression-list
+
+
+ }
+
+
+
+
+
+
+
+ expression-list
+
+
+
+ expression
+
+
+
+
+ expression-list
+
+
+ ,
+
+
+ expression
+
+
+
+
+
+
+
+ array-creation-expression
+
+
+
+
+
+ new
+
+
+ non-array-type
+
+
+ [
+
+
+ expression-list
+
+
+ ]
+
+
+
+
+ rank-specifiers
+
+
+
+
+
+
+ array-initializer
+
+
+
+
+
+
+
+
+ new
+
+
+ array-type
+
+
+ array-initializer
+
+
+
+
+
+
+ new
+
+
+ rank-specifier
+
+
+ array-initializer
+
+
+
+
+
+
+
+ delegate-creation-expression
+
+
+
+ new
+
+
+ delegate-type
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ anonymous-object-creation-expression
+
+
+
+ new
+
+
+ anonymous-object-initializer
+
+
+
+
+
+ anonymous-object-initializer
+
+
+
+
+
+ {
+
+
+
+
+ member-declarator-list
+
+
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ member-declarator-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ member-declarator-list
+
+
+
+ member-declarator
+
+
+
+
+ member-declarator-list
+
+
+ ,
+
+
+ member-declarator
+
+
+
+
+
+
+
+ member-declarator
+
+
+
+ simple-name
+
+
+ member-access
+
+
+
+
+ identifier
+
+
+ =
+
+
+ expression
+
+
+
+
+
+
+
+ typeof-expression
+
+
+
+
+
+ typeof
+
+
+ (
+
+
+ type
+
+
+ )
+
+
+
+
+
+
+ typeof
+
+
+ (
+
+
+ unbound-type-name
+
+
+ )
+
+
+
+
+
+
+ typeof
+
+
+ (
+
+
+ void
+
+
+ )
+
+
+
+
+
+
+
+ unbound-type-name
+
+
+
+
+
+ identifier
+
+
+
+
+ generic-dimension-specifier
+
+
+
+
+
+
+
+
+ identifier
+
+
+ ::
+
+
+ identifier
+
+
+
+
+ generic-dimension-specifier
+
+
+
+
+
+
+
+
+ unbound-type-name
+
+
+ .
+
+
+ identifier
+
+
+
+
+ generic-dimension-specifier
+
+
+
+
+
+
+
+
+
+ generic-dimension-specifier
+
+
+
+ <
+
+
+
+
+ commas
+
+
+
+
+ >
+
+
+
+
+
+ commas
+
+
+
+ ,
+
+
+
+
+ commas
+
+
+ ,
+
+
+
+
+
+
+
+ checked-expression
+
+
+
+ checked
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ unchecked-expression
+
+
+
+ unchecked
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+
+
+
+ default-value-expression
+
+
+
+ default
+
+
+ (
+
+
+ type
+
+
+ )
+
+
+
+
+
+ unary-expression
+
+
+
+ primary-expression
+
+
+
+
+ +
+
+
+ unary-expression
+
+
+
+
+
+
+ -
+
+
+ unary-expression
+
+
+
+
+
+
+ !
+
+
+ unary-expression
+
+
+
+
+
+
+ ~
+
+
+ unary-expression
+
+
+
+
+ pre-increment-expression
+
+
+ pre-decrement-expression
+
+
+ cast-expression
+
+
+
+
+
+ pre-increment-expression
+
+
+
+ ++
+
+
+ unary-expression
+
+
+
+
+
+ pre-decrement-expression
+
+
+
+ --
+
+
+ unary-expression
+
+
+
+
+
+ cast-expression
+
+
+
+ (
+
+
+ type
+
+
+ )
+
+
+ unary-expression
+
+
+
+
+
+ multiplicative-expression
+
+
+
+ unary-expression
+
+
+
+
+ multiplicative-expression
+
+
+ *
+
+
+ unary-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ /
+
+
+ unary-expression
+
+
+
+
+
+
+ multiplicative-expression
+
+
+ %
+
+
+ unary-expression
+
+
+
+
+
+
+
+ additive-expression
+
+
+
+ multiplicative-expression
+
+
+
+
+ additive-expression
+
+
+ +
+
+
+ multiplicative-expression
+
+
+
+
+
+
+ additive-expression
+
+
+ -
+
+
+ multiplicative-expression
+
+
+
+
+
+
+
+ shift-expression
+
+
+
+ additive-expression
+
+
+
+
+ shift-expression
+
+
+ <<
+
+
+ additive-expression
+
+
+
+
+
+
+ shift-expression
+
+
+ right-shift
+
+
+ additive-expression
+
+
+
+
+
+
+
+ relational-expression
+
+
+
+ shift-expression
+
+
+
+
+ relational-expression
+
+
+ <
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ <=
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ >=
+
+
+ shift-expression
+
+
+
+
+
+
+ relational-expression
+
+
+ is
+
+
+ type
+
+
+
+
+
+
+ relational-expression
+
+
+ as
+
+
+ type
+
+
+
+
+
+
+
+ equality-expression
+
+
+
+ relational-expression
+
+
+
+
+ equality-expression
+
+
+ ==
+
+
+ relational-expression
+
+
+
+
+
+
+ equality-expression
+
+
+ !=
+
+
+ relational-expression
+
+
+
+
+
+
+
+ and-expression
+
+
+
+ equality-expression
+
+
+
+
+ and-expression
+
+
+ &
+
+
+ equality-expression
+
+
+
+
+
+
+
+ exclusive-or-expression
+
+
+
+ and-expression
+
+
+
+
+ exclusive-or-expression
+
+
+ ^
+
+
+ and-expression
+
+
+
+
+
+
+
+ inclusive-or-expression
+
+
+
+ exclusive-or-expression
+
+
+
+
+ inclusive-or-expression
+
+
+ |
+
+
+ exclusive-or-expression
+
+
+
+
+
+
+
+ conditional-and-expression
+
+
+
+ inclusive-or-expression
+
+
+
+
+ conditional-and-expression
+
+
+ &&
+
+
+ inclusive-or-expression
+
+
+
+
+
+
+
+ conditional-or-expression
+
+
+
+ conditional-and-expression
+
+
+
+
+ conditional-or-expression
+
+
+ ||
+
+
+ conditional-and-expression
+
+
+
+
+
+
+
+ null-coalescing-expression
+
+
+
+ conditional-or-expression
+
+
+
+
+ conditional-or-expression
+
+
+ ??
+
+
+ null-coalescing-expression
+
+
+
+
+
+
+
+ conditional-expression
+
+
+
+ null-coalescing-expression
+
+
+
+
+ null-coalescing-expression
+
+
+ ?
+
+
+ expression
+
+
+ :
+
+
+ expression
+
+
+
+
+
+
+
+ lambda-expression
+
+
+
+ anonymous-function-signature
+
+
+ =>
+
+
+ anonymous-function-body
+
+
+
+
+
+ anonymous-method-expression
+
+
+
+ delegate
+
+
+
+
+ explicit-anonymous-function-signature
+
+
+
+
+ block
+
+
+
+
+
+ anonymous-function-signature
+
+
+
+ explicit-anonymous-function-signature
+
+
+ implicit-anonymous-function-signature
+
+
+
+
+
+ explicit-anonymous-function-signature
+
+
+
+ (
+
+
+
+
+ explicit-anonymous-function-parameter-list
+
+
+
+
+ )
+
+
+
+
+
+ explicit-anonymous-function-parameter-list
+
+
+
+ explicit-anonymous-function-parameter
+
+
+
+
+ explicit-anonymous-function-parameter-list
+
+
+ ,
+
+
+ explicit-anonymous-function-parameter
+
+
+
+
+
+
+
+ explicit-anonymous-function-parameter
+
+
+
+
+
+ anonymous-function-parameter-modifier
+
+
+
+
+ type
+
+
+ identifier
+
+
+
+
+
+ anonymous-function-parameter-modifier
+
+
+
+ ref
+
+
+ out
+
+
+
+
+
+ implicit-anonymous-function-signature
+
+
+
+
+
+ (
+
+
+
+
+ implicit-anonymous-function-parameter-list
+
+
+
+
+ )
+
+
+
+
+ implicit-anonymous-function-parameter
+
+
+
+
+
+ implicit-anonymous-function-parameter-list
+
+
+
+ implicit-anonymous-function-parameter
+
+
+
+
+ implicit-anonymous-function-parameter-list
+
+
+ ,
+
+
+ implicit-anonymous-function-parameter
+
+
+
+
+
+
+
+ implicit-anonymous-function-parameter
+
+ identifier
+
+
+
+ anonymous-function-body
+
+
+
+ expression
+
+
+ block
+
+
+
+
+
+ query-expression
+
+
+
+ from-clause
+
+
+ query-body
+
+
+
+
+
+ from-clause
+
+
+
+ from
+
+
+
+
+ type
+
+
+
+
+ identifier
+
+
+ in
+
+
+ expression
+
+
+
+
+
+ query-body
+
+
+
+
+
+ query-body-clauses
+
+
+
+
+ select-or-group-clause
+
+
+
+
+ query-continuation
+
+
+
+
+
+
+
+ query-body-clauses
+
+
+
+ query-body-clause
+
+
+
+
+ query-body-clauses
+
+
+ query-body-clause
+
+
+
+
+
+
+
+ query-body-clause
+
+
+
+ from-clause
+
+
+ let-clause
+
+
+ where-clause
+
+
+ join-clause
+
+
+ join-into-clause
+
+
+ orderby-clause
+
+
+
+
+
+ let-clause
+
+
+
+ let
+
+
+ identifier
+
+
+ =
+
+
+ expression
+
+
+
+
+
+ where-clause
+
+
+
+ where
+
+
+ boolean-expression
+
+
+
+
+
+ join-clause
+
+
+
+ join
+
+
+
+
+ type
+
+
+
+
+ identifier
+
+
+ in
+
+
+ expression
+
+
+ on
+
+
+ expression
+
+
+ equals
+
+
+ expression
+
+
+
+
+
+ join-into-clause
+
+
+
+ join
+
+
+
+
+ type
+
+
+
+
+ identifier
+
+
+ in
+
+
+ expression
+
+
+ on
+
+
+ expression
+
+
+ equals
+
+
+ expression
+
+
+ into
+
+
+ identifier
+
+
+
+
+
+ orderby-clause
+
+
+
+ orderby
+
+
+ orderings
+
+
+
+
+
+ orderings
+
+
+
+ ordering
+
+
+
+
+ orderings
+
+
+ ,
+
+
+ ordering
+
+
+
+
+
+
+
+ ordering
+
+
+
+ expression
+
+
+
+
+ ordering-direction
+
+
+
+
+
+
+
+ ordering-direction
+
+
+
+ ascending
+
+
+ descending
+
+
+
+
+
+ select-or-group-clause
+
+
+
+ select-clause
+
+
+ group-clause
+
+
+
+
+
+ select-clause
+
+
+
+ select
+
+
+ expression
+
+
+
+
+
+ group-clause
+
+
+
+ group
+
+
+ expression
+
+
+ by
+
+
+ expression
+
+
+
+
+
+ query-continuation
+
+
+
+ into
+
+
+ identifier
+
+
+ query-body
+
+
+
+
+
+ assignment
+
+
+
+ unary-expression
+
+
+ assignment-operator
+
+
+ expression
+
+
+
+
+
+ assignment-operator
+
+
+
+ =
+
+
+ +=
+
+
+ -=
+
+
+ *=
+
+
+ /=
+
+
+ %=
+
+
+ &=
+
+
+ |=
+
+
+ ^=
+
+
+ <<=
+
+
+ right-shift-assignment
+
+
+
+
+
+ expression
+
+
+
+ non-assignment-expression
+
+
+ assignment
+
+
+
+
+
+ non-assignment-expression
+
+
+
+ conditional-expression
+
+
+ lambda-expression
+
+
+ query-expression
+
+
+
+
+
+ constant-expression
+
+ expression
+
+
+
+ boolean-expression
+
+ expression
+
+
+
+ statement
+
+
+
+ labeled-statement
+
+
+ declaration-statement
+
+
+ embedded-statement
+
+
+
+
+
+ embedded-statement
+
+
+
+ block
+
+
+ empty-statement
+
+
+ expression-statement
+
+
+ selection-statement
+
+
+ iteration-statement
+
+
+ jump-statement
+
+
+ try-statement
+
+
+ checked-statement
+
+
+ unchecked-statement
+
+
+ lock-statement
+
+
+ using-statement
+
+
+ yield-statement
+
+
+
+
+
+ block
+
+
+
+ {
+
+
+
+
+ statement-list
+
+
+
+
+ }
+
+
+
+
+
+ statement-list
+
+
+
+ statement
+
+
+
+
+ statement-list
+
+
+ statement
+
+
+
+
+
+
+
+ empty-statement
+
+ ;
+
+
+
+ labeled-statement
+
+
+
+ identifier
+
+
+ :
+
+
+ statement
+
+
+
+
+
+ declaration-statement
+
+
+
+
+
+ local-variable-declaration
+
+
+ ;
+
+
+
+
+
+
+ local-constant-declaration
+
+
+ ;
+
+
+
+
+
+
+
+ local-variable-declaration
+
+
+
+ local-variable-type
+
+
+ local-variable-declarators
+
+
+
+
+
+ local-variable-type
+
+
+
+ type
+
+
+ var
+
+
+
+
+
+ local-variable-declarators
+
+
+
+ local-variable-declarator
+
+
+
+
+ local-variable-declarators
+
+
+ ,
+
+
+ local-variable-declarator
+
+
+
+
+
+
+
+ local-variable-declarator
+
+
+
+ identifier
+
+
+
+
+ identifier
+
+
+ =
+
+
+ local-variable-initializer
+
+
+
+
+
+
+
+ local-variable-initializer
+
+
+
+ expression
+
+
+ array-initializer
+
+
+
+
+
+ local-constant-declaration
+
+
+
+ const
+
+
+ type
+
+
+ constant-declarators
+
+
+
+
+
+ constant-declarators
+
+
+
+ constant-declarator
+
+
+
+
+ constant-declarators
+
+
+ ,
+
+
+ constant-declarator
+
+
+
+
+
+
+
+ constant-declarator
+
+
+
+ identifier
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+ expression-statement
+
+
+
+ statement-expression
+
+
+ ;
+
+
+
+
+
+ statement-expression
+
+
+
+ invocation-expression
+
+
+ object-creation-expression
+
+
+ assignment
+
+
+ post-increment-expression
+
+
+ post-decrement-expression
+
+
+ pre-increment-expression
+
+
+ pre-decrement-expression
+
+
+
+
+
+ selection-statement
+
+
+
+ if-statement
+
+
+ switch-statement
+
+
+
+
+
+ if-statement
+
+
+
+
+
+ if
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+
+ if
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+ else
+
+
+ embedded-statement
+
+
+
+
+
+
+
+ switch-statement
+
+
+
+ switch
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ switch-block
+
+
+
+
+
+ switch-block
+
+
+
+ {
+
+
+
+
+ switch-sections
+
+
+
+
+ }
+
+
+
+
+
+ switch-sections
+
+
+
+ switch-section
+
+
+
+
+ switch-sections
+
+
+ switch-section
+
+
+
+
+
+
+
+ switch-section
+
+
+
+ switch-labels
+
+
+ statement-list
+
+
+
+
+
+ switch-labels
+
+
+
+ switch-label
+
+
+
+
+ switch-labels
+
+
+ switch-label
+
+
+
+
+
+
+
+ switch-label
+
+
+
+
+
+ case
+
+
+ constant-expression
+
+
+ :
+
+
+
+
+
+
+ default
+
+
+ :
+
+
+
+
+
+
+
+ iteration-statement
+
+
+
+ while-statement
+
+
+ do-statement
+
+
+ for-statement
+
+
+ foreach-statement
+
+
+
+
+
+ while-statement
+
+
+
+ while
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ do-statement
+
+
+
+ do
+
+
+ embedded-statement
+
+
+ while
+
+
+ (
+
+
+ boolean-expression
+
+
+ )
+
+
+ ;
+
+
+
+
+
+ for-statement
+
+
+
+ for
+
+
+ (
+
+
+
+
+ for-initializer
+
+
+
+
+ ;
+
+
+
+
+ for-condition
+
+
+
+
+ ;
+
+
+
+
+ for-iterator
+
+
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ for-initializer
+
+
+
+ local-variable-declaration
+
+
+ statement-expression-list
+
+
+
+
+
+ for-condition
+
+ boolean-expression
+
+
+
+ for-iterator
+
+ statement-expression-list
+
+
+
+ statement-expression-list
+
+
+
+ statement-expression
+
+
+
+
+ statement-expression-list
+
+
+ ,
+
+
+ statement-expression
+
+
+
+
+
+
+
+ foreach-statement
+
+
+
+ foreach
+
+
+ (
+
+
+ local-variable-type
+
+
+ identifier
+
+
+ in
+
+
+ expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ jump-statement
+
+
+
+ break-statement
+
+
+ continue-statement
+
+
+ goto-statement
+
+
+ return-statement
+
+
+ throw-statement
+
+
+
+
+
+ break-statement
+
+
+
+ break
+
+
+ ;
+
+
+
+
+
+ continue-statement
+
+
+
+ continue
+
+
+ ;
+
+
+
+
+
+ goto-statement
+
+
+
+
+
+ goto
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+
+ goto
+
+
+ case
+
+
+ constant-expression
+
+
+ ;
+
+
+
+
+
+
+ goto
+
+
+ default
+
+
+ ;
+
+
+
+
+
+
+
+ return-statement
+
+
+
+ return
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+ throw-statement
+
+
+
+ throw
+
+
+
+
+ expression
+
+
+
+
+ ;
+
+
+
+
+
+ try-statement
+
+
+
+
+
+ try
+
+
+ block
+
+
+ catch-clauses
+
+
+
+
+
+
+ try
+
+
+ block
+
+
+ finally-clause
+
+
+
+
+
+
+ try
+
+
+ block
+
+
+ catch-clauses
+
+
+ finally-clause
+
+
+
+
+
+
+
+ catch-clauses
+
+
+
+
+
+ specific-catch-clauses
+
+
+
+
+ general-catch-clause
+
+
+
+
+
+
+
+
+
+
+ specific-catch-clauses
+
+
+
+
+ general-catch-clause
+
+
+
+
+
+
+
+ specific-catch-clauses
+
+
+
+ specific-catch-clause
+
+
+
+
+ specific-catch-clauses
+
+
+ specific-catch-clause
+
+
+
+
+
+
+
+ specific-catch-clause
+
+
+
+ catch
+
+
+ (
+
+
+ class-type
+
+
+
+
+ identifier
+
+
+
+
+ )
+
+
+ block
+
+
+
+
+
+ general-catch-clause
+
+
+
+ catch
+
+
+ block
+
+
+
+
+
+ finally-clause
+
+
+
+ finally
+
+
+ block
+
+
+
+
+
+ checked-statement
+
+
+
+ checked
+
+
+ block
+
+
+
+
+
+ unchecked-statement
+
+
+
+ unchecked
+
+
+ block
+
+
+
+
+
+ lock-statement
+
+
+
+ lock
+
+
+ (
+
+
+ expression
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ using-statement
+
+
+
+ using
+
+
+ (
+
+
+ resource-acquisition
+
+
+ )
+
+
+ embedded-statement
+
+
+
+
+
+ resource-acquisition
+
+
+
+ local-variable-declaration
+
+
+ expression
+
+
+
+
+
+ yield-statement
+
+
+
+
+
+ yield
+
+
+ return
+
+
+ expression
+
+
+ ;
+
+
+
+
+
+
+ yield
+
+
+ break
+
+
+ ;
+
+
+
+
+
+
+
+ compilation-unit
+
+
+
+
+
+
+
+ extern-alias-directives
+
+
+
+
+
+
+ using-directives
+
+
+
+
+
+
+ global-attributes
+
+
+
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+
+
+
+
+ namespace-declaration
+
+
+
+ namespace
+
+
+ qualified-identifier
+
+
+ namespace-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ qualified-identifier
+
+
+
+ identifier
+
+
+
+
+ qualified-identifier
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ namespace-body
+
+
+
+ {
+
+
+
+
+ extern-alias-directives
+
+
+
+
+
+
+ using-directives
+
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ extern-alias-directives
+
+
+
+ extern-alias-directive
+
+
+
+
+ extern-alias-directives
+
+
+ extern-alias-directive
+
+
+
+
+
+
+
+ extern-alias-directive
+
+
+
+ extern
+
+
+ alias
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+ using-directives
+
+
+
+ using-directive
+
+
+
+
+ using-directives
+
+
+ using-directive
+
+
+
+
+
+
+
+ using-directive
+
+
+
+ using-alias-directive
+
+
+ using-namespace-directive
+
+
+
+
+
+ using-alias-directive
+
+
+
+ using
+
+
+ identifier
+
+
+ =
+
+
+ namespace-or-type-name
+
+
+ ;
+
+
+
+
+
+ using-namespace-directive
+
+
+
+ using
+
+
+ namespace-name
+
+
+ ;
+
+
+
+
+
+ namespace-member-declarations
+
+
+
+ namespace-member-declaration
+
+
+
+
+ namespace-member-declarations
+
+
+ namespace-member-declaration
+
+
+
+
+
+
+
+ namespace-member-declaration
+
+
+
+ namespace-declaration
+
+
+ type-declaration
+
+
+
+
+
+ type-declaration
+
+
+
+ class-declaration
+
+
+ struct-declaration
+
+
+ interface-declaration
+
+
+ enum-declaration
+
+
+ delegate-declaration
+
+
+
+
+
+ qualified-alias-member
+
+
+
+ identifier
+
+
+ ::
+
+
+ identifier
+
+
+
+
+ type-argument-list
+
+
+
+
+
+
+
+ class-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ class-modifiers
+
+
+
+
+
+
+ partial
+
+
+
+
+ class
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+
+
+
+
+
+
+ class-base
+
+
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ class-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+
+
+ class-modifiers
+
+
+
+ class-modifier
+
+
+
+
+ class-modifiers
+
+
+ class-modifier
+
+
+
+
+
+
+
+ class-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ abstract
+
+
+ sealed
+
+
+ static
+
+
+
+
+
+ type-parameter-list
+
+
+
+ <
+
+
+ type-parameters
+
+
+ >
+
+
+
+
+
+ type-parameters
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ type-parameter
+
+
+
+
+
+
+ type-parameters
+
+
+ ,
+
+
+
+
+ attributes
+
+
+
+
+ type-parameter
+
+
+
+
+
+
+
+ class-base
+
+
+
+
+
+ :
+
+
+ class-type
+
+
+
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+
+ :
+
+
+ class-type
+
+
+ ,
+
+
+ interface-type-list
+
+
+
+
+
+
+
+ interface-type-list
+
+
+
+ interface-type
+
+
+
+
+ interface-type-list
+
+
+ ,
+
+
+ interface-type
+
+
+
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+ type-parameter-constraints-clause
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+ type-parameter-constraints-clause
+
+
+
+
+
+
+
+ type-parameter-constraints-clause
+
+
+
+ where
+
+
+ type-parameter
+
+
+ :
+
+
+ type-parameter-constraints
+
+
+
+
+
+ type-parameter-constraints
+
+
+
+ primary-constraint
+
+
+ secondary-constraints
+
+
+ constructor-constraint
+
+
+
+
+ primary-constraint
+
+
+ ,
+
+
+ secondary-constraints
+
+
+
+
+
+
+ primary-constraint
+
+
+ ,
+
+
+ constructor-constraint
+
+
+
+
+
+
+ secondary-constraints
+
+
+ ,
+
+
+ constructor-constraint
+
+
+
+
+
+
+ primary-constraint
+
+
+ ,
+
+
+ secondary-constraints
+
+
+ ,
+
+
+ constructor-constraint
+
+
+
+
+
+
+
+ primary-constraint
+
+
+
+ class-type
+
+
+ class
+
+
+ struct
+
+
+
+
+
+ secondary-constraints
+
+
+
+ interface-type
+
+
+ type-parameter
+
+
+
+
+ secondary-constraints
+
+
+ ,
+
+
+ interface-type
+
+
+
+
+
+
+ secondary-constraints
+
+
+ ,
+
+
+ type-parameter
+
+
+
+
+
+
+
+ constructor-constraint
+
+
+
+ new
+
+
+ (
+
+
+ )
+
+
+
+
+
+ class-body
+
+
+
+ {
+
+
+
+
+ class-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ class-member-declarations
+
+
+
+ class-member-declaration
+
+
+
+
+ class-member-declarations
+
+
+ class-member-declaration
+
+
+
+
+
+
+
+ class-member-declaration
+
+
+
+ constant-declaration
+
+
+ field-declaration
+
+
+ method-declaration
+
+
+ property-declaration
+
+
+ event-declaration
+
+
+ indexer-declaration
+
+
+ operator-declaration
+
+
+ constructor-declaration
+
+
+ destructor-declaration
+
+
+ static-constructor-declaration
+
+
+ type-declaration
+
+
+
+
+
+ constant-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ constant-modifiers
+
+
+
+
+ const
+
+
+ type
+
+
+ constant-declarators
+
+
+ ;
+
+
+
+
+
+ constant-modifiers
+
+
+
+ constant-modifier
+
+
+
+
+ constant-modifiers
+
+
+ constant-modifier
+
+
+
+
+
+
+
+ constant-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ field-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ field-modifiers
+
+
+
+
+ type
+
+
+ variable-declarators
+
+
+ ;
+
+
+
+
+
+ field-modifiers
+
+
+
+ field-modifier
+
+
+
+
+ field-modifiers
+
+
+ field-modifier
+
+
+
+
+
+
+
+ field-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ readonly
+
+
+ volatile
+
+
+
+
+
+ variable-declarators
+
+
+
+ variable-declarator
+
+
+
+
+ variable-declarators
+
+
+ ,
+
+
+ variable-declarator
+
+
+
+
+
+
+
+ variable-declarator
+
+
+
+ identifier
+
+
+
+
+ identifier
+
+
+ =
+
+
+ variable-initializer
+
+
+
+
+
+
+
+ variable-initializer
+
+
+
+ expression
+
+
+ array-initializer
+
+
+
+
+
+ method-declaration
+
+
+
+ method-header
+
+
+ method-body
+
+
+
+
+
+ method-header
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ method-modifiers
+
+
+
+
+
+
+ partial
+
+
+
+
+ return-type
+
+
+ member-name
+
+
+
+
+ type-parameter-list
+
+
+
+
+
+
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+
+
+
+
+
+ method-modifiers
+
+
+
+ method-modifier
+
+
+
+
+ method-modifiers
+
+
+ method-modifier
+
+
+
+
+
+
+
+ method-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ return-type
+
+
+
+ type
+
+
+ void
+
+
+
+
+
+ member-name
+
+
+
+ identifier
+
+
+
+
+ interface-type
+
+
+ .
+
+
+ identifier
+
+
+
+
+
+
+
+ method-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ formal-parameter-list
+
+
+
+ fixed-parameters
+
+
+
+
+ fixed-parameters
+
+
+ ,
+
+
+ parameter-array
+
+
+
+
+ parameter-array
+
+
+
+
+
+ fixed-parameters
+
+
+
+ fixed-parameter
+
+
+
+
+ fixed-parameters
+
+
+ ,
+
+
+ fixed-parameter
+
+
+
+
+
+
+
+ fixed-parameter
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ parameter-modifier
+
+
+
+
+ type
+
+
+ identifier
+
+
+
+
+ default-argument
+
+
+
+
+
+
+
+ default-argument
+
+
+
+ =
+
+
+ expression
+
+
+
+
+
+ parameter-modifier
+
+
+
+ ref
+
+
+ out
+
+
+ this
+
+
+
+
+
+ parameter-array
+
+
+
+
+
+ attributes
+
+
+
+
+ params
+
+
+ array-type
+
+
+ identifier
+
+
+
+
+
+ property-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ property-modifiers
+
+
+
+
+ type
+
+
+ member-name
+
+
+ {
+
+
+ accessor-declarations
+
+
+ }
+
+
+
+
+
+ property-modifiers
+
+
+
+ property-modifier
+
+
+
+
+ property-modifiers
+
+
+ property-modifier
+
+
+
+
+
+
+
+ property-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ accessor-declarations
+
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+
+
+
+
+
+ get-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ accessor-modifier
+
+
+
+
+ get
+
+
+ accessor-body
+
+
+
+
+
+ set-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ accessor-modifier
+
+
+
+
+ set
+
+
+ accessor-body
+
+
+
+
+
+ accessor-modifier
+
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+ protected
+
+
+ internal
+
+
+
+
+
+
+ internal
+
+
+ protected
+
+
+
+
+
+
+
+ accessor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ event-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ event-modifiers
+
+
+
+
+ event
+
+
+ type
+
+
+ variable-declarators
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ event-modifiers
+
+
+
+
+ event
+
+
+ type
+
+
+ member-name
+
+
+ {
+
+
+ event-accessor-declarations
+
+
+ }
+
+
+
+
+
+
+
+ event-modifiers
+
+
+
+ event-modifier
+
+
+
+
+ event-modifiers
+
+
+ event-modifier
+
+
+
+
+
+
+
+ event-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ static
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ event-accessor-declarations
+
+
+
+
+
+ add-accessor-declaration
+
+
+ remove-accessor-declaration
+
+
+
+
+
+
+ remove-accessor-declaration
+
+
+ add-accessor-declaration
+
+
+
+
+
+
+
+ add-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ add
+
+
+ block
+
+
+
+
+
+ remove-accessor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ remove
+
+
+ block
+
+
+
+
+
+ indexer-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ indexer-modifiers
+
+
+
+
+ indexer-declarator
+
+
+ {
+
+
+ accessor-declarations
+
+
+ }
+
+
+
+
+
+ indexer-modifiers
+
+
+
+ indexer-modifier
+
+
+
+
+ indexer-modifiers
+
+
+ indexer-modifier
+
+
+
+
+
+
+
+ indexer-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ virtual
+
+
+ sealed
+
+
+ override
+
+
+ abstract
+
+
+ extern
+
+
+
+
+
+ indexer-declarator
+
+
+
+
+
+ type
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+
+
+
+
+ type
+
+
+ interface-type
+
+
+ .
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+
+
+
+
+
+ operator-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ operator-modifiers
+
+
+ operator-declarator
+
+
+ operator-body
+
+
+
+
+
+ operator-modifiers
+
+
+
+ operator-modifier
+
+
+
+
+ operator-modifiers
+
+
+ operator-modifier
+
+
+
+
+
+
+
+ operator-modifier
+
+
+
+ public
+
+
+ static
+
+
+ extern
+
+
+
+
+
+ operator-declarator
+
+
+
+ unary-operator-declarator
+
+
+ binary-operator-declarator
+
+
+ conversion-operator-declarator
+
+
+
+
+
+ unary-operator-declarator
+
+
+
+ type
+
+
+ operator
+
+
+ overloadable-unary-operator
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+ overloadable-unary-operator
+
+
+
+ +
+
+
+ -
+
+
+ !
+
+
+ ~
+
+
+ ++
+
+
+ --
+
+
+ true
+
+
+ false
+
+
+
+
+
+ binary-operator-declarator
+
+
+
+ type
+
+
+ operator
+
+
+ overloadable-binary-operator
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ ,
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+ overloadable-binary-operator
+
+
+
+ +
+
+
+ -
+
+
+ *
+
+
+ /
+
+
+ %
+
+
+ &
+
+
+ |
+
+
+ ^
+
+
+ <<
+
+
+ right-shift
+
+
+ ==
+
+
+ !=
+
+
+ >
+
+
+ <
+
+
+ >=
+
+
+ <=
+
+
+
+
+
+ conversion-operator-declarator
+
+
+
+
+
+ implicit
+
+
+ operator
+
+
+ type
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+
+ explicit
+
+
+ operator
+
+
+ type
+
+
+ (
+
+
+ type
+
+
+ identifier
+
+
+ )
+
+
+
+
+
+
+
+ operator-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ constructor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ constructor-modifiers
+
+
+
+
+ constructor-declarator
+
+
+ constructor-body
+
+
+
+
+
+ constructor-modifiers
+
+
+
+ constructor-modifier
+
+
+
+
+ constructor-modifiers
+
+
+ constructor-modifier
+
+
+
+
+
+
+
+ constructor-modifier
+
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+ extern
+
+
+
+
+
+ constructor-declarator
+
+
+
+ identifier
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ constructor-initializer
+
+
+
+
+
+
+
+ constructor-initializer
+
+
+
+
+
+ :
+
+
+ base
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+ :
+
+
+ this
+
+
+ (
+
+
+
+
+ argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+
+ constructor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ static-constructor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+ static-constructor-modifiers
+
+
+ identifier
+
+
+ (
+
+
+ )
+
+
+ static-constructor-body
+
+
+
+
+
+ static-constructor-modifiers
+
+
+
+
+
+
+
+ extern
+
+
+
+
+ static
+
+
+
+
+
+
+ static
+
+
+
+
+ extern
+
+
+
+
+
+
+
+
+
+ static-constructor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ destructor-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ extern
+
+
+
+
+ ~
+
+
+ identifier
+
+
+ (
+
+
+ )
+
+
+ destructor-body
+
+
+
+
+
+ destructor-body
+
+
+
+ block
+
+
+ ;
+
+
+
+
+
+ struct-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ struct-modifiers
+
+
+
+
+
+
+ partial
+
+
+
+
+ struct
+
+
+ identifier
+
+
+
+
+ type-parameter-list
+
+
+
+
+
+
+
+
+
+
+ struct-interfaces
+
+
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ struct-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+
+
+ struct-modifiers
+
+
+
+ struct-modifier
+
+
+
+
+ struct-modifiers
+
+
+ struct-modifier
+
+
+
+
+
+
+
+ struct-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ struct-interfaces
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+ struct-body
+
+
+
+ {
+
+
+
+
+ struct-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ struct-member-declarations
+
+
+
+ struct-member-declaration
+
+
+
+
+ struct-member-declarations
+
+
+ struct-member-declaration
+
+
+
+
+
+
+
+ struct-member-declaration
+
+
+
+ constant-declaration
+
+
+ field-declaration
+
+
+ method-declaration
+
+
+ property-declaration
+
+
+ event-declaration
+
+
+ indexer-declaration
+
+
+ operator-declaration
+
+
+ constructor-declaration
+
+
+ static-constructor-declaration
+
+
+ type-declaration
+
+
+
+
+
+ array-type
+
+
+
+ non-array-type
+
+
+ rank-specifiers
+
+
+
+
+
+ non-array-type
+
+ type
+
+
+
+ array-initializer
+
+
+
+
+
+ {
+
+
+
+
+ variable-initializer-list
+
+
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ variable-initializer-list
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ variable-initializer-list
+
+
+
+ variable-initializer
+
+
+
+
+ variable-initializer-list
+
+
+ ,
+
+
+ variable-initializer
+
+
+
+
+
+
+
+ interface-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ interface-modifiers
+
+
+
+
+
+
+ partial
+
+
+
+
+ interface
+
+
+
+
+
+
+ identifier
+
+
+
+
+ variant-type-parameter-list
+
+
+
+
+
+
+ interface-base
+
+
+
+
+
+
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ interface-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+
+
+ interface-modifiers
+
+
+
+ interface-modifier
+
+
+
+
+ interface-modifiers
+
+
+ interface-modifier
+
+
+
+
+
+
+
+ interface-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ variant-type-parameter-list
+
+
+
+ <
+
+
+ variant-type-parameters
+
+
+ >
+
+
+
+
+
+ variant-type-parameters
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ variance-annotation
+
+
+
+
+ type-parameter
+
+
+
+
+
+
+ variant-type-parameters
+
+
+ ,
+
+
+
+
+ attributes
+
+
+
+
+
+
+ variance-annotation
+
+
+
+
+ type-parameter
+
+
+
+
+
+
+
+ variance-annotation
+
+
+
+ in
+
+
+ out
+
+
+
+
+
+ interface-base
+
+
+
+ :
+
+
+ interface-type-list
+
+
+
+
+
+ interface-body
+
+
+
+ {
+
+
+
+
+ interface-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+ interface-member-declarations
+
+
+
+ interface-member-declaration
+
+
+
+
+ interface-member-declarations
+
+
+ interface-member-declaration
+
+
+
+
+
+
+
+ interface-member-declaration
+
+
+
+ interface-method-declaration
+
+
+ interface-property-declaration
+
+
+ interface-event-declaration
+
+
+ interface-indexer-declaration
+
+
+
+
+
+ interface-method-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ return-type
+
+
+ identifier
+
+
+ type-parameter-list
+
+
+
+
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ interface-property-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ type
+
+
+ identifier
+
+
+ {
+
+
+ interface-accessors
+
+
+ }
+
+
+
+
+
+ interface-accessors
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ set
+
+
+ ;
+
+
+
+
+ attributes
+
+
+
+
+ get
+
+
+ ;
+
+
+
+
+
+
+
+ interface-event-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ event
+
+
+ type
+
+
+ identifier
+
+
+ ;
+
+
+
+
+
+ interface-indexer-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ new
+
+
+
+
+ type
+
+
+ this
+
+
+ [
+
+
+ formal-parameter-list
+
+
+ ]
+
+
+ {
+
+
+ interface-accessors
+
+
+ }
+
+
+
+
+
+ enum-declaration
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ enum-modifiers
+
+
+
+
+ enum
+
+
+ identifier
+
+
+
+
+ enum-base
+
+
+
+
+ enum-body
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ enum-base
+
+
+
+ :
+
+
+ integral-type
+
+
+
+
+
+ enum-body
+
+
+
+
+
+ {
+
+
+
+
+ enum-member-declarations
+
+
+
+
+ }
+
+
+
+
+
+
+ {
+
+
+ enum-member-declarations
+
+
+ ,
+
+
+ }
+
+
+
+
+
+
+
+ enum-modifiers
+
+
+
+ enum-modifier
+
+
+
+
+ enum-modifiers
+
+
+ enum-modifier
+
+
+
+
+
+
+
+ enum-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ enum-member-declarations
+
+
+
+ enum-member-declaration
+
+
+
+
+ enum-member-declarations
+
+
+ ,
+
+
+ enum-member-declaration
+
+
+
+
+
+
+
+ enum-member-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ identifier
+
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+ identifier
+
+
+ =
+
+
+ constant-expression
+
+
+
+
+
+
+
+ delegate-declaration
+
+
+
+
+
+
+
+ attributes
+
+
+
+
+
+
+ delegate-modifiers
+
+
+
+
+ delegate
+
+
+ return-type
+
+
+
+
+
+
+ identifier
+
+
+
+
+ variant-type-parameter-list
+
+
+
+
+
+
+
+
+ (
+
+
+
+
+ formal-parameter-list
+
+
+
+
+ )
+
+
+
+
+ type-parameter-constraints-clauses
+
+
+
+
+ ;
+
+
+
+
+
+
+
+ delegate-modifiers
+
+
+
+ delegate-modifier
+
+
+
+
+ delegate-modifiers
+
+
+ delegate-modifier
+
+
+
+
+
+
+
+ delegate-modifier
+
+
+
+ new
+
+
+ public
+
+
+ protected
+
+
+ internal
+
+
+ private
+
+
+
+
+
+ global-attributes
+
+ global-attribute-sections
+
+
+
+ global-attribute-sections
+
+
+
+ global-attribute-section
+
+
+
+
+ global-attribute-sections
+
+
+ global-attribute-section
+
+
+
+
+
+
+
+ global-attribute-section
+
+
+
+
+
+ [
+
+
+ global-attribute-target-specifier
+
+
+ attribute-list
+
+
+ ]
+
+
+
+
+
+
+ [
+
+
+ global-attribute-target-specifier
+
+
+ attribute-list
+
+
+ ,
+
+
+ ]
+
+
+
+
+
+
+
+ global-attribute-target-specifier
+
+
+
+ global-attribute-target
+
+
+ :
+
+
+
+
+
+ global-attribute-target
+
+
+
+ assembly
+
+
+ module
+
+
+
+
+
+ attributes
+
+ attribute-sections
+
+
+
+ attribute-sections
+
+
+
+ attribute-section
+
+
+
+
+ attribute-sections
+
+
+ attribute-section
+
+
+
+
+
+
+
+ attribute-section
+
+
+
+
+
+ [
+
+
+
+
+ attribute-target-specifier
+
+
+
+
+ attribute-list
+
+
+ ]
+
+
+
+
+
+
+ [
+
+
+
+
+ attribute-target-specifier
+
+
+
+
+ attribute-list
+
+
+ ,
+
+
+ ]
+
+
+
+
+
+
+
+ attribute-target-specifier
+
+
+
+ attribute-target
+
+
+ :
+
+
+
+
+
+ attribute-target
+
+
+
+ field
+
+
+ event
+
+
+ method
+
+
+ param
+
+
+ property
+
+
+ return
+
+
+ type
+
+
+
+
+
+ attribute-list
+
+
+
+ attribute
+
+
+
+
+ attribute-list
+
+
+ ,
+
+
+ attribute
+
+
+
+
+
+
+
+ attribute
+
+
+
+ attribute-name
+
+
+
+
+ attribute-arguments
+
+
+
+
+
+
+
+ attribute-name
+
+ type-name
+
+
+
+ attribute-arguments
+
+
+
+
+
+ (
+
+
+
+
+ positional-argument-list
+
+
+
+
+ )
+
+
+
+
+
+
+ (
+
+
+ positional-argument-list
+
+
+ ,
+
+
+ named-argument-list
+
+
+ )
+
+
+
+
+
+
+ (
+
+
+ named-argument-list
+
+
+ )
+
+
+
+
+
+
+
+ positional-argument-list
+
+
+
+ positional-argument
+
+
+
+
+ positional-argument-list
+
+
+ ,
+
+
+ positional-argument
+
+
+
+
+
+
+
+ positional-argument
+
+
+
+
+
+ argument-name
+
+
+
+
+ attribute-argument-expression
+
+
+
+
+
+ named-argument-list
+
+
+
+ named-argument
+
+
+
+
+ named-argument-list
+
+
+ ,
+
+
+ named-argument
+
+
+
+
+
+
+
+ named-argument
+
+
+
+ identifier
+
+
+ =
+
+
+ attribute-argument-expression
+
+
+
+
+
+ attribute-argument-expression
+
+ expression
+
+
+
+ keyword
+
+
+
+ abstract
+
+
+ as
+
+
+ base
+
+
+ bool
+
+
+ break
+
+
+ byte
+
+
+ case
+
+
+ catch
+
+
+ char
+
+
+ checked
+
+
+ class
+
+
+ const
+
+
+ continue
+
+
+ decimal
+
+
+ default
+
+
+ delegate
+
+
+ do
+
+
+ double
+
+
+ else
+
+
+ enum
+
+
+ event
+
+
+ explicit
+
+
+ extern
+
+
+ false
+
+
+ finally
+
+
+ fixed
+
+
+ float
+
+
+ for
+
+
+ foreach
+
+
+ goto
+
+
+ if
+
+
+ implicit
+
+
+ in
+
+
+ int
+
+
+ interface
+
+
+ internal
+
+
+ is
+
+
+ lock
+
+
+ long
+
+
+ namespace
+
+
+ new
+
+
+ null
+
+
+ object
+
+
+ operator
+
+
+ out
+
+
+ override
+
+
+ params
+
+
+ private
+
+
+ protected
+
+
+ public
+
+
+ readonly
+
+
+ ref
+
+
+ return
+
+
+ sbyte
+
+
+ sealed
+
+
+ short
+
+
+ sizeof
+
+
+ stackalloc
+
+
+ static
+
+
+ string
+
+
+ struct
+
+
+ switch
+
+
+ this
+
+
+ throw
+
+
+ true
+
+
+ try
+
+
+ typeof
+
+
+ uint
+
+
+ ulong
+
+
+ unchecked
+
+
+ unsafe
+
+
+ ushort
+
+
+ using
+
+
+ virtual
+
+
+ void
+
+
+ volatile
+
+
+ while
+
+
+ group
+
+
+ by
+
+
+ join
+
+
+ on
+
+
+ equals
+
+
+ into
+
+
+ let
+
+
+ get
+
+
+ set
+
+
+ yield
+
+
+ partial
+
+
+ var
+
+
+ orderby
+
+
+ add
+
+
+ remove
+
+
+ where
+
+
+ from
+
+
+ select
+
+
+ ascending
+
+
+ descending
+
+
+ alias
+
+
+ field
+
+
+ method
+
+
+ param
+
+
+ property
+
+
+ dynamic
+
+
+ assembly
+
+
+ module
+
+
+
+
+
diff --git a/topics/grammars/java/jls1/Makefile b/topics/grammars/java/jls1/Makefile
index 5e8cb760..991ad02b 100644
--- a/topics/grammars/java/jls1/Makefile
+++ b/topics/grammars/java/jls1/Makefile
@@ -25,8 +25,8 @@ read:
test:
../../../../shared/tools/checkxml bgf impl1.bgf
../../../../shared/tools/checkxml bgf read1.bgf
- ../../../../shared/tools/gdts impl1.bgf extracted-implementable-grammar.bgf
- ../../../../shared/tools/gdts read1.bgf extracted-readable-grammar.bgf
+ ../../../../shared/tools/gdt impl1.bgf extracted-implementable-grammar.bgf
+ ../../../../shared/tools/gdt read1.bgf extracted-readable-grammar.bgf
clean:
rm -f *.bgf parse.html
diff --git a/topics/grammars/java/jls2/Makefile b/topics/grammars/java/jls2/Makefile
index 76f93a77..9ca35779 100644
--- a/topics/grammars/java/jls2/Makefile
+++ b/topics/grammars/java/jls2/Makefile
@@ -23,8 +23,8 @@ read:
test:
../../../../shared/tools/checkxml bgf impl2.bgf
../../../../shared/tools/checkxml bgf read2.bgf
- ../../../../shared/tools/gdts impl2.bgf extracted-implementable-grammar.bgf
- ../../../../shared/tools/gdts read2.bgf extracted-readable-grammar.bgf
+ ../../../../shared/tools/gdt impl2.bgf extracted-implementable-grammar.bgf
+ ../../../../shared/tools/gdt read2.bgf extracted-readable-grammar.bgf
clean:
rm -f *.bgf parse.html
diff --git a/topics/grammars/java/jls3/Makefile b/topics/grammars/java/jls3/Makefile
index 2dc8ed01..875e4b30 100644
--- a/topics/grammars/java/jls3/Makefile
+++ b/topics/grammars/java/jls3/Makefile
@@ -23,8 +23,8 @@ read:
test:
../../../../shared/tools/checkxml bgf impl3.bgf
../../../../shared/tools/checkxml bgf read3.bgf
- ../../../../shared/tools/gdts impl3.bgf extracted-implementable-grammar.bgf
- ../../../../shared/tools/gdts read3.bgf extracted-readable-grammar.bgf
+ ../../../../shared/tools/gdt impl3.bgf extracted-implementable-grammar.bgf
+ ../../../../shared/tools/gdt read3.bgf extracted-readable-grammar.bgf
clean:
rm -f *.bgf parse.html