Browse Source

Rewrite AST node grammar productions in W3C EBNF

The grammar-production doc comments were transcribed in ANTLR style and
often copied the C# spec verbatim, including sub-rules the AST does not
model. Rewrite them as W3C EBNF (::=, ?, *, +), unroll sub-productions
that are not themselves AST nodes (e.g. anonymous_function_modifier ->
'async'), and shape each production to the node's actual members. Render
top-level alternations of node productions as multi-line <code> blocks;
keep operator and keyword token lists inline.

Assisted-by: Claude:claude-opus-4-8:Claude Code
pull/3807/head
Siegfried Pammer 3 weeks ago committed by Siegfried Pammer
parent
commit
1faa499f73
  1. 10
      ICSharpCode.Decompiler/CSharp/Syntax/ComposedType.cs
  2. 7
      ICSharpCode.Decompiler/CSharp/Syntax/DocumentationReference.cs
  3. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/AnonymousMethodExpression.cs
  4. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/AnonymousTypeCreateExpression.cs
  5. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ArrayCreateExpression.cs
  6. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ArrayInitializerExpression.cs
  7. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/AsExpression.cs
  8. 4
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/AssignmentExpression.cs
  9. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/BaseReferenceExpression.cs
  10. 4
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/BinaryOperatorExpression.cs
  11. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/CastExpression.cs
  12. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/CheckedExpression.cs
  13. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ConditionalExpression.cs
  14. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/DeclarationExpression.cs
  15. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/DefaultValueExpression.cs
  16. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/DirectionExpression.cs
  17. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ErrorExpression.cs
  18. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/IdentifierExpression.cs
  19. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/IndexerExpression.cs
  20. 14
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/InterpolatedStringExpression.cs
  21. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/InvocationExpression.cs
  22. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/IsExpression.cs
  23. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/LambdaExpression.cs
  24. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/MemberReferenceExpression.cs
  25. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/NamedArgumentExpression.cs
  26. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/NullReferenceExpression.cs
  27. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ObjectCreateExpression.cs
  28. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/OutVarDeclarationExpression.cs
  29. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ParenthesizedExpression.cs
  30. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/PointerReferenceExpression.cs
  31. 11
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/PrimitiveExpression.cs
  32. 26
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/QueryExpression.cs
  33. 8
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/RecursivePatternExpression.cs
  34. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/SizeOfExpression.cs
  35. 7
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/StackAllocExpression.cs
  36. 4
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/SwitchExpression.cs
  37. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ThisReferenceExpression.cs
  38. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ThrowExpression.cs
  39. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/TupleExpression.cs
  40. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/TypeOfExpression.cs
  41. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/TypeReferenceExpression.cs
  42. 11
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/UnaryOperatorExpression.cs
  43. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/UncheckedExpression.cs
  44. 9
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/UndocumentedExpression.cs
  45. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/WithInitializerExpression.cs
  46. 2
      ICSharpCode.Decompiler/CSharp/Syntax/FunctionPointerAstType.cs
  47. 2
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/Attribute.cs
  48. 3
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/AttributeSection.cs
  49. 2
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/Comment.cs
  50. 2
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/Constraint.cs
  51. 2
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/DelegateDeclaration.cs
  52. 2
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/ExternAliasDeclaration.cs
  53. 8
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/NamespaceDeclaration.cs
  54. 6
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/PreProcessorDirective.cs
  55. 5
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/TypeDeclaration.cs
  56. 3
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/TypeParameterDeclaration.cs
  57. 2
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/UsingAliasDeclaration.cs
  58. 8
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/UsingDeclaration.cs
  59. 8
      ICSharpCode.Decompiler/CSharp/Syntax/Identifier.cs
  60. 2
      ICSharpCode.Decompiler/CSharp/Syntax/InvocationAstType.cs
  61. 2
      ICSharpCode.Decompiler/CSharp/Syntax/MemberType.cs
  62. 4
      ICSharpCode.Decompiler/CSharp/Syntax/PrimitiveType.cs
  63. 2
      ICSharpCode.Decompiler/CSharp/Syntax/SimpleType.cs
  64. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/BlockStatement.cs
  65. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/BreakStatement.cs
  66. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/CheckedStatement.cs
  67. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/ContinueStatement.cs
  68. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/DoWhileStatement.cs
  69. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/EmptyStatement.cs
  70. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/ExpressionStatement.cs
  71. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/FixedStatement.cs
  72. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/ForStatement.cs
  73. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/ForeachStatement.cs
  74. 6
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/GotoStatement.cs
  75. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/IfElseStatement.cs
  76. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/LabelStatement.cs
  77. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/LocalFunctionDeclarationStatement.cs
  78. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/LockStatement.cs
  79. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/ReturnStatement.cs
  80. 6
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/SwitchStatement.cs
  81. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/ThrowStatement.cs
  82. 5
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/TryCatchStatement.cs
  83. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/UncheckedStatement.cs
  84. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/UnsafeStatement.cs
  85. 3
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/UsingStatement.cs
  86. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/VariableDeclarationStatement.cs
  87. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/WhileStatement.cs
  88. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/YieldBreakStatement.cs
  89. 2
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/YieldReturnStatement.cs
  90. 2
      ICSharpCode.Decompiler/CSharp/Syntax/SyntaxTree.cs
  91. 4
      ICSharpCode.Decompiler/CSharp/Syntax/TupleAstType.cs
  92. 5
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/ConstructorDeclaration.cs
  93. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/DestructorDeclaration.cs
  94. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/EnumMemberDeclaration.cs
  95. 4
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/EventDeclaration.cs
  96. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/ExtensionDeclaration.cs
  97. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/FieldDeclaration.cs
  98. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/FixedFieldDeclaration.cs
  99. 2
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/FixedVariableInitializer.cs
  100. 7
      ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/IndexerDeclaration.cs
  101. Some files were not shown because too many files have changed in this diff Show More

10
ICSharpCode.Decompiler/CSharp/Syntax/ComposedType.cs

