diff --git a/.github/workflows/dependencies/EcmaTC49.BuildGrammar.2.1.0.nupkg b/.github/workflows/dependencies/EcmaTC49.BuildGrammar.2.4.0.nupkg similarity index 85% rename from .github/workflows/dependencies/EcmaTC49.BuildGrammar.2.1.0.nupkg rename to .github/workflows/dependencies/EcmaTC49.BuildGrammar.2.4.0.nupkg index 665048205..8b1df1751 100644 Binary files a/.github/workflows/dependencies/EcmaTC49.BuildGrammar.2.1.0.nupkg and b/.github/workflows/dependencies/EcmaTC49.BuildGrammar.2.4.0.nupkg differ diff --git a/.github/workflows/dependencies/GrammarTestingEnv.tgz b/.github/workflows/dependencies/GrammarTestingEnv.tgz index 77ef32699..c31c0c232 100644 Binary files a/.github/workflows/dependencies/GrammarTestingEnv.tgz and b/.github/workflows/dependencies/GrammarTestingEnv.tgz differ diff --git a/.github/workflows/grammar-validator.yaml b/.github/workflows/grammar-validator.yaml index 6188c8abe..999ac443b 100644 --- a/.github/workflows/grammar-validator.yaml +++ b/.github/workflows/grammar-validator.yaml @@ -35,7 +35,7 @@ jobs: # Install build grammar global tool - name: Install BuildGrammar tool run: | - dotnet tool install --version 2.1.0 --global --add-source ./.github/workflows/dependencies/ EcmaTC49.BuildGrammar + dotnet tool install --version 2.4.0 --global --add-source ./.github/workflows/dependencies/ EcmaTC49.BuildGrammar - name: run validate run: | diff --git a/standard/README.md b/standard/README.md index 3b68e6438..e3dbaccb9 100644 --- a/standard/README.md +++ b/standard/README.md @@ -328,7 +328,7 @@ - [§12.8.3](expressions.md#1283-interpolated-string-expressions) Interpolated string expressions - [§12.8.4](expressions.md#1284-simple-names) Simple names - [§12.8.5](expressions.md#1285-parenthesized-expressions) Parenthesized expressions - - [§12.8.6](expressions.md#1286-tuple-expressions) Tuple expressions + - [§12.8.6](expressions.md#1286-tuple-literals) Tuple literals - [§12.8.7](expressions.md#1287-member-access) Member access - [§12.8.7.1](expressions.md#12871-general) General - [§12.8.7.2](expressions.md#12872-identical-simple-names-and-type-names) Identical simple names and type names diff --git a/standard/conversions.md b/standard/conversions.md index 5a68a8177..a39b46924 100644 --- a/standard/conversions.md +++ b/standard/conversions.md @@ -345,10 +345,16 @@ In all cases, the rules ensure that a conversion is executed as a boxing convers ### 10.2.13 Implicit tuple conversions -An implicit conversion exists from a tuple expression `E` to a tuple type `T` if `E` has the same arity as `T` and an implicit conversion exists from each element in `E` to the corresponding element type in `T`. The conversion is performed by creating an instance of `T`’s corresponding `System.ValueTuple<...>` type, and initializing each of its fields in order from left to right by evaluating the corresponding tuple element expression of `E`, converting it to the corresponding element type of `T` using the implicit conversion found, and initializing the field with the result. +An implicit conversion exists from a tuple literal `e`, of the form `(e₁, ..., eₙ)`, to a tuple value of type `T = (T₁, ..., Tₙ)` if there is an implicit conversion for each element `eᵢ` to the corresponding element type `Tᵢ`. The result of the conversion is the tuple value `((T₁)e₁, ..., (Tₙ)eₙ)` of type `T`. -If an element name in the tuple expression does not match a corresponding element name in the tuple type, a warning shall be issued. +If an element name in the tuple literal does not match a corresponding element name in the tuple type, a warning shall be issued. +An implicit conversion exists from the tuple type `T = (T₁, ..., Tₙ)` to the tuple type `S = (S₁, ..., Sₙ)` if there is an implicit conversion from each `Tᵢ` to the corresponding `Sᵢ`. The result of this conversion when applied to a tuple `t` with value `(t₁, ..., tₙ)` and of type `T` is the tuple value `((S₁)t₁, ..., (Sₙ)tₙ)` of type `S`. + +> *Note*: When a conversion is applied to a tuple value, as opposed to a tuple literal, no warnings are required if element names do not match. *end note* + + + > *Example*: > > @@ -360,7 +366,7 @@ If an element name in the tuple expression does not match a corresponding elemen > (int i, string) t5 = (x: 5, s: "Five"); // Warning: Names are ignored > ``` > -> The declarations of `t1`, `t2`, `t4` and `t5` are all valid, since implicit conversions exist from the element expressions to the corresponding element types. The declaration of `t3` is invalid, because there is no conversion from `null` to `int`. The declaration of `t5` causes a warning because the element names in the tuple expression differs from those in the tuple type. +> The declarations of `t1`, `t2`, `t4` and `t5` are all valid, since in each case implicit conversions exist from the tuple literal elements to the corresponding target variable element types. The declaration of `t3` is invalid, because there is no conversion from `null` to `int`. The declaration of `t5` causes a warning because the element names in the tuple literal differs from those in the tuple type. > > *end example* @@ -502,7 +508,13 @@ For an explicit reference conversion to succeed at run-time, the value of the so ### 10.3.6 Explicit tuple conversions -An explicit conversion exists from a tuple expression `E` to a tuple type `T` if `E` has the same arity as `T` and an implicit or explicit conversion exists from each element in `E` to the corresponding element type in `T`. The conversion is performed by creating an instance of `T`’s corresponding `System.ValueTuple<...>` type, and initializing each of its fields in order from left to right by evaluating the corresponding tuple element expression of `E`, converting it to the corresponding element type of `T` using the explicit conversion found, and initializing the field with the result. +An explicit conversion exists from a tuple literal `e`, of the form `(e₁, ..., eₙ)`, to a tuple value of type `T = (T₁, ..., Tₙ)` if there is an explicit conversion for each element `eᵢ` to the corresponding element type `Tᵢ`. The result of the conversion is the tuple value `((T₁)e₁, ..., (Tₙ)eₙ)` of type `T`. + +If an element name in the tuple literal does not match a corresponding element name in the tuple type, a warning shall be issued. + +An explicit conversion exists from the tuple type `T = (T₁, ..., Tₙ)` to the tuple type `S = (S₁, ..., Sₙ)` if there is an explicit conversion from each `Tᵢ` to the corresponding `Sᵢ`. The result of this conversion when applied to a tuple value `(t₁, ..., tₙ)` of type `T` is the tuple value `((S₁)t₁, ..., (Sₙ)tₙ)` of type `S`. + +> *Note*: When a conversion is applied to a tuple value, as opposed to a tuple literal, no warnings are required if element names do not match. *end note* ### 10.3.7 Unboxing conversions diff --git a/standard/expressions.md b/standard/expressions.md index ce868655b..82b655b7d 100644 --- a/standard/expressions.md +++ b/standard/expressions.md @@ -33,12 +33,12 @@ An ***instance accessor*** is a property access on an instance, an event access ### 12.2.2 Values of expressions -Most of the constructs that involve an expression ultimately require the expression to denote a ***value***. In such cases, if the actual expression denotes a namespace, a type, a method group, or nothing, a compile-time error occurs. However, if the expression denotes a property access, an indexer access, or a variable, the value of the property, indexer, or variable is implicitly substituted: +Most of the constructs that involve an expression ultimately require the expression to denote a ***value***. In such cases, if the actual expression denotes a namespace, a type, a method group, or nothing, a compile-time error occurs. However, if the expression denotes a property access, an indexer access, a tuple literal, or a variable, the value of the property, indexer, tuple literal, or variable is implicitly substituted: - The value of a variable is simply the value currently stored in the storage location identified by the variable. A variable shall be considered definitely assigned ([§9.4](variables.md#94-definite-assignment)) before its value can be obtained, or otherwise a compile-time error occurs. - The value of a property access expression is obtained by invoking the get accessor of the property. If the property has no get accessor, a compile-time error occurs. Otherwise, a function member invocation ([§12.6.6](expressions.md#1266-function-member-invocation)) is performed, and the result of the invocation becomes the value of the property access expression. - The value of an indexer access expression is obtained by invoking the get accessor of the indexer. If the indexer has no get accessor, a compile-time error occurs. Otherwise, a function member invocation ([§12.6.6](expressions.md#1266-function-member-invocation)) is performed with the argument list associated with the indexer access expression, and the result of the invocation becomes the value of the indexer access expression. -- The value of a tuple expression is obtained by applying an implicit tuple conversion ([§10.2.13](conversions.md#10213-implicit-tuple-conversions)) to the type of the tuple expression. It is an error to obtain the value of a tuple expression that does not have a type. +- The value of a tuple literal with a type is obtained by evaluating each of its element expressions in order from left to right (§12.8.6). It is an error to obtain the value of a tuple literal that does not have a type. ## 12.3 Static and Dynamic Binding @@ -559,6 +559,7 @@ argument_value : expression | 'in' variable_reference | 'ref' variable_reference + | 'out' declaration_expression | 'out' variable_reference ; ``` @@ -795,7 +796,7 @@ An *unfixed* type variable `Xᵢ` *depends directly on* an *unfixed* type varia An *input type inference* is made *from* an expression `E` *to* a type `T` in the following way: -- If `E` is a tuple expression ([§12.8.6](expressions.md#1286-tuple-expressions)) with arity `N` and elements `Eᵢ`, and `T` is a tuple type with arity `N` with corresponding element types `Tₑ` or `T` is a nullable value type `T0?` and `T0` is a tuple type with arity `N` that has a corresponding element type `Tₑ`, then for each `Eᵢ`, an input type inference is made from `Eᵢ` to `Tₑ`. +- If `E` is a tuple literal ([§12.8.6](expressions.md#1286-tuple-literals)) with arity `N` and elements `Eᵢ`, and `T` is a tuple type with arity `N` with corresponding element types `Tₑ` or `T` is a nullable value type `T0?` and `T0` is a tuple type with arity `N` that has a corresponding element type `Tₑ`, then for each `Eᵢ`, an input type inference is made from `Eᵢ` to `Tₑ`. - If `E` is an anonymous function, an *explicit parameter type inference* ([§12.6.3.9](expressions.md#12639-explicit-parameter-type-inferences)) is made *from* `E` *to* `T` - Otherwise, if `E` has a type `U` and the corresponding parameter is a value parameter ([§15.6.2.2](classes.md#15622-value-parameters)) then a *lower-bound inference* ([§12.6.3.11](expressions.md#126311-lower-bound-inferences)) is made *from* `U` *to* `T`. - Otherwise, if `E` has a type `U` and the corresponding parameter is a reference parameter ([§15.6.2.3.3](classes.md#156233-reference-parameters)), or output parameter ([§15.6.2.3.4](classes.md#156234-output-parameters)) then an *exact inference* ([§12.6.3.10](expressions.md#126310-exact-inferences)) is made *from* `U` *to* `T`. @@ -807,7 +808,7 @@ An *input type inference* is made *from* an expression `E` *to* a type `T` in th An *output type inference* is made *from* an expression `E` *to* a type `T` in the following way: -- If `E` is a tuple expression with arity `N` and elements `Eᵢ`, and `T` is a tuple type with arity `N` with corresponding element types `Tₑ` or `T` is a nullable value type `T0?` and `T0` is a tuple type with arity `N` that has a corresponding element type `Tₑ`, then for each `Eᵢ` an output type inference is made from `Eᵢ` to `Tₑ`. +- If `E` is a tuple literal with arity `N` and elements `Eᵢ`, and `T` is a tuple type with arity `N` with corresponding element types `Tₑ` or `T` is a nullable value type `T0?` and `T0` is a tuple type with arity `N` that has a corresponding element type `Tₑ`, then for each `Eᵢ` an output type inference is made from `Eᵢ` to `Tₑ`. - If `E` is an anonymous function with inferred return type `U` ([§12.6.3.14](expressions.md#126314-inferred-return-type)) and `T` is a delegate type or expression tree type with return type `Tₓ`, then a *lower-bound inference* ([§12.6.3.11](expressions.md#126311-lower-bound-inferences)) is made *from* `U` *to* `Tₓ`. - Otherwise, if `E` is a method group and `T` is a delegate type or expression tree type with parameter types `T₁...Tᵥ` and return type `Tₓ`, and overload resolution of `E` with the types `T₁...Tᵥ` yields a single method with return type `U`, then a *lower-bound inference* is made *from* `U` *to* `Tₓ`. - Otherwise, if `E` is an expression with type `U`, then a *lower-bound inference* is made *from* `U` *to* `T`. @@ -1260,18 +1261,33 @@ In these situations, the boxed instance is considered to contain a variable of t ## 12.7 Deconstruction -Deconstruction is a process whereby an expression gets turned into a tuple of individual expressions. Deconstruction is used when the target of a simple assignment is a tuple expression, in order to obtain values to assign to each of that tuple’s elements. +Deconstruction is a compile-time transformation whereby an expression gets turned into a *tuple-literal* of individual expressions. Deconstruction is used in deconstructing assignment (§deconstructing-assignment) and local deconstructing declarations (§local-deconstructing-declarations). -An expression `E` is ***deconstructed*** to a tuple expression with `n` elements in the following way: +An expression `E`, with a type `S` other than `dynamic`, can be ***deconstructed*** to a *tuple-literal* if one of the following hold: -- If `E` is a tuple expression with `n` elements, the result of deconstruction is the expression `E` itself. -- Otherwise, if `E` has a tuple type `(T1, ..., Tn)` with `n` elements, then `E` is evaluated into a temporary variable `__v`, and the result of deconstruction is the expression `(__v.Item1, ..., __v.Itemn)`. -- Otherwise, if the expression `E.Deconstruct(out var __v1, ..., out var __vn)` resolves at compile-time to a unique instance or extension method, that expression is evaluated, and the result of deconstruction is the expression `(__v1, ..., __vn)`. Such a method is referred to as a ***deconstructor***. -- Otherwise, `E` cannot be deconstructed. +- If `E` is a *tuple-literal* the result of deconstruction is the expression `E` itself. -Here, `__v` and `__v1, ..., __vn` refer to otherwise invisible and inaccessible temporary variables. +- Otherwise, if `E` has a tuple type `(T₁, ..., Tₙ)`, then the result of deconstruction is semantically equivalent to the expression `(E.Item1, ..., E.Itemn)` except `E` is evaluated only once. -> *Note*: An expression of type `dynamic` cannot be deconstructed. *end note* +- Otherwise if there is a unique instance or extension method `S.Deconstruct`; with `n ≥ 2` output parameters, with types `T₁` to `Tₙ`, and no other parameters; then `E` can be deconstructed. + + The result of the deconstruction is the *tuple-literal* formed from the values returned via the out parameters of a call to `E.Deconstruct(...)`. The result is semantically equivalent to the call `PerformDeconstruction(E)` where `PerformDeconstruction` is defined as: + + >```csharp + > (T1, ... TN) PerformDeconstruction(S e) + > { + > e.Deconstruct(out T1 v1, ..., out TN vn); + > return (v1, ..., vn); + > } + >``` + + + + > *Note*: “is semantically equivalent to” – there is no requirement, or even expectation, that an implementation will actually implement this deconstruction by defining a method and calling it, just that the observable semantics follow this sample. (Inlining a method is not “observable” in this sense.) *end note* + +If none of the above hold `E` cannot be deconstructed, which is a compile-time error. + +> *Note*: When deconstruction is used in a context where only individual elements of the *tuple-literal* are used (such as part of a deconstructing assignment or local deconstructing declaration) then an implementation is explicitly allowed to elide creating a tuple value from the *tuple-literal* provided the observable semantics remain the same, as specified in *Eliding tuples* (§eliding-tuples). *end note* ## 12.8 Primary expressions @@ -1285,7 +1301,7 @@ primary_expression | interpolated_string_expression | simple_name | parenthesized_expression - | tuple_expression + | tuple_literal | member_access | null_conditional_member_access | invocation_expression @@ -1576,97 +1592,61 @@ parenthesized_expression A *parenthesized_expression* is evaluated by evaluating the *expression* within the parentheses. If the *expression* within the parentheses denotes a namespace or type, a compile-time error occurs. Otherwise, the result of the *parenthesized_expression* is the result of the evaluation of the contained *expression*. -### 12.8.6 Tuple expressions +### 12.8.6 Tuple literals -A *tuple_expression* represents a tuple, and consists of two or more comma-separated and optionally-named *expression*s enclosed in parentheses. A *deconstruction_expression* is a shorthand syntax for a tuple containing implicitly typed declaration expressions. +A *tuple_literal* represents a tuple, and consists of two or more comma-separated and optionally-named *expression*s enclosed in parentheses. ```ANTLR -tuple_expression +tuple_literal : '(' tuple_element (',' tuple_element)+ ')' - | deconstruction_expression ; tuple_element : (identifier ':')? expression ; - -deconstruction_expression - : 'var' deconstruction_tuple - ; - -deconstruction_tuple - : '(' deconstruction_element (',' deconstruction_element)+ ')' - ; - -deconstruction_element - : deconstruction_tuple - | identifier - ; ``` -A *tuple_expression* is classified as a tuple. - -A *deconstruction_expression* `var (e1, ..., en)` is shorthand for the *tuple_expression* `(var e1, ..., var en)` and follows the same behavior. This applies recursively to any nested *deconstruction_tuple*s in the *deconstruction_expression*. Each identifier nested within a *deconstruction_expression* thus introduces a declaration expression ([§12.19](expressions.md#1219-declaration-expressions)). As a result, a *deconstruction_expression* can only occur on the left side of a simple assignment. - -> *Example*: -> The following code declares three variables: a, b, and c. Each of which is an integer and is assigned its value from the tuple on the right hand side of the assignment. -> -> -> ```csharp -> var (a, b, c) = (1, 2, 3); // a is 1, b is 2, and c is 3. -> var sum = a + b + c; // sum is 6. -> ``` -> -> Any of the individual elements of the assignment can itself be a deconstruction expression. For example, the following deconstruction expression assigns six variables, `a` through `f`. -> -> -> ```csharp -> var (a, b, (c, d, (e, f))) = (1, 2, (3, 4, (5, 6))); -> ``` -> -> In this example, notice that the structure of nested tuples must match on both sides of the assignment. -> -> If the variable(s) on the left side are implicitly typed, the corresponding expression must have a type: -> -> -> ```csharp -> (int a, string? b) = (42, null); //OK -> var (c, d) = (42, null); // Invalid as type of d cannot be inferred -> (int e, var f) = (42, null); // Invalid as type of f cannot be inferred -> ``` -> -> *end example* +A *tuple_literal* is classified as a tuple ([§12.2.1](expressions.md#1221-general)). -A tuple expression has a type if and only if each of its element expressions `Ei` has a type `Ti`. The type shall be a tuple type of the same arity as the tuple expression, where each element is given by the following: +A tuple literal has a type if and only if each of its element expressions `Eᵢ` has a type `Tᵢ`. The type is a tuple type of the same arity as the tuple literal, where each element is given by the following: -- If the tuple element in the corresponding position has a name `Nᵢ`, then the tuple type element shall be `Tᵢ Nᵢ`. -- Otherwise, if `Eᵢ` is of the form `Nᵢ` or `E.Nᵢ` or `E?.Nᵢ` then the tuple type element shall be `Tᵢ Nᵢ`, *unless* any of the following holds: - - Another element of the tuple expression has the name `Nᵢ`, or - - Another tuple element without a name has a tuple element expression of the form `Nᵢ` or `E.Nᵢ` or `E?.Nᵢ`, or - - `Nᵢ` is of the form `ItemX`, where `X` is a sequence of non-`0`-initiated decimal digits that could represent the position of a tuple element, and `X` does not represent the position of the element. +- If the tuple element in the corresponding position has an element name `Iᵢ`, then the tuple type element shall be `Tᵢ Iᵢ`. +- Otherwise, if `Eᵢ` is of the form `Iᵢ` or `E.Iᵢ` or `E?.Iᵢ`, where `Iᵢ` is an *identifier*, then the tuple type element shall be `Tᵢ Iᵢ`, *unless* any of the following holds: + - Another element of the tuple literal has the element name `Iᵢ`, or + - Another tuple element without an element name has a tuple element expression of the form `Iᵢ` or `E.Iᵢ` or `E?.Iᵢ`, or + - `Iᵢ` is of the form `ItemX`, where `X` is a sequence of decimal digits, without any leading zeros, that could represent the position of a tuple element, and `X` does not represent the position of the element. - Otherwise, the tuple type element shall be `Tᵢ`. -A tuple expression is evaluated by evaluating each of its element expressions in order from left to right. +A tuple value can be obtained from a tuple literal when: -A tuple value can be obtained from a tuple expression by converting it to a tuple type ([§10.2.13](conversions.md#10213-implicit-tuple-conversions)), by reclassifying it as a value ([§12.2.2](expressions.md#1222-values-of-expressions))) or by making it the target of a deconstructing assignment ([§12.23.2](expressions.md#12232-simple-assignment)). +- it is the subject of a conversion ([§10.2.13](conversions.md#10213-implicit-tuple-conversions)), the conversion replaces any type it may inherently have; +- it is the target of a deconstructing assignment (§deconstructing-assignment); +- it is the target of a local deconstructing declaration (§local-deconstructing-declarations); or +- it is reclassified as a value ([§12.2.2](expressions.md#1222-values-of-expressions))). > *Example*: > +>```csharp +> (short, long) x = (1, 2L); // literal has a type replaced by implicit conversion +> var y = (1, 2L); // y has type (int, long) +>``` +> +> These two examples demonstrate the purpose of the qualification on the first case above – it allows implicit constant conversions (§10.2.11). The type of the tuple literal is `(int, long)`. There is no implicit conversion from `int` to `short`, but there is one from the constant `1` to short. The first example involves an implicit conversion replacing the tuple literal’s inherent type. In the second example, which does not involve an implicit conversion, the tuple literal is reclassified as a value based on its inherent type. +> > > ```csharp -> (int i, string) t1 = (i: 1, "One"); -> (long l, string) t2 = (l: 2, null); -> var t3 = (i: 3, "Three"); // (int i, string) -> var t4 = (i: 4, null); // Error: no type +> (long l, string) t1 = (l: 1, null); // literal has no type, use implicit conversion +> var t2 = (i: 2, "Two"); // (int i, string) +> var t3 = (i: 3, null); // Error: no type > ``` > -> In this example, all four tuple expressions are valid. The first two, `t1` and `t2`, do not use the type of the tuple expression, but instead apply an implicit tuple conversion. In the case of `t2`, the implicit tuple conversion relies on the implicit conversions from `2` to `long` and from `null` to `string`. The third tuple expression has a type `(int i, string)`, and can therefore be reclassified as a value of that type. The declaration of `t4`, on the other hand, is an error: The tuple expression has no type because its second element has no type. +> In this example of three declaration statements, the initialising tuple literals themselves are all valid. In the case of `t1`, the implicit tuple conversion relies on the implicit conversions from `1` to `long` and from `null` to `string`. The second tuple literal has a type `(int i, string)`, and can therefore be reclassified as a value of that type. The declaration of `t3`, on the other hand, is an error: the tuple literal has no type because its second element has no type and reclassifying at as a value therefore fails. > > ```csharp > if ((x, y).Equals((1, 2))) { ... }; > ``` > -> This example shows that tuples can sometimes lead to multiple layers of parentheses, especially when the tuple expression is the sole argument to a method invocation. +> This example shows that tuples can sometimes lead to multiple layers of parentheses, especially when the tuple literal is the sole argument to a method invocation. > > *end example* @@ -4418,7 +4398,6 @@ equality_expression ``` > *Note*: Lookup for the right operand of the `is` operator must first test as a *type*, then as an *expression* which may span multiple tokens. In the case where the operand is an *expression*, the pattern expression must have precedence at least as high as *shift_expression*. *end note* - @@ -4751,7 +4730,7 @@ The tuple equality operators are applied pairwise to the elements of the tuple o If each operand `x` and `y` of a `==` or `!=` operator is classified either as a tuple or as a value with a tuple type ([§8.3.11](types.md#8311-tuple-types)), the operator is a *tuple equality operator*. -If an operand `e` is classified as a tuple, the elements `e₁...eₙ` shall be the results of evaluating the element expressions of the tuple expression. Otherwise if `e` is a value of a tuple type, the elements shall be `t.Item1...t.Itemn` where `t` is the result of evaluating `e`. +If an operand `e` is classified as a tuple, the elements `e₁...eₙ` shall be the results of evaluating the element expressions of the tuple literal. Otherwise if `e` is a value of a tuple type, the elements shall be `t.Item1...t.Itemn` where `t` is the result of evaluating `e`. The operands `x` and `y` of a tuple equality operator shall have the same arity, or a compile time error occurs. For each pair of elements `xᵢ` and `yᵢ`, the same equality operator shall apply, and shall yield a result of type `bool`, `dynamic`, a type that has an implicit conversion to `bool`, or a type that defines the `true` and `false` operators. @@ -5134,11 +5113,11 @@ local_variable_type The *simple_name* `_` is also considered a declaration expression if simple name lookup did not find an associated declaration ([§12.8.4](expressions.md#1284-simple-names)). When used as a declaration expression, `_` is called a *simple discard*. It is semantically equivalent to `var _`, but is permitted in more places. -A declaration expression shall only occur in the following syntactic contexts: +A declaration expression only occurs in the following syntactic contexts: - As an `out` *argument_value* in an *argument_list*. - As a simple discard `_` comprising the left side of a simple assignment ([§12.23.2](expressions.md#12232-simple-assignment)). -- As a *tuple_element* in one or more recursively nested *tuple_expression*s, the outermost of which comprises the left side of a deconstructing assignment. A *deconstruction_expression* gives rise to declaration expressions in this position, even though the declaration expressions are not syntactically present. +- As a *deconstructor_element* (§deconstructing-assignment), *declaration_deconstructor_element* (§local-deconstructing-declarations), or in shorthand as an *abridged_element* (§local-deconstructing-declarations). > *Note*: This means that a declaration expression cannot be parenthesized. *end note* @@ -5150,7 +5129,7 @@ A declaration expression that is a simple discard or where the *local_variable_t - In an *argument_list* the inferred type of the variable is the declared type of the corresponding parameter. - As the left side of a simple assignment, the inferred type of the variable is the type of the right side of the assignment. -- In a *tuple_expression* on the left side of a simple assignment, the inferred type of the variable is the type of the corresponding tuple element on the right side (after deconstruction) of the assignment. +- In a *declaration_deconstructor* (§local-deconstructing-declarations) the inferred type of the variable is the type of the corresponding tuple element on the right side (after deconstruction) of the declaration. Otherwise, the declaration expression is classified as an *explicitly typed* variable, and the type of the expression as well as the declared variable shall be that given by the *local_variable_type*. @@ -6724,49 +6703,45 @@ The methods above use the generic delegate types `Func` and `Func *Note*: if the compile time type of `x` is `dynamic` and there is an implicit conversion from the compile time type of `y` to `dynamic`, no runtime resolution is required. *end note* @@ -6846,20 +6816,20 @@ When a property or indexer declared in a *struct_type* is the target of an assig > > public Rectangle(Point a, Point b) > { -> this.a = a; -> this.b = b; +> this.a = a; +> this.b = b; > } > > public Point A > { -> get { return a; } -> set { a = value; } +> get { return a; } +> set { a = value; } > } > > public Point B > { -> get { return b; } -> set { b = value; } +> get { return b; } +> set { b = value; } > } > } > ``` @@ -6891,11 +6861,74 @@ When a property or indexer declared in a *struct_type* is the target of an assig > > *end example* +### §deconstructing-assignment Deconstructing assignment + +```ANTLR +deconstructing_assignment + : deconstructor '=' expression + ; + +deconstructor + : '(' deconstructor_element (',' deconstructor_element)+ ')' + ; + +deconstructor_element + : deconstructor + | discard_token + | variable_reference + ; +``` + +In a deconstructing assignment the `=` operator is called the ***deconstructing assignment operator***. + +If the input can be recognized as both a *deconstructing_assignment* and a *local_deconstructing_declaration* (§local-deconstructing-declarations) then the former shall be chosen. + +If when recognizing a *deconstructor_element* the input can be syntatically recognized as a *deconstructor* and as a *variable_reference* then the former shall be chosen. Likewise for *discard_token* and *variable_reference*. + +> *Note:* Based on the order in which the alternatives are listed the ANTLR grammar semantics enforce these priorities. *end note* + +For backward compatibility if any *deconstructor_element* is a *discard_token* then: + +- If name lookup (§12.8.4) for “`_`” finds an associated declaration then the *discard_token* is reclassified as a *simple_name*, which is syntactically a *variable_reference*. +- Otherwise the *discard token* is a simple discard (§12.19). + +It is a compile time error if any *variable_reference*, including any reclassified *discard_token*s, occurring as a *deconstructor_element* is not writeable. + +The compile-time processing of a deconstructing assignment of the form `d = y`, where `d` is a *deconstructor* of the form `(d₁, ..., dₙ)` with arity `n`, proceeds as follows: + +- The right operand of the assignment, `y`, is deconstructed (§12.7) to produce a *tuple_literal* `e` of the form `(e₁, ..., eₘ)`, it is a compile-time error if `m ≠ n`. +- The type `T` of the assignment is determined, where `T` is the tuple type `(T₁, ..., Tₙ)` and each `Tᵢ` is calculated as follows based on the corresponding `dᵢ` and `eᵢ`: + - if `dᵢ` is a discard and `eᵢ` has a type `Eᵢ`, then `Tᵢ` is `Eᵢ`; + - otherwise if `dᵢ` is a *deconstructor* then `Tᵢ` is the type of `dᵢ = eᵢ` determined by applying this compile-time algorithm recursively. + - otherwise if `dᵢ` has a type `Dᵢ` and there is an implicit conversion from `eᵢ` to `Dᵢ`, then `Tᵢ` is `Dᵢ`; + - otherwise `dᵢ` and `eᵢ` are incompatible, and a compile-time error results. + +The run-time processing of a deconstructing assignment, now `d = e`, proceeds as follows: + +1. In the following steps each and every `dᵢ` and `eᵢ` must be evaluated exactly once in order left to right. For the avoidance any confusion this means all `dᵢ` are evaluated before any `eᵢ`; and if any nested *deconstructor*s or *tuple_literal*s are present the order is depth-first. +2. The tuple value `t`, of the form `(t₁, ..., tₙ)`, is created by converting `e` to `T` using an implicit tuple conversion (§10.2.13). +3. For each non-discard `dᵢ` in order from left to right: + - if `dᵢ` is a variable reference the assignment `dᵢ = tᵢ` is performed; + - otherwise `dᵢ` is a nested *deconstructor* and this step (3) is recursively applied to the elements of `dᵢ` and `tᵢ`. +4. The type and value of the whole *deconstructing_assignment* expression are respectively `T` and `t`. + +> *Note*: The requirement that each and every `dᵢ` and `eᵢ` is evaluated exactly once in order left to right ensures that any and all side-effects of evaluating them are performed exactly once and any dependencies between the `dᵢ`/`eᵢ` evaluate correctly. *end note* + + + +> *Note*: The construction of intermediate tuples produced by this algorithm might be elided by an implementation as specified by §eliding-tuples. *end note* + ### 12.23.3 Ref assignment -The `= ref` operator is known as the *ref assignment* operator. +```ANTLR +ref_assignment + : unary_expression '=' 'ref' expression + ; +``` + +The operator `= ref` is called the ***ref assignment operator***. The expression makes the right operand the referent of the reference variable designated by the left operand. -The left operand shall be an expression that binds to a reference variable ([§9.7](variables.md#97-reference-variables-and-returns)), a reference parameter (other than `this`), an output parameter, or an input parameter. The right operand shall be an expression that yields a *variable_reference* designating a value of the same type as the left operand. +The left operand shall be an expression that binds to a reference variable ([§9.7](variables.md#97-reference-variables-and-returns)), a reference parameter (other than `this`), an output parameter, or an input parameter. The right operand shall be an expression that yields a *variable_reference* ([§9.5](variables.md#95-variable-references)) designating a value of the same type as the left operand. It is a compile time error if the ref-safe-context ([§9.7.2](variables.md#972-ref-safe-contexts)) of the left operand is wider than the ref-safe-context of the right operand. @@ -6921,18 +6954,18 @@ The ref assignment operator shall not read the storage location referenced by th > public static ref readonly int M3() { ... } > public static void Test() > { -> int v = 42; -> ref int r1 = ref v; // OK, r1 refers to v, which has value 42 -> r1 = ref M1(); // Error; M1 returns a value, not a reference -> r1 = ref M2(); // OK; makes an alias -> r1 = ref M2u(); // Error; lhs and rhs have different types -> r1 = ref M3(); // error; M3 returns a ref readonly, which r1 cannot honor -> ref readonly int r2 = ref v; // OK; make readonly alias to ref -> r2 = ref M2(); // OK; makes an alias, adding read-only protection -> r2 = ref M3(); // OK; makes an alias and honors the read-only -> r2 = ref (r1 = ref M2()); // OK; r1 is an alias to a writable variable, -> // r2 is an alias (with read-only access) -> // to the same variable +> int v = 42; +> ref int r1 = ref v; // OK, r1 refers to v, which has value 42 +> r1 = ref M1(); // Error; M1 returns a value, not a reference +> r1 = ref M2(); // OK; makes an alias +> r1 = ref M2u(); // Error; lhs and rhs have different types +> r1 = ref M3(); // Error; M3 returns a ref readonly, which r1 cannot honor +> ref readonly int r2 = ref v; // OK; make readonly alias to ref +> r2 = ref M2(); // OK; makes an alias, adding read-only protection +> r2 = ref M3(); // OK; makes an alias and honors the read-only +> r2 = ref (r1 = ref M2()); // OK; r1 is an alias to a writable variable, +> // r2 is an alias (with read-only access) +> // to the same variable > } > ``` > @@ -6944,9 +6977,26 @@ The ref assignment operator shall not read the storage location referenced by th ### 12.23.4 Compound assignment +```ANTLR +compound_assignment + : unary_expression compound_assignment_operator expression + ; + +compound_assignment_operator + : '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<=' | '??=' + | right_shift_assignment + ; +``` + +The operators in *compound_assignment_operator* are called the ***compound assignment operator***s. + +The `+=` and `-=` operators with an event access expression as the left operand are called the ***event assignment operator***s. No other compound assignment operator is valid with an event access as the left operand. The event assignment operators are described in [§12.23.5](expressions.md#12235-event-assignment). + If the left operand of a compound assignment is of the form `E.P` or `E[Ei]` where `E` has the compile-time type `dynamic`, then the assignment is dynamically bound ([§12.3.3](expressions.md#1233-dynamic-binding)). In this case, the compile-time type of the assignment expression is `dynamic`, and the resolution described below will take place at run-time based on the run-time type of `E`. If the left operand is of the form `E[Ei]` where at least one element of `Ei` has the compile-time type `dynamic`, and the compile-time type of `E` is not an array, the resulting indexer access is dynamically bound, but with limited compile-time checking ([§12.6.5](expressions.md#1265-compile-time-checking-of-dynamic-member-invocation)). -`a ??= b` is equivalent to `(T) (a ?? (a = b))`, except that `a` is evaluated only once, where `T` is the type of `a` when the type of `b` is dynamic and otherwise `T` is the type of `a ?? b`. +The expression `a ??= b` is equivalent to `(T) (a ?? (a = b))`, except that `a` is evaluated only once, where `T` is the type of `a` when the type of `b` is dynamic and otherwise `T` is the type of `a ?? b`. + +> *Note*: From the definition of `??` ([§12.17](expressions.md#1217-the-null-coalescing-operator)) `b` is only evaluated if the value of `a` is `null`. Otherwise, an operation of the form `x «op»= y` is processed by applying binary operator overload resolution ([§12.4.5](expressions.md#1245-binary-operator-overload-resolution)) as if the operation was written `x «op» y`. Then @@ -6989,7 +7039,7 @@ The intuitive effect of the rule for predefined operators is simply that `x «op ### 12.23.5 Event assignment -If the left operand of `a += or -=` operator is classified as an event access, then the expression is evaluated as follows: +An event assignment is a subset of *compound_assignment* where the left operand of a `+=` or `-=` operator is classified as an event access. An event assignment is evaluated as follows: - The instance expression, if any, of the event access is evaluated. - The right operand of the `+=` or `-=` operator is evaluated, and, if required, converted to the type of the left operand through an implicit conversion ([§10.2](conversions.md#102-implicit-conversions)). @@ -7008,8 +7058,7 @@ expression ; non_assignment_expression - : declaration_expression - | conditional_expression + : conditional_expression | lambda_expression | query_expression ; diff --git a/standard/grammar.md b/standard/grammar.md index cdd787ea1..1a83c3beb 100644 --- a/standard/grammar.md +++ b/standard/grammar.md @@ -828,7 +828,7 @@ primary_expression | interpolated_string_expression | simple_name | parenthesized_expression - | tuple_expression + | tuple_literal | member_access | null_conditional_member_access | invocation_expression @@ -975,25 +975,25 @@ parenthesized_expression ; // Source: §12.8.6 Tuple expressions -tuple_expression +tuple_literal : '(' tuple_element (',' tuple_element)+ ')' - | deconstruction_expression + | abridged_deconstructor ; tuple_element : (identifier ':')? expression ; -deconstruction_expression - : 'var' deconstruction_tuple +abridged_deconstructor + : 'var' abridged_elements ; -deconstruction_tuple - : '(' deconstruction_element (',' deconstruction_element)+ ')' +abridged_elements + : '(' abridged_element (',' abridged_element)+ ')' ; -deconstruction_element - : deconstruction_tuple +abridged_element + : abridged_elements | identifier ; @@ -1758,7 +1758,7 @@ switch_statement selector_expression : '(' expression ')' - | tuple_expression + | tuple_literal ; switch_block diff --git a/standard/statements.md b/standard/statements.md index 925564544..d62fdda32 100644 --- a/standard/statements.md +++ b/standard/statements.md @@ -284,6 +284,7 @@ A *declaration_statement* declares one or more local variables, one or more loca declaration_statement : local_variable_declaration ';' | local_constant_declaration ';' + | local_deconstructing_declaration ';' | local_function_declaration ; ``` @@ -481,6 +482,126 @@ The scope of a local constant is the block in which the declaration occurs. It i A local constant declaration that declares multiple constants is equivalent to multiple declarations of single constants with the same type. +### §local-deconstructing-declarations Local deconstructing declarations + +A local deconstructing declaration declares one or more local variables initialised with values obtained by deconstructing (§12.7) the initialising *expression*. + +```ANTLR +local_deconstructing_declaration + : declaration_deconstructor '=' expression + ; + +declaration_deconstructor + : '(' declaration_deconstructor_element (',' declaration_deconstructor_element)+ ')' + | abridged_deconstructor + ; + +declaration_deconstructor_element + : declaration_expression + | discard_token + | declaration_deconstructor + ; +``` + +If the input can be recognised as both a *local_deconstructing_declaration* and a *deconstructing_assignment* (§deconstructing-assignment) then the latter shall be chosen. + +> *Note*: Put another way a *local_deconstructing_declaration* must contain at least one *declaration_expression* to be recognised as a declaration, otherwise it is recognised as a *deconstructing_assignment*. This follows the same split as for declaration vs. assignment for other types. *end note* + +If the input can be syntatically recognized as a *declaration_deconstructor* and as a *variable_reference* then the former shall be chosen. + +If the input can be syntatically recognized as a *discard_token* and as a *variable_reference* then the former shall be chosen. + +> *Note:* Based on the order the alternatives are listed ANTLR grammar semantics automatically enforce these priorties. *end note* + +For backward compatibility if any *declaration_deconstructor_element* is a *discard_token* then: + +- If name lookup (§12.8.4) for “`_`” finds an associated declaration then the *discard_token* is reclassified as a *simple_name*, which is syntactically a *variable_reference*. +- Otherwise the *discard token* is a simple discard (§12.19). + +It is a compile time error if any *variable_reference*, including any reclassified *discard_token*s, occurring as a *declaration_deconstructor_element* is not writeable. + +The compile-time processing of a deconstructing declaration of the form `d = y`, where `d` is a *declaration_deconstructor* of the form `(d₁, ..., dₙ)` with arity `n`, proceeds as follows: + +- The initialising expression (right operand) of the statement, `y`, is deconstructed (§12.7) to produce a *tuple_literal* `e` of the form `(e₁, ..., eₘ)`, it is a compile-time error if `m ≠ n`. +- The type `T` of the overall deconstruction is determined, where `T` is the tuple type `(T₁, ..., Tₙ)` and each `Tᵢ` is calculated as follows based on the corresponding `dᵢ` and `eᵢ`: + - if `dᵢ` is a discard or implicitly typed *declaration_expression*, and `eᵢ` has a type `Eᵢ`, then `Tᵢ` is `Eᵢ`; + - otherwise if `dᵢ` is a *deconstructor* then `Tᵢ` is the type of `dᵢ = eᵢ` determined by applying this compile-time algorithm recursively. + - otherwise if `dᵢ` has a type `Dᵢ` and there is an implicit conversion from `eᵢ` to `Dᵢ`, then `Tᵢ` is `Dᵢ`; + - otherwise `dᵢ` and `eᵢ` are incompatible, and a compile-time error results. + +The run-time processing of a deconstructing declaration, now `d = e`, proceeds as follows: + +1. In the following steps each and every `dᵢ` and `eᵢ` must be evaluated exactly once. +2. The tuple value `t`, of the form `(t₁, ..., tₙ)`, is created by converting `e` to `T` using an implicit tuple conversion (§10.2.13). +3. For each non-discard `dᵢ` in order from left to right: + - if `dᵢ` is a *declaration_expression*, `Sᵢ nᵢ` where `Sᵢ` is the type or `var`, and `nᵢ` the introduced variable name, the initialising declaration `Sᵢ nᵢ = tᵢ` is performed; + - otherwise if `dᵢ` is a variable reference the assignment `dᵢ = tᵢ` is performed; + - otherwise `dᵢ` is a nested *deconstructor* and this step (3) is recursively applied with to elements of `dᵢ` and `tᵢ`. + +> *Note* The requirement that each and every `dᵢ` and `eᵢ` is evaluated exactly once ensures that any and all side-effects of evaluating them are performed exactly once. The implicit conversion of `e` will evaluate every `eᵢ`. *end note* + +An *abridged_deconstructor* is a shorthand syntax for a *declaration_deconstructor* containing implicitly typed declaration expressions. + +```ANTLR +abridged_deconstructor + : 'var' abridged_elements + ; + +abridged_elements + : '(' abridged_element (',' abridged_element)+ ')' + ; + +abridged_element + : identifier + | abridged_elements + ; +``` + +An *abridged_deconstructor* `var (e1, ..., en)` is shorthand for the *declaration_deconstructor* `(var e1, ..., var en)` and follows the same behavior. This applies recursively to any nested *abridged_element*s in the *abridged_deconstructor*. Each identifier nested within a *abridged_deconstructor* thus introduces a declaration expression ([§12.19](expressions.md#1219-declaration-expressions)). As every abridged deconstructor has a standard (unabridged) counterpart the above description applies to them. + +> *Example*: +> The following two examples both declare two variables: a and b. The first uses a standard *declaration_deconstructor* introducing explicitly typed variables, second an *abridged_deconstructor* declaring the same variables but implicitly type – in this case the second constant requires to the `L` suffix so that `b` is `long`. +> +> +> ```csharp +> // standard declaration_deconstructor +> (int a, long b) = (1, 2); // a is 1, b is 2 +> +> // equivalent abridged_deconstructor +> var (c, d) = (1, 2L); // note the L suffix so d is inferred as long +> ``` +> +> Any of the individual elements of the assignment can itself be a deconstruction expression. For example, the following deconstruction expression assigns six variables, `a` through `f`. +> +> +> ```csharp +> var (a, b, (c, d, (e, f))) = (1, 2, (3, 4, (5, 6))); +> ``` +> +> In this example, notice that the structure of nested tuples must match on both sides of the assignment. +> +> If the variable(s) on the left side are implicitly typed, the corresponding expression must have a type: +> +> +> ```csharp +> (int a, string? b) = (42, null); // OK, LHS typed +> var (c, d) = (42, null); // Invalid as type of d cannot be inferred +> (int e, var f) = (42, null); // Invalid as type of f cannot be inferred +> var (g, h) = (10, "text"); // OK, RHS typed +> (var i, var j) = (10, "text"); // OK, RHS typed +> ``` +> +> *end example* + ### 13.6.4 Local function declarations A *local_function_declaration* declares a local function. @@ -717,7 +838,7 @@ switch_statement selector_expression : '(' expression ')' - | tuple_expression + | tuple_literal ; switch_block @@ -738,9 +859,9 @@ case_guard ; ``` -A *switch_statement* consists of the keyword `switch`, followed by a *tuple_expression* or parenthesized expression (each of which is called the *selector_expression*), followed by a *switch_block*. The *switch_block* consists of zero or more *switch_section*s, enclosed in braces. Each *switch_section* consists of one or more *switch_label*s followed by a *statement_list* ([§13.3.2](statements.md#1332-statement-lists)). Each *switch_label* containing `case` has an associated pattern ([§11](patterns.md#11-patterns-and-pattern-matching)) against which the value of the switch’s *selector_expression* is tested. If *case_guard* is present, its expression shall be implicitly convertible to the type `bool` and that expression is evaluated as an additional condition for the case to be considered satisfied. +A *switch_statement* consists of the keyword `switch`, followed by a *tuple_literal* or parenthesized expression (each of which is called the *selector_expression*), followed by a *switch_block*. The *switch_block* consists of zero or more *switch_section*s, enclosed in braces. Each *switch_section* consists of one or more *switch_label*s followed by a *statement_list* ([§13.3.2](statements.md#1332-statement-lists)). Each *switch_label* containing `case` has an associated pattern ([§11](patterns.md#11-patterns-and-pattern-matching)) against which the value of the switch’s *selector_expression* is tested. If *case_guard* is present, its expression shall be implicitly convertible to the type `bool` and that expression is evaluated as an additional condition for the case to be considered satisfied. -> *Note*: For convenience, the parentheses in *switch_statement* can be omitted when the *selector_expression* is a *tuple_expression*. For example, `switch ((a, b)) …` can be written as `switch (a, b) …`. *end note* +> *Note*: For convenience, the parentheses in *switch_statement* can be omitted when the *selector_expression* is a *tuple_literal*. For example, `switch ((a, b)) …` can be written as `switch (a, b) …`. *end note* The ***governing type*** of a `switch` statement is established by the switch’s *selector_expression*. diff --git a/standard/types.md b/standard/types.md index 865f99dfb..eb5b54df7 100644 --- a/standard/types.md +++ b/standard/types.md @@ -403,22 +403,24 @@ An enumeration type is a distinct type with named constants. Every enumeration t ### 8.3.11 Tuple types +#### §tuple-types-general General + A tuple type represents an ordered, fixed-length sequence of values with optional names and individual types. The number of elements in a tuple type is referred to as its ***arity***. A tuple type is written `(T1 I1, ..., Tn In)` with n ≥ 2, where the identifiers `I1...In` are optional ***tuple element name***s. -This syntax is shorthand for a type constructed with the types `T1...Tn` from `System.ValueTuple<...>`, which shall be a set of generic struct types capable of directly expressing tuple types of any arity between two and seven inclusive. -There does not need to exist a `System.ValueTuple<...>` declaration that directly matches the arity of any tuple type with a corresponding number of type parameters. Instead, tuples with an arity greater than seven are represented with a generic struct type `System.ValueTuple` that in addition to tuple elements has a `Rest` field containing a nested value of the remaining elements, using another `System.ValueTuple<...>` type. Such nesting may be observable in various ways, e.g. via the presence of a `Rest` field. Where only a single additional field is required, the generic struct type `System.ValueTuple` is used; this type is not considered a tuple type in itself. Where more than seven additional fields are required, `System.ValueTuple` is used recursively. +Element names within a tuple type shall be distinct. A tuple element name of the form `ItemX`, where `X` is any sequence of decimal digits with no leading zeros, is only permitted at the position denoted by `X`. -Element names within a tuple type shall be distinct. A tuple element name of the form `ItemX`, where `X` is any sequence of non-`0`-initiated decimal digits that could represent the position of a tuple element, is only permitted at the position denoted by `X`. +> *Note* This restriction on element names avoids any confusion between them and tuple field names, e.g. where element name `ItemX` is associated with field `ItemY` where `X ≠ Y`. *end note* + -The optional element names are not represented in the `ValueTuple<...>` types, and are not stored in the runtime representation of a tuple value. Identity conversions ([§10.2.2](conversions.md#1022-identity-conversion)) exist between tuples with identity-convertible sequences of element types. + +> *Note* The optional element names are not represented in the runtime representation (§tuple-runtime-representation) of a tuple value. -The `new` operator [§12.8.17.2](expressions.md#128172-object-creation-expressions) cannot be applied with the tuple type syntax `new (T1, ..., Tn)`. Tuple values can be created from tuple expressions ([§12.8.6](expressions.md#1286-tuple-expressions)), or by applying the `new` operator directly to a type constructed from `ValueTuple<...>`. +Identity conversions ([§10.2.2](conversions.md#1022-identity-conversion)) exist between tuples of the same arity with identity-convertible sequences of element types. -Tuple elements are public fields with the names `Item1`, `Item2`, etc., and can be accessed via a member access on a tuple value ([§12.8.7](expressions.md#1287-member-access). Additionally, if the tuple type has a name for a given element, that name can be used to access the element in question. +Tuple values can be created from tuple literals ([§12.8.6](expressions.md#1286-tuple-literals)), or by creating a value using the underlying runtime representation (§tuple-runtime-representation) directly. The tuple type syntax `(T1, ..., Tn)` cannot be used with the `new` operator [§12.8.17.2](expressions.md#128172-object-creation-expressions). + +Tuple elements are public fields with the names `Item1` … `ItemN`, where `N` is the tuple arity and the numbers have no leading zeros, and can be accessed via a member access on a tuple value ([§12.8.7](expressions.md#1287-member-access). Additionally, if the tuple type has a name for a given element, that name can be used to access the element in question. -> *Note*: Even when large tuples are represented with nested `System.ValueTuple<...>` values, each tuple element can still be accessed directly with the `Item...` name corresponding to its position. *end note* - - > *Example*: Given the following examples: > > @@ -427,10 +429,7 @@ Tuple elements are public fields with the names `Item1`, `Item2`, etc., and can > (int, string word) pair2 = (2, "Two"); > (int number, string word) pair3 = (3, "Three"); > (int Item1, string Item2) pair4 = (4, "Four"); -> // Error: "Item" names do not match their position -> (int Item2, string Item123) pair5 = (5, "Five"); -> (int, string) pair6 = new ValueTuple(6, "Six"); -> ValueTuple pair7 = (7, "Seven"); +> (int Item2, string Item123) pair5 = (5, "Five"); // Error: “Item” names do not match position > Console.WriteLine($"{pair2.Item1}, {pair2.Item2}, {pair2.word}"); > ``` > @@ -438,11 +437,118 @@ Tuple elements are public fields with the names `Item1`, `Item2`, etc., and can > > The tuple type for `pair4` is valid because the names `Item1` and `Item2` match their positions, whereas the tuple type for `pair5` is disallowed, because the names `Item2` and `Item123` do not. > -> The declarations for `pair6` and `pair7` demonstrate that tuple types are interchangeable with constructed types of the form `ValueTuple<...>`, and that the `new` operator is allowed with the latter syntax. -> >The last line shows that tuple elements can be accessed by the `Item` name corresponding to their position, as well as by the corresponding tuple element name, if present in the type. > *end example* +#### §eliding-tuples Eliding intermediate tuple creation + +If the result of constructing a tuple (§12.8.6) is not required outside of the context in which it is constructed implementations are explicitly allowed to elide the construction as an optimisation provided all other semantic requirements are met. + +> *Example*: Such a situation may commonly arise from deconstructing assignments ($deconstructing-assignment), deconstructing declarations (§local-deconstructing-declarations), and switch statements (§13.8.3). Consider the deconstructing assignment: +> +> ```csharp +> (a, b) = (b, a); +> ``` +> +> The right hand side `(b, a)` constructs a tuple containing the values of `b` & `a`. The left hand side deconstructor `(a, b)` then, in order, selects the first item of that tuple and assigns it to `a`, followed by assigning the second item to `b`. The overall result is the the values in `a` & `b` are exchanged, while the tuple created during this process is discarded. The explicit allowance granted here to elide such intermediate tuple construction allows an implementation to exchange the two values in whatever ways it chooses provide it evaluates `b` before `a` to meet the left-to-right evaluation order of tuple literal elements. In the code: +> +> ```csharp +> (a, b, _) = (b, a, thing.ExpensiveMethod(x)); +> ``` +> +> An implementation can also choose to exchange the two values without constructing the tuple provided the tuple elements are evaluated in order: `b`, `a` and `thing.ExpensiveMethod(x)`; before doing so. *end example* + + + +> *Note*: If an implementation elides an intermediate tuple it may also be able to elide now “redundant” (no effect) expressions. For example if an intermediate tuple is the result of an implicit tuple conversion, those implicit conversions have no side effects, and the intermediate tuple is subject to deconstruction where some elements are discarded, then it may be possible to elide the implicit conversion of those discarded elements. *end note* + +#### §tuple-runtime-representation Runtime representation + +*Note*: Unlike other types such as arrays, the runtime representation of tuple types is specified in terms of a set of generic value types, and a tuple may be directly referenced in terms of this representation. However the runtime representation of these generic value types remains implementation defined. *end note* + +The runtime representation of a tuple `(T1, ..., Tn)` is constructed from `System.ValueTuple<...>` ([§C.3](standard-library.md#c3-standard-library-types-not-defined-in-isoiec-23271)) instances which are a set of generic struct types for representing tuple types of aritys two to seven. Tuples with an arity greater than seven are represented with the generic struct type `System.ValueTuple` that in addition to tuple elements has a `Rest` field containing a nested `System.ValueTuple` of the remaining elements. Where only a single additional field is required, the generic struct type `System.ValueTuple` is used; this type is not considered a tuple type in itself. Where more than seven additional fields are required further `System.ValueTuple` instances are nested. + +> *Example*: +> +> `(T1, T2)` is represented by `ValueTuple`
+> `(T1, ..., T15)` is represented by `ValueTuple>>` +> +> *end example* + +The runtime representation of tuples is directly accessible, and tuple & `System.ValueType<...>` types may be used interchangeably subject to the following: + +- Any value of type `(T1, ..., Tn)` may be treated as the equivalent `System.ValueType<...>` value. +- Any value of type `System.ValueType` through `System.ValueType` may be treated as the equivalent `(T1, T2)` through `(T1, T2, T3, T4, T5, T6, T7)` tuple value. +- A value of type `System.ValueTuple` may only be treated as a tuple if `TRest` is a tuple or any `System.ValueTuple<...>` type, the latter including `System.ValueType`. +- Any other value of type `System.ValueType` may not be treated as a tuple. + +Any attempt to use a `System.ValueTuple<...>` value as a tuple which does not meet the above requirements is a compile-time error. + +> *Note*: Such a `System.ValueTuple<...>` value can be accessed using the public members it provides, just like any other constructed value, it just cannot be accessed as tuple. *end note* + + + +> *Example*: `ValueTuple`s which may be treated as tuples (`a` & `c`) or not (`b`): +> +> +> ```csharp +> var a = new ValueTuple(1, 2, 3, 4, 5, 6, 7); +> var (a1, a2, a3, a4, a5, a6, a7) = a; // OK, a can be treated as a tuple +> +> var b = new ValueTuple +> { Item1 = 1, Item2 = 2, Item3 = 3, Item4 = 4, +> Item5 = 5, Item6 = 6, Item7 = 7, Rest = 8 }; +> var b8 = b.Item8; // Error, b cannot be treated as an 8-tuple +> +> var c = new ValueTuple> +> (1, 2, 3, 4, 5, 6, 7, new ValueTuple(8)); +> var c8 = c.Item8; // OK, c can be treated as a tuple and so has a field Item8 +> ``` +> +> *end example* + + + +> *Example*: Interchangeability of tuple and `ValueTuple`: +> +> +> ```csharp +> (int, string) pair6 = new ValueTuple(6, "Six"); +> ValueTuple pair7 = (7, "Seven"); +> ``` +> +> The declarations for `pair6` and `pair7` demonstrate that tuple types and expressions are generally interchangeable with `ValueTuple<...>` types and object creation expressions ([§12.8.17.2](expressions.md#128172-object-creation-expressions)). +> +> *end example* + + + +> *Example*: If the runtime representation of a tuple uses instances of `System.ValueTuple` then the `Rest` field is accessible. The use of this provides different ways to reference items in large tuples. Given: +> +> +> ```csharp +> var squares = (1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225); +> ``` +> +> Then the 15th square (`225`) can be addressed as `squares.Item15`, `squares.Rest.Item8` and `squares.Rest.Rest.Item1`. +> +> *end example* + +Though tuple and `System.ValueType<...>` values may be treated as equivalent, subject to the above, there is an important semantic difference between tuple and `System.ValueType<...>` types – only the former support tuple element names (§tuple-types-general). + +> *Example*: Only tuple type syntax supports element names. However as the names are part of the compile-time type and not the value, treating a value of type `ValueTuple<...>` as a tuple can “attach” element names: +> +> +> ```csharp +> var a = new ValueTuple("Bert", 42); // Construct a ValueTuple +> (string name, int age) b = a; // Treat as a tuple with named elements +> Console.WriteLine($"{b.name} is {b.age} years old"); // Access using element names +> ``` +> +> *end example* + +In the remainder of this Standard the interchangeability of tuple and `ValueTuple<...>` types and values, as defined above, is usually taken as read and not explicitly mentioned. + ### 8.3.12 Nullable value types A ***nullable value type*** can represent all values of its underlying type plus an additional null value. A nullable value type is written `T?`, where `T` is the underlying type. This syntax is shorthand for `System.Nullable`, and the two forms can be used interchangeably. diff --git a/standard/variables.md b/standard/variables.md index e5b3d435f..2e0d898cf 100644 --- a/standard/variables.md +++ b/standard/variables.md @@ -211,8 +211,11 @@ At a given location in the executable code of a function member or an anonymous > - An initially assigned variable ([§9.4.2](variables.md#942-initially-assigned-variables)) is always considered definitely assigned. > - An initially unassigned variable ([§9.4.3](variables.md#943-initially-unassigned-variables)) is considered definitely assigned at a given location if all possible execution paths leading to that location contain at least one of the following: > - A simple assignment ([§12.23.2](expressions.md#12232-simple-assignment)) in which the variable is the left operand. +> - A deconstructing assignment (§deconstructing-assignment) in which the variable is part of the *deconstructor*. > - An invocation expression ([§12.8.10](expressions.md#12810-invocation-expressions)) or object creation expression ([§12.8.17.2](expressions.md#128172-object-creation-expressions)) that passes the variable as an output parameter. -> - For a local variable, a local variable declaration for the variable ([§13.6.2](statements.md#1362-local-variable-declarations)) that includes a variable initializer. +> - For a local variable: +> - a local variable declaration for the variable ([§13.6.2](statements.md#1362-local-variable-declarations)) that includes a variable initializer; or +> - a local deconstructing declaration (§local-deconstructing-declarations) which declares the variable. > > The formal specification underlying the above informal rules is described in [§9.4.2](variables.md#942-initially-assigned-variables), [§9.4.3](variables.md#943-initially-unassigned-variables), and [§9.4.4](variables.md#944-precise-rules-for-determining-definite-assignment). > @@ -223,13 +226,29 @@ The definite-assignment states of instance variables of a *struct_type* variable - An instance variable is considered definitely assigned if its containing *struct_type* variable is considered definitely assigned. - A *struct_type* variable is considered definitely assigned if each of its instance variables is considered definitely assigned. + Definite assignment is a requirement in the following contexts: - A variable shall be definitely assigned at each location where its value is obtained. > *Note*: This ensures that undefined values never occur. *end note* - The occurrence of a variable in an expression is considered to obtain the value of the variable, except when + The occurrence of a variable in an expression is considered to obtain the value of the variable, except when: - the variable is the left operand of a simple assignment, + - the variable is part of the left operand of a deconstructing assignment, - the variable is passed as an output parameter, or - the variable is a *struct_type* variable and occurs as the left operand of a member access. - A variable shall be definitely assigned at each location where it is passed as a reference parameter. @@ -305,7 +324,15 @@ For an expression statement *stmt* that consists of the expression *expr*: #### 9.4.4.5 Declaration statements + - If *stmt* is a declaration statement without initializers, then *v* has the same definite-assignment state at the end point of *stmt* as at the beginning of *stmt*. +- If *stmt* is a local deconstructing declaration (§local-deconstructing-declarations), then the definite-assignment state for *v* is determined as if *stmt* were a statement list, with one assignment statement for each declaration within the *declaration_deconstructor* (in the order of depth first left to right occurence). - If *stmt* is a declaration statement with initializers, then the definite-assignment state for *v* is determined as if *stmt* were a statement list, with one assignment statement for each declaration with an initializer (in the order of declaration). #### 9.4.4.6 If statements @@ -663,7 +690,7 @@ The following rule applies to these kinds of expressions: literals ([§12.8.2](e #### 9.4.4.23 General rules for expressions with embedded expressions -The following rules apply to these kinds of expressions: parenthesized expressions ([§12.8.5](expressions.md#1285-parenthesized-expressions)), tuple expressions ([§12.8.6](expressions.md#1286-tuple-expressions)), element access expressions ([§12.8.12](expressions.md#12812-element-access)), base access expressions with indexing ([§12.8.15](expressions.md#12815-base-access)), increment and decrement expressions ([§12.8.16](expressions.md#12816-postfix-increment-and-decrement-operators), [§12.9.7](expressions.md#1297-prefix-increment-and-decrement-operators)), cast expressions ([§12.9.8](expressions.md#1298-cast-expressions)), unary `+`, `-`, `~`, `*` expressions, binary `+`, `-`, `*`, `/`, `%`, `<<`, `>>`, `<`, `<=`, `>`, `>=`, `==`, `!=`, `is`, `as`, `&`, `|`, `^` expressions ([§12.12](expressions.md#1212-arithmetic-operators), [§12.13](expressions.md#1213-shift-operators), [§12.14](expressions.md#1214-relational-and-type-testing-operators), [§12.15](expressions.md#1215-logical-operators)), compound assignment expressions ([§12.23.4](expressions.md#12234-compound-assignment)), `checked` and `unchecked` expressions ([§12.8.20](expressions.md#12820-the-checked-and-unchecked-operators)), array and delegate creation expressions ([§12.8.17](expressions.md#12817-the-new-operator)) , and `await` expressions ([§12.9.9](expressions.md#1299-await-expressions)). +The following rules apply to these kinds of expressions: parenthesized expressions ([§12.8.5](expressions.md#1285-parenthesized-expressions)), tuple literals ([§12.8.6](expressions.md#1286-tuple-literals)), element access expressions ([§12.8.12](expressions.md#12812-element-access)), base access expressions with indexing ([§12.8.15](expressions.md#12815-base-access)), increment and decrement expressions ([§12.8.16](expressions.md#12816-postfix-increment-and-decrement-operators), [§12.9.7](expressions.md#1297-prefix-increment-and-decrement-operators)), cast expressions ([§12.9.8](expressions.md#1298-cast-expressions)), unary `+`, `-`, `~`, `*` expressions, binary `+`, `-`, `*`, `/`, `%`, `<<`, `>>`, `<`, `<=`, `>`, `>=`, `==`, `!=`, `is`, `as`, `&`, `|`, `^` expressions ([§12.12](expressions.md#1212-arithmetic-operators), [§12.13](expressions.md#1213-shift-operators), [§12.14](expressions.md#1214-relational-and-type-testing-operators), [§12.15](expressions.md#1215-logical-operators)), compound assignment expressions ([§12.23.4](expressions.md#12234-compound-assignment)), `checked` and `unchecked` expressions ([§12.8.20](expressions.md#12820-the-checked-and-unchecked-operators)), array and delegate creation expressions ([§12.8.17](expressions.md#12817-the-new-operator)) , and `await` expressions ([§12.9.9](expressions.md#1299-await-expressions)). Each of these expressions has one or more subexpressions that are unconditionally evaluated in a fixed order. @@ -699,11 +726,11 @@ new «type» ( «arg₁», «arg₂», … , «argₓ» ) - If the variable *v* is passed as an `out` argument (i.e., an argument of the form “out *v*”) in any of the arguments, then the state of *v* after *expr* is definitely assigned. Otherwise, the state of *v* after *expr* is the same as the state of *v* after *argₓ*. - For array initializers ([§12.8.17.4](expressions.md#128174-array-creation-expressions)), object initializers ([§12.8.17.2.2](expressions.md#1281722-object-initializers)), collection initializers ([§12.8.17.2.3](expressions.md#1281723-collection-initializers)) and anonymous object initializers ([§12.8.17.3](expressions.md#128173-anonymous-object-creation-expressions)), the definite-assignment state is determined by the expansion that these constructs are defined in terms of. -#### 9.4.4.25 Simple assignment expressions +#### 9.4.4.25 Simple and deconstructing assignment expressions Let the set of *assignment targets* in an expression *e* be defined as follows: -- If *e* is a tuple expression, then the assignment targets in *e* are the union of the assignment targets of the elements of *e*. +- If *e* is a *deconstructor*, then the assignment targets in *e* are the union of the assignment targets of the elements of *e*. - Otherwise, the assignment targets in *e* are *e*. For an expression *expr* of the form: diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-B/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-B/Reference/sample.gruntree.red.txt index da72a8c31..24280ccc7 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-B/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-B/Reference/sample.gruntree.red.txt @@ -1092,7 +1092,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1100,14 +1100,11 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local3 ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1115,10 +1112,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local4 ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1878,7 +1872,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1886,10 +1880,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ @decimal ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1985,7 +1976,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1993,10 +1984,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ @double ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -2016,7 +2004,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -2024,10 +2012,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ @double ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -2047,7 +2032,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -2055,10 +2040,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ @double ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -2123,7 +2105,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -2131,10 +2113,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ @float ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -3373,7 +3352,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -3381,14 +3360,11 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ where ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -3396,10 +3372,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ yield ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-B/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-B/Reference/sample.tree.red.txt index 33882b0e0..fe36e3347 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-B/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-B/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier My)) (namespace_body { (using_directive (using_namespace_directive using (namespace_name (namespace_or_type_name (identifier A) . (identifier B))) ;)) (namespace_member_declaration (interface_declaration interface (identifier CoContra) (variant_type_parameter_list < (variant_type_parameter (variance_annotation out) (type_parameter (identifier T))) , (variant_type_parameter (variance_annotation in) (type_parameter (identifier K))) >) (interface_body { }))) (namespace_member_declaration (delegate_declaration delegate (return_type void) (delegate_header (identifier CoContra2) (variant_type_parameter_list < (variant_type_parameter (attributes (attribute_section [ (attribute_list (attribute (attribute_name (namespace_or_type_name (identifier System) . (identifier Obsolete))) (attribute_arguments ( )))) ])) (variance_annotation out) (type_parameter (identifier T))) , (variant_type_parameter (variance_annotation in) (type_parameter (identifier K))) >) ( ) (type_parameter_constraints_clause where (type_parameter (identifier T)) : (type_parameter_constraints (primary_constraint struct))) ;))) (namespace_member_declaration (class_declaration (class_modifier public) (class_modifier (unsafe_modifier unsafe)) partial class (identifier A) (class_base : (interface_type_list (interface_type (identifier C)) , (interface_type (identifier I)))) (class_body { (class_member_declaration (method_declaration (attributes (attribute_section [ (attribute_list (attribute (attribute_name (identifier DllImport)) (attribute_arguments ( (positional_argument_list (literal "kernel32")) , (named_argument_list (named_argument (identifier SetLastError) = (attribute_argument_expression (boolean_literal true)))) )))) ])) (method_modifiers (method_modifier (ref_method_modifier static)) (method_modifier (ref_method_modifier extern))) (return_type (simple_type bool)) (method_header (member_name (identifier CreateDirectory)) ( (parameter_list (fixed_parameters (fixed_parameter (type (class_type string)) (identifier name)) , (fixed_parameter (type (identifier SecurityAttribute)) (identifier sa)))) )) (method_body ;))) (class_member_declaration (constant_declaration (constant_modifier private) const (type (integral_type int)) (constant_declarators (constant_declarator (identifier (contextual_keyword global)) = (constant_expression (additive_expression (additive_expression (member_access (predefined_type int) . (identifier MinValue))) - (multiplicative_expression (literal 1)))))) ;)) (class_member_declaration (static_constructor_declaration (static_constructor_modifiers static) (identifier A) ( ) (static_constructor_body (block { })))) (class_member_declaration (constructor_declaration (attributes (attribute_section [ (attribute_target_specifier (attribute_target (identifier method)) :) (attribute_list (identifier Obsolete)) ])) (constructor_modifier public) (constructor_declarator (identifier A) ( (parameter_list (fixed_parameter (attributes (attribute_section [ (attribute_target_specifier (attribute_target (identifier param)) :) (attribute_list (identifier Obsolete)) ])) (type (integral_type int)) (identifier foo))) ) (constructor_initializer : base ( (argument_list (literal 1)) ))) (constructor_body (block { (statement_list (statement (labeled_statement (identifier L) : (statement (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier i) = (local_variable_initializer (sizeof_expression sizeof ( (unmanaged_type (integral_type int)) ))))))) ;)) (statement (expression_statement (statement_expression (pre_increment_expression ++ (unary_expression (identifier i)))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier s1) = (expression (interpolated_regular_string_expression 〔$"〕 〔x 〕 { (regular_interpolation (expression (literal 1)) , (interpolation_minimum_width (unary_expression - (unary_expression (literal 2)))) 〔:d〕) } 〔"〕))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier s2) = (expression (interpolated_verbatim_string_expression 〔$@"〕 〔x 〕 { (verbatim_interpolation (expression (literal 1)) , (interpolation_minimum_width (unary_expression - (unary_expression (literal 2)))) 〔:d〕) } 〔"〕))))) ;))) })))) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier Console)) . (identifier WriteLine))) ( (argument_list (member_access (primary_expression (member_access (primary_expression (identifier export)) . (identifier iefSupplied))) . (identifier command))) ))) ;)) (statement (declaration_statement (local_constant_declaration const (type (nullable_value_type (non_nullable_value_type (integral_type int)) (nullable_type_annotation ?))) (constant_declarators (constant_declarator (identifier local) = (constant_expression (member_access (predefined_type int) . (identifier MaxValue)))))) ;)) (statement (declaration_statement (local_constant_declaration const (type (nullable_reference_type (non_nullable_reference_type (identifier Guid)) (nullable_type_annotation ?))) (constant_declarators (constant_declarator (identifier local0) = (constant_expression (object_creation_expression new (type (identifier Guid)) ( (argument_list (invocation_expression (primary_expression (member_access (primary_expression (identifier r)) . (identifier ToString))) ( ))) )))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier привет) = (expression (identifier local))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier мир) = (expression (identifier local))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (contextual_keyword var)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier local3) = (local_variable_initializer (literal 0))) , (explicitly_typed_local_variable_declarator (identifier local4) = (local_variable_initializer (literal 1)))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier local3)) (assignment_operator =) (expression (assignment (unary_expression (identifier local4)) (assignment_operator =) (expression (literal 1)))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier local5) = (expression (null_coalescing_expression (conditional_or_expression (relational_expression (relational_expression (null_literal null)) as (type (identifier Action)))) ?? (null_coalescing_expression (null_literal null))))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier local6) = (expression (relational_expression (relational_expression (identifier local5)) is (type (identifier Action))))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier u) = (expression (literal 1u))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier U) = (expression (literal 1U))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type long)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier hex) = (local_variable_initializer (literal 0xBADC0DE))) , (explicitly_typed_local_variable_declarator (identifier Hex) = (local_variable_initializer (literal 0XDEADBEEF))) , (explicitly_typed_local_variable_declarator (identifier l) = (local_variable_initializer (unary_expression - (unary_expression (literal 1L))))) , (explicitly_typed_local_variable_declarator (identifier L) = (local_variable_initializer (literal 1L))) , (explicitly_typed_local_variable_declarator (identifier l2) = (local_variable_initializer (literal 2l)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type ulong)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier ul) = (local_variable_initializer (literal 1ul))) , (explicitly_typed_local_variable_declarator (identifier Ul) = (local_variable_initializer (literal 1Ul))) , (explicitly_typed_local_variable_declarator (identifier uL) = (local_variable_initializer (literal 1uL))) , (explicitly_typed_local_variable_declarator (identifier UL) = (local_variable_initializer (literal 1UL))) , (explicitly_typed_local_variable_declarator (identifier lu) = (local_variable_initializer (literal 1lu))) , (explicitly_typed_local_variable_declarator (identifier Lu) = (local_variable_initializer (literal 1Lu))) , (explicitly_typed_local_variable_declarator (identifier lU) = (local_variable_initializer (literal 1lU))) , (explicitly_typed_local_variable_declarator (identifier LU) = (local_variable_initializer (literal 1LU)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier minInt32Value) = (local_variable_initializer (unary_expression - (unary_expression (literal 2147483648)))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier minInt64Value) = (local_variable_initializer (unary_expression - (unary_expression (literal 9223372036854775808L)))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (simple_type bool)) (explicitly_typed_local_variable_declarators (identifier @bool)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type byte)) (explicitly_typed_local_variable_declarators (identifier @byte)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type char)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier @char) = (local_variable_initializer (literal 'c'))) , (explicitly_typed_local_variable_declarator (identifier \u0066) = (local_variable_initializer (literal '\u0066'))) , (explicitly_typed_local_variable_declarator (identifier hexchar) = (local_variable_initializer (literal '\x0130'))) , (explicitly_typed_local_variable_declarator (identifier hexchar2) = (local_variable_initializer (cast_expression ( (type (integral_type char)) ) (unary_expression (literal 0xBAD)))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (class_type string)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier \U00000065) = (local_variable_initializer (literal "\U00000065")))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (numeric_type decimal)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier @decimal) = (local_variable_initializer (literal 1.44M)))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier @decimal)) (assignment_operator =) (expression (literal 1.2m)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (contextual_keyword dynamic)) (explicitly_typed_local_variable_declarators (identifier @dynamic)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (floating_point_type double)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier @double) = (local_variable_initializer (member_access (primary_expression (identifier M)) . (identifier PI))))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier @double)) (assignment_operator =) (expression (literal 1d)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier @double)) (assignment_operator =) (expression (literal 1D)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier @double)) (assignment_operator =) (expression (unary_expression - (unary_expression (literal 1.2e3)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (floating_point_type float)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier @float) = (local_variable_initializer (literal 1.2f)))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier @float)) (assignment_operator =) (expression (literal 1.44F)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier @int) = (local_variable_initializer (null_coalescing_expression (conditional_or_expression (identifier local)) ?? (null_coalescing_expression (unary_expression - (unary_expression (literal 1)))))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type long)) (explicitly_typed_local_variable_declarators (identifier @long)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (class_type object)) (explicitly_typed_local_variable_declarators (identifier @object)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type sbyte)) (explicitly_typed_local_variable_declarators (identifier @sbyte)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type short)) (explicitly_typed_local_variable_declarators (identifier @short)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (class_type string)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier @string) = (local_variable_initializer (literal @"""/*")))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type uint)) (explicitly_typed_local_variable_declarators (identifier @uint)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type ulong)) (explicitly_typed_local_variable_declarators (identifier @ulong)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type ushort)) (explicitly_typed_local_variable_declarators (identifier @ushort)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (contextual_keyword dynamic)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier (contextual_keyword dynamic)) = (local_variable_initializer (identifier local5)))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword add)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword alias)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier arglist) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword ascending)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword async)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword await)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword by)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword descending)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword dynamic)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword equals)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword from)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword get)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword group)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword into)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword join)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword let)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword nameof)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword on)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword orderby)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword partial)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword remove)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword select)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword set)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword var)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword when)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword where)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword yield)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier __) = (expression (literal 0))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (contextual_keyword where)) (assignment_operator =) (expression (assignment (unary_expression (contextual_keyword yield)) (assignment_operator =) (expression (literal 0)))))) ;))) })))) }))) })))) +(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier My)) (namespace_body { (using_directive (using_namespace_directive using (namespace_name (namespace_or_type_name (identifier A) . (identifier B))) ;)) (namespace_member_declaration (interface_declaration interface (identifier CoContra) (variant_type_parameter_list < (variant_type_parameter (variance_annotation out) (type_parameter (identifier T))) , (variant_type_parameter (variance_annotation in) (type_parameter (identifier K))) >) (interface_body { }))) (namespace_member_declaration (delegate_declaration delegate (return_type void) (delegate_header (identifier CoContra2) (variant_type_parameter_list < (variant_type_parameter (attributes (attribute_section [ (attribute_list (attribute (attribute_name (namespace_or_type_name (identifier System) . (identifier Obsolete))) (attribute_arguments ( )))) ])) (variance_annotation out) (type_parameter (identifier T))) , (variant_type_parameter (variance_annotation in) (type_parameter (identifier K))) >) ( ) (type_parameter_constraints_clause where (type_parameter (identifier T)) : (type_parameter_constraints (primary_constraint struct))) ;))) (namespace_member_declaration (class_declaration (class_modifier public) (class_modifier (unsafe_modifier unsafe)) partial class (identifier A) (class_base : (interface_type_list (interface_type (identifier C)) , (interface_type (identifier I)))) (class_body { (class_member_declaration (method_declaration (attributes (attribute_section [ (attribute_list (attribute (attribute_name (identifier DllImport)) (attribute_arguments ( (positional_argument_list (literal "kernel32")) , (named_argument_list (named_argument (identifier SetLastError) = (attribute_argument_expression (boolean_literal true)))) )))) ])) (method_modifiers (method_modifier (ref_method_modifier static)) (method_modifier (ref_method_modifier extern))) (return_type (simple_type bool)) (method_header (member_name (identifier CreateDirectory)) ( (parameter_list (fixed_parameters (fixed_parameter (type (class_type string)) (identifier name)) , (fixed_parameter (type (identifier SecurityAttribute)) (identifier sa)))) )) (method_body ;))) (class_member_declaration (constant_declaration (constant_modifier private) const (type (integral_type int)) (constant_declarators (constant_declarator (identifier (contextual_keyword global)) = (constant_expression (additive_expression (additive_expression (member_access (predefined_type int) . (identifier MinValue))) - (multiplicative_expression (literal 1)))))) ;)) (class_member_declaration (static_constructor_declaration (static_constructor_modifiers static) (identifier A) ( ) (static_constructor_body (block { })))) (class_member_declaration (constructor_declaration (attributes (attribute_section [ (attribute_target_specifier (attribute_target (identifier method)) :) (attribute_list (identifier Obsolete)) ])) (constructor_modifier public) (constructor_declarator (identifier A) ( (parameter_list (fixed_parameter (attributes (attribute_section [ (attribute_target_specifier (attribute_target (identifier param)) :) (attribute_list (identifier Obsolete)) ])) (type (integral_type int)) (identifier foo))) ) (constructor_initializer : base ( (argument_list (literal 1)) ))) (constructor_body (block { (statement_list (statement (labeled_statement (identifier L) : (statement (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier i) = (local_variable_initializer (sizeof_expression sizeof ( (unmanaged_type (integral_type int)) ))))))) ;)) (statement (expression_statement (statement_expression (pre_increment_expression ++ (unary_expression (identifier i)))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier s1) = (expression (interpolated_regular_string_expression 〔$"〕 〔x 〕 { (regular_interpolation (expression (literal 1)) , (interpolation_minimum_width (unary_expression - (unary_expression (literal 2)))) 〔:d〕) } 〔"〕))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier s2) = (expression (interpolated_verbatim_string_expression 〔$@"〕 〔x 〕 { (verbatim_interpolation (expression (literal 1)) , (interpolation_minimum_width (unary_expression - (unary_expression (literal 2)))) 〔:d〕) } 〔"〕))))) ;))) })))) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier Console)) . (identifier WriteLine))) ( (argument_list (member_access (primary_expression (member_access (primary_expression (identifier export)) . (identifier iefSupplied))) . (identifier command))) ))) ;)) (statement (declaration_statement (local_constant_declaration const (type (nullable_value_type (non_nullable_value_type (integral_type int)) (nullable_type_annotation ?))) (constant_declarators (constant_declarator (identifier local) = (constant_expression (member_access (predefined_type int) . (identifier MaxValue)))))) ;)) (statement (declaration_statement (local_constant_declaration const (type (nullable_reference_type (non_nullable_reference_type (identifier Guid)) (nullable_type_annotation ?))) (constant_declarators (constant_declarator (identifier local0) = (constant_expression (object_creation_expression new (type (identifier Guid)) ( (argument_list (invocation_expression (primary_expression (member_access (primary_expression (identifier r)) . (identifier ToString))) ( ))) )))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier привет) = (expression (identifier local))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier мир) = (expression (identifier local))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (contextual_keyword var)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier local3) = (local_variable_initializer (literal 0))) , (explicitly_typed_local_variable_declarator (identifier local4) = (local_variable_initializer (literal 1)))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier local3)) = (expression (simple_assignment (unary_expression (identifier local4)) = (expression (literal 1)))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier local5) = (expression (null_coalescing_expression (conditional_or_expression (relational_expression (relational_expression (null_literal null)) as (type (identifier Action)))) ?? (null_coalescing_expression (null_literal null))))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier local6) = (expression (relational_expression (relational_expression (identifier local5)) is (type (identifier Action))))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier u) = (expression (literal 1u))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier U) = (expression (literal 1U))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type long)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier hex) = (local_variable_initializer (literal 0xBADC0DE))) , (explicitly_typed_local_variable_declarator (identifier Hex) = (local_variable_initializer (literal 0XDEADBEEF))) , (explicitly_typed_local_variable_declarator (identifier l) = (local_variable_initializer (unary_expression - (unary_expression (literal 1L))))) , (explicitly_typed_local_variable_declarator (identifier L) = (local_variable_initializer (literal 1L))) , (explicitly_typed_local_variable_declarator (identifier l2) = (local_variable_initializer (literal 2l)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type ulong)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier ul) = (local_variable_initializer (literal 1ul))) , (explicitly_typed_local_variable_declarator (identifier Ul) = (local_variable_initializer (literal 1Ul))) , (explicitly_typed_local_variable_declarator (identifier uL) = (local_variable_initializer (literal 1uL))) , (explicitly_typed_local_variable_declarator (identifier UL) = (local_variable_initializer (literal 1UL))) , (explicitly_typed_local_variable_declarator (identifier lu) = (local_variable_initializer (literal 1lu))) , (explicitly_typed_local_variable_declarator (identifier Lu) = (local_variable_initializer (literal 1Lu))) , (explicitly_typed_local_variable_declarator (identifier lU) = (local_variable_initializer (literal 1lU))) , (explicitly_typed_local_variable_declarator (identifier LU) = (local_variable_initializer (literal 1LU)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier minInt32Value) = (local_variable_initializer (unary_expression - (unary_expression (literal 2147483648)))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier minInt64Value) = (local_variable_initializer (unary_expression - (unary_expression (literal 9223372036854775808L)))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (simple_type bool)) (explicitly_typed_local_variable_declarators (identifier @bool)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type byte)) (explicitly_typed_local_variable_declarators (identifier @byte)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type char)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier @char) = (local_variable_initializer (literal 'c'))) , (explicitly_typed_local_variable_declarator (identifier \u0066) = (local_variable_initializer (literal '\u0066'))) , (explicitly_typed_local_variable_declarator (identifier hexchar) = (local_variable_initializer (literal '\x0130'))) , (explicitly_typed_local_variable_declarator (identifier hexchar2) = (local_variable_initializer (cast_expression ( (type (integral_type char)) ) (unary_expression (literal 0xBAD)))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (class_type string)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier \U00000065) = (local_variable_initializer (literal "\U00000065")))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (numeric_type decimal)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier @decimal) = (local_variable_initializer (literal 1.44M)))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier @decimal)) = (expression (literal 1.2m)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (contextual_keyword dynamic)) (explicitly_typed_local_variable_declarators (identifier @dynamic)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (floating_point_type double)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier @double) = (local_variable_initializer (member_access (primary_expression (identifier M)) . (identifier PI))))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier @double)) = (expression (literal 1d)))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier @double)) = (expression (literal 1D)))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier @double)) = (expression (unary_expression - (unary_expression (literal 1.2e3)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (floating_point_type float)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier @float) = (local_variable_initializer (literal 1.2f)))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier @float)) = (expression (literal 1.44F)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier @int) = (local_variable_initializer (null_coalescing_expression (conditional_or_expression (identifier local)) ?? (null_coalescing_expression (unary_expression - (unary_expression (literal 1)))))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type long)) (explicitly_typed_local_variable_declarators (identifier @long)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (class_type object)) (explicitly_typed_local_variable_declarators (identifier @object)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type sbyte)) (explicitly_typed_local_variable_declarators (identifier @sbyte)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type short)) (explicitly_typed_local_variable_declarators (identifier @short)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (class_type string)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier @string) = (local_variable_initializer (literal @"""/*")))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type uint)) (explicitly_typed_local_variable_declarators (identifier @uint)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type ulong)) (explicitly_typed_local_variable_declarators (identifier @ulong)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type ushort)) (explicitly_typed_local_variable_declarators (identifier @ushort)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (contextual_keyword dynamic)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier (contextual_keyword dynamic)) = (local_variable_initializer (identifier local5)))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword add)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword alias)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier arglist) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword ascending)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword async)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword await)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword by)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword descending)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword dynamic)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword equals)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword from)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword get)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword group)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword into)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword join)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword let)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword nameof)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword on)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword orderby)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword partial)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword remove)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword select)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword set)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword var)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword when)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword where)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword yield)) = (expression (literal 0))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier __) = (expression (literal 0))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (contextual_keyword where)) = (expression (simple_assignment (unary_expression (contextual_keyword yield)) = (expression (literal 0)))))) ;))) })))) }))) })))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-B/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-B/Reference/sample.tree.svg index fd9e2e086..a406063af 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-B/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-B/Reference/sample.tree.svg @@ -1,12 +1,12 @@ - - - - + + + + - - - + + + @@ -17,7 +17,7 @@ - + @@ -41,7 +41,7 @@ - + @@ -93,18 +93,18 @@ - - - + + + - + - - - + + + - + @@ -114,9 +114,9 @@ - - - + + + @@ -175,7 +175,7 @@ - + @@ -203,7 +203,7 @@ - + @@ -215,9 +215,9 @@ - - - + + + @@ -229,9 +229,9 @@ - + - + @@ -263,11 +263,11 @@ - - - - - + + + + + @@ -365,7 +365,7 @@ - + @@ -393,7 +393,7 @@ - + @@ -417,7 +417,7 @@ - + @@ -454,7 +454,7 @@ - + @@ -467,7 +467,7 @@ - + @@ -480,7 +480,7 @@ - + @@ -504,7112 +504,7067 @@ - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -var + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +local_variable_initializer - - -identifier + + +( - - -local_variable_declaration + + +@short - - -привет + + +; - - -constructor_initializer + + +implicitly_typed_local_variable_declaration - - -identifier + + +var - - -) + + +expression - - -implicitly_typed_local_variable_declarator + + +statement - - -= + + +expression_statement - - -identifier + + +literal - - -; + + +〔:d〕 - - -; + + +literal - - -0 + + +explicitly_typed_local_variable_declarator - - -= + + +) - - -positional_argument_list + + +; - - + + identifier - - -return_type + + += - - -1 + + +implicitly_typed_local_variable_declarator - - -primary_expression + + +( + + + +class_modifier - - + + ; - - -explicitly_typed_local_variable_declarator + + +literal - - -type + + += - - -invocation_expression + + +equals - - -implicitly_typed_local_variable_declaration + + +statement - - -; + + +identifier - - + + +contextual_keyword + + + = - - -statement + + +unsafe_modifier - - -ulong + + += - - -declaration_statement + + +identifier - - -int + + +, - - -on + + +variance_annotation - - -identifier + + +using - - -, + + +local_variable_declaration - - -} + + +local_variable_declaration - - -"\U00000065" + + +LU + + + +sbyte - - + + +type + + + = - - + + declaration_statement - - -literal + + += - - -type + + +0 - - -s1 + + +nameof - - -literal + + +contextual_keyword - - + + +1.44M + + + local_variable_declaration - - -statement + + +declaration_statement + + + +expression + + + +var + + + +r - - -assignment_operator + + +explicitly_typed_local_variable_declarator - - + + identifier - - -? + + +identifier - - -literal + + +fixed_parameter - - -statement + + +ascending - - + + type - - -implicitly_typed_local_variable_declaration + + +statement + + + +identifier - - + + ; - - -0 + + +ToString - - -variance_annotation + + +int - - -var + + +get - - -explicitly_typed_local_variable_declaration + + +< - - -var + + +local_variable_declaration - - -method_modifier + + +dynamic - - -local6 + + +implicitly_typed_local_variable_declarator - - -= + + +- - - -= + + +identifier - - -delegate_declaration + + +static_constructor_body - - -predefined_type + + +statement_list - - -unary_expression + + +explicitly_typed_local_variable_declarator - - -( + + +member_access - - -int + + +explicitly_typed_local_variable_declaration - - -; + + +global - - -explicitly_typed_local_variable_declarators + + +{ - - -, + + +〔x·〕 - - -local_variable_initializer + + +explicitly_typed_local_variable_declarator - - -0 + + +local_variable_declaration - - -; + + +declaration_statement - - -= + + +var - - -attribute_arguments + + +; - - -1.2f + + +expression_statement - - -= + + +expression - - -object + + +attributes + + + +local_variable_declaration - - + + type - - -unary_expression + + += - - + + expression - - -contextual_keyword - - - -local_variable_declaration - - - -, + + +declaration_statement - - -statement_list + + +> - - -unary_expression + + +regular_interpolation - - -new + + +1 - - -0 + + +arglist - - -interface_type + + +declaration_statement - - -identifier + + +var - - -local_variable_declaration + + +? - - -identifier + + +; - - -K + + +Obsolete - - + + statement - - -identifier - - - -var - - - -type - - - -0 + + +implicitly_typed_local_variable_declarator - - -var + + +base - - + + = - - -type - - - -expression + + +member_access - - -explicitly_typed_local_variable_declarators + + +l - - -SecurityAttribute + + +"\U00000065" - - + + declaration_statement - - -void + + +yield - - -identifier + + +expression - - -identifier + + +explicitly_typed_local_variable_declaration - - -statement + + +- - - -, + + +1L - - -primary_expression + + +expression - - -declaration_statement + + +attribute_list - - -declaration_statement + + +implicitly_typed_local_variable_declaration - - -. + + +} - - -implicitly_typed_local_variable_declarator + + +[ - - -= + + +delegate_declaration - - -type_parameter + + +namespace_or_type_name + + + +expression_statement - - + + ; - - -dynamic + + += - - -attributes + + +char - - -local4 + + +identifier - - -[ + + +type_parameter_constraints - - -identifier + + +statement_expression + + + +) - - + + unary_expression - - -local_variable_initializer + + +explicitly_typed_local_variable_declarators - - -implicitly_typed_local_variable_declaration + + +"kernel32" - - -} + + +statement - - -argument_list + + +declaration_statement - - -invocation_expression + + += - - + + literal - - -attribute_argument_expression + + +add - - -CreateDirectory + + +variant_type_parameter_list - - + + identifier - - -explicitly_typed_local_variable_declaration + + +expression - - -is + + +implicitly_typed_local_variable_declarator - - -implicitly_typed_local_variable_declaration + + +; - - -method_body + + +literal - - + + declaration_statement - - + + identifier - - -namespace_member_declaration + + +{ - - -local_variable_declaration + + +identifier - - -fixed_parameters + + +explicitly_typed_local_variable_declarators - - -yield + + +var - - -identifier + + +implicitly_typed_local_variable_declaration - - -long + + +namespace_member_declaration - - -namespace_or_type_name + + +. - - -= + + +identifier - - -= + + +implicitly_typed_local_variable_declaration - - -const + + +attribute_target - - -explicitly_typed_local_variable_declaration + + +0 - - -1 + + +constant_expression - - -integral_type + + +@float - - -implicitly_typed_local_variable_declaration + + +contextual_keyword - - -local_variable_declaration + + +dynamic - - -implicitly_typed_local_variable_declarator + + +const - - -local_variable_declaration + + +literal - - -local_variable_declaration + + +implicitly_typed_local_variable_declaration - - -declaration_statement + + +expression - - -implicitly_typed_local_variable_declarator + + +@decimal - - -declaration_statement + + +T - - -nullable_reference_type + + +K - - -local_variable_initializer + + +〔"〕 - - + + +unary_expression + + + type - - -sa + + +1 - - -; + + +local_variable_declaration - - -local_variable_initializer + + +statement - - -constant_declarator + + +var - - -identifier + + +type - - -= + + +explicitly_typed_local_variable_declaration - - -local_variable_declaration + + +statement - - -dynamic + + +contextual_keyword + + + +explicitly_typed_local_variable_declarator + + + +local_variable_initializer + + + +Guid - - + + ; - - -A + + +statement - - -await + + +unary_expression - - -assignment + + +identifier - - -var + + +local_variable_declaration - - -= + + +local_variable_declaration - - -declaration_statement + + +local_variable_initializer - - -; + + +statement - - -( + + +0 + + + +expression - - + + = - - -public + + +contextual_keyword - - -) + + +local6 - - -explicitly_typed_local_variable_declarator + + +var - - -int + + +identifier - - -1UL + + +local_variable_declaration - - -qualified_identifier + + +method_modifiers - - -declaration_statement + + +0 - - -] + + +identifier - - -local_variable_declaration + + +attribute_name - - -local_variable_declaration + + +foo - - -) + + +> - - -implicitly_typed_local_variable_declaration + + +, - - -@object + + +int - - -implicitly_typed_local_variable_declaration + + +alias - - -var + + +explicitly_typed_local_variable_declarators - - -uL + + +literal - - + + local_variable_declaration - - -char + + +A - - -expression + + +declaration_statement - - -= + + +declaration_statement - - + + identifier - - + + +explicitly_typed_local_variable_declarators + + + +contextual_keyword + + + identifier - - + + implicitly_typed_local_variable_declarator - - -〔$"〕 + + +identifier - - -char + + +explicitly_typed_local_variable_declaration - - -u + + +expression_statement - - -lu + + += - - -implicitly_typed_local_variable_declaration + + +multiplicative_expression - - -assignment_operator + + +( - - -class_base + + +0 - - -; + + +. - - + + declaration_statement - - -MinValue + + +expression - - -simple_type + + +local_variable_initializer - - + + local_variable_declaration - - -expression + + +literal - - -add + + +0XDEADBEEF - - -predefined_type + + +declaration_statement - - -sizeof + + +local_variable_initializer - - + + = - - -L + + += - - -select + + +. - - -implicitly_typed_local_variable_declaration + + +declaration_statement - - -; + + +identifier - - -expression_statement + + +] - - -assignment + + +statement - - -literal + + +; - - -expression + + +attribute_list - - -; + + +var - - -descending + + +statement_expression - - -integral_type + + +var - - -implicitly_typed_local_variable_declaration + + +привет - - -expression + + +var - - + + +local_variable_declaration + + + declaration_statement - - -; + + +expression - - -statement + + +type - - -local_variable_declaration + + +local0 - - -local_variable_declaration + + +〔$"〕 - - + + +identifier + + + local_variable_initializer - - + + identifier - - -var - - - -equals + + +; - - -0 + + +C - - -identifier - - - -implicitly_typed_local_variable_declarator - - - -statement - - - -@decimal + + +new - - -integral_type + + +, - - -@ushort + + +member_name - - -identifier + + +explicitly_typed_local_variable_declaration - - + + ; - - -Ul + + +; - - -statement + + +local3 - - -unary_expression + + +( - - -fixed_parameter + + +, - - -expression + + +prog - - -< + + +. - - -= + + +interpolation_minimum_width - - -int + + +0 - - -local0 + + +attribute_target_specifier - - -object_creation_expression + + +implicitly_typed_local_variable_declaration - - -identifier + + +explicitly_typed_local_variable_declarators - - -1Ul + + +. - - + + implicitly_typed_local_variable_declarator - - -1L + + +decimal - - -class_member_declaration + + +local_variable_declaration - - -= + + +; - - -literal + + +namespace_member_declaration - - -unary_expression + + +1.2e3 - - -Guid + + +Action - - -expression + + +type - - -} + + +identifier - - -local_variable_declaration + + +explicitly_typed_local_variable_declarators - - -= + + +local_variable_declaration - - + + contextual_keyword - - -statement_expression + + +implicitly_typed_local_variable_declaration - - -i + + +identifier - - -statement + + +declaration_statement - - -) + + +type - - + + = - - -return_type - - - -global - - - + + identifier - - -SetLastError - - - -explicitly_typed_local_variable_declarators - - - -expression_statement + + += - - + + statement - - -ref_method_modifier + + +identifier - - -iefSupplied + + +local_variable_declaration - - -member_access + + +statement - - + + +explicitly_typed_local_variable_declaration + + + local_variable_initializer - - -contextual_keyword + + +literal - - -variance_annotation + + +local - - -expression + + +identifier - - -2 + + +implicitly_typed_local_variable_declarator - - + + explicitly_typed_local_variable_declarator - - -identifier + + +explicitly_typed_local_variable_declarator - - -[ + + +type - - -explicitly_typed_local_variable_declarators + + +local_variable_declaration - - -member_access + + +primary_expression - - + + +local_variable_declaration + + + expression - - + + hexchar - - -0 - - - -unary_expression + + +identifier - - -integral_type + + +identifier - - -assignment + + +declaration_statement - - -= + + +constant_modifier - - + + 0 - - -__ + + +explicitly_typed_local_variable_declaration - - -( + + +fixed_parameter - - -1.2e3 + + +local_variable_declaration - - -statement + + +out - - + + statement - - -declaration_statement + + +) - - -local_variable_initializer + + +implicitly_typed_local_variable_declarator - - -System + + +@double - - -statement + + +expression - - -unary_expression + + +implicitly_typed_local_variable_declarator - - -{ + + +identifier - - -= + + +simple_assignment - - -0 + + +identifier - - -1.44M + + +expression - - -local_variable_initializer + + +; - - + + literal - - -statement + + +identifier - - -; + + +attributes - - -null_coalescing_expression + + +++ - - -unary_expression + + +long - - -identifier + + +; - - + + +literal + + + +local_variable_initializer + + + identifier - - -literal + + +local_variable_declaration - - -implicitly_typed_local_variable_declarator + + +void - - -expression + + +declaration_statement - - -constant_modifier + + +declaration_statement - - -0 + + +local - - -= + + +class_member_declaration - - -var + + +, - - -identifier + + +unary_expression - - -literal + + +variant_type_parameter - - -integral_type + + +type_parameter - - -uint + + +constructor_modifier - - -. + + +explicitly_typed_local_variable_declaration - - -= + + +literal - - -1ul + + +literal - - + + implicitly_typed_local_variable_declarator - - -assignment + + +cast_expression - - -literal + + +as - - -local_variable_declaration + + +ul - - -type + + +identifier + + + +WriteLine + + + +expression_statement + + + +local_variable_initializer - - + + ; - - + + expression - - -1uL + + +declaration_statement - - -type + + +literal - - -statement + + +local_variable_declaration - - -interface + + +literal - - + + identifier - - + + local_variable_initializer - - -; - - - + + literal - - -local + + +variance_annotation - - -ul + + += - - -; + + +: - - -statement_expression + + +null_coalescing_expression - - -identifier + + +local_variable_declaration - - -literal + + +unary_expression - - -declaration_statement + + +identifier - - -( + + += - - + + var - - -( + + +identifier - - -const + + +var - - + + = - - -] + + +implicitly_typed_local_variable_declarator - - -integral_type + + +) - - -local_variable_declaration + + +@sbyte - - -local_variable_declaration + + +dynamic - - -= + + +statement - - -decimal + + +; - - -implicitly_typed_local_variable_declarator + + +hex - - -var + + +int - - -. + + += - - -expression + + +member_access - - -DllImport + + +〔x·〕 - - -local_variable_declaration + + +statement - - -0 + + += - - -when + + +implicitly_typed_local_variable_declarator - - -: + + +identifier - - -declaration_statement + + +type - - -contextual_keyword + + +statement_list - - -explicitly_typed_local_variable_declarator + + +Action - - + + identifier - - -identifier + + +declaration_statement - - -identifier + + +unary_expression - - -( + + +statement + + + +declaration_statement - - + + statement - - -; + + +var - - -= + + +- - - -statement + + +expression - - -= + + +T - - -identifier + + +contextual_keyword - - -@bool + + +hexchar2 - - + + identifier - - -identifier + + +unary_expression - - -simple_type + + +explicitly_typed_local_variable_declarator - - -contextual_keyword + + +1d + + + +expression_statement - - + + ; - - -assignment_operator + + +implicitly_typed_local_variable_declarator - - -local_constant_declaration - - - -〔x·〕 - - - -explicitly_typed_local_variable_declaration - - - -cast_expression + + +K - - -identifier + + +literal - - -identifier + + +u - - -expression + + +explicitly_typed_local_variable_declarators - - -implicitly_typed_local_variable_declarator + + +; - - -var + + += - - -0 + + +double - - -identifier + + +1 - - -command + + +literal - - -member_access + + +literal - - -expression + + +; - - -conditional_or_expression + + +static - - -- + + +local_variable_initializer - - -expression + + +0 - - -@char + + +identifier - - -member_access + + +; - - + + statement - - + + = - - -null_coalescing_expression - - - -explicitly_typed_local_variable_declarator + + +type - - + + statement - - -1 - - - -= - - - -) - - - -identifier - - - -} - - - -foo - - - -; - - - -identifier + + +: - - -?? + + +explicitly_typed_local_variable_declaration - - -@uint + + +literal - - + + { - - -implicitly_typed_local_variable_declaration - - - -where - - - -- - - - -local_variable_initializer - - - + + literal - - -name + + +1ul - - -= + + +qualified_identifier - - -type + + +; - - -constructor_body + + +member_access - - -local_variable_declaration + + +statement_expression + + + +relational_expression - - + + declaration_statement - - -explicitly_typed_local_variable_declaration + + +implicitly_typed_local_variable_declarator - - -explicitly_typed_local_variable_declarators + + +primary_expression - - -literal + + +attributes - - -integral_type + + +implicitly_typed_local_variable_declarator - - -expression_statement + + +object_creation_expression - - -statement_expression + + +\u0066 - - -identifier + + +2 - - -parameter_list + + +expression - - + + explicitly_typed_local_variable_declaration - - -@double - - - -attribute_target_specifier - - - -( - - - -expression - - - -type + + +local_variable_declaration - - -declaration_statement + + +identifier - - -primary_expression + + +export - - + + expression - - -literal - - - -explicitly_typed_local_variable_declarator - - - + + identifier - - -declaration_statement - - - -0 - - - -method_modifiers + + +explicitly_typed_local_variable_declarators - - -declaration_statement + + +identifier explicitly_typed_local_variable_declarators - - -explicitly_typed_local_variable_declaration - - - -Lu + + +local5 - - -'\x0130' + + +type - - -, + + += - - -UL + + +statement - - + + ; - - -explicitly_typed_local_variable_declaration - - - -identifier + + +statement - - + + var - - -explicitly_typed_local_variable_declarators + + +declaration_statement - - -= + + +interpolation_minimum_width + + + +: + + + +constructor_initializer - - + + literal - - -local_variable_declaration + + +class_body - - -implicitly_typed_local_variable_declaration + + += - - -var + + +integral_type - - + + identifier - - + + identifier - - -; - - - -explicitly_typed_local_variable_declarators + + +identifier - - + + identifier - - + + = - - -expression + + +statement - - -expression + + +non_nullable_value_type + + + +explicitly_typed_local_variable_declarator - - + + statement - - -var + + +0 - - -statement + + +from - - -type + + +{ - - -) + + +] - - -Hex + + +return_type - - -Action + + +explicitly_typed_local_variable_declaration - - -type_parameter + + +identifier - - -local_variable_declaration + + +var - - -ulong + + +〔$@"〕 - - -implicitly_typed_local_variable_declarator + + +type - - -string + + += - - -; + + +implicitly_typed_local_variable_declaration + + + += - - + + identifier - - -PI + + +identifier - - -explicitly_typed_local_variable_declaration + + +when - - -member_access + + +〔:d〕 - - -method_declaration + + +implicitly_typed_local_variable_declaration - - -assignment + + +explicitly_typed_local_variable_declaration - - -local_variable_initializer + + +statement - - -integral_type + + +implicitly_typed_local_variable_declarator - - -local_variable_declaration + + +contextual_keyword - - -; + + +var - - -explicitly_typed_local_variable_declarators + + +statement_expression - - -; + + +contextual_keyword - - -integral_type + + +statement - - -type + + +integral_type - - -literal + + +identifier - - -var + + +, - - -) + + +1u - - -; + + +integral_type - - -implicitly_typed_local_variable_declarator + + +simple_type - - -variant_type_parameter_list + + +0 - - -literal + + +i - - -nullable_value_type + + +local_variable_initializer - - + + identifier - - -delegate_header + + +statement - - -1u + + +unary_expression - - -( + + += - - -null_literal + + += - - -local_variable_initializer + + +attribute_section - - -literal + + +identifier + + + +method_declaration - - + + declaration_statement - - -local_variable_declaration + + +identifier - - -expression + + +explicitly_typed_local_variable_declarator - - -implicitly_typed_local_variable_declarator + + +local_variable_declaration - - -dynamic + + +var - - -, + + +var - - -statement + + +expression - - -, + + +type - - -delegate + + +declaration_statement - - -constant_declarators + + +implicitly_typed_local_variable_declaration - - -local_constant_declaration + + +primary_expression - - -literal + + +: - - -integral_type + + +constant_expression - - -identifier + + +local_variable_declaration - - -contextual_keyword + + +implicitly_typed_local_variable_declaration - - -identifier + + +statement - - -identifier + + +literal - - -identifier + + +local_variable_declaration - - + + ; - - -implicitly_typed_local_variable_declarator + + +; - - -integral_type + + +dynamic - - -literal + + +expression - - -CoContra + + +explicitly_typed_local_variable_declarators - - + + explicitly_typed_local_variable_declarators - - -; + + +literal - - -statement + + +type - - -contextual_keyword + + +unary_expression - - -attributes + + +) - - -as + + +local_variable_initializer - - + + statement - - -identifier + + +UL - - -implicitly_typed_local_variable_declaration + + +statement - - + + literal - - -Guid + + +; - - + + var - - -local_variable_initializer + + +where - - -identifier + + +expression - - -sbyte + + +statement - - -join + + +; - - -local_variable_declaration + + +identifier - - -explicitly_typed_local_variable_declarator + + +, - - -1U + + +implicitly_typed_local_variable_declaration - - -explicitly_typed_local_variable_declaration + + +expression - - -local_variable_declaration - - - -var - - - -r + + +0xBADC0DE - - -〔x·〕 + + +; - - -set + + +expression - - -attribute_section + + +literal - - -1 + + +null_coalescing_expression - - -implicitly_typed_local_variable_declaration + + +1LU - - -, + + += - - -namespace_name + + +long - - -class_type + + +implicitly_typed_local_variable_declarator - - + + = - - -statement + + +identifier - - -= + + +statement_expression - - -literal + + +constant_declarators - - -declaration_statement + + +literal - - -var + + +identifier - - -constant_declarator + + +; - - -( + + +await - - -Obsolete + + +literal - - -explicitly_typed_local_variable_declaration + + +on - - -string + + +implicitly_typed_local_variable_declarator - - -explicitly_typed_local_variable_declarator + + +System - - + + literal - - -identifier - - - -statement - - - -declaration_statement + + +interpolated_verbatim_string_expression - - -; + + +explicitly_typed_local_variable_declarators - - -. + + +'\x0130' - - -identifier + + +block - - + + expression - - -= - - - -identifier + + +declaration_statement - - -type + + +2l - - -0 + + +A - - -{ + + +declaration_statement - - + + local_variable_declaration - - -local5 + + +ref_method_modifier - - -implicitly_typed_local_variable_declaration + + +literal - - -let + + +( - - -] + + +contextual_keyword - - -implicitly_typed_local_variable_declaration + + +lU - - -local_variable_declaration + + +declaration_statement - - -var + + +statement - - -interface_type + + +declaration_statement - - -expression + + +declaration_statement - - -; + + +@decimal - - -"kernel32" + + +0 - - -attribute_target + + +identifier - - -implicitly_typed_local_variable_declaration + + +expression - - -K + + +statement - - + + identifier - - -class_body + + +integral_type - - -sizeof_expression + + +namespace_member_declaration - - -literal + + +pre_increment_expression - - -T + + +literal - - -implicitly_typed_local_variable_declarator + + +@uint - - -identifier + + +constant_expression - - + + identifier - - -var - - - -method + + +literal - - -interface_declaration + + +; - - -, + + +ulong - - -implicitly_typed_local_variable_declarator + + += - - -- + + +int - - -null + + +unmanaged_type - - -named_argument + + +simple_assignment - - -local + + +@long - - + + var - - -= + + +local_variable_initializer - - -identifier + + +statement - - -class_type + + +identifier - - -1d + + +positional_argument_list - - -literal + + +explicitly_typed_local_variable_declarator - - -> + + +var - - -relational_expression + + +( - - -integral_type + + +int - - -local_variable_declaration + + +; - - -into + + +async - - -literal + + +, - - -nullable_type_annotation - - - -local_variable_declaration - - - -member_name - - - -0 - - - -type_parameter - - - -implicitly_typed_local_variable_declarator - - - -type_parameter_constraints - - - + + identifier - - + + declaration_statement - - -local_variable_declaration - - - -statement - - - -explicitly_typed_local_variable_declarator - - - -. + + += - - -literal + + +implicitly_typed_local_variable_declarator - - -type + + +} - - + + implicitly_typed_local_variable_declaration - - -statement - - - -class_member_declaration + + +integral_type - - -assignment_operator + + +identifier - - -; + + +explicitly_typed_local_variable_declarator - - -nameof + + +identifier - - -= + + +explicitly_typed_local_variable_declarator - - -out + + +statement - - -type_parameter + + +simple_assignment - - + + ? - - -) - - - -explicitly_typed_local_variable_declarators - - - -implicitly_typed_local_variable_declarator - - - -class_type + + +var - - -statement + + +identifier - - -declaration_statement + + +unary_expression - - -; + + +orderby - - + + local_variable_initializer - - -explicitly_typed_local_variable_declaration + + +ulong - - -hex + + +contextual_keyword - - -attribute_list + + +local_variable_declaration - - + + ; - - -literal - - - -= - - - -statement - - - -CoContra2 + + +explicitly_typed_local_variable_declaration - - + + identifier - - -{ - - - -T - - - -class_member_declaration + + +var - - -@double + + +declaration_statement - - -M + + += - - -local4 + + +local_variable_declaration - - -relational_expression + + +block - - -unsafe + + +iefSupplied - - -explicitly_typed_local_variable_declarator + + +) - - -implicitly_typed_local_variable_declarator + + +literal - - -declaration_statement + + += - - -non_nullable_value_type + + +; - - -explicitly_typed_local_variable_declarators + + +name - - -assignment + + +declaration_statement - - -statement_expression + + +local_variable_declaration - - -type + + +uint - - -constant_expression + + +literal - - -interpolation_minimum_width + + +local_variable_initializer - - -statement + + +implicitly_typed_local_variable_declaration - - -contextual_keyword + + +namespace_name - - -integral_type + + += - - -implicitly_typed_local_variable_declaration + + +explicitly_typed_local_variable_declarators - - -] + + +; - - + + literal - - -; - - - -) + + +class_type - - + + contextual_keyword - - -in + + +identifier - - -literal + + +variant_type_parameter_list - - -. + + +expression_statement - - -statement_expression + + +integral_type - - -int + + +conditional_or_expression - - -unary_expression + + +non_nullable_reference_type - - -struct + + +literal - - -static_constructor_body + + +local_variable_initializer - - -type + + +class_member_declaration - - -declaration_statement + + +class - - -unary_expression + + += - - -identifier + + +local_variable_declaration - - -identifier + + +variance_annotation - - -local5 + + +L - - + + += + + + statement - - -static + + +implicitly_typed_local_variable_declarator - - -local3 + + +string - - + + identifier - - -float - - - -contextual_keyword - - - -declaration_statement + + +- - - -0 + + +null - - -literal + + +attribute_target - - -identifier + + +@int - - -I + + +implicitly_typed_local_variable_declaration - - -constructor_modifier + + +Hex - - + + declaration_statement - - -identifier + + +type_parameter - - + + identifier - - -- + + +variant_type_parameter - - -contextual_keyword + + +additive_expression - - -implicitly_typed_local_variable_declaration + + +@float - - -1D + + +member_access - - -; + + +implicitly_typed_local_variable_declaration - - -implicitly_typed_local_variable_declarator + + +type_parameter - - -assignment + + +1 - - -relational_expression + + +identifier - - -\U00000065 + + +local - - -, + + +attribute_argument_expression - - -local_variable_initializer + + +2 - - -; + + +relational_expression - - -expression + + +local_variable_declaration - - -; + + +constant_declarator - - + + declaration_statement - - -Obsolete - - - -literal - - - -explicitly_typed_local_variable_declarators - - - -: - - - -explicitly_typed_local_variable_declarator - - - -type + + +identifier - - -explicitly_typed_local_variable_declaration + + +@ulong - - + + statement - - -argument_list - - - -literal - - - -parameter_list - - - -additive_expression - - - -= + + +constant_declarators - - -identifier + + +declaration_statement - - + + = - - -statement_expression + + +struct - - -expression_statement + + +interface_type_list - - -@sbyte + + += - - -WriteLine + + +, - - -variant_type_parameter + + +namespace - - -const + + +constructor_body - - -orderby + + +literal - - -expression + + +integral_type - - -expression + + +} - - -implicitly_typed_local_variable_declarator + + +0 - - -local_variable_initializer + + += - - + + literal - - -implicitly_typed_local_variable_declarator - - - -implicitly_typed_local_variable_declarator + + +unary_expression - - -attribute_target + + +0 - - -local_variable_declaration + + +statement - - -unary_expression + + +explicitly_typed_local_variable_declaration - - + + expression - - -declaration_statement - - - + + var - - -unary_expression + + +where - - -implicitly_typed_local_variable_declarator + + +expression + + + +statement + + + +{ - - + + 0 - - -identifier + + +contextual_keyword - - + + declaration_statement - - -nullable_type_annotation + + +null_literal - - -type + + +unary_expression - - -declaration_statement + + +identifier - - -attribute_section + + +, - - + + +explicitly_typed_local_variable_declarator + + + +simple_assignment + + + statement - - -var + + +identifier - - -variance_annotation + + +} - - -primary_expression + + +explicitly_typed_local_variable_declarator - - -declaration_statement + + +implicitly_typed_local_variable_declarator - - -literal + + +implicitly_typed_local_variable_declaration named_argument_list - - -declaration_statement - - - -statement - - - + + explicitly_typed_local_variable_declarators - - + + +identifier + + + , - - -; + + += - - -literal + + +type - - -explicitly_typed_local_variable_declaration + + +statement_expression - - -statement + + +identifier - - -explicitly_typed_local_variable_declarators + + +method_modifier - - -; + + +implicitly_typed_local_variable_declaration - - -〔:d〕 + + +conditional_or_expression - - -local_variable_declaration + + +0 - - -literal + + +expression - - -contextual_keyword + + +identifier - - -declaration_statement + + +expression - - -using + + +9223372036854775808L - - -additive_expression + + +1lu - - -identifier + + +local3 - - + + += + + + +contextual_keyword + + + type - - -statement + + +, - - -l2 + + +expression - - -} + + +in - - -= + + +verbatim_interpolation - - -declaration_statement + + +statement - - + + implicitly_typed_local_variable_declaration - - -; - - - -= + + +@double - - -byte + + +I - - -local5 + + +method_modifier - - -local_variable_initializer + + +) - - + + implicitly_typed_local_variable_declaration - - -declaration_statement + + +constant_declaration - - + + declaration_statement - - -мир + + +literal - - -type + + +declaration_statement - - + + identifier - - -integral_type + + +constant_declarator + + + += - - + + local_variable_declaration - - -= + + +extern - - -ToString + + +, + + + +type + + + +statement_expression + + + +identifier - - + + ; - - + + +unary_expression + + + +statement + + + +statement + + + +statement + + + , - - -local_variable_declaration + + +minInt32Value - - -local_variable_declaration + + += - - -assignment_operator + + +statement - - -contextual_keyword + + +int - - -, + + +Ul + + + +explicitly_typed_local_variable_declarator + + + +int + + + +method + + + +( + + + +var + + + +attribute - - -type + + +select - - -statement + + += - - -attribute_section + + +expression - - -identifier + + +fixed_parameters - - + + statement - - -; + + +primary_expression - - -explicitly_typed_local_variable_declarator + + +@double - - -〔"〕 + + +identifier - - -statement + + +declaration_statement - - -local_variable_declaration + + +labeled_statement - - -1 + + +boolean_literal + + + +type - - + + contextual_keyword - - -local_variable_declaration + + +simple_type - - -statement + + +; - - -public + + +1.2m - - -by + + +local_variable_declaration - - -= + + +мир - - -statement + + +; - - -type_parameter + + +attribute_section - - + + contextual_keyword - - -class + + +contextual_keyword - - -null + + +string - - -primary_expression + + +local_variable_declaration - - -explicitly_typed_local_variable_declarators + + +expression - - -explicitly_typed_local_variable_declarators + + +implicitly_typed_local_variable_declaration - - -constructor_declarator + + +local_variable_declaration - - -0 + + +; - - -local_variable_initializer + + +var - - -explicitly_typed_local_variable_declarators + + +statement - - -statement_expression + + +attribute_list - - -constructor_declaration + + +type - - -identifier + + +implicitly_typed_local_variable_declarator - - -statement + + +] - - -statement + + +{ - - -primary_expression + + +contextual_keyword + + + +'c' - - + + ; - - + + +type + + + explicitly_typed_local_variable_declaration - - -literal + + +declaration_statement - - -int + + +local4 - - -statement + + +null_literal - - -unary_expression + + +implicitly_typed_local_variable_declarator - - -0 + + +explicitly_typed_local_variable_declaration - - + + contextual_keyword - - -expression - - - -; - - - -type + + +@byte - - -identifier + + +explicitly_typed_local_variable_declarators - - -verbatim_interpolation + + +. - - -unary_expression + + +string - - -local_variable_initializer + + +0 - - + + declaration_statement - - -identifier - - - -s2 - - - -local_variable_declaration - - - -statement + + +where - - + + explicitly_typed_local_variable_declaration - - -identifier + + +Lu - - -} + + +identifier - - + + explicitly_typed_local_variable_declarator - - -explicitly_typed_local_variable_declarator + + +var - - -double + + +parameter_list - - -= + + +- - - -expression + + +class_type - - -implicitly_typed_local_variable_declaration + + +attribute_arguments - - -identifier + + +; - - -declaration_statement + + +delegate - - -statement + + +primary_expression - - + + declaration_statement - - -type_parameter_constraints_clause + + +explicitly_typed_local_variable_declarators - - -variance_annotation + + +; - - -= + + +{ - - -= + + +attribute_target_specifier - - -local_variable_declaration + + +- - - -identifier + + +invocation_expression - - -declaration_statement + + +unary_expression - - -literal + + += - - + + identifier - - -param - - - -literal - - - -- + + +identifier - - -attribute_list + + +method_header - - -declaration_statement + + +local_variable_declaration - - -; + + +local_variable_initializer - - -@"""/*" + + +2147483648 - - + + ; - - -identifier + + +named_argument - - -member_access + + +@char - - -local_variable_initializer + + +implicitly_typed_local_variable_declaration - - -expression + + +constant_declarator - - -static_constructor_declaration + + +local_constant_declaration - - -local_variable_declaration + + +implicitly_typed_local_variable_declarator - - -statement + + +implicitly_typed_local_variable_declarator - - -identifier + + +; - - -< + + +nullable_type_annotation - - -contextual_keyword + + +integral_type - - -statement + + += - - -var + + +declaration_statement - - -type + + +Obsolete + + + +s1 - - + + 0 - - -literal + + +additive_expression + + + += + + + +CoContra - - + + statement - - -literal + + +local_variable_declaration - - -using_namespace_directive + + +@string - - -@dynamic + + +1 - - -unary_expression + + += - - -0 + + +declaration_statement - - -L + + +by - - -2 + + +identifier + + + +private + + + +declaration_statement + + + +implicitly_typed_local_variable_declaration - - + + 0 - - -literal + + +identifier - - + + ; - - -implicitly_typed_local_variable_declarator + + +explicitly_typed_local_variable_declaration - - -ref_method_modifier + + +class_type - - + + identifier - - -local_variable_declaration + + +contextual_keyword - - -async + + +identifier - - -explicitly_typed_local_variable_declarator + + +contextual_keyword - - -type + + +predefined_type - - -local3 + + +explicitly_typed_local_variable_declarator - - -= + + +identifier - - -explicitly_typed_local_variable_declaration + + +; - - -, + + +local_variable_declaration - - -= + + +} - - -yield + + +floating_point_type - - -null_literal + + +integral_type - - -; + + +literal - - -local_variable_initializer + + +identifier - - -; + + +interface_type - - -contextual_keyword + + +implicitly_typed_local_variable_declarator - - + + = - - -local_variable_initializer + + +; - - -identifier + + +int - - -0 + + +explicitly_typed_local_variable_declarators - - -implicitly_typed_local_variable_declarator + + +type - - -explicitly_typed_local_variable_declarator + + +literal - - -contextual_keyword + + +statement - - -local_variable_declaration + + +; + + + +; - - + + statement - - -expression + + +var - - -local_variable_declaration + + +int - - -partial + + +0 - - -local_variable_initializer + + +namespace_body - - -variant_type_parameter + + +explicitly_typed_local_variable_declarators - - -@decimal + + +bool - - -identifier + + +true - - -var + + += - - -constant_expression + + += - - -statement + + +identifier - - -LU + + +contextual_keyword - - -hexchar2 + + +remove - - -= + + +SecurityAttribute - - -long + + +explicitly_typed_local_variable_declarator - - -: + + +?? - - -identifier + + +unary_expression - - -identifier + + +attributes - - -B + + +integral_type - - -identifier + + +join - - -) + + += + + + +into + + + +Obsolete - - + + local_variable_declaration - - -A - - - -attribute_section + + +identifier - - -literal + + +group - - -expression + + +( - - -0 + + +identifier - - + + local_variable_declaration - - -member_access + + +type - - -[ + + +identifier - - + + ; - - -dynamic + + +nullable_reference_type - - -contextual_keyword + + +identifier + + + +null_coalescing_expression + + + +statement - - + + literal - - -explicitly_typed_local_variable_declarators + + +Guid - - -expression + + +var - - -implicitly_typed_local_variable_declaration + + +identifier - - -{ + + +( + + + +statement_expression - - + + local_variable_declaration - - + + +) + + + local_variable_declaration - - + + explicitly_typed_local_variable_declarator - - -identifier - - - -where + + +implicitly_typed_local_variable_declarator - - -[ + + +: - - -identifier + + +explicitly_typed_local_variable_declaration - - -expression_statement + + +implicitly_typed_local_variable_declaration - - -string + + +invocation_expression - - -= + + +local5 - - -statement + + +method_body - - -unmanaged_type + + +implicitly_typed_local_variable_declarator - - + + = - - -literal + + +unary_expression - - -var + + +1Ul - - -literal + + +public - - -contextual_keyword + + +1L - - + + identifier - - -contextual_keyword - - - -attribute_arguments - - - -, + + +identifier - - -( + + +null - - + + local_variable_declaration - - -declaration_statement - - - -implicitly_typed_local_variable_declarator + + +, - - -\u0066 + + += - - + + identifier - - -attributes + + +local_variable_declaration - - -type + + +contextual_keyword - - -interface_body + + +primary_expression - - + + identifier - - -; - - - -literal + + +identifier - - -statement_list + + +identifier - - -C + + +} - - + + literal - - -= - - - -var - - - -local_variable_initializer - - - -) + + +expression - - -@short + + +local_variable_declaration - - + + declaration_statement - - -literal + + +local_variable_declaration - - -explicitly_typed_local_variable_declarator + + +] - - -method_header + + +member_access - - -; + + +statement - - -var + + +type - - -implicitly_typed_local_variable_declaration + + +identifier - - -declaration_statement + + +expression - - -contextual_keyword + + +PI - - -type + + +l2 - - -, + + +implicitly_typed_local_variable_declarator - - -statement + + +namespace_or_type_name - - -declaration_statement + + +identifier - - -namespace_declaration + + +literal + + + +; statement - - -constant_declarators + + +interpolated_regular_string_expression - - -MaxValue + + +implicitly_typed_local_variable_declaration - - -identifier + + +integral_type - - -1Lu + + +literal - - -1 + + +using_namespace_directive - - -implicitly_typed_local_variable_declaration + + +〔"〕 - - + + +local_variable_declaration + + + +contextual_keyword + + + identifier - - -T + + +0 + + + +floating_point_type + + + +implicitly_typed_local_variable_declaration + + + +unary_expression - - -; + + +integral_type - - -declaration_statement + + +literal - - -minInt32Value + + +lu - - -. + + +simple_assignment - - -block + + +class_declaration - - -i + + +unary_expression - - + + argument_list - - + + implicitly_typed_local_variable_declarator - - -= + + +@double - - -declaration_statement + + +var - - -contextual_keyword + + +local_variable_initializer - - -local_variable_declaration + + +declaration_statement - - -type + + +; - - -pre_increment_expression + + +@"""/*" - - -fixed_parameter + + +statement - - -class_declaration + + +statement - - -, + + +local_variable_initializer - - -integral_type + + +s2 - - + + identifier - - -alias - - - -identifier + + +implicitly_typed_local_variable_declarator - - -unary_expression + + +interface_type - - -expression + + +integral_type - - -from + + +uL - - -unary_expression + + +expression - - + + ; - - -implicitly_typed_local_variable_declaration + + +parameter_list - - -var + + +local_constant_declaration - - -explicitly_typed_local_variable_declaration + + +literal - - -attribute_name + + +variance_annotation - - -implicitly_typed_local_variable_declaration + + +explicitly_typed_local_variable_declarator - - -〔"〕 + + +@bool - - -identifier + + +char - - -U + + += - - -literal + + +expression - - -explicitly_typed_local_variable_declarator + + +local - - -@long + + +( - - -statement + + +1uL - - -explicitly_typed_local_variable_declarator + + +'\u0066' - - -identifier + + +type - - -; + + +ref_method_modifier - - -0 + + +1UL - - -; + + +identifier - - -namespace_body + + +MaxValue - - -implicitly_typed_local_variable_declaration + + +implicitly_typed_local_variable_declarator - - -1lU + + +local_variable_initializer - - -integral_type + + +implicitly_typed_local_variable_declarator - - -statement + + +implicitly_typed_local_variable_declarator - - -; + + +argument_list - - -declaration_statement + + +identifier - - -= + + +local_variable_initializer - - -bool + + +byte - - -variant_type_parameter + + +sizeof - - + + identifier - - -expression - - - -implicitly_typed_local_variable_declaration + + +1.2f - - -export + + +0 - - -attribute_list + + += - - -var + + +statement - - -literal + + +T - - -> + + +contextual_keyword - - -1.2m + + +identifier - - -explicitly_typed_local_variable_declarators + + +expression - - -compilation_unit + + +type - - + + identifier - - -statement - - - -variant_type_parameter - - - -0 + + +explicitly_typed_local_variable_declarators - - -assignment_operator + + += - - -identifier + + +class_member_declaration - - -identifier + + +constructor_declaration - - -Obsolete + + +literal - - -} + + +local_variable_declaration - - -assignment_operator + + +explicitly_typed_local_variable_declaration - - -private + + +contextual_keyword - - -identifier + + +statement - - + + ( - - -implicitly_typed_local_variable_declaration + + +type - - + + var - - -remove + + +local_variable_declaration - - -extern + + +identifier - - -implicitly_typed_local_variable_declarator + + +local_variable_initializer - - -statement_expression + + +partial - - -minInt64Value + + +1 - - -@float + + +contextual_keyword - - + + local_variable_declaration - - -namespace_or_type_name - - - + + identifier - - -expression - - - -implicitly_typed_local_variable_declaration - - - -expression_statement + + +var - - -: + + +identifier in - - -unsafe_modifier + + +local_variable_declaration - - -statement + + +type_parameter - - -get + + +identifier - - -static + + +statement - - + + +explicitly_typed_local_variable_declarator + + + statement - - -. + + +type - - -expression + + +nullable_value_type - - -contextual_keyword + + +; - - -contextual_keyword + + +literal - - -namespace + + +class_base - - -namespace_member_declaration + + +declaration_statement - - -l + + +literal - - -local_variable_declaration + + +{ - - -unary_expression + + +statement - - -assignment_operator + + +. - - -explicitly_typed_local_variable_declarator + + +contextual_keyword - - -= + + +local4 - - -identifier + + +) - - -integral_type + + +var - - -int + + +static - - -boolean_literal + + +attribute_section - - -, + + +explicitly_typed_local_variable_declaration - - -〔$@"〕 + + +integral_type - - -type + + +declaration_statement - - -contextual_keyword + + +; - - -Action + + +; - - -type + + +numeric_type + + + +literal + + + +static_constructor_modifiers class_modifier - - -contextual_keyword + + +statement - - -int + + +; - - + + +__ + + + +SetLastError + + + = - - -identifier + + +primary_expression - - -explicitly_typed_local_variable_declarators + + +expression - - -literal + + +explicitly_typed_local_variable_declaration - - -int + + +1D - - -statement + + +implicitly_typed_local_variable_declarator - - -literal + + +identifier - - -assignment + + +implicitly_typed_local_variable_declaration - - + + explicitly_typed_local_variable_declarator - - -statement + + +type - - -; + + +unary_expression - - -identifier + + +M - - + + local_variable_initializer - - -literal + + +identifier - - -statement + + +literal - - -; + + +literal - - -identifier + + +argument_list - - -@float + + +explicitly_typed_local_variable_declarator - - -identifier + + +sa - - -labeled_statement + + +declaration_statement - - -contextual_keyword + + += - - + + explicitly_typed_local_variable_declarator - - -local_variable_initializer + + += - - -0 + + +unary_expression - - -implicitly_typed_local_variable_declarator + + +sizeof_expression - - -declaration_statement + + +; - - -identifier + + +type - - -attribute_name + + +implicitly_typed_local_variable_declaration - - -1L + + +local_variable_initializer - - + + +) + + + +literal + + + +explicitly_typed_local_variable_declarators + + + +literal + + + local_variable_declaration - - -lU + + +; + + + +interface_body + + + +object + + + +declaration_statement + + + +) + + + +1Lu + + + +constructor_declarator + + + +1lU - - -group + + +, - - -literal + + +declaration_statement - - -= + + +- - - -expression_statement + + +} - - -type + + +i - - -non_nullable_reference_type + + +identifier - - -fixed_parameter + + +nullable_type_annotation - - + + identifier - - + + literal - - -floating_point_type + + +contextual_keyword + + + +; - - + + literal - - -; + + +identifier - - -assignment + + +type - - + + identifier - - -using_directive + + +ushort - - -type + + +[ - - -} + + +static_constructor_declaration - - -numeric_type + + +is - - -interpolated_regular_string_expression + + +, - - -0xBADC0DE + + +0 - - + + = - - -identifier + + +interface - - -interface_type_list + + +constant_declarators - - -method_modifier + + +; - - + + local_variable_declaration - - + + ; - - -local - - - -expression - - - -= - - - + + expression - - + + statement - - + + identifier - - -constant_declarators + + +declaration_statement - - -, + + +0 - - -short + + +public - - -integral_type + + +@dynamic - - -expression + + +out - - -literal + + +var - - -0XDEADBEEF + + +expression - - -local_variable_declaration + + +command - - -var + + +@object - - -constant_declarator + + +; + + + +integral_type - - + + identifier - - -unary_expression + + +attribute - - -block + + +explicitly_typed_local_variable_declarators - - -; + + +: - - -attributes + + +0 - - -explicitly_typed_local_variable_declarator + + +identifier - - -2l + + +contextual_keyword - - -identifier + + +0xBAD - - -prog + + +expression - - -@double + + +, - - -declaration_statement + + +identifier - - -declaration_statement + + +A - - -, + + += - - -interpolation_minimum_width + + +delegate_header - - -var + + +expression - - -class_type + + +expression_statement - - + + declaration_statement - - -declaration_statement + + +- - - -= + + +explicitly_typed_local_variable_declarator - - -: + + +, - - -identifier + + +interface_declaration - - -declaration_statement + + +return_type - - -multiplicative_expression + + +statement - - -partial + + +param - - -attribute + + +literal - - -Console + + +, - - -local_variable_initializer + + +A - - -expression + + +unsafe - - -= + + +, - - -statement + + +literal - - -expression + + +type - - -null_coalescing_expression + + +literal - - -A + + +minInt64Value - - -identifier + + +local_variable_initializer - - -class_modifier + + +literal - - -declaration_statement + + +contextual_keyword - - -{ + + +type + + + +unary_expression + + + +unary_expression + + + +integral_type - - -statement + + +MinValue - - -contextual_keyword + + +type_parameter_constraints_clause - - -ushort + + +explicitly_typed_local_variable_declarator - - -attribute_target_specifier + + +explicitly_typed_local_variable_declarators - - -, + + +namespace_declaration - - -( + + +null_coalescing_expression - - -statement + + +?? - - -= + + +@ushort - - -var + + +local_variable_declaration - - -= + + +literal - - -, + + +int - - + + literal - - -; - - - -expression + + +L - - -local_variable_declaration + + +class_type - - -identifier + + +statement - - + + = - - -identifier + + +variant_type_parameter - - + + local_variable_initializer - - -true - - - -relational_expression - - - -declaration_statement + + +. - - -0xBAD + + +compilation_unit - - -statement + + +explicitly_typed_local_variable_declaration - - -bool + + +local_variable_declaration My - - -conditional_or_expression + + +unary_expression - - -class_member_declaration + + +implicitly_typed_local_variable_declaration - - + + ; - - -= + + +implicitly_typed_local_variable_declaration - - -primary_constraint + + +identifier - - -implicitly_typed_local_variable_declarator + + += - - -explicitly_typed_local_variable_declarator + + +declaration_statement - - -; + + +[ - - -literal + + +statement - - -: + + +; - - -'\u0066' + + +implicitly_typed_local_variable_declaration - - -explicitly_typed_local_variable_declarator + + +identifier - - -unary_expression + + +attribute_name - - -literal + + +local5 - - -literal + + +explicitly_typed_local_variable_declaration - - -block + + +identifier - - -unary_expression + + +expression - - -- + + +declaration_statement - - + + = - - -unary_expression - - - -1 - - - -; - - - -identifier - - - -integral_type + + +simple_assignment - - + + statement - - -implicitly_typed_local_variable_declaration - - - -explicitly_typed_local_variable_declaration - - - -{ + + +statement - - -unary_expression + + +declaration_statement - - -expression + + += - - -implicitly_typed_local_variable_declarator + + +0 - - -identifier + + +local_variable_declaration - - + + ; - - -interpolated_verbatim_string_expression + + +identifier - - -explicitly_typed_local_variable_declaration + + +literal - - -implicitly_typed_local_variable_declaration + + +statement - - + + ; - - -1lu + + +literal - - + + type - - -constant_expression + + +identifier - - -?? + + +local_variable_initializer - - -- + + +literal + + + +variant_type_parameter - - + + var - - -declaration_statement + + += - - -static_constructor_modifiers + + +partial - - -= + + +statement - - -int + + +. - - -explicitly_typed_local_variable_declarators + + +1.44F - - + + identifier - - -explicitly_typed_local_variable_declaration - - - -attribute_list + + +explicitly_typed_local_variable_declarators - - + + = - - -literal + + +[ - - -expression + + +( - - -2147483648 + + += - - -explicitly_typed_local_variable_declaration + + +bool - - -null_coalescing_expression + + +integral_type - - -identifier + + +short - - -literal + + += - - + + +\U00000065 + + + identifier - - + + implicitly_typed_local_variable_declaration - - -ascending - - - -'c' - - - -= - - - -++ - - - -explicitly_typed_local_variable_declarators - - - -0 + + +predefined_type - - -var + + +declaration_statement - - -A + + +identifier - - -= + + +fixed_parameter - - -base + + +local_variable_initializer - - + + expression - - -explicitly_typed_local_variable_declaration + + +expression - - -@int + + +var - - -attribute + + +integral_type - - -9223372036854775808L + + +statement - - -0 + + +float - - -local_variable_initializer + + +B - - -implicitly_typed_local_variable_declarator + + +0 - - -literal + + +integral_type - - -namespace_member_declaration + + +1 - - -statement + + +unary_expression - - -) + + +relational_expression - - -identifier + + +; - - -@ulong + + +declaration_statement - - -literal + + +type_parameter - - -implicitly_typed_local_variable_declarator + + +; - - -1.44F + + +; - - + + local_variable_declaration - - -. - - - -local + + +var - - -= + + +var - - -declaration_statement + + +; - - -implicitly_typed_local_variable_declarator + + +statement - - -@double + + +literal - - -1LU + + +identifier - - + + = - - -implicitly_typed_local_variable_declaration - - - -local_variable_declaration + + +CoContra2 - - + + explicitly_typed_local_variable_declarator - - -local_variable_declaration + + +const - - -statement + + +attribute_section - - -expression_statement + + +identifier - - -; + + +implicitly_typed_local_variable_declarator - - -@byte + + +literal - - -floating_point_type + + +literal - - -explicitly_typed_local_variable_declarators + + +statement - - -constant_declaration + + +implicitly_typed_local_variable_declaration - - + + +let + + + declaration_statement - - -literal + + +0 - - + + unary_expression - - -where + + +0 - - + + +contextual_keyword + + + identifier - - -contextual_keyword + + +1U - - -regular_interpolation + + +local_variable_declaration - - -identifier + + +Console - - -arglist + + +; + + + +0 + + + +primary_constraint + + + +attribute_list + + + +const + + + +using_directive + + + +, - - + + statement - - -〔:d〕 + + +explicitly_typed_local_variable_declarators - - -out + + +expression - - -0 + + +< - - -identifier + + +literal - - + + +explicitly_typed_local_variable_declarator + + + declaration_statement - - -identifier + + +relational_expression + + + +block - - + + expression_statement - - -explicitly_typed_local_variable_declaration + + +} - - -statement_expression + + +U - - -identifier + + +implicitly_typed_local_variable_declaration + + + +simple_assignment + + + += - - + + ; - - -literal + + +; - - -explicitly_typed_local_variable_declarator + + +DllImport - - -explicitly_typed_local_variable_declarator + + +descending - - -contextual_keyword + + +statement - - -var + + +set - - -type + + +) - - -; + + +class_member_declaration - - -@string + + +local_variable_declaration + + + +CreateDirectory + + + +implicitly_typed_local_variable_declaration - - + + identifier - - + + = - - -{ + + +0 - - -contextual_keyword + + +yield - - -= + + +expression - - -variant_type_parameter_list + + +; - - -- + + +member_access - - -; + + +simple_assignment - - -statement + + +simple_assignment - - -identifier + + +implicitly_typed_local_variable_declaration - - -expression + + +attribute_arguments - - -primary_expression + + += + + + +statement_expression - - -assignment_operator + + += \ No newline at end of file diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-C/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-C/Reference/sample.gruntree.red.txt index 46e5fef61..65675fcef 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-C/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-C/Reference/sample.gruntree.red.txt @@ -1136,7 +1136,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1159,10 +1159,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ] ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1209,7 +1206,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1258,10 +1255,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ] ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-C/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-C/Reference/sample.tree.red.txt index e724ada52..c208aa839 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-C/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-C/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier My)) (namespace_body { (namespace_member_declaration (class_declaration (class_modifier public) (class_modifier (unsafe_modifier unsafe)) partial class (identifier A) (class_base : (interface_type_list (interface_type (identifier C)) , (interface_type (identifier I)))) (class_body { (class_member_declaration (constructor_declaration (constructor_modifier public) (constructor_declarator (identifier A) ( (parameter_list (fixed_parameter (attributes (attribute_section [ (attribute_target_specifier (attribute_target (identifier param)) :) (attribute_list (identifier Obsolete)) ])) (type (integral_type int)) (identifier foo))) ) (constructor_initializer : base ( (argument_list (literal 1)) ))) (constructor_body (block { (statement_list (statement (if_statement if ( (boolean_expression (relational_expression (relational_expression (identifier i)) > (shift_expression (literal 0)))) ) (embedded_statement (block { (statement_list (return_statement return ;)) })) else (embedded_statement (if_statement if ( (boolean_expression (equality_expression (equality_expression (identifier i)) == (relational_expression (literal 0)))) ) (embedded_statement (block { (statement_list (throw_statement throw (expression (object_creation_expression new (type (identifier Exception)) ( ))) ;)) })))))) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier o1) = (expression (object_creation_expression new (type (identifier MyObject)) ( )))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier o2) = (expression (object_creation_expression new (type (identifier MyObject)) ( (argument_list (contextual_keyword var)) )))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier o3) = (expression (object_creation_expression new (type (identifier MyObject)) (object_or_collection_initializer (object_initializer { (member_initializer_list (member_initializer (initializer_target (identifier A)) = (initializer_value (identifier i)))) }))))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier o4) = (expression (object_creation_expression new (type (identifier MyObject)) ( (argument_list (identifier @dynamic)) ) (object_or_collection_initializer (object_initializer { (member_initializer_list (member_initializer (initializer_target (identifier A)) = (initializer_value (literal 0))) , (member_initializer (initializer_target (identifier B)) = (initializer_value (literal 0))) , (member_initializer (initializer_target (identifier C)) = (initializer_value (literal 0)))) }))))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier o5) = (expression (anonymous_object_creation_expression new (anonymous_object_initializer { (member_declarator_list (member_declarator (identifier A) = (expression (literal 0)))) })))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier dictionaryInitializer) = (expression (object_creation_expression new (type (namespace_or_type_name (identifier Dictionary) (type_argument_list < (type_argument (integral_type int)) , (type_argument (class_type string)) >))) (object_or_collection_initializer (collection_initializer { (element_initializer_list (element_initializer { (expression_list (expression (literal 1)) , (expression (literal ""))) }) , (element_initializer { (expression_list (expression (literal 2)) , (expression (literal "a"))) })) }))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (array_type (non_array_type (floating_point_type float)) (rank_specifier [ ]))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (array_creation_expression new (array_type (non_array_type (floating_point_type float)) (rank_specifier [ ])) (array_initializer { (variable_initializer_list (variable_initializer (literal 0f)) , (variable_initializer (literal 1.1f))) }))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (array_type (non_array_type (integral_type int)) (rank_specifier [ , , ]))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier cube) = (local_variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (literal 111)) , (variable_initializer (literal 112))) , })) , (variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (literal 121)) , (variable_initializer (literal 122))) }))) })) , (variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (literal 211)) , (variable_initializer (literal 212))) })) , (variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (literal 221)) , (variable_initializer (literal 222))) }))) }))) })))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (array_type (non_array_type (integral_type int)) (rank_specifier [ ]) (rank_specifier [ ]))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier jagged) = (local_variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (array_initializer { (variable_initializer_list (literal 111)) })) , (variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (literal 121)) , (variable_initializer (literal 122))) }))) })))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (array_type (non_array_type (integral_type int)) (rank_specifier [ ]) (rank_specifier [ , ]))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier arr) = (local_variable_initializer (array_creation_expression new (non_array_type (integral_type int)) [ (expression_list (literal 5)) ] (rank_specifier [ , ]))))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (element_access (primary_expression (identifier arr)) [ (argument_list (literal 0)) ])) (assignment_operator =) (expression (array_creation_expression new (non_array_type (integral_type int)) [ (expression_list (expression (literal 5)) , (expression (literal 5))) ])))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (element_access (primary_expression (element_access (primary_expression (identifier arr)) [ (argument_list (literal 0)) ])) [ (argument_list (argument (literal 0)) , (argument (literal 0))) ])) (assignment_operator =) (expression (literal 47)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (array_type (non_array_type (integral_type int)) (rank_specifier [ ]))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier arrayTypeInference) = (local_variable_initializer (array_creation_expression new (rank_specifier [ ]) (array_initializer { (variable_initializer_list (variable_initializer (literal 0)) , (variable_initializer (literal 1))) , }))))))) ;))) })))) }))) })))) +(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier My)) (namespace_body { (namespace_member_declaration (class_declaration (class_modifier public) (class_modifier (unsafe_modifier unsafe)) partial class (identifier A) (class_base : (interface_type_list (interface_type (identifier C)) , (interface_type (identifier I)))) (class_body { (class_member_declaration (constructor_declaration (constructor_modifier public) (constructor_declarator (identifier A) ( (parameter_list (fixed_parameter (attributes (attribute_section [ (attribute_target_specifier (attribute_target (identifier param)) :) (attribute_list (identifier Obsolete)) ])) (type (integral_type int)) (identifier foo))) ) (constructor_initializer : base ( (argument_list (literal 1)) ))) (constructor_body (block { (statement_list (statement (if_statement if ( (boolean_expression (relational_expression (relational_expression (identifier i)) > (shift_expression (literal 0)))) ) (embedded_statement (block { (statement_list (return_statement return ;)) })) else (embedded_statement (if_statement if ( (boolean_expression (equality_expression (equality_expression (identifier i)) == (relational_expression (literal 0)))) ) (embedded_statement (block { (statement_list (throw_statement throw (expression (object_creation_expression new (type (identifier Exception)) ( ))) ;)) })))))) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier o1) = (expression (object_creation_expression new (type (identifier MyObject)) ( )))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier o2) = (expression (object_creation_expression new (type (identifier MyObject)) ( (argument_list (contextual_keyword var)) )))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier o3) = (expression (object_creation_expression new (type (identifier MyObject)) (object_or_collection_initializer (object_initializer { (member_initializer_list (member_initializer (initializer_target (identifier A)) = (initializer_value (identifier i)))) }))))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier o4) = (expression (object_creation_expression new (type (identifier MyObject)) ( (argument_list (identifier @dynamic)) ) (object_or_collection_initializer (object_initializer { (member_initializer_list (member_initializer (initializer_target (identifier A)) = (initializer_value (literal 0))) , (member_initializer (initializer_target (identifier B)) = (initializer_value (literal 0))) , (member_initializer (initializer_target (identifier C)) = (initializer_value (literal 0)))) }))))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier o5) = (expression (anonymous_object_creation_expression new (anonymous_object_initializer { (member_declarator_list (member_declarator (identifier A) = (expression (literal 0)))) })))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier dictionaryInitializer) = (expression (object_creation_expression new (type (namespace_or_type_name (identifier Dictionary) (type_argument_list < (type_argument (integral_type int)) , (type_argument (class_type string)) >))) (object_or_collection_initializer (collection_initializer { (element_initializer_list (element_initializer { (expression_list (expression (literal 1)) , (expression (literal ""))) }) , (element_initializer { (expression_list (expression (literal 2)) , (expression (literal "a"))) })) }))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (array_type (non_array_type (floating_point_type float)) (rank_specifier [ ]))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (array_creation_expression new (array_type (non_array_type (floating_point_type float)) (rank_specifier [ ])) (array_initializer { (variable_initializer_list (variable_initializer (literal 0f)) , (variable_initializer (literal 1.1f))) }))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (array_type (non_array_type (integral_type int)) (rank_specifier [ , , ]))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier cube) = (local_variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (literal 111)) , (variable_initializer (literal 112))) , })) , (variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (literal 121)) , (variable_initializer (literal 122))) }))) })) , (variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (literal 211)) , (variable_initializer (literal 212))) })) , (variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (literal 221)) , (variable_initializer (literal 222))) }))) }))) })))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (array_type (non_array_type (integral_type int)) (rank_specifier [ ]) (rank_specifier [ ]))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier jagged) = (local_variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (array_initializer { (variable_initializer_list (literal 111)) })) , (variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (literal 121)) , (variable_initializer (literal 122))) }))) })))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (array_type (non_array_type (integral_type int)) (rank_specifier [ ]) (rank_specifier [ , ]))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier arr) = (local_variable_initializer (array_creation_expression new (non_array_type (integral_type int)) [ (expression_list (literal 5)) ] (rank_specifier [ , ]))))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (element_access (primary_expression (identifier arr)) [ (argument_list (literal 0)) ])) = (expression (array_creation_expression new (non_array_type (integral_type int)) [ (expression_list (expression (literal 5)) , (expression (literal 5))) ])))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (element_access (primary_expression (element_access (primary_expression (identifier arr)) [ (argument_list (literal 0)) ])) [ (argument_list (argument (literal 0)) , (argument (literal 0))) ])) = (expression (literal 47)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (array_type (non_array_type (integral_type int)) (rank_specifier [ ]))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier arrayTypeInference) = (local_variable_initializer (array_creation_expression new (rank_specifier [ ]) (array_initializer { (variable_initializer_list (variable_initializer (literal 0)) , (variable_initializer (literal 1))) , }))))))) ;))) })))) }))) })))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-C/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-C/Reference/sample.tree.svg index 05a1289c9..cdd669bea 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-C/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-C/Reference/sample.tree.svg @@ -1,23 +1,23 @@ - - - - - - - - - - - + + + + + + + + + + + - + - - - + + + - + @@ -27,13 +27,13 @@ - - - - - + + + + + - + @@ -65,11 +65,11 @@ - - - - - + + + + + @@ -122,7 +122,7 @@ - + @@ -140,7 +140,7 @@ - + @@ -161,7 +161,7 @@ - + @@ -190,7 +190,7 @@ - + @@ -242,7 +242,7 @@ - + @@ -266,7 +266,7 @@ - + @@ -321,7 +321,7 @@ - + @@ -360,7 +360,7 @@ - + @@ -447,7 +447,7 @@ - + @@ -493,7 +493,7 @@ - + @@ -530,7 +530,7 @@ - + @@ -545,7 +545,6 @@ - @@ -563,11 +562,11 @@ - - - - - + + + + + @@ -589,2597 +588,2588 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -floating_point_type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +type - - -array_type + + +type_argument - - -array_initializer + + +} - - -Obsolete + + +variable_initializer - - -} + + +expression - - -] + + +variable_initializer_list - - -unary_expression + + +local_variable_initializer - - -var + + +initializer_value - - -explicitly_typed_local_variable_declarators + + +112 - - -rank_specifier + + +declaration_statement - - -embedded_statement + + +array_initializer - - -2 + + +[ - - -element_initializer_list + + +explicitly_typed_local_variable_declarator - - -expression + + +arr - - -] + + +0 - - -non_array_type + + +statement - - -expression + + +identifier - - -; + + +element_initializer - - -] + + +0 - - -} + + +identifier - - -type + + +, - - -{ + + +identifier - - -constructor_modifier + + +simple_assignment - - -initializer_target + + +array_initializer - - -declaration_statement + + +[ - - -integral_type + + +namespace_or_type_name - - -121 + + +if_statement - - + + +declaration_statement + + + , - - -: + + +A - - -return_statement + + +} - - -expression_statement + + +} - - -non_array_type + + +member_initializer_list - - -identifier + + +"a" - - -( + + +variable_initializer - - -class_type + + +statement + + + +identifier - - -assignment + + +float - - -{ + + +arr - - -primary_expression + + +initializer_value - - -array_initializer + + +integral_type - - -I + + +identifier - - -int + + +unsafe_modifier - - -[ + + +212 - - -A + + +variable_initializer_list - - -{ + + +variable_initializer - - -literal + + +member_declarator - - + + declaration_statement - - -identifier + + +> - - -= - - - -equality_expression + + +My - - + + type - - + + variable_initializer - - -variable_initializer_list - - - -variable_initializer_list - - - -statement_expression - - - -variable_initializer_list - - - -{ - - - -} - - - -boolean_expression - - - -array_creation_expression - - - -rank_specifier + + +new A - - -) - - - -explicitly_typed_local_variable_declarator + + +} - - -statement + + +{ - - -arr + + +, - - -member_initializer + + +array_type - - -{ + + +interface_type - - -211 + + +attributes - - -unary_expression + + += - - + + identifier - - -literal - - - -throw_statement + + +interface_type - - -argument_list + + +, - - -local_variable_declaration + + +; - - -statement_list + + +identifier - - -array_creation_expression + + +equality_expression - - -literal + + +type - - -implicitly_typed_local_variable_declarator + + +rank_specifier - - -@dynamic + + +identifier - - -C + + +namespace_declaration - - -literal + + +; - - -declaration_statement + + +object_initializer - - -declaration_statement + + +local_variable_declaration - - + + variable_initializer_list - - -0 + + +rank_specifier - - -A + + +identifier - - -} + + +type - - + + identifier - - -, - - - -literal + + +declaration_statement - - -5 + + +MyObject - - -expression + + +implicitly_typed_local_variable_declaration - - -= + + +int - - -expression_list + + +, - - -explicitly_typed_local_variable_declarators + + +( - - -literal + + +211 - - -[ + + +variable_initializer - - -literal + + +] - - -type + + +explicitly_typed_local_variable_declarator - - -array_type + + +, - - + + variable_initializer - - -class_modifier - - - -identifier + + +constructor_declaration - - -identifier + + +array_initializer - - -{ + + += - - -0 + + +literal - - -{ + + +local_variable_declaration - - -identifier + + +[ - - -explicitly_typed_local_variable_declarator + + +object_or_collection_initializer - - -local_variable_initializer + + +new - - -variable_initializer_list + + +implicitly_typed_local_variable_declaration - - -declaration_statement + + +local_variable_declaration - - -declaration_statement + + +embedded_statement - - -variable_initializer_list + + +o4 - - -222 + + +relational_expression - - + + literal - - -= - - - -: - - - -statement - - - -= - - - -jagged - - - -variable_initializer - - - -initializer_target + + +parameter_list - - -111 + + += - - -] + + +expression_statement - - -interface_type_list + + +rank_specifier - - + + variable_initializer - - -{ + + +] - - -[ + + +floating_point_type - - -0f + + +type - - -constructor_body + + +var - - -identifier + + +constructor_declarator - - -element_access + + += - - -array_initializer + + +} - - + + [ - - -argument - - - -param + + +] - - -dictionaryInitializer + + +} - - -relational_expression + + +literal - - -0 + + +variable_initializer - - -rank_specifier + + +o2 - - -( + + +initializer_target - - -explicitly_typed_local_variable_declarators + + +variable_initializer_list - - + + ] - - -expression - - - -} - - - -MyObject - - - -new + + +122 - - + + , - - -class_member_declaration + + +unary_expression - - -type_argument_list + + +o1 - - -] + + +non_array_type + + + +0 block - - -local_variable_declaration + + +; - - + + +literal + + + +[ + + + statement - - -122 + + +] - - -local_variable_declaration + + +primary_expression - - -} + + +@dynamic - - -member_initializer + + +constructor_modifier - - -o1 + + +implicitly_typed_local_variable_declaration - - -identifier + + +variable_initializer - - -; + + +111 - - -local_variable_declaration + + +attribute_target - - -identifier + + +implicitly_typed_local_variable_declarator - - -relational_expression + + += - - -literal + + +} - - -member_declarator + + +{ - - -float + + +statement_expression - - -local_variable_initializer + + +1.1f - - -attribute_target + + +local_variable_declaration - - -) + + +array_creation_expression expression_list - - -array_initializer + + +variable_initializer_list - - -[ + + +class_declaration - - -rank_specifier + + +attribute_target_specifier - - -i + + +expression_list - - -"" + + +type - - -{ + + +object_or_collection_initializer - - -, + + +[ - - -identifier + + +equality_expression - - -argument_list + + +; - - -Exception + + +, - - -identifier + + +integral_type - - -object_creation_expression + + +collection_initializer - - -o5 + + +literal - - -int + + +namespace - - -integral_type + + +{ - - -argument_list + + +namespace_body - - -type_argument + + +var - - -} + + +literal - - -] + + +local_variable_declaration - - -0 + + +block - - -identifier + + +int - - -object_creation_expression + + +; - - -, + + +; - - -My + + +explicitly_typed_local_variable_declarators - - -explicitly_typed_local_variable_declarator + + +type - - -, + + +array_initializer - - -1.1f + + +] - - -literal + + +identifier - - -unsafe_modifier + + +array_type - - -] + + +literal - - -expression + + +expression_list - - -, + + +embedded_statement - - -element_access + + +boolean_expression - - -identifier + + +5 - - -float + + +fixed_parameter - - -local_variable_declaration + + +[ - - + + +{ + + + identifier - - -0 + + +literal - - -} + + += - - -literal + + +relational_expression - - -== + + +221 - - -implicitly_typed_local_variable_declarator + + +) - - -member_declarator_list + + +class_base - - -expression + + +argument_list - - -non_array_type + + +new - - -constructor_initializer + + +[ - - -variable_initializer_list + + +member_initializer - - -variable_initializer_list + + +] - - -embedded_statement + + +[ - - -; + + +rank_specifier - - + + , - - -{ + + +local_variable_declaration - - + + +explicitly_typed_local_variable_declaration + + + = - - -local_variable_declaration + + +statement - - -0 + + +explicitly_typed_local_variable_declarator - - -object_creation_expression + + +) - - -literal + + +declaration_statement - - -identifier + + +statement - - -new + + +; - - -= + + +param - - -} + + +local_variable_declaration - - + + type - - -local_variable_declaration + + +o3 - - -Dictionary + + +121 - - -: + + +1 - - -literal + + +throw_statement - - -array_initializer + + +( - - -new + + +} - - -variable_initializer + + +[ - - -= + + +integral_type - - -prog + + +unsafe - - -; + + +< - - -namespace_or_type_name + + +partial - - -} + + +argument_list - - -, + + +literal - - -} + + +variable_initializer_list - - -{ + + +expression - - -] + + +identifier - - -literal + + +[ - - -public + + +local_variable_initializer - - -] + + +identifier - - -object_or_collection_initializer + + +C - - -212 + + +{ - - -; + + +{ - - -equality_expression + + +implicitly_typed_local_variable_declarator - - + + declaration_statement - - -{ + + +statement - - -= + + +variable_initializer - - -a + + +statement + + + +expression - - -type_argument + + +identifier - - -= + + +type - - -block + + +array_creation_expression - - -} + + +: - - -statement + + +identifier - - -( + + +contextual_keyword - - -argument_list + + +arr } - - -member_initializer_list + + +embedded_statement - - -collection_initializer + + +explicitly_typed_local_variable_declaration - - -1 + + +new - - -else + + +local_variable_declaration - - -o3 + + +literal - - -initializer_value + + +local_variable_initializer - - + + +} + + + { - - -var + + +string - - -foo + + +, - - -type + + +literal - - -class_declaration + + +identifier - - -array_type + + +identifier - - -literal + + +class_modifier - - -var + + +] - - -0 + + +, - - -declaration_statement + + +rank_specifier - - -1 + + +( - - -array_type + + +variable_initializer_list - - -variable_initializer + + +MyObject - - -} + + +literal - - -explicitly_typed_local_variable_declarator + + +identifier - - -] + + +if_statement - - -[ + + +{ - - -new + + +{ - - -implicitly_typed_local_variable_declaration + + +identifier - - -< + + +integral_type - - -declaration_statement + + +] - - -embedded_statement + + +local_variable_initializer - - -C + + +int - - -identifier + + +} - - -identifier + + +cube - - -, + + +throw - - -unsafe + + +array_initializer - - -identifier + + +literal - - -new + + +class_member_declaration - - -element_initializer + + +class - - + + +non_array_type + + + +B + + + identifier - - -0 + + +literal + + + +} - - -namespace_body + + +member_declarator_list - - -111 + + +member_initializer - - -integral_type + + +int - - -( + + +return_statement - - -variable_initializer_list + + +111 - - -block + + +declaration_statement - - -contextual_keyword + + +identifier - - -int + + += - - -{ + + +expression - - -explicitly_typed_local_variable_declaration + + +expression - - -variable_initializer + + +new literal - - -expression + + +statement_list - - -identifier + + +variable_initializer - - -literal + + += - - -) + + +} - - -expression + + +explicitly_typed_local_variable_declarators - - + + object_initializer - - -implicitly_typed_local_variable_declarator + + +attribute_list - - -, + + +expression - - -new + + +local_variable_declaration - - -object_or_collection_initializer + + +declaration_statement - - -explicitly_typed_local_variable_declaration + + +variable_initializer_list - - + + +block + + + +non_array_type + + + literal - - -variable_initializer + + +foo - - -qualified_identifier + + +i - - -; + + +( - - -statement + + +expression - - -initializer_value + + +floating_point_type - - -base + + +; - - -identifier + + +expression_statement - - -literal + + +non_array_type - - -literal + + +rank_specifier - - -[ + + +literal - - -argument + + +, - - -local_variable_initializer + + +statement_list - - -class_base + + +array_initializer - - -var + + +Dictionary - - -relational_expression + + +, - - -[ + + +0f - - -var + + +argument_list - - -121 + + +interface_type_list - - -; + + +implicitly_typed_local_variable_declarator - - -; + + +statement - - -local_variable_initializer + + +expression - - -literal + + +[ - - -expression_list + + +} - - -> + + +2 - - -literal + + +non_array_type - - -attributes + + +variable_initializer - - -new + + +object_creation_expression - - -identifier + + +initializer_target - - -int + + +statement - - -integral_type + + +compilation_unit - - -var + + +else - - + + { - - -[ - - - + + literal - - -112 + + +; - - -literal + + +variable_initializer_list - - -cube + + +I - - + + = - - -arr + + +( - - + + +relational_expression + + + +dictionaryInitializer + + + +, + + + explicitly_typed_local_variable_declaration - - -rank_specifier + + +MyObject - - -type + + +: non_array_type - - -argument_list - - - + + identifier - - -} + + +, - - -type + + +statement - - -{ + + +rank_specifier - - -identifier + + +int - - -identifier + + +rank_specifier - - -variable_initializer_list + + +expression - - -MyObject + + +expression - - -local_variable_declaration + + +identifier - - -, + + +literal - - -[ + + +; - - -type + + +Exception - - -= + + +0 - - -explicitly_typed_local_variable_declaration + + +array_initializer - - -rank_specifier + + +namespace_member_declaration - - -int + + += - - + + identifier - - -implicitly_typed_local_variable_declaration + + +literal - - -anonymous_object_creation_expression + + +] - - -, + + +statement_expression - - -= + + +) - - -; + + +array_initializer - - -member_initializer + + +argument_list - - -int + + +explicitly_typed_local_variable_declaration - - -statement_list + + +variable_initializer - - + + } - - + + +variable_initializer_list + + + +var + + + identifier - - -object_creation_expression + + +class_type - - -o4 + + +identifier - - + + } - - -namespace_declaration + + +] - - -statement + + +initializer_value - - + + expression - - + + += + + + +member_initializer_list + + + variable_initializer - - + + +i + + + +0 + + + +integral_type + + + ] + + +explicitly_typed_local_variable_declarator + + + +literal + if - - -variable_initializer - - - -[ - - - -5 - - - -string + + +literal - - -[ + + +122 - - -array_initializer + + +prog - - -} + + +non_array_type - - -rank_specifier + + +jagged - - -interface_type + + +boolean_expression - - -expression + + +{ - - + + ( - - -i + + +) - - + + literal - - -statement_expression - - - -o2 - - - -1 + + +array_creation_expression - - -namespace + + +element_initializer_list - - -integral_type + + +int - - -new + + +0 - - + + , - - + + { - - -[ + + +int - - -array_initializer + + +explicitly_typed_local_variable_declarator - - -type + + +constructor_body - - -; + + +literal - - -element_initializer + + +variable_initializer_list - - + + +array_initializer + + + +var + + + +} + + + = - - -if + + +array_initializer - - -argument_list + + +; - - -assignment_operator + + +declaration_statement - - -class_body + + +new - - -array_type + + +0 - - -partial + + +identifier + + + +unary_expression + + + +A - - -member_initializer_list + + +[ - - -anonymous_object_initializer + + +1 - - -literal + + +return - - + + +public + + + local_variable_declaration - - -array_type + + +anonymous_object_creation_expression - - -] + + += - - -explicitly_typed_local_variable_declarator + + +{ - - -object_creation_expression + + +] - - -122 + + +array_initializer - - -expression + + +statement_list - - -local_variable_initializer + + +{ - - -} + + +base + + + +literal expression - - -} - - - -) + + +new - - -0 + + +literal - - -array_initializer + + +constructor_initializer - - -variable_initializer + + +C - - -0 + + +object_creation_expression - - + + , - - -{ - - - -[ + + +local_variable_initializer - - -local_variable_declaration + + +expression_list - - -declaration_statement + + +0 - - -literal + + +implicitly_typed_local_variable_declaration - - -statement + + +A - - -if_statement + + +implicitly_typed_local_variable_declarator - - -variable_initializer_list + + +argument_list - - -type + + +expression - - -variable_initializer + + +statement - - -integral_type + + += - - -, + + +statement - - -; + + +non_array_type - - -= + + +, - - -new + + +literal - - -variable_initializer + + +anonymous_object_initializer - - -literal + + +identifier - - -implicitly_typed_local_variable_declaration + + +rank_specifier - - -) + + +element_access - - -5 + + +literal - - -local_variable_declaration + + +implicitly_typed_local_variable_declarator - - -attribute_list + + +object_creation_expression - - -non_array_type + + +, - - -compilation_unit + + +new - - + + expression - - -221 + + +element_access - - -int + + +array_type - - -= + + +> - - -rank_specifier + + +( - - -identifier + + +; - - -implicitly_typed_local_variable_declaration + + +} - - -integral_type + + +) - - -initializer_value + + +: - - -fixed_parameter + + +o5 - - -rank_specifier + + +5 - - -int + + +222 - - -literal + + +class_body - - -statement + + +[ - - -) + + +integral_type - - -declaration_statement + + +"" - - -, + + +literal - - -"a" + + +local_variable_declaration - - -array_creation_expression + + +, - - -identifier + + +, - - -primary_expression + + +variable_initializer 0 - - -} - - - -class_modifier - - - -[ - - - -i + + +== - - -implicitly_typed_local_variable_declaration + + +new - - -array_initializer + + +{ - - -variable_initializer_list + + +simple_assignment - - -expression_statement + + +, - - -object_creation_expression + + +variable_initializer - - -expression_list + + +literal - - -{ + + +expression - - -implicitly_typed_local_variable_declarator + + +A - - -floating_point_type + + +) - - -literal + + +expression - - -initializer_value + + +member_initializer - - -type + + +object_creation_expression - - -new + + +initializer_target - - + + } - - -assignment + + +identifier - - -member_initializer + + +a - - -non_array_type + + +{ - - -variable_initializer + + +implicitly_typed_local_variable_declaration - - -statement_list + + +explicitly_typed_local_variable_declaration - - -= + + +new - - -integral_type + + +( - - -variable_initializer + + +statement - - -MyObject + + +type - - -expression + + +} - - -{ + + +attribute_section + + + +new array_initializer - - -A + + +declaration_statement - - + + ; - - -= + + +argument_list - - -variable_initializer + + +Obsolete - - -arrayTypeInference + + +type_argument_list - - -assignment_operator + + +identifier - - -( + + +argument - - -explicitly_typed_local_variable_declarators + + +, - - -identifier + + +arrayTypeInference - - -throw + + +} - - + + literal - - -] - - - -statement - - - -var + + +MyObject - - -literal + + +explicitly_typed_local_variable_declarators - - -[ + + += - - + + ; - - -explicitly_typed_local_variable_declarators + + +var - - -element_access + + +} - - -, + + +qualified_identifier - - -variable_initializer + + +] variable_initializer - - -attribute_section + + +array_creation_expression - - -identifier + + +class_modifier - - + + , - - -literal - - - -MyObject - - - -non_array_type - - - -, + + +shift_expression - - -return + + +type - - -{ + + +type - - + + , - - + + identifier - - -if_statement - - - -, - - - -interface_type + + +{ - - -( + + +121 - - -implicitly_typed_local_variable_declarator + + +explicitly_typed_local_variable_declarators - - -parameter_list + + +array_type - - -object_or_collection_initializer + + +[ - - -rank_specifier + + +, - - -variable_initializer + + +explicitly_typed_local_variable_declarators - - -variable_initializer + + +5 - - -explicitly_typed_local_variable_declaration + + +] - - -{ + + +literal - - -; + + +literal - - -shift_expression + + +identifier - - -] + + +initializer_target - - -) + + +1 - - -A + + +declaration_statement - - -B + + +if - - -array_initializer + + +literal - - -statement + + +i - - -identifier + + += - - -constructor_declaration + + +rank_specifier - - -implicitly_typed_local_variable_declarator + + +) - - -new + + +object_creation_expression - - -statement + + +var - - -namespace_member_declaration + + +{ - - -] + + +variable_initializer - - -} + + +implicitly_typed_local_variable_declarator - - -identifier + + +integral_type - - -object_initializer + + +array_type - - + + variable_initializer - - -non_array_type + + +int - - -( + + +} - - -variable_initializer + + +initializer_value - - -type + + +argument - - -, + + += - - -literal + + +) - - -{ + + +identifier - - -statement + + +integral_type + + + +variable_initializer primary_expression - - -, + + +47 - - + + ; - - -initializer_target + + +0 - - -expression + + +element_access - - -, + + +{ - - -class + + +] - - -identifier + + +type_argument - - -initializer_target + + +primary_expression - - -expression + + +[ - - -arr + + +array_type - - -implicitly_typed_local_variable_declaration + + +{ - - -statement + + +identifier - - -, + + +variable_initializer - - -array_initializer + + +{ - - -= + + +var - - -attribute_target_specifier + + +float - - -constructor_declarator + + +{ - - -47 + + +0 - - -) + + +{ - - -array_creation_expression + + +variable_initializer - - + + public - - -> + + +element_initializer - - -boolean_expression + + +identifier - - + + +object_or_collection_initializer + + + +member_initializer + + + statement + + +object_creation_expression + + + +variable_initializer_list + + + +implicitly_typed_local_variable_declaration + \ No newline at end of file diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-E/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-E/Reference/sample.gruntree.red.txt index d26da2d8c..f4ddd3402 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-E/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-E/Reference/sample.gruntree.red.txt @@ -509,7 +509,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -524,10 +524,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -609,7 +606,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -624,10 +621,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -876,7 +870,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ variable_initializer ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -884,10 +878,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ A ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -901,7 +892,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ variable_initializer ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -909,10 +900,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ B ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -926,7 +914,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ variable_initializer ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -934,10 +922,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ C ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1416,7 +1401,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1424,10 +1409,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ query ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-E/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-E/Reference/sample.tree.red.txt index 12ca1f2db..5613d8d88 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-E/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-E/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier My)) (namespace_body { (namespace_member_declaration (class_declaration (class_modifier public) (class_modifier (unsafe_modifier unsafe)) partial class (identifier A) (class_base : (interface_type_list (interface_type (identifier C)) , (interface_type (identifier I)))) (class_body { (class_member_declaration (constructor_declaration (constructor_modifier public) (constructor_declarator (identifier A) ( (parameter_list (fixed_parameter (attributes (attribute_section [ (attribute_target_specifier (attribute_target (identifier param)) :) (attribute_list (identifier Obsolete)) ])) (type (integral_type int)) (identifier foo))) ) (constructor_initializer : base ( (argument_list (literal 1)) ))) (constructor_body (block { (statement_list (statement (lock_statement lock ( (expression (identifier sync)) ) (embedded_statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier process)) ( ))) ;)))) (statement (using_statement using ( (resource_acquisition (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier v) = (expression (invocation_expression (primary_expression (identifier BeginScope)) ( )))))) ) (embedded_statement (using_statement using ( (resource_acquisition (explicitly_typed_local_variable_declaration (type (identifier A)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (object_creation_expression new (type (identifier A)) ( ))))))) ) (embedded_statement (using_statement using ( (resource_acquisition (explicitly_typed_local_variable_declaration (type (identifier A)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (object_creation_expression new (type (identifier A)) ( )))) , (explicitly_typed_local_variable_declarator (identifier b) = (local_variable_initializer (object_creation_expression new (type (identifier A)) ( ))))))) ) (embedded_statement (using_statement using ( (resource_acquisition (invocation_expression (primary_expression (identifier BeginScope)) ( ))) ) (embedded_statement (return_statement return ;)))))))))) (statement (yield_statement yield return (expression (element_access (primary_expression (member_access (primary_expression (this_access this)) . (identifier items))) [ (argument_list (literal 3)) ])) ;)) (statement (yield_statement yield break ;)) (statement (fixed_statement fixed ( (pointer_type (value_type (integral_type int)) *) (fixed_pointer_declarators (fixed_pointer_declarator (identifier p) = (fixed_pointer_initializer (stackalloc_expression stackalloc (unmanaged_type (integral_type int)) [ (expression (literal 100)) ]))) , (fixed_pointer_declarator (identifier q) = (fixed_pointer_initializer & (variable_reference (identifier y))))) ) (embedded_statement (block { (statement_list (expression_statement (statement_expression (assignment (unary_expression (pointer_indirection_expression * (unary_expression (identifier intref)))) (assignment_operator =) (expression (literal 1)))) ;)) })))) (statement (fixed_statement fixed ( (pointer_type (value_type (integral_type int)) *) (fixed_pointer_declarators (fixed_pointer_declarator (identifier p) = (fixed_pointer_initializer (stackalloc_expression stackalloc (unmanaged_type (integral_type int)) [ (expression (literal 100)) ])))) ) (embedded_statement (block { (statement_list (expression_statement (statement_expression (assignment (unary_expression (pointer_indirection_expression * (unary_expression (identifier intref)))) (assignment_operator =) (expression (literal 1)))) ;)) })))) (statement (unsafe_statement unsafe (block { (statement_list (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (pointer_type (value_type (integral_type int)) *)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier p) = (local_variable_initializer (null_literal null)))))) ;)) }))) (statement (try_statement try (block { (statement_list (throw_statement throw (expression (null_literal null)) ;)) }) (catch_clauses (specific_catch_clause catch (exception_specifier ( (type (namespace_or_type_name (identifier System) . (identifier AccessViolationException))) (identifier av) )) (block { (statement_list (throw_statement throw (expression (identifier av)) ;)) })) (specific_catch_clause catch (exception_specifier ( (type (identifier Exception)) )) (block { (statement_list (throw_statement throw ;)) }))) (finally_clause finally (block { (statement_list (try_statement try (block { }) (catch_clauses (general_catch_clause catch (block { }))))) })))) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (contextual_keyword var)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier anonymous) = (local_variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (assignment (unary_expression (identifier A)) (assignment_operator =) (expression (literal 1)))) , (variable_initializer (assignment (unary_expression (identifier B)) (assignment_operator =) (expression (literal 2)))) , (variable_initializer (assignment (unary_expression (identifier C)) (assignment_operator =) (expression (literal 3))))) , })))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier query) = (expression (query_expression (from_clause from (identifier c) in (expression (identifier customers))) (query_body (query_body_clause (let_clause let (identifier d) = (expression (identifier c)))) (query_body_clause (where_clause where (boolean_expression (equality_expression (equality_expression (identifier d)) != (relational_expression (null_literal null)))))) (query_body_clause (join_clause join (identifier c1) in (expression (identifier customers)) on (expression (invocation_expression (primary_expression (member_access (primary_expression (identifier c1)) . (identifier GetHashCode))) ( ))) equals (expression (invocation_expression (primary_expression (member_access (primary_expression (identifier c)) . (identifier GetHashCode))) ( ))))) (query_body_clause (join_into_clause join (identifier c1) in (expression (identifier customers)) on (expression (invocation_expression (primary_expression (member_access (primary_expression (identifier c1)) . (identifier GetHashCode))) ( ))) equals (expression (invocation_expression (primary_expression (member_access (primary_expression (identifier c)) . (identifier GetHashCode))) ( ))) into (identifier e))) (select_or_group_clause (group_clause group (expression (identifier c)) by (expression (member_access (primary_expression (identifier c)) . (identifier Country))))) (query_continuation into (identifier g) (query_body (query_body_clause (orderby_clause orderby (orderings (ordering (expression (invocation_expression (primary_expression (member_access (primary_expression (identifier g)) . (identifier Count))) ( ))) (ordering_direction ascending))))) (query_body_clause (orderby_clause orderby (orderings (ordering (expression (member_access (primary_expression (identifier g)) . (identifier Key))) (ordering_direction descending))))) (select_or_group_clause (select_clause select (expression (anonymous_object_creation_expression new (anonymous_object_initializer { (member_declarator_list (member_declarator (identifier Country) = (expression (member_access (primary_expression (identifier g)) . (identifier Key)))) , (member_declarator (identifier CustCount) = (expression (invocation_expression (primary_expression (member_access (primary_expression (identifier g)) . (identifier Count))) ( ))))) }))))))))))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier query)) (assignment_operator =) (expression (query_expression (from_clause from (identifier c) in (expression (identifier customers))) (query_body (select_or_group_clause (select_clause select (expression (identifier c)))) (query_continuation into (identifier d) (query_body (select_clause select (expression (identifier d)))))))))) ;))) })))) }))) })))) +(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier My)) (namespace_body { (namespace_member_declaration (class_declaration (class_modifier public) (class_modifier (unsafe_modifier unsafe)) partial class (identifier A) (class_base : (interface_type_list (interface_type (identifier C)) , (interface_type (identifier I)))) (class_body { (class_member_declaration (constructor_declaration (constructor_modifier public) (constructor_declarator (identifier A) ( (parameter_list (fixed_parameter (attributes (attribute_section [ (attribute_target_specifier (attribute_target (identifier param)) :) (attribute_list (identifier Obsolete)) ])) (type (integral_type int)) (identifier foo))) ) (constructor_initializer : base ( (argument_list (literal 1)) ))) (constructor_body (block { (statement_list (statement (lock_statement lock ( (expression (identifier sync)) ) (embedded_statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier process)) ( ))) ;)))) (statement (using_statement using ( (resource_acquisition (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier v) = (expression (invocation_expression (primary_expression (identifier BeginScope)) ( )))))) ) (embedded_statement (using_statement using ( (resource_acquisition (explicitly_typed_local_variable_declaration (type (identifier A)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (object_creation_expression new (type (identifier A)) ( ))))))) ) (embedded_statement (using_statement using ( (resource_acquisition (explicitly_typed_local_variable_declaration (type (identifier A)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (object_creation_expression new (type (identifier A)) ( )))) , (explicitly_typed_local_variable_declarator (identifier b) = (local_variable_initializer (object_creation_expression new (type (identifier A)) ( ))))))) ) (embedded_statement (using_statement using ( (resource_acquisition (invocation_expression (primary_expression (identifier BeginScope)) ( ))) ) (embedded_statement (return_statement return ;)))))))))) (statement (yield_statement yield return (expression (element_access (primary_expression (member_access (primary_expression (this_access this)) . (identifier items))) [ (argument_list (literal 3)) ])) ;)) (statement (yield_statement yield break ;)) (statement (fixed_statement fixed ( (pointer_type (value_type (integral_type int)) *) (fixed_pointer_declarators (fixed_pointer_declarator (identifier p) = (fixed_pointer_initializer (stackalloc_expression stackalloc (unmanaged_type (integral_type int)) [ (expression (literal 100)) ]))) , (fixed_pointer_declarator (identifier q) = (fixed_pointer_initializer & (variable_reference (identifier y))))) ) (embedded_statement (block { (statement_list (expression_statement (statement_expression (simple_assignment (unary_expression (pointer_indirection_expression * (unary_expression (identifier intref)))) = (expression (literal 1)))) ;)) })))) (statement (fixed_statement fixed ( (pointer_type (value_type (integral_type int)) *) (fixed_pointer_declarators (fixed_pointer_declarator (identifier p) = (fixed_pointer_initializer (stackalloc_expression stackalloc (unmanaged_type (integral_type int)) [ (expression (literal 100)) ])))) ) (embedded_statement (block { (statement_list (expression_statement (statement_expression (simple_assignment (unary_expression (pointer_indirection_expression * (unary_expression (identifier intref)))) = (expression (literal 1)))) ;)) })))) (statement (unsafe_statement unsafe (block { (statement_list (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (pointer_type (value_type (integral_type int)) *)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier p) = (local_variable_initializer (null_literal null)))))) ;)) }))) (statement (try_statement try (block { (statement_list (throw_statement throw (expression (null_literal null)) ;)) }) (catch_clauses (specific_catch_clause catch (exception_specifier ( (type (namespace_or_type_name (identifier System) . (identifier AccessViolationException))) (identifier av) )) (block { (statement_list (throw_statement throw (expression (identifier av)) ;)) })) (specific_catch_clause catch (exception_specifier ( (type (identifier Exception)) )) (block { (statement_list (throw_statement throw ;)) }))) (finally_clause finally (block { (statement_list (try_statement try (block { }) (catch_clauses (general_catch_clause catch (block { }))))) })))) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (contextual_keyword var)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier anonymous) = (local_variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (simple_assignment (unary_expression (identifier A)) = (expression (literal 1)))) , (variable_initializer (simple_assignment (unary_expression (identifier B)) = (expression (literal 2)))) , (variable_initializer (simple_assignment (unary_expression (identifier C)) = (expression (literal 3))))) , })))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier query) = (expression (query_expression (from_clause from (identifier c) in (expression (identifier customers))) (query_body (query_body_clause (let_clause let (identifier d) = (expression (identifier c)))) (query_body_clause (where_clause where (boolean_expression (equality_expression (equality_expression (identifier d)) != (relational_expression (null_literal null)))))) (query_body_clause (join_clause join (identifier c1) in (expression (identifier customers)) on (expression (invocation_expression (primary_expression (member_access (primary_expression (identifier c1)) . (identifier GetHashCode))) ( ))) equals (expression (invocation_expression (primary_expression (member_access (primary_expression (identifier c)) . (identifier GetHashCode))) ( ))))) (query_body_clause (join_into_clause join (identifier c1) in (expression (identifier customers)) on (expression (invocation_expression (primary_expression (member_access (primary_expression (identifier c1)) . (identifier GetHashCode))) ( ))) equals (expression (invocation_expression (primary_expression (member_access (primary_expression (identifier c)) . (identifier GetHashCode))) ( ))) into (identifier e))) (select_or_group_clause (group_clause group (expression (identifier c)) by (expression (member_access (primary_expression (identifier c)) . (identifier Country))))) (query_continuation into (identifier g) (query_body (query_body_clause (orderby_clause orderby (orderings (ordering (expression (invocation_expression (primary_expression (member_access (primary_expression (identifier g)) . (identifier Count))) ( ))) (ordering_direction ascending))))) (query_body_clause (orderby_clause orderby (orderings (ordering (expression (member_access (primary_expression (identifier g)) . (identifier Key))) (ordering_direction descending))))) (select_or_group_clause (select_clause select (expression (anonymous_object_creation_expression new (anonymous_object_initializer { (member_declarator_list (member_declarator (identifier Country) = (expression (member_access (primary_expression (identifier g)) . (identifier Key)))) , (member_declarator (identifier CustCount) = (expression (invocation_expression (primary_expression (member_access (primary_expression (identifier g)) . (identifier Count))) ( ))))) }))))))))))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier query)) = (expression (query_expression (from_clause from (identifier c) in (expression (identifier customers))) (query_body (select_or_group_clause (select_clause select (expression (identifier c)))) (query_continuation into (identifier d) (query_body (select_clause select (expression (identifier d)))))))))) ;))) })))) }))) })))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-E/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-E/Reference/sample.tree.svg index 94d9b36ba..35a309d3e 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-E/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-E/Reference/sample.tree.svg @@ -1,23 +1,23 @@ - - - - - - - - - - - + + + + + + + + + + + - + - - - + + + - + @@ -27,13 +27,13 @@ - - - - - + + + + + - + @@ -65,11 +65,11 @@ - - - - - + + + + + @@ -87,7 +87,7 @@ - + @@ -181,7 +181,7 @@ - + @@ -201,12 +201,12 @@ - + - + @@ -249,29 +249,28 @@ - - - - - - + + + + + + - - - - + + + - - - - - + + + + + - + @@ -287,3239 +286,3210 @@ - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -( - - - -query_body_clause - - - -fixed - - - -identifier - - - -try - - - -anonymous_object_creation_expression - - - -identifier - - - -A - - - -namespace_declaration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +specific_catch_clause - - -int + + +exception_specifier - - -( + + +implicitly_typed_local_variable_declaration - - + + } - - -member_access - - - -member_declarator + + +ordering_direction - - -expression + + +statement_list - - -intref + + +catch identifier - - -( + + +} - - -expression + + +primary_expression - - -A + + +c - - -break + + +return - - -identifier + + +) - - -2 + + +} - - + + identifier - - -pointer_type - - - -member_access + + +BeginScope - - -pointer_type + + +( - - -block + + +identifier - - -p + + +primary_expression - - + + identifier - - -member_access - type - - -g - - - -identifier + + +unary_expression - - -) + + +null_literal - - -statement + + +block - - -query_body_clause + + +block - - -identifier + + +integral_type - - -primary_expression + + +catch - - -explicitly_typed_local_variable_declarators + + +explicitly_typed_local_variable_declarator - - -, + + +) - - -identifier + + +statement - - -embedded_statement + + +this_access - - -block + + +stackalloc_expression - - -new + + +try - - -) + + +; - - -declaration_statement + + +expression - - -invocation_expression + + +g - - -primary_expression + + +object_creation_expression - - -expression + + +identifier - - -equals + + +( - - -) + + +invocation_expression - - -identifier + + +in - - -g + + +, - - -) + + +; - - -expression + + +select - - -. + + +null - - + + identifier - - + + } - - -c + + +identifier - - -. + + +statement_list + + + +identifier - - + + = - - -using + + +statement_list - - -expression + + += - - -stackalloc_expression + + +identifier - - -GetHashCode + + +primary_expression - - -d + + +, - - -unary_expression + + +fixed - - -namespace + + +( - - -; + + +{ - - -query_body + + +primary_expression - - -expression_statement + + +int - - -pointer_type + + +let_clause - - -statement_expression + + +finally_clause - - -let_clause + + += - - -unary_expression + + +local_variable_declaration - - -class_body + + +identifier - - -1 + + +attribute_section - - -implicitly_typed_local_variable_declarator + + +from_clause - - -block + + +identifier - - -throw + + +expression - - -; + + +local_variable_initializer - - -( + + +* - - -from + + +identifier - - -I + + +, - - -using + + +p - - + + primary_expression - - -expression + + +by - - -primary_expression + + +constructor_body - - -A + + +class - - -identifier + + +foo - - -query_expression + + +d - - -unsafe_statement + + +) - - -( + + +literal - - + + , - - + + +{ + + + ) - - -statement_list + + +select - - -explicitly_typed_local_variable_declarators + + +expression - - -local_variable_initializer + + +pointer_indirection_expression - - -catch + + +q - - -GetHashCode + + +ordering - - -) + + +identifier - - -; + + +class_base - - -int + + +primary_expression - - -class_member_declaration + + +var - - -public + + +from - - + + +. + + + primary_expression - - -BeginScope + + +yield_statement - - -let + + +attributes - - -throw + + +customers - - -expression + + +identifier - - -Obsolete + + +GetHashCode - - -primary_expression + + +anonymous_object_creation_expression - - + + } - - -stackalloc + + +identifier - - -= + + +identifier - - -; + + +join - - -Key + + +parameter_list - - -} + + +explicitly_typed_local_variable_declarators - - + + identifier - - + + +member_access + + + identifier - - -{ + + +a - - -finally_clause + + += - - -orderby + + +) - - -local_variable_initializer + + +identifier - - -invocation_expression + + +d - - -expression + + +; - - -type + + +identifier - - -fixed_pointer_initializer + + +!= - - -. + + +variable_initializer_list - - -( + + +query_body - - -expression_statement + + +exception_specifier + + + +interface_type + + + +[ + + + +identifier - - + + fixed_statement - - -expression + + +int - - + + +simple_assignment + + + +) + + + identifier - - -expression + + +customers - - -expression_statement + + +resource_acquisition - - -type + + +prog - - -throw_statement + + +into - - -null + + +var - - -variable_reference + + +} - - -group_clause + + +block - - + + identifier - - -null_literal - - - -statement + + +join_clause - - -statement_list + + +{ - - -type + + +} - - + + . - - -identifier + + +. - - -c + + +( - - + + anonymous_object_initializer - - -local_variable_declaration + + +expression - - + + member_access - - -Country + + +variable_initializer - - -d + + +member_access - - -explicitly_typed_local_variable_declarators + + +pointer_type + + + +A - - + + identifier - - -yield_statement + + +local_variable_initializer - - -unsafe_modifier + + +equals - - -, + + +primary_expression - - -constructor_body + + +) - - -{ + + +value_type - - -= + + +orderings - - -query_body_clause + + +identifier - - -statement_list + + +simple_assignment - - -using_statement + + +int - - -query + + +constructor_modifier - - -class_base + + +{ - - -unmanaged_type + + +[ - - -1 + + +fixed_pointer_declarators + + + +statement_expression + + + +statement + + + +identifier + + + +statement_list + + + +identifier ; - - -catch_clauses + + +primary_expression - - -) + + +pointer_type - - -assignment_operator + + +expression - - -( + + +g - - + + ) - - -integral_type - - - -: + + +expression - - -assignment_operator + + +A - - + + query_continuation - - -* - - - -} + + += - - -statement + + +A - - -= + + +Key - - -implicitly_typed_local_variable_declarator + + +] - - -member_access + + +from_clause - - -) + + +query_body - - -* + + += - - + + ) - - -return + + +expression - - + + identifier - - -assignment + + +throw_statement - - -attribute_target_specifier + + +member_access - - -identifier + + +. - - -invocation_expression + + +expression - - -variable_initializer + + +expression - - -A + + +using_statement - - -new + + +unary_expression - - -fixed_pointer_declarators + + +declaration_statement - - -class_modifier + + +unary_expression - - -type + + +declaration_statement - - -expression + + +identifier - - -orderings + + +simple_assignment - - -= + + +member_declarator - - -assignment + + +C - - -Count + + +declaration_statement - - -items + + +identifier - - -namespace_or_type_name + + +expression_statement + + + +identifier + + + +select_or_group_clause + + + +query_body + + + +customers - - + + +simple_assignment + + + block - - -contextual_keyword + + +intref + + + +statement - - + + expression - - -identifier + + +simple_assignment - - -BeginScope + + +equals - - -[ + + +c - - -identifier + + +embedded_statement - - -partial + + +primary_expression - - -object_creation_expression + + +literal - - -constructor_modifier + + +{ - - -assignment + + +Obsolete - - -query_body + + += - - -identifier + + +lock + + + +unsafe + + + +{ + + + +namespace_body - - + + identifier unsafe - - -. + + +( - - -member_access + + +c - - -select_clause + + +expression - - -; + + +expression - - -select + + +A - - -query_body + + +statement - - -} + + +( - - -explicitly_typed_local_variable_declarators + + +orderings - - -specific_catch_clause + + +query_body_clause - - -{ + + +equality_expression - - -type + + +BeginScope - - -customers + + +explicitly_typed_local_variable_declarators - - -statement_list + + +literal - - -identifier + + +GetHashCode - - -where_clause + + +primary_expression - - -g + + +orderby - - -statement_expression - - - -in - - - -explicitly_typed_local_variable_declarator + + +select - - -declaration_statement + + +class_declaration - - -fixed_pointer_declarators + + += - - -unary_expression + + +constructor_initializer - - -= + + +int - - -type + + +} - - -( + + +c1 - - -into + + +local_variable_initializer - - -c + + +literal - - -sync + + +identifier - - -variable_initializer + + +join_into_clause - - -pointer_indirection_expression + + +qualified_identifier - - -ordering + + +statement - - + + primary_expression - - -invocation_expression + + +partial - - -; + + += - - + + +c + + + ( - - -. + + +specific_catch_clause - - -member_access + + +invocation_expression - - -) + + +query - - -identifier + + +select_or_group_clause - - -attribute_target + + +constructor_declaration - - -using + + +type + + + +integral_type - - + + identifier - - -expression + + +AccessViolationException - - -) + + +statement - - -join + + +y - - -. + + +where_clause - - + + identifier - - -namespace_body - - - -statement - - - -variable_initializer_list - - - -local_variable_initializer + + +A - - -block + + +pointer_type - - -identifier + + +member_access - - -boolean_expression + + +base - - -. + + +( - - -literal + + +interface_type - - + + , - - -fixed_statement + + +variable_reference - - -{ + + +statement - - -literal + + +ascending - - -variable_initializer + + +general_catch_clause - - -embedded_statement + + +Key - - + + identifier - - -GetHashCode + + +namespace_or_type_name - - -int + + +member_access - - -A + + +My - - -literal + + +query_expression - - -assignment + + +literal - - -select_or_group_clause + + +try_statement - - -constructor_declaration + + +new - - -return + + +: - - -primary_expression + + +unsafe_statement - - + + identifier - - -( - - - -foo - - - -expression + + +identifier - - -statement + + +identifier - - -av + + +fixed - - -{ + + +identifier - - -= + + +identifier - - -base + + +block - - + + expression - - -yield - - - -d + + +identifier - - + + ( - - -expression + + +identifier - - -primary_expression + + +block - - -primary_expression + + +unsafe_modifier - - -primary_expression + + +expression - - -this + + +invocation_expression - - -unary_expression + + +type - - -var + + +stackalloc_expression - - -select_or_group_clause + + +identifier - - -try_statement + + +identifier - - -select_clause + + +; - - -fixed_parameter + + +* - - + + c - - -= - - - -) + + +. - - -identifier + + +boolean_expression - - -) + + +expression - - -{ + + +( - - -identifier + + +ordering_direction - - -identifier + + +integral_type - - -equals + + +expression - - -select_clause + + +block - - -expression_statement + + +type - - -statement + + +100 - - -c1 + + +literal - - -( + + +) - - + + identifier - - -throw_statement + + +in - - -pointer_indirection_expression + + +lock_statement - - -where + + +unmanaged_type - - -join + + +fixed_pointer_declarator - - -embedded_statement + + +: - - -relational_expression + + +this - - -& + + +null - - -expression + + +( - - -primary_expression + + += - - -statement_expression + + +g - - -in + + +( - - -expression + + +embedded_statement - - -expression + + +value_type - - -type + + +statement_list - - -unsafe + + +return - - -constructor_declarator + + +literal - - -new + + +1 - - -assignment_operator + + +) - - -= + + +identifier - - + + { - - -( - - - -try_statement - - - -unary_expression - - - -orderby_clause - - - -identifier + + +break - - -local_variable_initializer + + +A - - -catch + + +; - - -identifier + + +A - - -finally + + +class_body - - -100 + + +member_access - - + + identifier - - -a - - - -attribute_section - - - -Exception - - - -} + + +var - - -, + + +GetHashCode - - -, + + +statement_list - - -orderby + + +. - - -identifier + + +primary_expression - - -{ + + +member_declarator_list - - -by + + +embedded_statement - - -= + + +type - - -fixed + + +group - - -; + + +catch_clauses - - -ascending + + +av - - -using + + +implicitly_typed_local_variable_declarator - - + + ( - - -identifier + + +group_clause - - -statement_expression + + +fixed_parameter - - + + explicitly_typed_local_variable_declarator - - -q + + +{ - - -in + + +C - - -attribute_list + + +av - - -} + + +resource_acquisition - - + + expression - - -yield + + +explicitly_typed_local_variable_declarators - - -invocation_expression + + +throw_statement - - -local_variable_declaration + + +d - - -block + + +implicitly_typed_local_variable_declarator - - -namespace_member_declaration + + +( - - -= + + +primary_expression - - -orderby_clause + + +anonymous - - -statement - - - + + identifier - - -integral_type + + +equality_expression - - -anonymous + + +explicitly_typed_local_variable_declaration - - -identifier + + +v - - -throw_statement + + +{ - - -general_catch_clause + + +unmanaged_type - - -identifier + + +) - - -object_creation_expression + + +) - - -ordering_direction + + +* - - -compilation_unit + + +} - - -null_literal + + +try_statement - - -embedded_statement + + +primary_expression - - -statement_list + + +; - - -in + + +identifier - - -a + + +( - - -int + + +select_or_group_clause - - -= + + +catch_clauses - - -c + + +. - - -into + + +invocation_expression - - -identifier + + +public - - -query_body_clause + + +using_statement - - -} + + += - - -query_continuation + + +identifier - - -explicitly_typed_local_variable_declarator + + +class_modifier - - -int + + +. - - -d + + +local_variable_declaration - - -ordering + + +constructor_declarator - - -join_into_clause + + +block - - -on + + +expression - - -block + + +embedded_statement - - -block + + +] - - -query + + +1 - - -parameter_list + + +expression_statement - - -local_variable_declaration + + +resource_acquisition + + + +local_variable_initializer ) - - -constructor_initializer + + +identifier - - -A + + +in - - -; + + +argument_list - - -interface_type + + +interface_type_list - - -= + + +( - - -identifier + + +1 - - -param + + +; - - -expression + + +null - - -into + + +expression - - -integral_type + + +namespace_member_declaration - - -GetHashCode + + +g - - -: + + +query_body_clause - - -type + + +. - - + + ) - - -element_access + + +( - - -customers + + +; - - -using_statement + + +query_body_clause - - -block + + +a - - -] + + +using - - -primary_expression + + +100 - - -resource_acquisition + + +1 - - -identifier + + +try - - + + +query + + + identifier - - -. + + +from - - -member_access + + +query_body_clause - - -identifier + + +expression - - -argument_list + + +fixed_pointer_initializer - - -explicitly_typed_local_variable_declaration + + +null_literal - - -1 + + +contextual_keyword + + + +statement + + + +. integral_type - - -join_clause - - - -implicitly_typed_local_variable_declaration + + +unary_expression - - -var + + +identifier - - -intref + + +throw - - -object_creation_expression + + +expression - - + + implicitly_typed_local_variable_declaration - - -( + + +argument_list - - -!= + + +sync - - -AccessViolationException + + +identifier - - -using_statement + + +explicitly_typed_local_variable_declarator - - -type + + +ordering - - -identifier + + +} - - -from_clause + + +identifier - - -* + + +identifier - - -interface_type + + +identifier - - -C + + +Country - - -ordering_direction + + +primary_expression - - -b + + +items - - -) + + +value_type - - -unary_expression + + +int - - -identifier + + +stackalloc - - -query_body_clause + + +return_statement - - + + identifier - - -{ + + +relational_expression - - -A + + +) - - -integral_type + + +descending - - -v + + +e - - + + +c1 + + + ) - - + + +explicitly_typed_local_variable_declarator + + + +member_declarator + + + +block + + + +identifier + + + ( - - -from_clause + + +{ - - -fixed_pointer_declarator + + +object_creation_expression - - -statement + + +Count - - -expression + + +query_body_clause - - -class_declaration + + +c - - -null + + +attribute_list - - -[ + + +object_creation_expression - - -B + + +, - - -statement_list + + +process + + + +on - - + + expression - - -block + + +into - - -statement + + +[ - - -* + + +identifier - - -select + + +identifier - - + + identifier - - + + ) - - -exception_specifier + + +let - - -embedded_statement + + +unary_expression - - + + } - - -; - - - -customers + + +identifier - - -( + + +query_body_clause - - -process + + +using_statement - - -null + + +type - - -; + + +member_access - - -literal + + +throw_statement - - + + { - - + + +Exception + + + +statement_list + + + +where + + + ( - - -} + + +into - - -literal + + +fixed_pointer_initializer - - + + +intref + + + . - - -identifier + + +local_variable_initializer - - -catch + + +yield_statement - - -query_expression + + +null_literal - - -fixed_pointer_declarator + + +namespace - - -identifier + + +& - - -1 + + +customers - - -value_type + + +pointer_indirection_expression + + + +; - - + + c1 - - -My + + +) - - -primary_expression + + +class_modifier - - -explicitly_typed_local_variable_declaration + + +statement - - -integral_type + + +p - - -{ + + +unary_expression - - -c + + +explicitly_typed_local_variable_declaration - - + + identifier - - -primary_expression + + +statement - - -from + + +) - - -{ + + +fixed_pointer_initializer - - -= - - - -} - - - -expression - - - -orderings + + +type - - -( + + +using_statement - - -fixed_pointer_initializer + + +literal - - -c1 + + +join - - -select + + +A - - -] + + +; - - + + primary_expression - - -identifier - - - -identifier - - - -) + + +B - - -C + + +using - - -identifier + + +expression - - -= + + +orderby - - -invocation_expression + + +expression - - -embedded_statement + + +) - - -= + + +primary_expression - - -A + + +yield - - -declaration_statement + + +* - - -member_access + + +* - - -c + + +element_access - - -; + + +statement_list - - -) + + +integral_type - - -lock + + +} - - -expression + + +I - - -resource_acquisition + + +integral_type - - -statement_list + + +identifier - - -customers + + +select_clause - - -assignment + + += - - -explicitly_typed_local_variable_declaration + + += - - -expression + + +{ - - -qualified_identifier + + +invocation_expression - - -) + + +select_clause - - -fixed_pointer_declarator + + +2 - - -member_declarator_list + + +{ - - -identifier + + +] - - -statement + + +variable_initializer - - -local_variable_initializer + + +} - - -identifier + + +System - - -assignment + + +using - - -identifier + + += - - -, + + +} - - + + g - - -primary_expression - - - -descending + + +param - - -{ + + +Count - - -explicitly_typed_local_variable_declarator + + +yield - - -( + + +stackalloc - - + + identifier - - -= + + +embedded_statement - - -interface_type_list + + +unary_expression - - -primary_expression + + +( - - -resource_acquisition + + +; - - -expression + + +) - - -* + + +class_member_declaration - - -identifier + + +c - - -. + + +expression - - -exception_specifier + + +new - - -primary_expression + + +[ - - -yield_statement + + += - - -identifier + + +( - - -class + + +block - - -100 + + +in - - -literal + + +expression - - -invocation_expression + + +GetHashCode - - -int + + +resource_acquisition - - -= + + +throw - - -assignment_operator + + +unary_expression - - -: + + +namespace_declaration - - -c1 + + +{ - - -expression + + +int - - + + identifier - - -explicitly_typed_local_variable_declaration - - - -fixed_pointer_initializer - - - -p + + +embedded_statement - - + + invocation_expression - - -y - - - -try + + +identifier - - -CustCount + + +finally - - -attributes + + +statement_expression - - -c + + +, - - -class_modifier + + +fixed_pointer_declarator - - -identifier + + +attribute_target_specifier - - -lock_statement + + +query_expression - - -identifier + + +simple_assignment - - -null_literal + + +member_access - - -} + + +fixed_pointer_declarators - - -expression + + +3 - - -identifier + + +explicitly_typed_local_variable_declaration - - -( + + +type - - -resource_acquisition + + +query_continuation - - -specific_catch_clause + + +expression - - -identifier + + += - - -] + + +literal - - -Key + + +( - - -statement + + +d - - -new + + +invocation_expression - - -select_or_group_clause + + += - - -identifier + + +orderby_clause - - -identifier + + +expression_statement - - -3 + + +) - - -[ + + +fixed_pointer_declarator - - -av + + +: - - + + = - - -identifier + + +expression - - -catch_clauses + + +orderby_clause - - -unary_expression + + +Country - - -( + + +identifier - - -) + + +select_clause - - + + identifier - - + + identifier - - -Count - - - + + identifier - - -return_statement - - - -literal - - - -literal + + +; - - -System + + +query_body - - -prog + + +p - - -{ + + +identifier - - -equality_expression + + +fixed_statement - - -; + + +public - - -literal + + +type - - + + expression - - -statement_list - - - -throw + + +explicitly_typed_local_variable_declarator - - -array_initializer + + +catch - - -query_body_clause + + += - - -group + + +statement_expression - - -g + + +explicitly_typed_local_variable_declarators - - -query_body + + +c - - -stackalloc + + +compilation_unit - - -public + + +identifier - - -unmanaged_type + + +invocation_expression - - -stackalloc_expression + + +expression_statement - - -p + + +explicitly_typed_local_variable_declaration - - -member_access + + +identifier - - -[ + + +statement - - -expression + + +statement_expression - - -] + + +embedded_statement - - -argument_list + + +throw - - + + expression - - -3 + + +new - - -assignment_operator + + +expression - - -var + + +primary_expression - - -equality_expression + + +type - - -e + + +c1 - - + + identifier - - -primary_expression - - - -value_type + + +array_initializer - - -unary_expression + + +] - - -identifier + + +b - - -on + + +primary_expression - - + + invocation_expression - - -( + + +CustCount - - -Country + + +using - - -explicitly_typed_local_variable_declarator + + +attribute_target - - -this_access + + +member_access - - -member_declarator + + +local_variable_declaration - - -value_type + + +new - - -assignment_operator + + +3 - - -} + + +( - - -embedded_statement + + +expression - - -using_statement + + +on + + + +variable_initializer \ No newline at end of file diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-G/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-G/Reference/sample.gruntree.red.txt index 0f3df14a1..9e1149353 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-G/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-G/Reference/sample.gruntree.red.txt @@ -219,7 +219,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -227,10 +227,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ value ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -299,7 +296,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -308,7 +305,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment_operator ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ += ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -330,7 +327,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -339,7 +336,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment_operator ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ -= ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-G/Reference/sample.stderr.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-G/Reference/sample.stderr.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-G/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-G/Reference/sample.tree.red.txt index 1b567d1eb..f660707f1 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-G/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-G/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier My)) (namespace_body { (namespace_member_declaration (class_declaration (class_modifier public) (class_modifier (unsafe_modifier unsafe)) partial class (identifier A) (class_base : (interface_type_list (interface_type (identifier C)) , (interface_type (identifier I)))) (class_body { (class_member_declaration (indexer_declaration (indexer_modifier public) (indexer_modifier abstract) (indexer_declarator (type (integral_type int)) this [ (parameter_list (fixed_parameter (type (integral_type int)) (identifier index))) ]) (indexer_body { (accessor_declarations (get_accessor_declaration (accessor_modifier protected internal) get (accessor_body ;)) (set_accessor_declaration (accessor_modifier internal protected) set (accessor_body ;))) }))) (class_member_declaration (event_declaration (attributes (attribute_section [ (attribute_target_specifier (attribute_target (keyword event)) :) (attribute_list (identifier Test)) ])) (event_modifier public) event (type (identifier Action)) (member_name (identifier E1)) { (event_accessor_declarations (add_accessor_declaration (attributes (attribute_section [ (attribute_list (identifier Obsolete)) ])) add (block { (statement_list (expression_statement (statement_expression (assignment (unary_expression (contextual_keyword value)) (assignment_operator =) (expression (contextual_keyword value)))) ;)) })) (remove_accessor_declaration (attributes (attribute_section [ (attribute_list (identifier Obsolete)) ]) (attribute_section [ (attribute_target_specifier (attribute_target (keyword return)) :) (attribute_list (identifier Obsolete)) ])) remove (block { (statement_list (statement (expression_statement (statement_expression (assignment (unary_expression (identifier E)) (assignment_operator +=) (expression (identifier Handler)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier E)) (assignment_operator -=) (expression (identifier Handler)))) ;))) }))) })) (class_member_declaration (operator_declaration (operator_modifier public) (operator_modifier static) (operator_declarator (binary_operator_declarator (type (identifier A)) operator (overloadable_binary_operator +) ( (fixed_parameter (type (identifier A)) (identifier first)) , (fixed_parameter (type (identifier A)) (identifier second)) ))) (operator_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (identifier Delegate)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier handler) = (local_variable_initializer (object_creation_expression new (type (identifier Delegate)) ( (argument_list (identifier Handler)) ))))))) ;)) (statement (return_statement return (expression (invocation_expression (primary_expression (member_access (primary_expression (identifier first)) . (identifier Add))) ( (argument_list (identifier second)) ))) ;))) })))) (class_member_declaration (operator_declaration (attributes (attribute_section [ (attribute_target_specifier (attribute_target (identifier method)) :) (attribute_list (identifier Obsolete)) ]) (attribute_section [ (attribute_target_specifier (attribute_target (keyword return)) :) (attribute_list (identifier Obsolete)) ])) (operator_modifier public) (operator_modifier static) (operator_declarator (unary_operator_declarator (type (simple_type bool)) operator (overloadable_unary_operator true) ( (fixed_parameter (type (identifier A)) (identifier a)) ))) (operator_body (block { (statement_list (return_statement return (expression (boolean_literal true)) ;)) })))) (class_member_declaration (operator_declaration (operator_modifier public) (operator_modifier static) (operator_declarator (unary_operator_declarator (type (simple_type bool)) operator (overloadable_unary_operator false) ( (fixed_parameter (type (identifier A)) (identifier a)) ))) (operator_body (block { (statement_list (return_statement return (expression (boolean_literal false)) ;)) })))) (class_member_declaration (class_declaration class (identifier C) (class_body { }))) }))) })))) +(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier My)) (namespace_body { (namespace_member_declaration (class_declaration (class_modifier public) (class_modifier (unsafe_modifier unsafe)) partial class (identifier A) (class_base : (interface_type_list (interface_type (identifier C)) , (interface_type (identifier I)))) (class_body { (class_member_declaration (indexer_declaration (indexer_modifier public) (indexer_modifier abstract) (indexer_declarator (type (integral_type int)) this [ (parameter_list (fixed_parameter (type (integral_type int)) (identifier index))) ]) (indexer_body { (accessor_declarations (get_accessor_declaration (accessor_modifier protected internal) get (accessor_body ;)) (set_accessor_declaration (accessor_modifier internal protected) set (accessor_body ;))) }))) (class_member_declaration (event_declaration (attributes (attribute_section [ (attribute_target_specifier (attribute_target (keyword event)) :) (attribute_list (identifier Test)) ])) (event_modifier public) event (type (identifier Action)) (member_name (identifier E1)) { (event_accessor_declarations (add_accessor_declaration (attributes (attribute_section [ (attribute_list (identifier Obsolete)) ])) add (block { (statement_list (expression_statement (statement_expression (simple_assignment (unary_expression (contextual_keyword value)) = (expression (contextual_keyword value)))) ;)) })) (remove_accessor_declaration (attributes (attribute_section [ (attribute_list (identifier Obsolete)) ]) (attribute_section [ (attribute_target_specifier (attribute_target (keyword return)) :) (attribute_list (identifier Obsolete)) ])) remove (block { (statement_list (statement (expression_statement (statement_expression (compound_assignment (unary_expression (identifier E)) (compound_assignment_operator +=) (expression (identifier Handler)))) ;)) (statement (expression_statement (statement_expression (compound_assignment (unary_expression (identifier E)) (compound_assignment_operator -=) (expression (identifier Handler)))) ;))) }))) })) (class_member_declaration (operator_declaration (operator_modifier public) (operator_modifier static) (operator_declarator (binary_operator_declarator (type (identifier A)) operator (overloadable_binary_operator +) ( (fixed_parameter (type (identifier A)) (identifier first)) , (fixed_parameter (type (identifier A)) (identifier second)) ))) (operator_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (identifier Delegate)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier handler) = (local_variable_initializer (object_creation_expression new (type (identifier Delegate)) ( (argument_list (identifier Handler)) ))))))) ;)) (statement (return_statement return (expression (invocation_expression (primary_expression (member_access (primary_expression (identifier first)) . (identifier Add))) ( (argument_list (identifier second)) ))) ;))) })))) (class_member_declaration (operator_declaration (attributes (attribute_section [ (attribute_target_specifier (attribute_target (identifier method)) :) (attribute_list (identifier Obsolete)) ]) (attribute_section [ (attribute_target_specifier (attribute_target (keyword return)) :) (attribute_list (identifier Obsolete)) ])) (operator_modifier public) (operator_modifier static) (operator_declarator (unary_operator_declarator (type (simple_type bool)) operator (overloadable_unary_operator true) ( (fixed_parameter (type (identifier A)) (identifier a)) ))) (operator_body (block { (statement_list (return_statement return (expression (boolean_literal true)) ;)) })))) (class_member_declaration (operator_declaration (operator_modifier public) (operator_modifier static) (operator_declarator (unary_operator_declarator (type (simple_type bool)) operator (overloadable_unary_operator false) ( (fixed_parameter (type (identifier A)) (identifier a)) ))) (operator_body (block { (statement_list (return_statement return (expression (boolean_literal false)) ;)) })))) (class_member_declaration (class_declaration class (identifier C) (class_body { }))) }))) })))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-G/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-G/Reference/sample.tree.svg index 2172804a5..86d65ba80 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-G/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-G/Reference/sample.tree.svg @@ -1,23 +1,23 @@ - - - - - - - - - - - + + + + + + + + + + + - + - - - + + + - + @@ -27,9 +27,9 @@ - - - + + + @@ -67,9 +67,9 @@ - - - + + + @@ -81,18 +81,18 @@ - + - - + + - + - - - + + + @@ -107,18 +107,17 @@ - - - + + + - - - - + + + - - + + @@ -136,1600 +135,1596 @@ - - - - - + + + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A - - -A - - - -( - - - -unsafe_modifier + + +attribute_list - - -get_accessor_declaration + + +internal - - -] + + +second - - -attribute_list + + +attribute_section - - --= + + +C - - -attribute_list + + +expression - - -boolean_literal + + +identifier - - -keyword + + +identifier - - -static + + +Add - - -{ + + +attribute_target index - - -identifier - - - -{ + + +fixed_parameter - - -; + + +return - - + + a - - -primary_expression + + +[ - - -assignment + + +( - - -compilation_unit + + +operator_body - - -C + + +{ - - -identifier + + +keyword - - -contextual_keyword + + +: - - -Handler + + +type - - -operator_modifier + + +) - - -binary_operator_declarator + + +: - - -statement_list + + +primary_expression - - -} + + +type - - -{ + + +event - - -+ + + +protected - - -bool + + +public - - -prog + + +accessor_declarations - - -statement_expression + + +identifier - - -protected + + +compound_assignment - - -object_creation_expression + + +{ - - -attribute_target_specifier + + +compound_assignment_operator - - -event_declaration + + +set - - -event + + +first - - -identifier + + +A - - -attribute_list + + +expression - - + + identifier - - -static + + +second - - -: + + +Delegate - - -attributes + + +type - - -attribute_section + + +indexer_declarator - - -Action + + +Delegate - - -operator + + +: - - -attribute_target + + +keyword - - -internal + + +attribute_list - - -attribute_target + + +static - - -identifier + + +first - - -; + + +add_accessor_declaration + + + +, + + + +bool - - + + [ - - -statement_list + + +{ - - -statement + + +namespace_declaration - - -identifier + + +( - - -int + + +argument_list - - -; + + +false - - -return_statement + + +attribute_list - - -[ + + +public - - -namespace_declaration + + +class_declaration - - -false + + +compound_assignment_operator - - -class_body + + +C - - -class_member_declaration + + +simple_type - - + + identifier - - -return + + +invocation_expression - - -attributes + + +boolean_literal - - -] + + +identifier - - + + +contextual_keyword + + + [ - - -event + + +; - - -true + + +identifier - - -attribute_list + + += - - -{ + + +namespace_body - - -) + + +expression_statement - - -contextual_keyword + + +operator_modifier - - -} + + +static - - -} + + +identifier - - -unary_operator_declarator + + +statement_list - - -class_member_declaration + + +operator_declaration - - -return + + +} - - -overloadable_unary_operator + + +) - - -namespace_member_declaration + + +false - - -method + + +identifier - - -public - - - -type - - - -{ - - - -type + + +My - - -attribute_list + + +expression - - -class_member_declaration + + +primary_expression - - -type + + +identifier - - -accessor_body + + +interface_type - - -return + + +expression - - -expression_statement + + +member_name - - -) + + +interface_type_list - - -public + + +E - - -. + + +event_declaration - - -argument_list + + +accessor_modifier - - -] + + +partial - - -indexer_body + + +, - - -identifier + + +unary_expression - - -integral_type + + +class_member_declaration - - -] + + +; - - + + type - - -fixed_parameter - - - + + block - - -: - - - -attributes - - - -attributes + + +compilation_unit - - -statement + + +E1 - - -member_name + + +] - - -attribute_section + + +( - - -public + + +namespace_member_declaration - - -assignment_operator + + +statement_list - - + + type - - -remove_accessor_declaration - - - -fixed_parameter - - - -identifier + + +return_statement - - + + } - - -attribute_section - - - -local_variable_initializer - - - -expression_statement - - - -( - - - -attribute_section - - - -add - - - -explicitly_typed_local_variable_declarators - - - -attribute_target_specifier - - - -indexer_declarator + + +) - - -operator_declaration + + +] - - -Handler + + ++= - - -C + + +unary_operator_declarator - - -statement_list + + +member_access - - -operator_declarator + + +overloadable_binary_operator - - -} + + +{ - - -assignment_operator + + +qualified_identifier - - -operator_declarator + + +; - - -identifier + + +-= - - -first + + +attributes - - -class_modifier + + +accessor_body - - -attribute_target_specifier + + +Obsolete - - + + statement_list - - -: - - - -{ + + +accessor_body - - -identifier + + +block - - -class_modifier + + +[ - - -attribute_target + + +type - - -indexer_modifier + + +overloadable_unary_operator - - -add_accessor_declaration + + +; - - + + identifier - - -namespace_body - - - -+= - - - -Add - - - -= + + +[ - - + + Obsolete - - -{ - - - -int - - - -primary_expression - - - -explicitly_typed_local_variable_declaration - - - -member_access + + +class_body - - -return + + +unary_expression - - -My + + +attribute_list - - -class_member_declaration + + +attribute_list - - -handler + + +identifier - - + + type - - -expression_statement - - - -, + + +attribute_section - - -event_modifier + + +return_statement - - -operator_modifier + + +indexer_modifier - - -operator_body + + +identifier - - -attribute_section + + +identifier - - + + identifier - - -block + + +attribute_target_specifier - - -unary_expression + + +accessor_modifier - - -operator_modifier + + +identifier - - + + type - - -operator + + +fixed_parameter - - -public + + +type - - -explicitly_typed_local_variable_declarator + + +fixed_parameter - - -A + + +identifier - - -E1 + + +explicitly_typed_local_variable_declarator [ - - -= + + +Obsolete - - -remove + + +attribute_target_specifier - - -class_declaration + + +local_variable_initializer - - -class_body + + +{ - - -attribute_target + + +integral_type - - -public + + +interface_type - - -Delegate + + +explicitly_typed_local_variable_declaration - - -qualified_identifier + + +return_statement - - -class + + +internal - - -statement_expression + + +I - - -namespace + + ++ + + + +event + + + +class_declaration + + + +operator_modifier + + + +Obsolete + + + +class - - -class_declaration + + +contextual_keyword - - -accessor_modifier + + +operator_declarator - - -attribute_target_specifier + + +attribute_section type - - -event_accessor_declarations - - - -attribute_list - - - -) + + +class_body unsafe - - -; + + +namespace - - -statement + + +operator_modifier - - -static + + +prog + + + +true + + + +attributes + + + += + + + +] - - + + statement_list - - + + public - - -block + + +attribute_target - - -return_statement + + +method - - -expression + + +operator_modifier - - -class + + +explicitly_typed_local_variable_declarators + + + +] - - + + operator_modifier - - -type + + +operator - - -( + + +operator_modifier - - + + +statement + + + +attributes + + + +Handler + + + A - - -) + + +unsafe_modifier - - -{ + + +attribute_target_specifier - - -assignment + + +remove - - -identifier + + +operator_declaration - - -type + + +this - - -accessor_declarations + + +attributes - - -get + + +[ - - -declaration_statement + + +statement_expression - - -a + + +A - - -operator_body + + +( - - -integral_type + + +identifier - - -operator_declaration + + +block - - -operator_body + + +{ - - -operator + + +] + + + +return - - + + +) + + + } - - -simple_type + + +attribute_target - - -I + + +} - - -class_member_declaration + + +( - - -identifier + + +} - - -E + + +a - - -interface_type + + +identifier + + + +expression_statement - - + + ; - - -abstract + + +static - - -this + + +attribute_target - - + + identifier - - -expression - - - -( - - - -; + + +: - - -statement + + +value - - + + identifier - - + + +class + + + class_member_declaration - - -[ + + +return - - + + +{ + + + +operator_declarator + + + identifier - - -keyword + + +A + + + +unary_expression + + + +type + + + +statement_expression + + + +E - - + + identifier - - + + identifier - - -: + + +binary_operator_declarator - - -fixed_parameter + + +A - - -) + + +class_member_declaration - - -] + + +compound_assignment - - -bool + + +attribute_section - - -assignment + + +abstract - - -} + + +block - - -identifier + + +attribute_list - - -identifier + + +expression - - -type + + +; - - -[ + + +class_base - - -identifier + + +Action - - -} + + +statement_list - - + + +fixed_parameter + + + +block + + + +operator + + + identifier - - -A + + +} - - -Delegate + + +: - - -indexer_modifier + + +operator_declaration + + + +attribute_section - - -interface_type + + +} - - -Obsolete + + +attribute_target_specifier - - -value + + +class_member_declaration } - - -Obsolete + + +event_accessor_declarations - - -fixed_parameter + + +operator_declarator - - -; + + +simple_assignment - - -keyword + + +Handler - - -; + + +overloadable_unary_operator - - -statement_expression + + +expression_statement - - -, + + +remove_accessor_declaration - - -Obsolete + + +int - - -identifier + + +indexer_body - - -unary_expression + + +; - - -identifier + + +operator_body - - -first + + +operator - - -unary_operator_declarator + + +operator_body - - -accessor_body + + +expression - - -Handler + + +bool - - -operator_declaration + + +class_modifier - - -class_base + + +return - - + + identifier - - -interface_type_list + + +parameter_list - - -second + + +; - - -new + + +local_variable_declaration - - -expression + + +class_modifier - - + + +boolean_literal + + + identifier - - + + { - - -operator_modifier + + +handler - - -A + + +type - - -set_accessor_declaration + + +indexer_modifier - - -] + + +new - - -: + + +. - - -invocation_expression + + +simple_type - - -overloadable_unary_operator + + +public - - + + +identifier + + + fixed_parameter - - -local_variable_declaration + + +identifier - - -assignment_operator + + +attribute_section - - -operator_declarator + + +return - - -[ + + +int - - -expression + + +add - - -attribute_section + + +Obsolete - - -Test + + +identifier - - -( + + +public - - -block + + +{ - - -simple_type + + +statement - - -overloadable_binary_operator + + +statement - - -identifier + + +Handler - - -true + + +get - - -parameter_list + + +event_modifier - - + + identifier - - -E + + +{ - - + + } - - -expression - - - -second + + +Test - - -return_statement + + +statement_expression - - -expression + + +protected - - + + identifier - - -Obsolete + + +class_member_declaration - - -set + + +) - - -value + + +] - - -identifier + + +get_accessor_declaration - - -block + + +; + + + +public - - + + identifier - - -{ + + +} - - -argument_list + + +object_creation_expression - - -indexer_declaration + + +keyword - - -accessor_modifier + + +integral_type - - -identifier + + +declaration_statement - - -false + + +value - - -return + + +unary_operator_declarator - - -identifier + + +argument_list - - -partial + + +set_accessor_declaration + + + +indexer_declaration ] - - -; - - - -protected - - - -internal + + +identifier - - -boolean_literal + + +statement - - -unary_expression + + +true - - -type + + +identifier - - -operator_modifier + + +class_member_declaration \ No newline at end of file diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-I/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-I/Reference/sample.gruntree.red.txt index 0db0a6f84..24a117551 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-I/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-I/Reference/sample.gruntree.red.txt @@ -567,7 +567,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -575,10 +575,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ result ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-I/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-I/Reference/sample.tree.red.txt index 43ea2db1e..bb2cd5a82 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-I/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-I/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier My)) (namespace_body { (namespace_member_declaration (enum_declaration (attributes (attribute_section [ (attribute_target_specifier (attribute_target (identifier type)) :) (attribute_list (identifier Flags)) ])) (enum_modifier public) enum (identifier E) (enum_body { (enum_member_declarations (enum_member_declaration (identifier A)) , (enum_member_declaration (identifier B) = (constant_expression (identifier A))) , (enum_member_declaration (identifier C) = (constant_expression (additive_expression (additive_expression (literal 2)) + (multiplicative_expression (identifier A))))) , (enum_member_declaration (identifier D))) , }))) (namespace_member_declaration (delegate_declaration (delegate_modifier public) delegate (return_type void) (delegate_header (identifier Delegate) ( (parameter_list (fixed_parameter (type (class_type object)) (identifier P))) ) ;))) (namespace_member_declaration (namespace_declaration namespace (qualified_identifier (identifier Test)) (namespace_body { (using_directive (using_namespace_directive using (namespace_name (identifier System)) ;)) (using_directive (using_namespace_directive using (namespace_name (namespace_or_type_name (identifier System) . (identifier Collections))) ;)) (namespace_member_declaration (class_declaration (class_modifier public) class (identifier Список) (class_body { (class_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier public)) (method_modifier (ref_method_modifier static))) (return_type (identifier IEnumerable)) (method_header (member_name (identifier Power)) ( (parameter_list (fixed_parameters (fixed_parameter (type (integral_type int)) (identifier number)) , (fixed_parameter (type (integral_type int)) (identifier exponent)))) )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (identifier Список)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier Список) = (local_variable_initializer (object_creation_expression new (type (identifier Список)) ( ))))))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier Список)) . (identifier Main))) ( ))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier counter) = (local_variable_initializer (parenthesized_expression ( (expression (additive_expression (additive_expression (literal 0)) + (multiplicative_expression (literal 0)))) ))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier אתר) = (local_variable_initializer (literal 0)))))) ;)) (statement (while_statement while ( (boolean_expression (relational_expression (relational_expression (pre_increment_expression ++ (unary_expression (post_increment_expression (primary_expression (identifier counter)) ++)))) < (shift_expression (pre_decrement_expression -- (unary_expression (post_decrement_expression (primary_expression (identifier exponent)) --)))))) ) (embedded_statement (block { (statement_list (statement (expression_statement (statement_expression (assignment (unary_expression (identifier result)) (assignment_operator =) (expression (additive_expression (additive_expression (additive_expression (multiplicative_expression (multiplicative_expression (identifier result)) * (switch_expression (identifier number)))) + (multiplicative_expression (unary_expression + (unary_expression (post_increment_expression (primary_expression (post_increment_expression (primary_expression (identifier number)) ++)) ++))))) + (multiplicative_expression (identifier number)))))) ;)) (statement (yield_statement yield return (expression (identifier result)) ;))) }))))) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier static)) (return_type void) (method_header (member_name (identifier Main)) ( )) (method_body (block { (statement_list (foreach_statement foreach ( (local_variable_type (integral_type int)) (identifier i) in (expression (invocation_expression (primary_expression (identifier Power)) ( (argument_list (argument (literal 2)) , (argument (literal 8))) ))) ) (embedded_statement (block { (statement_list (expression_statement (statement_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier Console)) . (identifier Write))) ( (argument_list (argument (literal "{0} ")) , (argument (identifier i))) ))) ;)) })))) })))) (class_member_declaration (method_declaration (method_modifiers (method_modifier async)) (return_type void) (method_header (member_name (identifier Wait)) ( )) (method_body (block { (statement_list (expression_statement (statement_expression (await_expression await (unary_expression (invocation_expression (primary_expression (member_access (primary_expression (member_access (primary_expression (member_access (primary_expression (member_access (primary_expression (identifier System)) . (identifier Threading))) . (identifier Tasks))) . (identifier Task))) . (identifier Delay))) ( (argument_list (literal 0)) ))))) ;)) })))) (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier AsyncAnonymous)) ( )) (method_body (block { (statement_list (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier task) = (expression (invocation_expression (primary_expression (member_access (primary_expression (member_access (primary_expression (identifier Task)) . (identifier Factory))) . (identifier StartNew))) ( (argument_list (lambda_expression async (anonymous_function_signature (explicit_anonymous_function_signature ( ))) => (anonymous_function_body (block { (statement_list (return_statement return (expression (await_expression await (unary_expression (invocation_expression (primary_expression (member_access (primary_expression (object_creation_expression new (type (identifier WebClient)) ( ))) . (identifier DownloadStringTaskAsync))) ( (argument_list (literal "http://example.com")) ))))) ;)) })))) )))))) ;)) })))) }))) }))) })))) +(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier My)) (namespace_body { (namespace_member_declaration (enum_declaration (attributes (attribute_section [ (attribute_target_specifier (attribute_target (identifier type)) :) (attribute_list (identifier Flags)) ])) (enum_modifier public) enum (identifier E) (enum_body { (enum_member_declarations (enum_member_declaration (identifier A)) , (enum_member_declaration (identifier B) = (constant_expression (identifier A))) , (enum_member_declaration (identifier C) = (constant_expression (additive_expression (additive_expression (literal 2)) + (multiplicative_expression (identifier A))))) , (enum_member_declaration (identifier D))) , }))) (namespace_member_declaration (delegate_declaration (delegate_modifier public) delegate (return_type void) (delegate_header (identifier Delegate) ( (parameter_list (fixed_parameter (type (class_type object)) (identifier P))) ) ;))) (namespace_member_declaration (namespace_declaration namespace (qualified_identifier (identifier Test)) (namespace_body { (using_directive (using_namespace_directive using (namespace_name (identifier System)) ;)) (using_directive (using_namespace_directive using (namespace_name (namespace_or_type_name (identifier System) . (identifier Collections))) ;)) (namespace_member_declaration (class_declaration (class_modifier public) class (identifier Список) (class_body { (class_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier public)) (method_modifier (ref_method_modifier static))) (return_type (identifier IEnumerable)) (method_header (member_name (identifier Power)) ( (parameter_list (fixed_parameters (fixed_parameter (type (integral_type int)) (identifier number)) , (fixed_parameter (type (integral_type int)) (identifier exponent)))) )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (identifier Список)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier Список) = (local_variable_initializer (object_creation_expression new (type (identifier Список)) ( ))))))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier Список)) . (identifier Main))) ( ))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier counter) = (local_variable_initializer (parenthesized_expression ( (expression (additive_expression (additive_expression (literal 0)) + (multiplicative_expression (literal 0)))) ))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier אתר) = (local_variable_initializer (literal 0)))))) ;)) (statement (while_statement while ( (boolean_expression (relational_expression (relational_expression (pre_increment_expression ++ (unary_expression (post_increment_expression (primary_expression (identifier counter)) ++)))) < (shift_expression (pre_decrement_expression -- (unary_expression (post_decrement_expression (primary_expression (identifier exponent)) --)))))) ) (embedded_statement (block { (statement_list (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier result)) = (expression (additive_expression (additive_expression (additive_expression (multiplicative_expression (multiplicative_expression (identifier result)) * (switch_expression (identifier number)))) + (multiplicative_expression (unary_expression + (unary_expression (post_increment_expression (primary_expression (post_increment_expression (primary_expression (identifier number)) ++)) ++))))) + (multiplicative_expression (identifier number)))))) ;)) (statement (yield_statement yield return (expression (identifier result)) ;))) }))))) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier static)) (return_type void) (method_header (member_name (identifier Main)) ( )) (method_body (block { (statement_list (foreach_statement foreach ( (local_variable_type (integral_type int)) (identifier i) in (expression (invocation_expression (primary_expression (identifier Power)) ( (argument_list (argument (literal 2)) , (argument (literal 8))) ))) ) (embedded_statement (block { (statement_list (expression_statement (statement_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier Console)) . (identifier Write))) ( (argument_list (argument (literal "{0} ")) , (argument (identifier i))) ))) ;)) })))) })))) (class_member_declaration (method_declaration (method_modifiers (method_modifier async)) (return_type void) (method_header (member_name (identifier Wait)) ( )) (method_body (block { (statement_list (expression_statement (statement_expression (await_expression await (unary_expression (invocation_expression (primary_expression (member_access (primary_expression (member_access (primary_expression (member_access (primary_expression (member_access (primary_expression (identifier System)) . (identifier Threading))) . (identifier Tasks))) . (identifier Task))) . (identifier Delay))) ( (argument_list (literal 0)) ))))) ;)) })))) (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier AsyncAnonymous)) ( )) (method_body (block { (statement_list (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier task) = (expression (invocation_expression (primary_expression (member_access (primary_expression (member_access (primary_expression (identifier Task)) . (identifier Factory))) . (identifier StartNew))) ( (argument_list (lambda_expression async (anonymous_function_signature (explicit_anonymous_function_signature ( ))) => (anonymous_function_body (block { (statement_list (return_statement return (expression (await_expression await (unary_expression (invocation_expression (primary_expression (member_access (primary_expression (object_creation_expression new (type (identifier WebClient)) ( ))) . (identifier DownloadStringTaskAsync))) ( (argument_list (literal "http://example.com")) ))))) ;)) })))) )))))) ;)) })))) }))) }))) })))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-I/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-I/Reference/sample.tree.svg index 710d71c58..df65f65e9 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-I/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-I/Reference/sample.tree.svg @@ -1,12 +1,12 @@ - - - - + + + + - - - + + + @@ -59,7 +59,7 @@ - + @@ -79,22 +79,22 @@ - - - - + + + + - - - + + + - + @@ -105,28 +105,28 @@ - - - - - - - - - - - - + + + + + + + + + + + + - + - + @@ -147,11 +147,11 @@ - - - - - + + + + + @@ -172,7 +172,7 @@ - + @@ -187,7 +187,7 @@ - + @@ -213,7 +213,7 @@ - + @@ -229,11 +229,11 @@ - - - - - + + + + + @@ -254,2337 +254,2332 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -switch_expression + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +method_modifiers - - -} + + +Список - - -C + + +fixed_parameter - - -= + + +boolean_expression - - -0 + + +identifier + + + +pre_decrement_expression counter - - -identifier + + +Delegate - - -statement_list + + +type - - -identifier + + +( - - + + +number + + + +method_modifiers + + + +yield_statement + + + +, + + + ; - - -method_modifier + + += + + + +fixed_parameters - + + +=> + + + +multiplicative_expression + + namespace_declaration - - -identifier - - - -attributes + + +simple_assignment - - -qualified_identifier + + +member_access - - -identifier + + +Flags - - -identifier + + +} - - -statement_list + + +i - - -namespace_body + + +ref_method_modifier - - -foreach + + +( - - + + identifier - - + + identifier - - -= - - - -relational_expression + + +method_header - - -} + + +expression - - -void + + +attribute_section - - -expression_statement + + +int - - -) + + +shift_expression - - -) + + +implicitly_typed_local_variable_declarator - - -delegate_declaration + + +} - - -. + + +identifier - - -( + + +local_variable_type - - -unary_expression + + +return - - -new + + +constant_expression - - -. + + +class_modifier - - -( + + +post_increment_expression - - -statement_list + + +class_member_declaration - - + + ) - - -identifier + + +using - - -ref_method_modifier + + +class_body - - -אתר + + +method_modifier - - -yield_statement + + +multiplicative_expression - - -{ + + +. - - -exponent + + +primary_expression - - -int + + +identifier - - -statement_expression + + +WebClient - - -declaration_statement + + +local_variable_declaration - - -explicitly_typed_local_variable_declaration + + +object_creation_expression - - -void + + +using_directive - - -2 + + +declaration_statement - - -WebClient + + +member_access - - -type + + +( - - -method_declaration + + +} - - -namespace_member_declaration + + +, - - -identifier + + ++ - - -in + + +statement - - -namespace_member_declaration + + +; - - -public + + +member_access - - + + await - - + + identifier - - -= + + +additive_expression - - -( + + +public - - -; + + +Wait - - -( + + +statement - - -unary_expression + + +member_access - - -identifier + + +primary_expression - - -type + + +. - - -; - - - -method_declaration - - - -( - - - + + identifier - - -parameter_list + + +yield - - -post_increment_expression + + +public - - -literal + + +, - - -= + + +additive_expression - - -} + + +block - - -counter + + +System - - -0 + + +declaration_statement - - + + identifier - - -type + + +multiplicative_expression - - -identifier + + +type - - -anonymous_function_signature + + +{ - - + + identifier - - -] + + +identifier - - -unary_expression + + +identifier - - -argument + + +identifier - - -statement_list + + +} - - -identifier + + +integral_type - - -boolean_expression + + +++ - - -primary_expression + + +statement_expression primary_expression - - -Flags - - - -, - - - -= + + +type - - -= + + +A - - -assignment + + +fixed_parameter - - -( + + +expression - - -member_access + + +explicitly_typed_local_variable_declarator - - -IEnumerable + + +int - - -result + + +++ - - -return + + +invocation_expression - - -ref_method_modifier + + +delegate_modifier - - -Main + + +statement_expression - - + + identifier - - -public - - - -assignment_operator + + +{ - - -statement + + +statement_list - - -Список + + +void - - -new + + +additive_expression - - -) + + +} - - -block + + +method_body - - + + using - - + + identifier - - -using_directive + + ++ - - -statement + + +Task - - -statement_list + + +await_expression - - -implicitly_typed_local_variable_declaration + + +explicitly_typed_local_variable_declarators - - -var + + +identifier - - -{ + + +identifier - - -await + + +identifier - - -method_modifiers + + +foreach_statement - - -"{0}·" + + +( - - -{ + + +primary_expression - - -method_body + + +Collections - - -8 + + +while - - -identifier + + +using_namespace_directive - - -primary_expression + + +( - - -method_modifiers + + +explicit_anonymous_function_signature - - -public + + +expression_statement - - -; + + +enum_member_declaration - - -identifier + + +method_header - - -Factory + + +( - - -. + + +identifier - - -explicitly_typed_local_variable_declarator + + +identifier - - -multiplicative_expression + + +block - - -statement_expression + + +enum_modifier - - -class_declaration + + +integral_type - - -expression_statement + + +argument - - -} + + +My - - + + identifier - - -qualified_identifier - - - -namespace_member_declaration + + +אתר - - -pre_decrement_expression + + +parameter_list - - --- + + += - - -) + + +Tasks - - -await_expression + + +; - - -identifier + + +0 - - -member_access + + +method_body - - -=> + + +( - - -statement_list + + +identifier - - -anonymous_function_body + + +void - - + + primary_expression - - -statement - - - -class_member_declaration - - - -delegate + + +explicitly_typed_local_variable_declaration - - -+ + + +method_modifiers - - -; + + +( - - -compilation_unit + + +ref_method_modifier - - -, + + +explicitly_typed_local_variable_declarator - - -unary_expression + + += - - -using_namespace_directive + + +statement_expression - - + + primary_expression - - -attribute_target_specifier - - - -) - - - -number - - - -namespace_member_declaration - - - -using - - - + + } - - -member_access - - - + + primary_expression - - -class_type + + +qualified_identifier - - -. + + +in - - -explicitly_typed_local_variable_declarator + + +enum_member_declaration - - -integral_type + + +( - - -method_modifiers + + +class_declaration - - -Write + + +new - - -attribute_list + + +return_type - - -Список + + +delegate - - + + identifier - - -: + + +unary_expression - - -) + + ++ - - -additive_expression + + +delegate_header - - -2 + + +explicitly_typed_local_variable_declarator - - -using_directive + + +expression_statement - - -fixed_parameter + + +namespace - - -literal + + +class_member_declaration - - -async + + +argument - - -statement + + +identifier - - -Main + + +class - - -= + + +0 - - -} + + +statement_expression - - -identifier + + +System - - -explicit_anonymous_function_signature + + +using_namespace_directive - - -result + + +additive_expression - - -return_type + + +block - - -literal + + +namespace_member_declaration - - -foreach_statement + + +parameter_list - - -member_access + + +namespace_name - - + + ) - - -return_statement - - - -Список - - - -integral_type - - - -* + + +"http://example.com" - - -Test + + +method_body - - -implicitly_typed_local_variable_declarator + + +i - - -int + + +async - - -using_namespace_directive + + +embedded_statement - - -literal + + +++ - - -namespace_name + + +result - - -type + + +method_modifier - - -++ + + +namespace_or_type_name - - -; + + +Power - - -explicitly_typed_local_variable_declaration + + +statement - - -+ + + +int - - + + identifier - - -enum_member_declaration + + +( - - -identifier + + +prog D - - -class_body - - - -return_type - - - -primary_expression - - - -. - - - -Delay - - - -invocation_expression + + +argument_list - - -type + + +task - - + + ( - - -literal - - - -statement_list + + +argument - - -declaration_statement + + +, - - + + identifier - - -Tasks - - - -statement - - - -} - - - -attribute_target - - - -Wait + + ++ - - -Power + + +post_decrement_expression - - -method_header + + +additive_expression - - -parenthesized_expression + + +identifier - - -( + + +) - - -++ + + +invocation_expression - - + + explicitly_typed_local_variable_declarators - - -int - - - -} - - - -public - - - -await_expression + + +identifier - - -+ + + +( - - -enum_body + + +primary_expression - - -class + + +multiplicative_expression - - -) + + +enum_member_declaration - - -method_modifier + + +primary_expression - - -identifier + + +relational_expression - - -block + + +object ; - - -ref_method_modifier + + +{ - - -block + + +AsyncAnonymous - - -primary_expression + + +; - - -++ + + +B - - -namespace_declaration + + +attribute_target - - -expression_statement + + +identifier - - -. + + +void - - -enum_declaration + + +invocation_expression - - -constant_expression + + +; - - -} + + +primary_expression + + + +class_type + + + +return identifier - - -( + + +class_member_declaration - - -block + + +literal - - -primary_expression + + +delegate_declaration - - -static + + +-- - - -( + + +{ - - -i + + +method_modifiers - - -multiplicative_expression + + +identifier - - -class_member_declaration + + +attribute_target_specifier - - -namespace_body + + +identifier - - -member_access + + +object_creation_expression - - -) + + +expression - - -identifier + + +"{0}·" - - -primary_expression + + +statement_list - - -while + + +, - - -identifier + + +0 - - -, + + +member_access - - -multiplicative_expression + + +} - - -embedded_statement + + +primary_expression - - + + method_declaration - - + + unary_expression - - -My + + +class_member_declaration - - -0 + + +result + + + +namespace_member_declaration + + + +; - - + + ) - - -object_creation_expression + + +) - - -yield + + +A - - -. + + +Main + + + +fixed_parameter + + + +local_variable_initializer + + + +number local_variable_initializer - - -object + + +StartNew - - -expression + + +identifier - - -explicitly_typed_local_variable_declaration + + +member_access - - -identifier + + +) - - -invocation_expression + + +8 - - -unary_expression + + +primary_expression - - + + argument_list - - -local_variable_declaration + + +primary_expression - - -member_name + + +identifier - - -additive_expression + + +namespace_declaration - - -number + + +; - - -block + + +return_statement - - -type + + +return_type - - -argument + + +. - - -local_variable_declaration + + +, - - -class_modifier + + +literal - - + + +parenthesized_expression + + + +member_access + + + += + + + +explicitly_typed_local_variable_declaration + + + type - - -identifier + + +( + + + +E + + + +} - - + + multiplicative_expression - - -method_body + + +literal + + + +integral_type + + + +primary_expression + + + +{ + + + +constant_expression + + + +) - - -member_access + + +primary_expression - - -{ + + +post_increment_expression - - -expression + + +await - - -argument_list + + +2 - - -. + + +result - - -number + + +literal - - -E + + +} - - -explicitly_typed_local_variable_declarators + + +identifier - - -static + + +++ - - -primary_expression + + +; - - -"http://example.com" + + +( - - -member_name + + +public - - -invocation_expression + + +explicitly_typed_local_variable_declaration - - -Список + + +{ - - + + identifier - - -embedded_statement - - - + + identifier - - --- + + +namespace - - -, + + +( - - -Delegate + + +statement - - -namespace + + +) - - -, + + +enum_member_declarations - - -identifier + + +method_declaration - - -+ + + +while_statement - - + + +) + + + identifier - - -prog + + +argument_list - - -, + + +) - - -additive_expression + + +await_expression - - -method_declaration + + +identifier - - -member_access + + +method_header - - -method_body + + +primary_expression - - -[ + + +; - - -identifier + + +. - - -fixed_parameters + + +relational_expression - - -argument_list + + +literal - - -enum + + +identifier - - -constant_expression + + +invocation_expression - - -identifier + + +type - - -post_decrement_expression + + +) - - -invocation_expression + + +block - - -System + + +primary_expression - - -Threading + + +void - - -{ + + +method_header - - -{ + + +number - - -multiplicative_expression + + +member_access return_type - - -Список + + +lambda_expression - - -argument_list + + +identifier - - -declaration_statement + + +{ - - -; + + +Task - - -B + + +[ - - -identifier + + +primary_expression - - -post_increment_expression + + +type - - -member_name + + +* - - -statement_expression + + +primary_expression - - -. + + +block - - -delegate_header + + +public - - -declaration_statement + + +identifier - - -relational_expression + + +identifier - - -primary_expression + + +new + + + +static + + + +statement_list + + + +identifier - - + + +System + + + +Список + + + ( - - + + +} + + + ) - - -identifier + + +exponent - - + + integral_type - - -primary_expression + + +member_name - - -primary_expression + + +statement_list - - -} + + +additive_expression + + + +P - - + + unary_expression - - -void + + +namespace_body - - -explicitly_typed_local_variable_declarators + + +method_modifier - - -local_variable_initializer + + +multiplicative_expression - - -Power + + +identifier - - -local_variable_declaration + + +Test - - -local_variable_initializer + + +expression - - -object_creation_expression + + +identifier - - -invocation_expression + + +compilation_unit - - -literal + + +local_variable_declaration - - -namespace + + +anonymous_function_body - - -enum_member_declaration + + +switch_expression - - -fixed_parameter + + +type - - -expression + + +block - - -delegate_modifier + + +using_directive - - -; + + +expression - - -identifier + + +; - - -method_header + + +2 - - -attribute_section + + +statement_list - - -Console + + +Write - - -method_modifier + + +statement_list - - -A + + +method_declaration - - -additive_expression + + +Console - - -return_type + + +argument_list - - -type + + +C - - -namespace_or_type_name + + +. - - + + identifier - - -Task - - - -identifier + + +namespace_member_declaration - - -expression + + +number - - -local_variable_declaration + + +Threading - - -literal + + +unary_expression - - -++ + + +method_body - - -post_increment_expression + + +identifier - - + + identifier - - -argument + + +return_type - - -System + + +qualified_identifier - - -class_member_declaration + + +enum_member_declaration - - -method_modifiers + + +statement - - -enum_member_declarations + + +foreach - - -, + + +exponent - - -Task + + +async - - + + ) - - -while_statement - - - -pre_increment_expression - - - -class_member_declaration - - - -invocation_expression + + +return_type - - -Collections + + +additive_expression - - + + identifier - - -. + + +type - - -DownloadStringTaskAsync + + +implicitly_typed_local_variable_declaration - - -member_access + + +attributes - - -member_access + + +attribute_list - - -method_body + + +: - - -primary_expression + + +namespace_member_declaration - - -identifier + + +DownloadStringTaskAsync - - -A + + +declaration_statement - - -( + + +declaration_statement + + + +0 { - - -identifier - - - -enum_modifier - - - -; + + +local_variable_declaration - - -( + + +unary_expression - - -explicitly_typed_local_variable_declarator + + +literal - - + + ; - - + + int - - -additive_expression - - - -identifier - - - -method_header + + +unary_expression - - -exponent + + +embedded_statement - - -int + + +static - - -local_variable_type + + +invocation_expression - - -) + + +. - - -expression_statement + + +identifier - - -} + + +argument - - + + block - - -identifier + + +Список - - -statement_expression + + +statement - - + + +var + + + += + + + +; + + + identifier - - -( + + +) - - -task + + +< - - -number + + +expression_statement - - -enum_member_declaration + + +literal - - -( + + +member_name - - -type + + +, - - -AsyncAnonymous + + +identifier - - -0 + + +enum_declaration - - -{ + + +member_name - - -literal + + +pre_increment_expression - - -namespace_name + + +post_increment_expression - - -method_header + + +Main - - -argument + + +local_variable_declaration - - -shift_expression + + +statement_list - - -; + + +Factory - - -async + + +expression - - -+ + + += - - -integral_type + + +counter - - -block + + +{ - - -void + + +IEnumerable - - -expression + + +A - - -statement + + +Delay - - -System + + ++ - - -return_type + + +explicitly_typed_local_variable_declarators - - -identifier + + +Список - - -statement + + +. - - -parameter_list + + +] - - -( + + +namespace_body - - -additive_expression + + +int - - -; + + +Список - - -primary_expression + + +literal - - -P + + +( - - -enum_member_declaration + + +unary_expression - - -multiplicative_expression + + +} - - -) + + +invocation_expression - - -integral_type + + +statement - - -StartNew + + +. - - -) + + +anonymous_function_signature - - + + { - - + + +argument_list + + + { - - -identifier + + +namespace_name - - -primary_expression + + +) - - -lambda_expression + + +ref_method_modifier - - + + literal - - -< + + +expression_statement - - + + +local_variable_initializer + + + identifier - - -additive_expression + + +. - - -{ + + +member_name - - -primary_expression + + +member_access - - + + ) - - -argument_list + + +Power - - -primary_expression + + +. - - + + +method_declaration + + + identifier - - -expression + + +-- - - -( + + +integral_type - - -A + + += - - -result + + +enum_body - - -return + + +type - - -member_name + + +identifier - - -fixed_parameter + + +enum - - -i + + +) \ No newline at end of file diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-L/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-L/Reference/sample.gruntree.red.txt index 250cab3bc..41a4864a2 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-L/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-L/Reference/sample.gruntree.red.txt @@ -98,7 +98,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -106,10 +106,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ foo ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -129,7 +126,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -148,10 +145,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -807,7 +801,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -815,10 +809,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ f2 ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -923,7 +914,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -931,10 +922,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ f2 ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -970,7 +958,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -978,10 +966,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ f2 ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-L/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-L/Reference/sample.tree.red.txt index 74e352431..cd5b22b6f 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-L/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-L/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier ConsoleApplication1)) (namespace_body { (namespace_member_declaration (class_declaration class (identifier Test) (class_body { (class_member_declaration (field_declaration (field_modifier public) (type (integral_type int)) (variable_declarators (variable_declarator (identifier foo) = (variable_initializer (literal 5)))) ;)) (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier Bar2)) ( )) (method_body (block { (statement_list (statement (expression_statement (statement_expression (assignment (unary_expression (identifier foo)) (assignment_operator =) (expression (literal 6)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (member_access (primary_expression (this_access this)) . (identifier Foo))) (assignment_operator =) (expression (invocation_expression (primary_expression (member_access (primary_expression (literal 5)) . (identifier GetType))) ( ))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (identifier Test)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier t) = (local_variable_initializer (literal "sss")))))) ;))) })))) (class_member_declaration (event_declaration (event_modifier public) event (type (identifier EventHandler)) (variable_declarators (variable_declarator (identifier MyEvent) = (variable_initializer (anonymous_method_expression delegate (block { }))))) ;)) (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier Blah)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier i) = (local_variable_initializer (literal 5)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (nullable_value_type (non_nullable_value_type (integral_type int)) (nullable_type_annotation ?))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier j) = (local_variable_initializer (literal 6)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Expression) (type_argument_list < (type_argument (namespace_or_type_name (identifier Func) (type_argument_list < (type_argument (integral_type int)) >))) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier e) = (local_variable_initializer (lambda_expression (anonymous_function_signature (explicit_anonymous_function_signature ( ))) => (anonymous_function_body (identifier i)))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Expression) (type_argument_list < (type_argument (namespace_or_type_name (identifier Func) (type_argument_list < (type_argument (simple_type bool)) , (type_argument (identifier Action)) >))) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier e2) = (local_variable_initializer (lambda_expression (anonymous_function_signature (identifier b)) => (anonymous_function_body (lambda_expression (anonymous_function_signature (explicit_anonymous_function_signature ( ))) => (anonymous_function_body (block { (statement_list (return_statement return ;)) })))))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Func) (type_argument_list < (type_argument (simple_type bool)) , (type_argument (simple_type bool)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier f) = (local_variable_initializer (anonymous_method_expression async delegate (explicit_anonymous_function_signature ( (explicit_anonymous_function_parameter_list (explicit_anonymous_function_parameter (type (simple_type bool)) (identifier a))) )) (block { (statement_list (return_statement return (expression (await_expression await (unary_expression (logical_negation_operator !) (unary_expression (identifier a))))) ;)) }))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Func) (type_argument_list < (type_argument (integral_type int)) , (type_argument (integral_type int)) , (type_argument (integral_type int)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier f2) = (local_variable_initializer (lambda_expression (anonymous_function_signature (implicit_anonymous_function_signature ( (implicit_anonymous_function_parameter_list (implicit_anonymous_function_parameter (identifier a)) , (implicit_anonymous_function_parameter (identifier b))) ))) => (anonymous_function_body (literal 0)))))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier f2)) (assignment_operator =) (expression (lambda_expression (anonymous_function_signature (explicit_anonymous_function_signature ( (explicit_anonymous_function_parameter_list (explicit_anonymous_function_parameter (type (integral_type int)) (identifier a)) , (explicit_anonymous_function_parameter (type (integral_type int)) (identifier b))) ))) => (anonymous_function_body (literal 1)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (identifier Action)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (identifier Blah)))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier f2)) (assignment_operator =) (expression (lambda_expression (anonymous_function_signature (explicit_anonymous_function_signature ( ))) => (anonymous_function_body (block { })))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier f2)) (assignment_operator =) (expression (lambda_expression (anonymous_function_signature (explicit_anonymous_function_signature ( ))) => (anonymous_function_body (block { (statement_list (empty_statement ;)) })))))) ;))) })))) (class_member_declaration (delegate_declaration delegate (return_type (identifier Recursive)) (delegate_header (identifier Recursive) ( (parameter_list (fixed_parameter (type (identifier Recursive)) (identifier r))) ) ;))) (class_member_declaration (delegate_declaration delegate (return_type (identifier Recursive)) (delegate_header (identifier Recursive) (variant_type_parameter_list < (variant_type_parameter (identifier A)) , (variant_type_parameter (identifier R)) >) ( (parameter_list (fixed_parameter (type (namespace_or_type_name (identifier Recursive) (type_argument_list < (type_argument (identifier A)) , (type_argument (identifier R)) >))) (identifier r))) ) ;))) }))) })))) +(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier ConsoleApplication1)) (namespace_body { (namespace_member_declaration (class_declaration class (identifier Test) (class_body { (class_member_declaration (field_declaration (field_modifier public) (type (integral_type int)) (variable_declarators (variable_declarator (identifier foo) = (variable_initializer (literal 5)))) ;)) (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier Bar2)) ( )) (method_body (block { (statement_list (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier foo)) = (expression (literal 6)))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (member_access (primary_expression (this_access this)) . (identifier Foo))) = (expression (invocation_expression (primary_expression (member_access (primary_expression (literal 5)) . (identifier GetType))) ( ))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (identifier Test)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier t) = (local_variable_initializer (literal "sss")))))) ;))) })))) (class_member_declaration (event_declaration (event_modifier public) event (type (identifier EventHandler)) (variable_declarators (variable_declarator (identifier MyEvent) = (variable_initializer (anonymous_method_expression delegate (block { }))))) ;)) (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier Blah)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier i) = (local_variable_initializer (literal 5)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (nullable_value_type (non_nullable_value_type (integral_type int)) (nullable_type_annotation ?))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier j) = (local_variable_initializer (literal 6)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Expression) (type_argument_list < (type_argument (namespace_or_type_name (identifier Func) (type_argument_list < (type_argument (integral_type int)) >))) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier e) = (local_variable_initializer (lambda_expression (anonymous_function_signature (explicit_anonymous_function_signature ( ))) => (anonymous_function_body (identifier i)))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Expression) (type_argument_list < (type_argument (namespace_or_type_name (identifier Func) (type_argument_list < (type_argument (simple_type bool)) , (type_argument (identifier Action)) >))) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier e2) = (local_variable_initializer (lambda_expression (anonymous_function_signature (identifier b)) => (anonymous_function_body (lambda_expression (anonymous_function_signature (explicit_anonymous_function_signature ( ))) => (anonymous_function_body (block { (statement_list (return_statement return ;)) })))))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Func) (type_argument_list < (type_argument (simple_type bool)) , (type_argument (simple_type bool)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier f) = (local_variable_initializer (anonymous_method_expression async delegate (explicit_anonymous_function_signature ( (explicit_anonymous_function_parameter_list (explicit_anonymous_function_parameter (type (simple_type bool)) (identifier a))) )) (block { (statement_list (return_statement return (expression (await_expression await (unary_expression (logical_negation_operator !) (unary_expression (identifier a))))) ;)) }))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Func) (type_argument_list < (type_argument (integral_type int)) , (type_argument (integral_type int)) , (type_argument (integral_type int)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier f2) = (local_variable_initializer (lambda_expression (anonymous_function_signature (implicit_anonymous_function_signature ( (implicit_anonymous_function_parameter_list (implicit_anonymous_function_parameter (identifier a)) , (implicit_anonymous_function_parameter (identifier b))) ))) => (anonymous_function_body (literal 0)))))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier f2)) = (expression (lambda_expression (anonymous_function_signature (explicit_anonymous_function_signature ( (explicit_anonymous_function_parameter_list (explicit_anonymous_function_parameter (type (integral_type int)) (identifier a)) , (explicit_anonymous_function_parameter (type (integral_type int)) (identifier b))) ))) => (anonymous_function_body (literal 1)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (identifier Action)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (identifier Blah)))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier f2)) = (expression (lambda_expression (anonymous_function_signature (explicit_anonymous_function_signature ( ))) => (anonymous_function_body (block { })))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier f2)) = (expression (lambda_expression (anonymous_function_signature (explicit_anonymous_function_signature ( ))) => (anonymous_function_body (block { (statement_list (empty_statement ;)) })))))) ;))) })))) (class_member_declaration (delegate_declaration delegate (return_type (identifier Recursive)) (delegate_header (identifier Recursive) ( (parameter_list (fixed_parameter (type (identifier Recursive)) (identifier r))) ) ;))) (class_member_declaration (delegate_declaration delegate (return_type (identifier Recursive)) (delegate_header (identifier Recursive) (variant_type_parameter_list < (variant_type_parameter (identifier A)) , (variant_type_parameter (identifier R)) >) ( (parameter_list (fixed_parameter (type (namespace_or_type_name (identifier Recursive) (type_argument_list < (type_argument (identifier A)) , (type_argument (identifier R)) >))) (identifier r))) ) ;))) }))) })))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-L/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-L/Reference/sample.tree.svg index 0a9b0a3a5..7123dad3c 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-L/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-L/Reference/sample.tree.svg @@ -1,19 +1,19 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - - + + + @@ -29,2577 +29,2552 @@ - - - - + + + + - + - - - - - + + + + + - - - + + + - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +=> - - -> + + +type_argument_list - - -int + + +explicitly_typed_local_variable_declaration - - -expression + + +literal - - -Func + + +) - - -( + + +class_body - - -local_variable_initializer + + +type - - -literal + + +< - - -statement + + +block - - -} + + +identifier - - -. + + +Action - - -; + + += - - -( + + +expression_statement - - -explicitly_typed_local_variable_declarator + + +anonymous_function_body - - -this + + +delegate - - -anonymous_function_body + + +Recursive - - -local_variable_declaration + + +) - - -; + + +anonymous_function_body - - -b + + +< - - -lambda_expression + + +anonymous_function_body - - -integral_type + + +this_access - - -local_variable_declaration + + +identifier - - -literal + + +field_declaration - - -= + + +} - - -expression + + +j - - -class_member_declaration + + +EventHandler - - -identifier + + +return - - -, + + +int - - -bool + + +anonymous_function_body - - -type + + +statement - - -qualified_identifier + + +} - - -member_name + + +5 - - -type + + +declaration_statement - - -statement_expression + + +, - - -fixed_parameter + + +bool - - -return_statement + + +type_argument_list - - -> + + +member_name - - -( + + +{ - - -identifier + + +=> - - -anonymous_function_body + + +Action - - -) + + +explicit_anonymous_function_parameter - - -variant_type_parameter_list + + +, - - + + anonymous_function_signature - - -type_argument - - - -local_variable_initializer + + +statement_list - - -identifier + + +MyEvent - - -implicit_anonymous_function_signature + + +local_variable_initializer - - -class + + +Test - - -identifier + + +statement_list - - -lambda_expression + + +namespace_declaration - - -explicitly_typed_local_variable_declarators + + += - - -identifier + + +expression - - -identifier + + +declaration_statement - - -int + + +variant_type_parameter - - + + . - - + + +a + + + statement - - -Action + + +return_statement - - -expression_statement + + +anonymous_function_signature - - -block + + +local_variable_initializer - - -identifier + + +delegate_declaration - - -return + + +type - - -variable_declarators + + +delegate + + + +; - - + + identifier - - -> + + +explicitly_typed_local_variable_declaration - - -return_statement + + +statement - - -explicit_anonymous_function_signature + + +type_argument - - -implicit_anonymous_function_parameter + + +) - - -identifier + + +bool - - -block + + +parameter_list - - -int + + +local_variable_declaration - - -{ + + +implicit_anonymous_function_parameter - - -declaration_statement + + +) - - -local_variable_declaration + + +lambda_expression - - -type + + +) - - -variable_declarator + + +explicit_anonymous_function_signature - - -> + + +empty_statement - - -( + + +unary_expression - - -compilation_unit + + +; - - -explicitly_typed_local_variable_declarator + + +Recursive - - -= + + +return_type - - -bool + + +{ + + + +identifier + + + +event_declaration - - + + explicitly_typed_local_variable_declarator - - -e2 + + +return_statement - - -statement_list + + +type_argument - - -explicit_anonymous_function_parameter + + +delegate_header - - -field_modifier + + +explicitly_typed_local_variable_declarators - - -= + + +Func - - -anonymous_function_body + + +identifier - - -statement_expression + + +b - - -member_access + + +expression_statement - - -statement + + +literal - - -{ + + +Func - - -void + + +local_variable_initializer - - -variable_declarator + + +; - - -assignment + + +identifier - - -} + + +namespace_or_type_name - - -explicitly_typed_local_variable_declaration + + +type - - -lambda_expression + + +( - - -} + + +identifier - - + + +r + + + identifier - - -=> + + += - - -anonymous_function_signature + + +explicitly_typed_local_variable_declaration - - -0 + + +f2 + + + +} - - + + block - - -simple_type + + +simple_assignment - - -f2 + + +Recursive - - -bool + + +namespace_or_type_name - - + + identifier - - -; + + +method_declaration - - -field_declaration + + +GetType - - -) + + +< - - -identifier + + +local_variable_declaration - - -identifier + + +type - - -Test + + +< - - -1 + + += - - -} + + +Foo - - -r + + +; - - + + a - - -int + + +; - - -primary_expression + + +explicitly_typed_local_variable_declarator - - -namespace_or_type_name - - - -type_argument_list - - - -! - - - -statement - - - -namespace_or_type_name - - - -type_argument - - - -) + + +Expression - - -statement_list + + += - - -Blah + + +type_argument_list - - -; + + +local_variable_initializer - - -expression_statement + + += - - + + declaration_statement - - -type + + +explicitly_typed_local_variable_declarators - - + + = - - -; + + +> - - -5 + + +identifier - - -} + + +local_variable_initializer - - -explicitly_typed_local_variable_declaration + + +anonymous_method_expression - - -t + + +explicit_anonymous_function_parameter_list - - -type_argument_list + + +literal - - + + lambda_expression - - -declaration_statement + + +identifier - - -type + + +) - - -type + + +f2 - - -"sss" + + +lambda_expression - - -explicit_anonymous_function_parameter_list + + +} - - -r + + +identifier - - -= + + +unary_expression - - -, + + +( - - -await_expression + + +{ - - + + identifier - - -identifier + + +member_access - - -( + + +class - - -identifier + + +local_variable_initializer - - -{ + + +Blah - - -EventHandler + + +ConsoleApplication1 - - -Bar2 + + +expression_statement - - -type + + +void - - -explicit_anonymous_function_parameter + + +literal - - -non_nullable_value_type + + +simple_type - - -statement_expression + + +; - - -explicitly_typed_local_variable_declarators + + +class_declaration - - -assignment_operator + + +6 - - + + type_argument - - -statement_list + + +; - - -type_argument_list + + +integral_type - - + + identifier - - -, - - - + + identifier - - -, + + +e2 - - -local_variable_initializer + + +delegate - - + + identifier - - -integral_type + + +> - - -variable_declarators + + +type_argument_list - - -) + + +identifier - - -= + + +declaration_statement - - -< + + +unary_expression - - -public + + +{ - - -type_argument_list + + +identifier - - -Recursive + + +identifier - - -type_argument + + +e - - -expression + + +identifier - - -type_argument + + +f2 - - -statement + + +integral_type - - -( + + +type - - -} + + +fixed_parameter - - -declaration_statement + + +type_argument - - -anonymous_function_body + + +simple_type - - + + explicitly_typed_local_variable_declaration - - -fixed_parameter - - - -class_body + + +( - - -local_variable_declaration + + +return_type - - -A + + +identifier - - -5 + + +expression - - -= + + +type - - -< + + +await - - + + int - - -? - - - -> - - - -( + + += - - -< + + +int - - -class_member_declaration + + +local_variable_declaration - - -explicitly_typed_local_variable_declarators + + +namespace - - -Func + + += - - -statement_list + + +explicit_anonymous_function_signature - - -) + + +explicitly_typed_local_variable_declaration - - -integral_type + + +variable_declarator - - -declaration_statement + + +( - - -delegate_declaration + + +type_argument_list - - -Test + + +type_argument - - -foo + + +A - - -type_argument_list + + +explicit_anonymous_function_signature - - -explicitly_typed_local_variable_declaration + + +type_argument - - -lambda_expression + + +statement - - -explicitly_typed_local_variable_declaration + + +identifier - - -primary_expression + + +< - - -namespace_or_type_name + + +nullable_type_annotation - - + + explicitly_typed_local_variable_declarators - - -integral_type + + +bool - - -namespace_or_type_name + + +expression - - -identifier + + +explicitly_typed_local_variable_declarator - - -integral_type + + +> - - -public + + +type - - -Blah + + +identifier + + + +} - - + + Recursive - - -literal + + +implicit_anonymous_function_parameter_list - - -b + + +R - - -assignment_operator + + +unary_expression - - + + identifier - - -statement + + +( - - -block + + +R - - -assignment_operator + + +fixed_parameter - - -a + + +=> - - -statement + + +} - - -> + + +identifier - - -e + + +type_argument - - -; + + +Recursive - - -type_argument_list + + +A - - -< + + +class_member_declaration - - -identifier + + +i - - -identifier + + +, - - -unary_expression + + +field_modifier - - -type_argument + + +Recursive - - -identifier + + +anonymous_function_signature - - -f2 + + +; - - -explicitly_typed_local_variable_declarator + + +class_member_declaration - - -f2 - - - -) + + +. - - -type + + += - - + + ( - - + + +statement + + + identifier - - -Recursive + + +integral_type - - -explicit_anonymous_function_parameter + + +statement - - -{ + + +type_argument - - -namespace_or_type_name + + +, - - -namespace_or_type_name + + +qualified_identifier - - -assignment + + +lambda_expression - - -} + + +primary_expression - - -class_member_declaration + + +prog - - -declaration_statement + + +a - - -unary_expression + + +namespace_member_declaration - - -= + + +statement_expression - - -{ + + +namespace_or_type_name - - -Foo + + +{ - - -method_modifiers + + +variant_type_parameter_list - - -lambda_expression + + +explicitly_typed_local_variable_declarator - - -anonymous_function_signature + + +; - - -R + + +statement_expression - - -explicitly_typed_local_variable_declaration + + +; - - + + statement - - -Recursive + + +local_variable_declaration - - -) + + +statement_expression + + + +statement - - + + literal - - + + identifier - - -statement + + +primary_expression - - -foo + + +Func - - -unary_expression + + +type_argument_list - - -identifier + + +< - - -) + + +a - - -type + + +identifier - - -declaration_statement + + +local_variable_declaration - - + + ; - - -local_variable_declaration + + +statement_list - - -a + + +! - - -identifier + + +literal - - + + delegate_header - - -local_variable_initializer + + +block - - -expression + + +public - - -assignment + + +explicitly_typed_local_variable_declarators - - -anonymous_method_expression + + +method_modifiers - - + + explicitly_typed_local_variable_declarators - - -=> - - - -return_type + + +implicit_anonymous_function_parameter - - -i + + +variant_type_parameter - - -j + + +identifier - - + + = - - -statement - - - -namespace + + +explicit_anonymous_function_parameter - - -return_type + + +( - - -explicit_anonymous_function_signature + + +return - - -method_declaration + + +method_header - - -member_access + + +namespace_or_type_name - - -delegate_header + + +simple_type - - -> + + +statement - - -explicitly_typed_local_variable_declaration + + +int - - -method_body + + +; - - -expression + + +anonymous_function_body - - -statement + + +statement_expression - - -variant_type_parameter + + +Bar2 - - + + ; - - -event_declaration + + +async - - -anonymous_function_body + + +compilation_unit - - -literal + + +; - - -parameter_list + + +explicitly_typed_local_variable_declaration - - -return_type + + +literal - - -identifier + + +statement_list - - -delegate + + +unary_expression - - -R + + +( - - -=> + + +; - - + + identifier - - -GetType + + +; - - -= + + +type - - -identifier + + +parameter_list - - -implicit_anonymous_function_parameter + + +explicitly_typed_local_variable_declarator - - -expression_statement + + +? - - -identifier + + +block - - -lambda_expression + + +type - - -nullable_type_annotation + + +type - - -namespace_declaration + + +> - - -identifier + + +type - - -namespace_member_declaration + + +) - - -= + + +anonymous_function_signature - - -identifier + + +> - - -Action + + +=> - - -namespace_or_type_name + + +variable_declarators - - -explicit_anonymous_function_signature + + +int - - -< + + +block - - -unary_expression + + +lambda_expression - - -type + + +variable_declarators + + + +method_header + + + +i + + + +class_member_declaration - - + + unary_expression - - -; + + +local_variable_declaration - - -; + + +( - - + + ( - - -f + + +) - - -; + + +method_body - - -identifier + + +type_argument - - -nullable_value_type + + +expression - - -implicit_anonymous_function_parameter_list + + +explicit_anonymous_function_signature - - -declaration_statement + + +) - - -member_name + + +simple_assignment - - -type + + +unary_expression - - -statement + + +public - - -simple_type + + +explicitly_typed_local_variable_declarator - - -anonymous_function_signature + + +explicitly_typed_local_variable_declarator - - + + local_variable_declaration - - -assignment_operator - - - + + integral_type - - -method_declaration + + +identifier - - -type + + +integral_type - - -explicitly_typed_local_variable_declarator + + +> - - -Expression + + +delegate - - -class_member_declaration + + +method_declaration - - -return_type + + +foo - - -await + + +identifier - - -method_header + + +explicit_anonymous_function_signature - - -i + + +statement_list - - -statement_expression + + +simple_assignment - - -, + + +namespace_body - - -< + + +declaration_statement - - -( + + +statement - - -, - - - -literal + + +identifier - - -MyEvent + + +Blah - - -{ + + +f - - -Recursive + + +statement_expression - - -{ + + +identifier - - -Func + + +statement - - -} + + +expression - - -int + + +local_variable_initializer - - -< + + +integral_type - - -assignment + + +) - - -; + + +lambda_expression - - -int + + +r - - -ConsoleApplication1 + + +simple_assignment - - -< + + +member_name - - -variable_initializer + + +logical_negation_operator - - -statement_expression + + +this - - -delegate + + +0 - - -integral_type + + +statement - - -int + + +block - - -anonymous_function_signature + + +explicitly_typed_local_variable_declaration - - -method_body + + +type_argument - - + + => - - -Recursive - - - -a + + +type_argument - - + + class_member_declaration - - + + +) + + + +{ + + + ; - - -identifier + + +method_body - - -delegate_declaration + + +return_type - - -Func + + +primary_expression - - -A + + +; - - + + identifier - - -identifier + + +foo - - -async + + +local_variable_declaration - - -local_variable_initializer + + +simple_assignment - - -parameter_list + + +> - - -local_variable_initializer + + +nullable_value_type - - -literal + + +type_argument - - -anonymous_function_signature + + +bool - - -block + + +f2 - - -unary_expression + + +identifier - - -anonymous_function_signature + + +1 - - -integral_type + + += - - -statement_list + + +block - - -) + + +identifier - - -class_declaration + + +5 - - -; + + +anonymous_method_expression - - -invocation_expression + + +explicit_anonymous_function_signature - - -explicit_anonymous_function_parameter_list + + +"sss" - - -type + + +identifier - - -type_argument + + +explicitly_typed_local_variable_declarators - - -anonymous_function_body + + +void - - -type_argument + + +explicitly_typed_local_variable_declarators - - -event_modifier + + +expression_statement - - -type_argument + + +5 - - -explicitly_typed_local_variable_declarator + + +local_variable_initializer - - -type + + +explicit_anonymous_function_parameter_list - - -identifier + + +explicitly_typed_local_variable_declarator - - -; + + +expression - - -explicitly_typed_local_variable_declarators + + +declaration_statement - - + + identifier - - -variant_type_parameter + + +event_modifier - - -identifier + + +int - - -statement + + +namespace_or_type_name - - -expression + + +simple_type - - -explicitly_typed_local_variable_declaration + + +return_type - - -block + + +method_modifiers - - -explicitly_typed_local_variable_declarators + + +integral_type - - -identifier + + +int - - -return + + +; - - -local_variable_declaration + + +class_member_declaration - - -this_access + + +identifier - - -> + + +type - - + + b - - -; + + +type - - -primary_expression + + +statement - - -type_argument_list + + +anonymous_function_signature - - -f2 + + +implicit_anonymous_function_signature - - + + identifier - - -Expression + + +, - - -=> + + +invocation_expression - - -a + + +anonymous_function_body - - -identifier + + +; - - + + identifier - - -void + + +int - - -explicitly_typed_local_variable_declarators + + +type_argument_list - - -( + + +expression_statement - - -unary_expression + + +} - - -local_variable_initializer + + +lambda_expression - - -event + + +> - - -; + + +non_nullable_value_type - - -identifier + + +, - - -local_variable_initializer + + +6 - - -type_argument + + +{ - - -= + + +} - - -=> + + +int - - -anonymous_function_body + + +identifier - - -simple_type + + +integral_type - - + + = - - -=> + + +declaration_statement - - -{ + + +Expression - - -; + + +, - - -empty_statement + + +class_member_declaration - - -explicitly_typed_local_variable_declarator + + +event - - -type_argument + + +anonymous_function_signature - - -int + + +delegate_declaration - - -assignment_operator + + +a - - -identifier + + +Test - - -method_modifiers + + +integral_type - - -delegate + + +< - - -variable_initializer + + +b - - -{ + + +type - - -) + + +( - - + + identifier - - -class_member_declaration - - - -literal + + +{ - - -, + + +identifier - - -5 + + +identifier - - -= + + +explicitly_typed_local_variable_declarators - - -anonymous_method_expression + + +member_access - - -} + + +=> - - -integral_type + + +identifier - - -expression_statement + + +literal - - -6 + + +declaration_statement - - -) + + +, - - -bool + + +=> - - -explicitly_typed_local_variable_declarator + + +explicitly_typed_local_variable_declaration - - -method_header + + +) - - -local_variable_declaration + + +namespace_or_type_name - - -explicit_anonymous_function_signature + + +variable_initializer - - -expression_statement + + +} - - -prog + + +( - - -) + + +anonymous_function_signature - - -type_argument + + +variable_declarator - - -explicit_anonymous_function_signature + + +variable_initializer - - -; + + +explicit_anonymous_function_parameter - - -; + + +identifier - - -logical_negation_operator + + += - - -namespace_body + + +Func - - + + identifier - - -, + + += - - -block + + +await_expression - - -type + + +anonymous_function_body - - -simple_type + + +namespace_or_type_name - - -( + + +type - - -assignment + + +{ - - + + identifier - - -6 - - - -explicit_anonymous_function_signature + + +t - - -delegate + + +< - - + + identifier \ No newline at end of file diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-M/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-M/Reference/sample.gruntree.red.txt index 84bf70b71..25a7fe6bb 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-M/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-M/Reference/sample.gruntree.red.txt @@ -262,7 +262,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -270,10 +270,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ t ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -471,7 +468,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -479,10 +476,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ t ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-M/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-M/Reference/sample.tree.red.txt index 6d3a299e0..945fe4144 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-M/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-M/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier ConsoleApplication1)) (namespace_body { (namespace_member_declaration (class_declaration class (identifier Test) (class_body { (class_member_declaration (property_declaration (property_modifier public) (type (identifier Type)) (member_name (identifier Foo)) (property_body { (accessor_declarations (get_accessor_declaration (attributes (attribute_section [ (attribute_list (attribute (attribute_name (identifier Obsolete)) (attribute_arguments ( (positional_argument_list (literal "Name")) , (named_argument_list (named_argument (identifier error) = (attribute_argument_expression (boolean_literal false)))) )))) ])) get (accessor_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier result) = (expression (typeof_expression typeof ( (type (namespace_or_type_name (identifier IEnumerable) (type_argument_list < (type_argument (integral_type int)) >))) )))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier t) = (expression (equality_expression (equality_expression (typeof_expression typeof ( (type (nullable_value_type (non_nullable_value_type (integral_type int)) (nullable_type_annotation ?))) ))) == (relational_expression (typeof_expression typeof ( (type (namespace_or_type_name (identifier Nullable) (type_argument_list < (type_argument (integral_type int)) >))) )))))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier t)) (assignment_operator =) (expression (typeof_expression typeof ( (type (namespace_or_type_name (identifier IEnumerable) (type_argument_list < (type_argument (array_type (non_array_type (nullable_value_type (non_nullable_value_type (integral_type int)) (nullable_type_annotation ?))) (rank_specifier [ ]) (rank_specifier [ ]) (rank_specifier [ ]))) >))) ))))) ;)) (statement (return_statement return (expression (typeof_expression typeof ( (unbound_type_name (identifier IEnumerable) (generic_dimension_specifier < >)) ))) ;))) }))) (set_accessor_declaration set (accessor_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier t) = (expression (typeof_expression typeof ( (type (namespace_or_type_name (identifier System) . (identifier Int32))) )))))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier t)) . (identifier ToString))) ( ))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier t)) (assignment_operator =) (expression (contextual_keyword value)))) ;))) })))) }))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier Constants)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier i) = (local_variable_initializer (additive_expression (additive_expression (additive_expression (additive_expression (literal 1)) + (multiplicative_expression (literal 2))) + (multiplicative_expression (literal 3))) + (multiplicative_expression (literal 5)))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (qualified_alias_member (identifier (contextual_keyword global)) :: (identifier System)) . (identifier String))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier s) = (local_variable_initializer (additive_expression (additive_expression (additive_expression (additive_expression (additive_expression (additive_expression (literal "a")) + (multiplicative_expression (cast_expression ( (type (namespace_or_type_name (identifier System) . (identifier String))) ) (unary_expression (literal "a"))))) + (multiplicative_expression (literal "a"))) + (multiplicative_expression (literal "a"))) + (multiplicative_expression (literal "a"))) + (multiplicative_expression (literal "A")))))))) ;))) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier ConstructedType)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier List) (type_argument_list < (type_argument (integral_type int)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier i) = (local_variable_initializer (null_literal null)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier c) = (local_variable_initializer (member_access (primary_expression (identifier i)) . (identifier Count))))))) ;))) })))) }))) })))) +(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier ConsoleApplication1)) (namespace_body { (namespace_member_declaration (class_declaration class (identifier Test) (class_body { (class_member_declaration (property_declaration (property_modifier public) (type (identifier Type)) (member_name (identifier Foo)) (property_body { (accessor_declarations (get_accessor_declaration (attributes (attribute_section [ (attribute_list (attribute (attribute_name (identifier Obsolete)) (attribute_arguments ( (positional_argument_list (literal "Name")) , (named_argument_list (named_argument (identifier error) = (attribute_argument_expression (boolean_literal false)))) )))) ])) get (accessor_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier result) = (expression (typeof_expression typeof ( (type (namespace_or_type_name (identifier IEnumerable) (type_argument_list < (type_argument (integral_type int)) >))) )))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier t) = (expression (equality_expression (equality_expression (typeof_expression typeof ( (type (nullable_value_type (non_nullable_value_type (integral_type int)) (nullable_type_annotation ?))) ))) == (relational_expression (typeof_expression typeof ( (type (namespace_or_type_name (identifier Nullable) (type_argument_list < (type_argument (integral_type int)) >))) )))))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier t)) = (expression (typeof_expression typeof ( (type (namespace_or_type_name (identifier IEnumerable) (type_argument_list < (type_argument (array_type (non_array_type (nullable_value_type (non_nullable_value_type (integral_type int)) (nullable_type_annotation ?))) (rank_specifier [ ]) (rank_specifier [ ]) (rank_specifier [ ]))) >))) ))))) ;)) (statement (return_statement return (expression (typeof_expression typeof ( (unbound_type_name (identifier IEnumerable) (generic_dimension_specifier < >)) ))) ;))) }))) (set_accessor_declaration set (accessor_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier t) = (expression (typeof_expression typeof ( (type (namespace_or_type_name (identifier System) . (identifier Int32))) )))))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier t)) . (identifier ToString))) ( ))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier t)) = (expression (contextual_keyword value)))) ;))) })))) }))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier Constants)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier i) = (local_variable_initializer (additive_expression (additive_expression (additive_expression (additive_expression (literal 1)) + (multiplicative_expression (literal 2))) + (multiplicative_expression (literal 3))) + (multiplicative_expression (literal 5)))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (qualified_alias_member (identifier (contextual_keyword global)) :: (identifier System)) . (identifier String))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier s) = (local_variable_initializer (additive_expression (additive_expression (additive_expression (additive_expression (additive_expression (additive_expression (literal "a")) + (multiplicative_expression (cast_expression ( (type (namespace_or_type_name (identifier System) . (identifier String))) ) (unary_expression (literal "a"))))) + (multiplicative_expression (literal "a"))) + (multiplicative_expression (literal "a"))) + (multiplicative_expression (literal "a"))) + (multiplicative_expression (literal "A")))))))) ;))) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier ConstructedType)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier List) (type_argument_list < (type_argument (integral_type int)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier i) = (local_variable_initializer (null_literal null)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier c) = (local_variable_initializer (member_access (primary_expression (identifier i)) . (identifier Count))))))) ;))) })))) }))) })))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-M/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-M/Reference/sample.tree.svg index 3867d19d6..f202e6a53 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-M/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-M/Reference/sample.tree.svg @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - + - - - - + + + + @@ -121,16 +121,15 @@ - - - - - - - - - - + + + + + + + + + @@ -160,7 +159,7 @@ - + @@ -177,13 +176,13 @@ - - - - - - - + + + + + + + @@ -205,7 +204,7 @@ - + @@ -220,1851 +219,1842 @@ - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -attribute_list - - - -member_name - - - -nullable_value_type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +result - - + + identifier - - -"a" - - - -int - - - -< - - - -. - - - -explicitly_typed_local_variable_declarators - - - -implicitly_typed_local_variable_declaration - - - -declaration_statement - - - -block - - - -explicitly_typed_local_variable_declarator + + +implicitly_typed_local_variable_declarator - - -prog + + +named_argument - - -typeof + + +return_statement - - -( + + +) - - + + typeof_expression - - -, + + +< - - -namespace_or_type_name + + +identifier - - -ToString + + +local_variable_declaration - - -literal + + +attribute - - + + identifier - - -"A" + + +t - - -. + + +explicitly_typed_local_variable_declarator - - -expression + + +local_variable_declaration - - -integral_type + + +rank_specifier - - -accessor_body + + +} - - -identifier + + +type_argument_list > - - -5 - - - -] - - - -+ - - - -return_statement - - - -IEnumerable - - - -= - - - -( - - - -? - - - -Type + + +Obsolete - - -identifier + + +int - - -explicitly_typed_local_variable_declarator + + +ConstructedType - - + + identifier - - -class_body - - - + + identifier - - -var - - - + + multiplicative_expression - - -t - - - -} - - - -cast_expression - - - -local_variable_initializer - - - -local_variable_declaration - - - -statement - - - -typeof - - - -System - - - -additive_expression - - - -type_argument - - - -integral_type - - - -namespace_or_type_name - - - -property_body + + +literal - - -String + + += - - + + type - - -{ - - - -public - - - -c + + +"A" - - -identifier + + +typeof - - -declaration_statement + + +unary_expression - - + + = - - -identifier - - - -nullable_value_type - - - -multiplicative_expression - - - -method_body - - - -identifier - - - -qualified_identifier - - - -implicitly_typed_local_variable_declaration - - - -relational_expression + + +namespace_or_type_name - - -ConsoleApplication1 + + +int - - -"Name" + + +literal - - -type + + +IEnumerable - - -equality_expression + + +Foo - - -set + + +< - - -( + + +set_accessor_declaration - - -identifier + + +; - - -attribute_argument_expression + + +positional_argument_list - - -block + + +type_argument_list - - -additive_expression + + +local_variable_declaration - - -= + + +{ - - -} + + +expression - - -type + + +additive_expression - - -literal + + ++ - - -local_variable_initializer + + += - - -namespace_body + + +declaration_statement identifier - - -literal - - - -) + + +; - - -> + + +member_access - - -literal + + +local_variable_initializer - - -null_literal + + +explicitly_typed_local_variable_declaration - - -multiplicative_expression + + +{ - - -typeof + + +5 - - -Foo + + +class_body - - -typeof_expression + + +"a" - - -nullable_type_annotation + + += - - + + + - - -IEnumerable + + +type - - -property_modifier + + +explicitly_typed_local_variable_declarators - - -) + + +attribute_section - - -} + + +i - - -statement + + +nullable_value_type - - -explicitly_typed_local_variable_declaration + + +t - - -statement + + +type - - -class_member_declaration + + +namespace_declaration - - -declaration_statement + + +cast_expression - - + + +identifier + + + integral_type - - -) + + +type_argument - - -statement + + +IEnumerable - - + + "a" - - -) + + +c - - -literal + + +statement - - -implicitly_typed_local_variable_declaration + + +invocation_expression - - -statement + + +member_name - - -local_variable_initializer + + +explicitly_typed_local_variable_declaration - - -accessor_body + + +"a" - - -{ + + +, - - -( + + +statement - - -global + + +integral_type - - -Nullable + + +unary_expression - - -additive_expression + + +. - - -nullable_type_annotation + + +relational_expression - - -type + + +primary_expression - - -identifier + + +expression - - -statement_expression + + ++ - - -explicitly_typed_local_variable_declarators + + +integral_type ] - - -additive_expression - - - -identifier + + +typeof - - + + ref_method_modifier - - + + ; - - -block + + +identifier - - -i + + +identifier - - -expression + + +public - - -additive_expression + + +nullable_value_type - - -type_argument_list + + +int - - -identifier + + +local_variable_initializer - - -local_variable_declaration + + +explicitly_typed_local_variable_declarators - - + + +statement_expression + + + +namespace + + + +attribute_list + + + +t + + + +statement + + + +integral_type + + + identifier - - -declaration_statement + + +Nullable - - -attributes + + +void - - -unbound_type_name + + +( - - -invocation_expression + + +local_variable_declaration - - -t + + +( - - -statement_expression + + +( - - -expression_statement + + +method_modifiers + + + +additive_expression + + + +type + + + +} + + + +literal - - + + + - - -[ + + +rank_specifier + + + +literal - - -s + + +class_member_declaration - - -identifier + + +) - - + + ) - - -declaration_statement + + +explicitly_typed_local_variable_declarators + + + +generic_dimension_specifier - - + + identifier - - -return + + +"a" - - -class_declaration + + +( - - -expression_statement + + +literal - - -method_modifiers + + +type - - -{ + + +identifier - - -Obsolete + + +method_declaration - - -null + + +local_variable_initializer - - -[ + + +nullable_type_annotation - - -int + + +non_nullable_value_type - - -+ + + +local_variable_declaration - - -non_array_type + + +[ - - -non_nullable_value_type + + +additive_expression - - -< + + +namespace_or_type_name - - -; + + +return - - -attribute_section + + +int - - -i + + +method_declaration - - -named_argument_list + + +[ - - -positional_argument_list + + +List - - -error + + +local_variable_declaration - - -return_type + + +additive_expression - - -attribute + + +? - - -} + + +prog - - -+ + + +qualified_alias_member - - -} + + +property_modifier - - + + +value + + + block - - -var + + +Constants - - -statement + + +block - - + + identifier - - -typeof_expression - - - -literal + + += - - -{ + + +t - - -; + + +) - - -IEnumerable + + +explicitly_typed_local_variable_declarator - - -non_nullable_value_type + + +additive_expression - - -method_body + + +type - - -Test + + +statement - - -result + + +nullable_type_annotation - - -( + + +multiplicative_expression - - -int + + +i - - -type + + +? - - -< + + +method_header - - -equality_expression + + +return_type - - -+ + + +block - - -"a" + + +} - - -additive_expression + + +int - - -assignment + + +identifier - - -type + + +IEnumerable - - -) + + +< - - -declaration_statement + + +explicitly_typed_local_variable_declarator - - -statement + + +type_argument - - -{ + + +System - - -explicitly_typed_local_variable_declaration + + +statement - - + + rank_specifier - - -additive_expression - - - -; + + +< - - -namespace_or_type_name + + +unbound_type_name - - -; + + +global - - -type_argument_list + + +[ - - -named_argument + + +expression - - -( + + +s - - + + > - - -unary_expression - - - -literal - - - -boolean_literal + + +String - - -attribute_name + + +null_literal - - -public + + +implicitly_typed_local_variable_declaration - - -accessor_declarations + + +identifier - - -; + + +. - - -( + + += - - + + + - - -type_argument + + +local_variable_declaration - - + + +namespace_or_type_name + + + ( - - + + statement - - -multiplicative_expression + + +expression_statement - - -:: + + +property_body - - -local_variable_initializer + + +typeof - - -) + + +identifier - - + + ) - - -additive_expression - - - -void + + +} - - -implicitly_typed_local_variable_declarator + + +identifier - - -declaration_statement + + +var - - -namespace + + +literal - - -implicitly_typed_local_variable_declarator + + +identifier - - -assignment_operator + + +{ - - -member_access + + +; - - -integral_type + + +int - - -method_declaration + + +( - - -== + + +identifier - - -additive_expression + + +declaration_statement - - -integral_type + + +identifier - - -member_access + + +declaration_statement - - + + identifier - - -"a" + + +typeof - - -= + + +identifier - - -statement + + +( - - -namespace_or_type_name + + +namespace_body - - -generic_dimension_specifier + + +get - - -statement + + +statement_list - - -. + + +local_variable_initializer - - -literal + + +statement_list - - -return_type + + +statement - - -) + + +multiplicative_expression - - -; + + +i - - -) + + +identifier - - + + +unary_expression + + + } - - -List + + +type_argument_list - - + + type - - -t + + +multiplicative_expression - - -statement_expression + + +false - - -"a" + + +== - - -assignment_operator + + +null - - -typeof_expression + + +3 - - -< + + +identifier - - -statement_list + + +property_declaration + + + += - - + + multiplicative_expression - - -2 + + +) - - -class_member_declaration + + +integral_type - - -= + + +var - - -attribute_arguments + + +declaration_statement - - -contextual_keyword + + +expression - - -] + + +( - - -typeof + + +non_array_type - - -int + + +identifier - - -expression + + +System - - -( + + +class - - -type_argument + + +{ - - -local_variable_declaration + + +error + + + +statement_list + + + +( + + + +; - - -{ + + +multiplicative_expression - - -get + + +Test - - -value + + +) - - -identifier + + +accessor_declarations - - -set_accessor_declaration + + +attribute_argument_expression - - -statement_list + + +implicitly_typed_local_variable_declarator - - -class + + +> - - -String + + +method_body - - -expression + + +integral_type - - -+ + + +) - - -} + + +additive_expression - - -; + + +public - - -; + + +attribute_name - - -; + + +) - - -void + + +expression_statement - - -method_header + + +Count - - -namespace_declaration + + +identifier - - -public + + +) + + + +) identifier - - -explicitly_typed_local_variable_declaration + + +explicitly_typed_local_variable_declarator - - -contextual_keyword + + +method_modifiers - - -unary_expression + + +class_member_declaration - - -1 + + +] - - -identifier + + +ToString - - -integral_type + + +attributes - - -identifier + + +qualified_identifier - - -typeof_expression + + +get_accessor_declaration - - -identifier + + +; - - -. + + +primary_expression - - -statement_list + + +statement - - + + = - - -assignment - - - -identifier + + +namespace_or_type_name - - -? + + +] - - -; + + +typeof_expression - - -System + + +literal - - -statement + + +expression - - -Constants + + +contextual_keyword - - + + explicitly_typed_local_variable_declarators - - -int + + +"a" - - -unary_expression + + +class_declaration - - -t + + +type_argument - - -additive_expression + + +; - - -explicitly_typed_local_variable_declarators + + +. - - -System + + +statement_list - - -get_accessor_declaration + + +array_type - - -primary_expression + + +additive_expression - - -local_variable_declaration + + +implicitly_typed_local_variable_declarator - - -expression + + +public - - -identifier + + +typeof_expression - - -property_declaration + + +implicitly_typed_local_variable_declaration - - -literal + + +> - - -multiplicative_expression + + +1 + + + +typeof_expression + + + +declaration_statement typeof - - -typeof + + +; - - -int + + +literal - - -( + + +} - - -qualified_alias_member + + +> - - -type_argument_list + + +statement - - -identifier + + +multiplicative_expression + + + +var + + + +; + + + +integral_type + + + +statement_expression + + + +explicitly_typed_local_variable_declaration + + + +declaration_statement + + + +ConsoleApplication1 - - + + identifier - - -array_type + + +type_argument_list - - -namespace_or_type_name + + +additive_expression - - -t + + +multiplicative_expression - - -false + + +member_access - - -= + + +boolean_literal - - -[ + + +identifier - - -= + + +additive_expression - - -> + + +type - - -) + + +statement - - -var + + +class_member_declaration - - + + ( - - -local_variable_declaration + + +identifier - - -i + + +compilation_unit - - -= + + +primary_expression - - -member_name + + +expression_statement - - -rank_specifier + + +System - - + + +method_header + + + +{ + + + literal - - -method_header + + +namespace_member_declaration - - -member_name + + +expression - - -statement_list + + +2 - - -explicitly_typed_local_variable_declaration + + +type - - -primary_expression + + +{ + + + ++ - - + + . - - -identifier + + +literal - - -namespace_or_type_name + + +simple_assignment - - -expression + + +statement - - + + { - - -expression_statement + + +[ - - -identifier + + +member_name - - -rank_specifier + + +typeof_expression - - + + identifier - - -typeof_expression + + +attribute_arguments - - -compilation_unit + + ++ - - -namespace_or_type_name + + +t - - -integral_type + + +explicitly_typed_local_variable_declaration - - -< + + +Type - - -int + + +; - - -multiplicative_expression + + +] - - -class_member_declaration + + +type + + + +set Int32 - - -type + + +return_type - - -method_modifiers + + +literal - - -type_argument + + +; - - -type + + +namespace_or_type_name - - -3 + + +accessor_body - - -ref_method_modifier + + +simple_assignment + + + +} + + + +:: + + + +named_argument_list + + + +non_nullable_value_type + + + +typeof_expression - - + + type - - -[ + + +"Name" - - -] + + +accessor_body - - -identifier + + +block - - -namespace_member_declaration + + +typeof - - -local_variable_declaration + + +. - - + + +member_name + + + +statement_expression + + + +( + + + identifier - - -type_argument_list + + +declaration_statement - - -primary_expression + + ++ - - -local_variable_declaration + + +< - - -type + + +namespace_or_type_name - - -Count + + +equality_expression - - -multiplicative_expression + + +method_body - - + + = - - -literal + + +void - - -explicitly_typed_local_variable_declarator + + += - - -ConstructedType + + +additive_expression - - -implicitly_typed_local_variable_declarator + + +String - - -> + + +identifier - - -explicitly_typed_local_variable_declarator + + +type_argument - - -method_declaration + + +equality_expression + + + +namespace_or_type_name + + + +implicitly_typed_local_variable_declaration + + + +ref_method_modifier + + + +int + + + +contextual_keyword \ No newline at end of file diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-N/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-N/Reference/sample.gruntree.red.txt index c60ca56bf..1caf0aa2a 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-N/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-N/Reference/sample.gruntree.red.txt @@ -169,7 +169,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -177,10 +177,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ intValue ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-N/Reference/sample.stderr.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-N/Reference/sample.stderr.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-N/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-N/Reference/sample.tree.red.txt index db3ac9f40..b684c5dc0 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-N/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-N/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier Comments) . (identifier XmlComments) . (identifier UndocumentedKeywords)) (namespace_body { (namespace_member_declaration (class_declaration class (identifier C) (type_parameter_list < (decorated_type_parameter (identifier T)) >) (class_body { (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier M)) (type_parameter_list < (decorated_type_parameter (identifier U)) >) ( (parameter_list (fixed_parameters (fixed_parameter (type (identifier T)) (identifier t)) , (fixed_parameter (type (identifier U)) (identifier u)))) )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier intValue) = (local_variable_initializer (literal 0)))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier intValue)) (assignment_operator =) (expression (additive_expression (additive_expression (identifier intValue)) + (multiplicative_expression (literal 1)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (class_type string)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier strValue) = (local_variable_initializer (literal "hello")))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (identifier MyClass)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier c) = (local_variable_initializer (object_creation_expression new (type (identifier MyClass)) ( ))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (class_type string)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier verbatimStr) = (local_variable_initializer (literal @"\\\\")))))) ;))) })))) }))) (namespace_member_declaration (class_declaration class (identifier TestClassXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX) (class_body { }))) (namespace_member_declaration (class_declaration class (identifier TestClassXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX22) (class_body { }))) })))) +(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier Comments) . (identifier XmlComments) . (identifier UndocumentedKeywords)) (namespace_body { (namespace_member_declaration (class_declaration class (identifier C) (type_parameter_list < (decorated_type_parameter (identifier T)) >) (class_body { (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier M)) (type_parameter_list < (decorated_type_parameter (identifier U)) >) ( (parameter_list (fixed_parameters (fixed_parameter (type (identifier T)) (identifier t)) , (fixed_parameter (type (identifier U)) (identifier u)))) )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier intValue) = (local_variable_initializer (literal 0)))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier intValue)) = (expression (additive_expression (additive_expression (identifier intValue)) + (multiplicative_expression (literal 1)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (class_type string)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier strValue) = (local_variable_initializer (literal "hello")))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (identifier MyClass)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier c) = (local_variable_initializer (object_creation_expression new (type (identifier MyClass)) ( ))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (class_type string)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier verbatimStr) = (local_variable_initializer (literal @"\\\\")))))) ;))) })))) }))) (namespace_member_declaration (class_declaration class (identifier TestClassXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX) (class_body { }))) (namespace_member_declaration (class_declaration class (identifier TestClassXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX22) (class_body { }))) })))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-N/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-N/Reference/sample.tree.svg index 1ed559834..be6ed3dd7 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-N/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-N/Reference/sample.tree.svg @@ -1,36 +1,36 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + - + @@ -57,11 +57,11 @@ - - - - - + + + + + @@ -77,779 +77,774 @@ - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -U - - - -local_variable_initializer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +literal - - -identifier + + +"hello" - - -string + + +verbatimStr - - -namespace + + +expression_statement - - -explicitly_typed_local_variable_declarator + + +} - - -; + + +type - - -statement_expression + + +TestClassXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - - -expression_statement + + +fixed_parameters - - -literal + + +explicitly_typed_local_variable_declaration - - -class + + +. - - -identifier + + +type - - -statement + + +class - - -; + + +block - - -literal + + +prog - - -+ + + +> - - -new + + +declaration_statement - - + + = - - + + compilation_unit - - -type_parameter_list + + +{ - - -parameter_list + + +namespace - - + + +member_name + + + +> + + + +U + + + +statement + + + +local_variable_declaration + + + +intValue + + + +statement + + + = - - -class_declaration + + +literal - - -TestClassXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + + +identifier - - -int + + +} - - -{ + + +explicitly_typed_local_variable_declarator identifier - - -U + + +parameter_list - - -identifier + + +} - - + + +class_body + + + qualified_identifier - - -statement_list + + +namespace_body - - -method_header + + +} - - -class_member_declaration + + +identifier - - -type + + +{ - - -intValue + + +void - - -class_body + + +XmlComments - - -MyClass + + +explicitly_typed_local_variable_declarators - - -T + + +simple_assignment - - -class_declaration + + +@"\\\\" - - -method_declaration + + +declaration_statement - - -decorated_type_parameter + + +identifier - - -return_type + + +type - - -Comments + + +unary_expression - - -namespace_member_declaration + + +C - - -explicitly_typed_local_variable_declaration + + += - - -. + + +identifier - - -explicitly_typed_local_variable_declaration + + +identifier - - -local_variable_declaration + + +type_parameter_list - - -identifier + + +type - - -) + + +additive_expression - - -identifier + + +; - - -declaration_statement + + +int - - + + identifier - - -class_type + + +MyClass - - -} + + +class - - -class_declaration + + +TestClassXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX22 - - -additive_expression + + +class_body - - -namespace_declaration + + ++ - - -local_variable_initializer + + +statement_list - - + + +explicitly_typed_local_variable_declarators + + + +< + + + +fixed_parameter + + + declaration_statement - - -identifier + + +( - - -explicitly_typed_local_variable_declarator + + +local_variable_declaration - - -statement + + +T - - -explicitly_typed_local_variable_declarator + + +namespace_member_declaration - - -integral_type + + +explicitly_typed_local_variable_declarators - - -} + + +fixed_parameter - - -class + + +M - - -identifier + + +class_declaration - - -namespace_member_declaration + + +statement - - -local_variable_declaration + + +; - - -literal + + +identifier - - -verbatimStr + + +statement - - -fixed_parameters + + +identifier - - -{ + + +local_variable_declaration - - -block + + +identifier - - -statement + + +local_variable_declaration - - -"hello" + + +integral_type - - -} + + +; + + + +identifier - - + + intValue - - -multiplicative_expression + + +method_header - - -class_type + + +intValue - - -type + + +class_member_declaration - - -strValue + + +identifier identifier - - -assignment_operator - - - -explicitly_typed_local_variable_declarators - - - -explicitly_typed_local_variable_declaration - - - -= - - - -< - - - -1 - - - -prog + + +UndocumentedKeywords - - -u + + +type - - + + namespace_member_declaration + + +local_variable_initializer + local_variable_initializer - - -additive_expression + + +string - - -class_body + + +identifier - - -. + + +MyClass - - -< + + +{ - - -@"\\\\" + + +U - - -T + + +) - - -intValue + + +explicitly_typed_local_variable_declarator - - -identifier + + +explicitly_typed_local_variable_declaration - - -( + + +namespace_declaration - - + + type - - -identifier - - - -member_name - - - -local_variable_declaration - - - -> - 0 - - -> + + +type_parameter_list - - + + identifier - - -assignment - - - -, - - - -identifier + + +( - - -string + + +. - - -identifier + + +class_declaration - - -type + + +decorated_type_parameter - - -c + + +Comments - - -explicitly_typed_local_variable_declarator + + +additive_expression - - -identifier + + +literal - - -declaration_statement + + +class_body - - -explicitly_typed_local_variable_declarators + + +explicitly_typed_local_variable_declaration - - + + { - - -class_body - - - -identifier + + +literal - - + + = - - -type - - - -statement - - - -; - - - -namespace_body - - - -expression + + +strValue - - -MyClass + + +T - - -{ + + +multiplicative_expression - - -fixed_parameter + + +return_type - - -void + + +1 - - -( + + +, - - -unary_expression + + +; - - + + identifier + + +namespace_member_declaration + method_modifiers - - -type_parameter_list + + +method_declaration - - -local_variable_declaration + + +) - - -local_variable_initializer + + +declaration_statement - - -M + + +class_type - - -; + + +{ - - -identifier + + +u - - -} + + +method_body - - -; + + +local_variable_initializer - - -) + + +string + + + +class_declaration + + + +explicitly_typed_local_variable_declarator + + + +identifier t - - + + type - - -decorated_type_parameter + + +identifier - - -declaration_statement + + +statement - - + + +class_type + + + explicitly_typed_local_variable_declarators - - -identifier + + +< - - -XmlComments + + +decorated_type_parameter - - -C + + +identifier - - -literal + + +new - - -TestClassXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX22 + + +; - - -} + + +identifier - - + + = - - -identifier + + +statement_expression - - + + +object_creation_expression + + + class - - -statement + + +identifier - - + + explicitly_typed_local_variable_declaration - - -explicitly_typed_local_variable_declarators - - - -UndocumentedKeywords - - - -type + + +explicitly_typed_local_variable_declarator - - -{ + + +expression - - -method_body + + +local_variable_initializer - - -fixed_parameter + + +c - - -object_creation_expression + + +} \ No newline at end of file diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-O/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-O/Reference/sample.gruntree.red.txt index cebd99b83..7f936b419 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-O/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-O/Reference/sample.gruntree.red.txt @@ -787,7 +787,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -795,10 +795,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ i ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-O/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-O/Reference/sample.tree.red.txt index c073c9b22..a8d013a35 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-O/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-O/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier Comments) . (identifier XmlComments) . (identifier UndocumentedKeywords)) (namespace_body { (namespace_member_declaration (class_declaration class (identifier (contextual_keyword yield)) (class_body { (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier Params)) ( (parameter_list (fixed_parameters (fixed_parameter (parameter_modifier (parameter_mode_modifier ref)) (type (contextual_keyword dynamic)) (identifier a)) , (fixed_parameter (parameter_modifier (parameter_mode_modifier out)) (type (contextual_keyword dynamic)) (identifier b))) , (parameter_array params (array_type (non_array_type (contextual_keyword dynamic)) (rank_specifier [ ])) (identifier c))) )) (method_body (block { })))) (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier Params)) ( (parameter_list (fixed_parameters (fixed_parameter (parameter_modifier (parameter_mode_modifier out)) (type (contextual_keyword dynamic)) (identifier a) (default_argument = (expression (literal 2)))) , (fixed_parameter (parameter_modifier (parameter_mode_modifier ref)) (type (contextual_keyword dynamic)) (identifier c) (default_argument = (expression (explicitly_typed_default default ( (type (contextual_keyword dynamic)) )))))) , (parameter_array params (array_type (non_array_type (contextual_keyword dynamic)) (rank_specifier [ ]) (rank_specifier [ ])) (identifier c))) )) (method_body (block { })))) (class_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier public)) (method_modifier (ref_method_modifier override))) (return_type (class_type string)) (method_header (member_name (identifier ToString)) ( )) (method_body (block { (statement_list (return_statement return (expression (invocation_expression (primary_expression (base_access base . (identifier ToString))) ( ))) ;)) })))) (class_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier public)) partial) (return_type void) (method_header (member_name (identifier OnError)) ( )) (method_body ;))) (class_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier public)) partial) (return_type void) (method_header (member_name (identifier method)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (array_type (non_array_type (nullable_value_type (non_nullable_value_type (integral_type int)) (nullable_type_annotation ?))) (rank_specifier [ ]))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (array_creation_expression new (non_array_type (nullable_value_type (non_nullable_value_type (integral_type int)) (nullable_type_annotation ?))) [ (expression_list (literal 5)) ])))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (array_type (non_array_type (integral_type int)) (rank_specifier [ ]))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier (contextual_keyword var)) = (local_variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (literal 1)) , (variable_initializer (literal 2)) , (variable_initializer (literal 3)) , (variable_initializer (literal 4)) , (variable_initializer (literal 5))) })))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier i) = (local_variable_initializer (element_access (primary_expression (identifier a)) [ (argument_list (identifier i)) ])))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Foo) (type_argument_list < (type_argument (identifier T)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier f) = (local_variable_initializer (object_creation_expression new (type (namespace_or_type_name (identifier Foo) (type_argument_list < (type_argument (integral_type int)) >))) ( ))))))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier f)) . (identifier method))) ( ))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier i)) (assignment_operator =) (expression (inclusive_or_expression (inclusive_or_expression (and_expression (and_expression (additive_expression (additive_expression (additive_expression (identifier i)) + (multiplicative_expression (identifier i))) - (multiplicative_expression (multiplicative_expression (multiplicative_expression (multiplicative_expression (identifier i)) * (switch_expression (identifier i))) / (switch_expression (identifier i))) % (switch_expression (identifier i))))) & (equality_expression (identifier i)))) | (exclusive_or_expression (exclusive_or_expression (identifier i)) ^ (and_expression (identifier i))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (simple_type bool)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier b) = (local_variable_initializer (inclusive_or_expression (inclusive_or_expression (and_expression (and_expression (boolean_literal true)) & (equality_expression (boolean_literal false)))) | (exclusive_or_expression (exclusive_or_expression (boolean_literal true)) ^ (and_expression (boolean_literal false))))))))) ;))) })))) }))) })))) +(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier Comments) . (identifier XmlComments) . (identifier UndocumentedKeywords)) (namespace_body { (namespace_member_declaration (class_declaration class (identifier (contextual_keyword yield)) (class_body { (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier Params)) ( (parameter_list (fixed_parameters (fixed_parameter (parameter_modifier (parameter_mode_modifier ref)) (type (contextual_keyword dynamic)) (identifier a)) , (fixed_parameter (parameter_modifier (parameter_mode_modifier out)) (type (contextual_keyword dynamic)) (identifier b))) , (parameter_array params (array_type (non_array_type (contextual_keyword dynamic)) (rank_specifier [ ])) (identifier c))) )) (method_body (block { })))) (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier Params)) ( (parameter_list (fixed_parameters (fixed_parameter (parameter_modifier (parameter_mode_modifier out)) (type (contextual_keyword dynamic)) (identifier a) (default_argument = (expression (literal 2)))) , (fixed_parameter (parameter_modifier (parameter_mode_modifier ref)) (type (contextual_keyword dynamic)) (identifier c) (default_argument = (expression (explicitly_typed_default default ( (type (contextual_keyword dynamic)) )))))) , (parameter_array params (array_type (non_array_type (contextual_keyword dynamic)) (rank_specifier [ ]) (rank_specifier [ ])) (identifier c))) )) (method_body (block { })))) (class_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier public)) (method_modifier (ref_method_modifier override))) (return_type (class_type string)) (method_header (member_name (identifier ToString)) ( )) (method_body (block { (statement_list (return_statement return (expression (invocation_expression (primary_expression (base_access base . (identifier ToString))) ( ))) ;)) })))) (class_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier public)) partial) (return_type void) (method_header (member_name (identifier OnError)) ( )) (method_body ;))) (class_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier public)) partial) (return_type void) (method_header (member_name (identifier method)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (array_type (non_array_type (nullable_value_type (non_nullable_value_type (integral_type int)) (nullable_type_annotation ?))) (rank_specifier [ ]))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (array_creation_expression new (non_array_type (nullable_value_type (non_nullable_value_type (integral_type int)) (nullable_type_annotation ?))) [ (expression_list (literal 5)) ])))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (array_type (non_array_type (integral_type int)) (rank_specifier [ ]))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier (contextual_keyword var)) = (local_variable_initializer (array_initializer { (variable_initializer_list (variable_initializer (literal 1)) , (variable_initializer (literal 2)) , (variable_initializer (literal 3)) , (variable_initializer (literal 4)) , (variable_initializer (literal 5))) })))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier i) = (local_variable_initializer (element_access (primary_expression (identifier a)) [ (argument_list (identifier i)) ])))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Foo) (type_argument_list < (type_argument (identifier T)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier f) = (local_variable_initializer (object_creation_expression new (type (namespace_or_type_name (identifier Foo) (type_argument_list < (type_argument (integral_type int)) >))) ( ))))))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier f)) . (identifier method))) ( ))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier i)) = (expression (inclusive_or_expression (inclusive_or_expression (and_expression (and_expression (additive_expression (additive_expression (additive_expression (identifier i)) + (multiplicative_expression (identifier i))) - (multiplicative_expression (multiplicative_expression (multiplicative_expression (multiplicative_expression (identifier i)) * (switch_expression (identifier i))) / (switch_expression (identifier i))) % (switch_expression (identifier i))))) & (equality_expression (identifier i)))) | (exclusive_or_expression (exclusive_or_expression (identifier i)) ^ (and_expression (identifier i))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (simple_type bool)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier b) = (local_variable_initializer (inclusive_or_expression (inclusive_or_expression (and_expression (and_expression (boolean_literal true)) & (equality_expression (boolean_literal false)))) | (exclusive_or_expression (exclusive_or_expression (boolean_literal true)) ^ (and_expression (boolean_literal false))))))))) ;))) })))) }))) })))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-O/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-O/Reference/sample.tree.svg index fc31a4641..423e04426 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-O/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-O/Reference/sample.tree.svg @@ -1,4 +1,4 @@ - + @@ -367,7 +367,6 @@ - @@ -451,1820 +450,1816 @@ - - -local_variable_initializer - - - -i - - - -; - - - -i + + +return_type - - -explicitly_typed_local_variable_declaration + + +} - - -] + + +public - - + + type - - -public + + +identifier - - + + { - - -) + + +. - - -identifier + + +declaration_statement - - + + +array_type + + + identifier - - -{ + + +> - - + + +out + + + +rank_specifier + + + +unary_expression + + + +explicitly_typed_local_variable_declarator + + + identifier - - -type + + +expression - - -, + + +void - - -integral_type + + +expression_statement - - + + } + + +UndocumentedKeywords + + + +fixed_parameter + i - - -literal - - - -false - - - -ToString - - - -array_type + + +[ - - -array_initializer + + +and_expression - - -return + + +expression_statement - - -identifier + + +a - - -( + + +boolean_literal - - -) + + +> - - -member_name + + +true - - -method_modifiers + + +[ - - -= + + +exclusive_or_expression - - -literal + + +- - - -( + + +integral_type - - -boolean_literal + + +[ - - -= + + +. - - -] + + +int literal - - -multiplicative_expression - - - -explicitly_typed_local_variable_declarators + + +Foo - - -method_declaration + + +rank_specifier - - -primary_expression + + +parameter_array - - -Params + + +{ - - -params + + +ref_method_modifier - - -] + + +{ - - -statement + + +( - - -out + + +class_member_declaration - - -identifier + + +default_argument - - -array_type + + +local_variable_declaration - - -method + + +inclusive_or_expression - - -namespace_body + + +type + + + +string + + + +int ) - - -? + + +2 - - -method_modifier + + +ref_method_modifier - - -namespace_or_type_name + + +statement_list - - + + +type + + + +c + + + +literal + + + +contextual_keyword + + + identifier - - + + +i + + + +} + + + a - - -identifier + + +variable_initializer - - -f + + +nullable_type_annotation - - -method_modifier + + +, - - + + +& + + + +( + + + +, + + + identifier - - -parameter_mode_modifier + + +method_body - - -1 + + +integral_type - - + + identifier - - -) + + +} - - -var + + +identifier - - -nullable_value_type + + +{ - - -statement_expression + + +multiplicative_expression - - -/ + + +method_header - - -explicitly_typed_local_variable_declarator + + +< - - -non_nullable_value_type + + +integral_type - - -partial + + +. - - -statement_list + + +exclusive_or_expression - - -int + + +block - - -return_type + + +^ - - -non_array_type + + +{ - - -default + + +^ - - -> + + +void - - -Foo + + +method_modifier - - -primary_expression + + +identifier - - -; + + += + + + +, + + + +( member_access - - -contextual_keyword + + +} - - -declaration_statement + + +statement - - -rank_specifier + + +explicitly_typed_local_variable_declarators - - -method_header + + +method - - -parameter_modifier + + +namespace_or_type_name - - -return_type + + +4 - - -type_argument_list + + +int - - -invocation_expression + + +f - - -identifier + + +] - - -argument_list + + +boolean_literal - - -explicitly_typed_local_variable_declarator + + +and_expression - - -[ + + +local_variable_declaration - - + + identifier - - -array_creation_expression - - - -switch_expression + + +identifier - - -primary_expression + + +] - - -local_variable_declaration + + +inclusive_or_expression - - -b + + +? - - -class_body + + +multiplicative_expression - - -type + + +dynamic - - -( + + +array_type method_body - - -equality_expression - - - -class_member_declaration + + +non_nullable_value_type - - -identifier + + +% - - -variable_initializer + + +block - - -identifier + + +explicitly_typed_local_variable_declarator - - -) + + +element_access - - -variable_initializer + + +< - - -method_modifiers + + +identifier - - -method_declaration + + +parameter_modifier - - -contextual_keyword + + +declaration_statement - - -return_type + + +statement - - -expression + + +class_member_declaration - - -inclusive_or_expression + + +c - - -* + + +int - - -type + + +literal - - -statement_expression + + +rank_specifier - - -parameter_modifier + + +, - - -; + + +int i - - -= + + +class_member_declaration - - -literal + + +additive_expression - - -block + + +member_name - - -i + + +identifier - - -ref + + +type - - -type + + +parameter_mode_modifier - - -explicitly_typed_default + + +explicitly_typed_local_variable_declaration - - -5 + + +contextual_keyword - - -class + + +switch_expression - - -integral_type + + +expression - - -declaration_statement + + +fixed_parameters - - -true + + +method_modifier a - - -parameter_array - - - -; + + +and_expression - - -( + + +dynamic - - -contextual_keyword + + +rank_specifier - - -contextual_keyword + + +identifier - - -. + + +identifier - - -non_nullable_value_type + + +? - - -member_name + + +public - - -block + + +variable_initializer_list - - -= + + +method_header - - -exclusive_or_expression + + +literal - - -ref_method_modifier + + +type_argument - - -false + + +multiplicative_expression - - -exclusive_or_expression + + += - - -void + + +type - - -i + + +) - - -local_variable_initializer + + +namespace - - + + and_expression - - -int + + +equality_expression - - -multiplicative_expression + + +nullable_value_type + + + +local_variable_declaration + + + +class_declaration compilation_unit - - -method_declaration - - - -method_header + + +; - - + + identifier - - -ref_method_modifier + + +] - - -nullable_value_type + + +parameter_array - - -assignment + + +boolean_literal - - -ToString + + +void - - -method_header + + +f - - -type + + +statement - - -parameter_mode_modifier + + +| - - -identifier + + +namespace_or_type_name - - -a + + +params - - -declaration_statement + + +parameter_mode_modifier - - -i + + +non_array_type - - -rank_specifier + + +true - - -declaration_statement + + +multiplicative_expression - - -fixed_parameter - - - -method_header - - - -literal - - - -method_declaration - - - -4 - - - -invocation_expression + + +identifier - - -base + + +non_array_type - - -^ + + +[ - - -ref + + +switch_expression - - -, + + +statement_expression - - -identifier + + +type - - -nullable_type_annotation + + +; - - -block + + +bool - - -rank_specifier + + +integral_type - - -identifier + + +statement - - -& + + +) - - -fixed_parameter + + +] - - -public + + +member_name - - -? + + +explicitly_typed_local_variable_declaration - - -multiplicative_expression + + +local_variable_initializer - - -params + + +additive_expression - - + + identifier - - -parameter_array - - - -method_declaration - - - -local_variable_declaration - - - -statement - - - -string + + +variable_initializer - - -dynamic + + +identifier - - -type + + +primary_expression - - -method_body + + +equality_expression - - -parameter_mode_modifier + + +array_type - - -< + + +, - - -void + + +identifier - - -] + + += - - -rank_specifier + + +literal - - -variable_initializer + + +simple_assignment - - -return_statement + + +public - - -{ + + +; - - + + identifier - - -, + + +explicitly_typed_local_variable_declarators - - -% + + +] - - + + ref_method_modifier - - -type + + +parameter_modifier - - -UndocumentedKeywords + + +method - - -override + + +base - - -prog + + += - - -non_array_type + + += - - -Comments + + +) - - -identifier + + +non_array_type - - -identifier + + +| - - -) + + +variable_initializer - - -and_expression + + +statement - - -literal + + +( - - -array_type + + +object_creation_expression - - -local_variable_initializer + + +[ namespace_member_declaration - - -XmlComments - - - -base_access - - - -non_array_type - - - -identifier + + +{ - - -identifier + + +yield - - -ref_method_modifier + + +ToString - - -explicitly_typed_local_variable_declarators + + +parameter_list - - -expression + + +( - - -| + + +exclusive_or_expression - - -identifier + + +i - - -) + + +method_modifier - - -variable_initializer_list + + +and_expression - - -type_argument_list + + +params - - -int + + +inclusive_or_expression - - -fixed_parameters + + +local_variable_initializer - - -, + + +return_type - - -= + + +) - - + + +void + + + identifier - - -type + + +non_array_type - - -i + + +member_name - - -( + + +out - - -identifier + + +dynamic - - -inclusive_or_expression + + +ref - - -nullable_type_annotation + + +] - - -int + + +method_declaration - - -class_member_declaration + + +type - - -namespace + + +c - - -[ + + +method_header - - -OnError + + +contextual_keyword - - -b + + +identifier - - + + += + + + +fixed_parameter + + + , - - -explicitly_typed_local_variable_declarators + + +method_modifier - - -member_name + + +[ - - -dynamic + + +3 - - -local_variable_declaration + + +} - - -type + + +default_argument - - -5 + + +} - - -statement + + +integral_type - - -i + + +default - - -namespace_or_type_name + + +partial - - -identifier + + +expression - - -explicitly_typed_local_variable_declarators + + +identifier - - -( + + +/ - - -class_member_declaration + + +explicitly_typed_local_variable_declarator identifier - - -default_argument - - - -additive_expression - - - + + explicitly_typed_local_variable_declarator - - -i + + +& + + + +method_header - - -void + + +) - - -qualified_identifier + + +method_declaration - - -method_modifiers + + +switch_expression - - -integral_type + + +statement_list - - -out + + +partial - - -literal + + +member_name - - + + identifier - - -] + + +non_nullable_value_type - - -[ + + +method_declaration - - -and_expression + + += - - -| + + +boolean_literal - - -expression_statement + + +Params - - -and_expression + + +method_body - - -) + + +prog - - + + +; + + + +false + + + parameter_list - - -statement_list + + +contextual_keyword - - -expression_list + + +; - - -element_access + + +Params - - -explicitly_typed_local_variable_declarator + + +OnError - - -return_type + + +identifier - - -a + + +2 - - -; + + +dynamic - - -inclusive_or_expression + + +) - - -additive_expression + + +class_member_declaration - - -multiplicative_expression + + +type_argument - - -declaration_statement + + +return_type - - -method_modifier + + +fixed_parameter - - -; + + +[ + + + +expression_list + + + +literal + - - -. - - - -method - - - -. + + +argument_list - - -simple_type + + +statement_expression - - -class_member_declaration + + +return_type - - -local_variable_initializer + + +type_argument_list - - -exclusive_or_expression + + +return - - -class_member_declaration + + +method_modifiers - - + + identifier - - -dynamic + + +parameter_modifier - - -object_creation_expression + + +new - - -integral_type + + +qualified_identifier - - -rank_specifier + + +identifier - - -boolean_literal + + +contextual_keyword - - -switch_expression + + +identifier - - -i + + +class_body - - -statement + + +Foo - - + + dynamic - - -c - - - -c + + +simple_type - - -> + + +; - - -identifier + + +class - - -. + + +new - - -identifier + + +fixed_parameter - - -f + + +b - - -and_expression + + +return_statement - - -[ + + +nullable_value_type - - -variable_initializer + + +i - - -multiplicative_expression + + +literal - - -explicitly_typed_local_variable_declaration + + +a - - -) + + +method_declaration - - -explicitly_typed_local_variable_declaration + + +additive_expression - - -default_argument + + +* - - -Foo + + +namespace_body - - -, + + +base_access - - -variable_initializer + + +method_modifiers - - -contextual_keyword + + +method_header - - -type + + +1 - - -expression + + +method_modifiers - - -, + + +fixed_parameters - - -and_expression + + +( - - -dynamic + + +, - - -non_array_type + + +i - - -} + + +. - - -member_name + + +return_type - - -additive_expression + + +non_array_type - - -= + + +block - - -explicitly_typed_local_variable_declarators + + +local_variable_declaration - - -true + + +( - - + + contextual_keyword - - -method_modifiers + + +explicitly_typed_local_variable_declaration - - -identifier + + +] - - + + identifier - - -parameter_mode_modifier + + +multiplicative_expression - - + + identifier - - -void - - - -statement - - - -method_header + + +array_initializer - - -- + + +primary_expression - - -method_modifiers + + +identifier - - -[ + + +i - - -public + + +exclusive_or_expression - - -block + + +parameter_mode_modifier - - -int + + +inclusive_or_expression - - -primary_expression + + +identifier - - -} + + +rank_specifier - - -partial + + +array_creation_expression - - -contextual_keyword + + +primary_expression - - -identifier + + +ref_method_modifier - - -method_body + + +namespace_declaration - - -statement + + +array_type - - -( + + +local_variable_declaration - - -class_declaration + + +dynamic - - -, + + +) - - -equality_expression + + +Comments - - -switch_expression + + +invocation_expression - - -boolean_literal + + +method_body - - -explicitly_typed_local_variable_declarator + + +contextual_keyword - - -; + + +explicitly_typed_local_variable_declarators - - -} + + +statement - - -fixed_parameter + + +identifier - - -class_type + + +primary_expression - - -unary_expression + + +ref - - -2 + + +) - - -member_name + + +type - - -} + + +local_variable_initializer - - -parameter_list + + +, - - -contextual_keyword + + +invocation_expression - - -non_array_type + + +type - - -{ + + +i - - -local_variable_declaration + + +and_expression - - -type_argument + + +class_type - - -2 + + +identifier - - + + identifier - - -yield + + +statement ; - - -boolean_literal + + +explicitly_typed_local_variable_declaration - - -fixed_parameters + + +local_variable_initializer - - -= + + +declaration_statement - - -{ + + +false - - -( + + +i + + + +contextual_keyword + + + +explicitly_typed_local_variable_declarators + + + +method_modifiers - - -{ + + +variable_initializer - - -method_body + + +i - - -[ + + +explicitly_typed_local_variable_declarators - - -explicitly_typed_local_variable_declaration + + +declaration_statement - - -T + + +identifier expression - - -< - - - -] - - - -i - - - -inclusive_or_expression + + +explicitly_typed_local_variable_declaration - - -local_variable_declaration + + +class_member_declaration - - -exclusive_or_expression + + +nullable_type_annotation - - -return_type + + +type - - -{ + + +identifier - - -new + + +( - - -^ + + +i - - -local_variable_initializer + + +i - - -bool + + +type_argument_list - - -contextual_keyword + + +T method_body - - -[ - - - + + parameter_modifier - - -type_argument + + +method_declaration - - -assignment_operator + + +5 - - -dynamic + + +5 - - -Params + + +type - - -] + + +variable_initializer - - + + ; - - -array_type + + +contextual_keyword - - -& + + +parameter_mode_modifier - - -identifier + + +( - - -} + + +; - - -new + + +dynamic - - -} + + +ToString - - -integral_type + + +b - - -parameter_modifier + + +local_variable_initializer - - -3 + + +method_modifiers - - -dynamic + + += - - -( + + +var - - -explicitly_typed_local_variable_declaration + + +explicitly_typed_default - - -namespace_declaration + + +block - - -fixed_parameter + + +declaration_statement - - -method_modifier + + +override - - -statement + + +member_name - - -c + + +XmlComments - - -expression_statement + + +{ - - -= + + +explicitly_typed_local_variable_declarator \ No newline at end of file diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-P/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-P/Reference/sample.gruntree.red.txt index 25d1b01ff..a5187463c 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-P/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-P/Reference/sample.gruntree.red.txt @@ -85,7 +85,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -93,10 +93,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ b ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -126,7 +123,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -134,10 +131,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ i ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -164,7 +158,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -172,10 +166,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ b ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -387,7 +378,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -395,10 +386,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ b ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -446,7 +434,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -454,10 +442,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ b ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -569,7 +554,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -578,7 +563,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment_operator ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ += ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -600,7 +585,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -609,7 +594,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment_operator ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ -= ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -631,7 +616,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -640,7 +625,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment_operator ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ *= ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -662,7 +647,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -671,7 +656,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment_operator ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ /= ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -693,7 +678,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -702,7 +687,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment_operator ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ %= ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -724,7 +709,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -733,7 +718,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment_operator ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ &= ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -755,7 +740,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -764,7 +749,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment_operator ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ |= ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -786,7 +771,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -795,7 +780,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment_operator ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ^= ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -817,7 +802,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -826,7 +811,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment_operator ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ <<= ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -848,7 +833,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -857,7 +842,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment_operator ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ right_shift_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > @@ -1076,7 +1061,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1095,10 +1080,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1169,7 +1151,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1206,10 +1188,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ] ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1229,7 +1208,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1285,10 +1264,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ] ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1408,7 +1384,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -1416,10 +1392,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ this ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-P/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-P/Reference/sample.tree.red.txt index f089328b9..bef05c61f 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-P/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-P/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier Comments) . (identifier XmlComments) . (identifier UndocumentedKeywords)) (namespace_body { (namespace_member_declaration (class_declaration class (identifier (contextual_keyword yield)) (class_body { (class_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier public)) partial) (return_type void) (method_header (member_name (identifier method)) ( )) (method_body (block { (statement_list (statement (expression_statement (statement_expression (assignment (unary_expression (identifier b)) (assignment_operator =) (expression (unary_expression (logical_negation_operator !) (unary_expression (identifier b)))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier i)) (assignment_operator =) (expression (unary_expression ~ (unary_expression (identifier i)))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier b)) (assignment_operator =) (expression (conditional_and_expression (conditional_and_expression (relational_expression (relational_expression (identifier i)) < (shift_expression (identifier i)))) && (inclusive_or_expression (relational_expression (relational_expression (identifier i)) > (shift_expression (identifier i)))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (nullable_value_type (non_nullable_value_type (integral_type int)) (nullable_type_annotation ?))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier ii) = (local_variable_initializer (literal 5)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier f) = (local_variable_initializer (conditional_expression (null_coalescing_expression (boolean_literal true)) ? (expression (literal 1)) : (expression (literal 0)))))))) ;)) (statement (expression_statement (statement_expression (post_increment_expression (primary_expression (identifier i)) ++)) ;)) (statement (expression_statement (statement_expression (post_decrement_expression (primary_expression (identifier i)) --)) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier b)) (assignment_operator =) (expression (conditional_or_expression (conditional_or_expression (conditional_and_expression (conditional_and_expression (boolean_literal true)) && (inclusive_or_expression (boolean_literal false)))) || (conditional_and_expression (boolean_literal true)))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier b)) (assignment_operator =) (expression (conditional_and_expression (conditional_and_expression (conditional_and_expression (conditional_and_expression (equality_expression (equality_expression (identifier i)) == (relational_expression (identifier i)))) && (inclusive_or_expression (equality_expression (equality_expression (identifier i)) != (relational_expression (identifier i))))) && (inclusive_or_expression (relational_expression (relational_expression (identifier i)) <= (shift_expression (identifier i))))) && (inclusive_or_expression (relational_expression (relational_expression (identifier i)) >= (shift_expression (identifier i)))))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier i)) (assignment_operator +=) (expression (literal 5.0)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier i)) (assignment_operator -=) (expression (identifier i)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier i)) (assignment_operator *=) (expression (identifier i)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier i)) (assignment_operator /=) (expression (identifier i)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier i)) (assignment_operator %=) (expression (identifier i)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier i)) (assignment_operator &=) (expression (identifier i)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier i)) (assignment_operator |=) (expression (identifier i)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier i)) (assignment_operator ^=) (expression (identifier i)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier i)) (assignment_operator <<=) (expression (identifier i)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier i)) (assignment_operator (right_shift_assignment > >=)) (expression (identifier i)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (class_type object)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier s) = (local_variable_initializer (lambda_expression (anonymous_function_signature (identifier x)) => (anonymous_function_body (additive_expression (additive_expression (identifier x)) + (multiplicative_expression (literal 1)))))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (floating_point_type double)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier d) = (local_variable_initializer (literal .3)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (identifier Point)) (explicitly_typed_local_variable_declarators (identifier point)))) ;)) (statement (unsafe_statement unsafe (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (pointer_type (value_type (identifier Point)) *)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier p) = (local_variable_initializer (addressof_expression & (unary_expression (identifier point)))))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (pointer_member_access (primary_expression (identifier p)) -> (identifier x))) (assignment_operator =) (expression (literal 10)))) ;))) }))) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (qualified_alias_member (identifier IO) :: (identifier BinaryReader))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier br) = (local_variable_initializer (null_literal null)))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (element_access (primary_expression (identifier x)) [ (argument_list (argument (argument_name (identifier i) :) (argument_value (literal 1)))) ])) (assignment_operator =) (expression (literal 3)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (element_access (primary_expression (identifier x)) [ (argument_list (argument (argument_name (identifier i) :) (argument_value (literal 1))) , (argument (argument_name (identifier j) :) (argument_value (literal 5)))) ])) (assignment_operator =) (expression (literal "str")))) ;))) })))) (class_member_declaration (struct_declaration struct (identifier Point) (struct_body { (struct_member_declaration (field_declaration (field_modifier public) (type (integral_type int)) (variable_declarators (identifier X)) ;)) (struct_member_declaration (field_declaration (field_modifier public) (type (integral_type int)) (variable_declarators (identifier Y)) ;)) (struct_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier ThisAccess)) ( )) (method_body (block { (statement_list (expression_statement (statement_expression (assignment (unary_expression (this_access this)) (assignment_operator =) (expression (this_access this)))) ;)) })))) }))) }))) })))) +(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier Comments) . (identifier XmlComments) . (identifier UndocumentedKeywords)) (namespace_body { (namespace_member_declaration (class_declaration class (identifier (contextual_keyword yield)) (class_body { (class_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier public)) partial) (return_type void) (method_header (member_name (identifier method)) ( )) (method_body (block { (statement_list (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier b)) = (expression (unary_expression (logical_negation_operator !) (unary_expression (identifier b)))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier i)) = (expression (unary_expression ~ (unary_expression (identifier i)))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier b)) = (expression (conditional_and_expression (conditional_and_expression (relational_expression (relational_expression (identifier i)) < (shift_expression (identifier i)))) && (inclusive_or_expression (relational_expression (relational_expression (identifier i)) > (shift_expression (identifier i)))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (nullable_value_type (non_nullable_value_type (integral_type int)) (nullable_type_annotation ?))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier ii) = (local_variable_initializer (literal 5)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier f) = (local_variable_initializer (conditional_expression (null_coalescing_expression (boolean_literal true)) ? (expression (literal 1)) : (expression (literal 0)))))))) ;)) (statement (expression_statement (statement_expression (post_increment_expression (primary_expression (identifier i)) ++)) ;)) (statement (expression_statement (statement_expression (post_decrement_expression (primary_expression (identifier i)) --)) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier b)) = (expression (conditional_or_expression (conditional_or_expression (conditional_and_expression (conditional_and_expression (boolean_literal true)) && (inclusive_or_expression (boolean_literal false)))) || (conditional_and_expression (boolean_literal true)))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier b)) = (expression (conditional_and_expression (conditional_and_expression (conditional_and_expression (conditional_and_expression (equality_expression (equality_expression (identifier i)) == (relational_expression (identifier i)))) && (inclusive_or_expression (equality_expression (equality_expression (identifier i)) != (relational_expression (identifier i))))) && (inclusive_or_expression (relational_expression (relational_expression (identifier i)) <= (shift_expression (identifier i))))) && (inclusive_or_expression (relational_expression (relational_expression (identifier i)) >= (shift_expression (identifier i)))))))) ;)) (statement (expression_statement (statement_expression (compound_assignment (unary_expression (identifier i)) (compound_assignment_operator +=) (expression (literal 5.0)))) ;)) (statement (expression_statement (statement_expression (compound_assignment (unary_expression (identifier i)) (compound_assignment_operator -=) (expression (identifier i)))) ;)) (statement (expression_statement (statement_expression (compound_assignment (unary_expression (identifier i)) (compound_assignment_operator *=) (expression (identifier i)))) ;)) (statement (expression_statement (statement_expression (compound_assignment (unary_expression (identifier i)) (compound_assignment_operator /=) (expression (identifier i)))) ;)) (statement (expression_statement (statement_expression (compound_assignment (unary_expression (identifier i)) (compound_assignment_operator %=) (expression (identifier i)))) ;)) (statement (expression_statement (statement_expression (compound_assignment (unary_expression (identifier i)) (compound_assignment_operator &=) (expression (identifier i)))) ;)) (statement (expression_statement (statement_expression (compound_assignment (unary_expression (identifier i)) (compound_assignment_operator |=) (expression (identifier i)))) ;)) (statement (expression_statement (statement_expression (compound_assignment (unary_expression (identifier i)) (compound_assignment_operator ^=) (expression (identifier i)))) ;)) (statement (expression_statement (statement_expression (compound_assignment (unary_expression (identifier i)) (compound_assignment_operator <<=) (expression (identifier i)))) ;)) (statement (expression_statement (statement_expression (compound_assignment (unary_expression (identifier i)) (compound_assignment_operator (right_shift_assignment > >=)) (expression (identifier i)))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (class_type object)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier s) = (local_variable_initializer (lambda_expression (anonymous_function_signature (identifier x)) => (anonymous_function_body (additive_expression (additive_expression (identifier x)) + (multiplicative_expression (literal 1)))))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (floating_point_type double)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier d) = (local_variable_initializer (literal .3)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (identifier Point)) (explicitly_typed_local_variable_declarators (identifier point)))) ;)) (statement (unsafe_statement unsafe (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (pointer_type (value_type (identifier Point)) *)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier p) = (local_variable_initializer (addressof_expression & (unary_expression (identifier point)))))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (pointer_member_access (primary_expression (identifier p)) -> (identifier x))) = (expression (literal 10)))) ;))) }))) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (qualified_alias_member (identifier IO) :: (identifier BinaryReader))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier br) = (local_variable_initializer (null_literal null)))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (element_access (primary_expression (identifier x)) [ (argument_list (argument (argument_name (identifier i) :) (argument_value (literal 1)))) ])) = (expression (literal 3)))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (element_access (primary_expression (identifier x)) [ (argument_list (argument (argument_name (identifier i) :) (argument_value (literal 1))) , (argument (argument_name (identifier j) :) (argument_value (literal 5)))) ])) = (expression (literal "str")))) ;))) })))) (class_member_declaration (struct_declaration struct (identifier Point) (struct_body { (struct_member_declaration (field_declaration (field_modifier public) (type (integral_type int)) (variable_declarators (identifier X)) ;)) (struct_member_declaration (field_declaration (field_modifier public) (type (integral_type int)) (variable_declarators (identifier Y)) ;)) (struct_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier ThisAccess)) ( )) (method_body (block { (statement_list (expression_statement (statement_expression (simple_assignment (unary_expression (this_access this)) = (expression (this_access this)))) ;)) })))) }))) }))) })))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-P/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-P/Reference/sample.tree.svg index 1791541ff..3b823644e 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-P/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-P/Reference/sample.tree.svg @@ -1,3130 +1,3085 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - + + + + + - - - + + + - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -primary_expression + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +statement_expression - - -value_type + + +simple_assignment - - -statement_expression + + +i - - -literal + + +unary_expression - - -: + + +compound_assignment - - -integral_type + + +1 - - -unary_expression + + +namespace_member_declaration - - + + identifier - - -explicitly_typed_local_variable_declaration - - - -struct_member_declaration + + += - - -assignment_operator + + +; - - -unsafe_statement + + +relational_expression - - -conditional_and_expression + + +identifier - - -expression_statement + + +<<= - - -assignment_operator + + +declaration_statement - - -assignment_operator + + +explicitly_typed_local_variable_declarator - - -local_variable_initializer + + += - - -type + + +literal - - + + identifier - - -= + + +X - - -expression_statement + + +0 - - -local_variable_declaration + + +primary_expression - - -i + + +object - - -anonymous_function_signature + + +, - - -; + + +primary_expression - - -assignment + + +struct_member_declaration - - -unary_expression + + +; - - -= + + +> - - -qualified_alias_member + + +; - - -identifier + + +XmlComments - - -identifier + + +variable_declarators - - -statement + + +addressof_expression - - -declaration_statement + + +struct_member_declaration - - -statement_expression + + +&& - - -false + + +i - - -x + + +inclusive_or_expression - - -statement_expression + + += - - -argument_list + + +compilation_unit - - -explicitly_typed_local_variable_declarator + + +unary_expression - - -additive_expression + + +; - - -expression_statement + + +explicitly_typed_local_variable_declaration - - -argument_list + + +identifier - - -UndocumentedKeywords + + +conditional_and_expression - - -/= + + +unsafe - - -local_variable_initializer + + +i - - -type + + +simple_assignment - - -, + + +statement - - -( + + +compound_assignment_operator - - -identifier + + +expression - - -explicitly_typed_local_variable_declarator + + +unary_expression - - -statement_expression + + +additive_expression - - -identifier + + +{ - - -assignment + + +explicitly_typed_local_variable_declarators - - -public + + +unary_expression - - -expression_statement + + +[ - - ->= + + +statement - - -; + + +expression - - -method_header + + +null - - -conditional_and_expression + + +conditional_expression - - -local_variable_declaration + + +] - - -assignment + + +statement - - + + ; - - -point + + +class_member_declaration - - -local_variable_initializer + + +{ - - -conditional_and_expression + + +identifier - - -statement + + +boolean_literal - - -assignment_operator + + +statement_expression - - -explicitly_typed_local_variable_declarators + + += - - -nullable_type_annotation + + +>= - - -statement + + +compound_assignment_operator - - -conditional_and_expression + + +! - - -declaration_statement + + +identifier - - -; + + +expression_statement - - -0 + + +statement - - -identifier + + +literal - - -conditional_or_expression + + +public - - -statement + + +explicitly_typed_local_variable_declaration - - -i + + +: - - -null_literal + + +statement - - -= + + +argument_name - - -identifier + + +statement_expression + + + +member_name - - -assignment + + +boolean_literal - - -{ + + +method_modifiers - - + + i - - -method_modifiers + + +primary_expression - - -|| + + +argument - - -i + + +struct_member_declaration - - -statement_expression + + +argument_value + + + +x - - + + i - - -assignment_operator + + +++ - - -statement + + +identifier - - -|= + + +conditional_or_expression - - -qualified_identifier + + +relational_expression - - -; + + +expression_statement - - -unary_expression + + +nullable_value_type - - -relational_expression + + +i - - -identifier + + +type - - -1 + + +} - - -&& + + +relational_expression - - -assignment + + +i - - -> + + +; - - + + +br + + + +simple_assignment + + + ; - - -b + + +statement - - -identifier + + +post_increment_expression - - -= + + +equality_expression - - -} + + +non_nullable_value_type - - -i + + +qualified_alias_member - - -x + + +unary_expression - - -expression_statement + + +statement_list - - -3 + + +expression_statement - - -class_declaration + + +expression_statement - - + + identifier - - -; - - - + + unary_expression - - -type + + +argument_list - - -null_coalescing_expression + + +compound_assignment - - -argument_name + + +compound_assignment_operator - - -prog + + +identifier - - -= + + +compound_assignment_operator + + + +int - - + + local_variable_initializer - - -compilation_unit + + +; - - + + literal - - --= + + +compound_assignment - - -statement_expression + + +i - - -identifier + + +explicitly_typed_local_variable_declarators - - -Comments + + +lambda_expression - - -statement + + +; - - + + identifier - - -assignment - - - -explicitly_typed_local_variable_declarators + + +ref_method_modifier - - -j + + +unary_expression - - -&& + + +argument_list - - -= + + +statement_expression - - -i + + +contextual_keyword - - -{ + + +class - - + + identifier - - -expression_statement + + +identifier - - + + identifier - - -relational_expression + + +conditional_and_expression - - -unary_expression + + +identifier - - -expression + + +void + + + +literal - - + + +identifier + + + i - - + + literal - - -assignment + + +identifier - - + + local_variable_declaration - - -Point + + +statement_expression - - -; + + +unsafe_statement + + + +anonymous_function_signature - - -assignment + + +>= - - -& + + +local_variable_declaration - - -boolean_literal + + +; - - -declaration_statement + + += - - -namespace_declaration + + +explicitly_typed_local_variable_declaration - - -statement_expression + + +identifier - - -primary_expression + + +& - - -assignment + + +namespace_declaration - - + + i - - -} + + +expression_statement - - -null + + +-- - - -literal + + +x - - -] + + +&& - - -statement + + +explicitly_typed_local_variable_declarator - - -identifier + + +prog - - -b + + +identifier - - -assignment_operator + + +statement - - -; + + +pointer_member_access - - -expression_statement + + +UndocumentedKeywords - - -statement_list + + +; - - -assignment_operator + + +true - - -primary_expression + + +unary_expression - - -explicitly_typed_local_variable_declaration + + +explicitly_typed_local_variable_declarators - - -== + + +i - - -identifier + + +field_modifier - - -unary_expression + + +expression_statement - - -class + + +argument_name - - -identifier + + +; - - -assignment + + +nullable_type_annotation - - + + statement_expression - - -pointer_member_access - - - -identifier - - - -i - - - -expression_statement + + +"str" - - -i + + +this_access - - -argument_value + + +unary_expression - - -assignment + + +expression - - + + statement - - -i + + +expression_statement - - -i + + +type - - -relational_expression + + +class_member_declaration - - -assignment + + +; - - + + identifier - - -statement + + +: - - -contextual_keyword + + +=> - - + + identifier - - -unary_expression + + +local_variable_initializer - - -unary_expression + + +inclusive_or_expression - - -block + + +statement_expression - - -= + + +method_modifiers - - -void + + +statement_expression - - -expression_statement + + +simple_assignment - - -i + + +Point - - -declaration_statement + + +expression_statement - - + + identifier - - -< + + +struct_declaration - - -identifier + + +double - - -5 + + +statement - - -true + + +p - - -explicitly_typed_local_variable_declarator + + +argument - - -addressof_expression + + +statement - - + + unary_expression - - -: + + +p - - -argument + + +explicitly_typed_local_variable_declarators - - -argument_value + + +primary_expression - - -struct_declaration + + +i - - -expression + + +identifier - - -field_modifier + + +local_variable_initializer - - -i + + +10 - - -shift_expression + + +simple_assignment - - -%= + + +statement - - -literal + + +Point - - -> + + +this_access - - -; + + +i - - -ref_method_modifier + + +statement_expression - - + + +simple_assignment + + + statement - - -explicitly_typed_local_variable_declaration + + +identifier - - -local_variable_initializer + + +explicitly_typed_local_variable_declarator - - -; + + += - - -; + + += - - -identifier + + += - - -declaration_statement + + +statement_expression + + + +ref_method_modifier + + + +qualified_identifier - - + + type - - + + +expression + + + +) + + + ; - - + + int - - + + identifier - - + + identifier - - -expression_statement - - - -relational_expression + + +local_variable_declaration - - -[ + + +literal - - -= + + +int - - -d + + +compound_assignment_operator - - -identifier + + +block - - -expression + + +i - - -5.0 + + +statement - - + + ; - - -i - - - -i + + +local_variable_declaration - - + + statement - - -b - - - -lambda_expression + + +-> - - -i + + +5 - - -additive_expression + + +expression - - -&& + + +; - - -identifier + + +5.0 - - -integral_type + + +value_type - - -statement_expression + + +unary_expression - - -identifier + + +statement - - -x + + +expression_statement - - -statement_expression + + +-= - - + + identifier - - -+= + + +statement - - -+ + + +identifier - - -= + + +explicitly_typed_local_variable_declaration - - -expression + + +&& - - -expression_statement + + +shift_expression - - -) + + +namespace - - -statement_expression + + +compound_assignment - - -identifier + + +; - - + + i - - -^= + + +point - - -identifier + + +:: - - -; + + +literal - - -5 + + +3 - - -expression + + +i - - -1 + + +; - - -relational_expression + + +j - - -inclusive_or_expression + + +i - - -identifier + + +conditional_and_expression - - -unary_expression - - - -identifier + + +} - - -expression + + +} - - -b + + +this - - -return_type + + +method_modifier - - -post_decrement_expression + + +type - - -i + + +argument_value - - -= + + +statement_expression - - -relational_expression + + +compound_assignment - - -argument_name + + +type - - -=> + + +this - - -IO + + +i - - -method_declaration + + +identifier - - + + ; - - -post_increment_expression - - - -block - - - -unsafe - - - -primary_expression + + +local_variable_initializer - - + + identifier - - -assignment_operator - - - -assignment_operator + + +== - - -statement_expression + + +unary_expression - - -statement + + +BinaryReader - - --- + + +identifier - - + + explicitly_typed_local_variable_declarators - - -namespace_body + + +relational_expression - - -boolean_literal + + +i - - -assignment_operator + + +integral_type - - -{ + + +? - - -type + + +statement - - -member_name + + +explicitly_typed_local_variable_declarators - - -floating_point_type + + +relational_expression - - -i + + +statement_expression - - -literal + + +conditional_and_expression - - -= + + +relational_expression - - -expression_statement + + +expression - - -identifier + + +x - - -= + + +s - - + + identifier - - -Point - - - -element_access - - - -struct_body - - - -Y - - - -assignment_operator + + +%= - - + + statement_expression - - -class_type - - - -unary_expression + + +compound_assignment_operator - - -; + + +method_header - - -identifier + + +expression_statement - - -; + + +b - - -= + + +expression_statement - - -method_body + + +anonymous_function_body - - -identifier + + +compound_assignment - - + + ; - - -type + + +{ - - -explicitly_typed_local_variable_declarator + + +void - - -identifier + + +field_declaration - - -unary_expression + + +integral_type - - -unary_expression + + +identifier - - -unary_expression + + +floating_point_type - - -yield + + +inclusive_or_expression - - -statement_expression + + +field_modifier - - -XmlComments + + +simple_assignment - - -statement + + +additive_expression - - -i + + +compound_assignment - - -expression + + +statement_expression - - -. + + +|| - - -shift_expression + + +integral_type - - + + identifier - - -expression_statement - - - -expression - - - -} + + +identifier - - -i + + +statement - - -int + + +unary_expression - - -statement + + +expression - - -non_nullable_value_type + + +class_body - - -statement + + +pointer_type - - -= + + +argument_name - - -10 + + +[ - - -expression + + +identifier - - -conditional_and_expression + + +identifier - - -explicitly_typed_local_variable_declarators + + +expression_statement - - -assignment + + +identifier - - + + i - - -conditional_or_expression + + +&= - - + + expression - - -statement + + +element_access - - -statement + + +compound_assignment - - -<<= + + +; - - -identifier + + +!= - - -i + + += - - + + identifier - - -true - - - -expression_statement - - - -explicitly_typed_local_variable_declarators - - - -logical_negation_operator + + +identifier - - -this_access + + +expression - - -field_declaration + + +compound_assignment_operator - - -statement + + +unary_expression - - -: + + +declaration_statement - - -assignment_operator + + +/= - - -local_variable_declaration + + +declaration_statement - - + + explicitly_typed_local_variable_declarator - - -? - - - -expression_statement - - - -literal + + +type - - + + identifier - - -expression - - - -shift_expression + + +variable_declarators - - -local_variable_declaration + + +i - - -anonymous_function_body + + +statement - - -statement_list + + ++= - - + + identifier - - -p - - - -explicitly_typed_local_variable_declaration - - - + + identifier - - -.3 + + +local_variable_declaration - - -statement_list + + +declaration_statement - - -assignment_operator + + +identifier - - -variable_declarators + + += - - -type + + +logical_negation_operator - - -local_variable_initializer + + +primary_expression - - -method_header + + +statement_expression - - -expression + + +; - - -&& + + +statement_expression - - + + identifier - - -void - - - -true - - - + + i - - -explicitly_typed_local_variable_declarators + + +null_literal - - -object + + +local_variable_declaration + + + ++ - - + + identifier - - -statement + + +literal - - -i + + +; - - -expression + + +expression_statement - - -unary_expression + + +declaration_statement - - -unary_expression + + +statement_expression - - -method_modifiers + + +x - - -"str" + + +identifier - - -!= + + +class_declaration - - + + { - - -assignment_operator - - - -ref_method_modifier - - - -relational_expression + + +literal - - -assignment_operator + + +null_coalescing_expression - - + + expression_statement - - -identifier - - - -{ - - - -statement - - - -i + + +d - - -{ + + +declaration_statement - - -BinaryReader + + +; - - -identifier + + +< - - + + i - - -namespace_member_declaration + + +false - - -method_modifier + + +multiplicative_expression - - -identifier + + +i - - -( + + +statement - - -. + + +statement_list - - -expression + + +*= - - -identifier + + +public - - -struct_member_declaration + + +relational_expression - - -unary_expression + + += - - -public + + +: - - -expression + + +relational_expression - - -; + + +local_variable_initializer - - -statement_expression + + +statement - - -~ + + += - - -1 + + +expression_statement - - -= + + +identifier - - -expression + + +b - - -argument + + +relational_expression - - -expression_statement + + +identifier - - -namespace + + +identifier - - -; + + +x - - -partial + + +simple_assignment - - -boolean_literal + + += - - -conditional_and_expression + + +explicitly_typed_local_variable_declarator - - -unary_expression + + +explicitly_typed_local_variable_declarators - - -assignment + + +relational_expression - - -&& + + +^= - - -statement_expression + + +class_type - - + + expression - - -identifier + + +public - - ->= + + +identifier - - -argument_name + + +public - - -* + + +argument - - + + declaration_statement - - -ii - - - + + identifier - - + + identifier - - -expression_statement + + +namespace_body - - -integral_type + + +compound_assignment_operator - - -statement + + +b - - -identifier + + +method_declaration - - + + +expression + + + identifier - - -; + + +&& - - -field_modifier + + +conditional_and_expression - - -; + + +compound_assignment_operator - - -explicitly_typed_local_variable_declarator + + +struct - - -equality_expression + + +statement - - -assignment_operator + + +boolean_literal - - -primary_expression + + +statement - - -expression_statement + + +b + + + +explicitly_typed_local_variable_declaration - - + + } - - -literal + + +( - - -assignment + + +yield - - -identifier + + +conditional_and_expression - - -relational_expression + + +: - - + + ; - - -conditional_and_expression + + +unary_expression - - -i + + +struct_body - - -i + + +statement - - -; + + +block - - + + expression - - -struct + + +i + + + +b + + + +identifier + + + +conditional_or_expression + + + += + + + +method_header - - -identifier + + +) - - --> + + +literal - - -assignment + + +boolean_literal - - -statement_expression + + +1 - - -variable_declarators + + +Point - - -} + + +expression_statement - - -int + + +expression_statement - - + + i - - -p + + +{ - - -s + + +1 - - -x + + +return_type - - -literal + + +true - - -i + + +ii - - -double + + +local_variable_declaration - - -; + + +inclusive_or_expression - - -this_access + + +] - - -inclusive_or_expression + + +return_type - - + + identifier - - -statement_expression + + +i - - -integral_type + + +i - - -pointer_type + + +conditional_and_expression - - -relational_expression + + +type + + + +method_body - - + + unary_expression - - -b + + +equality_expression - - -! + + +explicitly_typed_local_variable_declaration - - -f + + +method_declaration - - -identifier + + +equality_expression - - -field_declaration + + +statement_expression - - -statement + + +5 - - -; + + +compound_assignment_operator - - -; + + +i - - -explicitly_typed_local_variable_declaration + + +i - - + + } - - -expression + + +~ - - -argument_value + + +identifier - - -struct_member_declaration + + +shift_expression - - -X + + +identifier - - -statement_expression + + +? - - -assignment_operator + + +statement - - + + identifier - - -unary_expression + + +explicitly_typed_local_variable_declarator - - -inclusive_or_expression + + +* + + + +( - - + + i - - + + identifier - - -unary_expression + + +identifier - - -public + + +local_variable_initializer - - -this + + +; - - -expression + + +compound_assignment - - + + right_shift_assignment - - -nullable_value_type + + += - - -statement + + +> - - -ThisAccess + + +integral_type - - -statement_expression + + +expression - - -return_type + + +identifier - - -class_body + + +{ - - -&= + + +statement - - + + i - - -class_member_declaration + + +post_decrement_expression - - -explicitly_typed_local_variable_declaration + + +conditional_and_expression - - -type + + +expression - - -member_name + + +unary_expression - - -explicitly_typed_local_variable_declaration + + +unary_expression - - -i + + +identifier - - + + +compound_assignment + + + +expression + + + identifier - - + + +expression_statement + + + i - - -? + + +f - - -relational_expression + + +expression_statement - - + + unary_expression - - -explicitly_typed_local_variable_declarators + + +element_access - - + + identifier - - -unary_expression - - - -conditional_and_expression + + +true - - -identifier + + +equality_expression - - -declaration_statement + + +i - - -statement + + +; - - + + identifier - - -1 + + +member_name - - -argument + + +conditional_and_expression - - -inclusive_or_expression + + +statement_list - - -literal + + +simple_assignment - - -boolean_literal + + +i - - -assignment + + +field_declaration - - -identifier + + +i - - -assignment + + +int - - -) + + +statement - - -; + + +expression - - -expression_statement + + +Comments - - -statement_expression + + +literal - - -assignment_operator + + +ThisAccess - - -expression_statement + + +&& - - -identifier + + +block - - -br + + +expression_statement - - -type + + +IO - - + + identifier - - -[ + + +method - - + + statement - - -++ + + +type - - -element_access + + +.3 - - -shift_expression + + +identifier - - -unary_expression + + +expression - - -equality_expression + + +literal - - -<= + + +identifier - - -expression + + +argument_value - - -statement + + +Y - - -Point + + +i - - -equality_expression + + +method_body - - -literal + + +; - - -method + + +statement_expression - - -assignment_operator + + +type - - -method_body + + +} - - -local_variable_declaration + + +1 - - -:: + + +partial - - -multiplicative_expression + + +shift_expression - - -method_declaration + + +statement_expression - - -point + + +; - - -: + + +|= - - -this + + +<= - - -block + + +unary_expression - - -equality_expression + + +explicitly_typed_local_variable_declaration - - -; + + +statement_expression - - -conditional_expression + + +. - - -statement + + +unary_expression - - -inclusive_or_expression + + +identifier - - -x + + +expression - - -statement + + +identifier - - -literal + + +expression - - -assignment + + +. - - -class_member_declaration + + +shift_expression - - -public + + +expression_statement - - -int + + +expression - - -local_variable_declaration + + +; - - -] + + +unary_expression - - -conditional_and_expression + + +expression - - -*= + + +unary_expression + + + +inclusive_or_expression + + + +point + + + +unary_expression \ No newline at end of file diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-S/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-S/Reference/sample.gruntree.red.txt index b9293b641..98c54317e 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-S/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-S/Reference/sample.gruntree.red.txt @@ -174,7 +174,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -182,10 +182,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ s ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -313,7 +310,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -321,10 +318,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ s ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -434,7 +428,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -442,10 +436,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ s ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -488,7 +479,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -496,10 +487,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ s ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-S/Reference/sample.stderr.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-S/Reference/sample.stderr.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-S/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-S/Reference/sample.tree.red.txt index 5e87f7c66..3c5ee2ab7 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-S/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-S/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier Comments) . (identifier XmlComments) . (identifier UndocumentedKeywords)) (namespace_body { (namespace_member_declaration (class_declaration class (identifier CSharp6Features) (class_body { (class_member_declaration (method_declaration (method_modifiers (method_modifier async)) (return_type void) (method_header (member_name (identifier Test)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (class_type string)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier s) = (local_variable_initializer (interpolated_regular_string_expression 〔$"〕 { (regular_interpolation (expression (member_access (primary_expression (identifier p)) . (identifier Name))) , (interpolation_minimum_width (literal 20))) } 〔 is 〕 { (regular_interpolation (expression (member_access (primary_expression (identifier p)) . (identifier Age))) 〔:D3〕) } 〔 year{{s}} old #〕 〔"〕)))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier s)) (assignment_operator =) (expression (interpolated_regular_string_expression 〔$"〕 { (regular_interpolation (member_access (primary_expression (identifier p)) . (identifier Name))) } 〔 is \"〕 { (regular_interpolation (member_access (primary_expression (identifier p)) . (identifier Age))) } 〔 year〕 { (regular_interpolation (parenthesized_expression ( (expression (conditional_expression (null_coalescing_expression (equality_expression (equality_expression (member_access (primary_expression (identifier p)) . (identifier Age))) == (relational_expression (literal 1)))) ? (expression (literal "")) : (expression (literal "s")))) ))) } 〔 old〕 〔"〕)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier s)) (assignment_operator =) (expression (interpolated_regular_string_expression 〔$"〕 { (regular_interpolation (parenthesized_expression ( (expression (conditional_expression (null_coalescing_expression (equality_expression (equality_expression (member_access (primary_expression (identifier p)) . (identifier Age))) == (relational_expression (literal 2)))) ? (expression (interpolated_regular_string_expression 〔$"〕 { (regular_interpolation (object_creation_expression new (type (identifier Person)) (object_or_collection_initializer (object_initializer { })))) } 〔"〕)) : (expression (literal "")))) ))) } 〔"〕)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier s)) (assignment_operator =) (expression (interpolated_verbatim_string_expression 〔$@"〕 〔\〕 { (verbatim_interpolation (member_access (primary_expression (identifier p)) . (identifier Name))) } 〔\n ""\〕 〔"〕)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier s)) (assignment_operator =) (expression (interpolated_regular_string_expression 〔$"〕 〔Color [ R=〕 { (regular_interpolation (expression (invocation_expression (primary_expression (identifier func)) ( (argument_list (argument (argument_name (identifier b) :) (argument_value (literal 3)))) ))) 〔:#0.##〕) } 〔, G=〕 { (regular_interpolation (expression (identifier G)) 〔:#0.##〕) } 〔, B=〕 { (regular_interpolation (expression (identifier B)) 〔:#0.##〕) } 〔, A=〕 { (regular_interpolation (expression (identifier A)) 〔:#0.##〕) } 〔 ]〕 〔"〕)))) ;)) (statement (if_statement if ( (boolean_expression (equality_expression (equality_expression (identifier x)) == (relational_expression (null_literal null)))) ) (embedded_statement (throw_statement throw (expression (object_creation_expression new (type (identifier ArgumentNullException)) ( (argument_list (invocation_expression (primary_expression (contextual_keyword nameof)) ( (argument_list (identifier x)) ))) ))) ;)))) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier WriteLine)) ( (argument_list (invocation_expression (primary_expression (contextual_keyword nameof)) ( (argument_list (member_access (primary_expression (member_access (primary_expression (identifier person)) . (identifier Address))) . (identifier ZipCode))) ))) ))) ;))) })))) }))) })))) +(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier Comments) . (identifier XmlComments) . (identifier UndocumentedKeywords)) (namespace_body { (namespace_member_declaration (class_declaration class (identifier CSharp6Features) (class_body { (class_member_declaration (method_declaration (method_modifiers (method_modifier async)) (return_type void) (method_header (member_name (identifier Test)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (class_type string)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier s) = (local_variable_initializer (interpolated_regular_string_expression 〔$"〕 { (regular_interpolation (expression (member_access (primary_expression (identifier p)) . (identifier Name))) , (interpolation_minimum_width (literal 20))) } 〔 is 〕 { (regular_interpolation (expression (member_access (primary_expression (identifier p)) . (identifier Age))) 〔:D3〕) } 〔 year{{s}} old #〕 〔"〕)))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier s)) = (expression (interpolated_regular_string_expression 〔$"〕 { (regular_interpolation (member_access (primary_expression (identifier p)) . (identifier Name))) } 〔 is \"〕 { (regular_interpolation (member_access (primary_expression (identifier p)) . (identifier Age))) } 〔 year〕 { (regular_interpolation (parenthesized_expression ( (expression (conditional_expression (null_coalescing_expression (equality_expression (equality_expression (member_access (primary_expression (identifier p)) . (identifier Age))) == (relational_expression (literal 1)))) ? (expression (literal "")) : (expression (literal "s")))) ))) } 〔 old〕 〔"〕)))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier s)) = (expression (interpolated_regular_string_expression 〔$"〕 { (regular_interpolation (parenthesized_expression ( (expression (conditional_expression (null_coalescing_expression (equality_expression (equality_expression (member_access (primary_expression (identifier p)) . (identifier Age))) == (relational_expression (literal 2)))) ? (expression (interpolated_regular_string_expression 〔$"〕 { (regular_interpolation (object_creation_expression new (type (identifier Person)) (object_or_collection_initializer (object_initializer { })))) } 〔"〕)) : (expression (literal "")))) ))) } 〔"〕)))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier s)) = (expression (interpolated_verbatim_string_expression 〔$@"〕 〔\〕 { (verbatim_interpolation (member_access (primary_expression (identifier p)) . (identifier Name))) } 〔\n ""\〕 〔"〕)))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier s)) = (expression (interpolated_regular_string_expression 〔$"〕 〔Color [ R=〕 { (regular_interpolation (expression (invocation_expression (primary_expression (identifier func)) ( (argument_list (argument (argument_name (identifier b) :) (argument_value (literal 3)))) ))) 〔:#0.##〕) } 〔, G=〕 { (regular_interpolation (expression (identifier G)) 〔:#0.##〕) } 〔, B=〕 { (regular_interpolation (expression (identifier B)) 〔:#0.##〕) } 〔, A=〕 { (regular_interpolation (expression (identifier A)) 〔:#0.##〕) } 〔 ]〕 〔"〕)))) ;)) (statement (if_statement if ( (boolean_expression (equality_expression (equality_expression (identifier x)) == (relational_expression (null_literal null)))) ) (embedded_statement (throw_statement throw (expression (object_creation_expression new (type (identifier ArgumentNullException)) ( (argument_list (invocation_expression (primary_expression (contextual_keyword nameof)) ( (argument_list (identifier x)) ))) ))) ;)))) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier WriteLine)) ( (argument_list (invocation_expression (primary_expression (contextual_keyword nameof)) ( (argument_list (member_access (primary_expression (member_access (primary_expression (identifier person)) . (identifier Address))) . (identifier ZipCode))) ))) ))) ;))) })))) }))) })))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-S/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-S/Reference/sample.tree.svg index 63d78f177..b80f0e202 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-S/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-S/Reference/sample.tree.svg @@ -1,4 +1,4 @@ - + @@ -89,8 +89,7 @@ - - + @@ -149,16 +148,15 @@ - - - - - - - - - - + + + + + + + + + @@ -205,7 +203,7 @@ - + @@ -213,8 +211,7 @@ - - + @@ -239,8 +236,7 @@ - - + @@ -361,1460 +357,1444 @@ - - -p - - - -} - - - -) + + +relational_expression - - -class_member_declaration + + +identifier - - -{ + + +null_coalescing_expression - - -person + + +identifier - - + + member_access - - -statement + + +primary_expression - - -{ + + +} - - -argument_list + + +nameof - - -〔$"〕 + + +expression - - -object_or_collection_initializer + + +explicitly_typed_local_variable_declaration - - -identifier + + +: - - + + +class_declaration + + + p - - -equality_expression + + +invocation_expression - - -1 + + +expression - - -identifier + + +} - - -unary_expression + + +async - - -throw + + +s - - -x + + +string - - -{ + + +WriteLine - - -statement + + +person - - -argument_value + + +primary_expression - - -literal + + +? - - -class_body + + +( - - -equality_expression + + +member_name - - -parenthesized_expression + + +〔$"〕 - - + + +{ + + + +regular_interpolation + + + +argument + + + +) + + + . - - -expression_statement + + += - - + + identifier - - -invocation_expression + + +( - - -ZipCode + + +} - - -namespace + + +A - - -member_access + + +Age - - -statement_expression + + +parenthesized_expression - - -) + + +p - - -block + + +"" - - -? + + +} - - -〔·year〕 + + +argument_list - - -declaration_statement + + +void - - -= + + +〔Color·[·R=〕 - - -regular_interpolation + + +identifier - - -explicitly_typed_local_variable_declaration + + +== - - -embedded_statement + + +identifier - - -method_header + + +interpolated_regular_string_expression - - -regular_interpolation + + +Name - - -20 + + +? - - -〔,·B=〕 + + +statement - - -; + + +type - - -〔"〕 + + +simple_assignment throw_statement - - -assignment_operator + + +} + + + +identifier - - -invocation_expression + + +identifier - - -type + + +object_creation_expression - - -expression + + +expression_statement - - -assignment + + +; - - -regular_interpolation + + +unary_expression - - -〔$"〕 + + +〔:#0.##〕 - - -new + + +Test - - -Comments + + +. - - -〔·is·\"〕 + + +identifier return_type - - -nameof - - - -local_variable_initializer - - - -regular_interpolation + + +literal - - -. + + += primary_expression - - -{ - - - -null - - - -expression - - - -= - - - -identifier - - - -explicitly_typed_local_variable_declarator - - - + + identifier - - -null_coalescing_expression - - - -primary_expression - - - -"" - - - -ArgumentNullException + + +〔"〕 - - -namespace_declaration + + +member_access - - -statement + + +〔·is·\"〕 - - -Age + + +expression - - -〔·year{{s}}·old·#〕 + + +identifier - - -= + + +explicitly_typed_local_variable_declarators - - -identifier + + +) - - -regular_interpolation + + +equality_expression - - -} + + +( - - -relational_expression + + +( - - -. + + +; - - -func + + +declaration_statement - - -CSharp6Features + + +{ - - -} + + +. - - -? + + +identifier - - -〔$"〕 + + +identifier - - -assignment + + +qualified_identifier - - -contextual_keyword + + +regular_interpolation identifier - - + + +} + + + identifier - - + + regular_interpolation - - -expression - - - -) + + +identifier - - -expression_statement + + +} - - -〔$"〕 + + +statement - - -member_access + + +method_modifiers - - -statement_expression + + +} - - -〔$@"〕 + + +G - - -} + + +. - - -Name + + +type - - -} + + +expression_statement - - -s + + +namespace_declaration - - -local_variable_declaration + + +( - - + + ) - - -Age + + +} - - -primary_expression + + +; - - -identifier + + +literal - - -〔"〕 + + +compilation_unit - - -parenthesized_expression + + +{ - - -} + + +member_access - - -〔"〕 + + +expression - - + + +; + + + +. + + + +〔$"〕 + + + identifier - - -regular_interpolation + + +{ - - -〔,·A=〕 + + +s - - -〔·]〕 + + +interpolated_verbatim_string_expression - - -Person + + +Name - - -== + + +expression - - -class + + +argument_list - - -null_coalescing_expression + + +regular_interpolation - - -} + + += - - -s + + +( - - -assignment_operator + + +unary_expression - - -p + + +block - - -expression_statement + + +argument_name - - -. + + +〔·year{{s}}·old·#〕 - - -argument_list + + +〔:D3〕 - - -〔·is·〕 + + +statement_expression - - -( + + +expression - - -. + + +: - - -. + + +primary_expression - - -〔$"〕 + + +identifier - - + + expression - - -literal + + +) - - + + ; - - -{ + + +unary_expression - - -s + + +member_access - - -argument_list + + +conditional_expression - - -member_access + + +expression - - + + +simple_assignment + + + p - - -; + + +simple_assignment - - -== + + +statement - - -{ + + += - - -〔:#0.##〕 + + +expression_statement - - -object_initializer + + +func - - -} + + +identifier - - -( + + +〔"〕 - - -WriteLine + + +unary_expression - - + + +method_modifier + + + +Comments + + + } - - -namespace_body + + +primary_expression - - -argument_list + + +CSharp6Features - - -invocation_expression + + +interpolated_regular_string_expression - - -identifier + + +interpolation_minimum_width + + + +. expression - - -} - - - -statement_expression + + +primary_expression - - -argument_name + + +throw - - -x + + +〔$"〕 - - -type + + +literal - - -interpolated_regular_string_expression + + +) - - -UndocumentedKeywords + + +expression - - -method_declaration + + +class_member_declaration - - -equality_expression + + +〔:#0.##〕 - - + + primary_expression - - -identifier + + +20 - - -if_statement + + +{ - - -. + + +p - - -identifier + + +statement_list - - -unary_expression + + +new + + + +regular_interpolation + + + +boolean_expression + + + +contextual_keyword + + + +〔"〕 + + + +method_header + + + +equality_expression - - -{ + + +( - - -identifier + + +1 - - -〔:#0.##〕 + + +} - - -object_creation_expression + + +argument_value - - -unary_expression + + +statement - - -identifier + + +{ - - -method_modifier + + +primary_expression - - -statement + + +namespace_member_declaration - - -〔"〕 + + +} - - -expression + + +( - - -expression + + +〔"〕 - - -〔·old〕 + + +interpolated_regular_string_expression - - -class_declaration + + +〔:#0.##〕 - - -primary_expression + + +s - - -} + + +. - - -"s" + + +== - - -if + + +) - - -identifier + + +type - - -{ + + +member_access - - -interpolated_verbatim_string_expression + + +equality_expression - - -primary_expression + + +} - - -p + + +== - - -XmlComments + + +identifier identifier - - -object_creation_expression + + +{ - - -regular_interpolation + + +Person - - -literal + + +{ - - -primary_expression + + +local_variable_declaration - - + + member_access - - -( + + +; - - -) + + +verbatim_interpolation { - - -unary_expression - - - -regular_interpolation - - - -assignment - - - -( - - - -argument_list - - - -conditional_expression + + +member_access - - -B + + +. - - -class_type + + +〔$@"〕 - - -identifier + + +〔\〕 - - -〔"〕 + + +equality_expression - - -new + + +statement_expression - - -type + + +prog - - -primary_expression + + +argument_list - - -, + + +statement - - -〔:#0.##〕 + + +{ - - -explicitly_typed_local_variable_declarators + + +regular_interpolation - - -( + + +identifier - - -primary_expression + + +x - - -Age + + +regular_interpolation - - -method_modifiers + + +2 - - -; + + +p - - -〔:D3〕 + + +"" - - -identifier + + +regular_interpolation - - -) + + +expression - - -G + + +literal - - -p + + +identifier - - -prog + + +identifier - - -boolean_expression + + +relational_expression - - -member_name + + +identifier - - -primary_expression + + +nameof - - -: + + +Address - - -〔\〕 + + +contextual_keyword - - -= + + +expression_statement statement_expression - - + + +argument_list + + + +primary_expression + + + { - - -expression + + +interpolated_regular_string_expression - - -identifier + + +expression_statement - - -assignment + + +3 - - -null_literal + + +p - - -( + + +class + + + +regular_interpolation + + + +identifier { - - -= + + +identifier - - -interpolated_regular_string_expression + + +} - - -statement + + +member_access - - + + +) + + + +Age + + + +null_literal + + + primary_expression - - -interpolated_regular_string_expression + + +object_initializer - - -identifier + + +( - - -) + + +Age - - -. + + +statement_expression - - -expression_statement + + +equality_expression - - -identifier + + +UndocumentedKeywords - - -primary_expression + + +namespace - - -} + + +{ - - -equality_expression + + +Age - - -identifier + + +〔,·A=〕 - - -"" + + +{ - - -Name + + +conditional_expression - - -Test + + +〔,·G=〕 - - -expression + + +〔·is·〕 - - -} + + +primary_expression - - -member_access + + +Name - - -{ + + +identifier - - -〔Color·[·R=〕 + + +literal - - -expression + + +identifier - - -expression + + +identifier - - + + } - - + + +) + + + +"s" + + + identifier - - -; + + +identifier - - -regular_interpolation + + +invocation_expression - - -( + + +object_creation_expression - - -interpolated_regular_string_expression + + +member_access literal - - -; - - - -== - - - -A + + +simple_assignment - - + + expression - - -( + + +〔$"〕 - - + + +argument_list + + + expression + + +literal + method_body - - -string - - - -: - - - -} + + +new - - -expression + + +invocation_expression - - -literal + + +null - - -equality_expression + + +〔·]〕 - - -identifier + + +namespace_body - - -statement_expression + + +explicitly_typed_local_variable_declarator - - -{ + + +s - - -( + + +if_statement - - -. + + +} - - -member_access + + +s - - -} + + +: - - -identifier + + +embedded_statement - - + + identifier - - -s + + +{ - - -assignment_operator + + +primary_expression - - -Address + + +; 〔\n···································""\〕 - - + + +class_type + + + +〔$"〕 + + + +ArgumentNullException + + + +〔·old〕 + + + identifier - - -primary_expression + + +〔"〕 - - -async + + +regular_interpolation - - -Age + + +expression + + + +〔,·B=〕 + + + +B - - -〔"〕 + + +XmlComments - - -literal + + +{ - - -qualified_identifier + + +〔:#0.##〕 - - -conditional_expression + + +primary_expression - - -identifier + + +parenthesized_expression - - -regular_interpolation + + +local_variable_initializer - - + + identifier - - -void - p - - -assignment_operator - - - -equality_expression - - - -b + + +if - - -〔:#0.##〕 + + +statement - - -verbatim_interpolation + + +, - - -nameof + + +regular_interpolation - - -: + + +method_declaration - - -identifier + + +interpolated_regular_string_expression - - -member_access + + +equality_expression - - + + expression - - + + identifier - - + + expression invocation_expression - - -identifier - - - -relational_expression - - - -s - - - -{ + + +) - - -expression_statement + + +. - - -literal + + += - - -2 + + +statement - - -) + + +object_or_collection_initializer - - + + . - - -; - - - + + . - - -3 + + +〔"〕 - - + + identifier - - -statement_list - - - -) + + +x - - + + identifier - - -interpolation_minimum_width - - - -statement - - - -argument - - - -member_access - - - -compilation_unit + + +〔·year〕 - - + + expression - - -{ - - - -identifier + + +statement_expression - - -Name + + +null_coalescing_expression - - -〔,·G=〕 + + +class_body relational_expression - - -interpolated_regular_string_expression - - - -contextual_keyword - - - -identifier - - - -namespace_member_declaration - - - -{ + + +b - - -statement + + +ZipCode \ No newline at end of file diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-T/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-T/Reference/sample.gruntree.red.txt index 7a67b3e4a..b043f0c68 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-T/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-T/Reference/sample.gruntree.red.txt @@ -333,7 +333,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -341,10 +341,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ res ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-T/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-T/Reference/sample.tree.red.txt index 47c92de5e..24bb359c7 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-T/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-T/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier Comments) . (identifier XmlComments) . (identifier UndocumentedKeywords)) (namespace_body { (namespace_member_declaration (class_declaration class (identifier CSharp6Features) (class_body { (class_member_declaration (method_declaration (method_modifiers (method_modifier async)) (return_type void) (method_header (member_name (identifier Test)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier numbers) = (expression (object_creation_expression new (type (namespace_or_type_name (identifier Dictionary) (type_argument_list < (type_argument (integral_type int)) , (type_argument (class_type string)) >))) (object_or_collection_initializer (object_initializer { (member_initializer_list (member_initializer (initializer_target [ (argument_list (literal 7)) ]) = (initializer_value (literal "seven"))) , (member_initializer (initializer_target [ (argument_list (literal 9)) ]) = (initializer_value (literal "nine"))) , (member_initializer (initializer_target [ (argument_list (literal 13)) ]) = (initializer_value (literal "thirteen")))) }))))))) ;)) (statement (try_statement try (block { }) (catch_clauses (specific_catch_clause catch (exception_specifier ( (type (identifier MyException)) (identifier e) )) (exception_filter when ( (boolean_expression (invocation_expression (primary_expression (identifier myfilter)) ( (argument_list (identifier e)) ))) )) (block { }))))) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (identifier Resource)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier res) = (local_variable_initializer (null_literal null)))))) ;)) (statement (try_statement try (block { (statement_list (expression_statement (statement_expression (assignment (unary_expression (identifier res)) (assignment_operator =) (expression (await_expression await (unary_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier Resource)) . (identifier OpenAsync))) ( ))))))) ;)) }) (catch_clauses (specific_catch_clause catch (exception_specifier ( (type (identifier ResourceException)) (identifier e) )) (block { (statement_list (expression_statement (statement_expression (await_expression await (unary_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier Resource)) . (identifier LogAsync))) ( (argument_list (argument (identifier res)) , (argument (identifier e))) ))))) ;)) }))) (finally_clause finally (block { (statement_list (if_statement if ( (boolean_expression (equality_expression (equality_expression (identifier res)) != (relational_expression (null_literal null)))) ) (embedded_statement (expression_statement (statement_expression (await_expression await (unary_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier res)) . (identifier CloseAsync))) ( ))))) ;)))) }))))) })))) }))) })))) +(prog (compilation_unit (namespace_declaration namespace (qualified_identifier (identifier Comments) . (identifier XmlComments) . (identifier UndocumentedKeywords)) (namespace_body { (namespace_member_declaration (class_declaration class (identifier CSharp6Features) (class_body { (class_member_declaration (method_declaration (method_modifiers (method_modifier async)) (return_type void) (method_header (member_name (identifier Test)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier numbers) = (expression (object_creation_expression new (type (namespace_or_type_name (identifier Dictionary) (type_argument_list < (type_argument (integral_type int)) , (type_argument (class_type string)) >))) (object_or_collection_initializer (object_initializer { (member_initializer_list (member_initializer (initializer_target [ (argument_list (literal 7)) ]) = (initializer_value (literal "seven"))) , (member_initializer (initializer_target [ (argument_list (literal 9)) ]) = (initializer_value (literal "nine"))) , (member_initializer (initializer_target [ (argument_list (literal 13)) ]) = (initializer_value (literal "thirteen")))) }))))))) ;)) (statement (try_statement try (block { }) (catch_clauses (specific_catch_clause catch (exception_specifier ( (type (identifier MyException)) (identifier e) )) (exception_filter when ( (boolean_expression (invocation_expression (primary_expression (identifier myfilter)) ( (argument_list (identifier e)) ))) )) (block { }))))) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (identifier Resource)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier res) = (local_variable_initializer (null_literal null)))))) ;)) (statement (try_statement try (block { (statement_list (expression_statement (statement_expression (simple_assignment (unary_expression (identifier res)) = (expression (await_expression await (unary_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier Resource)) . (identifier OpenAsync))) ( ))))))) ;)) }) (catch_clauses (specific_catch_clause catch (exception_specifier ( (type (identifier ResourceException)) (identifier e) )) (block { (statement_list (expression_statement (statement_expression (await_expression await (unary_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier Resource)) . (identifier LogAsync))) ( (argument_list (argument (identifier res)) , (argument (identifier e))) ))))) ;)) }))) (finally_clause finally (block { (statement_list (if_statement if ( (boolean_expression (equality_expression (equality_expression (identifier res)) != (relational_expression (null_literal null)))) ) (embedded_statement (expression_statement (statement_expression (await_expression await (unary_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier res)) . (identifier CloseAsync))) ( ))))) ;)))) }))))) })))) }))) })))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-T/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-T/Reference/sample.tree.svg index b89bdb321..cc313a2a6 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-T/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/AllInOneNoPreprocessor-v6-split/part-T/Reference/sample.tree.svg @@ -1,42 +1,42 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - + + + + + @@ -103,7 +103,7 @@ - + @@ -137,7 +137,7 @@ - + @@ -153,1183 +153,1178 @@ - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -initializer_value - - - -( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +7 - - + + block - - -CSharp6Features + + +declaration_statement - - -identifier + + +} - - -member_initializer + + +literal + + + +exception_specifier - - + + primary_expression - - + + +unary_expression + + + res + + +primary_expression + + + +literal + + + +namespace_declaration + implicitly_typed_local_variable_declarator - - -( + + +block - - + + +void + + + +, + + + +namespace_or_type_name + + + +member_initializer_list + + + +initializer_target + + + identifier - - + + +13 + + + +await + + + +member_initializer + + + identifier - - -finally + + +type explicitly_typed_local_variable_declaration - - -await + + +} - - -literal + + +null - - -[ + + +class_declaration - - -method_body + + +invocation_expression - - -, + + +identifier - - -= + + +[ - - -7 + + += - - -member_access + + +identifier - - -primary_expression + + +var - - -unary_expression + + +int - - -) + + +ResourceException - - -( + + +identifier - - + + { - - -statement - - - -try_statement + + +return_type - - -object_initializer + + +!= - - -expression_statement + + +( - - -new + + +await - - -) + + +UndocumentedKeywords - - -identifier + + +await_expression - - -LogAsync + + +namespace_body - - -if_statement + + +primary_expression - - -res + + +MyException - - -explicitly_typed_local_variable_declarator + + +. - - -; + + +await_expression - - -"seven" + + +specific_catch_clause - - + + unary_expression - - -identifier + + +Dictionary - - -member_access + + +async - - -statement_list + + += - - -[ + + +; - - -) + + +finally - - -class_body + + +local_variable_declaration - - -Resource + + +class_type - - + + identifier - - -object_creation_expression + + +) - - -initializer_value + + +member_access - - + + identifier - - -type + + +{ - - -catch + + +namespace - - -identifier + + +Resource - - -local_variable_initializer + + +explicitly_typed_local_variable_declarator - - -local_variable_declaration + + +identifier - - -Test + + +embedded_statement - - -declaration_statement + + +invocation_expression - - -} + + +) - - -literal + + +expression - - -{ + + +] - - -method_declaration + + +invocation_expression - - + + +expression_statement + + + +} + + + +} + + + ) - - -member_name + + +; - - -int + + +null_literal - - -> + + +when - - -identifier + + +} - - -equality_expression + + +argument_list - - -try_statement + + +relational_expression - - -( + + +namespace_member_declaration - - -MyException + + +method_modifiers - - -identifier + + +( - - + + identifier - - -await_expression + + +member_initializer - - -identifier + + +( - - -async + + +type - - -identifier + + +argument_list - - -OpenAsync + + +res - - -{ + + +Resource - - -assignment_operator + + +statement - - -object_or_collection_initializer + + +catch - - -e + + +if_statement - - -} + + +identifier - - -; + + +, - - -invocation_expression + + +) - - -statement_expression + + +identifier - - -{ + + +catch_clauses - - -; + + +9 - - -. + + +{ + + + +equality_expression - - + + { - - -CloseAsync + + +expression - - + + statement_list - - -initializer_target + + +local_variable_initializer - - -identifier + + +compilation_unit - - -boolean_expression + + +statement_expression - - -identifier + + +object_creation_expression - - -res + + +"nine" - - -. + + +initializer_value - - -type_argument + + +qualified_identifier - - -] + + +( - - -specific_catch_clause + + +method_declaration - - -specific_catch_clause + + +identifier - - -class + + +class_member_declaration - - -identifier + + +primary_expression + + + +simple_assignment type_argument_list - - -} - - - -try + + +e - - + + argument_list - - -expression - - - -, - - - -embedded_statement - - - -method_modifier - - - -compilation_unit + + +exception_filter - - -= + + +< - - + + = - - -null_literal - - - -unary_expression + + +) - - -( + + +try - - -; + + +specific_catch_clause - - -} + + +e - - -declaration_statement + + +primary_expression - - -res + + +type_argument - - -type + + +. - - -type + + +[ - - + + identifier - - -void - - - -primary_expression + + +identifier - - -Resource + + +invocation_expression - - -assignment + + +res - - -finally_clause + + +method_body - - -( + + +XmlComments - - -initializer_value + + +statement_list - - -await_expression + + +. - - -invocation_expression + + +identifier - - -await_expression + + +object_or_collection_initializer - - -await + + +try_statement - - -, + + +. - - + + initializer_target - - -statement - - - -res - - - -[ - - - -} + + +argument_list - - -argument + + +"thirteen" - - -identifier + + +OpenAsync - - -myfilter + + +argument_list - - + + expression_statement - - -method_modifiers + + +{ - - -catch_clauses + + +argument - - -. + + +argument - - -= + + +if - - -"thirteen" + + +catch - - -argument_list + + +( - - -identifier + + +LogAsync - - -literal + + +declaration_statement - - -UndocumentedKeywords + + +method_modifier - - -, + + +( - - -} + + +myfilter - - -statement_list + + +finally_clause - - -identifier + + +) - - -if + + +identifier identifier - - -class_member_declaration + + +exception_specifier - - -class_declaration + + +) - - -9 + + +catch_clauses - - -primary_expression + + +res - - -implicitly_typed_local_variable_declaration + + +identifier - - -Comments + + +local_variable_declaration - - -argument_list + + += - - -literal + + +member_name - - -member_initializer + + +CSharp6Features - - -( + + +CloseAsync - - -< + + +Comments - - -; + + +initializer_value - - + + ) - - -13 - - - -type + + +prog - - -invocation_expression + + +; - - -equality_expression + + +"seven" - - -literal + + +block - - -. + + +statement_list ] - - -numbers - - - -type_argument - - - -} + + +identifier - - -statement + + +{ - - -catch_clauses + + +literal - - -expression_statement + + +} - - -exception_specifier + + +type - - -argument_list + + +} - - -argument_list + + +initializer_value - - + + { - - -var - - - -Resource - - - -} - - - -statement_expression - - - -block + + +identifier - - -member_access + + +statement - - -Dictionary + + +boolean_expression - - -{ + + +primary_expression - - + + identifier - - -block + + +implicitly_typed_local_variable_declaration - - -e + + += - - -) + + +explicitly_typed_local_variable_declarators - - -{ + + +statement - - -primary_expression + + +initializer_target - - + + unary_expression - - -) - - - -primary_expression + + +member_access - - -when + + +new - - -XmlComments + + +identifier - - -statement_expression + + +{ - - -expression + + +try_statement - - -await + + +> - - + + e - - -block - - - -namespace_body + + +} - - -return_type + + +integral_type - - -member_initializer + + +try - - -catch + + +Test - - -exception_specifier + + +literal - - -] + + +} - - -( + + +null_literal - - -exception_filter + + +string - - -{ + + +[ - - -null + + +block - - -. + + +equality_expression null - - -namespace_member_declaration + + +, - - -= + + +member_access - - -= + + +class - - + + identifier - - -statement_list + + +res - - -primary_expression + + +] - - -argument + + +statement_expression - - -namespace_declaration + + +type - - -initializer_target + + +statement_list - - -identifier + + += - - -identifier + + +block - - -( + + +await_expression - - -) + + +method_header - - + + boolean_expression - - -!= - - - -integral_type - - - -prog + + +expression_statement - - -qualified_identifier + + +numbers - - + + block - - -relational_expression + + +class_body - - -member_initializer_list + + +e - - -class_type + + +) - - -local_variable_declaration + + +( - - -} + + +Resource - - -method_header + + +( - - -"nine" + + +literal - - -null_literal + + +; - - -invocation_expression + + +primary_expression - - -literal + + +object_initializer - - -block + + +identifier - - + + statement - - -namespace_or_type_name + + +await - - -namespace + + +, - - -string + + +type_argument - - -try + + +statement_expression - - -explicitly_typed_local_variable_declarators + + +unary_expression - - -) + + +{ - - -e + + +( - - -ResourceException + + +; + + + +literal + + + +. + + + +identifier + + + +member_initializer \ No newline at end of file diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/RightShift/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/RightShift/Reference/sample.gruntree.red.txt index c93e194b1..a858608d5 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/RightShift/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/RightShift/Reference/sample.gruntree.red.txt @@ -47,7 +47,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -55,10 +55,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ a ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -96,7 +93,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -105,7 +102,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment_operator ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ right_shift_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > @@ -131,7 +128,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -139,10 +136,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ a ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -183,7 +177,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -192,7 +186,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ compound_assignment_operator ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ >= ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/RightShift/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v6/RightShift/Reference/sample.tree.red.txt index 9319e7c52..32c4f4991 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/RightShift/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/RightShift/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (class_declaration class (identifier RightShift) (class_body { (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier RightShift)) ( )) (method_body (block { (statement_list (statement (expression_statement (statement_expression (assignment (unary_expression (identifier a)) (assignment_operator =) (expression (shift_expression (shift_expression (identifier b)) (right_shift > >) (additive_expression (identifier c)))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier d)) (assignment_operator (right_shift_assignment > >=)) (expression (identifier e)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier a)) (assignment_operator =) (expression (relational_expression (relational_expression (identifier b)) > (shift_expression (range_expression > (unary_expression (identifier c)))))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier d)) (assignment_operator > >=) (expression (identifier e)))) ;))) })))) })))) +(prog (compilation_unit (class_declaration class (identifier RightShift) (class_body { (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier RightShift)) ( )) (method_body (block { (statement_list (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier a)) = (expression (shift_expression (shift_expression (identifier b)) (right_shift > >) (additive_expression (identifier c)))))) ;)) (statement (expression_statement (statement_expression (compound_assignment (unary_expression (identifier d)) (compound_assignment_operator (right_shift_assignment > >=)) (expression (identifier e)))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier a)) = (expression (relational_expression (relational_expression (identifier b)) > (shift_expression (range_expression > (unary_expression (identifier c)))))))) ;)) (statement (expression_statement (statement_expression (compound_assignment (unary_expression (identifier d)) (compound_assignment_operator > >=) (expression (identifier e)))) ;))) })))) })))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v6/RightShift/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v6/RightShift/Reference/sample.tree.svg index 9ae277515..ea87a838f 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v6/RightShift/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v6/RightShift/Reference/sample.tree.svg @@ -1,485 +1,475 @@ - - - - - - - - - - - + + + + + + + + + + + - + - - - - - + + + + + - - - + + + - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -expression_statement - - - -expression - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + prog - - -member_name - - - ->= - - - -range_expression - - - -statement - - - -= + + +b - - -assignment_operator + + +; - - -assignment + + +void - - -statement_list + + +class_declaration - - -block + + +( - - + + > - - -assignment - - - -unary_expression - - - -class - - - -relational_expression - - - -expression - - - -b - - - -} - - - + + a - - -expression - - - -identifier - - - -identifier - - - -e + + +; - - -assignment + + +c - - -= + + +class_member_declaration - - -relational_expression + + +class_body - - -method_body + + +c - - -void + + +identifier - - -d + + +expression - - + + expression_statement - - -statement - - - -identifier + + +} - - + + b - - -> - - - + + statement_expression - - -identifier - - - -expression_statement + + +RightShift - - -shift_expression + + +relational_expression - - + + identifier - - + + identifier - - -class_body + + += - - -compilation_unit + + +simple_assignment - - + + > - - -expression + + +; + + + +statement - - + + d - - -identifier + + +class - - + + identifier - - -c - - - -unary_expression + + +identifier - - + + identifier method_modifiers - - -statement - - - -; + + +identifier - - -( + + +return_type - - -} + + +{ - - -> + + +statement - - -unary_expression + + +compound_assignment_operator - - -method_declaration + + +right_shift_assignment - - + + shift_expression - - -statement + + +expression_statement - - -assignment + + +e - - -additive_expression + + +statement_list + + + +method_declaration + + + +>= ) - - + + identifier - - -a - - - -statement_expression + + +unary_expression - - -statement_expression + + +unary_expression RightShift - - -right_shift_assignment + + +block - - -shift_expression + + +{ - - -class_member_declaration + + +unary_expression - - -method_header + + +relational_expression - - -statement_expression + + +identifier - - -unary_expression + + +> - - -RightShift + + +additive_expression - - -right_shift + + +compound_assignment - - + + > - - -c + + +statement_expression - - ->= + + +statement - - -assignment_operator + + +identifier - - -return_type + + +simple_assignment - - -e + + +shift_expression - - -{ + + +expression - - -expression_statement + + +right_shift - - -assignment_operator + + +>= - - + + +expression + + + > - - -unary_expression + + +expression_statement - - + + +compound_assignment + + + ; - - -class_declaration + + +shift_expression - - + + +member_name + + + +compilation_unit + + + += + + + +e + + + +statement_expression + + + +method_body + + + identifier - - -; + + +} - - -assignment_operator + + +statement - - -; + + +compound_assignment_operator - - + + identifier - - -{ + + +range_expression + + + +method_header + + + +a + + + +unary_expression + + + +unary_expression + + + +> + + + +expression_statement + + + +d + + + +statement_expression + + + +expression \ No newline at end of file diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.gruntree.red.txt index e83212f00..c136edc5b 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.gruntree.red.txt @@ -194,110 +194,101 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression_statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_statement ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_deconstructing_declaration ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ namespace_or_type_name ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ A +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument_list +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ namespace_or_type_name +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ A +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ B ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument_list -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ B -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ C -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ C ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ D +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ D +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ namespace_or_type_name ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ E +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument_list +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ namespace_or_type_name +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ E +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ F ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument_list -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ F -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ G -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ G ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ H +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ H +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ e -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ e ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ @@ -913,21 +904,18 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ argument_value ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ out ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ variable_reference +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ contextual_keyword -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ var -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ item +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ contextual_keyword +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ var ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ item +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ @@ -993,21 +981,18 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ argument_value ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ out ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ variable_reference +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ integral_type -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ int -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ item +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ integral_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ int ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ item +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ @@ -1717,7 +1702,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ anonymous_function_body ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_literal ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element @@ -2453,7 +2438,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -2461,10 +2446,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ v1 ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -2493,7 +2475,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -2512,10 +2494,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -3525,6 +3504,163 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ member_name ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ RefAssignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ method_body +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ block +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ { +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_list +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_declaration +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ explicitly_typed_local_variable_declaration +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ integral_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ int +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ explicitly_typed_local_variable_declarators +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ explicitly_typed_local_variable_declarator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ a +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_initializer +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ literal +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ 1 +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ explicitly_typed_local_variable_declarator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ b +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_initializer +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ literal +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ 2 +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ; +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_declaration +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ implicitly_typed_local_variable_declaration +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ref_kind +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ref +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ var +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ref_local_variable_declarator +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ r +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ref +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ variable_reference +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ a +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ; +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression_statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ref_assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ r +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ref +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ b +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ; +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ } +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ class_member_declaration +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ method_declaration +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ method_modifiers +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ref_method_modifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ public +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ return_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ void +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ method_header +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ member_name +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ConditionalRef ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ @@ -4789,7 +4925,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ relational_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_literal ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element @@ -4802,7 +4938,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_literal ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.stderr.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.stderr.txt index e69de29bb..11edc0c7b 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.stderr.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.stderr.txt @@ -0,0 +1,2 @@ +(78:46) Semantic error, expression is not a variable reference: null +(87:42) Semantic error, expression is not a variable reference: default(Vector3) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.tokens.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.tokens.txt index 705add90f..b25559265 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.tokens.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.tokens.txt @@ -638,251 +638,279 @@ [@637,3434:3434='}',<'}'>,143:4] [@638,3441:3446='public',<'public'>,145:4] [@639,3448:3451='void',<'void'>,145:11] -[@640,3453:3466='ConditionalRef',,145:16] -[@641,3467:3467='(',<'('>,145:30] -[@642,3468:3468=')',<')'>,145:31] -[@643,3474:3474='{',<'{'>,146:4] -[@644,3484:3486='ref',<'ref'>,147:8] -[@645,3488:3490='var',<'var'>,147:12] -[@646,3492:3492='r',,147:16] -[@647,3494:3494='=',<'='>,147:18] -[@648,3496:3498='ref',<'ref'>,147:20] -[@649,3500:3500='(',<'('>,147:24] -[@650,3501:3503='arr',,147:25] -[@651,3505:3506='!=',<'!='>,147:29] -[@652,3508:3511='null',<'null'>,147:32] -[@653,3513:3513='?',<'?'>,147:37] -[@654,3515:3517='ref',<'ref'>,147:39] -[@655,3519:3521='arr',,147:43] -[@656,3522:3522='[',<'['>,147:46] -[@657,3523:3523='0',,147:47] -[@658,3524:3524=']',<']'>,147:48] -[@659,3525:3525=':',<':'>,147:49] -[@660,3527:3529='ref',<'ref'>,147:51] -[@661,3531:3538='otherArr',,147:55] -[@662,3539:3539='[',<'['>,147:63] -[@663,3540:3540='0',,147:64] -[@664,3541:3541=']',<']'>,147:65] -[@665,3542:3542=')',<')'>,147:66] -[@666,3543:3543=';',<';'>,147:67] -[@667,3549:3549='}',<'}'>,148:4] -[@668,3556:3561='public',<'public'>,150:4] -[@669,3563:3566='void',<'void'>,150:11] -[@670,3568:3583='LeadingSeparator',,150:16] -[@671,3584:3584='(',<'('>,150:32] -[@672,3585:3585=')',<')'>,150:33] -[@673,3591:3591='{',<'{'>,151:4] -[@674,3601:3603='var',<'var'>,152:8] -[@675,3605:3607='res',,152:12] -[@676,3609:3609='=',<'='>,152:16] -[@677,3611:3611='0',,152:18] -[@678,3621:3621='+',<'+'>,153:8] -[@679,3623:3625='123',,153:10] -[@680,3673:3673='+',<'+'>,154:8] -[@681,3675:3679='1_2_3',,154:10] -[@682,3725:3725='+',<'+'>,155:8] -[@683,3727:3733='0x1_2_3',,155:10] -[@684,3777:3777='+',<'+'>,156:8] -[@685,3779:3783='0b101',,156:10] -[@686,3831:3831='+',<'+'>,157:8] -[@687,3833:3839='0b1_0_1',,157:10] -[@688,3944:3944='+',<'+'>,160:8] -[@689,3946:3951='0x_1_2',,160:10] -[@690,3996:3996='+',<'+'>,161:8] -[@691,3998:4005='0b_1_0_1',,161:10] -[@692,4048:4048=';',<';'>,162:8] -[@693,4054:4054='}',<'}'>,163:4] -[@694,4056:4056='}',<'}'>,164:0] -[@695,4059:4063='class',<'class'>,166:0] -[@696,4065:4072='CSharp73',,166:6] -[@697,4074:4074='{',<'{'>,167:0] -[@698,4080:4083='void',<'void'>,168:4] -[@699,4085:4093='Blittable',,168:9] -[@700,4094:4094='<',<'<'>,168:18] -[@701,4095:4095='T',,168:19] -[@702,4096:4096='>',<'>'>,168:20] -[@703,4097:4097='(',<'('>,168:21] -[@704,4098:4098='T',,168:22] -[@705,4100:4104='value',<'value'>,168:24] -[@706,4105:4105=')',<')'>,168:29] -[@707,4107:4111='where',<'where'>,168:31] -[@708,4113:4113='T',,168:37] -[@709,4115:4115=':',<':'>,168:39] -[@710,4117:4125='unmanaged',<'unmanaged'>,168:41] -[@711,4131:4131='{',<'{'>,169:4] -[@712,4141:4143='var',<'var'>,170:8] -[@713,4145:4153='unmanaged',<'unmanaged'>,170:12] -[@714,4155:4155='=',<'='>,170:22] -[@715,4157:4159='666',,170:24] -[@716,4160:4160=';',<';'>,170:27] -[@717,4166:4166='}',<'}'>,171:4] -[@718,4173:4178='unsafe',<'unsafe'>,173:4] -[@719,4180:4185='struct',<'struct'>,173:11] -[@720,4187:4206='IndexingMovableFixed',,173:18] -[@721,4212:4212='{',<'{'>,174:4] -[@722,4222:4227='public',<'public'>,175:8] -[@723,4229:4233='fixed',<'fixed'>,175:15] -[@724,4235:4237='int',<'int'>,175:21] -[@725,4239:4250='myFixedField',,175:25] -[@726,4251:4251='[',<'['>,175:37] -[@727,4252:4253='10',,175:38] -[@728,4254:4254=']',<']'>,175:40] -[@729,4255:4255=';',<';'>,175:41] -[@730,4261:4261='}',<'}'>,176:4] -[@731,4268:4273='static',<'static'>,178:4] -[@732,4275:4294='IndexingMovableFixed',,178:11] -[@733,4296:4296='s',,178:32] -[@734,4297:4297=';',<';'>,178:33] -[@735,4304:4309='public',<'public'>,180:4] -[@736,4311:4316='unsafe',<'unsafe'>,180:11] -[@737,4318:4321='void',<'void'>,180:18] -[@738,4323:4348='IndexingMovableFixedFields',,180:23] -[@739,4349:4349='(',<'('>,180:49] -[@740,4350:4350=')',<')'>,180:50] -[@741,4356:4356='{',<'{'>,181:4] -[@742,4366:4368='int',<'int'>,182:8] -[@743,4369:4369='*',<'*'>,182:11] -[@744,4371:4373='ptr',,182:13] -[@745,4375:4375='=',<'='>,182:17] -[@746,4377:4377='s',,182:19] -[@747,4378:4378='.',<'.'>,182:20] -[@748,4379:4390='myFixedField',,182:21] -[@749,4391:4391=';',<';'>,182:33] -[@750,4401:4403='int',<'int'>,183:8] -[@751,4405:4405='t',,183:12] -[@752,4407:4407='=',<'='>,183:14] -[@753,4409:4409='s',,183:16] -[@754,4410:4410='.',<'.'>,183:17] -[@755,4411:4422='myFixedField',,183:18] -[@756,4423:4423='[',<'['>,183:30] -[@757,4424:4424='5',,183:31] -[@758,4425:4425=']',<']'>,183:32] -[@759,4426:4426=';',<';'>,183:33] -[@760,4432:4432='}',<'}'>,184:4] -[@761,4439:4444='public',<'public'>,186:4] -[@762,4446:4449='void',<'void'>,186:11] -[@763,4451:4467='PatternBasedFixed',,186:16] -[@764,4468:4468='(',<'('>,186:33] -[@765,4469:4469=')',<')'>,186:34] -[@766,4475:4475='{',<'{'>,187:4] -[@767,4485:4489='fixed',<'fixed'>,188:8] -[@768,4490:4490='(',<'('>,188:13] -[@769,4491:4494='byte',<'byte'>,188:14] -[@770,4495:4495='*',<'*'>,188:18] -[@771,4497:4499='ptr',,188:20] -[@772,4501:4501='=',<'='>,188:24] -[@773,4503:4511='byteArray',,188:26] -[@774,4512:4512=')',<')'>,188:35] -[@775,4522:4522='{',<'{'>,189:8] -[@776,4710:4710='}',<'}'>,192:8] -[@777,4716:4716='}',<'}'>,193:4] -[@778,4723:4728='public',<'public'>,195:4] -[@779,4730:4733='void',<'void'>,195:11] -[@780,4735:4760='StackallocArrayInitializer',,195:16] -[@781,4761:4761='(',<'('>,195:42] -[@782,4762:4762=')',<')'>,195:43] -[@783,4768:4768='{',<'{'>,196:4] -[@784,4778:4781='Span',,197:8] -[@785,4782:4782='<',<'<'>,197:12] -[@786,4783:4785='int',<'int'>,197:13] -[@787,4786:4786='>',<'>'>,197:16] -[@788,4788:4788='a',,197:18] -[@789,4790:4790='=',<'='>,197:20] -[@790,4792:4801='stackalloc',<'stackalloc'>,197:22] -[@791,4803:4805='int',<'int'>,197:33] -[@792,4806:4806='[',<'['>,197:36] -[@793,4807:4807='3',,197:37] -[@794,4808:4808=']',<']'>,197:38] -[@795,4809:4809=';',<';'>,197:39] -[@796,4854:4857='Span',,198:8] -[@797,4858:4858='<',<'<'>,198:12] -[@798,4859:4861='int',<'int'>,198:13] -[@799,4862:4862='>',<'>'>,198:16] -[@800,4864:4864='a',,198:18] -[@801,4866:4866='=',<'='>,198:20] -[@802,4868:4877='stackalloc',<'stackalloc'>,198:22] -[@803,4879:4881='int',<'int'>,198:33] -[@804,4882:4882='[',<'['>,198:36] -[@805,4883:4883='3',,198:37] -[@806,4884:4884=']',<']'>,198:38] -[@807,4886:4886='{',<'{'>,198:40] -[@808,4888:4888='1',,198:42] -[@809,4889:4889=',',<','>,198:43] -[@810,4891:4891='2',,198:45] -[@811,4892:4892=',',<','>,198:46] -[@812,4894:4894='3',,198:48] -[@813,4896:4896='}',<'}'>,198:50] -[@814,4897:4897=';',<';'>,198:51] -[@815,4907:4910='Span',,199:8] -[@816,4911:4911='<',<'<'>,199:12] -[@817,4912:4914='int',<'int'>,199:13] -[@818,4915:4915='>',<'>'>,199:16] -[@819,4917:4917='a',,199:18] -[@820,4919:4919='=',<'='>,199:20] -[@821,4921:4930='stackalloc',<'stackalloc'>,199:22] -[@822,4932:4934='int',<'int'>,199:33] -[@823,4935:4935='[',<'['>,199:36] -[@824,4936:4936=']',<']'>,199:37] -[@825,4938:4938='{',<'{'>,199:39] -[@826,4940:4940='1',,199:41] -[@827,4941:4941=',',<','>,199:42] -[@828,4943:4943='2',,199:44] -[@829,4944:4944=',',<','>,199:45] -[@830,4946:4946='3',,199:47] -[@831,4948:4948='}',<'}'>,199:49] -[@832,4949:4949=';',<';'>,199:50] -[@833,4959:4962='Span',,200:8] -[@834,4963:4963='<',<'<'>,200:12] -[@835,4964:4966='int',<'int'>,200:13] -[@836,4967:4967='>',<'>'>,200:16] -[@837,4969:4969='a',,200:18] -[@838,4971:4971='=',<'='>,200:20] -[@839,4973:4982='stackalloc',<'stackalloc'>,200:22] -[@840,4983:4983='[',<'['>,200:32] -[@841,4984:4984=']',<']'>,200:33] -[@842,4986:4986='{',<'{'>,200:35] -[@843,4988:4988='1',,200:37] -[@844,4989:4989=',',<','>,200:38] -[@845,4991:4991='2',,200:40] -[@846,4992:4992=',',<','>,200:41] -[@847,4994:4994='3',,200:43] -[@848,4996:4996='}',<'}'>,200:45] -[@849,4997:4997=';',<';'>,200:46] -[@850,5003:5003='}',<'}'>,201:4] -[@851,5010:5015='public',<'public'>,203:4] -[@852,5017:5020='void',<'void'>,203:11] -[@853,5022:5034='TupleEquality',,203:16] -[@854,5035:5035='(',<'('>,203:29] -[@855,5036:5036=')',<')'>,203:30] -[@856,5042:5042='{',<'{'>,204:4] -[@857,5052:5052='(',<'('>,205:8] -[@858,5053:5055='int',<'int'>,205:9] -[@859,5056:5056=',',<','>,205:12] -[@860,5058:5058='(',<'('>,205:14] -[@861,5059:5061='int',<'int'>,205:15] -[@862,5062:5062=',',<','>,205:18] -[@863,5064:5066='int',<'int'>,205:20] -[@864,5067:5067=')',<')'>,205:23] -[@865,5068:5068=')',<')'>,205:24] -[@866,5070:5071='t1',,205:26] -[@867,5072:5072=',',<','>,205:28] -[@868,5074:5075='t2',,205:30] -[@869,5076:5076=';',<';'>,205:32] -[@870,5086:5088='var',<'var'>,206:8] -[@871,5090:5092='res',,206:12] -[@872,5094:5094='=',<'='>,206:16] -[@873,5096:5097='t1',,206:18] -[@874,5099:5100='==',<'=='>,206:21] -[@875,5102:5102='(',<'('>,206:24] -[@876,5103:5103='1',,206:25] -[@877,5104:5104=',',<','>,206:26] -[@878,5106:5106='(',<'('>,206:28] -[@879,5107:5107='2',,206:29] -[@880,5108:5108=',',<','>,206:30] -[@881,5110:5110='3',,206:32] -[@882,5111:5111=')',<')'>,206:33] -[@883,5112:5112=')',<')'>,206:34] -[@884,5113:5113=';',<';'>,206:35] -[@885,5119:5119='}',<'}'>,207:4] -[@886,5121:5121='}',<'}'>,208:0] -[@887,5123:5122='',,209:0] +[@640,3453:3465='RefAssignment',,145:16] +[@641,3466:3466='(',<'('>,145:29] +[@642,3467:3467=')',<')'>,145:30] +[@643,3473:3473='{',<'{'>,146:4] +[@644,3483:3485='int',<'int'>,147:8] +[@645,3487:3487='a',,147:12] +[@646,3489:3489='=',<'='>,147:14] +[@647,3491:3491='1',,147:16] +[@648,3492:3492=',',<','>,147:17] +[@649,3494:3494='b',,147:19] +[@650,3496:3496='=',<'='>,147:21] +[@651,3498:3498='2',,147:23] +[@652,3499:3499=';',<';'>,147:24] +[@653,3509:3511='ref',<'ref'>,148:8] +[@654,3513:3515='var',<'var'>,148:12] +[@655,3517:3517='r',,148:16] +[@656,3519:3519='=',<'='>,148:18] +[@657,3521:3523='ref',<'ref'>,148:20] +[@658,3525:3525='a',,148:24] +[@659,3526:3526=';',<';'>,148:25] +[@660,3536:3536='r',,149:8] +[@661,3538:3538='=',<'='>,149:10] +[@662,3540:3542='ref',<'ref'>,149:12] +[@663,3544:3544='b',,149:16] +[@664,3545:3545=';',<';'>,149:17] +[@665,3551:3551='}',<'}'>,150:4] +[@666,3558:3563='public',<'public'>,152:4] +[@667,3565:3568='void',<'void'>,152:11] +[@668,3570:3583='ConditionalRef',,152:16] +[@669,3584:3584='(',<'('>,152:30] +[@670,3585:3585=')',<')'>,152:31] +[@671,3591:3591='{',<'{'>,153:4] +[@672,3601:3603='ref',<'ref'>,154:8] +[@673,3605:3607='var',<'var'>,154:12] +[@674,3609:3609='r',,154:16] +[@675,3611:3611='=',<'='>,154:18] +[@676,3613:3615='ref',<'ref'>,154:20] +[@677,3617:3617='(',<'('>,154:24] +[@678,3618:3620='arr',,154:25] +[@679,3622:3623='!=',<'!='>,154:29] +[@680,3625:3628='null',<'null'>,154:32] +[@681,3630:3630='?',<'?'>,154:37] +[@682,3632:3634='ref',<'ref'>,154:39] +[@683,3636:3638='arr',,154:43] +[@684,3639:3639='[',<'['>,154:46] +[@685,3640:3640='0',,154:47] +[@686,3641:3641=']',<']'>,154:48] +[@687,3642:3642=':',<':'>,154:49] +[@688,3644:3646='ref',<'ref'>,154:51] +[@689,3648:3655='otherArr',,154:55] +[@690,3656:3656='[',<'['>,154:63] +[@691,3657:3657='0',,154:64] +[@692,3658:3658=']',<']'>,154:65] +[@693,3659:3659=')',<')'>,154:66] +[@694,3660:3660=';',<';'>,154:67] +[@695,3666:3666='}',<'}'>,155:4] +[@696,3673:3678='public',<'public'>,157:4] +[@697,3680:3683='void',<'void'>,157:11] +[@698,3685:3700='LeadingSeparator',,157:16] +[@699,3701:3701='(',<'('>,157:32] +[@700,3702:3702=')',<')'>,157:33] +[@701,3708:3708='{',<'{'>,158:4] +[@702,3718:3720='var',<'var'>,159:8] +[@703,3722:3724='res',,159:12] +[@704,3726:3726='=',<'='>,159:16] +[@705,3728:3728='0',,159:18] +[@706,3738:3738='+',<'+'>,160:8] +[@707,3740:3742='123',,160:10] +[@708,3790:3790='+',<'+'>,161:8] +[@709,3792:3796='1_2_3',,161:10] +[@710,3842:3842='+',<'+'>,162:8] +[@711,3844:3850='0x1_2_3',,162:10] +[@712,3894:3894='+',<'+'>,163:8] +[@713,3896:3900='0b101',,163:10] +[@714,3948:3948='+',<'+'>,164:8] +[@715,3950:3956='0b1_0_1',,164:10] +[@716,4061:4061='+',<'+'>,167:8] +[@717,4063:4068='0x_1_2',,167:10] +[@718,4113:4113='+',<'+'>,168:8] +[@719,4115:4122='0b_1_0_1',,168:10] +[@720,4165:4165=';',<';'>,169:8] +[@721,4171:4171='}',<'}'>,170:4] +[@722,4173:4173='}',<'}'>,171:0] +[@723,4176:4180='class',<'class'>,173:0] +[@724,4182:4189='CSharp73',,173:6] +[@725,4191:4191='{',<'{'>,174:0] +[@726,4197:4200='void',<'void'>,175:4] +[@727,4202:4210='Blittable',,175:9] +[@728,4211:4211='<',<'<'>,175:18] +[@729,4212:4212='T',,175:19] +[@730,4213:4213='>',<'>'>,175:20] +[@731,4214:4214='(',<'('>,175:21] +[@732,4215:4215='T',,175:22] +[@733,4217:4221='value',<'value'>,175:24] +[@734,4222:4222=')',<')'>,175:29] +[@735,4224:4228='where',<'where'>,175:31] +[@736,4230:4230='T',,175:37] +[@737,4232:4232=':',<':'>,175:39] +[@738,4234:4242='unmanaged',<'unmanaged'>,175:41] +[@739,4248:4248='{',<'{'>,176:4] +[@740,4258:4260='var',<'var'>,177:8] +[@741,4262:4270='unmanaged',<'unmanaged'>,177:12] +[@742,4272:4272='=',<'='>,177:22] +[@743,4274:4276='666',,177:24] +[@744,4277:4277=';',<';'>,177:27] +[@745,4283:4283='}',<'}'>,178:4] +[@746,4290:4295='unsafe',<'unsafe'>,180:4] +[@747,4297:4302='struct',<'struct'>,180:11] +[@748,4304:4323='IndexingMovableFixed',,180:18] +[@749,4329:4329='{',<'{'>,181:4] +[@750,4339:4344='public',<'public'>,182:8] +[@751,4346:4350='fixed',<'fixed'>,182:15] +[@752,4352:4354='int',<'int'>,182:21] +[@753,4356:4367='myFixedField',,182:25] +[@754,4368:4368='[',<'['>,182:37] +[@755,4369:4370='10',,182:38] +[@756,4371:4371=']',<']'>,182:40] +[@757,4372:4372=';',<';'>,182:41] +[@758,4378:4378='}',<'}'>,183:4] +[@759,4385:4390='static',<'static'>,185:4] +[@760,4392:4411='IndexingMovableFixed',,185:11] +[@761,4413:4413='s',,185:32] +[@762,4414:4414=';',<';'>,185:33] +[@763,4421:4426='public',<'public'>,187:4] +[@764,4428:4433='unsafe',<'unsafe'>,187:11] +[@765,4435:4438='void',<'void'>,187:18] +[@766,4440:4465='IndexingMovableFixedFields',,187:23] +[@767,4466:4466='(',<'('>,187:49] +[@768,4467:4467=')',<')'>,187:50] +[@769,4473:4473='{',<'{'>,188:4] +[@770,4483:4485='int',<'int'>,189:8] +[@771,4486:4486='*',<'*'>,189:11] +[@772,4488:4490='ptr',,189:13] +[@773,4492:4492='=',<'='>,189:17] +[@774,4494:4494='s',,189:19] +[@775,4495:4495='.',<'.'>,189:20] +[@776,4496:4507='myFixedField',,189:21] +[@777,4508:4508=';',<';'>,189:33] +[@778,4518:4520='int',<'int'>,190:8] +[@779,4522:4522='t',,190:12] +[@780,4524:4524='=',<'='>,190:14] +[@781,4526:4526='s',,190:16] +[@782,4527:4527='.',<'.'>,190:17] +[@783,4528:4539='myFixedField',,190:18] +[@784,4540:4540='[',<'['>,190:30] +[@785,4541:4541='5',,190:31] +[@786,4542:4542=']',<']'>,190:32] +[@787,4543:4543=';',<';'>,190:33] +[@788,4549:4549='}',<'}'>,191:4] +[@789,4556:4561='public',<'public'>,193:4] +[@790,4563:4566='void',<'void'>,193:11] +[@791,4568:4584='PatternBasedFixed',,193:16] +[@792,4585:4585='(',<'('>,193:33] +[@793,4586:4586=')',<')'>,193:34] +[@794,4592:4592='{',<'{'>,194:4] +[@795,4602:4606='fixed',<'fixed'>,195:8] +[@796,4607:4607='(',<'('>,195:13] +[@797,4608:4611='byte',<'byte'>,195:14] +[@798,4612:4612='*',<'*'>,195:18] +[@799,4614:4616='ptr',,195:20] +[@800,4618:4618='=',<'='>,195:24] +[@801,4620:4628='byteArray',,195:26] +[@802,4629:4629=')',<')'>,195:35] +[@803,4639:4639='{',<'{'>,196:8] +[@804,4827:4827='}',<'}'>,199:8] +[@805,4833:4833='}',<'}'>,200:4] +[@806,4840:4845='public',<'public'>,202:4] +[@807,4847:4850='void',<'void'>,202:11] +[@808,4852:4877='StackallocArrayInitializer',,202:16] +[@809,4878:4878='(',<'('>,202:42] +[@810,4879:4879=')',<')'>,202:43] +[@811,4885:4885='{',<'{'>,203:4] +[@812,4895:4898='Span',,204:8] +[@813,4899:4899='<',<'<'>,204:12] +[@814,4900:4902='int',<'int'>,204:13] +[@815,4903:4903='>',<'>'>,204:16] +[@816,4905:4905='a',,204:18] +[@817,4907:4907='=',<'='>,204:20] +[@818,4909:4918='stackalloc',<'stackalloc'>,204:22] +[@819,4920:4922='int',<'int'>,204:33] +[@820,4923:4923='[',<'['>,204:36] +[@821,4924:4924='3',,204:37] +[@822,4925:4925=']',<']'>,204:38] +[@823,4926:4926=';',<';'>,204:39] +[@824,4971:4974='Span',,205:8] +[@825,4975:4975='<',<'<'>,205:12] +[@826,4976:4978='int',<'int'>,205:13] +[@827,4979:4979='>',<'>'>,205:16] +[@828,4981:4981='a',,205:18] +[@829,4983:4983='=',<'='>,205:20] +[@830,4985:4994='stackalloc',<'stackalloc'>,205:22] +[@831,4996:4998='int',<'int'>,205:33] +[@832,4999:4999='[',<'['>,205:36] +[@833,5000:5000='3',,205:37] +[@834,5001:5001=']',<']'>,205:38] +[@835,5003:5003='{',<'{'>,205:40] +[@836,5005:5005='1',,205:42] +[@837,5006:5006=',',<','>,205:43] +[@838,5008:5008='2',,205:45] +[@839,5009:5009=',',<','>,205:46] +[@840,5011:5011='3',,205:48] +[@841,5013:5013='}',<'}'>,205:50] +[@842,5014:5014=';',<';'>,205:51] +[@843,5024:5027='Span',,206:8] +[@844,5028:5028='<',<'<'>,206:12] +[@845,5029:5031='int',<'int'>,206:13] +[@846,5032:5032='>',<'>'>,206:16] +[@847,5034:5034='a',,206:18] +[@848,5036:5036='=',<'='>,206:20] +[@849,5038:5047='stackalloc',<'stackalloc'>,206:22] +[@850,5049:5051='int',<'int'>,206:33] +[@851,5052:5052='[',<'['>,206:36] +[@852,5053:5053=']',<']'>,206:37] +[@853,5055:5055='{',<'{'>,206:39] +[@854,5057:5057='1',,206:41] +[@855,5058:5058=',',<','>,206:42] +[@856,5060:5060='2',,206:44] +[@857,5061:5061=',',<','>,206:45] +[@858,5063:5063='3',,206:47] +[@859,5065:5065='}',<'}'>,206:49] +[@860,5066:5066=';',<';'>,206:50] +[@861,5076:5079='Span',,207:8] +[@862,5080:5080='<',<'<'>,207:12] +[@863,5081:5083='int',<'int'>,207:13] +[@864,5084:5084='>',<'>'>,207:16] +[@865,5086:5086='a',,207:18] +[@866,5088:5088='=',<'='>,207:20] +[@867,5090:5099='stackalloc',<'stackalloc'>,207:22] +[@868,5100:5100='[',<'['>,207:32] +[@869,5101:5101=']',<']'>,207:33] +[@870,5103:5103='{',<'{'>,207:35] +[@871,5105:5105='1',,207:37] +[@872,5106:5106=',',<','>,207:38] +[@873,5108:5108='2',,207:40] +[@874,5109:5109=',',<','>,207:41] +[@875,5111:5111='3',,207:43] +[@876,5113:5113='}',<'}'>,207:45] +[@877,5114:5114=';',<';'>,207:46] +[@878,5120:5120='}',<'}'>,208:4] +[@879,5127:5132='public',<'public'>,210:4] +[@880,5134:5137='void',<'void'>,210:11] +[@881,5139:5151='TupleEquality',,210:16] +[@882,5152:5152='(',<'('>,210:29] +[@883,5153:5153=')',<')'>,210:30] +[@884,5159:5159='{',<'{'>,211:4] +[@885,5169:5169='(',<'('>,212:8] +[@886,5170:5172='int',<'int'>,212:9] +[@887,5173:5173=',',<','>,212:12] +[@888,5175:5175='(',<'('>,212:14] +[@889,5176:5178='int',<'int'>,212:15] +[@890,5179:5179=',',<','>,212:18] +[@891,5181:5183='int',<'int'>,212:20] +[@892,5184:5184=')',<')'>,212:23] +[@893,5185:5185=')',<')'>,212:24] +[@894,5187:5188='t1',,212:26] +[@895,5189:5189=',',<','>,212:28] +[@896,5191:5192='t2',,212:30] +[@897,5193:5193=';',<';'>,212:32] +[@898,5203:5205='var',<'var'>,213:8] +[@899,5207:5209='res',,213:12] +[@900,5211:5211='=',<'='>,213:16] +[@901,5213:5214='t1',,213:18] +[@902,5216:5217='==',<'=='>,213:21] +[@903,5219:5219='(',<'('>,213:24] +[@904,5220:5220='1',,213:25] +[@905,5221:5221=',',<','>,213:26] +[@906,5223:5223='(',<'('>,213:28] +[@907,5224:5224='2',,213:29] +[@908,5225:5225=',',<','>,213:30] +[@909,5227:5227='3',,213:32] +[@910,5228:5228=')',<')'>,213:33] +[@911,5229:5229=')',<')'>,213:34] +[@912,5230:5230=';',<';'>,213:35] +[@913,5236:5236='}',<'}'>,214:4] +[@914,5238:5238='}',<'}'>,215:0] +[@915,5240:5239='',,216:0] diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.tree.red.txt index fb419a6ce..cee6243ea 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (namespace_member_declaration (class_declaration class (identifier CSharp70) (class_body { (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier PatternMatching)) ( (parameter_list (fixed_parameters (fixed_parameter (type (class_type string)) (identifier arg)) , (fixed_parameter (type (integral_type int)) (identifier b)))) )) (method_body (block { (statement_list (statement (switch_statement switch (selector_expression ( (expression (identifier arg)) )) (switch_block { (switch_section (switch_label case (pattern (literal "A")) (case_guard when (null_coalescing_expression (relational_expression (relational_expression (identifier b)) > (shift_expression (literal 50))))) :) (switch_label case (pattern (literal "B")) (case_guard when (null_coalescing_expression (relational_expression (relational_expression (identifier b)) < (shift_expression (literal 50))))) :) (switch_label default :) (statement_list (break_statement break ;))) }))) (statement (expression_statement (statement_expression (assignment (unary_expression (tuple_expression ( (tuple_element (declaration_expression (local_variable_type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) , (type_argument (identifier C)) >))) (identifier D))) , (tuple_element (declaration_expression (local_variable_type (namespace_or_type_name (identifier E) (type_argument_list < (type_argument (identifier F)) , (type_argument (identifier G)) >))) (identifier H))) ))) (assignment_operator =) (expression (identifier e)))) ;)) (statement (if_statement if ( (boolean_expression (relational_expression (relational_expression (null_conditional_member_access (primary_expression (null_conditional_member_access (primary_expression (identifier x)) ? . (identifier y))) ? . (identifier z))) is (pattern (declaration_pattern (type (identifier Type)) (simple_designation (identifier value2)))))) ) (embedded_statement (block { })))) (statement (if_statement if ( (boolean_expression (relational_expression (relational_expression (identifier expr)) is (pattern (declaration_pattern (type (identifier Type)) (simple_designation (identifier v)))))) ) (embedded_statement (block { (statement_list (expression_statement (statement_expression (invocation_expression (primary_expression (identifier Hello)) ( ))) ;)) }))))) })))) (class_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier public)) (method_modifier (ref_method_modifier static)) (method_modifier async)) (return_type (identifier Task)) (method_header (member_name (identifier LocalFunctions)) ( (parameter_list (fixed_parameter (type (array_type (non_array_type (class_type string)) (rank_specifier [ ]))) (identifier args))) )) (method_body (block { (statement_list (statement (local_function_declaration (return_type (class_type string)) (local_function_header (identifier Hello2) ( (parameter_list (fixed_parameter (type (integral_type int)) (identifier i))) )) (local_function_body (block { (statement_list (return_statement return (expression (element_access (primary_expression (identifier args)) [ (argument_list (identifier i)) ])) ;)) })))) (statement (local_function_declaration (local_function_modifier async) (return_type (namespace_or_type_name (identifier Task) (type_argument_list < (type_argument (class_type string)) >))) (local_function_header (identifier Hello) (type_parameter_list < (decorated_type_parameter (identifier T)) >) ( (parameter_list (fixed_parameter (type (identifier T)) (identifier i))) )) (local_function_body => (expression (await_expression await (unary_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier Task)) . (identifier FromResult))) ( (argument_list (element_access (primary_expression (identifier args)) [ (argument_list (identifier i)) ])) ))))) ;))) (statement (expression_statement (statement_expression (await_expression await (unary_expression (invocation_expression (primary_expression (identifier Hello)) ( (argument_list (literal 1)) ))))) ;))) })))) (class_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier public)) (method_modifier (ref_method_modifier static))) (return_type void) (method_header (member_name (identifier OutVar)) ( (parameter_list (fixed_parameter (type (array_type (non_array_type (class_type string)) (rank_specifier [ ]))) (identifier args))) )) (method_body (block { (statement_list (statement (expression_statement (statement_expression (invocation_expression (primary_expression (member_access (predefined_type int) . (identifier TryParse))) ( (argument_list (argument (invocation_expression (primary_expression (identifier Hello)) ( (argument_list (literal 1)) ))) , (argument (argument_value out (variable_reference (declaration_expression (local_variable_type (contextual_keyword var)) (identifier item)))))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (member_access (predefined_type int) . (identifier TryParse))) ( (argument_list (argument (invocation_expression (primary_expression (identifier Hello)) ( (argument_list (literal 1)) ))) , (argument (argument_value out (variable_reference (declaration_expression (local_variable_type (integral_type int)) (identifier item)))))) ))) ;))) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier ThrowExpression)) ( )) (method_body (block { (statement_list (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier result) = (expression (null_coalescing_expression (conditional_or_expression (identifier nullableResult)) ?? (null_coalescing_expression (throw_expression throw (null_coalescing_expression (object_creation_expression new (type (identifier NullReferenceException)) ( )))))))))) ;)) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier BinaryLiterals)) ( )) (method_body (block { (statement_list (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier nineteen) = (local_variable_initializer (literal 0b10011)))))) ;)) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier DigitSeparators)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier bin) = (local_variable_initializer (literal 0b1001_1010_0001_0100)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier hex) = (local_variable_initializer (literal 0x1b_a0_44_fe)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier dec) = (local_variable_initializer (literal 33_554_432)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier weird) = (local_variable_initializer (literal 1_2__3___4____5_____6______7_______8________9)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (floating_point_type double)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier real) = (local_variable_initializer (literal 1_000.111_1e-1_000)))))) ;))) })))) }))) (namespace_member_declaration (class_declaration class (identifier CSharp71) (class_body { (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier DefaultWithoutTypeName)) ( (parameter_list (fixed_parameter (type (class_type string)) (identifier content) (default_argument = (expression (default_literal default))))) )) (method_body (block { (statement_list (expression_statement (statement_expression (invocation_expression (primary_expression (identifier DefaultWithoutTypeName)) ( (argument_list (default_literal default)) ))) ;)) })))) (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier TupleRecognize)) ( (parameter_list (fixed_parameters (fixed_parameter (type (integral_type int)) (identifier a)) , (fixed_parameter (type (tuple_type ( (tuple_type_element (integral_type int)) , (tuple_type_element (integral_type int)) ))) (identifier b)) , (fixed_parameter (type (nullable_value_type (non_nullable_value_type (tuple_type ( (tuple_type_element (integral_type int)) , (tuple_type_element (integral_type int)) , (tuple_type_element (integral_type int)) ))) (nullable_type_annotation ?))) (identifier c)))) )) (method_body (block { (statement_list (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier result) = (expression (invocation_expression (primary_expression (member_access (primary_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier list)) . (identifier Select))) ( (argument_list (lambda_expression (anonymous_function_signature (identifier c)) => (anonymous_function_body (tuple_expression ( (tuple_element (member_access (primary_expression (identifier c)) . (identifier f1))) , (tuple_element (identifier f3) : (expression (member_access (primary_expression (identifier c)) . (identifier f2)))) ))))) ))) . (identifier Where))) ( (argument_list (lambda_expression (anonymous_function_signature (identifier t)) => (anonymous_function_body (equality_expression (equality_expression (member_access (primary_expression (identifier t)) . (identifier f2))) == (relational_expression (literal 1)))))) )))))) ;)) })))) }))) (namespace_member_declaration (class_declaration class (identifier CSharp72) (class_body { (class_member_declaration (struct_declaration (struct_modifier readonly) struct (identifier ReadonlyRef1) (struct_body { (struct_member_declaration (field_declaration (type (namespace_or_type_name (identifier Func) (type_argument_list < (type_argument (integral_type int)) , (type_argument (integral_type int)) >))) (variable_declarators (variable_declarator (identifier s) = (variable_initializer (lambda_expression (anonymous_function_signature (explicit_anonymous_function_signature ( (explicit_anonymous_function_parameter_list (explicit_anonymous_function_parameter (anonymous_function_parameter_modifier in) (type (integral_type int)) (identifier x))) ))) => (anonymous_function_body (identifier x)))))) ;)) (struct_member_declaration (indexer_declaration (ref_kind ref) (indexer_declarator (type (identifier TValue)) this [ (parameter_list (fixed_parameter (parameter_modifier (parameter_mode_modifier in)) (type (identifier TKey)) (identifier index))) ]) (ref_indexer_body => ref (variable_reference (null_literal null)) ;))) (struct_member_declaration (operator_declaration (operator_modifier public) (operator_modifier static) (operator_declarator (binary_operator_declarator (type (identifier Vector3)) operator (overloadable_binary_operator +) ( (fixed_parameter (parameter_modifier (parameter_mode_modifier in)) (type (identifier Vector3)) (identifier x)) , (fixed_parameter (parameter_modifier (parameter_mode_modifier in)) (type (identifier Vector3)) (identifier y)) ))) (operator_body => (expression (null_literal null)) ;))) (struct_member_declaration (method_declaration (ref_method_modifiers (ref_method_modifier static)) (ref_kind ref readonly) (ref_return_type (identifier Vector3)) (method_header (member_name (identifier M1_Trace)) ( )) (ref_method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration (ref_kind ref readonly) var (ref_local_variable_declarator (identifier r1) = ref (variable_reference (invocation_expression (primary_expression (identifier M1)) ( )))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_ref_local_variable_declaration (ref_kind ref readonly) (type (identifier Vector3)) (ref_local_variable_declarators (ref_local_variable_declarator (identifier r2) = ref (variable_reference (explicitly_typed_default default ( (type (identifier Vector3)) ))))))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier Mutate)) ( (argument_list (argument_value ref (variable_reference (identifier r1)))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier Print)) ( (argument_list (argument_value in (variable_reference (identifier r1)))) ))) ;)) (statement (return_statement return ref (variable_reference (identifier r1)) ;))) })))) }))) (class_member_declaration (struct_declaration ref struct (identifier ReadonlyRef2) (struct_body { (struct_member_declaration (method_declaration ref_method_modifiers (ref_kind ref readonly) (ref_return_type (identifier Guid)) (method_header (member_name (identifier Test)) ( (parameter_list (fixed_parameters (fixed_parameter (parameter_modifier (parameter_mode_modifier in)) (type (identifier Vector3)) (identifier v1)) , (fixed_parameter (parameter_modifier (parameter_mode_modifier in)) (type (identifier Vector3)) (identifier v2)))) )) (ref_method_body (block { (statement_list (statement (expression_statement (statement_expression (assignment (unary_expression (identifier v1)) (assignment_operator =) (expression (explicitly_typed_default default ( (type (identifier Vector3)) ))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (member_access (primary_expression (identifier v1)) . (identifier X))) (assignment_operator =) (expression (literal 0)))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier foo)) ( (argument_list (argument_value ref (variable_reference (member_access (primary_expression (identifier v1)) . (identifier X))))) ))) ;)) (statement (return_statement return ref (variable_reference (parenthesized_expression ( (expression (conditional_expression (null_coalescing_expression (equality_expression (equality_expression (identifier arr)) != (relational_expression (null_literal null)))) ? ref (variable_reference (element_access (primary_expression (identifier arr)) [ (argument_list (literal 0)) ])) : ref (variable_reference (element_access (primary_expression (identifier otherArr)) [ (argument_list (literal 0)) ])))) ))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Span) (type_argument_list < (type_argument (integral_type int)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier span) = (local_variable_initializer (stackalloc_expression stackalloc (unmanaged_type (integral_type int)) [ (expression (literal 1)) ])))))) ;)) (statement (return_statement return (expression (object_creation_expression new (type (identifier Vector3)) ( (argument_list (argument (additive_expression (additive_expression (member_access (primary_expression (identifier v1)) . (identifier X))) + (multiplicative_expression (member_access (primary_expression (identifier v2)) . (identifier X))))) , (argument (additive_expression (additive_expression (member_access (primary_expression (identifier v1)) . (identifier Y))) + (multiplicative_expression (member_access (primary_expression (identifier v2)) . (identifier Y))))) , (argument (additive_expression (additive_expression (member_access (primary_expression (identifier v1)) . (identifier Z))) + (multiplicative_expression (member_access (primary_expression (identifier v2)) . (identifier Z)))))) ))) ;))) })))) (struct_member_declaration (method_declaration ref_method_modifiers (ref_kind ref) (ref_return_type (identifier T)) (method_header (member_name (identifier Choice)) ( (parameter_list (fixed_parameters (fixed_parameter (type (simple_type bool)) (identifier condition)) , (fixed_parameter (parameter_modifier (parameter_mode_modifier ref)) (type (identifier T)) (identifier consequence)) , (fixed_parameter (parameter_modifier (parameter_mode_modifier ref)) (type (identifier T)) (identifier alternative)))) )) (ref_method_body (block { (statement_list (if_statement if ( (boolean_expression (identifier condition)) ) (embedded_statement (block { (statement_list (return_statement return ref (variable_reference (identifier consequence)) ;)) })) else (embedded_statement (block { (statement_list (return_statement return ref (variable_reference (identifier alternative)) ;)) })))) })))) }))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier DoSomething)) ( (parameter_list (fixed_parameters (fixed_parameter (type (simple_type bool)) (identifier isEmployed)) , (fixed_parameter (type (class_type string)) (identifier personName)) , (fixed_parameter (type (integral_type int)) (identifier personAge)))) )) (method_body (block { })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier NonTrailingNamedArguments)) ( )) (method_body (block { (statement_list (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier DoSomething)) ( (argument_list (argument (argument_name (identifier isEmployed) :) (argument_value (boolean_literal true))) , (argument (identifier name)) , (argument (identifier age))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier DoSomething)) ( (argument_list (argument (boolean_literal true)) , (argument (argument_name (identifier personName) :) (argument_value (identifier name))) , (argument (identifier age))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier DoSomething)) ( (argument_list (argument (identifier name)) , (argument (argument_name (identifier isEmployed) :) (argument_value (boolean_literal true))) , (argument (identifier age))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier DoSomething)) ( (argument_list (argument (identifier name)) , (argument (identifier age)) , (argument (argument_name (identifier isEmployed) :) (argument_value (boolean_literal true)))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier DoSomething)) ( (argument_list (argument (boolean_literal true)) , (argument (argument_name (identifier personAge) :) (argument_value (identifier age))) , (argument (argument_name (identifier personName) :) (argument_value (identifier name)))) ))) ;))) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier ConditionalRef)) ( )) (method_body (block { (statement_list (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration (ref_kind ref) var (ref_local_variable_declarator (identifier r) = ref (variable_reference (parenthesized_expression ( (expression (conditional_expression (null_coalescing_expression (equality_expression (equality_expression (identifier arr)) != (relational_expression (null_literal null)))) ? ref (variable_reference (element_access (primary_expression (identifier arr)) [ (argument_list (literal 0)) ])) : ref (variable_reference (element_access (primary_expression (identifier otherArr)) [ (argument_list (literal 0)) ])))) )))))) ;)) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier LeadingSeparator)) ( )) (method_body (block { (statement_list (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier res) = (expression (additive_expression (additive_expression (additive_expression (additive_expression (additive_expression (additive_expression (additive_expression (additive_expression (literal 0)) + (multiplicative_expression (literal 123))) + (multiplicative_expression (literal 1_2_3))) + (multiplicative_expression (literal 0x1_2_3))) + (multiplicative_expression (literal 0b101))) + (multiplicative_expression (literal 0b1_0_1))) + (multiplicative_expression (literal 0x_1_2))) + (multiplicative_expression (literal 0b_1_0_1))))))) ;)) })))) }))) (namespace_member_declaration (class_declaration class (identifier CSharp73) (class_body { (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier Blittable)) (type_parameter_list < (decorated_type_parameter (identifier T)) >) ( (parameter_list (fixed_parameter (type (identifier T)) (identifier (contextual_keyword value)))) ) (type_parameter_constraints_clause where (type_parameter (identifier T)) : (type_parameter_constraints (contextual_keyword unmanaged)))) (method_body (block { (statement_list (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword unmanaged)) = (expression (literal 666))))) ;)) })))) (class_member_declaration (struct_declaration (struct_modifier (unsafe_modifier unsafe)) struct (identifier IndexingMovableFixed) (struct_body { (struct_member_declaration (fixed_size_buffer_declaration (fixed_size_buffer_modifier public) fixed (buffer_element_type (integral_type int)) (fixed_size_buffer_declarators (fixed_size_buffer_declarator (identifier myFixedField) [ (constant_expression (literal 10)) ])) ;)) }))) (class_member_declaration (field_declaration (field_modifier static) (type (identifier IndexingMovableFixed)) (variable_declarators (identifier s)) ;)) (class_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier public)) (method_modifier (unsafe_modifier unsafe))) (return_type void) (method_header (member_name (identifier IndexingMovableFixedFields)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (pointer_type (value_type (integral_type int)) *)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier ptr) = (local_variable_initializer (member_access (primary_expression (identifier s)) . (identifier myFixedField))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier t) = (local_variable_initializer (element_access (primary_expression (member_access (primary_expression (identifier s)) . (identifier myFixedField))) [ (argument_list (literal 5)) ])))))) ;))) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier PatternBasedFixed)) ( )) (method_body (block { (statement_list (fixed_statement fixed ( (pointer_type (value_type (integral_type byte)) *) (fixed_pointer_declarators (fixed_pointer_declarator (identifier ptr) = (fixed_pointer_initializer (identifier byteArray)))) ) (embedded_statement (block { })))) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier StackallocArrayInitializer)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Span) (type_argument_list < (type_argument (integral_type int)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (stackalloc_expression stackalloc (unmanaged_type (integral_type int)) [ (expression (literal 3)) ])))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Span) (type_argument_list < (type_argument (integral_type int)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (stackalloc_expression stackalloc (unmanaged_type (integral_type int)) [ (constant_expression (literal 3)) ] (stackalloc_initializer { (stackalloc_initializer_element_list (stackalloc_element_initializer (literal 1)) , (stackalloc_element_initializer (literal 2)) , (stackalloc_element_initializer (literal 3))) }))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Span) (type_argument_list < (type_argument (integral_type int)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (stackalloc_expression stackalloc (unmanaged_type (integral_type int)) [ ] (stackalloc_initializer { (stackalloc_initializer_element_list (stackalloc_element_initializer (literal 1)) , (stackalloc_element_initializer (literal 2)) , (stackalloc_element_initializer (literal 3))) }))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Span) (type_argument_list < (type_argument (integral_type int)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (stackalloc_expression stackalloc [ ] (stackalloc_initializer { (stackalloc_initializer_element_list (stackalloc_element_initializer (literal 1)) , (stackalloc_element_initializer (literal 2)) , (stackalloc_element_initializer (literal 3))) }))))))) ;))) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier TupleEquality)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (tuple_type ( (tuple_type_element (integral_type int)) , (tuple_type_element (tuple_type ( (tuple_type_element (integral_type int)) , (tuple_type_element (integral_type int)) ))) ))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier t1)) , (explicitly_typed_local_variable_declarator (identifier t2))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier res) = (expression (equality_expression (equality_expression (identifier t1)) == (relational_expression (tuple_expression ( (tuple_element (literal 1)) , (tuple_element (tuple_expression ( (tuple_element (literal 2)) , (tuple_element (literal 3)) ))) )))))))) ;))) })))) }))))) +(prog (compilation_unit (namespace_member_declaration (class_declaration class (identifier CSharp70) (class_body { (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier PatternMatching)) ( (parameter_list (fixed_parameters (fixed_parameter (type (class_type string)) (identifier arg)) , (fixed_parameter (type (integral_type int)) (identifier b)))) )) (method_body (block { (statement_list (statement (switch_statement switch (selector_expression ( (expression (identifier arg)) )) (switch_block { (switch_section (switch_label case (pattern (literal "A")) (case_guard when (null_coalescing_expression (relational_expression (relational_expression (identifier b)) > (shift_expression (literal 50))))) :) (switch_label case (pattern (literal "B")) (case_guard when (null_coalescing_expression (relational_expression (relational_expression (identifier b)) < (shift_expression (literal 50))))) :) (switch_label default :) (statement_list (break_statement break ;))) }))) (statement (declaration_statement (local_deconstructing_declaration (declaration_deconstructor ( (declaration_deconstructor_element (declaration_expression (local_variable_type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) , (type_argument (identifier C)) >))) (identifier D))) , (declaration_deconstructor_element (declaration_expression (local_variable_type (namespace_or_type_name (identifier E) (type_argument_list < (type_argument (identifier F)) , (type_argument (identifier G)) >))) (identifier H))) )) = (expression (identifier e))) ;)) (statement (if_statement if ( (boolean_expression (relational_expression (relational_expression (null_conditional_member_access (primary_expression (null_conditional_member_access (primary_expression (identifier x)) ? . (identifier y))) ? . (identifier z))) is (pattern (declaration_pattern (type (identifier Type)) (simple_designation (identifier value2)))))) ) (embedded_statement (block { })))) (statement (if_statement if ( (boolean_expression (relational_expression (relational_expression (identifier expr)) is (pattern (declaration_pattern (type (identifier Type)) (simple_designation (identifier v)))))) ) (embedded_statement (block { (statement_list (expression_statement (statement_expression (invocation_expression (primary_expression (identifier Hello)) ( ))) ;)) }))))) })))) (class_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier public)) (method_modifier (ref_method_modifier static)) (method_modifier async)) (return_type (identifier Task)) (method_header (member_name (identifier LocalFunctions)) ( (parameter_list (fixed_parameter (type (array_type (non_array_type (class_type string)) (rank_specifier [ ]))) (identifier args))) )) (method_body (block { (statement_list (statement (local_function_declaration (return_type (class_type string)) (local_function_header (identifier Hello2) ( (parameter_list (fixed_parameter (type (integral_type int)) (identifier i))) )) (local_function_body (block { (statement_list (return_statement return (expression (element_access (primary_expression (identifier args)) [ (argument_list (identifier i)) ])) ;)) })))) (statement (local_function_declaration (local_function_modifier async) (return_type (namespace_or_type_name (identifier Task) (type_argument_list < (type_argument (class_type string)) >))) (local_function_header (identifier Hello) (type_parameter_list < (decorated_type_parameter (identifier T)) >) ( (parameter_list (fixed_parameter (type (identifier T)) (identifier i))) )) (local_function_body => (expression (await_expression await (unary_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier Task)) . (identifier FromResult))) ( (argument_list (element_access (primary_expression (identifier args)) [ (argument_list (identifier i)) ])) ))))) ;))) (statement (expression_statement (statement_expression (await_expression await (unary_expression (invocation_expression (primary_expression (identifier Hello)) ( (argument_list (literal 1)) ))))) ;))) })))) (class_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier public)) (method_modifier (ref_method_modifier static))) (return_type void) (method_header (member_name (identifier OutVar)) ( (parameter_list (fixed_parameter (type (array_type (non_array_type (class_type string)) (rank_specifier [ ]))) (identifier args))) )) (method_body (block { (statement_list (statement (expression_statement (statement_expression (invocation_expression (primary_expression (member_access (predefined_type int) . (identifier TryParse))) ( (argument_list (argument (invocation_expression (primary_expression (identifier Hello)) ( (argument_list (literal 1)) ))) , (argument (argument_value out (declaration_expression (local_variable_type (contextual_keyword var)) (identifier item))))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (member_access (predefined_type int) . (identifier TryParse))) ( (argument_list (argument (invocation_expression (primary_expression (identifier Hello)) ( (argument_list (literal 1)) ))) , (argument (argument_value out (declaration_expression (local_variable_type (integral_type int)) (identifier item))))) ))) ;))) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier ThrowExpression)) ( )) (method_body (block { (statement_list (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier result) = (expression (null_coalescing_expression (conditional_or_expression (identifier nullableResult)) ?? (null_coalescing_expression (throw_expression throw (null_coalescing_expression (object_creation_expression new (type (identifier NullReferenceException)) ( )))))))))) ;)) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier BinaryLiterals)) ( )) (method_body (block { (statement_list (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier nineteen) = (local_variable_initializer (literal 0b10011)))))) ;)) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier DigitSeparators)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier bin) = (local_variable_initializer (literal 0b1001_1010_0001_0100)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier hex) = (local_variable_initializer (literal 0x1b_a0_44_fe)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier dec) = (local_variable_initializer (literal 33_554_432)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier weird) = (local_variable_initializer (literal 1_2__3___4____5_____6______7_______8________9)))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (floating_point_type double)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier real) = (local_variable_initializer (literal 1_000.111_1e-1_000)))))) ;))) })))) }))) (namespace_member_declaration (class_declaration class (identifier CSharp71) (class_body { (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier DefaultWithoutTypeName)) ( (parameter_list (fixed_parameter (type (class_type string)) (identifier content) (default_argument = (expression (default_literal default))))) )) (method_body (block { (statement_list (expression_statement (statement_expression (invocation_expression (primary_expression (identifier DefaultWithoutTypeName)) ( (argument_list (default_literal default)) ))) ;)) })))) (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier TupleRecognize)) ( (parameter_list (fixed_parameters (fixed_parameter (type (integral_type int)) (identifier a)) , (fixed_parameter (type (tuple_type ( (tuple_type_element (integral_type int)) , (tuple_type_element (integral_type int)) ))) (identifier b)) , (fixed_parameter (type (nullable_value_type (non_nullable_value_type (tuple_type ( (tuple_type_element (integral_type int)) , (tuple_type_element (integral_type int)) , (tuple_type_element (integral_type int)) ))) (nullable_type_annotation ?))) (identifier c)))) )) (method_body (block { (statement_list (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier result) = (expression (invocation_expression (primary_expression (member_access (primary_expression (invocation_expression (primary_expression (member_access (primary_expression (identifier list)) . (identifier Select))) ( (argument_list (lambda_expression (anonymous_function_signature (identifier c)) => (anonymous_function_body (tuple_literal ( (tuple_element (member_access (primary_expression (identifier c)) . (identifier f1))) , (tuple_element (identifier f3) : (expression (member_access (primary_expression (identifier c)) . (identifier f2)))) ))))) ))) . (identifier Where))) ( (argument_list (lambda_expression (anonymous_function_signature (identifier t)) => (anonymous_function_body (equality_expression (equality_expression (member_access (primary_expression (identifier t)) . (identifier f2))) == (relational_expression (literal 1)))))) )))))) ;)) })))) }))) (namespace_member_declaration (class_declaration class (identifier CSharp72) (class_body { (class_member_declaration (struct_declaration (struct_modifier readonly) struct (identifier ReadonlyRef1) (struct_body { (struct_member_declaration (field_declaration (type (namespace_or_type_name (identifier Func) (type_argument_list < (type_argument (integral_type int)) , (type_argument (integral_type int)) >))) (variable_declarators (variable_declarator (identifier s) = (variable_initializer (lambda_expression (anonymous_function_signature (explicit_anonymous_function_signature ( (explicit_anonymous_function_parameter_list (explicit_anonymous_function_parameter (anonymous_function_parameter_modifier in) (type (integral_type int)) (identifier x))) ))) => (anonymous_function_body (identifier x)))))) ;)) (struct_member_declaration (indexer_declaration (ref_kind ref) (indexer_declarator (type (identifier TValue)) this [ (parameter_list (fixed_parameter (parameter_modifier (parameter_mode_modifier in)) (type (identifier TKey)) (identifier index))) ]) (ref_indexer_body => ref (variable_reference (null_literal null)) ;))) (struct_member_declaration (operator_declaration (operator_modifier public) (operator_modifier static) (operator_declarator (binary_operator_declarator (type (identifier Vector3)) operator (overloadable_binary_operator +) ( (fixed_parameter (parameter_modifier (parameter_mode_modifier in)) (type (identifier Vector3)) (identifier x)) , (fixed_parameter (parameter_modifier (parameter_mode_modifier in)) (type (identifier Vector3)) (identifier y)) ))) (operator_body => (expression (null_literal null)) ;))) (struct_member_declaration (method_declaration (ref_method_modifiers (ref_method_modifier static)) (ref_kind ref readonly) (ref_return_type (identifier Vector3)) (method_header (member_name (identifier M1_Trace)) ( )) (ref_method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration (ref_kind ref readonly) var (ref_local_variable_declarator (identifier r1) = ref (variable_reference (invocation_expression (primary_expression (identifier M1)) ( )))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_ref_local_variable_declaration (ref_kind ref readonly) (type (identifier Vector3)) (ref_local_variable_declarators (ref_local_variable_declarator (identifier r2) = ref (variable_reference (explicitly_typed_default default ( (type (identifier Vector3)) ))))))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier Mutate)) ( (argument_list (argument_value ref (variable_reference (identifier r1)))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier Print)) ( (argument_list (argument_value in (variable_reference (identifier r1)))) ))) ;)) (statement (return_statement return ref (variable_reference (identifier r1)) ;))) })))) }))) (class_member_declaration (struct_declaration ref struct (identifier ReadonlyRef2) (struct_body { (struct_member_declaration (method_declaration ref_method_modifiers (ref_kind ref readonly) (ref_return_type (identifier Guid)) (method_header (member_name (identifier Test)) ( (parameter_list (fixed_parameters (fixed_parameter (parameter_modifier (parameter_mode_modifier in)) (type (identifier Vector3)) (identifier v1)) , (fixed_parameter (parameter_modifier (parameter_mode_modifier in)) (type (identifier Vector3)) (identifier v2)))) )) (ref_method_body (block { (statement_list (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier v1)) = (expression (explicitly_typed_default default ( (type (identifier Vector3)) ))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (member_access (primary_expression (identifier v1)) . (identifier X))) = (expression (literal 0)))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier foo)) ( (argument_list (argument_value ref (variable_reference (member_access (primary_expression (identifier v1)) . (identifier X))))) ))) ;)) (statement (return_statement return ref (variable_reference (parenthesized_expression ( (expression (conditional_expression (null_coalescing_expression (equality_expression (equality_expression (identifier arr)) != (relational_expression (null_literal null)))) ? ref (variable_reference (element_access (primary_expression (identifier arr)) [ (argument_list (literal 0)) ])) : ref (variable_reference (element_access (primary_expression (identifier otherArr)) [ (argument_list (literal 0)) ])))) ))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Span) (type_argument_list < (type_argument (integral_type int)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier span) = (local_variable_initializer (stackalloc_expression stackalloc (unmanaged_type (integral_type int)) [ (expression (literal 1)) ])))))) ;)) (statement (return_statement return (expression (object_creation_expression new (type (identifier Vector3)) ( (argument_list (argument (additive_expression (additive_expression (member_access (primary_expression (identifier v1)) . (identifier X))) + (multiplicative_expression (member_access (primary_expression (identifier v2)) . (identifier X))))) , (argument (additive_expression (additive_expression (member_access (primary_expression (identifier v1)) . (identifier Y))) + (multiplicative_expression (member_access (primary_expression (identifier v2)) . (identifier Y))))) , (argument (additive_expression (additive_expression (member_access (primary_expression (identifier v1)) . (identifier Z))) + (multiplicative_expression (member_access (primary_expression (identifier v2)) . (identifier Z)))))) ))) ;))) })))) (struct_member_declaration (method_declaration ref_method_modifiers (ref_kind ref) (ref_return_type (identifier T)) (method_header (member_name (identifier Choice)) ( (parameter_list (fixed_parameters (fixed_parameter (type (simple_type bool)) (identifier condition)) , (fixed_parameter (parameter_modifier (parameter_mode_modifier ref)) (type (identifier T)) (identifier consequence)) , (fixed_parameter (parameter_modifier (parameter_mode_modifier ref)) (type (identifier T)) (identifier alternative)))) )) (ref_method_body (block { (statement_list (if_statement if ( (boolean_expression (identifier condition)) ) (embedded_statement (block { (statement_list (return_statement return ref (variable_reference (identifier consequence)) ;)) })) else (embedded_statement (block { (statement_list (return_statement return ref (variable_reference (identifier alternative)) ;)) })))) })))) }))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier DoSomething)) ( (parameter_list (fixed_parameters (fixed_parameter (type (simple_type bool)) (identifier isEmployed)) , (fixed_parameter (type (class_type string)) (identifier personName)) , (fixed_parameter (type (integral_type int)) (identifier personAge)))) )) (method_body (block { })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier NonTrailingNamedArguments)) ( )) (method_body (block { (statement_list (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier DoSomething)) ( (argument_list (argument (argument_name (identifier isEmployed) :) (argument_value (boolean_literal true))) , (argument (identifier name)) , (argument (identifier age))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier DoSomething)) ( (argument_list (argument (boolean_literal true)) , (argument (argument_name (identifier personName) :) (argument_value (identifier name))) , (argument (identifier age))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier DoSomething)) ( (argument_list (argument (identifier name)) , (argument (argument_name (identifier isEmployed) :) (argument_value (boolean_literal true))) , (argument (identifier age))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier DoSomething)) ( (argument_list (argument (identifier name)) , (argument (identifier age)) , (argument (argument_name (identifier isEmployed) :) (argument_value (boolean_literal true)))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier DoSomething)) ( (argument_list (argument (boolean_literal true)) , (argument (argument_name (identifier personAge) :) (argument_value (identifier age))) , (argument (argument_name (identifier personName) :) (argument_value (identifier name)))) ))) ;))) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier RefAssignment)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (literal 1))) , (explicitly_typed_local_variable_declarator (identifier b) = (local_variable_initializer (literal 2)))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration (ref_kind ref) var (ref_local_variable_declarator (identifier r) = ref (variable_reference (identifier a))))) ;)) (statement (expression_statement (statement_expression (ref_assignment (unary_expression (identifier r)) = ref (expression (identifier b)))) ;))) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier ConditionalRef)) ( )) (method_body (block { (statement_list (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration (ref_kind ref) var (ref_local_variable_declarator (identifier r) = ref (variable_reference (parenthesized_expression ( (expression (conditional_expression (null_coalescing_expression (equality_expression (equality_expression (identifier arr)) != (relational_expression (null_literal null)))) ? ref (variable_reference (element_access (primary_expression (identifier arr)) [ (argument_list (literal 0)) ])) : ref (variable_reference (element_access (primary_expression (identifier otherArr)) [ (argument_list (literal 0)) ])))) )))))) ;)) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier LeadingSeparator)) ( )) (method_body (block { (statement_list (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier res) = (expression (additive_expression (additive_expression (additive_expression (additive_expression (additive_expression (additive_expression (additive_expression (additive_expression (literal 0)) + (multiplicative_expression (literal 123))) + (multiplicative_expression (literal 1_2_3))) + (multiplicative_expression (literal 0x1_2_3))) + (multiplicative_expression (literal 0b101))) + (multiplicative_expression (literal 0b1_0_1))) + (multiplicative_expression (literal 0x_1_2))) + (multiplicative_expression (literal 0b_1_0_1))))))) ;)) })))) }))) (namespace_member_declaration (class_declaration class (identifier CSharp73) (class_body { (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier Blittable)) (type_parameter_list < (decorated_type_parameter (identifier T)) >) ( (parameter_list (fixed_parameter (type (identifier T)) (identifier (contextual_keyword value)))) ) (type_parameter_constraints_clause where (type_parameter (identifier T)) : (type_parameter_constraints (contextual_keyword unmanaged)))) (method_body (block { (statement_list (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier (contextual_keyword unmanaged)) = (expression (literal 666))))) ;)) })))) (class_member_declaration (struct_declaration (struct_modifier (unsafe_modifier unsafe)) struct (identifier IndexingMovableFixed) (struct_body { (struct_member_declaration (fixed_size_buffer_declaration (fixed_size_buffer_modifier public) fixed (buffer_element_type (integral_type int)) (fixed_size_buffer_declarators (fixed_size_buffer_declarator (identifier myFixedField) [ (constant_expression (literal 10)) ])) ;)) }))) (class_member_declaration (field_declaration (field_modifier static) (type (identifier IndexingMovableFixed)) (variable_declarators (identifier s)) ;)) (class_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier public)) (method_modifier (unsafe_modifier unsafe))) (return_type void) (method_header (member_name (identifier IndexingMovableFixedFields)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (pointer_type (value_type (integral_type int)) *)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier ptr) = (local_variable_initializer (member_access (primary_expression (identifier s)) . (identifier myFixedField))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (integral_type int)) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier t) = (local_variable_initializer (element_access (primary_expression (member_access (primary_expression (identifier s)) . (identifier myFixedField))) [ (argument_list (literal 5)) ])))))) ;))) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier PatternBasedFixed)) ( )) (method_body (block { (statement_list (fixed_statement fixed ( (pointer_type (value_type (integral_type byte)) *) (fixed_pointer_declarators (fixed_pointer_declarator (identifier ptr) = (fixed_pointer_initializer (identifier byteArray)))) ) (embedded_statement (block { })))) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier StackallocArrayInitializer)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Span) (type_argument_list < (type_argument (integral_type int)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (stackalloc_expression stackalloc (unmanaged_type (integral_type int)) [ (expression (literal 3)) ])))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Span) (type_argument_list < (type_argument (integral_type int)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (stackalloc_expression stackalloc (unmanaged_type (integral_type int)) [ (constant_expression (literal 3)) ] (stackalloc_initializer { (stackalloc_initializer_element_list (stackalloc_element_initializer (literal 1)) , (stackalloc_element_initializer (literal 2)) , (stackalloc_element_initializer (literal 3))) }))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Span) (type_argument_list < (type_argument (integral_type int)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (stackalloc_expression stackalloc (unmanaged_type (integral_type int)) [ ] (stackalloc_initializer { (stackalloc_initializer_element_list (stackalloc_element_initializer (literal 1)) , (stackalloc_element_initializer (literal 2)) , (stackalloc_element_initializer (literal 3))) }))))))) ;)) (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (namespace_or_type_name (identifier Span) (type_argument_list < (type_argument (integral_type int)) >))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier a) = (local_variable_initializer (stackalloc_expression stackalloc [ ] (stackalloc_initializer { (stackalloc_initializer_element_list (stackalloc_element_initializer (literal 1)) , (stackalloc_element_initializer (literal 2)) , (stackalloc_element_initializer (literal 3))) }))))))) ;))) })))) (class_member_declaration (method_declaration (method_modifiers (ref_method_modifier public)) (return_type void) (method_header (member_name (identifier TupleEquality)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_variable_declaration (explicitly_typed_local_variable_declaration (type (tuple_type ( (tuple_type_element (integral_type int)) , (tuple_type_element (tuple_type ( (tuple_type_element (integral_type int)) , (tuple_type_element (integral_type int)) ))) ))) (explicitly_typed_local_variable_declarators (explicitly_typed_local_variable_declarator (identifier t1)) , (explicitly_typed_local_variable_declarator (identifier t2))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier res) = (expression (equality_expression (equality_expression (identifier t1)) == (relational_expression (tuple_literal ( (tuple_element (literal 1)) , (tuple_element (tuple_literal ( (tuple_element (literal 2)) , (tuple_element (literal 3)) ))) )))))))) ;))) })))) }))))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.tree.svg index 71a511d87..f09c8ed86 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/Reference/sample.tree.svg @@ -1,17 +1,17 @@ - - - - - - - - - - - - + + + + + + + + + + + + - + @@ -32,11 +32,11 @@ - - - - - + + + + + @@ -90,10966 +90,11286 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -integral_type - - - -stackalloc_initializer - - - -statement_list - - - -void + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +identifier + + + +[ - - -method_header + + +argument_list - - -int + + +identifier - - -DoSomething + + +ThrowExpression - - -public + + +contextual_keyword - - -personName + + +primary_expression - - -M1_Trace + + +} - - -additive_expression + + +Y - - -type_argument_list + + +=> - - + + ) - - -expression - - - -> + + +void - - -statement + + +a - - -) + + +ref - - -integral_type + + +primary_expression - - -identifier + + +statement - - -local_variable_declaration + + +TryParse - - -expression_statement + + +local_variable_initializer - - + + type - - -ref + + +item - - -array_type + + +identifier - - -break_statement + + +identifier - - -primary_expression + + +case - - -primary_expression + + +identifier - - -method_body + + +[ - - -simple_designation + + +element_access - - -method_modifiers + + +statement - - -ref + + +fixed_parameter - - -primary_expression + + +. - - -stackalloc_element_initializer + + +explicitly_typed_local_variable_declarators - - + + ) - - -( + + +local_variable_declaration - - -additive_expression + + +ref_kind - - -fixed_parameters + + +type_argument - - -declaration_statement + + +< - - -1 + + +primary_expression - - -( + + +boolean_expression - - -] + + +void - - -argument_list + + +2 - - -statement_expression + + +integral_type - - -default_literal + + +operator_body - - -) + + +class_member_declaration - - -integral_type + + +identifier - - -= + + +method_body - - -is + + +var - - -int + + +identifier - - -type + + +Where - - + + type - - -block + + +expression - - -identifier + + +) - - -type + + +1 - - -) + + +expression - - -condition + + +element_access - - -integral_type + + +? - - -namespace_or_type_name + + +in - - -identifier + + +LeadingSeparator - - -stackalloc_expression + + +3 - - -local_function_header + + +method_modifiers - - -parameter_list + + +method_body - - -) + + +declaration_statement - - -argument + + +if - - -class_declaration + + +await_expression - - -type + + +b - - -= + + +struct_member_declaration - - -method_declaration + + +identifier + + + +) - - + + identifier - - -block + + += - - -v1 + + +identifier - - -member_name + + +ref_return_type - - -relational_expression + + +identifier - - -) + + +ref - - -boolean_literal + + += - - -666 + + +additive_expression - - -tuple_element + + ++ - - -{ + + +int - - -member_name + + +) - - -statement_expression + + +local_variable_declaration - - -argument_list + + +tuple_type_element - - -; + + +method_declaration - - -Vector3 + + +expression - - -void + + +type - - -namespace_member_declaration + + +parameter_list + + + +argument_value - - + + identifier - - -tuple_element + + +statement_expression - - -1_2__3___4____5_____6______7_______8________9 + + +parameter_list - - -F + + +parameter_list - - -local_function_declaration + + += - - -local_variable_declaration + + +a - - -item + + +type - - -true + + +ptr - - -fixed_parameter + + +res - - -statement_expression + + +public - - + + int - - -literal + + +. - - -) + + +] - - -struct_body + + +literal - - -> + + +statement_list - - -{ + + +return_type - - -public + + +void - - -identifier + + +method_header - - + + ( - - -int + + +identifier - - -primary_expression + + +v1 - - -class_member_declaration + + +primary_expression - - -33_554_432 + + +parameter_mode_modifier - - -stackalloc_initializer + + +myFixedField - - -statement + + +additive_expression - - -ref + + +) - - -operator_declarator + + +local_variable_declaration - - -member_access + + +Vector3 - - -member_name + + +unmanaged - - -[ + + +tuple_element - - + + identifier - - -v1 - - - -statement + + +null_literal - - -< + + +argument_list - - -var + + +identifier - - -, + + +element_access - - -] + + +real - - -literal + + +DefaultWithoutTypeName - - -explicitly_typed_local_variable_declarator + + +var - - -type + + +stackalloc_initializer_element_list - - -type + + +tuple_type_element - - -method_header + + +nullable_value_type - - -2 + + +) - - + + identifier - - -v1 - - - -type_argument - - - -H - - - -struct_member_declaration + + +explicitly_typed_local_variable_declaration - - -method_header + + += - - -argument + + +expression_statement - - -Vector3 + + +fixed_pointer_initializer - - -member_name + + +identifier - - -ref_method_modifier + + +declaration_statement - - -; + + +implicitly_typed_local_variable_declarator - - -expression + + +method_declaration - - + + ] - - -type_argument - - - -static + + +identifier - - -async + + +return - - -. + + +type_argument - - -in + + +string - - -type_argument_list + + +declaration_statement - - -method_modifiers + + +local_variable_declaration - - -tuple_element + + +variable_reference - - -method_header + + +fixed_size_buffer_declarator - - -type + + +null - - -default_literal + + +ref_local_variable_declarator - - -readonly + + += - - -{ + + +literal - - -int + + +Select - - -< + + +b - - -int + + +0 - - -switch_label + + +invocation_expression - - -relational_expression + + +primary_expression - - -statement + + +identifier - - -argument + + +parameter_mode_modifier - - -multiplicative_expression + + +{ - - -explicitly_typed_local_variable_declaration + + +return_type - - -, + + +null_coalescing_expression - - -[ + + +T - - -fixed_parameter + + +) - - + + member_name - - -identifier + + +fixed - - -identifier + + +block - - -method_declaration + + +, - - -declaration_statement + + +equality_expression - - -, + + +true - - -statement_expression + + +statement_list - - + + identifier - - + + ; - - -unary_expression + + +r1 - - -< + + +simple_designation - - -explicitly_typed_local_variable_declaration + + +int - - -argument + + +return_type - - -{ + + +identifier - - -expression + + +identifier - - -) + + +block - - -overloadable_binary_operator + + +statement - - -Print + + +=> - - -additive_expression + + +variable_reference - - -; + + +identifier - - -tuple_expression + + +RefAssignment - - -expression + + +type_argument - - -explicitly_typed_local_variable_declarator + + +literal - - -( + + +expression_statement - - -argument_value + + += - - -method_declaration + + +primary_expression - - -method_header + + +primary_expression - - -explicit_anonymous_function_signature + + +explicitly_typed_local_variable_declaration - - -statement + + +literal - - -parameter_modifier + + +a - - -relational_expression + + +void - - -( + + +{ - - + + literal - - -class_member_declaration + + +member_name - - -f2 + + +namespace_member_declaration - - -element_access + + +stackalloc_element_initializer - - + + identifier - - -pointer_type - - - -[ + + +block - - -FromResult + + +: - - -namespace_or_type_name + + +struct_declaration - - -> + + +local_variable_declaration - - -( + + += - - + + , - - -Span + + +fixed_parameters - - -case + + +method_modifiers - - + + identifier - - -item + + +declaration_statement - - -identifier + + +class_member_declaration - - -, + + +member_name - - -identifier + + +) - - -( + + +literal - - -stackalloc_element_initializer + + +block - - -name + + +method_header - - -) + + +block - - -unsafe_modifier + + +; - - -in + + +ref_method_modifier - - -type + + +unmanaged_type - - -ReadonlyRef1 + + +argument_list - - -variable_declarators + + +[ - - -, + + +method_header - - -method_body + + +local_variable_type - - -statement + + +literal - - -type_parameter_constraints_clause + + +0x1b_a0_44_fe - - -expression + + +== - - -explicitly_typed_local_variable_declaration + + +fixed_parameter - - -statement_expression + + +public - - -class_member_declaration + + +identifier - - -int + + +type - - -} + + +method_modifier - - -struct_member_declaration + + ++ - - -additive_expression + + +personName - - -, + + +class_type - - -var + + +ref_kind - - + + identifier - - -method_header + + +ref - - -struct_member_declaration + + +{ - - -expression + + +50 - - -unary_expression + + +await - - -identifier + + +ref - - -return_type + + += + + + +, - - + + identifier - - -integral_type + + +parameter_list - - -statement + + +, - - -arr + + +identifier - - -tuple_type + + +identifier - - -expression_statement + + +class_member_declaration - - -multiplicative_expression + + +type_argument_list - - -+ + + +DoSomething - - -method_modifiers + + +argument_list - - + + identifier - - -member_name + + +implicitly_typed_local_variable_declaration - - -age + + +. - - -statement_list + + +type - - -[ - - - -ref_local_variable_declarator - - - -= - - - -identifier + + +, - - -} + + +conditional_expression - - -argument + + +local_variable_initializer - - -unsafe_modifier + + ++ - - -indexer_declaration + + +block - - -return + + +integral_type - - -parameter_list + + +argument_value - - -invocation_expression + + +identifier - - -throw + + +identifier - - + + public - - + + identifier - - -in - - - -method_declaration + + +type - - -{ + + +integral_type - - + + identifier - - -declaration_statement - - - -literal + + +parameter_modifier - - -BinaryLiterals + + +{ - - -tuple_type + + +] - - -1 + + +array_type - - -, + + +< - - -tuple_type_element + + +statement_list - - -int + + += - - -expression + + +; - - -anonymous_function_parameter_modifier + + +; - - -method_modifier + + +namespace_or_type_name - - -. + + +new - - -Where + + +operator - - + + identifier - - -; + + +unmanaged_type - - + + identifier - - -: - - - -integral_type + + +type - - -local_variable_declaration + + +identifier - - -( + + +explicitly_typed_local_variable_declarator - - -void + + +identifier - - -= + + +floating_point_type - - -expression + + +variable_reference - - -identifier + + +parameter_list - - -ref_method_body + + +z - - -stackalloc + + +argument - - -, + + +{ - - + + literal - - -; - - - -pattern + + +member_name - - -} + + +0b1001_1010_0001_0100 - - -) + + +primary_expression - - -decorated_type_parameter + + +( - - -{ + + +tuple_literal - - -( + + +multiplicative_expression - - -identifier + + +E - - -M1 + + +ref - - + + ( - - -argument + + +ref_kind - - + + +int + + + local_variable_declaration - - -( + + +element_access - - -identifier + + +type - - -nineteen + + +expression_statement - - -Hello + + +identifier - - -=> + + +} - - -parenthesized_expression + + +r1 - - -A + + +identifier - - -tuple_type_element + + +; - - -ref_kind + + +: - - -[ + + +explicitly_typed_local_variable_declarator - - -type_parameter_list + + +ref - - -identifier + + +stackalloc_element_initializer - - -identifier + + +method_header - - -string + + +member_name - - -identifier + + +explicitly_typed_local_variable_declarator - - -anonymous_function_signature + + +variable_reference - - -block + + +: - - -type + + +DoSomething - - -class_type + + +class_member_declaration - - -; + + +explicitly_typed_ref_local_variable_declaration - - + + identifier - - -1 + + +type - - -public + + +v2 - - -= + + +, - - -identifier + + +parameter_list - - + + return_statement - - -method_body - - - -local_variable_declaration - - - -local_variable_initializer + + +argument - - -implicitly_typed_local_variable_declarator + + +bool - - -explicitly_typed_local_variable_declaration + + +return_type - - -bool + + +return_type - - -3 + + +} - - -T + + +a - - -primary_expression + + +literal - - -< + + +type - - -( + + +identifier - - -integral_type + + +static - - -public + + +type - - -when + + +identifier - - -declaration_statement + + += - - -( + + +static - - -expression_statement + + +identifier - - -integral_type + + +Print - - -literal + + +method_modifier - - + + invocation_expression - - -ref + + +stackalloc_expression - - -fixed_parameter + + +additive_expression - - -identifier + + +indexer_declarator - - -statement + + +member_name - - -{ + + +0x_1_2 - - -argument_list + + +identifier - - -block + + +ref - - -statement_list + + +T - - -DoSomething + + +class_type - - -block + + +f2 - - -a + + +> - - + + identifier - - -argument_list + + +local_variable_declaration - - -identifier + + +< - - -parameter_list + + +boolean_literal - - -Hello + + +stackalloc_element_initializer - - -switch_section + + +fixed_parameters - - -ref_method_modifiers + + +. - - -: + + +element_access - - -ref_kind + + +explicitly_typed_local_variable_declaration - - -member_name + + +relational_expression - - -fixed_size_buffer_declarator + + +arr - - -fixed + + +stackalloc - - -TupleRecognize + + +public - - -Mutate + + +method_declaration - - -( + + +{ - - -123 + + +ref - - -invocation_expression + + +Hello - - -expression_statement + + +method_body - - -primary_expression + + +< - - -ref + + +Vector3 - - -otherArr + + +argument_value - - -argument_name + + +c - - -expression + + +explicitly_typed_local_variable_declarators - - -identifier + + +variable_reference - - -. + + +expression_statement - - -identifier + + +argument_value - - -local_variable_initializer + + +tuple_element - - -c + + +expression - - -case + + +unary_expression - - -Hello + + +readonly - - -Blittable + + +additive_expression - - -class + + +statement - - -primary_expression + + +nullableResult - - -} + + +var - - -} + + +identifier - - -x + + +return_type - - -statement + + +simple_assignment - - -identifier + + +declaration_deconstructor - - -type_parameter_list + + +{ - - -Task + + +method_declaration - - -type_argument + + +explicitly_typed_local_variable_declarators - - -+ + + +( - - -. + + +identifier - - -fixed_parameter + + +int - - -} + + +argument_list - - -invocation_expression + + +, - - -expression + + +type - - -argument_list + + +ref_kind - - -. + + +identifier - - -if + + +t2 - - -boolean_expression + + +explicitly_typed_default - - -0 + + +; - - -consequence + + +parameter_list - - -block + + +literal - - -statement_list + + +identifier - - -ref + + +argument - - -return + + +fixed_statement - - -member_access + + +rank_specifier - - + + identifier - - -namespace_or_type_name + + +, - - -identifier + + +fixed_size_buffer_declarators - - -ref_method_modifier + + +local_variable_declaration - - -{ + + +local_variable_declaration - - -explicitly_typed_local_variable_declarator + + +string - - -, + + +non_nullable_value_type - - + + identifier - - -explicit_anonymous_function_parameter_list - - - -Z + + +identifier - - -literal + + +variable_reference - - -parameter_mode_modifier + + +int - - -boolean_literal + + +IndexingMovableFixed - - -switch + + +integral_type - - -equality_expression + + +; - - -literal + + +) - - -identifier + + +Guid - - -"A" + + +statement_list - - -lambda_expression + + +local_function_declaration - - -y + + +identifier - - -( + + +identifier - - -variable_reference + + +{ - - -( + + +default - - -null + + +parameter_modifier - - -local_function_modifier + + +} - - -return_statement + + +ref_method_modifier - - -: + + +declaration_statement - - + + method_declaration - - -fixed_parameter - - - + + identifier - - -implicitly_typed_local_variable_declaration - - - -+ - - - -Vector3 + + +x - - -method_declaration + + +identifier - - -parameter_list + + +method_header - - -( + + +statement_list - - -= + + +int - - -; + + +declaration_statement - - -primary_expression + + +identifier - - -+ + + +) - - -identifier + + +tuple_type_element - - -=> + + +) - - -identifier + + +method_declaration - - -+ + + +array_type - - -await + + +method_declaration - - -personName + + +} - - -class_type + + +explicitly_typed_local_variable_declarators - - -identifier + + +int - - -embedded_statement + + +equality_expression - - -identifier + + +additive_expression - - -identifier + + +stackalloc_element_initializer - - -block + + +X - - -tuple_element + + +type - - -statement + + +ref_method_modifier - - + + ) - - -} - - - -; + + +parameter_mode_modifier - - -argument + + +. - - -primary_expression + + +} - - -invocation_expression + + +: - - -member_access + + +additive_expression - - -literal + + +, - - -void + + +) - - -identifier + + +explicitly_typed_local_variable_declaration - - -additive_expression + + +class - - -type_argument_list + + +1 - - -expression_statement + + +ref_method_modifier - - -parameter_list + + +int - - -implicitly_typed_local_variable_declaration + + +arr - - -( + + +method_modifiers - - -> + + +class_member_declaration - - -literal + + +field_declaration - - + + identifier - - -class_member_declaration - - - -) + + +int - - -null_coalescing_expression + + +invocation_expression - - -explicitly_typed_local_variable_declarator + + +parameter_modifier - - -, + + +tuple_element - - -switch_label + + +; - - -element_access + + +member_access - - -identifier + + +( - - -integral_type + + +invocation_expression - - -= + + +if_statement - - + + } - - -explicitly_typed_local_variable_declarators + + +; - - -1 + + +variable_reference - - -element_access + + +if + + + +stackalloc_initializer_element_list + + + +statement - - + + ) - - -Task + + +] - - -f2 + + +a - - -explicitly_typed_local_variable_declarator + + +out - - -identifier + + +integral_type + + + +relational_expression + + + +unsafe_modifier + + + +} + + + +primary_expression + + + +} + + + +shift_expression + + + +personAge + + + +parenthesized_expression + + + +; - - + + +expression + + + +. + + + +argument_list + + + +statement + + + +expression + + + +literal + + + +null_literal + + + += + + + +pattern + + + +literal + + + +type + + + +method_declaration + + + +Z + + + +statement_expression + + + +int + + + +!= + + + identifier - - + + +) + + + +type + + + identifier - - -ref_method_modifiers + + +stackalloc - - -class_body + + +string - - + + method_body - - -( + + +alternative - - -, + + +} - - -await + + +identifier - - -( + + +; - - -assignment_operator + + +] - - -literal + + +field_declaration - - -ReadonlyRef2 + + +; - - -statement + + +method_declaration - - -parameter_modifier + + +> + + + +statement_expression + + + +3 + + + +block + + + +explicitly_typed_local_variable_declaration + + + +; + + + +stackalloc_initializer - - + + +block + + + +primary_expression + + + +: + + + +type + + + +T + + + +parameter_mode_modifier + + + member_access - - -< + + +33_554_432 - - + + +block + + + identifier - - -) + + +if - - + + +method_header + + + literal - - -fixed_parameter + + +integral_type - - -int + + +type - - -tuple_type_element + + +3 - - -literal + + +. - - -{ + + +type + + + +return_type + + + +) + + + +DefaultWithoutTypeName + + + +byte + + + +statement + + + +return_statement + + + +class_type + + + +=> + + + +integral_type - - + + +parameter_list + + + ref - - -buffer_element_type + + +, - - -r1 + + +invocation_expression + + + +i + + + +async - - + + identifier - - -{ + + +identifier - - -( + + +simple_type - - -literal + + +namespace_member_declaration - - -( + + +identifier - - -return_statement + + +primary_expression - - -( + + +switch_label - - -ref_method_modifier + + +statement - - -, + + +b - - + + +identifier + + + +fixed_parameter + + + +out + + + +member_name + + + +lambda_expression + + + +expression_statement + + + integral_type - - -type + + +method_header - - -struct_modifier + + +primary_expression - - -contextual_keyword + + +block + + + +stackalloc_expression + + + +local_variable_initializer + + + +< - - + + ) - - -member_name + + +type_argument - - + + identifier - - -method_header + + +) - - -member_access + + +} - - -explicitly_typed_local_variable_declarators + + +statement - - -} + + +identifier - - -null_coalescing_expression + + +{ - - -; + + +namespace_or_type_name - - -argument_list + + +type_argument + + + +local_variable_initializer + + + +void + + + +pattern + + + +item + + + +anonymous_function_body + + + +literal + + + +method_modifiers - - + + argument_list - - -) + + +type - - -member_name + + +local_variable_type - - -{ + + +namespace_or_type_name - - -member_name + + +unmanaged - - -tuple_element + + +method_modifiers - - -default + + +block - - -struct + + +boolean_expression + + + +Span + + + +type_argument_list + + + +bool + + + +? + + + +argument_list + + + +DigitSeparators + + + +class_declaration + + + +X + + + +constant_expression - - -argument + + +ref_method_body - - -0 + + +) - - -< + + +block - - + + member_access - - + + argument_list - - -CSharp73 + + +identifier - - -statement + + +} - - -span + + +CSharp71 - - -fixed + + +variable_reference - - -identifier + + += - - -class_member_declaration + + +invocation_expression - - -) + + +literal - - -stackalloc_initializer + + +declaration_statement - - -identifier + + +ref - - -class_declaration + + +primary_expression - - -local_variable_type + + +return - - -b + + +contextual_keyword - - -predefined_type + + +true - - -2 + + +embedded_statement - - -Hello + + +parenthesized_expression - - -: + + +) - - -boolean_literal + + +{ - - -local_variable_initializer + + +argument - - -, + + +static - - -explicitly_typed_local_variable_declarators + + +identifier - - -string + + +argument - - -if + + +statement_expression - - -primary_expression + + +additive_expression - - -default + + +age - - -statement_expression + + +fixed_parameter - - -primary_expression + + +shift_expression + + + +literal + + + +( - - + + identifier - - -alternative + + +static - - -) + + +object_creation_expression - - -ref + + +unary_expression - - -real + + +argument - - -DefaultWithoutTypeName + + +literal - - -invocation_expression + + +true - - -int + + +; - - -literal + + +{ - - -primary_expression + + +argument_value - - -null_coalescing_expression + + +identifier - - -} + + += - - -int + + +fixed_parameter - - -array_type + + +Hello - - -nullableResult + + +local_variable_declaration - - -[ + + +argument - - -class_member_declaration + + +throw - - + + struct_modifier - - -local_variable_type - - - -variable_reference + + +struct_member_declaration - - -class_member_declaration + + +( - - -b + + +argument - - -identifier + + +literal - - -explicitly_typed_local_variable_declaration + + +) - - -Hello2 + + +void - - -null_conditional_member_access + + +. - - -integral_type + + +explicitly_typed_local_variable_declaration - - + + ) - - -expression - - - -block + + +type_argument_list - - -declaration_expression + + +0b10011 - - -IndexingMovableFixedFields + + +} - - + + ref - - -; + + +method_declaration - - -argument + + +{ - - -] + + +list - - -s + + +( - - -identifier + + +class_type - - -Span + + +boolean_expression - - -declaration_expression + + +int - - -class + + +local_function_declaration - - -[ + + +literal - - -method_modifiers + + +await - - -parenthesized_expression + + +Mutate - - -class_member_declaration + + +ref_return_type - - -explicitly_typed_ref_local_variable_declaration + + +declaration_statement - - -) + + +argument_list - - -; + + +identifier - - -< + + +i - - -, + + +identifier - - -!= + + +identifier - - -explicitly_typed_local_variable_declarators + + +true - - -( + + +method_body - - -[ + + +block - - -parameter_list + + +integral_type - - -multiplicative_expression + + +expression - - + + statement - - -content + + +identifier - - -( + + +} - - -= + + +) - - -variable_reference + + +1 - - -class_member_declaration + + +this + + + +overloadable_binary_operator + + + +declaration_statement + + + +parameter_list - - + + +{ + + + ( - - -?? + + +null_literal - - -. + + +void - - -statement_expression + + +( - - -} + + +identifier - - -local_variable_declaration + + +identifier - - -< + + +implicitly_typed_local_variable_declarator - - -literal + + +pointer_type - - -ref + + +invocation_expression - - -relational_expression + + +null_conditional_member_access - - -> + + +block - - -multiplicative_expression + + +type - - -isEmployed + + +identifier + + + +Func - - + + +statement_expression + + + +namespace_or_type_name + + + identifier - - -local_variable_initializer + + +method_declaration + + + +identifier - - + + +stackalloc_initializer + + + int - - + + +lambda_expression + + + +binary_operator_declarator + + + ; - - -variable_initializer + + +class - - -implicitly_typed_local_variable_declaration + + +multiplicative_expression - - -) + + +ref - - -variable_reference + + +( - - -method_header + + +unsafe - - -: + + +type_argument - - -method_body + + +argument_list - - -statement + + +int - - -3 + + +struct_body - - -primary_expression + + +fixed_pointer_declarator - - -void + + +unmanaged_type - - -D + + +primary_expression - - -method_header + + +type - - -expression + + +primary_expression - - -( + + +statement - - -statement_list + + +statement - - -identifier + + +fixed_parameter - - -when + + +int - - -) + + +T - - + + = - - -LeadingSeparator - - - -( + + +prog - - -explicitly_typed_local_variable_declarator + + +primary_expression - - + + argument - - -ref - - - + + ; - - -fixed_size_buffer_declaration + + +( - - -literal + + +member_name - - -= + + +[ - - + + identifier - - -void - - - -stackalloc_element_initializer + + +identifier - - -integral_type + + +where - - -X + + +relational_expression - - -> + + +explicitly_typed_local_variable_declarators - - -; + + +ReadonlyRef1 - - -, + + +primary_expression - - -; + + +identifier - - -PatternMatching + + +stackalloc_element_initializer - - -t + + +public - - -int + + +identifier - - -var + + +identifier - - -; + + +tuple_type - - -[ + + +public - - + + method_header - - -contextual_keyword - - - -declaration_expression - - - -( + + +LocalFunctions - - -pattern + + +{ - - -DigitSeparators + + +identifier - - -null_literal + + +literal - - -] + + +expression - - -invocation_expression + + +} - - -identifier + + +method_declaration - - -declaration_statement + + +member_access - - + + statement - - -explicitly_typed_local_variable_declaration - - - -{ - - - -unary_expression - - - -ref + + +primary_expression - - -declaration_statement + + +explicitly_typed_local_variable_declarator - - -rank_specifier + + +selector_expression - - -; + + +primary_expression - - -LocalFunctions + + +1_000.111_1e-1_000 - - -fixed_pointer_declarators + + +, - - -) + + +} - - -statement + + +method_modifiers - - -( + + +identifier - - -) + + +] - - -identifier + + +local_variable_declaration - - + + var - - -parameter_list + + +primary_expression - - -class_body + + +local_variable_declaration - - -block + + += - - -invocation_expression + + +explicitly_typed_local_variable_declaration - - -invocation_expression + + +OutVar - - -c + + +explicitly_typed_local_variable_declarators - - -x + + +variable_reference - - + + identifier - - -[ + + +( - - -type_argument + + +type - - -{ + + +50 - - -assignment + + +, - - -( + + +namespace_or_type_name - - -member_access + + +[ - - -variable_declarator + + +: - - -in + + +identifier - - + + +) + + + identifier - - -= + + +expression - - -member_access + + +== - - -( + + +stackalloc - - -identifier + + +, - - -method_declaration + + +0 - - -local_variable_declaration + + +null_coalescing_expression - - -method_modifier + + +statement - - -floating_point_type + + +f2 - - -void + + +expression - - -variable_reference + + +else - - -argument + + +identifier - - + + identifier - - -simple_type + + +identifier - - -boolean_literal + + +y - - -+ + + +method_header - - -unmanaged_type + + +ref_method_modifiers - - -T + + +args - - -identifier + + +"A" - - -parameter_mode_modifier + + +pattern - - -literal + + +class_member_declaration - - -; + + +block - - -variable_reference + + +; - - -argument_list + + +( - - -null_literal + + +type - - -= + + +fixed_parameters - - -t1 + + +embedded_statement - - -stackalloc_initializer_element_list + + +primary_expression - - -Hello + + +otherArr - - -unsafe + + +identifier - - -t2 + + +literal - - -tuple_type_element + + +type_parameter_constraints_clause - - -[ + + +literal - - + + ; - - + + identifier - - -member_access - - - -class_member_declaration - - - -{ + + +type_argument - - + + DoSomething - - -fixed_parameter + + +method_body - - -identifier + + +{ - - -; + + +( - - -declaration_statement + + +identifier - - -( + + +declaration_expression - - -block + + +class_body - - -primary_expression + + +integral_type - - -50 + + +{ - - -argument_name + + +null_coalescing_expression - - -name + + +identifier - - -new + + +statement - - -; + + +return_statement - - -literal + + +class_declaration - - + + member_access - - -public - - - -identifier + + ++ - - -fixed_parameter + + +class_member_declaration - - -return + + +element_access - - -class + + +implicitly_typed_local_variable_declaration - - -type_argument + + +; - - -local_variable_declaration + + +implicitly_typed_local_variable_declarator - - -] + + +TupleRecognize - - -null_coalescing_expression + + +method_modifiers - - -statement_list + + +void - - -identifier + + +( - - -f1 + + +statement - - -expression_statement + + +statement - - + + literal - - -stackalloc_element_initializer + + +type - - -statement_list + + +member_name - - -struct_member_declaration + + +Hello2 - - -otherArr + + +age - - -constant_expression + + +; - - -( + + +int - - -var + + +; - - -} + + +public - - -type_parameter_constraints + + +identifier - - -fixed_parameter + + +type - - -public + + +multiplicative_expression - - -literal + + +if_statement - - -value2 + + +. - - -Span + + +x - - -( + + +identifier - - -} + + +( - - -new + + +< - - -) + + +name - - -, + + +( - - -; + + +integral_type - - -return_type + + +expression - - -expression_statement + + +: - - -fixed_parameter + + +IndexingMovableFixed - - -local_variable_initializer + + +statement_list - - + + identifier - - -alternative + + +( - - -3 + + +explicitly_typed_local_variable_declarator - - -2 + + +class_declaration - - -statement_list + + +> - - -arr + + +type - - -ref + + +) - - -equality_expression + + +parameter_mode_modifier - - -type + + +literal - - -out + + +struct_modifier - - -implicitly_typed_local_variable_declaration + + +identifier - - -v1 + + +identifier - - -integral_type + + +statement - - -Task + + +identifier - - -local_variable_initializer + + +int - - -explicitly_typed_local_variable_declaration + + +, - - -method_header + + +statement - - -X + + +c - - -foo + + +statement - - -additive_expression + + +new - - -s + + +namespace_or_type_name - - -0x1_2_3 + + +local_variable_initializer + + + +{ - - + + } - - -0 + + +( - - -argument_value + + +identifier - - -expression + + +identifier - - -statement + + +v - - -identifier + + +( - - -return_type + + +argument - - -string + + +Task - - -argument_list + + +{ - - -expression + + +b - - + + identifier - - -statement_expression + + +TKey - - -literal + + +} - - -local_variable_declaration + + +variable_reference - - -Span + + +method_body - - -ref_method_body + + +declaration_statement - - -primary_expression + + +: - - -bool + + +explicitly_typed_local_variable_declarator - - -identifier + + +Test - - -declaration_expression + + +statement - - -block + + +type_argument - - -identifier + + +declaration_deconstructor_element - - -integral_type + + +method_modifiers - - -identifier + + +ref_method_modifier + + + +ref_method_modifier - - + + ; - - -stackalloc_element_initializer + + +local_variable_declaration - - -type_argument + + +multiplicative_expression - - + + } - - -. - - - -switch_label - - - -explicitly_typed_local_variable_declarators + + +explicitly_typed_local_variable_declarator - - -literal + + +default - - -) + + +, - - + + identifier - - -= + + +identifier - - -args + + +value_type - - -type + + +local_variable_declaration - - -type + + +method_modifier - - -type + + +argument_list - - -Z + + +[ - - + + public - - -( - - - -selector_expression - - - -statement - - - + + { - - -member_access - - - -public + + +block - - -int + + +Y - - -v + + +struct - - -NullReferenceException + + +local_variable_initializer - - -index + + +member_access - - -statement + + +integral_type - - -member_name + + +var - - -equality_expression + + +expression_statement - - -=> + + +invocation_expression - - -) + + +additive_expression - - -shift_expression + + +1 - - -args + + +literal - - -anonymous_function_signature + + +method_modifiers - - -{ + + +constant_expression - - -fixed_parameters + + +type - - -1 + + +identifier - - -statement_list + + +argument_name - - -tuple_type + + +( - - -, + + +value - - -} + + +: - - -type + + +struct_body - - -identifier + + +) - - -a + + +; - - -= + + +t - - -variable_reference + + +identifier - - -Test + + +class_member_declaration - - -type_argument + + +} - - -parameter_list + + +default_literal - - -arg + + +, - - -x + + +( - - -local_variable_declaration + + +non_array_type - - + + void - - -) + + +switch_section - - -, + + +value_type - - -invocation_expression + + +ref - - -anonymous_function_body + + +ref_method_modifier - - -method_modifiers + + +operator_declaration - - + + 0 - - -element_access + + +declaration_pattern - - + + identifier - - -TupleEquality + + +void - - -variable_reference + + +tuple_type - - -ref_kind + + +relational_expression - - + + identifier - - -expression - - - -additive_expression - - - -= - - - -type_argument + + +member_name - - -member_access + + +argument - - -= + + +ref - - -null_coalescing_expression + + +ref - - -byte + + +; - - -identifier + + +invocation_expression - - -unsafe + + +int - - -statement + + +argument_list - - -switch_statement + + +simple_type - - -argument_value + + +stackalloc_expression - - -relational_expression + + +type - - + + ) - - -OutVar + + +identifier - - -block + + +identifier - - -) + + +; - - -identifier + + +primary_expression - - -myFixedField + + +} - - -) + + +ref - - -primary_expression + + +string - - -identifier + + +pointer_type - - -relational_expression + + +class_member_declaration - - -statement + + +t1 - - -ref_method_modifier + + +return_type - - -i + + +class_member_declaration - - -invocation_expression + + +fixed_parameter - - -( + + +[ - - -parameter_mode_modifier + + +explicitly_typed_local_variable_declaration - - -) + + +. - - -statement_list + + +argument - - -local_variable_initializer + + +declaration_statement - - -type + + +. - - -( + + +declaration_statement - - -default + + +fixed_parameter - - -( + + +identifier - - + + identifier - - -argument_list + + +ref_method_modifier - - -} + + +return_type - - -X + + +identifier - - -type + + +readonly - - -{ + + +ref_method_modifier - - -type + + +pattern - - -argument_name + + +method_body - - -statement + + +local_variable_initializer - - -; + + +[ - - -( + + +statement_expression - - -block + + ++ - - -return_type + + +a - - -arr + + +t1 - - -primary_expression + + +unsafe - - -, + + +ref_kind - - -= + + +[ - - -TryParse + + +expression - - -type + + +identifier - - + + identifier - - -element_access + + +fixed - - -decorated_type_parameter + + +explicitly_typed_local_variable_declarators - - -fixed_parameter + + +case - - -< + + +identifier - - -* + + +identifier - - -) + + +is - - -invocation_expression + + +argument_value - - -Guid + + +readonly - - -( + + +embedded_statement - - -type + + +ref_method_modifier + + + +integral_type - - + + statement - - -class + + +explicitly_typed_local_variable_declarator - - -c + + +DoSomething - - -: + + +* + + + +identifier - - + + { - - + + +; + + + ( - - -statement + + +v2 - - -res + + +local_variable_declaration - - -ref_method_modifier + + +method_body - - -} + + +identifier - - -public + + +r - - -identifier + + +, - - -stackalloc_element_initializer + + +statement - - -class_type + + +, - - -fixed_parameter + + +( - - -statement + + +) - - + + ; - - -anonymous_function_body + + +type_parameter_list - - -; + + +method_body - - -statement_expression + + +local_variable_declaration - - -local_variable_initializer + + +ref_method_modifiers - - -method_body + + +expression_statement - - -method_body + + +relational_expression + + + +} + + + +tuple_type_element - - + + identifier - - + + +boolean_literal + + + ) - - -literal + + +explicitly_typed_local_variable_declaration - - -identifier + + +statement - - -ref + + +a + + + +name + + + +stackalloc_expression + + + +foo + + + +member_name - - -( + + +123 - - + + identifier - - -local_variable_declaration + + +tuple_type_element - - -implicitly_typed_local_variable_declarator + + +argument - - -identifier + + +) - - -declaration_statement + + +ref - - -argument_list + + +. - - -argument + + +Task - - -in + + +) - - -pattern + + +> - - -null_coalescing_expression + + +primary_expression - - + + { - - -block + + +simple_assignment - - -identifier + + +( + + + +namespace_or_type_name - - + + identifier - - -+ + + +) - - -"B" + + +in - - -Type + + +fixed_parameter - - -primary_expression + + +declaration_statement - - -explicitly_typed_local_variable_declarator + + +!= - - -+ + + +argument_name - - -var + + +literal - - -member_access + + +implicitly_typed_local_variable_declaration - - -= + + +literal - - -local_variable_declaration + + +return_statement - - -explicitly_typed_local_variable_declarators + + +arg - - -class_member_declaration + + +Span - - -Choice + + +integral_type - - -. + + +C - - -type + + +unary_expression - - + + type - - -statement_list + + +class_member_declaration - - -ref_method_modifier + + +in - - -argument_list + + +method_modifiers - - -type_argument_list + + +declaration_statement - - -argument_list + + +consequence - - -identifier + + +) - - -equality_expression + + +T - - -name + + +) - - -integral_type + + +class_body - - -primary_expression + + +( - - -statement_list + + +Blittable - - -multiplicative_expression + + +equality_expression - - -tuple_type + + +is - - -assignment_operator + + +block - - -ref_method_modifier + + +conditional_expression - - -argument + + +explicitly_typed_local_variable_declarator - - + + +integral_type + + + identifier - - -argument_list + + +, - - -DoSomething + + +int - - -namespace_or_type_name + + +multiplicative_expression - - -statement_expression + + +argument_value - - -age + + +; - - -statement_list + + +implicitly_typed_local_variable_declaration - - -1 + + +stackalloc - - -expression + + +identifier - - -literal + + +int - - -local_variable_declaration + + +identifier - - -primary_expression + + +} - - -identifier + + +Vector3 - - -assignment + + +anonymous_function_signature - - -) + + +explicitly_typed_default - - -field_declaration + + +when - - -argument_value + + +tuple_element - - -embedded_statement + + +method_header - - -> + + +, - - -method_modifiers + + +isEmployed - - -argument_list + + +identifier - - -{ + + +v2 - - -method_header + + +var - - -] + + +PatternMatching - - + + ( - - -class_member_declaration + + +local_variable_declaration - - -personName + + +explicitly_typed_local_variable_declarator - - -contextual_keyword + + +type_argument - - -T + + +statement_list - - -additive_expression + + +Span - - -StackallocArrayInitializer + + +, - - -declaration_statement + + +argument_list - - -pointer_type + + +class_type - - -explicitly_typed_local_variable_declarator + + +method_declaration - - -Vector3 + + +null_literal - - -] + + +, - - -{ + + +isEmployed - - -literal + + +declaration_statement - - -statement_expression + + +Choice - - + + ; - - -int + + +method_modifier - - -class_type + + +statement_list - - + + identifier - - -, + + +method_declaration - - -local_variable_type + + +method_body + + + +( - - + + { - - -if_statement + + +struct_member_declaration - - -invocation_expression + + +argument_list - - -; + + += - - -t1 + + +( - - -fixed_parameters + + +age - - -default_argument + + +{ - - -boolean_literal + + +argument_list - - -r + + +( - - -break + + +identifier - - -field_modifier + + +A - - -if_statement + + +; - - -= + + +decorated_type_parameter + + + +; - - + + identifier - - -invocation_expression + + +? - - -primary_expression + + +argument - - -] + + +block - - -null + + +{ - - -arr + + +tuple_element - - -where + + +fixed_parameter - - -stackalloc_expression + + +variable_reference - - -; + + +int - - -namespace_or_type_name + + +personName - - -block + + +int - - -s + + +additive_expression - - -int + + +, - - -= + + +DoSomething - - -method_header + + +) - - -struct_body + + +( - - -return_type + + +3 - - -var + + +} - - -method_declaration + + +struct_declaration - - -0x1b_a0_44_fe + + += - - + + identifier - - -parameter_modifier + + +index + + + +, + + + +. + + + +expression_statement - - -non_array_type + + +block - - -identifier + + +primary_expression - - -= + + +return - - -parameter_list + + +integral_type - - -DoSomething + + +) - - -member_name + + += - - -primary_expression + + +identifier - - -, + + +F - - -declaration_statement + + +ref - - -lambda_expression + + +void - - + + identifier - - -class_declaration + + +invocation_expression - - -variable_reference + + +declaration_deconstructor_element - - -public + + +member_access - - + + +type_argument_list + + + int - - -ref_method_modifiers + + +identifier - - -T + + +argument_value - - -integral_type + + +primary_expression - - -int + + +block - - -[ + + +; - - -: + + +expression - - -default + + +0b1_0_1 - - -tuple_element + + +personAge - - -ref_method_modifier + + +case_guard - - -unmanaged + + +B - - -[ + + +literal - - -struct_member_declaration + + +( - - -return_type + + +args - - -return_type + + +int - - -) + + +type - - -parameter_modifier + + +> - - -method_body + + +declaration_expression - - -primary_expression + + +method_header - - -block + + +class_declaration - - -, + + +; - - -non_array_type + + +local_variable_initializer - - -ref + + +explicitly_typed_local_variable_declarators - - -identifier + + +int - - -anonymous_function_signature + + +Span - - -invocation_expression + + +equality_expression - - -rank_specifier + + +statement - - -namespace_or_type_name + + +alternative - - -block + + +expression - - + + identifier - - -prog - - - -implicitly_typed_local_variable_declarator + + +f3 - - -identifier + + +type - - -explicitly_typed_local_variable_declarator + + +) - - -primary_expression + + +null_coalescing_expression - - -: + + +} - - + + identifier - - -= + + +{ - - -) + + +tuple_type_element - - -== + + +identifier - - -< + + +argument_list - - + + integral_type - - -struct + + +int - - -integral_type + + +isEmployed - - -] + + +( - - -isEmployed + + +T - - -unmanaged_type + + +[ - - -block + + +statement_list + + + +ref + + + +statement - - + + type - - -> + + +literal - - -public + + +method_modifiers - - + + +method_modifiers + + + identifier - - + + fixed_parameter - - -void + + +v1 - - -variable_reference + + +statement - - -return_type + + +type - - -( + + +{ - - -tuple_type_element + + +( - - + + identifier - - -type + + +literal - - -identifier + + +integral_type - - -block + + +struct - - -. + + += - - -type + + +> - - -ref_kind + + +statement_list - - -local_variable_initializer + + +primary_expression - - -, + + +variable_reference - - -= + + +Hello - - -, + + +literal - - -2 + + +arg - - -expression_statement + + +identifier - - -member_name + + +t - - -identifier + + +expression - - + + +declaration_pattern + + + identifier - - -r2 + + +switch_statement - - + + statement_expression - - -expression + + +void - - -T + + +expr + + + +explicitly_typed_local_variable_declaration - - + + +declaration_statement + + + identifier - - -; + + +argument - - -simple_designation + + +PatternBasedFixed - - -identifier + + +( - - -statement + + +method_declaration - - -{ + + +> - - -argument + + +} - - -) + + +parameter_modifier - - -local_function_body + + +method_modifiers - - -10 + + +statement - - -] + + +{ - - -ThrowExpression + + +invocation_expression - - -unary_expression + + +0b_1_0_1 - - -] + + += - - -( + + +int - - -; + + +method_body - - -personAge + + +integral_type - - -) + + +lambda_expression - - -namespace_member_declaration + + +identifier - - -ref_local_variable_declarator + + +( - - -method_body + + +stackalloc_element_initializer - - -} + + +invocation_expression - - -; + + +type + + + +, + + + +member_access - - -statement_list + + +1 - - -conditional_expression + + +tuple_type_element - - -0 + + +block - - -identifier + + +3 - - -return + + +ref_assignment - - -method_modifiers + + +integral_type - - -identifier + + +fixed_parameter - - -r1 + + +1_2_3 - - -class_body + + +} - - -fixed_parameter + + +primary_expression - - -parameter_list + + +member_access - - -{ + + +1 - - -tuple_element + + +method_body - - -int + + +) - - -method_declaration + + +ref - - -identifier + + +. - - -operator_modifier + + +fixed_parameters - - -Vector3 + + +explicitly_typed_local_variable_declarators - - -list + + +} - - -; + + +} - - -binary_operator_declarator + + +boolean_literal - - -unary_expression + + +primary_expression - - -local_function_header + + +method_header - - -; + + +Vector3 - - -explicitly_typed_local_variable_declarators + + +statement_expression - - -statement_list + + +( - - -type_argument + + +invocation_expression - - -relational_expression + + +local_variable_declaration - - -? + + +default - - -s + + +) - - -. + + +method_modifier + + + +; - - + + identifier - - -switch_block + + +member_name - - -declaration_statement + + +public - - -> + + +Span - - -local_variable_type + + +method_declaration - - -operator + + +statement_list - - + + literal - - + + identifier - - -ref + + +; - - -method_declaration + + +identifier - - -type_argument + + +0b101 - - -} + + += - - -null_literal + + +explicitly_typed_local_variable_declarator - - -string + + +literal - - -fixed_pointer_declarator + + +; - - -argument + + +( - - -B + + +relational_expression - - -integral_type + + +local_variable_declaration - - -. + + +break - - -stackalloc_expression + + +unsafe_modifier - - -identifier + + +predefined_type - - -identifier + + +age - - -integral_type + + += - - -TKey + + +boolean_literal - - -declaration_statement + + +c - - -f3 + + +method_body - - -method_header + + +} - - -explicitly_typed_local_variable_declarators + + +Hello - - -true + + +, - - -ref_method_modifier + + +2 - - -{ + + +) - - -method_modifiers + + +expression_statement - - -; + + +ref_kind - - -identifier + + +ref_local_variable_declarator - - -statement_list + + +content - - -static + + +Z - - -bin + + +implicitly_typed_local_variable_declaration + + + +fixed_parameter + + + +identifier - - + + identifier - - + + void - - -Vector3 + + +( - - -argument + + +; - - -string + + +weird - - -type + + +buffer_element_type - - -parameter_modifier + + +identifier - - + + statement_expression - - -explicitly_typed_local_variable_declarators - - - -type + + +{ - - -identifier + + +, - - -block + + +relational_expression - - -!= + + +, - - -type_argument_list + + +nineteen - - -identifier + + +, - - -} + + +statement_list - - -integral_type + + +arr - - -class_type + + +statement_list - - -identifier + + +primary_expression - - -readonly + + +if_statement - - + + ( - - -type + + +) - - -5 + + +indexer_declaration - - -; + + +{ - - -return_type + + +variable_reference - - -primary_expression + + +identifier - - -method_declaration + + +identifier - - -. + + +type_argument - - -argument + + +class - - -, + + ++ - - -struct + + +statement - - -argument_value + + +span - - -( + + +{ - - -integral_type + + +identifier - - -( + + +Vector3 - - -equality_expression + + +i - - -primary_expression + + +=> - - -) + + +member_name - - -identifier + + +name - - -} + + +fixed_size_buffer_declaration - - -, + + +identifier - - -parameter_modifier + + +method_header - - -identifier + + +) - - -struct_declaration + + +argument_name - - -( + + +void - - -. + + +type - - -, + + +( - - -} + + +namespace_member_declaration - - -conditional_expression + + +class_member_declaration - - -readonly + + +value2 - - -=> + + +type_argument_list - - -statement + + +fixed_parameter - - -argument_list + + +integral_type - - -} + + +myFixedField - - -int + + +) - - + + identifier - - -argument_value - - - -{ + + +identifier - - -CSharp70 + + +multiplicative_expression - - -statement + + +struct - - + + integral_type - - -implicitly_typed_local_variable_declaration - - - -local_variable_declaration + + +argument_list - - + + statement - - -} + + +( - - -ref_method_modifier + + +class_body - - -int + + +identifier - - -static + + +, - - -if + + +block - - -type + + +{ - - -e + + +statement - - -statement_list + + +condition - - -literal + + +null - - -, + + += - - -( + + +] - - -primary_expression + + +local_deconstructing_declaration - - -explicitly_typed_local_variable_declarators + + +1_2__3___4____5_____6______7_______8________9 - - -} + + +invocation_expression - - -identifier + + +> - - + + identifier - - -type_parameter - - - -identifier + + +method_declaration - - -identifier + + +M1 - - -declaration_statement + + +argument - - + + var - - -ref + + +type - - -identifier + + +( - - -identifier + + +ref_local_variable_declarators - - -, + + +identifier - - -declaration_statement + + +BinaryLiterals - - + + identifier - - -method_header - - - -out + + +type_argument_list - - -method_header + + +identifier - - -return_type + + +] - - -i + + +expression_statement - - -c + + +switch_label - - -identifier + + +fixed_parameter - - + + statement_list - - -method_header + + +expression_statement - - + + 0 - - -equality_expression - - - -block - - - -in - - - -class_member_declaration - - - -identifier + + +integral_type - - -identifier + + +{ - - -return + + +e - - -method_body + + +ref - - -type + + +) - - + + ( - - -expression - - - -int + + +in - - -method_declaration + + +argument_list - - -) + + +integral_type - - -local_variable_initializer + + ++ - - -parameter_mode_modifier + + +switch_label - - -) + + +identifier - - -int + + +explicitly_typed_local_variable_declarators - - -type + + +< - - -ref_kind + + +rank_specifier - - + + local_variable_declaration - - -stackalloc + + +namespace_or_type_name - - -primary_expression + + +public - - + + { - - -expression_statement - - - -member_access + + +local_function_header - - -. + + +, - - -; + + +block - - -) + + +public - - -v2 + + +declaration_statement - - -parameter_list + + +class - - -CSharp71 + + +fixed_parameter - - + + return_type - - -age - - - -statement_list + + +X - - -argument_value + + +TupleEquality - - -predefined_type + + +simple_designation - - + + argument - - -type_argument - - - -literal - - - -type_argument_list + + +int - - -variable_reference + + +, - - + + identifier - - -literal - - - -type + + +] - - -) + + +explicitly_typed_local_variable_declaration - - -argument_value + + +class_member_declaration - - -multiplicative_expression + + +return_statement - - -assignment + + +literal - - -integral_type + + +identifier - - -0b1001_1010_0001_0100 + + +local_variable_type - - -identifier + + +return_type - - -explicitly_typed_local_variable_declarators + + +ref_method_modifier - - -value_type + + +5 - - -, + + +; - - -expression_statement + + +argument - - -v2 + + +parameter_list - - -await_expression + + +member_access - - -integral_type + + +identifier - - -= + + +identifier - - -hex + + +) - - -readonly + + +anonymous_function_parameter_modifier - - -stackalloc_initializer_element_list + + +statement_expression - - -expression + + +unmanaged_type - - -local_function_body + + +T - - -member_access + + +{ - - -( + + +{ - - -integral_type + + +[ - - -identifier + + +statement_list - - -{ + + +embedded_statement - - -, + + +v1 - - -identifier + + +result - - -Func + + +await_expression - - -int + + +fixed_parameter - - -} + + += - - -statement_list + + +stackalloc - - -void + + +Vector3 - - -int + + +identifier - - -{ + + +identifier - - -fixed_parameter + + +expression - - -statement + + +explicitly_typed_local_variable_declarators - - + + return_type - - -return_type + + +( - - -statement_expression + + +additive_expression - - -integral_type + + +0 + + + +identifier - - + + additive_expression - - -value + + +member_name + + + +explicitly_typed_local_variable_declarators - - -case_guard + + +D - - -identifier + + +block - - -a + + +] - - -( + + += - - -method_header + + +ref - - -literal + + +argument_list - - + + declaration_statement - - -. + + +Type - - -stackalloc + + +method_declaration - - -member_name + + +in - - -null + + +identifier - - -1_000.111_1e-1_000 + + +Hello - - -int + + +namespace_member_declaration - - -string + + +< - - -) + + +} - - -this + + +, - - -; + + +method_body - - -stackalloc_expression + + +type - - -statement + + +explicitly_typed_local_variable_declarators - - -local_variable_declaration + + +identifier + + + +method_modifiers - - + + +embedded_statement + + + identifier - - + + identifier - - -( + + +. - - -shift_expression + + +literal - - -assignment_operator + + +explicitly_typed_local_variable_declarators - - -method_header + + +return_statement - - -statement + + +; - - -} + + +return - - -boolean_expression + + +statement_list - - -} + + +local_variable_declaration - - -identifier + + +x + + + +statement_list - - + + identifier - - -member_name + + +explicitly_typed_local_variable_declarator - - -[ + + +> - - -stackalloc_element_initializer + + +unary_expression - - -ptr + + +) - - -explicitly_typed_local_variable_declaration + + +return_type - - -; + + +primary_expression - - -integral_type + + +statement_list - - -fixed_parameter + + +args - - -identifier + + +implicitly_typed_local_variable_declarator - - -explicitly_typed_local_variable_declarator + + +class_member_declaration - - -Select + + +local_function_modifier - - -primary_expression + + +additive_expression - - -myFixedField + + +Vector3 - - -tuple_type_element + + +primary_expression - - -? + + +> - - -identifier + + +tuple_element - - -C + + +tuple_type_element - - -; + + +implicitly_typed_local_variable_declaration - - -{ + + +( - - -G + + +invocation_expression - - -public + + +r2 - - -b + + ++ - - -integral_type + + +, - - -name + + +identifier - - -statement + + +default_literal + + + +b - - + + identifier - - + + +fixed_parameter + + + primary_expression - - -int + + +type_argument_list - - -explicitly_typed_local_variable_declarator + + +member_access - - -type + + +statement_list - - -ref + + +object_creation_expression - - -type + + +; - - -ref_method_modifier + + +"B" - - -( + + +implicitly_typed_local_variable_declaration - - -static + + +, - - -await_expression + + +statement_expression - - -> + + +member_access - - -type + + +=> - - -identifier + + +declaration_statement - - -variable_reference + + +statement_list - - -variable_reference + + +operator_declarator - - -x + + +local_function_body - - -expression_statement + + +primary_expression - - -explicit_anonymous_function_parameter + + +return_type - - -[ + + +public - - -identifier + + +type - - -=> + + +primary_expression - - -Vector3 + + +statement - - -method_declaration + + +fixed_parameters - - -: + + +, - - -1 + + +identifier - - -method_declaration + + +ref_local_variable_declarator - - -embedded_statement + + +statement - - -identifier + + +relational_expression - - -DefaultWithoutTypeName + + +class_member_declaration - - -stackalloc_element_initializer + + +CSharp73 - - -else + + +class_member_declaration - - -multiplicative_expression + + +namespace_or_type_name - - -member_name + + +readonly - - -E + + +return_type - - -block + + +method_declaration - - -1 + + +: - - -identifier + + +type_parameter_list - - -identifier + + +expression_statement - - -return_type + + +method_modifier - - -= + + +( - - -parameter_mode_modifier + + +struct_body - - -operator_declaration + + +type_argument_list - - -tuple_expression + + +local_variable_initializer - - -fixed_size_buffer_declarators + + +class_member_declaration - - -struct_member_declaration + + +int - - -argument + + +member_name - - -non_nullable_value_type + + +parameter_mode_modifier - - -) + + +identifier - - -IndexingMovableFixed + + +variable_reference - - -simple_type + + +G - - -local_variable_declaration + + +ref_method_modifier - - -namespace_member_declaration + + +; - - -identifier + + +parameter_mode_modifier - - -expr + + +tuple_literal - - -method_body + + +expression - - -: + + +ref_method_modifier + + + +integral_type - - + + identifier - - -v1 + + +parameter_modifier - - -embedded_statement + + +local_function_header - - -local_variable_declaration + + +StackallocArrayInitializer - - -. + + +Type - - -argument + + +invocation_expression - - -identifier + + +unary_expression - - -method_body + + +invocation_expression - - -myFixedField + + +ref_method_modifiers - - -int + + +) - - -, + + +local_variable_initializer - - -identifier + + +: - - -is + + +? - - + + ; - - -type_argument_list + + +identifier - - -ref_return_type + + +literal - - -member_name + + +TryParse - - -multiplicative_expression + + +statement - - -nullable_type_annotation + + +identifier - - -< + + +variable_declarators - - -public + + +) - - -return_type + + +) - - -argument_value + + +method_header - - + + literal - - -) - - - -Y + + +statement - - -ref + + +literal - - -type + + +=> - - -= + + +[ - - -identifier + + +method_header - - -statement_list + + +primary_expression - - -struct_body + + +Vector3 - - + + identifier - - -implicitly_typed_local_variable_declarator + + +throw_expression - - -+ + + +} - - -explicitly_typed_local_variable_declarator + + +async - - -invocation_expression + + +args - - -, + + +primary_expression - - -identifier + + +local_variable_declaration - - -] + + +} - - -member_access + + +integral_type - - -} + + +( - - -CSharp72 + + +multiplicative_expression - - -member_name + + +literal - - -args + + +argument_name - - -argument_value + + +bin - - -3 + + +M1_Trace - - -3 + + +class_member_declaration - - -argument_name + + +ref_indexer_body - - -ref + + +{ - - -identifier + + +> - - -) + + +argument_list - - -literal + + +s - - -identifier + + +method_body - - -multiplicative_expression + + +argument_list - - -1_2_3 + + +explicitly_typed_local_variable_declarator - - -void + + +. + + + +stackalloc_expression - - + + literal - - -implicitly_typed_local_variable_declaration + + +invocation_expression - - -method_modifier + + +method_header - - -method_modifier + + +TValue - - -namespace_or_type_name + + +fixed_parameter + + + +) - - + + declaration_statement - - -relational_expression + + +type - - -element_access + + +var - - -variable_reference + + +stackalloc_initializer_element_list - - -identifier + + +x - - -declaration_statement + + +member_name - - -identifier + + +return_type - - -explicitly_typed_local_variable_declarators + + +multiplicative_expression - - -relational_expression + + +return_type - - -identifier + + +return_type - - -declaration_statement + + +null_coalescing_expression - - -method_body + + +int - - -literal + + +age - - -identifier + + +ref_method_modifier - - -identifier + + +implicitly_typed_local_variable_declarator - - -namespace_or_type_name + + +true - - -ref_return_type + + +integral_type - - + + variable_reference - - -fixed_parameter - - - -byteArray + + +integral_type - - -type_argument_list + + +statement_list - - + + ; - - -type + + +10 - - -r1 + + +explicitly_typed_local_variable_declarators - - -explicitly_typed_local_variable_declaration + + +Vector3 - - -ref + + +} - - -pattern + + +stackalloc_element_initializer - - -} + + +identifier - - + + identifier - - -fixed_parameter + + +?? - - -statement + + +s - - -fixed_parameter + + +void - - + + . - - -t + + +) - - -invocation_expression + + +return + + + +local_variable_initializer - - + + ( - - -method_header + + +identifier - - -member_name + + +non_array_type - - -arg + + +( - - -int + + +CSharp70 - - -NonTrailingNamedArguments + + +identifier - - -local_variable_initializer + + +default - - -primary_expression + + +; - - -method_modifiers + + +method_header - - -0b10011 + + +void - - -return_statement + + +case_guard - - -identifier + + +explicit_anonymous_function_signature - - -identifier + + +member_access - - -operator_modifier + + +relational_expression - - -literal + + +statement - - -identifier + + +, - - -: + + +local_variable_initializer - - -) + + +IndexingMovableFixedFields - - -primary_expression + + +statement - - -int + + +type - - -t + + +local_variable_declaration - - -true + + +ref_method_body - - -) + + +primary_expression - - -identifier + + +declaration_expression - - -; + + +expression_statement - - -} + + +, - - -Y + + +public + + + +method_header + + + +NonTrailingNamedArguments - - + + identifier - - -; + + +, - - -conditional_or_expression + + +member_name - - -statement + + +method_modifiers - - -tuple_expression + + +; - - -class_declaration + + +local_function_body - - -y + + +hex - - + + identifier - - -statement_list + + +struct_member_declaration - - -identifier + + +; - - -variable_reference + + +block + + + +] - - -type + + +CSharp72 - - -args + + +0x1_2_3 - - -class_member_declaration + + +method_declaration - - -implicitly_typed_local_variable_declarator + + +parameter_modifier - - + + identifier - - -TryParse - - - -type + + +return_type - - -int + + +] - - -result + + +} - - + + identifier - - -X - - - + + primary_expression - - -identifier + + +nullable_type_annotation - - -identifier + + +T - - -? + + +argument_list - - -type + + +member_name - - -} + + +argument - - -block + + +666 + + + +tuple_type - - + + +argument + + + primary_expression - - -weird + + +class_member_declaration - - -ref_local_variable_declarator + + +literal - - -stackalloc_initializer_element_list + + +literal - - -< + + +H - - + + identifier - - -identifier + + +Task - - -literal + + +explicitly_typed_local_variable_declarator - - -identifier + + +{ - - + + ) - - -identifier - - - -type - - - -r1 + + +name - - -a + + +type_parameter - - -void + + +) - - + + identifier - - -compilation_unit + + +null_coalescing_expression - - -local_variable_declaration + + +declaration_statement - - + + identifier - - -method_declaration + + +type - - -indexer_declarator + + ++ - - -Type + + +local_variable_type - - -( + + +literal - - -equality_expression + + +literal - - -identifier + + +< - - -Vector3 + + +y - - -explicitly_typed_local_variable_declarators + + += - - -== + + +) - - -class_member_declaration + + +decorated_type_parameter - - -argument_list + + +, - - -anonymous_function_body + + +return_type - - -parameter_modifier + + +2 - - -method_modifiers + + +identifier - - -constant_expression + + +type - - -} + + +null_conditional_member_access - - -argument_list + + +struct_declaration - - -] + + +ReadonlyRef2 - - -) + + +field_modifier - - -identifier + + +public - - -identifier + + +type_argument_list - - -implicitly_typed_local_variable_declaration + + +class_body - - -method_modifiers + + +int - - -; + + +declaration_statement - - -z + + +argument - - -{ + + +integral_type - - -literal + + +identifier - - -integral_type + + +[ - - -1 + + +variable_reference - - -block + + +additive_expression - - -T + + +< - - -ref_method_modifier + + +type - - -method_modifiers + + +FromResult - - -local_variable_declaration + + += - - -ref_method_modifier + + +boolean_literal - - -> + + +s - - -method_body + + +identifier + + + +explicit_anonymous_function_parameter - - + + identifier - - -b + + +v2 - - -class_member_declaration + + +type_argument - - + + void - - -i - - - -expression_statement + + +int - - -class_type + + +argument_list - - -unmanaged_type + + +b - - -expression_statement + + +byteArray - - -: + + +explicitly_typed_local_variable_declaration - - -boolean_expression + + +struct_member_declaration - - -argument_list + + +arr - - -declaration_statement + + +t - - -age + + +primary_expression - - -identifier + + +( - - -) + + +class_member_declaration - - -null + + +int - - -{ + + +statement_expression - - + + member_access - - + + primary_expression - - -identifier - - - -null_literal - - - -namespace_or_type_name + + +expression - - -additive_expression + + +fixed_parameter - - -return + + +integral_type - - -v1 + + +condition - - -identifier + + +( - - -tuple_type_element + + +explicitly_typed_local_variable_declarator - - -, + + +1 - - + + identifier - - -primary_expression + + +null - - -fixed_statement + + +argument - - -static + + +0 - - -v2 + + +( - - -invocation_expression + + +Vector3 - - -if_statement + + +integral_type - - -parameter_mode_modifier + + +] - - -explicitly_typed_default + + +) - - + + ; - - -in - - - -void - - - -argument_name - - - -explicitly_typed_local_variable_declarators - - - -, - - - -expression_statement - - - -{ + + +anonymous_function_body - - -, + + +argument_value - - -+ + + +local_variable_declaration - - -class_body + + +integral_type - - -struct_declaration + + +] - - -class_member_declaration + + +1 - - -dec + + +i - - -fixed_parameters + + +c - - -method_modifiers + + +switch_block - - -0b_1_0_1 + + +integral_type - - -statement_expression + + +) - - -relational_expression + + +operator_modifier - - -identifier + + +declaration_statement - - -default + + +method_body - - -ref_local_variable_declarators + + +member_access - - -int + + +double + + + +type - - + + parameter_list - - -{ + + +( - - -declaration_statement + + +tuple_type - - -T + + +int - - -type_argument + + +; - - -argument_list + + +break_statement - - -true + + +class_type - - -ref_return_type + + +statement_expression - - -declaration_pattern + + +tuple_type_element - - -lambda_expression + + +identifier - - -explicitly_typed_default + + +explicitly_typed_local_variable_declaration - - -; + + +identifier - - -( + + +[ - - -argument + + +statement_expression - - -double + + +parameter_modifier - - -. + + +personName - - -condition + + +; - - -method_declaration + + +myFixedField - - -explicitly_typed_local_variable_declarator + + +} - - + + identifier - - -identifier + + +argument_value - - -method_modifier + + +DoSomething - - -. + + +literal - - -} + + +readonly - - -local_variable_initializer + + +argument_value - - -Span + + +( - - -class_member_declaration + + +int - - -= + + +equality_expression - - -ConditionalRef + + +type - - -contextual_keyword + + +X - - + + identifier - - -method_declaration - - - -integral_type - - - + + identifier - - -method_modifier + + +in - - -identifier + + +local_variable_initializer - - + + method_modifiers - - -element_access - - - -fixed_pointer_initializer + + +s - - -tuple_type_element + + +2 - - -identifier + + +member_name - - -explicitly_typed_local_variable_declaration + + +literal - - -identifier + + +< - - -class_member_declaration + + +( - - -identifier + + +local_variable_initializer - - -0b101 + + +switch - - -, + + +) - - -T + + +) - - -, + + +type - - -variable_declarators + + +[ - - + + identifier - - -argument_list + + +otherArr - - -[ + + +fixed_parameter - - -return_statement + + +statement - - -multiplicative_expression + + +] - - -declaration_statement + + +member_access - - -primary_expression + + +r - - -ref_kind + + += - - -( + + +NullReferenceException - - -argument_list + + +type - - -] + + +1 - - -variable_reference + + +predefined_type - - -ref_method_modifier + + +type - - -fixed_parameter + + +} - - -return_statement + + +public - - + + ref_method_modifier - - -primary_expression - - - -: + + +literal - - + + identifier - - -int - - - -return_type + + +argument_name - - -void + + +ref - - -stackalloc_expression + + +member_name - - -ref_indexer_body + + +method_modifiers - - -, + + +fixed_pointer_declarators - - -relational_expression + + +ptr - - -, + + +identifier - - -explicitly_typed_local_variable_declarator + + +ref - - -method_modifiers + + +identifier - - -method_body + + +; - - -fixed_size_buffer_modifier + + +( - - -identifier + + +contextual_keyword - - -member_access + + +expression_statement - - -integral_type + + +fixed_size_buffer_modifier - - -equality_expression + + +ref_return_type - - -unmanaged_type + + +public - - -method_modifiers + + +( - - -result + + +when - - -embedded_statement + + +null_coalescing_expression - - -readonly + + +primary_expression - - -TValue + + += - - -explicitly_typed_local_variable_declaration + + +ref_method_body - - -3 + + +identifier - - -age + + +relational_expression - - -> + + +default_argument - - -method_modifiers + + +method_modifier - - -null_conditional_member_access + + +return - - -object_creation_expression + + +ref - - + + , - - -public + + +method_header - - + + ref_method_modifier - - -integral_type + + +declaration_statement - - -primary_expression + + +, - - -statement + + +multiplicative_expression - - -) + + +declaration_statement - - -{ + + +3 - - + + identifier - - -Vector3 - - - -additive_expression + + +2 - - -=> + + +( - - -a + + +contextual_keyword - - -throw_expression + + +? - - -fixed_parameters + + +name - - -identifier + + +anonymous_function_signature - - -declaration_statement + + +default - - -stackalloc_element_initializer + + += - - -expression_statement + + +parameter_list - - -) + + +block - - -ref_kind + + +int - - -statement + + +r1 - - -method_declaration + + +additive_expression - - -object_creation_expression + + +static - - -block + + +. - - -invocation_expression + + +equality_expression - - + + identifier - - -{ - - - -tuple_type_element + + +multiplicative_expression - - -? + + +string - - -IndexingMovableFixed + + +method_modifiers - - -identifier + + +struct_member_declaration - - -tuple_element + + +type_parameter_constraints - - -return_type + + +v1 - - -identifier + + +stackalloc_element_initializer - - -explicitly_typed_local_variable_declaration + + +fixed_parameter - - -type + + +method_header - - -} + + +* - - -case_guard + + +expression_statement - - -parameter_mode_modifier + + +stackalloc_initializer - - -statement_list + + +integral_type - - -Vector3 + + +type_argument - - -tuple_expression + + +> - - -additive_expression + + +identifier - - -additive_expression + + +stackalloc_element_initializer - - -value_type + + +explicitly_typed_local_variable_declaration - - -. + + +; - - + + struct_member_declaration - - -literal + + +r1 - - + + +element_access + + + identifier - - -primary_expression + + +{ - - -literal + + +ref_kind - - -PatternBasedFixed + + +primary_expression - - -res + + +in - - -additive_expression + + +equality_expression - - -50 + + +variable_initializer - - -async + + +: - - -explicitly_typed_local_variable_declaration + + +implicitly_typed_local_variable_declaration - - -type_argument_list + + +string - - -) + + +result - - -type + + +identifier - - -type + + +v1 - - -statement_list + + +member_access - - -integral_type + + +explicitly_typed_local_variable_declaration - - -; + + +null - - -expression_statement + + +identifier - - -method_modifier + + +string - - -literal + + ++ - - -? + + +relational_expression - - -explicitly_typed_local_variable_declarator + + +class_member_declaration + + + +statement - - + + identifier - - -field_declaration + + +res - - -ref + + +( - - -argument_list + + +identifier - - -) + + +argument_list - - -type + + +variable_declarators - - -primary_expression + + +( - - -operator_body + + +explicitly_typed_local_variable_declarator - - -consequence + + +. - - + + ; - - -ptr - - - -local_variable_initializer + + +statement - - -v2 + + +ref - - + + primary_expression - - -} - - - -class_member_declaration + + +equality_expression - - -ref + + += - - -local_function_declaration + + +explicitly_typed_local_variable_declarator - - -local_variable_declaration + + +class_member_declaration - - -local_variable_declaration + + +; - - -* + + +isEmployed - - -nullable_value_type + + +variable_declarator - - -struct_declaration + + +v1 - - -fixed_parameter + + +] - - -i + + +) - - -{ + + +v1 - - -explicitly_typed_local_variable_declaration + + +method_body - - -stackalloc + + +identifier - - -member_name + + +ConditionalRef - - -namespace_member_declaration + + +: - - -) + + ++ - - -statement + + +} - - -true + + +operator_modifier - - -personAge + + +declaration_expression - - -+ + + +anonymous_function_body - - -ref + + +, - - -null_coalescing_expression + + +dec - - -literal + + +expression_statement - - -literal + + +anonymous_function_signature - - -; + + +r - - -class_type + + +statement_list - - -identifier + + +relational_expression - - -primary_expression + + +var - - -) + + +identifier - - -unmanaged + + +consequence - - -relational_expression + + +( - - -class_member_declaration + + +[ - - -isEmployed + + +method_header - - -0b1_0_1 + + +statement_expression - - -fixed_parameter + + +; - - -method_body + + +compilation_unit - - -int + + +identifier - - -DoSomething + + +identifier - - -0x_1_2 + + +integral_type - - -v1 + + +statement_list - - -int + + +invocation_expression - - -method_declaration + + +statement - - + + ) - - -) + + +expression - - -name + + +f1 - - -( + + +member_access - - -isEmployed + + +statement_expression - - -argument + + +class_type - - -literal + + +ref_kind - - -type + + +member_name - - -method_body + + +ref_local_variable_declarator - - -statement_expression + + +conditional_or_expression - - -return_type + + +explicit_anonymous_function_parameter_list - - -declaration_pattern + + +ref_method_modifier - - -argument_value + + +argument_name - - -argument_list + + +method_declaration + + + +local_variable_initializer - - + + block - - -type + + +) - - -stackalloc + + +identifier - - -method_declaration + + +1 - - -( + + +) - - -primary_expression + + +statement_list - - -literal + + +expression - - -ref_method_body + + +ref - - -string + + +tuple_literal - - -argument_name + + +< - - -] + + +statement_list - - -return_type + + +. \ No newline at end of file diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/sample.cs b/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/sample.cs index 398168839..d7dce3c4a 100755 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/sample.cs +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v7/AllInOneNoPreprocessor-v7/sample.cs @@ -142,6 +142,13 @@ public void NonTrailingNamedArguments() DoSomething(true, personAge:age, personName:name); // already legal } + public void RefAssignment() + { + int a = 1, b = 2; + ref var r = ref a; + r = ref b; + } + public void ConditionalRef() { ref var r = ref (arr != null ? ref arr[0]: ref otherArr[0]); diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.gruntree.red.txt index 7fc444db9..a8d6ca36d 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.gruntree.red.txt @@ -43,43 +43,83 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression_statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_statement ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_deconstructing_declaration ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ integral_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ int +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ i1 +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ integral_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ int +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ integral_type -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ int +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ contextual_keyword +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ var ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ i1 +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ i2 ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ integral_type -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ int +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ contextual_keyword +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ var ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -91,122 +131,73 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ contextual_keyword -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ var -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ i2 -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ contextual_keyword -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ var -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_literal +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ literal -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ 1 -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ literal +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ 1 ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ literal -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ 2 -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ literal +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ 2 ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_literal +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ literal -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ 3 -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ literal +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ 3 ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ literal -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ 4 -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ literal +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ 4 ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ literal -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ 5 -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ literal +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ 5 ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ @@ -220,7 +211,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -228,10 +219,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -257,7 +245,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ argument ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_literal ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element @@ -293,38 +281,32 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructing_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ w -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ w ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_literal ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element @@ -385,22 +367,19 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ argument_value ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ out ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ variable_reference +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ integral_type -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ int -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ integral_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ int ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ @@ -421,22 +400,19 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ argument_value ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ out ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ variable_reference +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ contextual_keyword -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ var -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ contextual_keyword +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ var ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ @@ -493,7 +469,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -563,10 +539,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -584,77 +557,67 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_statement ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_declaration +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_deconstructing_declaration ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ implicitly_typed_local_variable_declaration -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ var +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ implicitly_typed_local_variable_declarator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ y -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ namespace_or_type_name ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ relational_expression -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ relational_expression -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ A -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ A +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument_list ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ shift_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ B ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ relational_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ relational_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ C ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ shift_expression -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ D -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ E ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ D +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ y +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ; @@ -663,78 +626,110 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression_statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_statement ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_deconstructing_declaration ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ namespace_or_type_name ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ A +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument_list +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ namespace_or_type_name +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ A +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ B ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument_list -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ B -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ C -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ C ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ D +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ E -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ D ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ y +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ namespace_or_type_name +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ F +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument_list +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ G +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ H +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ I +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ y +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ; @@ -747,113 +742,986 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ t +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_literal ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ literal +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ 1 +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ literal +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ 2 +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_literal +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ namespace_or_type_name -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ A -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument_list -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ B -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ C -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ literal +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ 3 +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ literal +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ 4 ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ; +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression_statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructing_assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ p +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ D +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ q ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ t +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ; +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_deconstructing_declaration +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ E +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ contextual_keyword +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ var +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ p +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ namespace_or_type_name -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ F -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument_list -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ G -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ H -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ contextual_keyword +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ var ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ I +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ q ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ t ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ; +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_deconstructing_declaration +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ y +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ contextual_keyword +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ var +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ p +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructing_assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ q +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ t +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ; +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_deconstructing_declaration +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ namespace_or_type_name +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ A +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument_list +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ B +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ C +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ p +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ namespace_or_type_name +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ A +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument_list +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ B +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ C +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ q +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ t +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ; +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_deconstructing_declaration +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ namespace_or_type_name +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ A +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument_list +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ B +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ C +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ p +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructing_assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ q +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ t +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ; +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_deconstructing_declaration +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ namespace_or_type_name +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ A +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument_list +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ B +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ C +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ p +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructing_assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ relational_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ relational_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ A +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ shift_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ B +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ relational_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ relational_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ C +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ shift_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ q +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ t +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ; +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_deconstructing_declaration +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ contextual_keyword +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ var +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ p +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructing_assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ relational_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ relational_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ A +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ shift_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ B +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ relational_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ relational_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ C +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ shift_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ q +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ x +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ; +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_statement +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_deconstructing_declaration +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ contextual_keyword +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ var +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ p +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructing_assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ conditional_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ null_coalescing_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ relational_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ relational_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ a +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ shift_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ b +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ? +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ref +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ variable_reference +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ q +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ : +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ref +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ variable_reference +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ r +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ deconstructor_element +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ discard_token +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ _ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ) +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ x +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.stderr.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.stderr.txt index e69de29bb..2cea70885 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.stderr.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.stderr.txt @@ -0,0 +1,4 @@ +(29:40) Semantic error, expression is not a variable reference: A < B +(29:47) Semantic error, expression is not a variable reference: C > q +(32:26) Semantic error, expression is not a variable reference: A < B +(32:33) Semantic error, expression is not a variable reference: C > q diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.tokens.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.tokens.txt index 44436369e..4039fc816 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.tokens.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.tokens.txt @@ -100,57 +100,247 @@ [@99,529:529='=',<'='>,16:25] [@100,531:531='x',,16:27] [@101,532:532=';',<';'>,16:28] -[@102,589:591='var',<'var'>,17:6] -[@103,593:593='y',,17:10] -[@104,595:595='=',<'='>,17:12] -[@105,597:597='(',<'('>,17:14] -[@106,598:598='A',,17:15] -[@107,600:600='<',<'<'>,17:17] -[@108,602:602='B',,17:19] -[@109,603:603=',',<','>,17:20] -[@110,605:605='C',,17:22] -[@111,607:607='>',<'>'>,17:24] -[@112,609:609='D',,17:26] -[@113,610:610=',',<','>,17:27] -[@114,612:612='E',,17:29] -[@115,613:613=')',<')'>,17:30] -[@116,614:614=';',<';'>,17:31] -[@117,681:681='(',<'('>,18:6] -[@118,682:682='A',,18:7] -[@119,684:684='<',<'<'>,18:9] -[@120,686:686='B',,18:11] -[@121,687:687=',',<','>,18:12] -[@122,689:689='C',,18:14] -[@123,691:691='>',<'>'>,18:16] -[@124,693:693='D',,18:18] -[@125,694:694=',',<','>,18:19] -[@126,696:696='E',,18:21] -[@127,697:697=')',<')'>,18:22] -[@128,699:699='=',<'='>,18:24] -[@129,701:701='y',,18:26] -[@130,702:702=';',<';'>,18:27] -[@131,804:804='(',<'('>,20:6] -[@132,805:805='A',,20:7] -[@133,807:807='<',<'<'>,20:9] -[@134,809:809='B',,20:11] -[@135,810:810=',',<','>,20:12] -[@136,812:812='C',,20:14] -[@137,814:814='>',<'>'>,20:16] -[@138,816:816='D',,20:18] -[@139,817:817=',',<','>,20:19] -[@140,819:819='E',,20:21] -[@141,820:820=',',<','>,20:22] -[@142,822:822='F',,20:24] -[@143,824:824='<',<'<'>,20:26] -[@144,826:826='G',,20:28] -[@145,827:827=',',<','>,20:29] -[@146,829:829='H',,20:31] -[@147,831:831='>',<'>'>,20:33] -[@148,833:833='I',,20:35] -[@149,834:834=')',<')'>,20:36] -[@150,836:836='=',<'='>,20:38] -[@151,838:838='y',,20:40] -[@152,839:839=';',<';'>,20:41] -[@153,896:896='}',<'}'>,21:3] -[@154,898:898='}',<'}'>,22:0] -[@155,899:898='',,22:1] +[@102,589:589='(',<'('>,17:6] +[@103,590:590='A',,17:7] +[@104,592:592='<',<'<'>,17:9] +[@105,594:594='B',,17:11] +[@106,595:595=',',<','>,17:12] +[@107,597:597='C',,17:14] +[@108,599:599='>',<'>'>,17:16] +[@109,601:601='D',,17:18] +[@110,602:602=',',<','>,17:19] +[@111,604:604='_',<'_'>,17:21] +[@112,605:605=')',<')'>,17:22] +[@113,607:607='=',<'='>,17:24] +[@114,609:609='y',,17:26] +[@115,610:610=';',<';'>,17:27] +[@116,705:705='(',<'('>,19:6] +[@117,706:706='A',,19:7] +[@118,708:708='<',<'<'>,19:9] +[@119,710:710='B',,19:11] +[@120,711:711=',',<','>,19:12] +[@121,713:713='C',,19:14] +[@122,715:715='>',<'>'>,19:16] +[@123,717:717='D',,19:18] +[@124,718:718=',',<','>,19:19] +[@125,720:720='_',<'_'>,19:21] +[@126,721:721=',',<','>,19:22] +[@127,723:723='F',,19:24] +[@128,725:725='<',<'<'>,19:26] +[@129,727:727='G',,19:28] +[@130,728:728=',',<','>,19:29] +[@131,730:730='H',,19:31] +[@132,732:732='>',<'>'>,19:33] +[@133,734:734='I',,19:35] +[@134,735:735=')',<')'>,19:36] +[@135,737:737='=',<'='>,19:38] +[@136,739:739='y',,19:40] +[@137,740:740=';',<';'>,19:41] +[@138,794:794='t',,21:6] +[@139,796:796='=',<'='>,21:8] +[@140,798:798='(',<'('>,21:10] +[@141,799:799='1',,21:11] +[@142,800:800=',',<','>,21:12] +[@143,802:802='2',,21:14] +[@144,803:803=',',<','>,21:15] +[@145,805:805='(',<'('>,21:17] +[@146,806:806='3',,21:18] +[@147,807:807=',',<','>,21:19] +[@148,809:809='4',,21:21] +[@149,810:810=')',<')'>,21:22] +[@150,811:811=')',<')'>,21:23] +[@151,812:812=';',<';'>,21:24] +[@152,820:820='(',<'('>,22:6] +[@153,821:821='p',,22:7] +[@154,822:822=',',<','>,22:8] +[@155,824:824='_',<'_'>,22:10] +[@156,825:825=',',<','>,22:11] +[@157,827:827='(',<'('>,22:13] +[@158,828:828='_',<'_'>,22:14] +[@159,829:829=',',<','>,22:15] +[@160,831:831='q',,22:17] +[@161,832:832=')',<')'>,22:18] +[@162,833:833=')',<')'>,22:19] +[@163,835:835='=',<'='>,22:21] +[@164,837:837='t',,22:23] +[@165,838:838=';',<';'>,22:24] +[@166,900:900='(',<'('>,23:6] +[@167,901:903='var',<'var'>,23:7] +[@168,905:905='p',,23:11] +[@169,906:906=',',<','>,23:12] +[@170,908:908='_',<'_'>,23:14] +[@171,909:909=',',<','>,23:15] +[@172,911:911='(',<'('>,23:17] +[@173,912:912='_',<'_'>,23:18] +[@174,913:913=',',<','>,23:19] +[@175,915:917='var',<'var'>,23:21] +[@176,919:919='q',,23:25] +[@177,920:920=')',<')'>,23:26] +[@178,921:921=')',<')'>,23:27] +[@179,923:923='=',<'='>,23:29] +[@180,925:925='t',,23:31] +[@181,926:926=';',<';'>,23:32] +[@182,981:981='(',<'('>,24:6] +[@183,982:984='var',<'var'>,24:7] +[@184,986:986='p',,24:11] +[@185,987:987=',',<','>,24:12] +[@186,989:989='_',<'_'>,24:14] +[@187,990:990=',',<','>,24:15] +[@188,992:992='_',<'_'>,24:17] +[@189,993:993=')',<')'>,24:18] +[@190,995:995='=',<'='>,24:20] +[@191,997:997='(',<'('>,24:22] +[@192,998:998='_',<'_'>,24:23] +[@193,999:999=',',<','>,24:24] +[@194,1001:1001='_',<'_'>,24:26] +[@195,1002:1002=',',<','>,24:27] +[@196,1004:1004='(',<'('>,24:29] +[@197,1005:1005='_',<'_'>,24:30] +[@198,1006:1006=',',<','>,24:31] +[@199,1008:1008='q',,24:33] +[@200,1009:1009=')',<')'>,24:34] +[@201,1010:1010=')',<')'>,24:35] +[@202,1012:1012='=',<'='>,24:37] +[@203,1014:1014='t',,24:39] +[@204,1015:1015=';',<';'>,24:40] +[@205,1041:1041='(',<'('>,26:6] +[@206,1042:1042='A',,26:7] +[@207,1044:1044='<',<'<'>,26:9] +[@208,1046:1046='B',,26:11] +[@209,1047:1047=',',<','>,26:12] +[@210,1049:1049='C',,26:14] +[@211,1051:1051='>',<'>'>,26:16] +[@212,1053:1053='p',,26:18] +[@213,1054:1054=',',<','>,26:19] +[@214,1056:1056='_',<'_'>,26:21] +[@215,1057:1057=',',<','>,26:22] +[@216,1059:1059='(',<'('>,26:24] +[@217,1060:1060='_',<'_'>,26:25] +[@218,1061:1061=',',<','>,26:26] +[@219,1063:1063='A',,26:28] +[@220,1065:1065='<',<'<'>,26:30] +[@221,1067:1067='B',,26:32] +[@222,1068:1068=',',<','>,26:33] +[@223,1070:1070='C',,26:35] +[@224,1072:1072='>',<'>'>,26:37] +[@225,1074:1074='q',,26:39] +[@226,1075:1075=')',<')'>,26:40] +[@227,1076:1076=')',<')'>,26:41] +[@228,1078:1078='=',<'='>,26:43] +[@229,1080:1080='t',,26:45] +[@230,1081:1081=';',<';'>,26:46] +[@231,1140:1140='(',<'('>,27:6] +[@232,1141:1141='A',,27:7] +[@233,1143:1143='<',<'<'>,27:9] +[@234,1145:1145='B',,27:11] +[@235,1146:1146=',',<','>,27:12] +[@236,1148:1148='C',,27:14] +[@237,1150:1150='>',<'>'>,27:16] +[@238,1152:1152='p',,27:18] +[@239,1153:1153=',',<','>,27:19] +[@240,1155:1155='_',<'_'>,27:21] +[@241,1156:1156=',',<','>,27:22] +[@242,1158:1158='_',<'_'>,27:24] +[@243,1159:1159=')',<')'>,27:25] +[@244,1161:1161='=',<'='>,27:27] +[@245,1163:1163='(',<'('>,27:29] +[@246,1164:1164='_',<'_'>,27:30] +[@247,1165:1165=',',<','>,27:31] +[@248,1167:1167='_',<'_'>,27:33] +[@249,1168:1168=',',<','>,27:34] +[@250,1170:1170='(',<'('>,27:36] +[@251,1171:1171='_',<'_'>,27:37] +[@252,1172:1172=',',<','>,27:38] +[@253,1174:1174='q',,27:40] +[@254,1175:1175=')',<')'>,27:41] +[@255,1176:1176=')',<')'>,27:42] +[@256,1178:1178='=',<'='>,27:44] +[@257,1180:1180='t',,27:46] +[@258,1181:1181=';',<';'>,27:47] +[@259,1213:1213='(',<'('>,29:6] +[@260,1214:1214='A',,29:7] +[@261,1216:1216='<',<'<'>,29:9] +[@262,1218:1218='B',,29:11] +[@263,1219:1219=',',<','>,29:12] +[@264,1221:1221='C',,29:14] +[@265,1223:1223='>',<'>'>,29:16] +[@266,1225:1225='p',,29:18] +[@267,1226:1226=',',<','>,29:19] +[@268,1228:1228='_',<'_'>,29:21] +[@269,1229:1229=',',<','>,29:22] +[@270,1231:1231='_',<'_'>,29:24] +[@271,1232:1232=')',<')'>,29:25] +[@272,1234:1234='=',<'='>,29:27] +[@273,1236:1236='(',<'('>,29:29] +[@274,1237:1237='_',<'_'>,29:30] +[@275,1238:1238=',',<','>,29:31] +[@276,1240:1240='_',<'_'>,29:33] +[@277,1241:1241=',',<','>,29:34] +[@278,1243:1243='(',<'('>,29:36] +[@279,1244:1244='_',<'_'>,29:37] +[@280,1245:1245=',',<','>,29:38] +[@281,1247:1247='A',,29:40] +[@282,1249:1249='<',<'<'>,29:42] +[@283,1251:1251='B',,29:44] +[@284,1252:1252=',',<','>,29:45] +[@285,1254:1254='C',,29:47] +[@286,1256:1256='>',<'>'>,29:49] +[@287,1258:1258='q',,29:51] +[@288,1259:1259=')',<')'>,29:52] +[@289,1260:1260=')',<')'>,29:53] +[@290,1262:1262='=',<'='>,29:55] +[@291,1264:1264='t',,29:57] +[@292,1265:1265=';',<';'>,29:58] +[@293,1426:1426='(',<'('>,32:6] +[@294,1427:1429='var',<'var'>,32:7] +[@295,1431:1431='p',,32:11] +[@296,1432:1432=',',<','>,32:12] +[@297,1434:1434='_',<'_'>,32:14] +[@298,1435:1435=',',<','>,32:15] +[@299,1437:1437='_',<'_'>,32:17] +[@300,1438:1438=')',<')'>,32:18] +[@301,1440:1440='=',<'='>,32:20] +[@302,1442:1442='(',<'('>,32:22] +[@303,1443:1443='_',<'_'>,32:23] +[@304,1444:1444=',',<','>,32:24] +[@305,1446:1446='A',,32:26] +[@306,1448:1448='<',<'<'>,32:28] +[@307,1450:1450='B',,32:30] +[@308,1451:1451=',',<','>,32:31] +[@309,1453:1453='C',,32:33] +[@310,1455:1455='>',<'>'>,32:35] +[@311,1457:1457='q',,32:37] +[@312,1458:1458=')',<')'>,32:38] +[@313,1460:1460='=',<'='>,32:40] +[@314,1462:1462='x',,32:42] +[@315,1463:1463=';',<';'>,32:43] +[@316,1637:1637='(',<'('>,35:6] +[@317,1638:1640='var',<'var'>,35:7] +[@318,1642:1642='p',,35:11] +[@319,1643:1643=',',<','>,35:12] +[@320,1645:1645='_',<'_'>,35:14] +[@321,1646:1646=',',<','>,35:15] +[@322,1648:1648='_',<'_'>,35:17] +[@323,1649:1649=')',<')'>,35:18] +[@324,1651:1651='=',<'='>,35:20] +[@325,1653:1653='(',<'('>,35:22] +[@326,1654:1654='_',<'_'>,35:23] +[@327,1655:1655=',',<','>,35:24] +[@328,1657:1657='a',,35:26] +[@329,1659:1659='<',<'<'>,35:28] +[@330,1661:1661='b',,35:30] +[@331,1663:1663='?',<'?'>,35:32] +[@332,1665:1667='ref',<'ref'>,35:34] +[@333,1669:1669='q',,35:38] +[@334,1671:1671=':',<':'>,35:40] +[@335,1673:1675='ref',<'ref'>,35:42] +[@336,1677:1677='r',,35:46] +[@337,1678:1678=',',<','>,35:47] +[@338,1680:1680='_',<'_'>,35:49] +[@339,1681:1681=')',<')'>,35:50] +[@340,1683:1683='=',<'='>,35:52] +[@341,1685:1685='x',,35:54] +[@342,1686:1686=';',<';'>,35:55] +[@343,1746:1746='}',<'}'>,37:3] +[@344,1748:1748='}',<'}'>,38:0] +[@345,1750:1749='',,39:0] diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.tree.red.txt index 6db6eed58..41a5cb3c0 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (class_declaration class (identifier DeclarationExpressions) (class_body { (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier DeclarationExpressions_1)) ( )) (method_body (block { (statement_list (statement (expression_statement (statement_expression (assignment (unary_expression (tuple_expression ( (tuple_element (declaration_expression (local_variable_type (integral_type int)) (identifier i1))) , (tuple_element (declaration_expression (local_variable_type (integral_type int)) (identifier (discard_token _)))) , (tuple_element (tuple_expression ( (tuple_element (declaration_expression (local_variable_type (contextual_keyword var)) (identifier i2))) , (tuple_element (declaration_expression (local_variable_type (contextual_keyword var)) (identifier (discard_token _)))) ))) , (tuple_element (discard_token _)) ))) (assignment_operator =) (expression (tuple_expression ( (tuple_element (literal 1)) , (tuple_element (literal 2)) , (tuple_element (tuple_expression ( (tuple_element (literal 3)) , (tuple_element (literal 4)) ))) , (tuple_element (literal 5)) ))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (discard_token _)) (assignment_operator =) (expression (invocation_expression (primary_expression (identifier P)) ( (argument_list (argument (identifier x)) , (argument (tuple_expression ( (tuple_element (identifier y)) , (tuple_element (identifier z)) )))) ))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (tuple_expression ( (tuple_element (discard_token _)) , (tuple_element (identifier w)) ))) (assignment_operator =) (expression (tuple_expression ( (tuple_element (literal 42)) , (tuple_element (literal 'x')) ))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier s3) = (expression (invocation_expression (primary_expression (identifier Q)) ( (argument_list (argument (argument_value out (variable_reference (declaration_expression (local_variable_type (integral_type int)) (identifier (discard_token _)))))) , (argument (literal "Three")) , (argument (argument_value out (variable_reference (declaration_expression (local_variable_type (contextual_keyword var)) (identifier (discard_token _))))))) )))))) ;))) })))) (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier DeclarationExpressions_2)) ( )) (method_body (block { (statement_list (statement (expression_statement (statement_expression (assignment (unary_expression (invocation_expression (primary_expression (identifier R)) ( (argument_list (argument (relational_expression (relational_expression (identifier A)) < (shift_expression (identifier B)))) , (argument (relational_expression (relational_expression (identifier C)) > (shift_expression (identifier D)))) , (argument (identifier E))) ))) (assignment_operator =) (expression (identifier x)))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier y) = (expression (tuple_expression ( (tuple_element (relational_expression (relational_expression (identifier A)) < (shift_expression (identifier B)))) , (tuple_element (relational_expression (relational_expression (identifier C)) > (shift_expression (identifier D)))) , (tuple_element (identifier E)) )))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (tuple_expression ( (tuple_element (declaration_expression (local_variable_type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) , (type_argument (identifier C)) >))) (identifier D))) , (tuple_element (identifier E)) ))) (assignment_operator =) (expression (identifier y)))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (tuple_expression ( (tuple_element (declaration_expression (local_variable_type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) , (type_argument (identifier C)) >))) (identifier D))) , (tuple_element (identifier E)) , (tuple_element (declaration_expression (local_variable_type (namespace_or_type_name (identifier F) (type_argument_list < (type_argument (identifier G)) , (type_argument (identifier H)) >))) (identifier I))) ))) (assignment_operator =) (expression (identifier y)))) ;))) })))) })))) +(prog (compilation_unit (class_declaration class (identifier DeclarationExpressions) (class_body { (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier DeclarationExpressions_1)) ( )) (method_body (block { (statement_list (statement (declaration_statement (local_deconstructing_declaration (declaration_deconstructor ( (declaration_deconstructor_element (declaration_expression (local_variable_type (integral_type int)) (identifier i1))) , (declaration_deconstructor_element (declaration_expression (local_variable_type (integral_type int)) (identifier (discard_token _)))) , (declaration_deconstructor_element (declaration_deconstructor ( (declaration_deconstructor_element (declaration_expression (local_variable_type (contextual_keyword var)) (identifier i2))) , (declaration_deconstructor_element (declaration_expression (local_variable_type (contextual_keyword var)) (identifier (discard_token _)))) ))) , (declaration_deconstructor_element (discard_token _)) )) = (expression (tuple_literal ( (tuple_element (literal 1)) , (tuple_element (literal 2)) , (tuple_element (tuple_literal ( (tuple_element (literal 3)) , (tuple_element (literal 4)) ))) , (tuple_element (literal 5)) )))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (discard_token _)) = (expression (invocation_expression (primary_expression (identifier P)) ( (argument_list (argument (identifier x)) , (argument (tuple_literal ( (tuple_element (identifier y)) , (tuple_element (identifier z)) )))) ))))) ;)) (statement (expression_statement (statement_expression (deconstructing_assignment (deconstructor ( (deconstructor_element (discard_token _)) , (deconstructor_element (identifier w)) )) = (expression (tuple_literal ( (tuple_element (literal 42)) , (tuple_element (literal 'x')) ))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier s3) = (expression (invocation_expression (primary_expression (identifier Q)) ( (argument_list (argument (argument_value out (declaration_expression (local_variable_type (integral_type int)) (identifier (discard_token _))))) , (argument (literal "Three")) , (argument (argument_value out (declaration_expression (local_variable_type (contextual_keyword var)) (identifier (discard_token _)))))) )))))) ;))) })))) (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier DeclarationExpressions_2)) ( )) (method_body (block { (statement_list (statement (expression_statement (statement_expression (simple_assignment (unary_expression (invocation_expression (primary_expression (identifier R)) ( (argument_list (argument (relational_expression (relational_expression (identifier A)) < (shift_expression (identifier B)))) , (argument (relational_expression (relational_expression (identifier C)) > (shift_expression (identifier D)))) , (argument (identifier E))) ))) = (expression (identifier x)))) ;)) (statement (declaration_statement (local_deconstructing_declaration (declaration_deconstructor ( (declaration_deconstructor_element (declaration_expression (local_variable_type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) , (type_argument (identifier C)) >))) (identifier D))) , (declaration_deconstructor_element (discard_token _)) )) = (expression (identifier y))) ;)) (statement (declaration_statement (local_deconstructing_declaration (declaration_deconstructor ( (declaration_deconstructor_element (declaration_expression (local_variable_type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) , (type_argument (identifier C)) >))) (identifier D))) , (declaration_deconstructor_element (discard_token _)) , (declaration_deconstructor_element (declaration_expression (local_variable_type (namespace_or_type_name (identifier F) (type_argument_list < (type_argument (identifier G)) , (type_argument (identifier H)) >))) (identifier I))) )) = (expression (identifier y))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier t)) = (expression (tuple_literal ( (tuple_element (literal 1)) , (tuple_element (literal 2)) , (tuple_element (tuple_literal ( (tuple_element (literal 3)) , (tuple_element (literal 4)) ))) ))))) ;)) (statement (expression_statement (statement_expression (deconstructing_assignment (deconstructor ( (deconstructor_element (identifier p)) , (deconstructor_element (discard_token _)) , (deconstructor_element (deconstructor ( (deconstructor_element (discard_token _)) , (deconstructor_element (identifier q)) ))) )) = (expression (identifier t)))) ;)) (statement (declaration_statement (local_deconstructing_declaration (declaration_deconstructor ( (declaration_deconstructor_element (declaration_expression (local_variable_type (contextual_keyword var)) (identifier p))) , (declaration_deconstructor_element (discard_token _)) , (declaration_deconstructor_element (declaration_deconstructor ( (declaration_deconstructor_element (discard_token _)) , (declaration_deconstructor_element (declaration_expression (local_variable_type (contextual_keyword var)) (identifier q))) ))) )) = (expression (identifier t))) ;)) (statement (declaration_statement (local_deconstructing_declaration (declaration_deconstructor ( (declaration_deconstructor_element (declaration_expression (local_variable_type (contextual_keyword var)) (identifier p))) , (declaration_deconstructor_element (discard_token _)) , (declaration_deconstructor_element (discard_token _)) )) = (expression (deconstructing_assignment (deconstructor ( (deconstructor_element (discard_token _)) , (deconstructor_element (discard_token _)) , (deconstructor_element (deconstructor ( (deconstructor_element (discard_token _)) , (deconstructor_element (identifier q)) ))) )) = (expression (identifier t))))) ;)) (statement (declaration_statement (local_deconstructing_declaration (declaration_deconstructor ( (declaration_deconstructor_element (declaration_expression (local_variable_type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) , (type_argument (identifier C)) >))) (identifier p))) , (declaration_deconstructor_element (discard_token _)) , (declaration_deconstructor_element (declaration_deconstructor ( (declaration_deconstructor_element (discard_token _)) , (declaration_deconstructor_element (declaration_expression (local_variable_type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) , (type_argument (identifier C)) >))) (identifier q))) ))) )) = (expression (identifier t))) ;)) (statement (declaration_statement (local_deconstructing_declaration (declaration_deconstructor ( (declaration_deconstructor_element (declaration_expression (local_variable_type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) , (type_argument (identifier C)) >))) (identifier p))) , (declaration_deconstructor_element (discard_token _)) , (declaration_deconstructor_element (discard_token _)) )) = (expression (deconstructing_assignment (deconstructor ( (deconstructor_element (discard_token _)) , (deconstructor_element (discard_token _)) , (deconstructor_element (deconstructor ( (deconstructor_element (discard_token _)) , (deconstructor_element (identifier q)) ))) )) = (expression (identifier t))))) ;)) (statement (declaration_statement (local_deconstructing_declaration (declaration_deconstructor ( (declaration_deconstructor_element (declaration_expression (local_variable_type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) , (type_argument (identifier C)) >))) (identifier p))) , (declaration_deconstructor_element (discard_token _)) , (declaration_deconstructor_element (discard_token _)) )) = (expression (deconstructing_assignment (deconstructor ( (deconstructor_element (discard_token _)) , (deconstructor_element (discard_token _)) , (deconstructor_element (deconstructor ( (deconstructor_element (discard_token _)) , (deconstructor_element (relational_expression (relational_expression (identifier A)) < (shift_expression (identifier B)))) , (deconstructor_element (relational_expression (relational_expression (identifier C)) > (shift_expression (identifier q)))) ))) )) = (expression (identifier t))))) ;)) (statement (declaration_statement (local_deconstructing_declaration (declaration_deconstructor ( (declaration_deconstructor_element (declaration_expression (local_variable_type (contextual_keyword var)) (identifier p))) , (declaration_deconstructor_element (discard_token _)) , (declaration_deconstructor_element (discard_token _)) )) = (expression (deconstructing_assignment (deconstructor ( (deconstructor_element (discard_token _)) , (deconstructor_element (relational_expression (relational_expression (identifier A)) < (shift_expression (identifier B)))) , (deconstructor_element (relational_expression (relational_expression (identifier C)) > (shift_expression (identifier q)))) )) = (expression (identifier x))))) ;)) (statement (declaration_statement (local_deconstructing_declaration (declaration_deconstructor ( (declaration_deconstructor_element (declaration_expression (local_variable_type (contextual_keyword var)) (identifier p))) , (declaration_deconstructor_element (discard_token _)) , (declaration_deconstructor_element (discard_token _)) )) = (expression (deconstructing_assignment (deconstructor ( (deconstructor_element (discard_token _)) , (deconstructor_element (conditional_expression (null_coalescing_expression (relational_expression (relational_expression (identifier a)) < (shift_expression (identifier b)))) ? ref (variable_reference (identifier q)) : ref (variable_reference (identifier r)))) , (deconstructor_element (discard_token _)) )) = (expression (identifier x))))) ;))) })))) })))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.tree.svg index adb34604b..75c607a7e 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/Reference/sample.tree.svg @@ -1,1980 +1,4060 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +deconstructor_element + + + +) + + + statement - - -tuple_element + + +> - - + + expression_statement - - -s3 - - - -statement_expression - - - -type_argument - - - -member_name - - - -discard_token - - - -5 - - - -declaration_expression - - - + + identifier - - -DeclarationExpressions - - - -expression_statement + + +statement - - -, + + +tuple_element - - -E + + +type_argument - - -tuple_element + + +statement_list - - -A + + +type_argument - - -declaration_expression + + +t - - -, + + +( - - -assignment_operator + + +discard_token - - -) + + +local_deconstructing_declaration - - -, + + +class_member_declaration - - -integral_type + + +> - - + + , - - -identifier + + +unary_expression - - -tuple_element + + +( - - -statement_list + + +declaration_deconstructor - - -declaration_expression + + +} - - -namespace_or_type_name + + +compilation_unit - - + + , - - -assignment + + +w - - -integral_type + + +deconstructor_element - - -, + + += - - + + identifier - - -( - - - -statement - - - -void - - - + + , - - -var - - - -} - - - -tuple_element - - - -literal - - - -w + + +deconstructor_element - - -relational_expression + + +discard_token - - + + , - - -argument + + +deconstructor - - -return_type + + +_ - - -identifier + + +discard_token - - + + ( - - -tuple_element - - - -tuple_element - - - -B + + +, - - -tuple_expression + + +< - - -A + + +deconstructing_assignment - - -contextual_keyword + + +method_declaration - - -x + + +declaration_expression - - -implicitly_typed_local_variable_declarator + + +literal - - -var + + +q - - -class_declaration + + +_ - - -y + + +discard_token - - -type_argument_list + + +, - - + + ) - - -argument_value - - - -identifier + + +C - - + + identifier - - -member_name + + +; - - -shift_expression + + +identifier - - -, + + +_ - - -argument + + +declaration_deconstructor - - -= + + +_ - - + + identifier - - -int + + +) - - -argument + + +local_variable_type - - -identifier + + +> - - -identifier + + +( - - -E + + += - - -identifier + + +local_variable_type - - + + +simple_assignment + + + = - - -unary_expression + + +contextual_keyword - - -tuple_expression + + +t - - -var + + +declaration_deconstructor - - -) + + +method_body - - -declaration_expression + + +) - - + + > - - -local_variable_declaration - - - -literal + + +deconstructor_element - - -z + + +type_argument_list - - -invocation_expression + + +y - - -expression + + +) - - -statement_expression + + +C - - -tuple_expression + + +deconstructor - - -block + + +, - - -= + + +identifier - - -tuple_expression + + +type_argument - - + + ) - - + + ) - - -declaration_expression + + +tuple_element - - -{ + + +statement - - -< + + +declaration_statement - - + + +declaration_statement + + + literal - - -} + + +tuple_element - - -identifier + + +argument_list - - -identifier + + +statement - - -{ + + +discard_token - - -_ + + +identifier - - + + expression - - -assignment + + +identifier - - -implicitly_typed_local_variable_declaration + + +declaration_deconstructor_element - - -) + + +tuple_element - - -class + + +declaration_deconstructor_element - - -i1 + + +) - - -contextual_keyword + + +) - - -shift_expression + + +identifier - - -D + + +, - - -statement_list + + +declaration_expression - - -E + + +void + + + +I - - + + , - - -'x' + + +, - - + + identifier - - -relational_expression + + += - - -Q + + +( - - -tuple_element + + +tuple_literal - - -( + + +declaration_deconstructor_element - - -shift_expression + + +discard_token - - -tuple_expression + + +, - - -tuple_expression + + +namespace_or_type_name - - -P + + +type_argument - - -local_variable_type + + +deconstructor_element - - -local_variable_type + + +var - - -2 + + +relational_expression - - + + expression_statement - - -) - - - + + statement - - -= + + +contextual_keyword - - -statement_expression + + += - - -local_variable_type + + +declaration_deconstructor - - -) + + +B - - -, + + +r - - -tuple_element + + +declaration_statement - - -< + + +type_argument - - -primary_expression + + +q - - -3 + + +type_argument - - -identifier + + +'x' - - -type_argument_list + + +p - - -method_modifiers + + +, - - -tuple_element + + +B - - -) + + +contextual_keyword - - -var + + +q - - -local_variable_type + + +; - - -assignment_operator + + +discard_token - - -identifier + + +expression - - -declaration_expression + + +_ - - -class_member_declaration + + +expression - - -argument_list + + +discard_token - - -expression + + +var - - -local_variable_declaration + + +p - - -_ + + +declaration_expression - - -"Three" + + +t - - -, + + +; - - -E + + +_ - - + + expression - - -local_variable_type + + +deconstructor_element - - -literal + + +deconstructor_element - - -argument + + +identifier - - -< + + +var - - -tuple_element + + +( - - -; + + +identifier - - -A + + +4 - - -statement + + +, - - -method_body + + +identifier - - -( + + +t - - -local_variable_type + + +A - - -argument + + +G - - -> + + +local_variable_type - - -block + + +identifier - - + + , - - -declaration_expression - - - -tuple_element + + +tuple_literal - - -, + + +expression - - -H + + +statement - - -discard_token + + +B - - + + C - - -statement_expression + + +expression - - -tuple_expression + + +, - - + + argument_list - - -( - - - -tuple_expression - - - -D + + +implicitly_typed_local_variable_declarator - - -, + + +deconstructor_element - - -4 + + +( - - -_ + + +( - - -, + + +x - - -; + + +( - - -expression + + +namespace_or_type_name - - -discard_token + + +type_argument - - + + tuple_element - - -identifier + + +A - - -C + + +< - - -identifier + + +local_deconstructing_declaration - - -identifier + + +DeclarationExpressions_1 - - -int + + +var - - -method_header + + +( - - -) + + +declaration_deconstructor - - -A + + +deconstructor_element - - -F + + +; - - + + identifier - - -variable_reference - - - -method_declaration - - - -tuple_element + + +; - - -discard_token + + +declaration_deconstructor_element - - -( + + +type_argument_list - - -< + + +declaration_expression - - -argument_list + + +declaration_deconstructor_element - - -relational_expression + + +discard_token - - -identifier + + +discard_token - - -y + + +local_deconstructing_declaration - - -class_member_declaration + + +, - - -R + + +declaration_deconstructor - - -= + + +tuple_literal - - -namespace_or_type_name + + +method_header - - -identifier + + +declaration_expression - - -tuple_element + + +: - - -; + + +discard_token - - -implicitly_typed_local_variable_declarator + + +local_variable_type - - -unary_expression + + +) - - -assignment + + +identifier - - -expression_statement + + +_ - - + + tuple_element - - -discard_token - - - -variable_reference + + +< - - -B + + +? - - -unary_expression + + +declaration_deconstructor_element - - -( + + +type_argument_list - - -void + + +identifier - - -expression_statement + + +deconstructor - - -_ + + +( - - -= + + +i1 - - + + identifier - - -expression + + +relational_expression - - + + tuple_element - - -method_modifiers + + +var - - -, + + +_ - - -assignment_operator + + +A - - -identifier + + +expression - - -statement + + +invocation_expression - - -local_variable_type + + +expression - - -) + + +< - - -; + + +argument - - -{ + + +( - - -statement + + +primary_expression - - -type_argument_list + + +identifier - - -, + + +type_argument_list - - -literal + + +expression - - -tuple_expression + + +relational_expression - - -B + + +DeclarationExpressions - - -relational_expression + + += - - -shift_expression + + +local_variable_declaration - - -, + + +identifier - - + + ( - - + + identifier - - -DeclarationExpressions_1 + + +method_declaration - - + + identifier - - -I + + +discard_token - - -return_type + + +x - - + + identifier - - -; - - - -( + + +declaration_deconstructor_element - - + + identifier - - -argument + + +declaration_deconstructor_element - - -> + + +discard_token - - -DeclarationExpressions_2 + + +return_type - - -tuple_element + + +_ - - -( + + +identifier - - -tuple_element + + +D - - -literal + + += - - -1 + + +declaration_deconstructor_element - - -type_argument + + +) - - -identifier + + +expression - - -literal + + +q - - -tuple_element + + +3 - - -y + + +, - - -( + + +, - - -method_header + + +deconstructor - - -G + + +_ - - -expression + + +deconstructor_element - - -type_argument + + +, - - -( + + +statement - - -> + + +declaration_deconstructor - - -D + + +} - - -out + + +> - - -_ + + +y - - -method_body + + +; - - -expression_statement + + +A - - + + _ - - -identifier + + +( - - -B + + +, - - + + +deconstructor_element + + + namespace_or_type_name - - -identifier + + +, - - -i2 + + +local_variable_type - - -= + + +C - - -discard_token + + +) - - -relational_expression + + +declaration_statement - - -discard_token + + +deconstructor_element - - -y + + +tuple_literal - - -statement + + +( - - -assignment + + +var - - -tuple_element + + +member_name - - -expression + + +declaration_expression - - -, + + +deconstructor - - -D + + +void - - -) + + +integral_type - - -assignment_operator + + +( - - -relational_expression + + +, - - -argument_value + + +) - - -primary_expression + + +_ - - + + < - - -identifier + + +expression - - -method_declaration + + +deconstructor_element - - -assignment_operator + + +_ - - -declaration_expression + + +discard_token - - -identifier + + +declaration_expression - - -relational_expression + + +D - - -> + + += - - + + ( - - -C + + +identifier - - + + +identifier + + + += + + + tuple_element - - -identifier + + +type_argument + + + +_ - - + + identifier - - -unary_expression + + +expression - - -declaration_statement + + +statement - - -unary_expression + + +relational_expression - - -out + + +shift_expression - - + + +local_deconstructing_declaration + + + +statement_expression + + + +p + + + declaration_expression - - -statement + + +deconstructor - - -x + + +expression_statement + + + +deconstructing_assignment + + + +deconstructing_assignment + + + +A + + + +relational_expression + + + +, + + + +declaration_deconstructor_element - - + + +D + + + +argument + + + +class + + + +) + + + +p + + + +( + + + +) + + + local_variable_type - - -tuple_element + + +( - - + + identifier - - + + +local_variable_type + + + +relational_expression + + + +deconstructor + + + +t + + + +_ + + + , - - -unary_expression + + +) - - -identifier + + +( - - -42 + + +( - - + + ) - - + + +x + + + +< + + + +p + + + +argument_value + + + +discard_token + + + +identifier + + + +primary_expression + + + tuple_element - - -, + + +statement + + + +literal + + + +( - - + + +_ + + + +identifier + + + +identifier + + + +{ + + + ( - - + + ; - - -assignment_operator + + +deconstructor_element + + + +relational_expression + + + +A + + + +member_name + + + +invocation_expression + + + +deconstructing_assignment - - + + ; - - + + +declaration_expression + + + identifier - - -integral_type + + +expression + + + +identifier + + + +) - - -assignment + + +declaration_deconstructor_element - - -assignment + + +literal - - -implicitly_typed_local_variable_declaration + + +tuple_element - - -argument + + +, - - -; + + +declaration_deconstructor - - + + +discard_token + + + +identifier + + + identifier - - + + +argument + + + +shift_expression + + + _ - - -statement_expression + + +, - - + + local_variable_type - - -relational_expression + + +deconstructor_element - - -tuple_element + + +declaration_expression - - -type_argument + + +( - - -invocation_expression + + +( - - -literal + + +shift_expression - - -argument + + +deconstructor_element + + + += + + + +discard_token - - + + +B + + + identifier - - + + +, + + + +) + + + +local_variable_type + + + +, + + + identifier - - -statement_expression + + +( - - -class_body + + +int + + + +type_argument_list - - -tuple_expression + + +} + + + +declaration_statement + + + +identifier + + + +_ - - + + identifier - - + + ) - - -contextual_keyword + + +statement - - -( + + +expression - - -identifier + + +deconstructor_element - - -prog + + +integral_type - - -invocation_expression + + +s3 - - -type_argument + + +conditional_expression - - -type_argument + + +statement_expression + + + +expression + + + +local_variable_type - - + + identifier - - -tuple_element + + +local_deconstructing_declaration - - -C + + +< + + + +discard_token + + + +_ + + + +, + + + +discard_token + + + +declaration_statement + + + +local_deconstructing_declaration + + + +identifier + + + += - - + + int - - + + +; + + + identifier - - -compilation_unit + + +class_declaration - - -var + + +integral_type + + + +E + + + +declaration_deconstructor_element + + + +_ + + + +shift_expression + + + +i2 - - + + +type_argument + + + +C + + + +argument + + + +A + + + +deconstructor + + + +, + + + +, + + + +deconstructor + + + identifier - - -declaration_statement + + +x - - + + +declaration_expression + + + , - - + + +statement + + + +deconstructor_element + + + +3 + + + +declaration_deconstructor_element + + + +contextual_keyword + + + , - - -) + + +discard_token - - -= + + +deconstructor_element - - -tuple_element + + +declaration_expression - - -primary_expression + + +, - - -} + + +, + + + +identifier + + + +; + + + +, + + + +relational_expression + + + +identifier + + + +shift_expression + + + += + + + +) + + + +identifier + + + +declaration_statement + + + +declaration_deconstructor_element + + + +, + + + +statement + + + +t + + + +, + + + +declaration_deconstructor_element + + + +B + + + +shift_expression + + + +identifier + + + +identifier + + + +q + + + +> + + + +discard_token + + + +< + + + +q + + + +argument + + + +identifier + + + +deconstructor + + + +) + + + +discard_token + + + +( + + + +, + + + +relational_expression + + + +type_argument + + + +_ + + + +( + + + +tuple_literal + + + +identifier + + + +deconstructor_element + + + +identifier + + + +local_variable_type + + + +{ + + + +type_argument_list + + + +local_variable_type + + + +, + + + +method_header + + + +deconstructor_element + + + +, + + + +( + + + +( + + + +declaration_expression + + + +_ + + + +declaration_deconstructor_element + + + +) + + + +relational_expression + + + +, + + + +discard_token + + + +) + + + +block + + + += + + + +contextual_keyword + + + +, + + + +deconstructing_assignment + + + +identifier + + + +declaration_statement + + + +B + + + +Q + + + +identifier + + + +tuple_element + + + +int + + + +namespace_or_type_name + + + +declaration_deconstructor_element + + + +variable_reference + + + +unary_expression + + + +declaration_expression + + + +literal + + + +_ + + + +p + + + +identifier + + + +( + + + +local_deconstructing_declaration + + + +A + + + +2 + + + +identifier + + + +expression + + + +discard_token + + + +contextual_keyword + + + +var + + + +; + + + +tuple_element + + + +deconstructing_assignment + + + +method_modifiers + + + +A + + + +declaration_deconstructor_element + + + +, + + + +declaration_deconstructor_element + + + +contextual_keyword + + + +discard_token + + + +namespace_or_type_name + + + +literal + + + +declaration_deconstructor + + + +_ + + + += + + + +statement + + + +t + + + +discard_token + + + +q + + + += + + + +type_argument + + + +, + + + +, + + + +identifier + + + +_ + + + +"Three" + + + +tuple_element + + + +literal + + + +_ + + + +statement + + + +invocation_expression + + + +4 + + + +local_variable_type + + + +literal + + + +) + + + +discard_token + + + +_ + + + +identifier + + + +, + + + +; + + + +declaration_deconstructor + + + +literal + + + +declaration_deconstructor_element + + + +q + + + +class_body + + + +relational_expression + + + +declaration_deconstructor_element + + + +return_type + + + +declaration_expression + + + +relational_expression + + + +) + + + +B + + + +argument_list + + + +> + + + +class_member_declaration + + + +declaration_statement + + + +) + + + +declaration_expression + + + +tuple_element + + + +declaration_deconstructor + + + +identifier + + + +discard_token + + + +, + + + +declaration_deconstructor_element + + + +p + + + +identifier + + + +ref + + + +identifier + + + +_ + + + +discard_token + + + +identifier + + + +identifier + + + +identifier + + + +simple_assignment + + + +F + + + +statement_expression + + + +identifier + + + +expression + + + +< + + + +> + + + +argument_value + + + +simple_assignment + + + +_ + + + +; + + + +identifier + + + +identifier + + + +) + + + +ref + + + +DeclarationExpressions_2 + + + +discard_token + + + +, + + + += + + + +statement + + + +identifier + + + +local_variable_type + + + +tuple_literal + + + +declaration_statement + + + +declaration_deconstructor_element + + + +expression + + + +; + + + +expression_statement + + + +declaration_deconstructor_element + + + +_ + + + +literal + + + +, + + + +; + + + +p + + + +argument + + + +identifier + + + +local_variable_type + + + +a + + + +) + + + += + + + +C + + + +y + + + +discard_token + + + +deconstructor_element + + + +type_argument + + + +_ + + + +declaration_deconstructor_element + + + +_ + + + +identifier + + + +block + + + +identifier + + + +identifier + + + +declaration_deconstructor_element + + + +B + + + +deconstructor + + + +C + + + +identifier + + + +, + + + +R + + + +_ + + + +, + + + +b + + + +discard_token + + + +2 + + + +, + + + +local_deconstructing_declaration + + + +tuple_element + + + +deconstructor_element + + + +local_deconstructing_declaration + + + +prog + + + +declaration_expression + + + +discard_token + + + +< + + + +identifier + + + +discard_token + + + +> + + + +) + + + +literal + + + +_ + + + +> + + + +contextual_keyword + + + +deconstructing_assignment + + + +declaration_deconstructor_element + + + +, + + + +, + + + +local_variable_type + + + +declaration_deconstructor_element + + + +C + + + +declaration_deconstructor_element + + + +statement + + + +5 + + + +z + + + +1 + + + +) + + + +identifier + + + +shift_expression + + + +argument + + + +declaration_deconstructor_element + + + +expression + + + +( + + + +primary_expression + + + +identifier + + + +C + + + +deconstructor_element + + + +discard_token + + + +deconstructor_element + + + +method_body + + + +relational_expression + + + +identifier + + + +type_argument + + + +_ + + + +local_variable_type + + + += + + + +declaration_deconstructor_element + + + +declaration_deconstructor + + + +type_argument + + + +declaration_deconstructor_element + + + +local_variable_type + + + +local_deconstructing_declaration + + + +relational_expression + + + +declaration_deconstructor_element + + + +literal + + + +) + + + +( + + + +discard_token + + + +declaration_statement + + + +statement_list + + + +, + + + +null_coalescing_expression + + + +) + + + +out + + + +B + + + +, + + + +namespace_or_type_name + + + +1 + + + +identifier + + + +_ + + + +42 + + + +) + + + +expression + + + +expression_statement + + + +variable_reference + + + += + + + +deconstructor_element + + + += + + + +_ + + + +deconstructor_element + + + +discard_token + + + +identifier + + + +identifier + + + +declaration_expression + + + +( + + + +namespace_or_type_name + + + +var + + + +declaration_deconstructor_element + + + +deconstructor_element + + + +argument + + + +type_argument_list + + + +< + + + +H + + + +var + + + +expression + + + +, + + + +, + + + +; + + + +method_modifiers + + + +declaration_deconstructor_element + + + +, + + + +( + + + +identifier + + + +, + + + +declaration_deconstructor + + + +deconstructor_element + + + +statement_expression + + + += + + + +, + + + +) + + + +out + + + +implicitly_typed_local_variable_declaration + + + +statement_expression + + + +declaration_deconstructor_element + + + +unary_expression + + + +{ + + + +identifier + + + +identifier + + + +P \ No newline at end of file diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/sample.cs b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/sample.cs index bd942c96e..28dc72a17 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/sample.cs +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Declaration expressions/sample.cs @@ -14,9 +14,25 @@ void DeclarationExpressions_1() void DeclarationExpressions_2() { R(A < B, C > D, E) = x; // method call, 3 arguments - var y = (A < B, C > D, E); // 3-tuple – no decl expr allowed on RHS - (A < B, C > D, E) = y; // similar tuple is 2-tuple on LHS – declaration expression & E (C#10) + (A < B, C > D, _) = y; // similar tuple is 2-tuple on LHS – declaration expression & _ + + (A < B, C > D, _, F < G, H > I) = y; // 3-tuple – decl expr, _, decl expr + + t = (1, 2, (3, 4)); + (p, _, (_, q)) = t; // deconstructing assignment + (var p, _, (_, var q)) = t; // deconstructing declaration + (var p, _, _) = (_, _, (_, q)) = t; // both + + (A < B, C > p, _, (_, A < B, C > q)) = t; // deconstructing declaration w/TAL + (A < B, C > p, _, _) = (_, _, (_, q)) = t; // valid + + (A < B, C > p, _, _) = (_, _, (_, A < B, C > q)) = t; // syntax valid, semantically invalid: + // A < B & C > q are not a variable references + + (var p, _, _) = (_, A < B, C > q) = x; // syntax valid, semantically invalid: + // A < B & C > q are not variable references + + (var p, _, _) = (_, a < b ? ref q : ref r, _) = x; // valid, `a < b ? ref q : ref r` is ref-valued - (A < B, C > D, E, F < G, H > I) = y; // 3-tuple – decl expr, E, decl expr (C#10) } -} \ No newline at end of file +} diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Expanded Interfaces/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Expanded Interfaces/Reference/sample.gruntree.red.txt index afaa700c1..3f2b7ac77 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Expanded Interfaces/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Expanded Interfaces/Reference/sample.gruntree.red.txt @@ -601,7 +601,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -609,10 +609,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ field ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Expanded Interfaces/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Expanded Interfaces/Reference/sample.tree.red.txt index bd92d82f3..cddbf2a6b 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Expanded Interfaces/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Expanded Interfaces/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (interface_declaration interface (identifier KAI) (interface_body { (interface_member_declaration (constant_declaration (constant_modifier public) const (type (integral_type int)) (constant_declarators (constant_declarator (identifier Constant) = (constant_expression (literal 100)))) ;)) (interface_member_declaration (field_declaration (field_modifier private) (field_modifier static) (type (integral_type int)) (variable_declarators (identifier field)) ;)) (interface_member_declaration (method_declaration method_modifiers (return_type (integral_type int)) (method_header (member_name (identifier M1)) ( )) (method_body ;))) (interface_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier protected)) (method_modifier (ref_method_modifier new))) (return_type (integral_type int)) (method_header (member_name (identifier M2)) ( )) (method_body (block { (statement_list (return_statement return (expression (literal 42)) ;)) })))) (interface_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier protected)) (method_modifier (ref_method_modifier new))) (return_type (integral_type int)) (method_header (member_name (identifier M3)) ( )) (method_body => (expression (literal 24)) ;))) (interface_member_declaration (property_declaration (type (integral_type int)) (member_name (identifier P1)) (property_body { (accessor_declarations (get_accessor_declaration get (accessor_body ;))) }))) (interface_member_declaration (property_declaration (property_modifier public) (property_modifier new) (type (integral_type int)) (member_name (identifier P2)) (property_body { (accessor_declarations (get_accessor_declaration get (accessor_body (block { (statement_list (return_statement return (expression (literal 10)) ;)) })))) }))) (interface_member_declaration (event_declaration event (type (identifier EventHandler)) (variable_declarators (identifier E1)) ;)) (interface_member_declaration (event_declaration (event_modifier sealed) event (type (identifier EventHandler)) (member_name (identifier E2)) { (event_accessor_declarations (add_accessor_declaration add (block { })) (remove_accessor_declaration remove (block { }))) })) (interface_member_declaration (indexer_declaration (indexer_declarator (type (simple_type bool)) this [ (parameter_list (fixed_parameter (type (integral_type int)) (identifier ix1))) ]) (indexer_body { (accessor_declarations (set_accessor_declaration set (accessor_body ;))) }))) (interface_member_declaration (indexer_declaration (indexer_modifier internal) (indexer_declarator (type (simple_type bool)) this [ (parameter_list (fixed_parameter (type (integral_type int)) (identifier ix2))) ]) (indexer_body { (accessor_declarations (get_accessor_declaration get (accessor_body (block { (statement_list (return_statement return (expression (boolean_literal true)) ;)) })))) }))) (interface_member_declaration (indexer_declaration (indexer_modifier internal) (indexer_declarator (type (simple_type bool)) this [ (parameter_list (fixed_parameter (type (integral_type int)) (identifier ix3))) ]) (indexer_body => (expression (boolean_literal false)) ;))) (interface_member_declaration (static_constructor_declaration (static_constructor_modifiers static) (identifier KAI) ( ) (static_constructor_body (block { (statement_list (expression_statement (statement_expression (assignment (unary_expression (identifier field)) (assignment_operator =) (expression (literal 50)))) ;)) })))) (interface_member_declaration (operator_declaration (operator_modifier static) (operator_declarator (unary_operator_declarator (type (identifier KAI)) operator (overloadable_unary_operator ++) ( (fixed_parameter (type (identifier KAI)) (identifier arg1)) ))) (operator_body ;))) (interface_member_declaration (operator_declaration (operator_modifier public) (operator_modifier static) (operator_declarator (unary_operator_declarator (type (identifier KAI)) operator (overloadable_unary_operator --) ( (fixed_parameter (type (identifier KAI)) (identifier arg1)) ))) (operator_body (block { (statement_list (return_statement return (expression (identifier arg1)) ;)) })))) (interface_member_declaration (operator_declaration (operator_modifier public) (operator_modifier static) (operator_declarator (unary_operator_declarator (type (identifier KAI)) operator (overloadable_unary_operator --) ( (fixed_parameter (type (identifier KAI)) (identifier arg1)) ))) (operator_body => (expression (identifier arg1)) ;))) (interface_member_declaration (interface_declaration interface (identifier Nested) (interface_body { (interface_member_declaration (constant_declaration (constant_modifier public) const (type (integral_type int)) (constant_declarators (constant_declarator (identifier FortyTwo) = (constant_expression (literal 42)))) ;)) }))) })))) +(prog (compilation_unit (interface_declaration interface (identifier KAI) (interface_body { (interface_member_declaration (constant_declaration (constant_modifier public) const (type (integral_type int)) (constant_declarators (constant_declarator (identifier Constant) = (constant_expression (literal 100)))) ;)) (interface_member_declaration (field_declaration (field_modifier private) (field_modifier static) (type (integral_type int)) (variable_declarators (identifier field)) ;)) (interface_member_declaration (method_declaration method_modifiers (return_type (integral_type int)) (method_header (member_name (identifier M1)) ( )) (method_body ;))) (interface_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier protected)) (method_modifier (ref_method_modifier new))) (return_type (integral_type int)) (method_header (member_name (identifier M2)) ( )) (method_body (block { (statement_list (return_statement return (expression (literal 42)) ;)) })))) (interface_member_declaration (method_declaration (method_modifiers (method_modifier (ref_method_modifier protected)) (method_modifier (ref_method_modifier new))) (return_type (integral_type int)) (method_header (member_name (identifier M3)) ( )) (method_body => (expression (literal 24)) ;))) (interface_member_declaration (property_declaration (type (integral_type int)) (member_name (identifier P1)) (property_body { (accessor_declarations (get_accessor_declaration get (accessor_body ;))) }))) (interface_member_declaration (property_declaration (property_modifier public) (property_modifier new) (type (integral_type int)) (member_name (identifier P2)) (property_body { (accessor_declarations (get_accessor_declaration get (accessor_body (block { (statement_list (return_statement return (expression (literal 10)) ;)) })))) }))) (interface_member_declaration (event_declaration event (type (identifier EventHandler)) (variable_declarators (identifier E1)) ;)) (interface_member_declaration (event_declaration (event_modifier sealed) event (type (identifier EventHandler)) (member_name (identifier E2)) { (event_accessor_declarations (add_accessor_declaration add (block { })) (remove_accessor_declaration remove (block { }))) })) (interface_member_declaration (indexer_declaration (indexer_declarator (type (simple_type bool)) this [ (parameter_list (fixed_parameter (type (integral_type int)) (identifier ix1))) ]) (indexer_body { (accessor_declarations (set_accessor_declaration set (accessor_body ;))) }))) (interface_member_declaration (indexer_declaration (indexer_modifier internal) (indexer_declarator (type (simple_type bool)) this [ (parameter_list (fixed_parameter (type (integral_type int)) (identifier ix2))) ]) (indexer_body { (accessor_declarations (get_accessor_declaration get (accessor_body (block { (statement_list (return_statement return (expression (boolean_literal true)) ;)) })))) }))) (interface_member_declaration (indexer_declaration (indexer_modifier internal) (indexer_declarator (type (simple_type bool)) this [ (parameter_list (fixed_parameter (type (integral_type int)) (identifier ix3))) ]) (indexer_body => (expression (boolean_literal false)) ;))) (interface_member_declaration (static_constructor_declaration (static_constructor_modifiers static) (identifier KAI) ( ) (static_constructor_body (block { (statement_list (expression_statement (statement_expression (simple_assignment (unary_expression (identifier field)) = (expression (literal 50)))) ;)) })))) (interface_member_declaration (operator_declaration (operator_modifier static) (operator_declarator (unary_operator_declarator (type (identifier KAI)) operator (overloadable_unary_operator ++) ( (fixed_parameter (type (identifier KAI)) (identifier arg1)) ))) (operator_body ;))) (interface_member_declaration (operator_declaration (operator_modifier public) (operator_modifier static) (operator_declarator (unary_operator_declarator (type (identifier KAI)) operator (overloadable_unary_operator --) ( (fixed_parameter (type (identifier KAI)) (identifier arg1)) ))) (operator_body (block { (statement_list (return_statement return (expression (identifier arg1)) ;)) })))) (interface_member_declaration (operator_declaration (operator_modifier public) (operator_modifier static) (operator_declarator (unary_operator_declarator (type (identifier KAI)) operator (overloadable_unary_operator --) ( (fixed_parameter (type (identifier KAI)) (identifier arg1)) ))) (operator_body => (expression (identifier arg1)) ;))) (interface_member_declaration (interface_declaration interface (identifier Nested) (interface_body { (interface_member_declaration (constant_declaration (constant_modifier public) const (type (integral_type int)) (constant_declarators (constant_declarator (identifier FortyTwo) = (constant_expression (literal 42)))) ;)) }))) })))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Expanded Interfaces/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Expanded Interfaces/Reference/sample.tree.svg index 9e6f787db..9d58f4e01 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Expanded Interfaces/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Expanded Interfaces/Reference/sample.tree.svg @@ -1,4 +1,4 @@ - + @@ -279,14 +279,13 @@ - - - + + + - - - - + + + @@ -398,1608 +397,1604 @@ - - -[ + + +integral_type - - -operator_declarator + + +type - - -interface_member_declaration + + +return - - -type + + +} - - -type + + +fixed_parameter - - -] + + +method_header - - -identifier + + +KAI - - -expression + + +method_modifiers - - -bool + + +member_name - - -identifier + + +static - - -type + + +( - - -=> + + +block - - -identifier + + +KAI - - + + identifier - - -operator_declaration + + +type - - -int + + +event - - -} + + +unary_operator_declarator - - -operator + + +arg1 - - -static_constructor_body + + +operator_modifier - - -event_declaration + + +} - - -type + + +indexer_modifier - - -literal + + +integral_type - - -static + + +accessor_declarations - - -boolean_literal + + +expression - - -} + + +indexer_declarator - - -{ + + +return_type - - -; + + +[ - - -static_constructor_declaration + + +return_type - - -expression_statement + + +property_modifier - - -variable_declarators + + +accessor_declarations - - -arg1 + + +EventHandler - - -] + + +method_header - - + + type - - -constant_declaration + + +method_header - - -prog + + +EventHandler - - -get_accessor_declaration + + +ref_method_modifier - - -) + + +] - - -} + + +fixed_parameter - - -indexer_body + + +unary_operator_declarator - - -; + + +interface_member_declaration - - -ix2 + + +ref_method_modifier - - -method_declaration + + +simple_type - - -identifier + + +} - - -get + + +} - - -method_body + + +int - - -M2 + + +) - - -interface_member_declaration + + +42 - - -= + + +interface_member_declaration - - -parameter_list + + +interface_declaration - - -operator_body + + +identifier - - -{ + + +literal - - -accessor_declarations + + +=> - - -method_modifier + + +statement_list - - -50 + + +Constant - - -member_name + + +add_accessor_declaration - - -public + + +operator_modifier - - -constant_declarator + + +KAI - - -method_body + + +block - - -new + + +overloadable_unary_operator - - -identifier + + +} - - + + type - - -method_modifier - - - -add_accessor_declaration - - - + + identifier - - + + { - - -) - - - -integral_type - - - -; + + +indexer_declaration - - -event_accessor_declarations + + +field_declaration - - -property_declaration + + +indexer_body - - -statement_expression + + +property_body - - -} + + +identifier fixed_parameter - - -24 - - - -integral_type - - - -protected - - - -identifier - - - -; - - - --- - - - -KAI - - - -remove - - - -constant_declarators + + +static - - -E1 + + +method_modifier - - -indexer_declarator + + +accessor_body - - -overloadable_unary_operator + + +type - - -} + + +interface_body - - -member_name + + +get - - -KAI + + +identifier - - + + type - - -identifier - - - -accessor_declarations + + +; - - -literal + + +] - - -expression + + +static_constructor_body - - + + interface_member_declaration - - -int - - - -( + + +variable_declarators - - -42 + + +identifier - - -} + + +integral_type - - -property_modifier + + +operator - - -; + + +( - - -compilation_unit + + +identifier - - -type + + +overloadable_unary_operator - - -get + + +int - - -assignment_operator + + +literal - - -integral_type + + +constant_declarators - - -type + + +block sealed - - -; - - - -{ + + +simple_type - - -ref_method_modifier + + +; - - -get_accessor_declaration + + +block - - -property_declaration + + +=> - - -expression + + +{ method_declaration - - -10 - - - + + operator_modifier - - -return + + +operator_declarator - - -protected + + +indexer_declarator - - -} + + +arg1 - - -indexer_body + + +accessor_body - - -interface_member_declaration + + +; - - -interface + + +int - - -return + + +Nested - - -type + + +accessor_declarations - - -return_type + + +simple_assignment - - -[ + + +new - - -ix3 + + +int - - -literal + + +} - - -literal + + +identifier - - + + +const + + + +identifier + + + +KAI + + + +interface_body + + + interface_member_declaration - - -{ + + +protected - - -identifier + + +property_declaration - - -event_modifier + + +; - - -( + + +operator_body - - -expression + + +integral_type - - -simple_type + + +{ - - -get_accessor_declaration + + +indexer_declarator - - -; + + +KAI - - -( + + +E1 - - -operator_declarator + + +boolean_literal - - -M3 + + +identifier - - + + identifier - - -indexer_modifier + + +fixed_parameter - - -} + + +static_constructor_declaration - - -[ + + +static - - -interface + + +indexer_declaration + + + +method_modifier + + + +static_constructor_modifiers integral_type - - -method_header - - - -member_name + + +overloadable_unary_operator - - -method_declaration + + +] - - -identifier + + +event_modifier - - -get + + +=> - - -method_body + + +indexer_body - - -{ + + +KAI - - -] + + +operator_declaration - - -type + + +operator_declarator - - -identifier + + +( - - -M1 + + +M2 - - -KAI + + +) - - -return_statement + + +operator_body - - -type + + +member_name - - -private + + +) - - -this + + +field_modifier - - -add + + +; - - -integral_type + + +remove - - -constant_declarator + + +} arg1 - - -field + + +constant_modifier - - -accessor_declarations + + +++ - - -int + + +; - - + + +internal + + + +interface_member_declaration + + + +constant_declarators + + + identifier - - -field + + +new - - -; + + +unary_operator_declarator - - -method_modifiers + + +arg1 - - + + +type + + + +type + + + +} + + + +} + + + integral_type - - + + +ix1 + + + +protected + + + type - - -operator_body + + +identifier - - -FortyTwo + + +int - - -operator_modifier + + +parameter_list - - -arg1 + + +{ - - -integral_type + + +{ - - -type + + +; + + + +public ; - - -expression + + +block - - -literal + + +method_declaration + + + +compilation_unit + + + +; this - - -identifier + + +type - - -= + + +get_accessor_declaration - - -; + + +KAI - - -; + + +expression - - -block + + +interface - - -{ + + +constant_declaration - - -operator_declarator + + +statement_list - - -static + + +true - - -static + + +add - - -operator_modifier + + +method_declaration - - -unary_operator_declarator + + +method_body - - -static + + +} - - -return_type + + +this - - -( + + +interface_member_declaration - - -remove_accessor_declaration + + +block - - + + +member_name + + + +static + + + +( + + + { + + +accessor_declarations + identifier - - -( + + +method_body - - -integral_type + + +return - - + + +{ + + + +type + + + +-- + + + +identifier + + + +event_declaration + + + ; - - -overloadable_unary_operator + + +property_modifier - - -fixed_parameter + + +property_body - - -return + + +interface_member_declaration - - -indexer_modifier + + +member_name - - -integral_type + + +bool - - -assignment + + +ref_method_modifier - - -fixed_parameter + + +simple_type - - -public + + +; - - -block + + +statement_list - - -member_name + + +operator_modifier - - + + ref_method_modifier - - -interface_declaration + + +remove_accessor_declaration - - -= + + +type - - -static + + +accessor_body + + + +[ interface_member_declaration - - -property_body - - - -EventHandler - - - -interface_member_declaration - - - -field_modifier + + +return_statement - - -indexer_declaration + + +bool - - -method_modifier + + +-- - - -int + + +( - - -interface_member_declaration + + +expression - - -E2 + + +identifier - - -int + + +; - - -interface_member_declaration + + +M3 - - -constant_declarators + + +fixed_parameter - - -Constant + + +expression - - -type + + +expression - - -ref_method_modifier + + +bool - - -block + + +int - - -expression + + +prog - - -arg1 + + +identifier - - -) + + +100 constant_expression - - -identifier - - - -operator_modifier - - - -public + + +expression_statement - - -event + + +return_statement - - -KAI + + +identifier - - -; + + +static - - -member_name + + +constant_expression - - -int + + +property_declaration - - -42 + + +) - - + + interface_member_declaration - - -arg1 + + +( - - -; + + +variable_declarators - - -accessor_body + + +field_modifier - - -identifier + + +member_name - - -property_modifier + + +integral_type - - -bool + + +integral_type - - -identifier + + +get_accessor_declaration - - -=> + + +new - - -} + + +; - - -operator + + +identifier + + + +interface_member_declaration - - -event + + +get_accessor_declaration - - -method_header + + +accessor_body - - -member_name + + +interface_member_declaration - - -variable_declarators + + +method_body - - -{ + + +arg1 - - -simple_type + + +} int - - -{ - - - + + identifier - - -block - - - --- + + +constant_modifier - - -overloadable_unary_operator + + +const - - -property_body + + +literal - - -indexer_declarator + + +operator_modifier - - -expression + + +P2 - - -public + + +parameter_list - - -=> + + +false - - -block + + +return_statement - - -{ + + +internal - - -method_header + + +type - - -; + + +set_accessor_declaration - - -integral_type + + +interface - - -type + + +{ - - -100 + + +{ - - -event_declaration + + +interface_declaration - - -constant_declaration + + +indexer_declaration - - -return + + +expression - - -method_modifier + + +block - - -method_modifiers + + +ix3 - - -interface_body + + +M1 - - -{ + + +int - - + + identifier - - -interface_member_declaration + + +literal - - -new + + +type - - -accessor_body + + +interface_member_declaration - - -operator_declaration + + +) - - -field_declaration + + +; - - -int + + +indexer_body - - -) + + +return - - -simple_type + + +expression - - -statement_list + + +return - - -identifier + + +constant_declarator - - -} + + +KAI - - -indexer_declaration + + +operator_declaration + + + +method_modifier - - -int + + +operator - - -ix1 + + +statement_expression - - -operator_modifier + + +type - - -constant_modifier + + +member_name - - -method_modifiers + + +identifier set - - -return_statement - - - -constant_expression + + +integral_type - - -static_constructor_modifiers + + +50 - - -return_statement + + +42 - - + + { - - + + +expression + + + +identifier + + + +statement_list + + + type - - -indexer_declaration + + +int - - + + identifier - - -interface_body + + +} - - -identifier + + +event_declaration - - -expression + + +E2 - - -interface_declaration + + +} - - -identifier + + +get - - -KAI + + +interface_member_declaration - - -P1 + + +return_type - - + + +; + + + +[ + + + +public + + + +; + + + } + + +method_modifiers + interface_member_declaration - - -accessor_body - - - -interface_member_declaration + + +literal - - -int + + +identifier - - -const + + +FortyTwo - - -) + + += - - -statement_list + + +fixed_parameter - - -operator_declaration + + +{ - - -const + + +public - - -true + + +identifier - - -false + + +24 - - -new + + +boolean_literal - - -field_modifier + + +operator_declarator - - -type + + +int - - -Nested + + +identifier - - -accessor_declarations + + +interface_member_declaration - - -{ + + +interface_member_declaration - - -; + + +10 - - -unary_expression + + +event - - -literal + + +integral_type - - -KAI + + +method_modifiers - - -++ + + +operator_body - - -KAI + + +operator_declaration - - -( + + +interface_member_declaration - - + + +return_statement + + + interface_member_declaration - - -parameter_list + + +type - - -fixed_parameter + + +type - - -) + + +field - - -KAI + + +indexer_modifier - - -block + + +int - - -statement_list + + +ix2 - - -block + + +{ - - -EventHandler + + +{ - - -P2 + + +unary_expression - - -statement_list + + +{ - - -boolean_literal + + +P1 - - -return_statement + + +constant_declarator - - -fixed_parameter + + +constant_declaration - - -fixed_parameter + + +( type - - -interface_member_declaration + + +field - - -} + + +literal - - -operator_body + + += - - + + ) - - -set_accessor_declaration + + +integral_type - - -} + + +parameter_list this - - -( + + +method_modifier - - -bool + + +public - - -unary_operator_declarator + + +) identifier - - -indexer_body - - - -ref_method_modifier - - - -identifier + + +private - - -identifier + + += - - -return_type + + +statement_list public - - -parameter_list - - - -accessor_body - - - -interface_member_declaration - - - -integral_type - - - -internal - - - -internal - - - -indexer_declarator - - - -} - - - -interface_member_declaration - - - -int + + +get - - -statement_list + + +event_accessor_declarations - - + + identifier - - -constant_modifier - - - -interface_member_declaration - - - -unary_operator_declarator - - - + + identifier - - + + operator \ No newline at end of file diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Type argument list/Reference/sample.gruntree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Type argument list/Reference/sample.gruntree.red.txt index 14361fb00..b0f97e8bc 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Type argument list/Reference/sample.gruntree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Type argument list/Reference/sample.gruntree.red.txt @@ -396,7 +396,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -404,10 +404,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ x ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -459,7 +456,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ statement_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ simple_assignment ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ unary_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -467,10 +464,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ x ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ assignment_operator -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ = ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ @@ -545,7 +539,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_literal ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element @@ -604,7 +598,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_literal ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element @@ -677,7 +671,7 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_literal ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ( ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ tuple_element @@ -866,43 +860,40 @@ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ argument_value ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ out ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ variable_reference +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ declaration_expression +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ local_variable_type +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ namespace_or_type_name ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ namespace_or_type_name -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ A -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ A +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument_list +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument_list -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ < +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ B -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ B ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ , +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ type_argument -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ C -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ C ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ > ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ D -⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ identifier +⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ D ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Type argument list/Reference/sample.tree.red.txt b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Type argument list/Reference/sample.tree.red.txt index 76e04cd09..d86cb4033 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Type argument list/Reference/sample.tree.red.txt +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Type argument list/Reference/sample.tree.red.txt @@ -1 +1 @@ -(prog (compilation_unit (class_declaration class (identifier TypeArgumentListChecks) (class_body { (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier TypeArgumentListChecks)) ( )) (method_body (block { (statement_list (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier F)) ( (argument_list (invocation_expression (primary_expression (simple_name (identifier G) (type_argument_list < (type_argument (identifier A)) , (type_argument (identifier B)) >))) ( (argument_list (literal 7)) ))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier F)) ( (argument_list (invocation_expression (primary_expression (base_access base . (identifier G) (type_argument_list < (type_argument (identifier A)) , (type_argument (identifier B)) >))) ( (argument_list (literal 7)) ))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier F)) ( (argument_list (argument (relational_expression (relational_expression (identifier G)) < (shift_expression (identifier A)))) , (argument (relational_expression (relational_expression (identifier B)) > (shift_expression (literal 7))))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier F)) ( (argument_list (argument (relational_expression (relational_expression (base_access base . (identifier G))) < (shift_expression (identifier A)))) , (argument (relational_expression (relational_expression (identifier B)) > (shift_expression (literal 7))))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier F)) ( (argument_list (argument (relational_expression (relational_expression (identifier G)) < (shift_expression (identifier A)))) , (argument (shift_expression (shift_expression (identifier B)) (right_shift > >) (additive_expression (literal 7))))) ))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier x)) (assignment_operator =) (expression (relational_expression (relational_expression (relational_expression (identifier F)) < (shift_expression (identifier A))) > (shift_expression (unary_expression + (unary_expression (identifier y)))))))) ;)) (statement (expression_statement (statement_expression (assignment (unary_expression (identifier x)) (assignment_operator =) (expression (conditional_and_expression (conditional_and_expression (relational_expression (relational_expression (identifier y)) is (type (namespace_or_type_name (identifier C) (type_argument_list < (type_argument (identifier T)) >))))) && (inclusive_or_expression (identifier z)))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier v) = (expression (tuple_expression ( (tuple_element (relational_expression (relational_expression (identifier A)) < (shift_expression (identifier B)))) , (tuple_element (identifier C)) )))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier v) = (expression (tuple_expression ( (tuple_element (relational_expression (relational_expression (identifier A)) < (shift_expression (identifier B)))) , (tuple_element (relational_expression (relational_expression (identifier C)) > (shift_expression (identifier D)))) )))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier v) = (expression (tuple_expression ( (tuple_element (relational_expression (relational_expression (identifier A)) < (shift_expression (identifier B)))) , (tuple_element (relational_expression (relational_expression (identifier C)) > (shift_expression (identifier D)))) , (tuple_element (identifier E)) )))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier v) = (expression (invocation_expression (primary_expression (identifier M)) ( (argument_list (argument (relational_expression (relational_expression (identifier A)) < (shift_expression (identifier B)))) , (argument (relational_expression (relational_expression (identifier C)) > (shift_expression (identifier D)))) , (argument (identifier E))) )))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier v) = (expression (invocation_expression (primary_expression (identifier M)) ( (argument_list (argument (argument_value out (variable_reference (declaration_expression (local_variable_type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) , (type_argument (identifier C)) >))) (identifier D))))) , (argument (identifier E))) )))))) ;)) (statement (if_statement if ( (boolean_expression (relational_expression (relational_expression (identifier e)) is (pattern (declaration_pattern (type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) >))) (simple_designation (identifier C)))))) ) (embedded_statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier W)) ( (argument_list (identifier C)) ))) ;)))) (statement (if_statement if ( (boolean_expression (relational_expression (relational_expression (identifier e)) is (type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) >))))) ) (embedded_statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier W)) ( (argument_list (identifier C)) ))) ;)))) (statement (switch_statement switch (selector_expression ( (expression (identifier x)) )) (switch_block { (switch_section (switch_label case (pattern (declaration_pattern (type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) >))) (simple_designation (identifier C)))) :) (statement_list (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier z) = (expression (identifier C))))) ;)) (statement (break_statement break ;)))) }))) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier p) = (expression (relational_expression (relational_expression (relational_expression (identifier x)) is (type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) >)))) > (shift_expression (identifier C))))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier q) = (expression (relational_expression (relational_expression (identifier A)) < (shift_expression (shift_expression (identifier B)) (right_shift > >) (additive_expression (identifier C)))))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier r) = (expression (relational_expression (relational_expression (parenthesized_expression ( (expression (relational_expression (relational_expression (identifier x)) is (type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) >))))) ))) > (shift_expression (identifier C))))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier s) = (expression (relational_expression (relational_expression (identifier x)) is (pattern (declaration_pattern (type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) >))) (simple_designation (contextual_keyword orderby))))))))) ;))) })))) })))) +(prog (compilation_unit (class_declaration class (identifier TypeArgumentListChecks) (class_body { (class_member_declaration (method_declaration method_modifiers (return_type void) (method_header (member_name (identifier TypeArgumentListChecks)) ( )) (method_body (block { (statement_list (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier F)) ( (argument_list (invocation_expression (primary_expression (simple_name (identifier G) (type_argument_list < (type_argument (identifier A)) , (type_argument (identifier B)) >))) ( (argument_list (literal 7)) ))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier F)) ( (argument_list (invocation_expression (primary_expression (base_access base . (identifier G) (type_argument_list < (type_argument (identifier A)) , (type_argument (identifier B)) >))) ( (argument_list (literal 7)) ))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier F)) ( (argument_list (argument (relational_expression (relational_expression (identifier G)) < (shift_expression (identifier A)))) , (argument (relational_expression (relational_expression (identifier B)) > (shift_expression (literal 7))))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier F)) ( (argument_list (argument (relational_expression (relational_expression (base_access base . (identifier G))) < (shift_expression (identifier A)))) , (argument (relational_expression (relational_expression (identifier B)) > (shift_expression (literal 7))))) ))) ;)) (statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier F)) ( (argument_list (argument (relational_expression (relational_expression (identifier G)) < (shift_expression (identifier A)))) , (argument (shift_expression (shift_expression (identifier B)) (right_shift > >) (additive_expression (literal 7))))) ))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier x)) = (expression (relational_expression (relational_expression (relational_expression (identifier F)) < (shift_expression (identifier A))) > (shift_expression (unary_expression + (unary_expression (identifier y)))))))) ;)) (statement (expression_statement (statement_expression (simple_assignment (unary_expression (identifier x)) = (expression (conditional_and_expression (conditional_and_expression (relational_expression (relational_expression (identifier y)) is (type (namespace_or_type_name (identifier C) (type_argument_list < (type_argument (identifier T)) >))))) && (inclusive_or_expression (identifier z)))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier v) = (expression (tuple_literal ( (tuple_element (relational_expression (relational_expression (identifier A)) < (shift_expression (identifier B)))) , (tuple_element (identifier C)) )))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier v) = (expression (tuple_literal ( (tuple_element (relational_expression (relational_expression (identifier A)) < (shift_expression (identifier B)))) , (tuple_element (relational_expression (relational_expression (identifier C)) > (shift_expression (identifier D)))) )))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier v) = (expression (tuple_literal ( (tuple_element (relational_expression (relational_expression (identifier A)) < (shift_expression (identifier B)))) , (tuple_element (relational_expression (relational_expression (identifier C)) > (shift_expression (identifier D)))) , (tuple_element (identifier E)) )))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier v) = (expression (invocation_expression (primary_expression (identifier M)) ( (argument_list (argument (relational_expression (relational_expression (identifier A)) < (shift_expression (identifier B)))) , (argument (relational_expression (relational_expression (identifier C)) > (shift_expression (identifier D)))) , (argument (identifier E))) )))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier v) = (expression (invocation_expression (primary_expression (identifier M)) ( (argument_list (argument (argument_value out (declaration_expression (local_variable_type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) , (type_argument (identifier C)) >))) (identifier D)))) , (argument (identifier E))) )))))) ;)) (statement (if_statement if ( (boolean_expression (relational_expression (relational_expression (identifier e)) is (pattern (declaration_pattern (type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) >))) (simple_designation (identifier C)))))) ) (embedded_statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier W)) ( (argument_list (identifier C)) ))) ;)))) (statement (if_statement if ( (boolean_expression (relational_expression (relational_expression (identifier e)) is (type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) >))))) ) (embedded_statement (expression_statement (statement_expression (invocation_expression (primary_expression (identifier W)) ( (argument_list (identifier C)) ))) ;)))) (statement (switch_statement switch (selector_expression ( (expression (identifier x)) )) (switch_block { (switch_section (switch_label case (pattern (declaration_pattern (type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) >))) (simple_designation (identifier C)))) :) (statement_list (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier z) = (expression (identifier C))))) ;)) (statement (break_statement break ;)))) }))) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier p) = (expression (relational_expression (relational_expression (relational_expression (identifier x)) is (type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) >)))) > (shift_expression (identifier C))))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier q) = (expression (relational_expression (relational_expression (identifier A)) < (shift_expression (shift_expression (identifier B)) (right_shift > >) (additive_expression (identifier C)))))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier r) = (expression (relational_expression (relational_expression (parenthesized_expression ( (expression (relational_expression (relational_expression (identifier x)) is (type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) >))))) ))) > (shift_expression (identifier C))))))) ;)) (statement (declaration_statement (local_variable_declaration (implicitly_typed_local_variable_declaration var (implicitly_typed_local_variable_declarator (identifier s) = (expression (relational_expression (relational_expression (identifier x)) is (pattern (declaration_pattern (type (namespace_or_type_name (identifier A) (type_argument_list < (type_argument (identifier B)) >))) (simple_designation (contextual_keyword orderby))))))))) ;))) })))) })))) diff --git a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Type argument list/Reference/sample.tree.svg b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Type argument list/Reference/sample.tree.svg index 03738ac5b..9f7ff11f3 100644 --- a/tools/GrammarTesting/Tests/Parsing/Samples/v8/Type argument list/Reference/sample.tree.svg +++ b/tools/GrammarTesting/Tests/Parsing/Samples/v8/Type argument list/Reference/sample.tree.svg @@ -1,26 +1,26 @@ - - - - - - - - - - - + + + + + + + + + + + - + - - - - - + + + + + @@ -51,7 +51,7 @@ - + @@ -84,7 +84,7 @@ - + @@ -114,7 +114,7 @@ - + @@ -147,7 +147,7 @@ - + @@ -179,16 +179,15 @@ - - - - - - - - - - + + + + + + + + + @@ -205,17 +204,16 @@ - - - - - - - - - - - + + + + + + + + + + @@ -237,8 +235,8 @@ - - + + @@ -265,7 +263,7 @@ - + @@ -298,7 +296,7 @@ - + @@ -335,7 +333,7 @@ - + @@ -376,2975 +374,2962 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +relational_expression - - -unary_expression + + +E - - -; + + +> - - -) + + +expression - - -switch_statement + + +relational_expression - - -type_argument_list + + +shift_expression - - -> + + +simple_designation - - -; + + +} - - -= + + +implicitly_typed_local_variable_declarator - - -identifier + + +implicitly_typed_local_variable_declarator + + + +implicitly_typed_local_variable_declaration - - + + C - - -type_argument + + +right_shift - - -base_access + + +D - - -argument + + +identifier - - -tuple_element + + +identifier - - + + +statement_list + + + +y + + + +x + + + relational_expression - - -argument_list + + +shift_expression - - + + +is + + + identifier - - -if + + +is - - -assignment + + +block - - + + +7 + + + +tuple_element + + + +; + + + +type_argument + + + +> + + + +unary_expression + + + +C + + + +identifier + + + +shift_expression + + + +C + + + +tuple_element + + + +argument_list + + + B - - -implicitly_typed_local_variable_declaration + + +F - - -declaration_statement + + +( - - -< + + +local_variable_declaration + + + +) - - + + +namespace_or_type_name + + + type_argument - - + + +identifier + + + +identifier + + + relational_expression - - + + primary_expression - - + + relational_expression - - -C + + +> - - -local_variable_declaration + + +( - - -tuple_element + + +simple_designation - - -; + + +relational_expression - - + + +return_type + + + expression_statement - - -statement + + +literal - - -, + + +identifier - - -primary_expression + + +identifier - - + + identifier - - -type_argument_list + + +D + + + +if + + + +statement + + + +declaration_statement - - + + > - - -G + + +expression - - + + +; + + + +type_argument + + + +z + + + +identifier + + + +statement_expression + + + +y + + + +switch + + + +shift_expression + + + +tuple_literal + + + +) + + + +var + + + +A + + + +expression + + + invocation_expression - - + + relational_expression - - -switch_label + + +unary_expression - - -var + + +type_argument_list - - -identifier + + +statement - - -> + + +x - - -local_variable_declaration + + +shift_expression - - -( + + +relational_expression - - + + identifier - - + + relational_expression - - -A + + += - - + + +conditional_and_expression + + + identifier - - -namespace_or_type_name + + +( - - -> + + +; - - -declaration_statement + + +> - - -implicitly_typed_local_variable_declaration + + +relational_expression - - -A + + +argument - - -base + + +relational_expression - - -identifier + + += - - -unary_expression + + +argument - - -B + + +relational_expression - - -C + + +primary_expression - - + + identifier - - -B - - - -statement + + +expression_statement - - -< + + +> - - -statement + + +; - - -identifier + + +shift_expression - - -tuple_expression + + +, - - -identifier + + +conditional_and_expression - - -argument_list + + +; - - -type + + +A - - -base_access + + +switch_label - - -break_statement + + +compilation_unit - - -identifier + + +implicitly_typed_local_variable_declaration - - -statement + + +v - - -declaration_pattern + + +< - - -) + + +> - - + + identifier - - -) + + +expression - - -, + + +< + + + +is + + + +identifier relational_expression - - -e - - - -{ - - - -statement_expression - - - -F - - - -relational_expression + + +E - - -= + + +< - - -> + + +primary_expression - - -assignment + + +, - - -switch_block + + +tuple_element - - -> + + +expression_statement - - -= + + +method_body expression - - -= + + +( - - -orderby + + +identifier - - -statement + + +right_shift - - -D + + +base_access - - + + identifier - - -identifier + + +) - - -implicitly_typed_local_variable_declaration + + +local_variable_declaration - - -argument_list + + +C - - -statement + + +C - - -A + + +statement_expression - - -declaration_statement + + +relational_expression - - + + implicitly_typed_local_variable_declaration - - -expression + + +F - - -> + + +identifier + + + +statement + + + +type_argument + + + +7 - - -relational_expression + + +( - - -pattern + + +, - - -contextual_keyword + + +shift_expression - - -implicitly_typed_local_variable_declarator + + +identifier - - -pattern + + +7 - - -) + + +B - - -argument + + +declaration_pattern ) - - -expression - - - -relational_expression - - - -< + + +B - - -argument_list + + +G - - -primary_expression + + +{ - - + + B - - -is + + +q - - -> + + +identifier - - -; + + +method_declaration - - -identifier + + +additive_expression + + + +) - - + + relational_expression + + +< + + + +tuple_element + + + +A + E - - -primary_expression - - - -> - - - -, + + +expression - - -; + + +C - - -; + + +primary_expression - - -identifier + + +( - - -statement + + +> - - -identifier + + +< - - + + , - - -p - - - -statement_expression - - - -class_declaration - - - + + identifier - - -A - - - -D + + +declaration_statement - - -identifier + + +implicitly_typed_local_variable_declaration - - -< + + +; - - -q + + +D - - -identifier + + +type_argument_list - - + + shift_expression - - -identifier + + +argument_list - - -< + + +unary_expression - - -identifier + + +relational_expression - - -type_argument_list + + +) - - -B + + +type - - -identifier + + +relational_expression - - -type_argument + + +B - - -identifier + + +( - - -M + + +namespace_or_type_name - - -< + + +shift_expression - - -identifier + + +) - - + + identifier - - -A - - - -C - - - -v - - - -> - - - + + identifier - - -shift_expression + + +: - - -G + + +implicitly_typed_local_variable_declarator - - -declaration_statement + + +type_argument - - -statement + + +namespace_or_type_name - - + + identifier - - -identifier + + +C - - -identifier + + +expression - - -identifier + + +expression_statement - - -> + + +) - - -invocation_expression + + +F - - -identifier + + +local_variable_declaration - - -method_declaration + + +B - - -relational_expression + + +( - - -local_variable_declaration + + +void - - + + shift_expression - - -expression + + +e - - -implicitly_typed_local_variable_declaration + + +type_argument + + + +7 - - + + var - - -implicitly_typed_local_variable_declarator + + +argument - - + + identifier - - -primary_expression - - - -} - - - + + identifier - - -statement + + +) - - -primary_expression + + +B - - -identifier + + +argument_list - - -class + + +type_argument_list - - + + +type + + + relational_expression - - -C + + +< - - + + identifier - - + + identifier - - -< - - - -statement - - - -e - - - -expression - - - -> - - - + + B - - -identifier - - - -parenthesized_expression - - - -x + + +A - - -C + + +declaration_statement - - -statement_list + + +implicitly_typed_local_variable_declarator - - + + } - - -type_argument_list - - - -( + + +literal - - -= + + +namespace_or_type_name - - -( + + +pattern - - -declaration_statement + + +identifier - - + + local_variable_declaration - - -simple_designation + + +var - - -primary_expression + + +declaration_expression - - -A + + +> - - -< + + +if_statement - - -relational_expression + + +class_member_declaration - - -statement_expression + + +statement - - -) + + += - - -x + + +expression - - -identifier + + +type_argument_list - - -B + + +is - - -statement + + +shift_expression - - -primary_expression + + +statement_list - - -implicitly_typed_local_variable_declaration + + +G - - -identifier + + +prog - - + + identifier - - -B - - - -statement_expression + + +A - - -shift_expression + + +) - - -statement + + +F - - + + type - - -namespace_or_type_name - - - -identifier + + +C - - -D + + +contextual_keyword - - -= + + +statement - - -relational_expression + + +B - - -relational_expression + + +identifier - - -implicitly_typed_local_variable_declarator + + +statement - - -relational_expression + + +( - - -invocation_expression + + +shift_expression - - -implicitly_typed_local_variable_declaration + + +identifier - - -relational_expression + + +identifier - - -expression + + +; - - -class_member_declaration + + +B - - + + x - - -A - - - -identifier + + +) - - -expression_statement + + +B - - -A + + +> - - -7 + + +relational_expression - - -( + + +class - - -> + + +A - - -) + + +W - - -F + + +identifier - - -F + + +member_name + + + +. - - + + identifier - - -argument_list + + +M - - -; + + +> - - -; + + +) - - -identifier + + +, - - -assignment_operator + + +declaration_statement - - -identifier + + +type_argument - - -> + + +identifier - - -var + + +, - - + + relational_expression - - + + relational_expression - - -var + + +identifier - - -compilation_unit + + +relational_expression - - + + implicitly_typed_local_variable_declarator - - -x - - - -expression_statement - - - -type - - - + + identifier - - -, + + +statement - - -additive_expression + + +shift_expression - - -T + + +statement - - -v + + +local_variable_declaration - - -identifier + + +relational_expression - - -statement_expression + + +identifier - - -( + + +identifier - - -C + + +argument_value - - -+ + + +simple_assignment - - + + identifier - - -argument_list - - - -unary_expression + + +out - - + + identifier - - -simple_designation + + +< - - -type_argument + + +tuple_literal - - -member_name + + +C - - -invocation_expression + + +C - - -identifier + + +> - - -namespace_or_type_name + + +, - - -relational_expression + + +type - - -shift_expression + + +identifier - - -method_modifiers + + +. - - -declaration_statement + + +expression_statement - - -< + + +expression - - -invocation_expression + + += - - -implicitly_typed_local_variable_declaration + + +primary_expression - - -is + + +break - - -shift_expression + + +var - - -if_statement + + +, - - + + identifier - - -expression + + +&& - - -( + + +statement_expression - - -7 + + +; - - -B + + +additive_expression shift_expression - - -y + + +identifier - - -implicitly_typed_local_variable_declarator + + +if_statement - - -( + + +type_argument - - -base + + +A - - -< + + +boolean_expression - - + + +D + + + var - - -switch + + +type_argument - - -invocation_expression + + +argument_list - - -pattern + + +expression - - -; + + +relational_expression - - -type + + +shift_expression - - -type_argument_list + + +class_declaration - - -argument + + +relational_expression - - + + +is + + + +> + + + +< + + + identifier - - -argument_list + + +v - - -< + + +identifier - - -; + + +implicitly_typed_local_variable_declarator - - -literal + + +identifier - - -x + + +type_argument - - + + > - - -if + + +selector_expression - - -identifier + + +{ - - -< + + +implicitly_typed_local_variable_declarator - - -identifier + + +, - - -= + + +invocation_expression - - -statement + + +expression - - -shift_expression + + +C - - -relational_expression + + +< - - + + +identifier + + + identifier statement - - -relational_expression + + +C + + + +< - - + + identifier - - -A + + +( - - -declaration_pattern + + +) - - + + statement - - -; - - - -primary_expression - - - -B - - - -identifier - - - + + identifier - - + + identifier - - -; - - - -relational_expression - - - -shift_expression + + +local_variable_declaration - - -, + + +declaration_statement - - -statement_list + + +s - - -) + + +< - - -local_variable_declaration + + +} - - + + relational_expression - - -) - - - -relational_expression + + +shift_expression - - -( + + +argument_list - - -expression + + +identifier - - -7 + + +F - - -statement_expression + + +identifier - - -implicitly_typed_local_variable_declaration + + +primary_expression - - -type_argument_list + + +( - - -tuple_element + + +primary_expression - - -; + + +( - - + + shift_expression - - -C - - - -v + + +invocation_expression - - -boolean_expression + + +var - - -TypeArgumentListChecks + + +; - - + + identifier - - + + = - - -implicitly_typed_local_variable_declarator - - - + + identifier - - -D + + +expression + + + +( + + + +type_argument - - + + relational_expression - - + + argument - - -statement - type_argument_list - - -( - - - -; - - - -statement - - - -statement - - - -C - - - -B + + +argument - - -identifier + + +< - - -F + + +) - - -identifier + + +if - - -( + + +invocation_expression - - -simple_designation + + +expression - - -additive_expression + + +< - - -> + + +shift_expression - - -( + + +identifier - - -argument + + +identifier - - -( + + +break_statement - - -F + + +is - - -) + + +A - - -right_shift + + +expression_statement - - -type_argument + + +statement_expression - - -, + + +local_variable_declaration - - -> + + +primary_expression - - + + identifier - - -( + + +relational_expression - - -shift_expression + + +, - - -out + + +parenthesized_expression - - + + < - - + + identifier - - -W + + +tuple_element - - -C + + +argument_list - - -B + + +declaration_pattern - - -s + + += - - -argument + + +; - - -identifier + + +< - - -type_argument + + +, - - -statement_expression + + +e - - -expression + + +identifier - - + + ; - - -{ - - - -identifier - - - -declaration_pattern + + +< - - + + relational_expression - - -B + + +A - - -type_argument_list + + +; - - -method_header + + +identifier - - -invocation_expression + + +x - - -relational_expression + + +switch_statement - - -relational_expression + + +namespace_or_type_name - - -relational_expression + + +B - - -r + + +case - - -. + + +local_variable_declaration - - -G + + +x - - -is + + +declaration_pattern - - -M + + +implicitly_typed_local_variable_declarator - - -expression + + +statement - - + + ( - - -; - - - -statement_expression - - - -relational_expression - - - + + identifier - - -declaration_statement - - - + + > - - -implicitly_typed_local_variable_declarator + + +A - - + + +< + + + identifier - - -) + + +statement_expression - - -argument + + +implicitly_typed_local_variable_declaration - - -identifier + + +namespace_or_type_name - - -C + + +expression_statement - - -is + + +argument_list - - -selector_expression + + +shift_expression - - -argument + + +statement_expression - - -identifier + + += - - -relational_expression + + +implicitly_typed_local_variable_declaration - - -) + + +; - - -, + + +declaration_statement - - + + +namespace_or_type_name + + + +statement_expression + + + ; - - -< + + +embedded_statement - - -literal + + +> - - -return_type + + +base_access - - -unary_expression + + +type_argument_list - - -var + + +{ - - -shift_expression + + +type_argument - - -expression + + +statement - - -expression_statement + + +method_modifiers - - -type_argument + + +W - - -&& + + +relational_expression - - -v + + +relational_expression - - -expression_statement + + += - - + + identifier - - -expression + + +; - - -A + + +identifier - - -type_argument + + +v + + + +( var - - -A + + +method_header - - -var + + +base - - -. + + +statement - - -> + + +) - - + + identifier - - + + +relational_expression + + + identifier - - + + +> + + + statement_expression - - + + +identifier + + + statement - - -identifier + + +statement - - + + identifier - - -identifier + + +type - - -identifier + + +> - - -break + + +declaration_statement - - -A + + +implicitly_typed_local_variable_declaration - - -7 + + +identifier - - -namespace_or_type_name + + +simple_name - - -} + + +identifier - - -type + + +statement_expression - - -shift_expression + + +var - - + + ; - - -: + + +shift_expression - - -void + + +v - - -< + + +literal - - + + identifier - - -var + + +, - - -expression_statement + + +T - - -relational_expression + + +identifier - - -case + + +< - - -relational_expression + + +primary_expression - - -local_variable_declaration + + +A - - -= + + +identifier - - -, + + +argument_list - - -argument + + +expression_statement - - + + identifier + + += + primary_expression - - -expression_statement - - - + + namespace_or_type_name - - + + ) - - -= - - - -type - - - -statement - - - -, + + +( - - + + A - - -argument_value - - - -relational_expression - - - -simple_name - - - -declaration_statement - - - -C - - - -switch_section - - - -argument_list - - - -C + + +argument - - -v + + +literal - - -type + + +identifier - - -= + + +local_variable_declaration - - -) + + +declaration_statement - - + + identifier - - -C + + +embedded_statement - - -relational_expression + + +< - - -shift_expression + + +implicitly_typed_local_variable_declaration - - -argument_list + + +pattern - - -type_argument + + +, - - -; + + +B - - -G + + +relational_expression G - - -y + + +) - - -tuple_element + + +argument - - -< + + +identifier - - -A + + +identifier - - -( + + += - - -implicitly_typed_local_variable_declarator + + +invocation_expression - - -B + + +identifier - - -relational_expression + + +invocation_expression - - -> + + +inclusive_or_expression - - -expression_statement + + +statement - - -literal + + +identifier + + + +type_argument + + + +tuple_literal - - + + boolean_expression - - -shift_expression + + +> - - -= + + +expression_statement - - -B + + +statement - - -, + + +( - - -namespace_or_type_name + + +relational_expression identifier - - -conditional_and_expression - - - -assignment_operator - - - -expression - - - -local_variable_declaration + + +implicitly_typed_local_variable_declarator - - -W + + +type_argument_list - - -local_variable_declaration + + +> - - -identifier + + +) - - + + invocation_expression - - -( - - - -A - - - -invocation_expression + + +identifier - - -method_body + + +primary_expression - - -) + + +relational_expression - - -shift_expression + + +argument - - -( + + +implicitly_typed_local_variable_declarator - - + + identifier - - -relational_expression + + +v - - + + relational_expression - - -right_shift + + +switch_section - - -z + + +invocation_expression - - -namespace_or_type_name + + +relational_expression - - -argument + + +x - - -A + + +simple_assignment - - -< + + +F - - -identifier + + +pattern - - -identifier + + +relational_expression - - -; + + +invocation_expression - - -is + + +A - - + + identifier - - -local_variable_type - - - -type_argument_list - - - -B - - - -invocation_expression + + +unary_expression - - -invocation_expression + + ++ - - -argument_list + + +base - - -implicitly_typed_local_variable_declarator + + +local_variable_type - - -argument_list + + +relational_expression - - + + 7 - - -relational_expression + + +; - - -) + + +; - - -shift_expression + + +TypeArgumentListChecks - - -type_argument + + +local_variable_declaration + + + +tuple_element - - -inclusive_or_expression + + +tuple_element - - -E + + +relational_expression - - -literal + + +orderby - - -> + + +argument_list - - -shift_expression + + +identifier - - -class_body + + +implicitly_typed_local_variable_declaration - - + + identifier - - -argument + + +argument_list - - -relational_expression + + +C - - + + relational_expression - - -identifier + + +B - - -A + + +declaration_statement - - -< + + +identifier - - -declaration_expression + + +declaration_statement - - -TypeArgumentListChecks + + +implicitly_typed_local_variable_declaration - - -prog + + +argument - - + + +identifier + + + literal - - -> + + +p - - -shift_expression + + +) - - -embedded_statement + + +C - - -block + + += - - -local_variable_declaration + + +> - - -is + + +statement - - -identifier + + +var - - -, + + +A - - -z + + +( - - -tuple_element + + +TypeArgumentListChecks - - -) + + +A - - -x + + +invocation_expression - - -if_statement + + +type_argument_list - - -F + + +B - - -) + + +B + + + +statement - - -tuple_expression + + +A - - -( + + +argument - - + + identifier - - -local_variable_declaration - - - -type_argument_list + + +identifier - - + + A - - -expression + + +statement - - -B + + +switch_block - - -{ + + +type - - -embedded_statement + + +statement - - -identifier + + +class_body - - -, + + +M - - -) + + +relational_expression - - -< + + +A - - -expression_statement + + +G - - -variable_reference + + +; - - -type_argument + + +relational_expression - - -E + + += - - -namespace_or_type_name + + +expression - - -primary_expression + + +simple_designation - - -var + + +( - - -identifier + + +type - - -declaration_statement + + +G - - -identifier + + +; - - -relational_expression + + +identifier - - -implicitly_typed_local_variable_declaration + + +r - - -implicitly_typed_local_variable_declarator + + +var - - -tuple_element + + +relational_expression - - -type_argument + + +> - - -statement + + +argument - - -relational_expression + + +z - - -tuple_element + + +argument_list - - -tuple_expression + + +invocation_expression - - -conditional_and_expression + + +type_argument_list - - -type_argument + + +identifier - - -declaration_statement + + +type_argument_list - - -shift_expression + + +B \ No newline at end of file