@ -33,10 +33,10 @@ using ICSharpCode.Decompiler.CSharp.OutputVisitor; @@ -33,10 +33,10 @@ using ICSharpCode.Decompiler.CSharp.OutputVisitor;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>array_type : non_array_type rank_specifier+ ;</c> (C# grammar §8.2.1)
/// <c>pointer_type : dataptr_type | funcptr_type | voidptr_type ;</c> (C# grammar §24.3.1)
/// <c>nullable_reference_type : non_nullable_reference_type nullable_type_annotation ;</c> (C# grammar §8.2.1)
/// <c>nullable_value_type : non_nullable_value_type nullable_type_annotation ;</c> (C# grammar §8.3.1)
/// <c>array_type ::= non_array_type rank_specifier+</c> (C# grammar §8.2.1)
/// <c>pointer_type ::= dataptr_type | funcptr_type | voidptr_type</c> (C# grammar §24.3.1)
/// <c>nullable_reference_type ::= non_nullable_reference_type nullable_type_annotation</c> (C# grammar §8.2.1)
/// <c>nullable_value_type ::= non_nullable_value_type nullable_type_annotation</c> (C# grammar §8.3.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ComposedType : AstType
@ -150,7 +150,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -150,7 +150,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>rank_specifier : '[' ','* ']' ;</c> (C# grammar §8.2.1)
/// <c>rank_specifier ::= '[' ','* ']'</c> (C# grammar §8.2.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ArraySpecifier : AstNode

7
ICSharpCode.Decompiler/CSharp/Syntax/DocumentationReference.cs

@ -22,7 +22,12 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -22,7 +22,12 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// No C# spec grammar production: this models a 'cref' reference inside XML documentation comments, not C# source syntax.
/// <c>documentation_reference : type_name | type_name '.' member_name | member_name ;</c>
/// <code>
/// documentation_reference ::=
/// type_name
/// | type_name '.' member_name
/// | member_name
/// </code>
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class DocumentationReference : AstNode

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/AnonymousMethodExpression.cs

@ -30,7 +30,7 @@ using System.Linq; @@ -30,7 +30,7 @@ using System.Linq;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>anonymous_method_expression : anonymous_function_modifier? 'delegate' explicit_anonymous_function_signature? block ;</c> (C# grammar §12.22.1)
/// <c>anonymous_method_expression ::= 'async'? 'delegate' parameter* block</c> (C# grammar §12.22.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class AnonymousMethodExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/AnonymousTypeCreateExpression.cs

@ -28,7 +28,7 @@ using System.Collections.Generic; @@ -28,7 +28,7 @@ using System.Collections.Generic;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>anonymous_object_creation_expression : 'new' anonymous_object_initializer ;</c> (C# grammar §12.8.17.4)
/// <c>anonymous_object_creation_expression ::= 'new' '{' expression* '}'</c> (C# grammar §12.8.17.4)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class AnonymousTypeCreateExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ArrayCreateExpression.cs

@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>array_creation_expression : 'new' non_array_type '[' expression_list ']' rank_specifier* array_initializer? | 'new' array_type array_initializer | 'new' rank_specifier array_initializer ;</c> (C# grammar §12.8.17.5)
/// <c>array_creation_expression ::= 'new' type '[' expression* ']' array_specifier* array_initializer?</c> (C# grammar §12.8.17.5)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ArrayCreateExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ArrayInitializerExpression.cs

@ -29,7 +29,7 @@ using System.Collections.Generic; @@ -29,7 +29,7 @@ using System.Collections.Generic;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>array_initializer : '{' variable_initializer_list? '}' | '{' variable_initializer_list ',' '}' ;</c> (C# grammar §17.7)
/// <c>array_initializer ::= '{' expression* '}'</c> (C# grammar §17.7)
/// </summary>
[DecompilerAstNode(hasNullNode: true, hasPatternPlaceholder: true)]
public partial class ArrayInitializerExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/AsExpression.cs

@ -27,7 +27,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -27,7 +27,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// Operator precedence is not represented in the syntax tree; required parentheses are reconstructed by <see cref="ICSharpCode.Decompiler.CSharp.OutputVisitor.InsertParenthesesVisitor"/>.
/// <c>as_expression : expression 'as' type ;</c> (C# grammar §12.15.1)
/// <c>as_expression ::= expression 'as' type</c> (C# grammar §12.15.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class AsExpression : Expression

4
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/AssignmentExpression.cs

@ -31,8 +31,8 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -31,8 +31,8 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// Operator precedence is not represented in the syntax tree; required parentheses are reconstructed by <see cref="ICSharpCode.Decompiler.CSharp.OutputVisitor.InsertParenthesesVisitor"/>.
/// <c>assignment_expression : expression assignment_operator expression ;</c> (C# grammar §12.24)
/// <c>assignment_operator : '=' | '+=' | '-=' | '*=' | '/=' | '%=' | '&lt;&lt;=' | '&gt;&gt;=' | '&gt;&gt;&gt;=' | '&amp;=' | '|=' | '^=' ;</c>
/// <c>assignment_expression ::= expression assignment_operator expression</c> (C# grammar §12.24)
/// <c>assignment_operator ::= '=' | '+=' | '-=' | '*=' | '/=' | '%=' | '&lt;&lt;=' | '&gt;&gt;=' | '&gt;&gt;&gt;=' | '&amp;=' | '|=' | '^='</c>
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class AssignmentExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/BaseReferenceExpression.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>base_access : 'base' '.' identifier type_argument_list? | 'base' '[' argument_list ']' ;</c> (C# grammar §12.8.15)
/// <c>base_access ::= 'base'</c> (C# grammar §12.8.15)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class BaseReferenceExpression : Expression

4
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/BinaryOperatorExpression.cs

@ -31,8 +31,8 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -31,8 +31,8 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// Operator precedence is not represented in the syntax tree; required parentheses are reconstructed by <see cref="ICSharpCode.Decompiler.CSharp.OutputVisitor.InsertParenthesesVisitor"/>.
/// <c>binary_operator_expression : expression binary_operator expression ;</c> (C# grammar §12.13-§12.18, precedence-flattened)
/// <c>binary_operator : '*' | '/' | '%' | '+' | '-' | '&lt;&lt;' | '&gt;&gt;' | '&gt;&gt;&gt;' | '&lt;' | '&gt;' | '&lt;=' | '&gt;=' | '==' | '!=' | '&amp;' | '^' | '|' | '&amp;&amp;' | '||' | '??' | '..' ;</c>
/// <c>binary_operator_expression ::= expression binary_operator expression</c> (C# grammar §12.13-§12.18, precedence-flattened)
/// <c>binary_operator ::= '*' | '/' | '%' | '+' | '-' | '&lt;&lt;' | '&gt;&gt;' | '&gt;&gt;&gt;' | '&lt;' | '&gt;' | '&lt;=' | '&gt;=' | '==' | '!=' | '&amp;' | '^' | '|' | '&amp;&amp;' | '||' | '??' | '..'</c>
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class BinaryOperatorExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/CastExpression.cs

@ -26,7 +26,7 @@ @@ -26,7 +26,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>cast_expression : '(' type ')' unary_expression ;</c> (C# grammar §12.9.8)
/// <c>cast_expression ::= '(' type ')' expression</c> (C# grammar §12.9.8)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class CastExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/CheckedExpression.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>checked_expression : 'checked' '(' expression ')' ;</c> (C# grammar §12.8.20)
/// <c>checked_expression ::= 'checked' '(' expression ')'</c> (C# grammar §12.8.20)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class CheckedExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ConditionalExpression.cs

@ -27,7 +27,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -27,7 +27,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// Operator precedence is not represented in the syntax tree; required parentheses are reconstructed by <see cref="ICSharpCode.Decompiler.CSharp.OutputVisitor.InsertParenthesesVisitor"/>.
/// <c>conditional_expression : expression '?' expression ':' expression ;</c> (C# grammar §12.21)
/// <c>conditional_expression ::= expression '?' expression ':' expression</c> (C# grammar §12.21)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ConditionalExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/DeclarationExpression.cs

@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>declaration_expression : 'scoped'? local_variable_type identifier ;</c> (C# grammar §12.20)
/// <c>declaration_expression ::= type variable_designation</c> (C# grammar §12.20)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class DeclarationExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/DefaultValueExpression.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>default_value_expression : explicitly_typed_default | default_literal ;</c> (C# grammar §12.8.21)
/// <c>default_value_expression ::= 'default' ( '(' type ')' )?</c> (C# grammar §12.8.21)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class DefaultValueExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/DirectionExpression.cs

@ -35,7 +35,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -35,7 +35,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>argument_value : expression | 'in' 'scoped'? variable_reference | 'ref' 'scoped'? variable_reference | 'out' 'scoped'? variable_reference ;</c> (C# grammar §12.6.2.1)
/// <c>argument_value ::= ( 'ref' | 'out' | 'in' )? expression</c> (C# grammar §12.6.2.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class DirectionExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ErrorExpression.cs

@ -27,7 +27,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -27,7 +27,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// No C# spec grammar production: placeholder inserted when the AST is built from input that does not parse as valid C#.
/// <c>error_expression : /* unparseable input */ ;</c>
/// <c>error_expression ::= /* unparseable input */</c>
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ErrorExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/IdentifierExpression.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>simple_name : identifier type_argument_list? ;</c> (C# grammar §12.8.4)
/// <c>simple_name ::= identifier ( '&lt;' type ( ',' type )* '&gt;' )?</c> (C# grammar §12.8.4)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class IdentifierExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/IndexerExpression.cs

@ -29,7 +29,7 @@ using System.Collections.Generic; @@ -29,7 +29,7 @@ using System.Collections.Generic;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>element_access : primary_expression '[' argument_list ']' ;</c> (C# grammar §12.8.12.1)
/// <c>element_access ::= expression '[' expression* ']'</c> (C# grammar §12.8.12.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class IndexerExpression : Expression

14
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/InterpolatedStringExpression.cs

@ -3,7 +3,7 @@ using System.Collections.Generic; @@ -3,7 +3,7 @@ using System.Collections.Generic;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>interpolated_string_expression : interpolated_regular_string_expression | interpolated_verbatim_string_expression | interpolated_raw_string_expression ;</c> (C# grammar §12.8.3)
/// <c>interpolated_string_expression ::= interpolated_string_content*</c> (C# grammar §12.8.3)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class InterpolatedStringExpression : Expression
@ -25,6 +25,14 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -25,6 +25,14 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
}
/// <summary>
/// <code>
/// interpolated_string_content ::=
/// interpolation
/// | interpolated_string_text
/// </code>
/// (C# grammar §12.8.3)
/// </summary>
[DecompilerAstNode(hasNullNode: true)]
public abstract partial class InterpolatedStringContent : AstNode
{
@ -34,7 +42,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -34,7 +42,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>regular_interpolation : expression (',' interpolation_minimum_width)? Regular_Interpolation_Format? ;</c> (C# grammar §12.8.3)
/// <c>interpolation ::= '{' expression ( ',' alignment )? ( ':' format )? '}'</c> (C# grammar §12.8.3)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class Interpolation : InterpolatedStringContent
@ -63,7 +71,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -63,7 +71,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>Interpolated_Regular_String_Mid : Interpolated_Regular_String_Element+ ;</c> (C# lexical grammar §12.8.3)
/// <c>interpolated_string_text ::= text_character+</c> (C# lexical grammar §12.8.3)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class InterpolatedStringText : InterpolatedStringContent

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/InvocationExpression.cs

@ -29,7 +29,7 @@ using System.Collections.Generic; @@ -29,7 +29,7 @@ using System.Collections.Generic;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>invocation_expression : primary_expression '(' argument_list? ')' ;</c> (C# grammar §12.8.10.1)
/// <c>invocation_expression ::= expression '(' expression* ')'</c> (C# grammar §12.8.10.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class InvocationExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/IsExpression.cs

@ -28,7 +28,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -28,7 +28,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// Operator precedence is not represented in the syntax tree; required parentheses are reconstructed by <see cref="ICSharpCode.Decompiler.CSharp.OutputVisitor.InsertParenthesesVisitor"/>.
/// <c>is_expression : expression 'is' (type | pattern) ;</c> (C# grammar §12.15.1)
/// <c>is_expression ::= expression 'is' type</c> (C# grammar §12.15.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class IsExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/LambdaExpression.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>lambda_expression : attributes? anonymous_function_modifier? (return_type | ref_kind ref_return_type)? anonymous_function_signature '=&gt;' anonymous_function_body ;</c> (C# grammar §12.22.1)
/// <c>lambda_expression ::= attribute_section* 'async'? parameter* '=&gt;' ( block | expression )</c> (C# grammar §12.22.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class LambdaExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/MemberReferenceExpression.cs

@ -29,7 +29,7 @@ using System.Collections.Generic; @@ -29,7 +29,7 @@ using System.Collections.Generic;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>member_access : primary_expression '.' identifier type_argument_list? | predefined_type '.' identifier type_argument_list? | qualified_alias_member '.' identifier type_argument_list? ;</c> (C# grammar §12.8.7.1)
/// <c>member_reference_expression ::= expression '.' identifier ( '&lt;' type ( ',' type )* '&gt;' )?</c> (C# grammar §12.8.7.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class MemberReferenceExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/NamedArgumentExpression.cs

@ -20,7 +20,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -20,7 +20,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// Represents a named argument passed to a method or attribute.
/// <c>argument : argument_name? argument_value ;</c> (C# grammar §12.6.2.1)
/// <c>named_argument_expression ::= identifier ':' expression</c> (C# grammar §12.6.2.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class NamedArgumentExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/NullReferenceExpression.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>literal : boolean_literal | Integer_Literal | Real_Literal | Character_Literal | String_Literal | null_literal ;</c> (C# grammar §6.4.5.1)
/// <c>null_reference_expression ::= 'null'</c> (C# grammar §6.4.5.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class NullReferenceExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ObjectCreateExpression.cs

@ -29,7 +29,7 @@ using System.Collections.Generic; @@ -29,7 +29,7 @@ using System.Collections.Generic;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>object_creation_expression : 'new' type '(' argument_list? ')' object_or_collection_initializer? | 'new' type object_or_collection_initializer | target_typed_new ;</c> (C# grammar §12.8.17.2.1)
/// <c>object_create_expression ::= 'new' type '(' expression* ')' array_initializer_expression?</c> (C# grammar §12.8.17.2.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ObjectCreateExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/OutVarDeclarationExpression.cs

@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>declaration_expression : 'scoped'? local_variable_type identifier ;</c> (C# grammar §12.20)
/// <c>out_var_declaration_expression ::= type variable_initializer</c> (C# grammar §12.20)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class OutVarDeclarationExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ParenthesizedExpression.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>parenthesized_expression : '(' expression ')' ;</c> (C# grammar §12.8.5)
/// <c>parenthesized_expression ::= '(' expression ')'</c> (C# grammar §12.8.5)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ParenthesizedExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/PointerReferenceExpression.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>pointer_member_access : primary_expression '-&gt;' identifier type_argument_list? ;</c> (C# grammar §24.6.3)
/// <c>pointer_member_access ::= expression '-&gt;' identifier ( '&lt;' type ( ',' type )* '&gt;' )?</c> (C# grammar §24.6.3)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class PointerReferenceExpression : Expression

11
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/PrimitiveExpression.cs

@ -45,7 +45,16 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -45,7 +45,16 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
/// <summary>
/// Represents a literal value.
/// <c>literal : boolean_literal | Integer_Literal | Real_Literal | Character_Literal | String_Literal | null_literal ;</c> (C# grammar §6.4.5.1)
/// <code>
/// literal ::=
/// boolean_literal
/// | integer_literal
/// | real_literal
/// | character_literal
/// | string_literal
/// | null_literal
/// </code>
/// (C# grammar §6.4.5.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class PrimitiveExpression : Expression

26
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/QueryExpression.cs

@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>query_expression : from_clause query_body ;</c> (C# grammar §12.23.1)
/// <c>query_expression ::= query_clause+</c> (C# grammar §12.23.1)
/// </summary>
[DecompilerAstNode(hasNullNode: true)]
public partial class QueryExpression : Expression
@ -47,7 +47,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -47,7 +47,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
/// Represents a query continuation, e.g. "(from .. select ..) into Identifier".
/// Note that "join .. into .." is not a query continuation.
/// A continuation is always the first clause of the query expression that contains it.
/// <c>query_continuation : 'into' identifier query_body ;</c> (C# grammar §12.23.1)
/// <c>query_continuation ::= query_expression 'into' identifier</c> (C# grammar §12.23.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class QueryContinuationClause : QueryClause
@ -78,7 +78,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -78,7 +78,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>from_clause : 'from' type? identifier 'in' expression ;</c> (C# grammar §12.23.1)
/// <c>from_clause ::= 'from' type? identifier 'in' expression</c> (C# grammar §12.23.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class QueryFromClause : QueryClause
@ -113,7 +113,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -113,7 +113,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>let_clause : 'let' identifier '=' expression ;</c> (C# grammar §12.23.1)
/// <c>let_clause ::= 'let' identifier '=' expression</c> (C# grammar §12.23.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class QueryLetClause : QueryClause
@ -144,7 +144,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -144,7 +144,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
/// <summary>
/// <c>where_clause : 'where' boolean_expression ;</c> (C# grammar §12.23.1)
/// <c>where_clause ::= 'where' expression</c> (C# grammar §12.23.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class QueryWhereClause : QueryClause
@ -163,8 +163,12 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -163,8 +163,12 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
/// <summary>
/// Represents a join or group join clause.
/// <c>join_clause : 'join' type? identifier 'in' expression 'on' expression 'equals' expression ;</c> (C# grammar §12.23.1)
/// <c>join_into_clause : 'join' type? identifier 'in' expression 'on' expression 'equals' expression 'into' identifier ;</c> (C# grammar §12.23.1)
/// <code>
/// join_clause ::=
/// 'join' type? identifier 'in' expression 'on' expression 'equals' expression
/// | 'join' type? identifier 'in' expression 'on' expression 'equals' expression 'into' identifier
/// </code>
/// (C# grammar §12.23.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class QueryJoinClause : QueryClause
@ -233,7 +237,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -233,7 +237,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>orderby_clause : 'orderby' orderings ;</c> (C# grammar §12.23.1)
/// <c>orderby_clause ::= 'orderby' ordering ( ',' ordering )*</c> (C# grammar §12.23.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class QueryOrderClause : QueryClause
@ -252,7 +256,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -252,7 +256,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>ordering : expression ordering_direction? ;</c> (C# grammar §12.23.1)
/// <c>ordering ::= expression ( 'ascending' | 'descending' )?</c> (C# grammar §12.23.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class QueryOrdering : AstNode
@ -287,7 +291,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -287,7 +291,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>select_clause : 'select' expression ;</c> (C# grammar §12.23.1)
/// <c>select_clause ::= 'select' expression</c> (C# grammar §12.23.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class QuerySelectClause : QueryClause
@ -305,7 +309,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -305,7 +309,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>group_clause : 'group' expression 'by' expression ;</c> (C# grammar §12.23.1)
/// <c>group_clause ::= 'group' expression 'by' expression</c> (C# grammar §12.23.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class QueryGroupClause : QueryClause

8
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/RecursivePatternExpression.cs

@ -21,8 +21,12 @@ using ICSharpCode.Decompiler.CSharp.Syntax.PatternMatching; @@ -21,8 +21,12 @@ using ICSharpCode.Decompiler.CSharp.Syntax.PatternMatching;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>property_pattern : type? property_subpattern simple_designation? ;</c> (C# grammar §11.2.6)
/// <c>positional_pattern : type? '(' subpatterns? ')' property_subpattern? simple_designation? ;</c> (C# grammar §11.2.5)
/// <code>
/// recursive_pattern ::=
/// type? '{' pattern* '}' variable_designation?
/// | type? '(' pattern* ')' variable_designation?
/// </code>
/// (C# grammar §11.2.5, §11.2.6)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class RecursivePatternExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/SizeOfExpression.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>sizeof_expression : 'sizeof' '(' unmanaged_type ')' ;</c> (C# grammar §12.8.19)
/// <c>sizeof_expression ::= 'sizeof' '(' type ')'</c> (C# grammar §12.8.19)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class SizeOfExpression : Expression

7
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/StackAllocExpression.cs

@ -27,7 +27,12 @@ @@ -27,7 +27,12 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>stackalloc_expression : 'stackalloc' unmanaged_type '[' expression ']' | 'stackalloc' unmanaged_type? '[' constant_expression? ']' stackalloc_initializer ;</c> (C# grammar §12.8.22)
/// <code>
/// stackalloc_expression ::=
/// 'stackalloc' type '[' expression ']'
/// | 'stackalloc' type? '[' expression? ']' array_initializer
/// </code>
/// (C# grammar §12.8.22)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class StackAllocExpression : Expression

4
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/SwitchExpression.cs

@ -20,7 +20,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -20,7 +20,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// Operator precedence is not represented in the syntax tree; required parentheses are reconstructed by <see cref="ICSharpCode.Decompiler.CSharp.OutputVisitor.InsertParenthesesVisitor"/>.
/// <c>switch_expression : expression 'switch' '{' switch_expression_arms? '}' ;</c> (C# grammar §12.12)
/// <c>switch_expression ::= expression 'switch' '{' switch_expression_arm* '}'</c> (C# grammar §12.12)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class SwitchExpression : Expression
@ -42,7 +42,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -42,7 +42,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>switch_expression_arm : pattern case_guard? '=&gt;' switch_expression_arm_expression ;</c> (C# grammar §12.12)
/// <c>switch_expression_arm ::= pattern '=&gt;' expression</c> (C# grammar §12.12)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class SwitchExpressionSection : AstNode

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ThisReferenceExpression.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>this_access : 'this' ;</c> (C# grammar §12.8.14)
/// <c>this_access ::= 'this'</c> (C# grammar §12.8.14)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ThisReferenceExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ThrowExpression.cs

@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>throw_expression : 'throw' null_coalescing_expression ;</c> (C# grammar §12.19)
/// <c>throw_expression ::= 'throw' expression</c> (C# grammar §12.19)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ThrowExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/TupleExpression.cs

@ -21,7 +21,7 @@ using ICSharpCode.Decompiler.CSharp.Syntax.PatternMatching; @@ -21,7 +21,7 @@ using ICSharpCode.Decompiler.CSharp.Syntax.PatternMatching;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>tuple_literal : '(' tuple_element (',' tuple_element)+ ')' ;</c> (C# grammar §12.8.6)
/// <c>tuple_literal ::= '(' expression ( ',' expression )+ ')'</c> (C# grammar §12.8.6)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class TupleExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/TypeOfExpression.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>typeof_expression : 'typeof' '(' type ')' | 'typeof' '(' unbound_type_name ')' | 'typeof' '(' 'void' ')' ;</c> (C# grammar §12.8.18)
/// <c>typeof_expression ::= 'typeof' '(' type ')'</c> (C# grammar §12.8.18)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class TypeOfExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/TypeReferenceExpression.cs

@ -20,7 +20,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -20,7 +20,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// No C# spec grammar production: ILSpy wrapper that lets an AstType appear in expression position (e.g. the 'int' in 'int.Parse(...)').
/// <c>type_reference_expression : type ;</c>
/// <c>type_reference_expression ::= type</c>
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class TypeReferenceExpression : Expression

11
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/UnaryOperatorExpression.cs

@ -31,9 +31,14 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -31,9 +31,14 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// Operator precedence is not represented in the syntax tree; required parentheses are reconstructed by <see cref="ICSharpCode.Decompiler.CSharp.OutputVisitor.InsertParenthesesVisitor"/>.
/// <c>unary_operator_expression : unary_operator expression | expression postfix_unary_operator ;</c> (C# grammar §12.9, §12.8.16)
/// <c>unary_operator : '+' | '-' | '!' | '~' | '++' | '--' | '*' | '&amp;' | '^' | 'await' ;</c>
/// <c>postfix_unary_operator : '++' | '--' | '!' | '?' ;</c>
/// <code>
/// unary_operator_expression ::=
/// unary_operator expression
/// | expression postfix_unary_operator
/// </code>
/// (C# grammar §12.9, §12.8.16)
/// <c>unary_operator ::= '+' | '-' | '!' | '~' | '++' | '--' | '*' | '&amp;' | '^' | 'await'</c>
/// <c>postfix_unary_operator ::= '++' | '--' | '!' | '?'</c>
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class UnaryOperatorExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/UncheckedExpression.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>unchecked_expression : 'unchecked' '(' expression ')' ;</c> (C# grammar §12.8.20)
/// <c>unchecked_expression ::= 'unchecked' '(' expression ')'</c> (C# grammar §12.8.20)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class UncheckedExpression : Expression

9
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/UndocumentedExpression.cs

@ -37,7 +37,14 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -37,7 +37,14 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
/// <summary>
/// No C# spec grammar production: the undocumented compiler keywords __arglist, __refvalue, __reftype and __makeref.
/// <c>undocumented_expression : '__arglist' | '__arglist' '(' argument_list? ')' | '__refvalue' '(' expression ',' type ')' | '__reftype' '(' expression ')' | '__makeref' '(' expression ')' ;</c>
/// <code>
/// undocumented_expression ::=
/// '__arglist'
/// | '__arglist' '(' expression* ')'
/// | '__refvalue' '(' expression ',' type ')'
/// | '__reftype' '(' expression ')'
/// | '__makeref' '(' expression ')'
/// </code>
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class UndocumentedExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/WithInitializerExpression.cs

@ -22,7 +22,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -22,7 +22,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// Operator precedence is not represented in the syntax tree; required parentheses are reconstructed by <see cref="ICSharpCode.Decompiler.CSharp.OutputVisitor.InsertParenthesesVisitor"/>.
/// <c>with_expression : expression 'with' '{' member_initializer_list? '}' ;</c> (C# grammar §12.10)
/// <c>with_expression ::= expression 'with' array_initializer</c> (C# grammar §12.10)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class WithInitializerExpression : Expression

2
ICSharpCode.Decompiler/CSharp/Syntax/FunctionPointerAstType.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>funcptr_type : 'delegate' '*' calling_convention_specifier? '&lt;' funcptr_parameter_list funcptr_return_type '&gt;' ;</c> (C# grammar §24.3.3)
/// <c>funcptr_type ::= 'delegate' '*' calling_convention_specifier? '&lt;' funcptr_parameter_list funcptr_return_type '&gt;'</c> (C# grammar §24.3.3)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class FunctionPointerAstType : AstType

2
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/Attribute.cs

@ -29,7 +29,7 @@ using ICSharpCode.Decompiler.CSharp.OutputVisitor; @@ -29,7 +29,7 @@ using ICSharpCode.Decompiler.CSharp.OutputVisitor;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>attribute : attribute_name attribute_arguments? ;</c> (C# grammar §23.3)
/// <c>attribute ::= type ( '(' expression* ')' )?</c> (C# grammar §23.3)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class Attribute : AstNode

3
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/AttributeSection.cs

@ -27,8 +27,7 @@ @@ -27,8 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>attribute_section : '[' attribute_target_specifier? attribute_list ']' ;</c> (C# grammar §23.3)
/// <c>global_attribute_section : '[' global_attribute_target_specifier attribute_list ']' ;</c> (C# grammar §23.3)
/// <c>attribute_section ::= '[' ( identifier ':' )? attribute* ']'</c> (C# grammar §23.3)
/// </summary>
[DecompilerAstNode(hasNullNode: false, hasPatternPlaceholder: true)]
public partial class AttributeSection : AstNode

2
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/Comment.cs

@ -51,7 +51,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -51,7 +51,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>Comment : Single_Line_Comment | Delimited_Comment ;</c> (C# lexical grammar §6.3.3)
/// <c>comment ::= '//' input_character* | '/*' input_character* '*/'</c> (C# lexical grammar §6.3.3)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class Comment : Trivia

2
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/Constraint.cs

@ -28,7 +28,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -28,7 +28,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// new(), struct and class constraints are represented using a PrimitiveType "new", "struct" or "class".
/// <c>type_parameter_constraints_clause : 'where' type_parameter ':' type_parameter_constraints ;</c> (C# grammar §15.2.5)
/// <c>type_parameter_constraints_clause ::= 'where' type ':' type+</c> (C# grammar §15.2.5)
/// </summary>
[DecompilerAstNode(hasNullNode: true)]
public partial class Constraint : AstNode

2
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/DelegateDeclaration.cs

@ -29,7 +29,7 @@ using ICSharpCode.Decompiler.TypeSystem; @@ -29,7 +29,7 @@ using ICSharpCode.Decompiler.TypeSystem;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>delegate_declaration : attributes? delegate_modifier* 'delegate' return_type delegate_header | attributes? delegate_modifier* 'delegate' ref_kind ref_return_type delegate_header ;</c> (C# grammar §21.2)
/// <c>delegate_declaration ::= attribute_section* modifier* 'delegate' ( 'ref' 'readonly'? )? type identifier type_parameter* '(' parameter* ')' constraint*</c> (C# grammar §21.2)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class DelegateDeclaration : EntityDeclaration

2
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/ExternAliasDeclaration.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>extern_alias_directive : 'extern' 'alias' identifier ';' ;</c> (C# grammar §14.4)
/// <c>extern_alias_directive ::= 'extern' 'alias' identifier ';'</c> (C# grammar §14.4)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ExternAliasDeclaration : AstNode

8
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/NamespaceDeclaration.cs

@ -29,8 +29,12 @@ using System.Collections.Generic; @@ -29,8 +29,12 @@ using System.Collections.Generic;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>namespace_declaration : 'namespace' qualified_identifier namespace_body ';'? ;</c> (C# grammar §14.3)
/// <c>file_scoped_namespace_declaration : 'namespace' qualified_identifier ';' extern_alias_directive* using_directive* type_declaration* ;</c> (C# grammar §14.3)
/// <code>
/// namespace_declaration ::=
/// 'namespace' type '{' namespace_member* '}' ';'?
/// | 'namespace' type ';' namespace_member*
/// </code>
/// (C# grammar §14.3)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class NamespaceDeclaration : AstNode

6
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/PreProcessorDirective.cs

@ -47,7 +47,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -47,7 +47,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>fragment PP_Line : 'line' PP_Whitespace PP_Line_Indicator ;</c> (C# lexical grammar)
/// <c>line_directive ::= '#' 'line' ( decimal_digit+ string_literal? | 'default' | 'hidden' )</c> (C# lexical grammar)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class LinePreprocessorDirective : PreProcessorDirective
@ -72,7 +72,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -72,7 +72,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>fragment PP_Pragma : 'pragma' PP_Pragma_Text? ;</c> (C# lexical grammar)
/// <c>pragma_warning_directive ::= '#' 'pragma' 'warning' ( 'disable' | 'restore' ) expression*</c> (C# lexical grammar)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class PragmaWarningPreprocessorDirective : PreProcessorDirective
@ -111,7 +111,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -111,7 +111,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>PP_Directive : PP_Start PP_Kind PP_New_Line ;</c> (C# lexical grammar §6.5.1)
/// <c>pp_directive ::= '#' pp_kind new_line</c> (C# lexical grammar §6.5.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class PreProcessorDirective : Trivia

5
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/TypeDeclaration.cs

@ -45,10 +45,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -45,10 +45,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>class_declaration : attributes? class_modifier* 'partial'? class_tag identifier type_parameter_list? delimited_parameter_list? class_base? type_parameter_constraints_clause* class_body ;</c> (C# grammar §15.2.1)
/// <c>struct_declaration : non_record_struct_declaration | record_struct_declaration ;</c> (C# grammar §16.2.1)
/// <c>interface_declaration : attributes? interface_modifier* 'partial'? 'interface' identifier variant_type_parameter_list? interface_base? type_parameter_constraints_clause* interface_body ';'? ;</c> (C# grammar §19.2.1)
/// <c>enum_declaration : attributes? enum_modifier* 'enum' identifier enum_base? enum_body ';'? ;</c> (C# grammar §20.2)
/// <c>type_declaration ::= attribute_section* modifier* ( 'class' | 'struct' | 'interface' | 'enum' | 'record' 'class'? | 'record' 'struct' ) identifier type_parameter* ( '(' parameter* ')' )? ( ':' type+ )? constraint* '{' member* '}' ';'?</c> (C# grammar §15.2.1, §16.2.1, §19.2.1, §20.2)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class TypeDeclaration : EntityDeclaration

3
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/TypeParameterDeclaration.cs

@ -24,8 +24,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -24,8 +24,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
/// Represents a type parameter.
/// Mirroring the C# syntax, constraints are not part of the type parameter declaration;
/// they belong to the parent type or method.
/// <c>type_parameter : identifier ;</c> (C# grammar §8.5)
/// <c>decorated_type_parameter : attributes? type_parameter ;</c> (C# grammar §15.2.3)
/// <c>type_parameter ::= attribute_section* ( 'in' | 'out' )? identifier</c> (C# grammar §8.5, §15.2.3)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class TypeParameterDeclaration : AstNode

2
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/UsingAliasDeclaration.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>using_alias_directive : 'using' identifier '=' namespace_or_type_name ';' ;</c> (C# grammar §14.6.2)
/// <c>using_alias_directive ::= 'using' identifier '=' type ';'</c> (C# grammar §14.6.2)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class UsingAliasDeclaration : AstNode

8
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/UsingDeclaration.cs

@ -30,8 +30,12 @@ using System.Text; @@ -30,8 +30,12 @@ using System.Text;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>using_namespace_directive : 'using' namespace_name ';' ;</c> (C# grammar §14.6.3)
/// <c>using_static_directive : 'using' 'static' type_name ';' ;</c> (C# grammar §14.6.4)
/// <code>
/// using_directive ::=
/// 'using' type ';'
/// | 'using' 'static' type ';'
/// </code>
/// (C# grammar §14.6.3, §14.6.4)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class UsingDeclaration : AstNode

8
ICSharpCode.Decompiler/CSharp/Syntax/Identifier.cs

@ -29,7 +29,13 @@ using System; @@ -29,7 +29,13 @@ using System;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>identifier : Simple_Identifier | contextual_keyword | discard_token ;</c> (C# lexical grammar §6.4.3)
/// <code>
/// identifier ::=
/// Simple_Identifier
/// | contextual_keyword
/// | discard_token
/// </code>
/// (C# lexical grammar §6.4.3)
/// </summary>
[DecompilerAstNode(hasNullNode: true)]
public partial class Identifier : AstNode

2
ICSharpCode.Decompiler/CSharp/Syntax/InvocationAstType.cs

@ -22,7 +22,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -22,7 +22,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// No C# spec grammar production: ILSpy-internal type form used when a type appears applied to arguments (e.g. an attribute type written with its constructor arguments).
/// <c>invocation_ast_type : type '(' argument_list? ')' ;</c>
/// <c>invocation_ast_type ::= type '(' argument_list? ')'</c>
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class InvocationAstType : AstType

2
ICSharpCode.Decompiler/CSharp/Syntax/MemberType.cs

@ -29,7 +29,7 @@ using System.Collections.Generic; @@ -29,7 +29,7 @@ using System.Collections.Generic;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>namespace_or_type_name : identifier type_argument_list? ('.' identifier type_argument_list?)* | qualified_alias_member ('.' identifier type_argument_list?)* ;</c> (C# grammar §7.8.1)
/// <c>member_type ::= type ( '.' | '::' ) identifier ( '&lt;' type ( ',' type )* '&gt;' )?</c> (C# grammar §7.8.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class MemberType : AstType

4
ICSharpCode.Decompiler/CSharp/Syntax/PrimitiveType.cs

@ -32,8 +32,8 @@ using ICSharpCode.Decompiler.TypeSystem; @@ -32,8 +32,8 @@ using ICSharpCode.Decompiler.TypeSystem;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>predefined_type : 'bool' | 'byte' | 'char' | 'decimal' | 'double' | 'float' | 'int' | 'long' | 'object' | 'sbyte' | 'short' | 'string' | 'uint' | 'ulong' | 'ushort' ;</c> (C# grammar §12.8.7.1)
/// <c>simple_type : numeric_type | 'bool' ;</c> (C# grammar §8.3.1)
/// <c>predefined_type ::= 'bool' | 'byte' | 'char' | 'decimal' | 'double' | 'float' | 'int' | 'long' | 'object' | 'sbyte' | 'short' | 'string' | 'uint' | 'ulong' | 'ushort'</c> (C# grammar §12.8.7.1)
/// <c>simple_type ::= numeric_type | 'bool'</c> (C# grammar §8.3.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class PrimitiveType : AstType

2
ICSharpCode.Decompiler/CSharp/Syntax/SimpleType.cs

@ -29,7 +29,7 @@ using System.Collections.Generic; @@ -29,7 +29,7 @@ using System.Collections.Generic;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>namespace_or_type_name : identifier type_argument_list? ('.' identifier type_argument_list?)* | qualified_alias_member ('.' identifier type_argument_list?)* ;</c> (C# grammar §7.8.1)
/// <c>simple_type ::= identifier ( '&lt;' type ( ',' type )* '&gt;' )?</c> (C# grammar §7.8.1)
/// </summary>
[DecompilerAstNode(hasNullNode: true)]
public partial class SimpleType : AstType

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/BlockStatement.cs

@ -29,7 +29,7 @@ using System.Collections.Generic; @@ -29,7 +29,7 @@ using System.Collections.Generic;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>block : '{' statement_list? '}' ;</c> (C# grammar §13.3.1)
/// <c>block ::= '{' statement* '}'</c> (C# grammar §13.3.1)
/// </summary>
[DecompilerAstNode(hasNullNode: true, hasPatternPlaceholder: true)]
public partial class BlockStatement : Statement, IEnumerable<Statement>

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/BreakStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>break_statement : 'break' ';' ;</c> (C# grammar §13.10.2)
/// <c>break_statement ::= 'break' ';'</c> (C# grammar §13.10.2)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class BreakStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/CheckedStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>checked_statement : 'checked' block ;</c> (C# grammar §13.12)
/// <c>checked_statement ::= 'checked' block</c> (C# grammar §13.12)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class CheckedStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/ContinueStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>continue_statement : 'continue' ';' ;</c> (C# grammar §13.10.3)
/// <c>continue_statement ::= 'continue' ';'</c> (C# grammar §13.10.3)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ContinueStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/DoWhileStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>do_statement : 'do' embedded_statement 'while' '(' boolean_expression ')' ';' ;</c> (C# grammar §13.9.3)
/// <c>do_statement ::= 'do' statement 'while' '(' expression ')' ';'</c> (C# grammar §13.9.3)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class DoWhileStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/EmptyStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>empty_statement : ';' ;</c> (C# grammar §13.4)
/// <c>empty_statement ::= ';'</c> (C# grammar §13.4)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class EmptyStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/ExpressionStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>expression_statement : statement_expression ';' ;</c> (C# grammar §13.7)
/// <c>expression_statement ::= expression ';'</c> (C# grammar §13.7)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ExpressionStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/FixedStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>fixed_statement : 'fixed' '(' pointer_type fixed_pointer_declarators ')' embedded_statement ;</c> (C# grammar §24.7)
/// <c>fixed_statement ::= 'fixed' '(' type variable_initializer* ')' statement</c> (C# grammar §24.7)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class FixedStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/ForStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>for_statement : 'for' '(' for_initializer? ';' for_condition? ';' for_iterator? ')' embedded_statement ;</c> (C# grammar §13.9.4)
/// <c>for_statement ::= 'for' '(' statement* ';' expression? ';' statement* ')' statement</c> (C# grammar §13.9.4)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ForStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/ForeachStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>foreach_statement : 'await'? 'foreach' '(' 'scoped'? ref_kind? local_variable_type identifier 'in' expression ')' embedded_statement ;</c> (C# grammar §13.9.5.1)
/// <c>foreach_statement ::= 'await'? 'foreach' '(' type variable_designation 'in' expression ')' statement</c> (C# grammar §13.9.5.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ForeachStatement : Statement

6
ICSharpCode.Decompiler/CSharp/Syntax/Statements/GotoStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>goto_statement : 'goto' identifier ';' | 'goto' 'case' constant_expression ';' | 'goto' 'default' ';' ;</c> (C# grammar §13.10.4)
/// <c>goto_statement ::= 'goto' identifier ';'</c> (C# grammar §13.10.4)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class GotoStatement : Statement
@ -66,7 +66,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -66,7 +66,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>goto_statement : 'goto' identifier ';' | 'goto' 'case' constant_expression ';' | 'goto' 'default' ';' ;</c> (C# grammar §13.10.4)
/// <c>goto_statement ::= 'goto' 'case' expression ';'</c> (C# grammar §13.10.4)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class GotoCaseStatement : Statement
@ -88,7 +88,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -88,7 +88,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>goto_statement : 'goto' identifier ';' | 'goto' 'case' constant_expression ';' | 'goto' 'default' ';' ;</c> (C# grammar §13.10.4)
/// <c>goto_statement ::= 'goto' 'default' ';'</c> (C# grammar §13.10.4)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class GotoDefaultStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/IfElseStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>if_statement : 'if' '(' boolean_expression ')' embedded_statement | 'if' '(' boolean_expression ')' embedded_statement 'else' embedded_statement ;</c> (C# grammar §13.8.2)
/// <c>if_statement ::= 'if' '(' expression ')' statement ( 'else' statement )?</c> (C# grammar §13.8.2)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class IfElseStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/LabelStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>labeled_statement : identifier ':' statement ;</c> (C# grammar §13.5)
/// <c>labeled_statement ::= identifier ':' statement</c> (C# grammar §13.5)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class LabelStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/LocalFunctionDeclarationStatement.cs

@ -21,7 +21,7 @@ using ICSharpCode.Decompiler.CSharp.Syntax.PatternMatching; @@ -21,7 +21,7 @@ using ICSharpCode.Decompiler.CSharp.Syntax.PatternMatching;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>local_function_declaration : attributes? local_function_modifier* return_type local_function_header local_function_body | attributes? ref_local_function_modifier* ref_kind ref_return_type local_function_header ref_local_function_body ;</c> (C# grammar §13.6.4)
/// <c>local_function_declaration ::= method_declaration</c> (C# grammar §13.6.4)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class LocalFunctionDeclarationStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/LockStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>lock_statement : 'lock' '(' expression ')' embedded_statement ;</c> (C# grammar §13.13)
/// <c>lock_statement ::= 'lock' '(' expression ')' statement</c> (C# grammar §13.13)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class LockStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/ReturnStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>return_statement : 'return' ';' | 'return' expression ';' | 'return' 'ref' variable_reference ';' ;</c> (C# grammar §13.10.5)
/// <c>return_statement ::= 'return' expression? ';'</c> (C# grammar §13.10.5)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ReturnStatement : Statement

6
ICSharpCode.Decompiler/CSharp/Syntax/Statements/SwitchStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>switch_statement : 'switch' selector_expression switch_block ;</c> (C# grammar §13.8.3)
/// <c>switch_statement ::= 'switch' expression switch_section*</c> (C# grammar §13.8.3)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class SwitchStatement : Statement
@ -49,7 +49,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -49,7 +49,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>switch_section : switch_label+ statement_list ;</c> (C# grammar §13.8.3)
/// <c>switch_section ::= switch_label+ statement*</c> (C# grammar §13.8.3)
/// </summary>
[DecompilerAstNode(hasNullNode: false, hasPatternPlaceholder: true)]
public partial class SwitchSection : AstNode
@ -76,7 +76,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -76,7 +76,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>switch_label : 'case' pattern case_guard? ':' | 'default' ':' ;</c> (C# grammar §13.8.3)
/// <c>switch_label ::= 'case' expression ':' | 'default' ':'</c> (C# grammar §13.8.3)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class CaseLabel : AstNode

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/ThrowStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>throw_statement : 'throw' expression? ';' ;</c> (C# grammar §13.10.6)
/// <c>throw_statement ::= 'throw' expression? ';'</c> (C# grammar §13.10.6)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ThrowStatement : Statement

5
ICSharpCode.Decompiler/CSharp/Syntax/Statements/TryCatchStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>try_statement : 'try' block catch_clauses | 'try' block catch_clauses? finally_clause ;</c> (C# grammar §13.11)
/// <c>try_statement ::= 'try' block catch_clause* ( 'finally' block )?</c> (C# grammar §13.11)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class TryCatchStatement : Statement
@ -55,8 +55,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -55,8 +55,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>specific_catch_clause : 'catch' exception_specifier exception_filter? block | 'catch' exception_filter block ;</c> (C# grammar §13.11)
/// <c>general_catch_clause : 'catch' block ;</c> (C# grammar §13.11)
/// <c>catch_clause ::= 'catch' ( '(' type identifier? ')' )? ( 'when' '(' expression ')' )? block</c> (C# grammar §13.11)
/// </summary>
[DecompilerAstNode(hasNullNode: true, hasPatternPlaceholder: true)]
public partial class CatchClause : AstNode

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/UncheckedStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>unchecked_statement : 'unchecked' block ;</c> (C# grammar §13.12)
/// <c>unchecked_statement ::= 'unchecked' block</c> (C# grammar §13.12)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class UncheckedStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/UnsafeStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>unsafe_statement : 'unsafe' block ;</c> (C# grammar §24.2)
/// <c>unsafe_statement ::= 'unsafe' block</c> (C# grammar §24.2)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class UnsafeStatement : Statement

3
ICSharpCode.Decompiler/CSharp/Syntax/Statements/UsingStatement.cs

@ -27,8 +27,7 @@ @@ -27,8 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>using_statement : 'await'? 'using' '(' resource_acquisition ')' embedded_statement ;</c> (C# grammar §13.14.1)
/// <c>local_using_declaration : 'await'? 'using' non_ref_local_variable_declaration ';' statement_list? ;</c> (C# grammar §13.14.2)
/// <c>using_statement ::= 'await'? 'using' '(' ( local_variable_declaration | expression ) ')' statement</c> (C# grammar §13.14.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class UsingStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/VariableDeclarationStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>local_variable_declaration : implicitly_typed_local_variable_declaration | explicitly_typed_local_variable_declaration | explicitly_typed_ref_local_variable_declaration ;</c> (C# grammar §13.6.2.1)
/// <c>local_variable_declaration ::= type variable_initializer+</c> (C# grammar §13.6.2.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class VariableDeclarationStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/WhileStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>while_statement : 'while' '(' boolean_expression ')' embedded_statement ;</c> (C# grammar §13.9.2)
/// <c>while_statement ::= 'while' '(' expression ')' statement</c> (C# grammar §13.9.2)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class WhileStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/YieldBreakStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>yield_statement : 'yield' 'return' expression ';' | 'yield' 'break' ';' ;</c> (C# grammar §13.15)
/// <c>yield_statement ::= 'yield' 'break' ';'</c> (C# grammar §13.15)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class YieldBreakStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/Statements/YieldReturnStatement.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>yield_statement : 'yield' 'return' expression ';' | 'yield' 'break' ';' ;</c> (C# grammar §13.15)
/// <c>yield_statement ::= 'yield' 'return' expression ';'</c> (C# grammar §13.15)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class YieldReturnStatement : Statement

2
ICSharpCode.Decompiler/CSharp/Syntax/SyntaxTree.cs

@ -31,7 +31,7 @@ using ICSharpCode.Decompiler.Util; @@ -31,7 +31,7 @@ using ICSharpCode.Decompiler.Util;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>compilation_unit : extern_alias_directive* using_directive* global_attributes? compilation_unit_body ;</c> (C# grammar §14.2)
/// <c>compilation_unit ::= extern_alias_directive* using_directive* global_attributes? compilation_unit_body</c> (C# grammar §14.2)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class SyntaxTree : AstNode

4
ICSharpCode.Decompiler/CSharp/Syntax/TupleAstType.cs

@ -21,7 +21,7 @@ using ICSharpCode.Decompiler.CSharp.Syntax.PatternMatching; @@ -21,7 +21,7 @@ using ICSharpCode.Decompiler.CSharp.Syntax.PatternMatching;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>tuple_type : '(' tuple_type_element (',' tuple_type_element)+ ')' ;</c> (C# grammar §8.3.1)
/// <c>tuple_type ::= '(' tuple_type_element (',' tuple_type_element)+ ')'</c> (C# grammar §8.3.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class TupleAstType : AstType
@ -38,7 +38,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -38,7 +38,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>tuple_type_element : type identifier? ;</c> (C# grammar §8.3.1)
/// <c>tuple_type_element ::= type identifier?</c> (C# grammar §8.3.1)
/// </summary>
[DecompilerAstNode(hasNullNode: true)]
public partial class TupleTypeElement : AstNode

5
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/ConstructorDeclaration.cs

@ -29,8 +29,7 @@ using ICSharpCode.Decompiler.TypeSystem; @@ -29,8 +29,7 @@ using ICSharpCode.Decompiler.TypeSystem;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>constructor_declaration : attributes? constructor_modifier* constructor_declarator constructor_body ;</c> (C# grammar §15.11.1)
/// <c>static_constructor_declaration : attributes? static_constructor_modifiers identifier '(' ')' static_constructor_body ;</c> (C# grammar §15.12)
/// <c>constructor_declaration ::= attribute_section* modifier* identifier '(' parameter* ')' constructor_initializer? ( block | ';' )</c> (C# grammar §15.11.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ConstructorDeclaration : EntityDeclaration
@ -72,7 +71,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -72,7 +71,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>constructor_initializer : ':' 'base' '(' argument_list? ')' | ':' 'this' '(' argument_list? ')' ;</c> (C# grammar §15.11.1)
/// <c>constructor_initializer ::= ':' ( 'base' | 'this' ) '(' expression* ')'</c> (C# grammar §15.11.1)
/// </summary>
[DecompilerAstNode(hasNullNode: true)]
public partial class ConstructorInitializer : AstNode

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/DestructorDeclaration.cs

@ -29,7 +29,7 @@ using ICSharpCode.Decompiler.TypeSystem; @@ -29,7 +29,7 @@ using ICSharpCode.Decompiler.TypeSystem;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>finalizer_declaration : attributes? '~' identifier '(' ')' finalizer_body | attributes? 'extern' unsafe_modifier? '~' identifier '(' ')' finalizer_body | attributes? unsafe_modifier 'extern'? '~' identifier '(' ')' finalizer_body ;</c> (C# grammar §15.13)
/// <c>finalizer_declaration ::= attribute_section* modifier* '~' identifier '(' ')' ( block | ';' )</c> (C# grammar §15.13)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class DestructorDeclaration : EntityDeclaration

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/EnumMemberDeclaration.cs

@ -29,7 +29,7 @@ using ICSharpCode.Decompiler.TypeSystem; @@ -29,7 +29,7 @@ using ICSharpCode.Decompiler.TypeSystem;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>enum_member_declaration : attributes? identifier ('=' constant_expression)? ;</c> (C# grammar §20.4)
/// <c>enum_member_declaration ::= attribute_section* identifier ( '=' expression )?</c> (C# grammar §20.4)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class EnumMemberDeclaration : EntityDeclaration

4
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/EventDeclaration.cs

@ -32,7 +32,7 @@ using ICSharpCode.Decompiler.TypeSystem; @@ -32,7 +32,7 @@ using ICSharpCode.Decompiler.TypeSystem;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>event_declaration : attributes? event_modifier* 'event' type variable_declarators ';' | attributes? event_modifier* 'event' type member_name '{' event_accessor_declarations '}' ;</c> (C# grammar §15.8.1)
/// <c>event_declaration ::= attribute_section* modifier* 'event' type variable_initializer* ';'</c> (C# grammar §15.8.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class EventDeclaration : EntityDeclaration
@ -75,7 +75,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -75,7 +75,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
/// <summary>
/// <c>event_declaration : attributes? event_modifier* 'event' type variable_declarators ';' | attributes? event_modifier* 'event' type member_name '{' event_accessor_declarations '}' ;</c> (C# grammar §15.8.1)
/// <c>custom_event_declaration ::= attribute_section* modifier* 'event' type ( type '.' )? identifier '{' accessor accessor '}'</c> (C# grammar §15.8.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class CustomEventDeclaration : EntityDeclaration

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/ExtensionDeclaration.cs

@ -22,7 +22,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -22,7 +22,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// Not present in this revision of the C# specification grammar: C# 14 extension blocks ('extension(receiver) { members }').
/// <c>extension_declaration : 'extension' type_parameter_list? '(' parameter_list? ')' type_parameter_constraints_clause* '{' class_member_declaration* '}' ;</c>
/// <c>extension_declaration ::= attribute_section* 'extension' type_parameter* '(' parameter* ')' constraint* '{' member* '}'</c>
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class ExtensionDeclaration : EntityDeclaration

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/FieldDeclaration.cs

@ -32,7 +32,7 @@ using ICSharpCode.Decompiler.TypeSystem; @@ -32,7 +32,7 @@ using ICSharpCode.Decompiler.TypeSystem;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>field_declaration : attributes? field_modifier* type variable_declarators ';' ;</c> (C# grammar §15.5.1)
/// <c>field_declaration ::= attribute_section* modifier* type variable_initializer* ';'</c> (C# grammar §15.5.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class FieldDeclaration : EntityDeclaration

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/FixedFieldDeclaration.cs

@ -28,7 +28,7 @@ using ICSharpCode.Decompiler.TypeSystem; @@ -28,7 +28,7 @@ using ICSharpCode.Decompiler.TypeSystem;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>fixed_size_buffer_declaration : attributes? fixed_size_buffer_modifier* 'fixed' buffer_element_type fixed_size_buffer_declarators ';' ;</c> (C# grammar §24.8.2)
/// <c>fixed_size_buffer_declaration ::= attribute_section* modifier* 'fixed' type variable_initializer* ';'</c> (C# grammar §24.8.2)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class FixedFieldDeclaration : EntityDeclaration

2
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/FixedVariableInitializer.cs

@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>fixed_size_buffer_declarator : identifier '[' constant_expression ']' ;</c> (C# grammar §24.8.2)
/// <c>fixed_size_buffer_declarator ::= identifier '[' expression ']'</c> (C# grammar §24.8.2)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class FixedVariableInitializer : AstNode

7
ICSharpCode.Decompiler/CSharp/Syntax/TypeMembers/IndexerDeclaration.cs

@ -32,7 +32,12 @@ using ICSharpCode.Decompiler.TypeSystem; @@ -32,7 +32,12 @@ using ICSharpCode.Decompiler.TypeSystem;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// <c>indexer_declaration : attributes? indexer_modifier* indexer_declarator indexer_body | attributes? indexer_modifier* ref_kind indexer_declarator ref_indexer_body ;</c> (C# grammar §15.9.1)
/// <code>
/// indexer_declaration ::=
/// attribute_section* modifier* type ( type '.' )? 'this' '[' parameter* ']' '{' accessor* '}'
/// | attribute_section* modifier* type ( type '.' )? 'this' '[' parameter* ']' '=&gt;' expression ';'
/// </code>
/// (C# grammar §15.9.1)
/// </summary>
[DecompilerAstNode(hasNullNode: false)]
public partial class IndexerDeclaration : EntityDeclaration

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save