2 * Copyright (c) 2016, Facebook, Inc.
5 * This source code is licensed under the MIT license found in the
6 * LICENSE file in the "hack" directory of this source tree. An additional
11 * THIS FILE IS @generated; DO NOT EDIT IT
12 * To regenerate this file, run
14 * buck run //hphp/hack/src:generate_full_fidelity
18 * With these factory methods, nodes can be built up from their child nodes. A
19 * factory method must not just know all the children and the kind of node it is
20 * constructing; it also must know how to construct the value that this node is
21 * going to be tagged with. For that reason, an optional functor is provided.
22 * This functor requires that methods be provided to construct the values
23 * associated with a token or with any arbitrary node, given its children. If
24 * this functor is used then the resulting module contains factory methods.
26 * This module also provides some useful helper functions, like an iterator,
27 * a rewriting visitor, and so on.
31 open Full_fidelity_syntax_type
32 module SyntaxKind
= Full_fidelity_syntax_kind
33 module TokenKind
= Full_fidelity_token_kind
34 module Operator
= Full_fidelity_operator
36 [@@@warning
"-27"] (* unused variable *)
38 module WithToken
(Token
: TokenType
) = struct
39 module WithSyntaxValue
(SyntaxValue
: SyntaxValueType
) = struct
40 include MakeSyntaxType
(Token
) (SyntaxValue
)
42 let make syntax
value = { syntax
; value }
44 let syntax node
= node
.syntax
46 let value node
= node
.value
48 let syntax_node_to_list node
=
49 match syntax node
with
56 | Missing
-> SyntaxKind.Missing
57 | Token t
-> SyntaxKind.Token
(Token.kind t
)
58 | SyntaxList _
-> SyntaxKind.SyntaxList
59 | EndOfFile _
-> SyntaxKind.EndOfFile
60 | Script _
-> SyntaxKind.Script
61 | QualifiedName _
-> SyntaxKind.QualifiedName
62 | SimpleTypeSpecifier _
-> SyntaxKind.SimpleTypeSpecifier
63 | LiteralExpression _
-> SyntaxKind.LiteralExpression
64 | PrefixedStringExpression _
-> SyntaxKind.PrefixedStringExpression
65 | PrefixedCodeExpression _
-> SyntaxKind.PrefixedCodeExpression
66 | VariableExpression _
-> SyntaxKind.VariableExpression
67 | PipeVariableExpression _
-> SyntaxKind.PipeVariableExpression
68 | FileAttributeSpecification _
-> SyntaxKind.FileAttributeSpecification
69 | EnumDeclaration _
-> SyntaxKind.EnumDeclaration
70 | EnumUse _
-> SyntaxKind.EnumUse
71 | Enumerator _
-> SyntaxKind.Enumerator
72 | EnumClassDeclaration _
-> SyntaxKind.EnumClassDeclaration
73 | EnumClassEnumerator _
-> SyntaxKind.EnumClassEnumerator
74 | AliasDeclaration _
-> SyntaxKind.AliasDeclaration
75 | ContextAliasDeclaration _
-> SyntaxKind.ContextAliasDeclaration
76 | PropertyDeclaration _
-> SyntaxKind.PropertyDeclaration
77 | PropertyDeclarator _
-> SyntaxKind.PropertyDeclarator
78 | NamespaceDeclaration _
-> SyntaxKind.NamespaceDeclaration
79 | NamespaceDeclarationHeader _
-> SyntaxKind.NamespaceDeclarationHeader
80 | NamespaceBody _
-> SyntaxKind.NamespaceBody
81 | NamespaceEmptyBody _
-> SyntaxKind.NamespaceEmptyBody
82 | NamespaceUseDeclaration _
-> SyntaxKind.NamespaceUseDeclaration
83 | NamespaceGroupUseDeclaration _
->
84 SyntaxKind.NamespaceGroupUseDeclaration
85 | NamespaceUseClause _
-> SyntaxKind.NamespaceUseClause
86 | FunctionDeclaration _
-> SyntaxKind.FunctionDeclaration
87 | FunctionDeclarationHeader _
-> SyntaxKind.FunctionDeclarationHeader
88 | Contexts _
-> SyntaxKind.Contexts
89 | WhereClause _
-> SyntaxKind.WhereClause
90 | WhereConstraint _
-> SyntaxKind.WhereConstraint
91 | MethodishDeclaration _
-> SyntaxKind.MethodishDeclaration
92 | MethodishTraitResolution _
-> SyntaxKind.MethodishTraitResolution
93 | ClassishDeclaration _
-> SyntaxKind.ClassishDeclaration
94 | ClassishBody _
-> SyntaxKind.ClassishBody
95 | TraitUsePrecedenceItem _
-> SyntaxKind.TraitUsePrecedenceItem
96 | TraitUseAliasItem _
-> SyntaxKind.TraitUseAliasItem
97 | TraitUseConflictResolution _
-> SyntaxKind.TraitUseConflictResolution
98 | TraitUse _
-> SyntaxKind.TraitUse
99 | RequireClause _
-> SyntaxKind.RequireClause
100 | ConstDeclaration _
-> SyntaxKind.ConstDeclaration
101 | ConstantDeclarator _
-> SyntaxKind.ConstantDeclarator
102 | TypeConstDeclaration _
-> SyntaxKind.TypeConstDeclaration
103 | ContextConstDeclaration _
-> SyntaxKind.ContextConstDeclaration
104 | DecoratedExpression _
-> SyntaxKind.DecoratedExpression
105 | ParameterDeclaration _
-> SyntaxKind.ParameterDeclaration
106 | VariadicParameter _
-> SyntaxKind.VariadicParameter
107 | OldAttributeSpecification _
-> SyntaxKind.OldAttributeSpecification
108 | AttributeSpecification _
-> SyntaxKind.AttributeSpecification
109 | Attribute _
-> SyntaxKind.Attribute
110 | InclusionExpression _
-> SyntaxKind.InclusionExpression
111 | InclusionDirective _
-> SyntaxKind.InclusionDirective
112 | CompoundStatement _
-> SyntaxKind.CompoundStatement
113 | ExpressionStatement _
-> SyntaxKind.ExpressionStatement
114 | MarkupSection _
-> SyntaxKind.MarkupSection
115 | MarkupSuffix _
-> SyntaxKind.MarkupSuffix
116 | UnsetStatement _
-> SyntaxKind.UnsetStatement
117 | UsingStatementBlockScoped _
-> SyntaxKind.UsingStatementBlockScoped
118 | UsingStatementFunctionScoped _
->
119 SyntaxKind.UsingStatementFunctionScoped
120 | WhileStatement _
-> SyntaxKind.WhileStatement
121 | IfStatement _
-> SyntaxKind.IfStatement
122 | ElseifClause _
-> SyntaxKind.ElseifClause
123 | ElseClause _
-> SyntaxKind.ElseClause
124 | TryStatement _
-> SyntaxKind.TryStatement
125 | CatchClause _
-> SyntaxKind.CatchClause
126 | FinallyClause _
-> SyntaxKind.FinallyClause
127 | DoStatement _
-> SyntaxKind.DoStatement
128 | ForStatement _
-> SyntaxKind.ForStatement
129 | ForeachStatement _
-> SyntaxKind.ForeachStatement
130 | SwitchStatement _
-> SyntaxKind.SwitchStatement
131 | SwitchSection _
-> SyntaxKind.SwitchSection
132 | SwitchFallthrough _
-> SyntaxKind.SwitchFallthrough
133 | CaseLabel _
-> SyntaxKind.CaseLabel
134 | DefaultLabel _
-> SyntaxKind.DefaultLabel
135 | ReturnStatement _
-> SyntaxKind.ReturnStatement
136 | YieldBreakStatement _
-> SyntaxKind.YieldBreakStatement
137 | ThrowStatement _
-> SyntaxKind.ThrowStatement
138 | BreakStatement _
-> SyntaxKind.BreakStatement
139 | ContinueStatement _
-> SyntaxKind.ContinueStatement
140 | EchoStatement _
-> SyntaxKind.EchoStatement
141 | ConcurrentStatement _
-> SyntaxKind.ConcurrentStatement
142 | SimpleInitializer _
-> SyntaxKind.SimpleInitializer
143 | AnonymousClass _
-> SyntaxKind.AnonymousClass
144 | AnonymousFunction _
-> SyntaxKind.AnonymousFunction
145 | AnonymousFunctionUseClause _
-> SyntaxKind.AnonymousFunctionUseClause
146 | LambdaExpression _
-> SyntaxKind.LambdaExpression
147 | LambdaSignature _
-> SyntaxKind.LambdaSignature
148 | CastExpression _
-> SyntaxKind.CastExpression
149 | ScopeResolutionExpression _
-> SyntaxKind.ScopeResolutionExpression
150 | MemberSelectionExpression _
-> SyntaxKind.MemberSelectionExpression
151 | SafeMemberSelectionExpression _
->
152 SyntaxKind.SafeMemberSelectionExpression
153 | EmbeddedMemberSelectionExpression _
->
154 SyntaxKind.EmbeddedMemberSelectionExpression
155 | YieldExpression _
-> SyntaxKind.YieldExpression
156 | PrefixUnaryExpression _
-> SyntaxKind.PrefixUnaryExpression
157 | PostfixUnaryExpression _
-> SyntaxKind.PostfixUnaryExpression
158 | BinaryExpression _
-> SyntaxKind.BinaryExpression
159 | IsExpression _
-> SyntaxKind.IsExpression
160 | AsExpression _
-> SyntaxKind.AsExpression
161 | NullableAsExpression _
-> SyntaxKind.NullableAsExpression
162 | UpcastExpression _
-> SyntaxKind.UpcastExpression
163 | ConditionalExpression _
-> SyntaxKind.ConditionalExpression
164 | EvalExpression _
-> SyntaxKind.EvalExpression
165 | IssetExpression _
-> SyntaxKind.IssetExpression
166 | FunctionCallExpression _
-> SyntaxKind.FunctionCallExpression
167 | FunctionPointerExpression _
-> SyntaxKind.FunctionPointerExpression
168 | ParenthesizedExpression _
-> SyntaxKind.ParenthesizedExpression
169 | BracedExpression _
-> SyntaxKind.BracedExpression
170 | ETSpliceExpression _
-> SyntaxKind.ETSpliceExpression
171 | EmbeddedBracedExpression _
-> SyntaxKind.EmbeddedBracedExpression
172 | ListExpression _
-> SyntaxKind.ListExpression
173 | CollectionLiteralExpression _
-> SyntaxKind.CollectionLiteralExpression
174 | ObjectCreationExpression _
-> SyntaxKind.ObjectCreationExpression
175 | ConstructorCall _
-> SyntaxKind.ConstructorCall
176 | DarrayIntrinsicExpression _
-> SyntaxKind.DarrayIntrinsicExpression
177 | DictionaryIntrinsicExpression _
->
178 SyntaxKind.DictionaryIntrinsicExpression
179 | KeysetIntrinsicExpression _
-> SyntaxKind.KeysetIntrinsicExpression
180 | VarrayIntrinsicExpression _
-> SyntaxKind.VarrayIntrinsicExpression
181 | VectorIntrinsicExpression _
-> SyntaxKind.VectorIntrinsicExpression
182 | ElementInitializer _
-> SyntaxKind.ElementInitializer
183 | SubscriptExpression _
-> SyntaxKind.SubscriptExpression
184 | EmbeddedSubscriptExpression _
-> SyntaxKind.EmbeddedSubscriptExpression
185 | AwaitableCreationExpression _
-> SyntaxKind.AwaitableCreationExpression
186 | XHPChildrenDeclaration _
-> SyntaxKind.XHPChildrenDeclaration
187 | XHPChildrenParenthesizedList _
->
188 SyntaxKind.XHPChildrenParenthesizedList
189 | XHPCategoryDeclaration _
-> SyntaxKind.XHPCategoryDeclaration
190 | XHPEnumType _
-> SyntaxKind.XHPEnumType
191 | XHPLateinit _
-> SyntaxKind.XHPLateinit
192 | XHPRequired _
-> SyntaxKind.XHPRequired
193 | XHPClassAttributeDeclaration _
->
194 SyntaxKind.XHPClassAttributeDeclaration
195 | XHPClassAttribute _
-> SyntaxKind.XHPClassAttribute
196 | XHPSimpleClassAttribute _
-> SyntaxKind.XHPSimpleClassAttribute
197 | XHPSimpleAttribute _
-> SyntaxKind.XHPSimpleAttribute
198 | XHPSpreadAttribute _
-> SyntaxKind.XHPSpreadAttribute
199 | XHPOpen _
-> SyntaxKind.XHPOpen
200 | XHPExpression _
-> SyntaxKind.XHPExpression
201 | XHPClose _
-> SyntaxKind.XHPClose
202 | TypeConstant _
-> SyntaxKind.TypeConstant
203 | VectorTypeSpecifier _
-> SyntaxKind.VectorTypeSpecifier
204 | KeysetTypeSpecifier _
-> SyntaxKind.KeysetTypeSpecifier
205 | TupleTypeExplicitSpecifier _
-> SyntaxKind.TupleTypeExplicitSpecifier
206 | VarrayTypeSpecifier _
-> SyntaxKind.VarrayTypeSpecifier
207 | FunctionCtxTypeSpecifier _
-> SyntaxKind.FunctionCtxTypeSpecifier
208 | TypeParameter _
-> SyntaxKind.TypeParameter
209 | TypeConstraint _
-> SyntaxKind.TypeConstraint
210 | ContextConstraint _
-> SyntaxKind.ContextConstraint
211 | DarrayTypeSpecifier _
-> SyntaxKind.DarrayTypeSpecifier
212 | DictionaryTypeSpecifier _
-> SyntaxKind.DictionaryTypeSpecifier
213 | ClosureTypeSpecifier _
-> SyntaxKind.ClosureTypeSpecifier
214 | ClosureParameterTypeSpecifier _
->
215 SyntaxKind.ClosureParameterTypeSpecifier
216 | ClassnameTypeSpecifier _
-> SyntaxKind.ClassnameTypeSpecifier
217 | FieldSpecifier _
-> SyntaxKind.FieldSpecifier
218 | FieldInitializer _
-> SyntaxKind.FieldInitializer
219 | ShapeTypeSpecifier _
-> SyntaxKind.ShapeTypeSpecifier
220 | ShapeExpression _
-> SyntaxKind.ShapeExpression
221 | TupleExpression _
-> SyntaxKind.TupleExpression
222 | GenericTypeSpecifier _
-> SyntaxKind.GenericTypeSpecifier
223 | NullableTypeSpecifier _
-> SyntaxKind.NullableTypeSpecifier
224 | LikeTypeSpecifier _
-> SyntaxKind.LikeTypeSpecifier
225 | SoftTypeSpecifier _
-> SyntaxKind.SoftTypeSpecifier
226 | AttributizedSpecifier _
-> SyntaxKind.AttributizedSpecifier
227 | ReifiedTypeArgument _
-> SyntaxKind.ReifiedTypeArgument
228 | TypeArguments _
-> SyntaxKind.TypeArguments
229 | TypeParameters _
-> SyntaxKind.TypeParameters
230 | TupleTypeSpecifier _
-> SyntaxKind.TupleTypeSpecifier
231 | UnionTypeSpecifier _
-> SyntaxKind.UnionTypeSpecifier
232 | IntersectionTypeSpecifier _
-> SyntaxKind.IntersectionTypeSpecifier
233 | ErrorSyntax _
-> SyntaxKind.ErrorSyntax
234 | ListItem _
-> SyntaxKind.ListItem
235 | EnumClassLabelExpression _
-> SyntaxKind.EnumClassLabelExpression
237 let kind node
= to_kind (syntax node
)
239 let has_kind syntax_kind node
= SyntaxKind.equal
(kind node
) syntax_kind
241 let is_missing node
=
243 | SyntaxKind.Missing
-> true
248 | SyntaxKind.SyntaxList
-> true
251 let is_end_of_file = has_kind SyntaxKind.EndOfFile
253 let is_script = has_kind SyntaxKind.Script
255 let is_qualified_name = has_kind SyntaxKind.QualifiedName
257 let is_simple_type_specifier = has_kind SyntaxKind.SimpleTypeSpecifier
259 let is_literal_expression = has_kind SyntaxKind.LiteralExpression
261 let is_prefixed_string_expression =
262 has_kind SyntaxKind.PrefixedStringExpression
264 let is_prefixed_code_expression = has_kind SyntaxKind.PrefixedCodeExpression
266 let is_variable_expression = has_kind SyntaxKind.VariableExpression
268 let is_pipe_variable_expression = has_kind SyntaxKind.PipeVariableExpression
270 let is_file_attribute_specification =
271 has_kind SyntaxKind.FileAttributeSpecification
273 let is_enum_declaration = has_kind SyntaxKind.EnumDeclaration
275 let is_enum_use = has_kind SyntaxKind.EnumUse
277 let is_enumerator = has_kind SyntaxKind.Enumerator
279 let is_enum_class_declaration = has_kind SyntaxKind.EnumClassDeclaration
281 let is_enum_class_enumerator = has_kind SyntaxKind.EnumClassEnumerator
283 let is_alias_declaration = has_kind SyntaxKind.AliasDeclaration
285 let is_context_alias_declaration =
286 has_kind SyntaxKind.ContextAliasDeclaration
288 let is_property_declaration = has_kind SyntaxKind.PropertyDeclaration
290 let is_property_declarator = has_kind SyntaxKind.PropertyDeclarator
292 let is_namespace_declaration = has_kind SyntaxKind.NamespaceDeclaration
294 let is_namespace_declaration_header =
295 has_kind SyntaxKind.NamespaceDeclarationHeader
297 let is_namespace_body = has_kind SyntaxKind.NamespaceBody
299 let is_namespace_empty_body = has_kind SyntaxKind.NamespaceEmptyBody
301 let is_namespace_use_declaration =
302 has_kind SyntaxKind.NamespaceUseDeclaration
304 let is_namespace_group_use_declaration =
305 has_kind SyntaxKind.NamespaceGroupUseDeclaration
307 let is_namespace_use_clause = has_kind SyntaxKind.NamespaceUseClause
309 let is_function_declaration = has_kind SyntaxKind.FunctionDeclaration
311 let is_function_declaration_header =
312 has_kind SyntaxKind.FunctionDeclarationHeader
314 let is_contexts = has_kind SyntaxKind.Contexts
316 let is_where_clause = has_kind SyntaxKind.WhereClause
318 let is_where_constraint = has_kind SyntaxKind.WhereConstraint
320 let is_methodish_declaration = has_kind SyntaxKind.MethodishDeclaration
322 let is_methodish_trait_resolution =
323 has_kind SyntaxKind.MethodishTraitResolution
325 let is_classish_declaration = has_kind SyntaxKind.ClassishDeclaration
327 let is_classish_body = has_kind SyntaxKind.ClassishBody
329 let is_trait_use_precedence_item =
330 has_kind SyntaxKind.TraitUsePrecedenceItem
332 let is_trait_use_alias_item = has_kind SyntaxKind.TraitUseAliasItem
334 let is_trait_use_conflict_resolution =
335 has_kind SyntaxKind.TraitUseConflictResolution
337 let is_trait_use = has_kind SyntaxKind.TraitUse
339 let is_require_clause = has_kind SyntaxKind.RequireClause
341 let is_const_declaration = has_kind SyntaxKind.ConstDeclaration
343 let is_constant_declarator = has_kind SyntaxKind.ConstantDeclarator
345 let is_type_const_declaration = has_kind SyntaxKind.TypeConstDeclaration
347 let is_context_const_declaration =
348 has_kind SyntaxKind.ContextConstDeclaration
350 let is_decorated_expression = has_kind SyntaxKind.DecoratedExpression
352 let is_parameter_declaration = has_kind SyntaxKind.ParameterDeclaration
354 let is_variadic_parameter = has_kind SyntaxKind.VariadicParameter
356 let is_old_attribute_specification =
357 has_kind SyntaxKind.OldAttributeSpecification
359 let is_attribute_specification = has_kind SyntaxKind.AttributeSpecification
361 let is_attribute = has_kind SyntaxKind.Attribute
363 let is_inclusion_expression = has_kind SyntaxKind.InclusionExpression
365 let is_inclusion_directive = has_kind SyntaxKind.InclusionDirective
367 let is_compound_statement = has_kind SyntaxKind.CompoundStatement
369 let is_expression_statement = has_kind SyntaxKind.ExpressionStatement
371 let is_markup_section = has_kind SyntaxKind.MarkupSection
373 let is_markup_suffix = has_kind SyntaxKind.MarkupSuffix
375 let is_unset_statement = has_kind SyntaxKind.UnsetStatement
377 let is_using_statement_block_scoped =
378 has_kind SyntaxKind.UsingStatementBlockScoped
380 let is_using_statement_function_scoped =
381 has_kind SyntaxKind.UsingStatementFunctionScoped
383 let is_while_statement = has_kind SyntaxKind.WhileStatement
385 let is_if_statement = has_kind SyntaxKind.IfStatement
387 let is_elseif_clause = has_kind SyntaxKind.ElseifClause
389 let is_else_clause = has_kind SyntaxKind.ElseClause
391 let is_try_statement = has_kind SyntaxKind.TryStatement
393 let is_catch_clause = has_kind SyntaxKind.CatchClause
395 let is_finally_clause = has_kind SyntaxKind.FinallyClause
397 let is_do_statement = has_kind SyntaxKind.DoStatement
399 let is_for_statement = has_kind SyntaxKind.ForStatement
401 let is_foreach_statement = has_kind SyntaxKind.ForeachStatement
403 let is_switch_statement = has_kind SyntaxKind.SwitchStatement
405 let is_switch_section = has_kind SyntaxKind.SwitchSection
407 let is_switch_fallthrough = has_kind SyntaxKind.SwitchFallthrough
409 let is_case_label = has_kind SyntaxKind.CaseLabel
411 let is_default_label = has_kind SyntaxKind.DefaultLabel
413 let is_return_statement = has_kind SyntaxKind.ReturnStatement
415 let is_yield_break_statement = has_kind SyntaxKind.YieldBreakStatement
417 let is_throw_statement = has_kind SyntaxKind.ThrowStatement
419 let is_break_statement = has_kind SyntaxKind.BreakStatement
421 let is_continue_statement = has_kind SyntaxKind.ContinueStatement
423 let is_echo_statement = has_kind SyntaxKind.EchoStatement
425 let is_concurrent_statement = has_kind SyntaxKind.ConcurrentStatement
427 let is_simple_initializer = has_kind SyntaxKind.SimpleInitializer
429 let is_anonymous_class = has_kind SyntaxKind.AnonymousClass
431 let is_anonymous_function = has_kind SyntaxKind.AnonymousFunction
433 let is_anonymous_function_use_clause =
434 has_kind SyntaxKind.AnonymousFunctionUseClause
436 let is_lambda_expression = has_kind SyntaxKind.LambdaExpression
438 let is_lambda_signature = has_kind SyntaxKind.LambdaSignature
440 let is_cast_expression = has_kind SyntaxKind.CastExpression
442 let is_scope_resolution_expression =
443 has_kind SyntaxKind.ScopeResolutionExpression
445 let is_member_selection_expression =
446 has_kind SyntaxKind.MemberSelectionExpression
448 let is_safe_member_selection_expression =
449 has_kind SyntaxKind.SafeMemberSelectionExpression
451 let is_embedded_member_selection_expression =
452 has_kind SyntaxKind.EmbeddedMemberSelectionExpression
454 let is_yield_expression = has_kind SyntaxKind.YieldExpression
456 let is_prefix_unary_expression = has_kind SyntaxKind.PrefixUnaryExpression
458 let is_postfix_unary_expression = has_kind SyntaxKind.PostfixUnaryExpression
460 let is_binary_expression = has_kind SyntaxKind.BinaryExpression
462 let is_is_expression = has_kind SyntaxKind.IsExpression
464 let is_as_expression = has_kind SyntaxKind.AsExpression
466 let is_nullable_as_expression = has_kind SyntaxKind.NullableAsExpression
468 let is_upcast_expression = has_kind SyntaxKind.UpcastExpression
470 let is_conditional_expression = has_kind SyntaxKind.ConditionalExpression
472 let is_eval_expression = has_kind SyntaxKind.EvalExpression
474 let is_isset_expression = has_kind SyntaxKind.IssetExpression
476 let is_function_call_expression = has_kind SyntaxKind.FunctionCallExpression
478 let is_function_pointer_expression =
479 has_kind SyntaxKind.FunctionPointerExpression
481 let is_parenthesized_expression =
482 has_kind SyntaxKind.ParenthesizedExpression
484 let is_braced_expression = has_kind SyntaxKind.BracedExpression
486 let is_et_splice_expression = has_kind SyntaxKind.ETSpliceExpression
488 let is_embedded_braced_expression =
489 has_kind SyntaxKind.EmbeddedBracedExpression
491 let is_list_expression = has_kind SyntaxKind.ListExpression
493 let is_collection_literal_expression =
494 has_kind SyntaxKind.CollectionLiteralExpression
496 let is_object_creation_expression =
497 has_kind SyntaxKind.ObjectCreationExpression
499 let is_constructor_call = has_kind SyntaxKind.ConstructorCall
501 let is_darray_intrinsic_expression =
502 has_kind SyntaxKind.DarrayIntrinsicExpression
504 let is_dictionary_intrinsic_expression =
505 has_kind SyntaxKind.DictionaryIntrinsicExpression
507 let is_keyset_intrinsic_expression =
508 has_kind SyntaxKind.KeysetIntrinsicExpression
510 let is_varray_intrinsic_expression =
511 has_kind SyntaxKind.VarrayIntrinsicExpression
513 let is_vector_intrinsic_expression =
514 has_kind SyntaxKind.VectorIntrinsicExpression
516 let is_element_initializer = has_kind SyntaxKind.ElementInitializer
518 let is_subscript_expression = has_kind SyntaxKind.SubscriptExpression
520 let is_embedded_subscript_expression =
521 has_kind SyntaxKind.EmbeddedSubscriptExpression
523 let is_awaitable_creation_expression =
524 has_kind SyntaxKind.AwaitableCreationExpression
526 let is_xhp_children_declaration = has_kind SyntaxKind.XHPChildrenDeclaration
528 let is_xhp_children_parenthesized_list =
529 has_kind SyntaxKind.XHPChildrenParenthesizedList
531 let is_xhp_category_declaration = has_kind SyntaxKind.XHPCategoryDeclaration
533 let is_xhp_enum_type = has_kind SyntaxKind.XHPEnumType
535 let is_xhp_lateinit = has_kind SyntaxKind.XHPLateinit
537 let is_xhp_required = has_kind SyntaxKind.XHPRequired
539 let is_xhp_class_attribute_declaration =
540 has_kind SyntaxKind.XHPClassAttributeDeclaration
542 let is_xhp_class_attribute = has_kind SyntaxKind.XHPClassAttribute
544 let is_xhp_simple_class_attribute =
545 has_kind SyntaxKind.XHPSimpleClassAttribute
547 let is_xhp_simple_attribute = has_kind SyntaxKind.XHPSimpleAttribute
549 let is_xhp_spread_attribute = has_kind SyntaxKind.XHPSpreadAttribute
551 let is_xhp_open = has_kind SyntaxKind.XHPOpen
553 let is_xhp_expression = has_kind SyntaxKind.XHPExpression
555 let is_xhp_close = has_kind SyntaxKind.XHPClose
557 let is_type_constant = has_kind SyntaxKind.TypeConstant
559 let is_vector_type_specifier = has_kind SyntaxKind.VectorTypeSpecifier
561 let is_keyset_type_specifier = has_kind SyntaxKind.KeysetTypeSpecifier
563 let is_tuple_type_explicit_specifier =
564 has_kind SyntaxKind.TupleTypeExplicitSpecifier
566 let is_varray_type_specifier = has_kind SyntaxKind.VarrayTypeSpecifier
568 let is_function_ctx_type_specifier =
569 has_kind SyntaxKind.FunctionCtxTypeSpecifier
571 let is_type_parameter = has_kind SyntaxKind.TypeParameter
573 let is_type_constraint = has_kind SyntaxKind.TypeConstraint
575 let is_context_constraint = has_kind SyntaxKind.ContextConstraint
577 let is_darray_type_specifier = has_kind SyntaxKind.DarrayTypeSpecifier
579 let is_dictionary_type_specifier =
580 has_kind SyntaxKind.DictionaryTypeSpecifier
582 let is_closure_type_specifier = has_kind SyntaxKind.ClosureTypeSpecifier
584 let is_closure_parameter_type_specifier =
585 has_kind SyntaxKind.ClosureParameterTypeSpecifier
587 let is_classname_type_specifier = has_kind SyntaxKind.ClassnameTypeSpecifier
589 let is_field_specifier = has_kind SyntaxKind.FieldSpecifier
591 let is_field_initializer = has_kind SyntaxKind.FieldInitializer
593 let is_shape_type_specifier = has_kind SyntaxKind.ShapeTypeSpecifier
595 let is_shape_expression = has_kind SyntaxKind.ShapeExpression
597 let is_tuple_expression = has_kind SyntaxKind.TupleExpression
599 let is_generic_type_specifier = has_kind SyntaxKind.GenericTypeSpecifier
601 let is_nullable_type_specifier = has_kind SyntaxKind.NullableTypeSpecifier
603 let is_like_type_specifier = has_kind SyntaxKind.LikeTypeSpecifier
605 let is_soft_type_specifier = has_kind SyntaxKind.SoftTypeSpecifier
607 let is_attributized_specifier = has_kind SyntaxKind.AttributizedSpecifier
609 let is_reified_type_argument = has_kind SyntaxKind.ReifiedTypeArgument
611 let is_type_arguments = has_kind SyntaxKind.TypeArguments
613 let is_type_parameters = has_kind SyntaxKind.TypeParameters
615 let is_tuple_type_specifier = has_kind SyntaxKind.TupleTypeSpecifier
617 let is_union_type_specifier = has_kind SyntaxKind.UnionTypeSpecifier
619 let is_intersection_type_specifier =
620 has_kind SyntaxKind.IntersectionTypeSpecifier
622 let is_error = has_kind SyntaxKind.ErrorSyntax
624 let is_list_item = has_kind SyntaxKind.ListItem
626 let is_enum_class_label_expression =
627 has_kind SyntaxKind.EnumClassLabelExpression
629 let is_loop_statement node
=
630 is_for_statement node
631 || is_foreach_statement node
632 || is_while_statement node
633 || is_do_statement node
635 let is_separable_prefix node
=
636 match syntax node
with
639 (match Token.kind t
with
646 let is_specific_token kind node
=
647 match syntax node
with
648 | Token t
-> TokenKind.equal
(Token.kind t
) kind
651 let is_namespace_prefix node
=
652 match syntax node
with
655 match List.last
(syntax_node_to_list e
.qualified_name_parts
) with
660 | ListItem p
-> not
(is_missing p
.list_separator
)
666 let has_leading_trivia kind token
=
667 List.exists
(Token.leading token
) ~f
:(fun trivia
->
668 Full_fidelity_trivia_kind.equal
(Token.Trivia.kind trivia
) kind)
670 let is_external e
= is_specific_token TokenKind.Semicolon e
|| is_missing e
672 let is_name = is_specific_token TokenKind.Name
674 let is_construct = is_specific_token TokenKind.Construct
676 let is_static = is_specific_token TokenKind.Static
678 let is_private = is_specific_token TokenKind.Private
680 let is_public = is_specific_token TokenKind.Public
682 let is_protected = is_specific_token TokenKind.Protected
684 let is_abstract = is_specific_token TokenKind.Abstract
686 let is_final = is_specific_token TokenKind.Final
688 let is_async = is_specific_token TokenKind.Async
690 let is_void = is_specific_token TokenKind.Void
692 let is_left_brace = is_specific_token TokenKind.LeftBrace
694 let is_ellipsis = is_specific_token TokenKind.DotDotDot
696 let is_comma = is_specific_token TokenKind.Comma
698 let is_ampersand = is_specific_token TokenKind.Ampersand
700 let is_inout = is_specific_token TokenKind.Inout
702 let syntax_list_fold ~init ~f node
=
703 match syntax node
with
709 | ListItem
{ list_item
; _
} -> f init list_item
716 let fold_over_children f acc
syntax =
720 | SyntaxList items
-> List.fold_left ~f ~init
:acc items
721 | EndOfFile
{ end_of_file_token
} ->
722 let acc = f
acc end_of_file_token
in
724 | Script
{ script_declarations
} ->
725 let acc = f
acc script_declarations
in
727 | QualifiedName
{ qualified_name_parts
} ->
728 let acc = f
acc qualified_name_parts
in
730 | SimpleTypeSpecifier
{ simple_type_specifier
} ->
731 let acc = f
acc simple_type_specifier
in
733 | LiteralExpression
{ literal_expression
} ->
734 let acc = f
acc literal_expression
in
736 | PrefixedStringExpression
{ prefixed_string_name
; prefixed_string_str
}
738 let acc = f
acc prefixed_string_name
in
739 let acc = f
acc prefixed_string_str
in
741 | PrefixedCodeExpression
743 prefixed_code_prefix
;
744 prefixed_code_left_backtick
;
745 prefixed_code_expression
;
746 prefixed_code_right_backtick
;
748 let acc = f
acc prefixed_code_prefix
in
749 let acc = f
acc prefixed_code_left_backtick
in
750 let acc = f
acc prefixed_code_expression
in
751 let acc = f
acc prefixed_code_right_backtick
in
753 | VariableExpression
{ variable_expression
} ->
754 let acc = f
acc variable_expression
in
756 | PipeVariableExpression
{ pipe_variable_expression
} ->
757 let acc = f
acc pipe_variable_expression
in
759 | FileAttributeSpecification
761 file_attribute_specification_left_double_angle
;
762 file_attribute_specification_keyword
;
763 file_attribute_specification_colon
;
764 file_attribute_specification_attributes
;
765 file_attribute_specification_right_double_angle
;
767 let acc = f
acc file_attribute_specification_left_double_angle
in
768 let acc = f
acc file_attribute_specification_keyword
in
769 let acc = f
acc file_attribute_specification_colon
in
770 let acc = f
acc file_attribute_specification_attributes
in
771 let acc = f
acc file_attribute_specification_right_double_angle
in
786 let acc = f
acc enum_attribute_spec
in
787 let acc = f
acc enum_keyword
in
788 let acc = f
acc enum_name
in
789 let acc = f
acc enum_colon
in
790 let acc = f
acc enum_base
in
791 let acc = f
acc enum_type
in
792 let acc = f
acc enum_left_brace
in
793 let acc = f
acc enum_use_clauses
in
794 let acc = f
acc enum_enumerators
in
795 let acc = f
acc enum_right_brace
in
797 | EnumUse
{ enum_use_keyword
; enum_use_names
; enum_use_semicolon
} ->
798 let acc = f
acc enum_use_keyword
in
799 let acc = f
acc enum_use_names
in
800 let acc = f
acc enum_use_semicolon
in
807 enumerator_semicolon
;
809 let acc = f
acc enumerator_name
in
810 let acc = f
acc enumerator_equal
in
811 let acc = f
acc enumerator_value
in
812 let acc = f
acc enumerator_semicolon
in
814 | EnumClassDeclaration
816 enum_class_attribute_spec
;
817 enum_class_modifiers
;
818 enum_class_enum_keyword
;
819 enum_class_class_keyword
;
824 enum_class_extends_list
;
825 enum_class_left_brace
;
827 enum_class_right_brace
;
829 let acc = f
acc enum_class_attribute_spec
in
830 let acc = f
acc enum_class_modifiers
in
831 let acc = f
acc enum_class_enum_keyword
in
832 let acc = f
acc enum_class_class_keyword
in
833 let acc = f
acc enum_class_name
in
834 let acc = f
acc enum_class_colon
in
835 let acc = f
acc enum_class_base
in
836 let acc = f
acc enum_class_extends
in
837 let acc = f
acc enum_class_extends_list
in
838 let acc = f
acc enum_class_left_brace
in
839 let acc = f
acc enum_class_elements
in
840 let acc = f
acc enum_class_right_brace
in
842 | EnumClassEnumerator
844 enum_class_enumerator_modifiers
;
845 enum_class_enumerator_type
;
846 enum_class_enumerator_name
;
847 enum_class_enumerator_initializer
;
848 enum_class_enumerator_semicolon
;
850 let acc = f
acc enum_class_enumerator_modifiers
in
851 let acc = f
acc enum_class_enumerator_type
in
852 let acc = f
acc enum_class_enumerator_name
in
853 let acc = f
acc enum_class_enumerator_initializer
in
854 let acc = f
acc enum_class_enumerator_semicolon
in
858 alias_attribute_spec
;
861 alias_generic_parameter
;
867 let acc = f
acc alias_attribute_spec
in
868 let acc = f
acc alias_keyword
in
869 let acc = f
acc alias_name
in
870 let acc = f
acc alias_generic_parameter
in
871 let acc = f
acc alias_constraint
in
872 let acc = f
acc alias_equal
in
873 let acc = f
acc alias_type
in
874 let acc = f
acc alias_semicolon
in
876 | ContextAliasDeclaration
878 ctx_alias_attribute_spec
;
881 ctx_alias_generic_parameter
;
882 ctx_alias_as_constraint
;
887 let acc = f
acc ctx_alias_attribute_spec
in
888 let acc = f
acc ctx_alias_keyword
in
889 let acc = f
acc ctx_alias_name
in
890 let acc = f
acc ctx_alias_generic_parameter
in
891 let acc = f
acc ctx_alias_as_constraint
in
892 let acc = f
acc ctx_alias_equal
in
893 let acc = f
acc ctx_alias_context
in
894 let acc = f
acc ctx_alias_semicolon
in
896 | PropertyDeclaration
898 property_attribute_spec
;
901 property_declarators
;
904 let acc = f
acc property_attribute_spec
in
905 let acc = f
acc property_modifiers
in
906 let acc = f
acc property_type
in
907 let acc = f
acc property_declarators
in
908 let acc = f
acc property_semicolon
in
910 | PropertyDeclarator
{ property_name
; property_initializer
} ->
911 let acc = f
acc property_name
in
912 let acc = f
acc property_initializer
in
914 | NamespaceDeclaration
{ namespace_header
; namespace_body
} ->
915 let acc = f
acc namespace_header
in
916 let acc = f
acc namespace_body
in
918 | NamespaceDeclarationHeader
{ namespace_keyword
; namespace_name
} ->
919 let acc = f
acc namespace_keyword
in
920 let acc = f
acc namespace_name
in
924 namespace_left_brace
;
925 namespace_declarations
;
926 namespace_right_brace
;
928 let acc = f
acc namespace_left_brace
in
929 let acc = f
acc namespace_declarations
in
930 let acc = f
acc namespace_right_brace
in
932 | NamespaceEmptyBody
{ namespace_semicolon
} ->
933 let acc = f
acc namespace_semicolon
in
935 | NamespaceUseDeclaration
937 namespace_use_keyword
;
939 namespace_use_clauses
;
940 namespace_use_semicolon
;
942 let acc = f
acc namespace_use_keyword
in
943 let acc = f
acc namespace_use_kind
in
944 let acc = f
acc namespace_use_clauses
in
945 let acc = f
acc namespace_use_semicolon
in
947 | NamespaceGroupUseDeclaration
949 namespace_group_use_keyword
;
950 namespace_group_use_kind
;
951 namespace_group_use_prefix
;
952 namespace_group_use_left_brace
;
953 namespace_group_use_clauses
;
954 namespace_group_use_right_brace
;
955 namespace_group_use_semicolon
;
957 let acc = f
acc namespace_group_use_keyword
in
958 let acc = f
acc namespace_group_use_kind
in
959 let acc = f
acc namespace_group_use_prefix
in
960 let acc = f
acc namespace_group_use_left_brace
in
961 let acc = f
acc namespace_group_use_clauses
in
962 let acc = f
acc namespace_group_use_right_brace
in
963 let acc = f
acc namespace_group_use_semicolon
in
967 namespace_use_clause_kind
;
972 let acc = f
acc namespace_use_clause_kind
in
973 let acc = f
acc namespace_use_name
in
974 let acc = f
acc namespace_use_as
in
975 let acc = f
acc namespace_use_alias
in
977 | FunctionDeclaration
979 function_attribute_spec
;
980 function_declaration_header
;
983 let acc = f
acc function_attribute_spec
in
984 let acc = f
acc function_declaration_header
in
985 let acc = f
acc function_body
in
987 | FunctionDeclarationHeader
992 function_type_parameter_list
;
994 function_parameter_list
;
995 function_right_paren
;
998 function_readonly_return
;
1000 function_where_clause
;
1002 let acc = f
acc function_modifiers
in
1003 let acc = f
acc function_keyword
in
1004 let acc = f
acc function_name
in
1005 let acc = f
acc function_type_parameter_list
in
1006 let acc = f
acc function_left_paren
in
1007 let acc = f
acc function_parameter_list
in
1008 let acc = f
acc function_right_paren
in
1009 let acc = f
acc function_contexts
in
1010 let acc = f
acc function_colon
in
1011 let acc = f
acc function_readonly_return
in
1012 let acc = f
acc function_type
in
1013 let acc = f
acc function_where_clause
in
1016 { contexts_left_bracket
; contexts_types
; contexts_right_bracket
} ->
1017 let acc = f
acc contexts_left_bracket
in
1018 let acc = f
acc contexts_types
in
1019 let acc = f
acc contexts_right_bracket
in
1021 | WhereClause
{ where_clause_keyword
; where_clause_constraints
} ->
1022 let acc = f
acc where_clause_keyword
in
1023 let acc = f
acc where_clause_constraints
in
1027 where_constraint_left_type
;
1028 where_constraint_operator
;
1029 where_constraint_right_type
;
1031 let acc = f
acc where_constraint_left_type
in
1032 let acc = f
acc where_constraint_operator
in
1033 let acc = f
acc where_constraint_right_type
in
1035 | MethodishDeclaration
1037 methodish_attribute
;
1038 methodish_function_decl_header
;
1039 methodish_function_body
;
1040 methodish_semicolon
;
1042 let acc = f
acc methodish_attribute
in
1043 let acc = f
acc methodish_function_decl_header
in
1044 let acc = f
acc methodish_function_body
in
1045 let acc = f
acc methodish_semicolon
in
1047 | MethodishTraitResolution
1049 methodish_trait_attribute
;
1050 methodish_trait_function_decl_header
;
1051 methodish_trait_equal
;
1052 methodish_trait_name
;
1053 methodish_trait_semicolon
;
1055 let acc = f
acc methodish_trait_attribute
in
1056 let acc = f
acc methodish_trait_function_decl_header
in
1057 let acc = f
acc methodish_trait_equal
in
1058 let acc = f
acc methodish_trait_name
in
1059 let acc = f
acc methodish_trait_semicolon
in
1061 | ClassishDeclaration
1068 classish_type_parameters
;
1069 classish_extends_keyword
;
1070 classish_extends_list
;
1071 classish_implements_keyword
;
1072 classish_implements_list
;
1073 classish_where_clause
;
1076 let acc = f
acc classish_attribute
in
1077 let acc = f
acc classish_modifiers
in
1078 let acc = f
acc classish_xhp
in
1079 let acc = f
acc classish_keyword
in
1080 let acc = f
acc classish_name
in
1081 let acc = f
acc classish_type_parameters
in
1082 let acc = f
acc classish_extends_keyword
in
1083 let acc = f
acc classish_extends_list
in
1084 let acc = f
acc classish_implements_keyword
in
1085 let acc = f
acc classish_implements_list
in
1086 let acc = f
acc classish_where_clause
in
1087 let acc = f
acc classish_body
in
1091 classish_body_left_brace
;
1092 classish_body_elements
;
1093 classish_body_right_brace
;
1095 let acc = f
acc classish_body_left_brace
in
1096 let acc = f
acc classish_body_elements
in
1097 let acc = f
acc classish_body_right_brace
in
1099 | TraitUsePrecedenceItem
1101 trait_use_precedence_item_name
;
1102 trait_use_precedence_item_keyword
;
1103 trait_use_precedence_item_removed_names
;
1105 let acc = f
acc trait_use_precedence_item_name
in
1106 let acc = f
acc trait_use_precedence_item_keyword
in
1107 let acc = f
acc trait_use_precedence_item_removed_names
in
1111 trait_use_alias_item_aliasing_name
;
1112 trait_use_alias_item_keyword
;
1113 trait_use_alias_item_modifiers
;
1114 trait_use_alias_item_aliased_name
;
1116 let acc = f
acc trait_use_alias_item_aliasing_name
in
1117 let acc = f
acc trait_use_alias_item_keyword
in
1118 let acc = f
acc trait_use_alias_item_modifiers
in
1119 let acc = f
acc trait_use_alias_item_aliased_name
in
1121 | TraitUseConflictResolution
1123 trait_use_conflict_resolution_keyword
;
1124 trait_use_conflict_resolution_names
;
1125 trait_use_conflict_resolution_left_brace
;
1126 trait_use_conflict_resolution_clauses
;
1127 trait_use_conflict_resolution_right_brace
;
1129 let acc = f
acc trait_use_conflict_resolution_keyword
in
1130 let acc = f
acc trait_use_conflict_resolution_names
in
1131 let acc = f
acc trait_use_conflict_resolution_left_brace
in
1132 let acc = f
acc trait_use_conflict_resolution_clauses
in
1133 let acc = f
acc trait_use_conflict_resolution_right_brace
in
1135 | TraitUse
{ trait_use_keyword
; trait_use_names
; trait_use_semicolon
} ->
1136 let acc = f
acc trait_use_keyword
in
1137 let acc = f
acc trait_use_names
in
1138 let acc = f
acc trait_use_semicolon
in
1141 { require_keyword
; require_kind
; require_name
; require_semicolon
} ->
1142 let acc = f
acc require_keyword
in
1143 let acc = f
acc require_kind
in
1144 let acc = f
acc require_name
in
1145 let acc = f
acc require_semicolon
in
1149 const_attribute_spec
;
1152 const_type_specifier
;
1156 let acc = f
acc const_attribute_spec
in
1157 let acc = f
acc const_modifiers
in
1158 let acc = f
acc const_keyword
in
1159 let acc = f
acc const_type_specifier
in
1160 let acc = f
acc const_declarators
in
1161 let acc = f
acc const_semicolon
in
1163 | ConstantDeclarator
1164 { constant_declarator_name
; constant_declarator_initializer
} ->
1165 let acc = f
acc constant_declarator_name
in
1166 let acc = f
acc constant_declarator_initializer
in
1168 | TypeConstDeclaration
1170 type_const_attribute_spec
;
1171 type_const_modifiers
;
1173 type_const_type_keyword
;
1175 type_const_type_parameters
;
1176 type_const_type_constraint
;
1178 type_const_type_specifier
;
1179 type_const_semicolon
;
1181 let acc = f
acc type_const_attribute_spec
in
1182 let acc = f
acc type_const_modifiers
in
1183 let acc = f
acc type_const_keyword
in
1184 let acc = f
acc type_const_type_keyword
in
1185 let acc = f
acc type_const_name
in
1186 let acc = f
acc type_const_type_parameters
in
1187 let acc = f
acc type_const_type_constraint
in
1188 let acc = f
acc type_const_equal
in
1189 let acc = f
acc type_const_type_specifier
in
1190 let acc = f
acc type_const_semicolon
in
1192 | ContextConstDeclaration
1194 context_const_modifiers
;
1195 context_const_const_keyword
;
1196 context_const_ctx_keyword
;
1198 context_const_type_parameters
;
1199 context_const_constraint
;
1200 context_const_equal
;
1201 context_const_ctx_list
;
1202 context_const_semicolon
;
1204 let acc = f
acc context_const_modifiers
in
1205 let acc = f
acc context_const_const_keyword
in
1206 let acc = f
acc context_const_ctx_keyword
in
1207 let acc = f
acc context_const_name
in
1208 let acc = f
acc context_const_type_parameters
in
1209 let acc = f
acc context_const_constraint
in
1210 let acc = f
acc context_const_equal
in
1211 let acc = f
acc context_const_ctx_list
in
1212 let acc = f
acc context_const_semicolon
in
1214 | DecoratedExpression
1215 { decorated_expression_decorator
; decorated_expression_expression
} ->
1216 let acc = f
acc decorated_expression_decorator
in
1217 let acc = f
acc decorated_expression_expression
in
1219 | ParameterDeclaration
1221 parameter_attribute
;
1222 parameter_visibility
;
1223 parameter_call_convention
;
1227 parameter_default_value
;
1229 let acc = f
acc parameter_attribute
in
1230 let acc = f
acc parameter_visibility
in
1231 let acc = f
acc parameter_call_convention
in
1232 let acc = f
acc parameter_readonly
in
1233 let acc = f
acc parameter_type
in
1234 let acc = f
acc parameter_name
in
1235 let acc = f
acc parameter_default_value
in
1239 variadic_parameter_call_convention
;
1240 variadic_parameter_type
;
1241 variadic_parameter_ellipsis
;
1243 let acc = f
acc variadic_parameter_call_convention
in
1244 let acc = f
acc variadic_parameter_type
in
1245 let acc = f
acc variadic_parameter_ellipsis
in
1247 | OldAttributeSpecification
1249 old_attribute_specification_left_double_angle
;
1250 old_attribute_specification_attributes
;
1251 old_attribute_specification_right_double_angle
;
1253 let acc = f
acc old_attribute_specification_left_double_angle
in
1254 let acc = f
acc old_attribute_specification_attributes
in
1255 let acc = f
acc old_attribute_specification_right_double_angle
in
1257 | AttributeSpecification
{ attribute_specification_attributes
} ->
1258 let acc = f
acc attribute_specification_attributes
in
1260 | Attribute
{ attribute_at
; attribute_attribute_name
} ->
1261 let acc = f
acc attribute_at
in
1262 let acc = f
acc attribute_attribute_name
in
1264 | InclusionExpression
{ inclusion_require
; inclusion_filename
} ->
1265 let acc = f
acc inclusion_require
in
1266 let acc = f
acc inclusion_filename
in
1268 | InclusionDirective
{ inclusion_expression
; inclusion_semicolon
} ->
1269 let acc = f
acc inclusion_expression
in
1270 let acc = f
acc inclusion_semicolon
in
1273 { compound_left_brace
; compound_statements
; compound_right_brace
} ->
1274 let acc = f
acc compound_left_brace
in
1275 let acc = f
acc compound_statements
in
1276 let acc = f
acc compound_right_brace
in
1278 | ExpressionStatement
1279 { expression_statement_expression
; expression_statement_semicolon
} ->
1280 let acc = f
acc expression_statement_expression
in
1281 let acc = f
acc expression_statement_semicolon
in
1283 | MarkupSection
{ markup_hashbang
; markup_suffix
} ->
1284 let acc = f
acc markup_hashbang
in
1285 let acc = f
acc markup_suffix
in
1287 | MarkupSuffix
{ markup_suffix_less_than_question
; markup_suffix_name
} ->
1288 let acc = f
acc markup_suffix_less_than_question
in
1289 let acc = f
acc markup_suffix_name
in
1299 let acc = f
acc unset_keyword
in
1300 let acc = f
acc unset_left_paren
in
1301 let acc = f
acc unset_variables
in
1302 let acc = f
acc unset_right_paren
in
1303 let acc = f
acc unset_semicolon
in
1305 | UsingStatementBlockScoped
1307 using_block_await_keyword
;
1308 using_block_using_keyword
;
1309 using_block_left_paren
;
1310 using_block_expressions
;
1311 using_block_right_paren
;
1314 let acc = f
acc using_block_await_keyword
in
1315 let acc = f
acc using_block_using_keyword
in
1316 let acc = f
acc using_block_left_paren
in
1317 let acc = f
acc using_block_expressions
in
1318 let acc = f
acc using_block_right_paren
in
1319 let acc = f
acc using_block_body
in
1321 | UsingStatementFunctionScoped
1323 using_function_await_keyword
;
1324 using_function_using_keyword
;
1325 using_function_expression
;
1326 using_function_semicolon
;
1328 let acc = f
acc using_function_await_keyword
in
1329 let acc = f
acc using_function_using_keyword
in
1330 let acc = f
acc using_function_expression
in
1331 let acc = f
acc using_function_semicolon
in
1341 let acc = f
acc while_keyword
in
1342 let acc = f
acc while_left_paren
in
1343 let acc = f
acc while_condition
in
1344 let acc = f
acc while_right_paren
in
1345 let acc = f
acc while_body
in
1357 let acc = f
acc if_keyword
in
1358 let acc = f
acc if_left_paren
in
1359 let acc = f
acc if_condition
in
1360 let acc = f
acc if_right_paren
in
1361 let acc = f
acc if_statement
in
1362 let acc = f
acc if_elseif_clauses
in
1363 let acc = f
acc if_else_clause
in
1373 let acc = f
acc elseif_keyword
in
1374 let acc = f
acc elseif_left_paren
in
1375 let acc = f
acc elseif_condition
in
1376 let acc = f
acc elseif_right_paren
in
1377 let acc = f
acc elseif_statement
in
1379 | ElseClause
{ else_keyword
; else_statement
} ->
1380 let acc = f
acc else_keyword
in
1381 let acc = f
acc else_statement
in
1386 try_compound_statement
;
1390 let acc = f
acc try_keyword
in
1391 let acc = f
acc try_compound_statement
in
1392 let acc = f
acc try_catch_clauses
in
1393 let acc = f
acc try_finally_clause
in
1404 let acc = f
acc catch_keyword
in
1405 let acc = f
acc catch_left_paren
in
1406 let acc = f
acc catch_type
in
1407 let acc = f
acc catch_variable
in
1408 let acc = f
acc catch_right_paren
in
1409 let acc = f
acc catch_body
in
1411 | FinallyClause
{ finally_keyword
; finally_body
} ->
1412 let acc = f
acc finally_keyword
in
1413 let acc = f
acc finally_body
in
1425 let acc = f
acc do_keyword
in
1426 let acc = f
acc do_body
in
1427 let acc = f
acc do_while_keyword
in
1428 let acc = f
acc do_left_paren
in
1429 let acc = f
acc do_condition
in
1430 let acc = f
acc do_right_paren
in
1431 let acc = f
acc do_semicolon
in
1438 for_first_semicolon
;
1440 for_second_semicolon
;
1445 let acc = f
acc for_keyword
in
1446 let acc = f
acc for_left_paren
in
1447 let acc = f
acc for_initializer
in
1448 let acc = f
acc for_first_semicolon
in
1449 let acc = f
acc for_control
in
1450 let acc = f
acc for_second_semicolon
in
1451 let acc = f
acc for_end_of_loop
in
1452 let acc = f
acc for_right_paren
in
1453 let acc = f
acc for_body
in
1460 foreach_await_keyword
;
1465 foreach_right_paren
;
1468 let acc = f
acc foreach_keyword
in
1469 let acc = f
acc foreach_left_paren
in
1470 let acc = f
acc foreach_collection
in
1471 let acc = f
acc foreach_await_keyword
in
1472 let acc = f
acc foreach_as
in
1473 let acc = f
acc foreach_key
in
1474 let acc = f
acc foreach_arrow
in
1475 let acc = f
acc foreach_value
in
1476 let acc = f
acc foreach_right_paren
in
1477 let acc = f
acc foreach_body
in
1489 let acc = f
acc switch_keyword
in
1490 let acc = f
acc switch_left_paren
in
1491 let acc = f
acc switch_expression
in
1492 let acc = f
acc switch_right_paren
in
1493 let acc = f
acc switch_left_brace
in
1494 let acc = f
acc switch_sections
in
1495 let acc = f
acc switch_right_brace
in
1499 switch_section_labels
;
1500 switch_section_statements
;
1501 switch_section_fallthrough
;
1503 let acc = f
acc switch_section_labels
in
1504 let acc = f
acc switch_section_statements
in
1505 let acc = f
acc switch_section_fallthrough
in
1507 | SwitchFallthrough
{ fallthrough_keyword
; fallthrough_semicolon
} ->
1508 let acc = f
acc fallthrough_keyword
in
1509 let acc = f
acc fallthrough_semicolon
in
1511 | CaseLabel
{ case_keyword
; case_expression
; case_colon
} ->
1512 let acc = f
acc case_keyword
in
1513 let acc = f
acc case_expression
in
1514 let acc = f
acc case_colon
in
1516 | DefaultLabel
{ default_keyword
; default_colon
} ->
1517 let acc = f
acc default_keyword
in
1518 let acc = f
acc default_colon
in
1520 | ReturnStatement
{ return_keyword
; return_expression
; return_semicolon
}
1522 let acc = f
acc return_keyword
in
1523 let acc = f
acc return_expression
in
1524 let acc = f
acc return_semicolon
in
1526 | YieldBreakStatement
1527 { yield_break_keyword
; yield_break_break
; yield_break_semicolon
} ->
1528 let acc = f
acc yield_break_keyword
in
1529 let acc = f
acc yield_break_break
in
1530 let acc = f
acc yield_break_semicolon
in
1532 | ThrowStatement
{ throw_keyword
; throw_expression
; throw_semicolon
} ->
1533 let acc = f
acc throw_keyword
in
1534 let acc = f
acc throw_expression
in
1535 let acc = f
acc throw_semicolon
in
1537 | BreakStatement
{ break_keyword
; break_semicolon
} ->
1538 let acc = f
acc break_keyword
in
1539 let acc = f
acc break_semicolon
in
1541 | ContinueStatement
{ continue_keyword
; continue_semicolon
} ->
1542 let acc = f
acc continue_keyword
in
1543 let acc = f
acc continue_semicolon
in
1545 | EchoStatement
{ echo_keyword
; echo_expressions
; echo_semicolon
} ->
1546 let acc = f
acc echo_keyword
in
1547 let acc = f
acc echo_expressions
in
1548 let acc = f
acc echo_semicolon
in
1550 | ConcurrentStatement
{ concurrent_keyword
; concurrent_statement
} ->
1551 let acc = f
acc concurrent_keyword
in
1552 let acc = f
acc concurrent_statement
in
1554 | SimpleInitializer
{ simple_initializer_equal
; simple_initializer_value
}
1556 let acc = f
acc simple_initializer_equal
in
1557 let acc = f
acc simple_initializer_value
in
1561 anonymous_class_class_keyword
;
1562 anonymous_class_left_paren
;
1563 anonymous_class_argument_list
;
1564 anonymous_class_right_paren
;
1565 anonymous_class_extends_keyword
;
1566 anonymous_class_extends_list
;
1567 anonymous_class_implements_keyword
;
1568 anonymous_class_implements_list
;
1569 anonymous_class_body
;
1571 let acc = f
acc anonymous_class_class_keyword
in
1572 let acc = f
acc anonymous_class_left_paren
in
1573 let acc = f
acc anonymous_class_argument_list
in
1574 let acc = f
acc anonymous_class_right_paren
in
1575 let acc = f
acc anonymous_class_extends_keyword
in
1576 let acc = f
acc anonymous_class_extends_list
in
1577 let acc = f
acc anonymous_class_implements_keyword
in
1578 let acc = f
acc anonymous_class_implements_list
in
1579 let acc = f
acc anonymous_class_body
in
1583 anonymous_attribute_spec
;
1584 anonymous_async_keyword
;
1585 anonymous_function_keyword
;
1586 anonymous_left_paren
;
1587 anonymous_parameters
;
1588 anonymous_right_paren
;
1591 anonymous_readonly_return
;
1596 let acc = f
acc anonymous_attribute_spec
in
1597 let acc = f
acc anonymous_async_keyword
in
1598 let acc = f
acc anonymous_function_keyword
in
1599 let acc = f
acc anonymous_left_paren
in
1600 let acc = f
acc anonymous_parameters
in
1601 let acc = f
acc anonymous_right_paren
in
1602 let acc = f
acc anonymous_ctx_list
in
1603 let acc = f
acc anonymous_colon
in
1604 let acc = f
acc anonymous_readonly_return
in
1605 let acc = f
acc anonymous_type
in
1606 let acc = f
acc anonymous_use
in
1607 let acc = f
acc anonymous_body
in
1609 | AnonymousFunctionUseClause
1611 anonymous_use_keyword
;
1612 anonymous_use_left_paren
;
1613 anonymous_use_variables
;
1614 anonymous_use_right_paren
;
1616 let acc = f
acc anonymous_use_keyword
in
1617 let acc = f
acc anonymous_use_left_paren
in
1618 let acc = f
acc anonymous_use_variables
in
1619 let acc = f
acc anonymous_use_right_paren
in
1623 lambda_attribute_spec
;
1629 let acc = f
acc lambda_attribute_spec
in
1630 let acc = f
acc lambda_async
in
1631 let acc = f
acc lambda_signature
in
1632 let acc = f
acc lambda_arrow
in
1633 let acc = f
acc lambda_body
in
1642 lambda_readonly_return
;
1645 let acc = f
acc lambda_left_paren
in
1646 let acc = f
acc lambda_parameters
in
1647 let acc = f
acc lambda_right_paren
in
1648 let acc = f
acc lambda_contexts
in
1649 let acc = f
acc lambda_colon
in
1650 let acc = f
acc lambda_readonly_return
in
1651 let acc = f
acc lambda_type
in
1654 { cast_left_paren
; cast_type
; cast_right_paren
; cast_operand
} ->
1655 let acc = f
acc cast_left_paren
in
1656 let acc = f
acc cast_type
in
1657 let acc = f
acc cast_right_paren
in
1658 let acc = f
acc cast_operand
in
1660 | ScopeResolutionExpression
1662 scope_resolution_qualifier
;
1663 scope_resolution_operator
;
1664 scope_resolution_name
;
1666 let acc = f
acc scope_resolution_qualifier
in
1667 let acc = f
acc scope_resolution_operator
in
1668 let acc = f
acc scope_resolution_name
in
1670 | MemberSelectionExpression
1671 { member_object
; member_operator
; member_name
} ->
1672 let acc = f
acc member_object
in
1673 let acc = f
acc member_operator
in
1674 let acc = f
acc member_name
in
1676 | SafeMemberSelectionExpression
1677 { safe_member_object
; safe_member_operator
; safe_member_name
} ->
1678 let acc = f
acc safe_member_object
in
1679 let acc = f
acc safe_member_operator
in
1680 let acc = f
acc safe_member_name
in
1682 | EmbeddedMemberSelectionExpression
1684 embedded_member_object
;
1685 embedded_member_operator
;
1686 embedded_member_name
;
1688 let acc = f
acc embedded_member_object
in
1689 let acc = f
acc embedded_member_operator
in
1690 let acc = f
acc embedded_member_name
in
1692 | YieldExpression
{ yield_keyword
; yield_operand
} ->
1693 let acc = f
acc yield_keyword
in
1694 let acc = f
acc yield_operand
in
1696 | PrefixUnaryExpression
{ prefix_unary_operator
; prefix_unary_operand
} ->
1697 let acc = f
acc prefix_unary_operator
in
1698 let acc = f
acc prefix_unary_operand
in
1700 | PostfixUnaryExpression
{ postfix_unary_operand
; postfix_unary_operator
}
1702 let acc = f
acc postfix_unary_operand
in
1703 let acc = f
acc postfix_unary_operator
in
1706 { binary_left_operand
; binary_operator
; binary_right_operand
} ->
1707 let acc = f
acc binary_left_operand
in
1708 let acc = f
acc binary_operator
in
1709 let acc = f
acc binary_right_operand
in
1711 | IsExpression
{ is_left_operand
; is_operator
; is_right_operand
} ->
1712 let acc = f
acc is_left_operand
in
1713 let acc = f
acc is_operator
in
1714 let acc = f
acc is_right_operand
in
1716 | AsExpression
{ as_left_operand
; as_operator
; as_right_operand
} ->
1717 let acc = f
acc as_left_operand
in
1718 let acc = f
acc as_operator
in
1719 let acc = f
acc as_right_operand
in
1721 | NullableAsExpression
1723 nullable_as_left_operand
;
1724 nullable_as_operator
;
1725 nullable_as_right_operand
;
1727 let acc = f
acc nullable_as_left_operand
in
1728 let acc = f
acc nullable_as_operator
in
1729 let acc = f
acc nullable_as_right_operand
in
1732 { upcast_left_operand
; upcast_operator
; upcast_right_operand
} ->
1733 let acc = f
acc upcast_left_operand
in
1734 let acc = f
acc upcast_operator
in
1735 let acc = f
acc upcast_right_operand
in
1737 | ConditionalExpression
1740 conditional_question
;
1741 conditional_consequence
;
1743 conditional_alternative
;
1745 let acc = f
acc conditional_test
in
1746 let acc = f
acc conditional_question
in
1747 let acc = f
acc conditional_consequence
in
1748 let acc = f
acc conditional_colon
in
1749 let acc = f
acc conditional_alternative
in
1752 { eval_keyword
; eval_left_paren
; eval_argument
; eval_right_paren
} ->
1753 let acc = f
acc eval_keyword
in
1754 let acc = f
acc eval_left_paren
in
1755 let acc = f
acc eval_argument
in
1756 let acc = f
acc eval_right_paren
in
1762 isset_argument_list
;
1765 let acc = f
acc isset_keyword
in
1766 let acc = f
acc isset_left_paren
in
1767 let acc = f
acc isset_argument_list
in
1768 let acc = f
acc isset_right_paren
in
1770 | FunctionCallExpression
1772 function_call_receiver
;
1773 function_call_type_args
;
1774 function_call_enum_class_label
;
1775 function_call_left_paren
;
1776 function_call_argument_list
;
1777 function_call_right_paren
;
1779 let acc = f
acc function_call_receiver
in
1780 let acc = f
acc function_call_type_args
in
1781 let acc = f
acc function_call_enum_class_label
in
1782 let acc = f
acc function_call_left_paren
in
1783 let acc = f
acc function_call_argument_list
in
1784 let acc = f
acc function_call_right_paren
in
1786 | FunctionPointerExpression
1787 { function_pointer_receiver
; function_pointer_type_args
} ->
1788 let acc = f
acc function_pointer_receiver
in
1789 let acc = f
acc function_pointer_type_args
in
1791 | ParenthesizedExpression
1793 parenthesized_expression_left_paren
;
1794 parenthesized_expression_expression
;
1795 parenthesized_expression_right_paren
;
1797 let acc = f
acc parenthesized_expression_left_paren
in
1798 let acc = f
acc parenthesized_expression_expression
in
1799 let acc = f
acc parenthesized_expression_right_paren
in
1803 braced_expression_left_brace
;
1804 braced_expression_expression
;
1805 braced_expression_right_brace
;
1807 let acc = f
acc braced_expression_left_brace
in
1808 let acc = f
acc braced_expression_expression
in
1809 let acc = f
acc braced_expression_right_brace
in
1811 | ETSpliceExpression
1813 et_splice_expression_dollar
;
1814 et_splice_expression_left_brace
;
1815 et_splice_expression_expression
;
1816 et_splice_expression_right_brace
;
1818 let acc = f
acc et_splice_expression_dollar
in
1819 let acc = f
acc et_splice_expression_left_brace
in
1820 let acc = f
acc et_splice_expression_expression
in
1821 let acc = f
acc et_splice_expression_right_brace
in
1823 | EmbeddedBracedExpression
1825 embedded_braced_expression_left_brace
;
1826 embedded_braced_expression_expression
;
1827 embedded_braced_expression_right_brace
;
1829 let acc = f
acc embedded_braced_expression_left_brace
in
1830 let acc = f
acc embedded_braced_expression_expression
in
1831 let acc = f
acc embedded_braced_expression_right_brace
in
1834 { list_keyword
; list_left_paren
; list_members
; list_right_paren
} ->
1835 let acc = f
acc list_keyword
in
1836 let acc = f
acc list_left_paren
in
1837 let acc = f
acc list_members
in
1838 let acc = f
acc list_right_paren
in
1840 | CollectionLiteralExpression
1842 collection_literal_name
;
1843 collection_literal_left_brace
;
1844 collection_literal_initializers
;
1845 collection_literal_right_brace
;
1847 let acc = f
acc collection_literal_name
in
1848 let acc = f
acc collection_literal_left_brace
in
1849 let acc = f
acc collection_literal_initializers
in
1850 let acc = f
acc collection_literal_right_brace
in
1852 | ObjectCreationExpression
1853 { object_creation_new_keyword
; object_creation_object
} ->
1854 let acc = f
acc object_creation_new_keyword
in
1855 let acc = f
acc object_creation_object
in
1859 constructor_call_type
;
1860 constructor_call_left_paren
;
1861 constructor_call_argument_list
;
1862 constructor_call_right_paren
;
1864 let acc = f
acc constructor_call_type
in
1865 let acc = f
acc constructor_call_left_paren
in
1866 let acc = f
acc constructor_call_argument_list
in
1867 let acc = f
acc constructor_call_right_paren
in
1869 | DarrayIntrinsicExpression
1871 darray_intrinsic_keyword
;
1872 darray_intrinsic_explicit_type
;
1873 darray_intrinsic_left_bracket
;
1874 darray_intrinsic_members
;
1875 darray_intrinsic_right_bracket
;
1877 let acc = f
acc darray_intrinsic_keyword
in
1878 let acc = f
acc darray_intrinsic_explicit_type
in
1879 let acc = f
acc darray_intrinsic_left_bracket
in
1880 let acc = f
acc darray_intrinsic_members
in
1881 let acc = f
acc darray_intrinsic_right_bracket
in
1883 | DictionaryIntrinsicExpression
1885 dictionary_intrinsic_keyword
;
1886 dictionary_intrinsic_explicit_type
;
1887 dictionary_intrinsic_left_bracket
;
1888 dictionary_intrinsic_members
;
1889 dictionary_intrinsic_right_bracket
;
1891 let acc = f
acc dictionary_intrinsic_keyword
in
1892 let acc = f
acc dictionary_intrinsic_explicit_type
in
1893 let acc = f
acc dictionary_intrinsic_left_bracket
in
1894 let acc = f
acc dictionary_intrinsic_members
in
1895 let acc = f
acc dictionary_intrinsic_right_bracket
in
1897 | KeysetIntrinsicExpression
1899 keyset_intrinsic_keyword
;
1900 keyset_intrinsic_explicit_type
;
1901 keyset_intrinsic_left_bracket
;
1902 keyset_intrinsic_members
;
1903 keyset_intrinsic_right_bracket
;
1905 let acc = f
acc keyset_intrinsic_keyword
in
1906 let acc = f
acc keyset_intrinsic_explicit_type
in
1907 let acc = f
acc keyset_intrinsic_left_bracket
in
1908 let acc = f
acc keyset_intrinsic_members
in
1909 let acc = f
acc keyset_intrinsic_right_bracket
in
1911 | VarrayIntrinsicExpression
1913 varray_intrinsic_keyword
;
1914 varray_intrinsic_explicit_type
;
1915 varray_intrinsic_left_bracket
;
1916 varray_intrinsic_members
;
1917 varray_intrinsic_right_bracket
;
1919 let acc = f
acc varray_intrinsic_keyword
in
1920 let acc = f
acc varray_intrinsic_explicit_type
in
1921 let acc = f
acc varray_intrinsic_left_bracket
in
1922 let acc = f
acc varray_intrinsic_members
in
1923 let acc = f
acc varray_intrinsic_right_bracket
in
1925 | VectorIntrinsicExpression
1927 vector_intrinsic_keyword
;
1928 vector_intrinsic_explicit_type
;
1929 vector_intrinsic_left_bracket
;
1930 vector_intrinsic_members
;
1931 vector_intrinsic_right_bracket
;
1933 let acc = f
acc vector_intrinsic_keyword
in
1934 let acc = f
acc vector_intrinsic_explicit_type
in
1935 let acc = f
acc vector_intrinsic_left_bracket
in
1936 let acc = f
acc vector_intrinsic_members
in
1937 let acc = f
acc vector_intrinsic_right_bracket
in
1939 | ElementInitializer
{ element_key
; element_arrow
; element_value
} ->
1940 let acc = f
acc element_key
in
1941 let acc = f
acc element_arrow
in
1942 let acc = f
acc element_value
in
1944 | SubscriptExpression
1947 subscript_left_bracket
;
1949 subscript_right_bracket
;
1951 let acc = f
acc subscript_receiver
in
1952 let acc = f
acc subscript_left_bracket
in
1953 let acc = f
acc subscript_index
in
1954 let acc = f
acc subscript_right_bracket
in
1956 | EmbeddedSubscriptExpression
1958 embedded_subscript_receiver
;
1959 embedded_subscript_left_bracket
;
1960 embedded_subscript_index
;
1961 embedded_subscript_right_bracket
;
1963 let acc = f
acc embedded_subscript_receiver
in
1964 let acc = f
acc embedded_subscript_left_bracket
in
1965 let acc = f
acc embedded_subscript_index
in
1966 let acc = f
acc embedded_subscript_right_bracket
in
1968 | AwaitableCreationExpression
1970 awaitable_attribute_spec
;
1972 awaitable_compound_statement
;
1974 let acc = f
acc awaitable_attribute_spec
in
1975 let acc = f
acc awaitable_async
in
1976 let acc = f
acc awaitable_compound_statement
in
1978 | XHPChildrenDeclaration
1980 xhp_children_keyword
;
1981 xhp_children_expression
;
1982 xhp_children_semicolon
;
1984 let acc = f
acc xhp_children_keyword
in
1985 let acc = f
acc xhp_children_expression
in
1986 let acc = f
acc xhp_children_semicolon
in
1988 | XHPChildrenParenthesizedList
1990 xhp_children_list_left_paren
;
1991 xhp_children_list_xhp_children
;
1992 xhp_children_list_right_paren
;
1994 let acc = f
acc xhp_children_list_left_paren
in
1995 let acc = f
acc xhp_children_list_xhp_children
in
1996 let acc = f
acc xhp_children_list_right_paren
in
1998 | XHPCategoryDeclaration
2000 xhp_category_keyword
;
2001 xhp_category_categories
;
2002 xhp_category_semicolon
;
2004 let acc = f
acc xhp_category_keyword
in
2005 let acc = f
acc xhp_category_categories
in
2006 let acc = f
acc xhp_category_semicolon
in
2012 xhp_enum_left_brace
;
2014 xhp_enum_right_brace
;
2016 let acc = f
acc xhp_enum_like
in
2017 let acc = f
acc xhp_enum_keyword
in
2018 let acc = f
acc xhp_enum_left_brace
in
2019 let acc = f
acc xhp_enum_values
in
2020 let acc = f
acc xhp_enum_right_brace
in
2022 | XHPLateinit
{ xhp_lateinit_at
; xhp_lateinit_keyword
} ->
2023 let acc = f
acc xhp_lateinit_at
in
2024 let acc = f
acc xhp_lateinit_keyword
in
2026 | XHPRequired
{ xhp_required_at
; xhp_required_keyword
} ->
2027 let acc = f
acc xhp_required_at
in
2028 let acc = f
acc xhp_required_keyword
in
2030 | XHPClassAttributeDeclaration
2032 xhp_attribute_keyword
;
2033 xhp_attribute_attributes
;
2034 xhp_attribute_semicolon
;
2036 let acc = f
acc xhp_attribute_keyword
in
2037 let acc = f
acc xhp_attribute_attributes
in
2038 let acc = f
acc xhp_attribute_semicolon
in
2042 xhp_attribute_decl_type
;
2043 xhp_attribute_decl_name
;
2044 xhp_attribute_decl_initializer
;
2045 xhp_attribute_decl_required
;
2047 let acc = f
acc xhp_attribute_decl_type
in
2048 let acc = f
acc xhp_attribute_decl_name
in
2049 let acc = f
acc xhp_attribute_decl_initializer
in
2050 let acc = f
acc xhp_attribute_decl_required
in
2052 | XHPSimpleClassAttribute
{ xhp_simple_class_attribute_type
} ->
2053 let acc = f
acc xhp_simple_class_attribute_type
in
2055 | XHPSimpleAttribute
2057 xhp_simple_attribute_name
;
2058 xhp_simple_attribute_equal
;
2059 xhp_simple_attribute_expression
;
2061 let acc = f
acc xhp_simple_attribute_name
in
2062 let acc = f
acc xhp_simple_attribute_equal
in
2063 let acc = f
acc xhp_simple_attribute_expression
in
2065 | XHPSpreadAttribute
2067 xhp_spread_attribute_left_brace
;
2068 xhp_spread_attribute_spread_operator
;
2069 xhp_spread_attribute_expression
;
2070 xhp_spread_attribute_right_brace
;
2072 let acc = f
acc xhp_spread_attribute_left_brace
in
2073 let acc = f
acc xhp_spread_attribute_spread_operator
in
2074 let acc = f
acc xhp_spread_attribute_expression
in
2075 let acc = f
acc xhp_spread_attribute_right_brace
in
2079 xhp_open_left_angle
;
2081 xhp_open_attributes
;
2082 xhp_open_right_angle
;
2084 let acc = f
acc xhp_open_left_angle
in
2085 let acc = f
acc xhp_open_name
in
2086 let acc = f
acc xhp_open_attributes
in
2087 let acc = f
acc xhp_open_right_angle
in
2089 | XHPExpression
{ xhp_open
; xhp_body
; xhp_close
} ->
2090 let acc = f
acc xhp_open
in
2091 let acc = f
acc xhp_body
in
2092 let acc = f
acc xhp_close
in
2094 | XHPClose
{ xhp_close_left_angle
; xhp_close_name
; xhp_close_right_angle
}
2096 let acc = f
acc xhp_close_left_angle
in
2097 let acc = f
acc xhp_close_name
in
2098 let acc = f
acc xhp_close_right_angle
in
2102 type_constant_left_type
;
2103 type_constant_separator
;
2104 type_constant_right_type
;
2106 let acc = f
acc type_constant_left_type
in
2107 let acc = f
acc type_constant_separator
in
2108 let acc = f
acc type_constant_right_type
in
2110 | VectorTypeSpecifier
2112 vector_type_keyword
;
2113 vector_type_left_angle
;
2115 vector_type_trailing_comma
;
2116 vector_type_right_angle
;
2118 let acc = f
acc vector_type_keyword
in
2119 let acc = f
acc vector_type_left_angle
in
2120 let acc = f
acc vector_type_type
in
2121 let acc = f
acc vector_type_trailing_comma
in
2122 let acc = f
acc vector_type_right_angle
in
2124 | KeysetTypeSpecifier
2126 keyset_type_keyword
;
2127 keyset_type_left_angle
;
2129 keyset_type_trailing_comma
;
2130 keyset_type_right_angle
;
2132 let acc = f
acc keyset_type_keyword
in
2133 let acc = f
acc keyset_type_left_angle
in
2134 let acc = f
acc keyset_type_type
in
2135 let acc = f
acc keyset_type_trailing_comma
in
2136 let acc = f
acc keyset_type_right_angle
in
2138 | TupleTypeExplicitSpecifier
2141 tuple_type_left_angle
;
2143 tuple_type_right_angle
;
2145 let acc = f
acc tuple_type_keyword
in
2146 let acc = f
acc tuple_type_left_angle
in
2147 let acc = f
acc tuple_type_types
in
2148 let acc = f
acc tuple_type_right_angle
in
2150 | VarrayTypeSpecifier
2155 varray_trailing_comma
;
2158 let acc = f
acc varray_keyword
in
2159 let acc = f
acc varray_left_angle
in
2160 let acc = f
acc varray_type
in
2161 let acc = f
acc varray_trailing_comma
in
2162 let acc = f
acc varray_right_angle
in
2164 | FunctionCtxTypeSpecifier
2165 { function_ctx_type_keyword
; function_ctx_type_variable
} ->
2166 let acc = f
acc function_ctx_type_keyword
in
2167 let acc = f
acc function_ctx_type_variable
in
2171 type_attribute_spec
;
2178 let acc = f
acc type_attribute_spec
in
2179 let acc = f
acc type_reified
in
2180 let acc = f
acc type_variance
in
2181 let acc = f
acc type_name
in
2182 let acc = f
acc type_param_params
in
2183 let acc = f
acc type_constraints
in
2185 | TypeConstraint
{ constraint_keyword
; constraint_type
} ->
2186 let acc = f
acc constraint_keyword
in
2187 let acc = f
acc constraint_type
in
2189 | ContextConstraint
{ ctx_constraint_keyword
; ctx_constraint_ctx_list
} ->
2190 let acc = f
acc ctx_constraint_keyword
in
2191 let acc = f
acc ctx_constraint_ctx_list
in
2193 | DarrayTypeSpecifier
2200 darray_trailing_comma
;
2203 let acc = f
acc darray_keyword
in
2204 let acc = f
acc darray_left_angle
in
2205 let acc = f
acc darray_key
in
2206 let acc = f
acc darray_comma
in
2207 let acc = f
acc darray_value
in
2208 let acc = f
acc darray_trailing_comma
in
2209 let acc = f
acc darray_right_angle
in
2211 | DictionaryTypeSpecifier
2213 dictionary_type_keyword
;
2214 dictionary_type_left_angle
;
2215 dictionary_type_members
;
2216 dictionary_type_right_angle
;
2218 let acc = f
acc dictionary_type_keyword
in
2219 let acc = f
acc dictionary_type_left_angle
in
2220 let acc = f
acc dictionary_type_members
in
2221 let acc = f
acc dictionary_type_right_angle
in
2223 | ClosureTypeSpecifier
2225 closure_outer_left_paren
;
2226 closure_readonly_keyword
;
2227 closure_function_keyword
;
2228 closure_inner_left_paren
;
2229 closure_parameter_list
;
2230 closure_inner_right_paren
;
2233 closure_readonly_return
;
2234 closure_return_type
;
2235 closure_outer_right_paren
;
2237 let acc = f
acc closure_outer_left_paren
in
2238 let acc = f
acc closure_readonly_keyword
in
2239 let acc = f
acc closure_function_keyword
in
2240 let acc = f
acc closure_inner_left_paren
in
2241 let acc = f
acc closure_parameter_list
in
2242 let acc = f
acc closure_inner_right_paren
in
2243 let acc = f
acc closure_contexts
in
2244 let acc = f
acc closure_colon
in
2245 let acc = f
acc closure_readonly_return
in
2246 let acc = f
acc closure_return_type
in
2247 let acc = f
acc closure_outer_right_paren
in
2249 | ClosureParameterTypeSpecifier
2251 closure_parameter_call_convention
;
2252 closure_parameter_readonly
;
2253 closure_parameter_type
;
2255 let acc = f
acc closure_parameter_call_convention
in
2256 let acc = f
acc closure_parameter_readonly
in
2257 let acc = f
acc closure_parameter_type
in
2259 | ClassnameTypeSpecifier
2262 classname_left_angle
;
2264 classname_trailing_comma
;
2265 classname_right_angle
;
2267 let acc = f
acc classname_keyword
in
2268 let acc = f
acc classname_left_angle
in
2269 let acc = f
acc classname_type
in
2270 let acc = f
acc classname_trailing_comma
in
2271 let acc = f
acc classname_right_angle
in
2273 | FieldSpecifier
{ field_question
; field_name
; field_arrow
; field_type
}
2275 let acc = f
acc field_question
in
2276 let acc = f
acc field_name
in
2277 let acc = f
acc field_arrow
in
2278 let acc = f
acc field_type
in
2282 field_initializer_name
;
2283 field_initializer_arrow
;
2284 field_initializer_value
;
2286 let acc = f
acc field_initializer_name
in
2287 let acc = f
acc field_initializer_arrow
in
2288 let acc = f
acc field_initializer_value
in
2290 | ShapeTypeSpecifier
2293 shape_type_left_paren
;
2295 shape_type_ellipsis
;
2296 shape_type_right_paren
;
2298 let acc = f
acc shape_type_keyword
in
2299 let acc = f
acc shape_type_left_paren
in
2300 let acc = f
acc shape_type_fields
in
2301 let acc = f
acc shape_type_ellipsis
in
2302 let acc = f
acc shape_type_right_paren
in
2306 shape_expression_keyword
;
2307 shape_expression_left_paren
;
2308 shape_expression_fields
;
2309 shape_expression_right_paren
;
2311 let acc = f
acc shape_expression_keyword
in
2312 let acc = f
acc shape_expression_left_paren
in
2313 let acc = f
acc shape_expression_fields
in
2314 let acc = f
acc shape_expression_right_paren
in
2318 tuple_expression_keyword
;
2319 tuple_expression_left_paren
;
2320 tuple_expression_items
;
2321 tuple_expression_right_paren
;
2323 let acc = f
acc tuple_expression_keyword
in
2324 let acc = f
acc tuple_expression_left_paren
in
2325 let acc = f
acc tuple_expression_items
in
2326 let acc = f
acc tuple_expression_right_paren
in
2328 | GenericTypeSpecifier
{ generic_class_type
; generic_argument_list
} ->
2329 let acc = f
acc generic_class_type
in
2330 let acc = f
acc generic_argument_list
in
2332 | NullableTypeSpecifier
{ nullable_question
; nullable_type
} ->
2333 let acc = f
acc nullable_question
in
2334 let acc = f
acc nullable_type
in
2336 | LikeTypeSpecifier
{ like_tilde
; like_type
} ->
2337 let acc = f
acc like_tilde
in
2338 let acc = f
acc like_type
in
2340 | SoftTypeSpecifier
{ soft_at
; soft_type
} ->
2341 let acc = f
acc soft_at
in
2342 let acc = f
acc soft_type
in
2344 | AttributizedSpecifier
2345 { attributized_specifier_attribute_spec
; attributized_specifier_type
}
2347 let acc = f
acc attributized_specifier_attribute_spec
in
2348 let acc = f
acc attributized_specifier_type
in
2350 | ReifiedTypeArgument
2351 { reified_type_argument_reified
; reified_type_argument_type
} ->
2352 let acc = f
acc reified_type_argument_reified
in
2353 let acc = f
acc reified_type_argument_type
in
2357 type_arguments_left_angle
;
2358 type_arguments_types
;
2359 type_arguments_right_angle
;
2361 let acc = f
acc type_arguments_left_angle
in
2362 let acc = f
acc type_arguments_types
in
2363 let acc = f
acc type_arguments_right_angle
in
2367 type_parameters_left_angle
;
2368 type_parameters_parameters
;
2369 type_parameters_right_angle
;
2371 let acc = f
acc type_parameters_left_angle
in
2372 let acc = f
acc type_parameters_parameters
in
2373 let acc = f
acc type_parameters_right_angle
in
2375 | TupleTypeSpecifier
{ tuple_left_paren
; tuple_types
; tuple_right_paren
}
2377 let acc = f
acc tuple_left_paren
in
2378 let acc = f
acc tuple_types
in
2379 let acc = f
acc tuple_right_paren
in
2381 | UnionTypeSpecifier
{ union_left_paren
; union_types
; union_right_paren
}
2383 let acc = f
acc union_left_paren
in
2384 let acc = f
acc union_types
in
2385 let acc = f
acc union_right_paren
in
2387 | IntersectionTypeSpecifier
2389 intersection_left_paren
;
2391 intersection_right_paren
;
2393 let acc = f
acc intersection_left_paren
in
2394 let acc = f
acc intersection_types
in
2395 let acc = f
acc intersection_right_paren
in
2397 | ErrorSyntax
{ error_error
} ->
2398 let acc = f
acc error_error
in
2400 | ListItem
{ list_item
; list_separator
} ->
2401 let acc = f
acc list_item
in
2402 let acc = f
acc list_separator
in
2404 | EnumClassLabelExpression
2406 enum_class_label_qualifier
;
2407 enum_class_label_hash
;
2408 enum_class_label_expression
;
2410 let acc = f
acc enum_class_label_qualifier
in
2411 let acc = f
acc enum_class_label_hash
in
2412 let acc = f
acc enum_class_label_expression
in
2415 (* The order that the children are returned in should match the order
2416 that they appear in the source text *)
2417 let children_from_syntax s
=
2422 | EndOfFile
{ end_of_file_token
} -> [end_of_file_token
]
2423 | Script
{ script_declarations
} -> [script_declarations
]
2424 | QualifiedName
{ qualified_name_parts
} -> [qualified_name_parts
]
2425 | SimpleTypeSpecifier
{ simple_type_specifier
} -> [simple_type_specifier
]
2426 | LiteralExpression
{ literal_expression
} -> [literal_expression
]
2427 | PrefixedStringExpression
{ prefixed_string_name
; prefixed_string_str
}
2429 [prefixed_string_name
; prefixed_string_str
]
2430 | PrefixedCodeExpression
2432 prefixed_code_prefix
;
2433 prefixed_code_left_backtick
;
2434 prefixed_code_expression
;
2435 prefixed_code_right_backtick
;
2438 prefixed_code_prefix
;
2439 prefixed_code_left_backtick
;
2440 prefixed_code_expression
;
2441 prefixed_code_right_backtick
;
2443 | VariableExpression
{ variable_expression
} -> [variable_expression
]
2444 | PipeVariableExpression
{ pipe_variable_expression
} ->
2445 [pipe_variable_expression
]
2446 | FileAttributeSpecification
2448 file_attribute_specification_left_double_angle
;
2449 file_attribute_specification_keyword
;
2450 file_attribute_specification_colon
;
2451 file_attribute_specification_attributes
;
2452 file_attribute_specification_right_double_angle
;
2455 file_attribute_specification_left_double_angle
;
2456 file_attribute_specification_keyword
;
2457 file_attribute_specification_colon
;
2458 file_attribute_specification_attributes
;
2459 file_attribute_specification_right_double_angle
;
2463 enum_attribute_spec
;
2475 enum_attribute_spec
;
2486 | EnumUse
{ enum_use_keyword
; enum_use_names
; enum_use_semicolon
} ->
2487 [enum_use_keyword
; enum_use_names
; enum_use_semicolon
]
2493 enumerator_semicolon
;
2499 enumerator_semicolon
;
2501 | EnumClassDeclaration
2503 enum_class_attribute_spec
;
2504 enum_class_modifiers
;
2505 enum_class_enum_keyword
;
2506 enum_class_class_keyword
;
2511 enum_class_extends_list
;
2512 enum_class_left_brace
;
2513 enum_class_elements
;
2514 enum_class_right_brace
;
2517 enum_class_attribute_spec
;
2518 enum_class_modifiers
;
2519 enum_class_enum_keyword
;
2520 enum_class_class_keyword
;
2525 enum_class_extends_list
;
2526 enum_class_left_brace
;
2527 enum_class_elements
;
2528 enum_class_right_brace
;
2530 | EnumClassEnumerator
2532 enum_class_enumerator_modifiers
;
2533 enum_class_enumerator_type
;
2534 enum_class_enumerator_name
;
2535 enum_class_enumerator_initializer
;
2536 enum_class_enumerator_semicolon
;
2539 enum_class_enumerator_modifiers
;
2540 enum_class_enumerator_type
;
2541 enum_class_enumerator_name
;
2542 enum_class_enumerator_initializer
;
2543 enum_class_enumerator_semicolon
;
2547 alias_attribute_spec
;
2550 alias_generic_parameter
;
2557 alias_attribute_spec
;
2560 alias_generic_parameter
;
2566 | ContextAliasDeclaration
2568 ctx_alias_attribute_spec
;
2571 ctx_alias_generic_parameter
;
2572 ctx_alias_as_constraint
;
2575 ctx_alias_semicolon
;
2578 ctx_alias_attribute_spec
;
2581 ctx_alias_generic_parameter
;
2582 ctx_alias_as_constraint
;
2585 ctx_alias_semicolon
;
2587 | PropertyDeclaration
2589 property_attribute_spec
;
2592 property_declarators
;
2596 property_attribute_spec
;
2599 property_declarators
;
2602 | PropertyDeclarator
{ property_name
; property_initializer
} ->
2603 [property_name
; property_initializer
]
2604 | NamespaceDeclaration
{ namespace_header
; namespace_body
} ->
2605 [namespace_header
; namespace_body
]
2606 | NamespaceDeclarationHeader
{ namespace_keyword
; namespace_name
} ->
2607 [namespace_keyword
; namespace_name
]
2610 namespace_left_brace
;
2611 namespace_declarations
;
2612 namespace_right_brace
;
2614 [namespace_left_brace
; namespace_declarations
; namespace_right_brace
]
2615 | NamespaceEmptyBody
{ namespace_semicolon
} -> [namespace_semicolon
]
2616 | NamespaceUseDeclaration
2618 namespace_use_keyword
;
2620 namespace_use_clauses
;
2621 namespace_use_semicolon
;
2624 namespace_use_keyword
;
2626 namespace_use_clauses
;
2627 namespace_use_semicolon
;
2629 | NamespaceGroupUseDeclaration
2631 namespace_group_use_keyword
;
2632 namespace_group_use_kind
;
2633 namespace_group_use_prefix
;
2634 namespace_group_use_left_brace
;
2635 namespace_group_use_clauses
;
2636 namespace_group_use_right_brace
;
2637 namespace_group_use_semicolon
;
2640 namespace_group_use_keyword
;
2641 namespace_group_use_kind
;
2642 namespace_group_use_prefix
;
2643 namespace_group_use_left_brace
;
2644 namespace_group_use_clauses
;
2645 namespace_group_use_right_brace
;
2646 namespace_group_use_semicolon
;
2648 | NamespaceUseClause
2650 namespace_use_clause_kind
;
2653 namespace_use_alias
;
2656 namespace_use_clause_kind
;
2659 namespace_use_alias
;
2661 | FunctionDeclaration
2663 function_attribute_spec
;
2664 function_declaration_header
;
2667 [function_attribute_spec
; function_declaration_header
; function_body
]
2668 | FunctionDeclarationHeader
2673 function_type_parameter_list
;
2674 function_left_paren
;
2675 function_parameter_list
;
2676 function_right_paren
;
2679 function_readonly_return
;
2681 function_where_clause
;
2687 function_type_parameter_list
;
2688 function_left_paren
;
2689 function_parameter_list
;
2690 function_right_paren
;
2693 function_readonly_return
;
2695 function_where_clause
;
2698 { contexts_left_bracket
; contexts_types
; contexts_right_bracket
} ->
2699 [contexts_left_bracket
; contexts_types
; contexts_right_bracket
]
2700 | WhereClause
{ where_clause_keyword
; where_clause_constraints
} ->
2701 [where_clause_keyword
; where_clause_constraints
]
2704 where_constraint_left_type
;
2705 where_constraint_operator
;
2706 where_constraint_right_type
;
2709 where_constraint_left_type
;
2710 where_constraint_operator
;
2711 where_constraint_right_type
;
2713 | MethodishDeclaration
2715 methodish_attribute
;
2716 methodish_function_decl_header
;
2717 methodish_function_body
;
2718 methodish_semicolon
;
2721 methodish_attribute
;
2722 methodish_function_decl_header
;
2723 methodish_function_body
;
2724 methodish_semicolon
;
2726 | MethodishTraitResolution
2728 methodish_trait_attribute
;
2729 methodish_trait_function_decl_header
;
2730 methodish_trait_equal
;
2731 methodish_trait_name
;
2732 methodish_trait_semicolon
;
2735 methodish_trait_attribute
;
2736 methodish_trait_function_decl_header
;
2737 methodish_trait_equal
;
2738 methodish_trait_name
;
2739 methodish_trait_semicolon
;
2741 | ClassishDeclaration
2748 classish_type_parameters
;
2749 classish_extends_keyword
;
2750 classish_extends_list
;
2751 classish_implements_keyword
;
2752 classish_implements_list
;
2753 classish_where_clause
;
2762 classish_type_parameters
;
2763 classish_extends_keyword
;
2764 classish_extends_list
;
2765 classish_implements_keyword
;
2766 classish_implements_list
;
2767 classish_where_clause
;
2772 classish_body_left_brace
;
2773 classish_body_elements
;
2774 classish_body_right_brace
;
2777 classish_body_left_brace
;
2778 classish_body_elements
;
2779 classish_body_right_brace
;
2781 | TraitUsePrecedenceItem
2783 trait_use_precedence_item_name
;
2784 trait_use_precedence_item_keyword
;
2785 trait_use_precedence_item_removed_names
;
2788 trait_use_precedence_item_name
;
2789 trait_use_precedence_item_keyword
;
2790 trait_use_precedence_item_removed_names
;
2794 trait_use_alias_item_aliasing_name
;
2795 trait_use_alias_item_keyword
;
2796 trait_use_alias_item_modifiers
;
2797 trait_use_alias_item_aliased_name
;
2800 trait_use_alias_item_aliasing_name
;
2801 trait_use_alias_item_keyword
;
2802 trait_use_alias_item_modifiers
;
2803 trait_use_alias_item_aliased_name
;
2805 | TraitUseConflictResolution
2807 trait_use_conflict_resolution_keyword
;
2808 trait_use_conflict_resolution_names
;
2809 trait_use_conflict_resolution_left_brace
;
2810 trait_use_conflict_resolution_clauses
;
2811 trait_use_conflict_resolution_right_brace
;
2814 trait_use_conflict_resolution_keyword
;
2815 trait_use_conflict_resolution_names
;
2816 trait_use_conflict_resolution_left_brace
;
2817 trait_use_conflict_resolution_clauses
;
2818 trait_use_conflict_resolution_right_brace
;
2820 | TraitUse
{ trait_use_keyword
; trait_use_names
; trait_use_semicolon
} ->
2821 [trait_use_keyword
; trait_use_names
; trait_use_semicolon
]
2823 { require_keyword
; require_kind
; require_name
; require_semicolon
} ->
2824 [require_keyword
; require_kind
; require_name
; require_semicolon
]
2827 const_attribute_spec
;
2830 const_type_specifier
;
2835 const_attribute_spec
;
2838 const_type_specifier
;
2842 | ConstantDeclarator
2843 { constant_declarator_name
; constant_declarator_initializer
} ->
2844 [constant_declarator_name
; constant_declarator_initializer
]
2845 | TypeConstDeclaration
2847 type_const_attribute_spec
;
2848 type_const_modifiers
;
2850 type_const_type_keyword
;
2852 type_const_type_parameters
;
2853 type_const_type_constraint
;
2855 type_const_type_specifier
;
2856 type_const_semicolon
;
2859 type_const_attribute_spec
;
2860 type_const_modifiers
;
2862 type_const_type_keyword
;
2864 type_const_type_parameters
;
2865 type_const_type_constraint
;
2867 type_const_type_specifier
;
2868 type_const_semicolon
;
2870 | ContextConstDeclaration
2872 context_const_modifiers
;
2873 context_const_const_keyword
;
2874 context_const_ctx_keyword
;
2876 context_const_type_parameters
;
2877 context_const_constraint
;
2878 context_const_equal
;
2879 context_const_ctx_list
;
2880 context_const_semicolon
;
2883 context_const_modifiers
;
2884 context_const_const_keyword
;
2885 context_const_ctx_keyword
;
2887 context_const_type_parameters
;
2888 context_const_constraint
;
2889 context_const_equal
;
2890 context_const_ctx_list
;
2891 context_const_semicolon
;
2893 | DecoratedExpression
2894 { decorated_expression_decorator
; decorated_expression_expression
} ->
2895 [decorated_expression_decorator
; decorated_expression_expression
]
2896 | ParameterDeclaration
2898 parameter_attribute
;
2899 parameter_visibility
;
2900 parameter_call_convention
;
2904 parameter_default_value
;
2907 parameter_attribute
;
2908 parameter_visibility
;
2909 parameter_call_convention
;
2913 parameter_default_value
;
2917 variadic_parameter_call_convention
;
2918 variadic_parameter_type
;
2919 variadic_parameter_ellipsis
;
2922 variadic_parameter_call_convention
;
2923 variadic_parameter_type
;
2924 variadic_parameter_ellipsis
;
2926 | OldAttributeSpecification
2928 old_attribute_specification_left_double_angle
;
2929 old_attribute_specification_attributes
;
2930 old_attribute_specification_right_double_angle
;
2933 old_attribute_specification_left_double_angle
;
2934 old_attribute_specification_attributes
;
2935 old_attribute_specification_right_double_angle
;
2937 | AttributeSpecification
{ attribute_specification_attributes
} ->
2938 [attribute_specification_attributes
]
2939 | Attribute
{ attribute_at
; attribute_attribute_name
} ->
2940 [attribute_at
; attribute_attribute_name
]
2941 | InclusionExpression
{ inclusion_require
; inclusion_filename
} ->
2942 [inclusion_require
; inclusion_filename
]
2943 | InclusionDirective
{ inclusion_expression
; inclusion_semicolon
} ->
2944 [inclusion_expression
; inclusion_semicolon
]
2946 { compound_left_brace
; compound_statements
; compound_right_brace
} ->
2947 [compound_left_brace
; compound_statements
; compound_right_brace
]
2948 | ExpressionStatement
2949 { expression_statement_expression
; expression_statement_semicolon
} ->
2950 [expression_statement_expression
; expression_statement_semicolon
]
2951 | MarkupSection
{ markup_hashbang
; markup_suffix
} ->
2952 [markup_hashbang
; markup_suffix
]
2953 | MarkupSuffix
{ markup_suffix_less_than_question
; markup_suffix_name
} ->
2954 [markup_suffix_less_than_question
; markup_suffix_name
]
2970 | UsingStatementBlockScoped
2972 using_block_await_keyword
;
2973 using_block_using_keyword
;
2974 using_block_left_paren
;
2975 using_block_expressions
;
2976 using_block_right_paren
;
2980 using_block_await_keyword
;
2981 using_block_using_keyword
;
2982 using_block_left_paren
;
2983 using_block_expressions
;
2984 using_block_right_paren
;
2987 | UsingStatementFunctionScoped
2989 using_function_await_keyword
;
2990 using_function_using_keyword
;
2991 using_function_expression
;
2992 using_function_semicolon
;
2995 using_function_await_keyword
;
2996 using_function_using_keyword
;
2997 using_function_expression
;
2998 using_function_semicolon
;
3049 | ElseClause
{ else_keyword
; else_statement
} ->
3050 [else_keyword
; else_statement
]
3054 try_compound_statement
;
3060 try_compound_statement
;
3081 | FinallyClause
{ finally_keyword
; finally_body
} ->
3082 [finally_keyword
; finally_body
]
3107 for_first_semicolon
;
3109 for_second_semicolon
;
3118 for_first_semicolon
;
3120 for_second_semicolon
;
3130 foreach_await_keyword
;
3135 foreach_right_paren
;
3142 foreach_await_keyword
;
3147 foreach_right_paren
;
3171 switch_section_labels
;
3172 switch_section_statements
;
3173 switch_section_fallthrough
;
3176 switch_section_labels
;
3177 switch_section_statements
;
3178 switch_section_fallthrough
;
3180 | SwitchFallthrough
{ fallthrough_keyword
; fallthrough_semicolon
} ->
3181 [fallthrough_keyword
; fallthrough_semicolon
]
3182 | CaseLabel
{ case_keyword
; case_expression
; case_colon
} ->
3183 [case_keyword
; case_expression
; case_colon
]
3184 | DefaultLabel
{ default_keyword
; default_colon
} ->
3185 [default_keyword
; default_colon
]
3186 | ReturnStatement
{ return_keyword
; return_expression
; return_semicolon
}
3188 [return_keyword
; return_expression
; return_semicolon
]
3189 | YieldBreakStatement
3190 { yield_break_keyword
; yield_break_break
; yield_break_semicolon
} ->
3191 [yield_break_keyword
; yield_break_break
; yield_break_semicolon
]
3192 | ThrowStatement
{ throw_keyword
; throw_expression
; throw_semicolon
} ->
3193 [throw_keyword
; throw_expression
; throw_semicolon
]
3194 | BreakStatement
{ break_keyword
; break_semicolon
} ->
3195 [break_keyword
; break_semicolon
]
3196 | ContinueStatement
{ continue_keyword
; continue_semicolon
} ->
3197 [continue_keyword
; continue_semicolon
]
3198 | EchoStatement
{ echo_keyword
; echo_expressions
; echo_semicolon
} ->
3199 [echo_keyword
; echo_expressions
; echo_semicolon
]
3200 | ConcurrentStatement
{ concurrent_keyword
; concurrent_statement
} ->
3201 [concurrent_keyword
; concurrent_statement
]
3202 | SimpleInitializer
{ simple_initializer_equal
; simple_initializer_value
}
3204 [simple_initializer_equal
; simple_initializer_value
]
3207 anonymous_class_class_keyword
;
3208 anonymous_class_left_paren
;
3209 anonymous_class_argument_list
;
3210 anonymous_class_right_paren
;
3211 anonymous_class_extends_keyword
;
3212 anonymous_class_extends_list
;
3213 anonymous_class_implements_keyword
;
3214 anonymous_class_implements_list
;
3215 anonymous_class_body
;
3218 anonymous_class_class_keyword
;
3219 anonymous_class_left_paren
;
3220 anonymous_class_argument_list
;
3221 anonymous_class_right_paren
;
3222 anonymous_class_extends_keyword
;
3223 anonymous_class_extends_list
;
3224 anonymous_class_implements_keyword
;
3225 anonymous_class_implements_list
;
3226 anonymous_class_body
;
3230 anonymous_attribute_spec
;
3231 anonymous_async_keyword
;
3232 anonymous_function_keyword
;
3233 anonymous_left_paren
;
3234 anonymous_parameters
;
3235 anonymous_right_paren
;
3238 anonymous_readonly_return
;
3244 anonymous_attribute_spec
;
3245 anonymous_async_keyword
;
3246 anonymous_function_keyword
;
3247 anonymous_left_paren
;
3248 anonymous_parameters
;
3249 anonymous_right_paren
;
3252 anonymous_readonly_return
;
3257 | AnonymousFunctionUseClause
3259 anonymous_use_keyword
;
3260 anonymous_use_left_paren
;
3261 anonymous_use_variables
;
3262 anonymous_use_right_paren
;
3265 anonymous_use_keyword
;
3266 anonymous_use_left_paren
;
3267 anonymous_use_variables
;
3268 anonymous_use_right_paren
;
3272 lambda_attribute_spec
;
3279 lambda_attribute_spec
;
3292 lambda_readonly_return
;
3301 lambda_readonly_return
;
3305 { cast_left_paren
; cast_type
; cast_right_paren
; cast_operand
} ->
3306 [cast_left_paren
; cast_type
; cast_right_paren
; cast_operand
]
3307 | ScopeResolutionExpression
3309 scope_resolution_qualifier
;
3310 scope_resolution_operator
;
3311 scope_resolution_name
;
3314 scope_resolution_qualifier
;
3315 scope_resolution_operator
;
3316 scope_resolution_name
;
3318 | MemberSelectionExpression
3319 { member_object
; member_operator
; member_name
} ->
3320 [member_object
; member_operator
; member_name
]
3321 | SafeMemberSelectionExpression
3322 { safe_member_object
; safe_member_operator
; safe_member_name
} ->
3323 [safe_member_object
; safe_member_operator
; safe_member_name
]
3324 | EmbeddedMemberSelectionExpression
3326 embedded_member_object
;
3327 embedded_member_operator
;
3328 embedded_member_name
;
3330 [embedded_member_object
; embedded_member_operator
; embedded_member_name
]
3331 | YieldExpression
{ yield_keyword
; yield_operand
} ->
3332 [yield_keyword
; yield_operand
]
3333 | PrefixUnaryExpression
{ prefix_unary_operator
; prefix_unary_operand
} ->
3334 [prefix_unary_operator
; prefix_unary_operand
]
3335 | PostfixUnaryExpression
{ postfix_unary_operand
; postfix_unary_operator
}
3337 [postfix_unary_operand
; postfix_unary_operator
]
3339 { binary_left_operand
; binary_operator
; binary_right_operand
} ->
3340 [binary_left_operand
; binary_operator
; binary_right_operand
]
3341 | IsExpression
{ is_left_operand
; is_operator
; is_right_operand
} ->
3342 [is_left_operand
; is_operator
; is_right_operand
]
3343 | AsExpression
{ as_left_operand
; as_operator
; as_right_operand
} ->
3344 [as_left_operand
; as_operator
; as_right_operand
]
3345 | NullableAsExpression
3347 nullable_as_left_operand
;
3348 nullable_as_operator
;
3349 nullable_as_right_operand
;
3352 nullable_as_left_operand
;
3353 nullable_as_operator
;
3354 nullable_as_right_operand
;
3357 { upcast_left_operand
; upcast_operator
; upcast_right_operand
} ->
3358 [upcast_left_operand
; upcast_operator
; upcast_right_operand
]
3359 | ConditionalExpression
3362 conditional_question
;
3363 conditional_consequence
;
3365 conditional_alternative
;
3369 conditional_question
;
3370 conditional_consequence
;
3372 conditional_alternative
;
3375 { eval_keyword
; eval_left_paren
; eval_argument
; eval_right_paren
} ->
3376 [eval_keyword
; eval_left_paren
; eval_argument
; eval_right_paren
]
3381 isset_argument_list
;
3385 isset_keyword
; isset_left_paren
; isset_argument_list
; isset_right_paren
;
3387 | FunctionCallExpression
3389 function_call_receiver
;
3390 function_call_type_args
;
3391 function_call_enum_class_label
;
3392 function_call_left_paren
;
3393 function_call_argument_list
;
3394 function_call_right_paren
;
3397 function_call_receiver
;
3398 function_call_type_args
;
3399 function_call_enum_class_label
;
3400 function_call_left_paren
;
3401 function_call_argument_list
;
3402 function_call_right_paren
;
3404 | FunctionPointerExpression
3405 { function_pointer_receiver
; function_pointer_type_args
} ->
3406 [function_pointer_receiver
; function_pointer_type_args
]
3407 | ParenthesizedExpression
3409 parenthesized_expression_left_paren
;
3410 parenthesized_expression_expression
;
3411 parenthesized_expression_right_paren
;
3414 parenthesized_expression_left_paren
;
3415 parenthesized_expression_expression
;
3416 parenthesized_expression_right_paren
;
3420 braced_expression_left_brace
;
3421 braced_expression_expression
;
3422 braced_expression_right_brace
;
3425 braced_expression_left_brace
;
3426 braced_expression_expression
;
3427 braced_expression_right_brace
;
3429 | ETSpliceExpression
3431 et_splice_expression_dollar
;
3432 et_splice_expression_left_brace
;
3433 et_splice_expression_expression
;
3434 et_splice_expression_right_brace
;
3437 et_splice_expression_dollar
;
3438 et_splice_expression_left_brace
;
3439 et_splice_expression_expression
;
3440 et_splice_expression_right_brace
;
3442 | EmbeddedBracedExpression
3444 embedded_braced_expression_left_brace
;
3445 embedded_braced_expression_expression
;
3446 embedded_braced_expression_right_brace
;
3449 embedded_braced_expression_left_brace
;
3450 embedded_braced_expression_expression
;
3451 embedded_braced_expression_right_brace
;
3454 { list_keyword
; list_left_paren
; list_members
; list_right_paren
} ->
3455 [list_keyword
; list_left_paren
; list_members
; list_right_paren
]
3456 | CollectionLiteralExpression
3458 collection_literal_name
;
3459 collection_literal_left_brace
;
3460 collection_literal_initializers
;
3461 collection_literal_right_brace
;
3464 collection_literal_name
;
3465 collection_literal_left_brace
;
3466 collection_literal_initializers
;
3467 collection_literal_right_brace
;
3469 | ObjectCreationExpression
3470 { object_creation_new_keyword
; object_creation_object
} ->
3471 [object_creation_new_keyword
; object_creation_object
]
3474 constructor_call_type
;
3475 constructor_call_left_paren
;
3476 constructor_call_argument_list
;
3477 constructor_call_right_paren
;
3480 constructor_call_type
;
3481 constructor_call_left_paren
;
3482 constructor_call_argument_list
;
3483 constructor_call_right_paren
;
3485 | DarrayIntrinsicExpression
3487 darray_intrinsic_keyword
;
3488 darray_intrinsic_explicit_type
;
3489 darray_intrinsic_left_bracket
;
3490 darray_intrinsic_members
;
3491 darray_intrinsic_right_bracket
;
3494 darray_intrinsic_keyword
;
3495 darray_intrinsic_explicit_type
;
3496 darray_intrinsic_left_bracket
;
3497 darray_intrinsic_members
;
3498 darray_intrinsic_right_bracket
;
3500 | DictionaryIntrinsicExpression
3502 dictionary_intrinsic_keyword
;
3503 dictionary_intrinsic_explicit_type
;
3504 dictionary_intrinsic_left_bracket
;
3505 dictionary_intrinsic_members
;
3506 dictionary_intrinsic_right_bracket
;
3509 dictionary_intrinsic_keyword
;
3510 dictionary_intrinsic_explicit_type
;
3511 dictionary_intrinsic_left_bracket
;
3512 dictionary_intrinsic_members
;
3513 dictionary_intrinsic_right_bracket
;
3515 | KeysetIntrinsicExpression
3517 keyset_intrinsic_keyword
;
3518 keyset_intrinsic_explicit_type
;
3519 keyset_intrinsic_left_bracket
;
3520 keyset_intrinsic_members
;
3521 keyset_intrinsic_right_bracket
;
3524 keyset_intrinsic_keyword
;
3525 keyset_intrinsic_explicit_type
;
3526 keyset_intrinsic_left_bracket
;
3527 keyset_intrinsic_members
;
3528 keyset_intrinsic_right_bracket
;
3530 | VarrayIntrinsicExpression
3532 varray_intrinsic_keyword
;
3533 varray_intrinsic_explicit_type
;
3534 varray_intrinsic_left_bracket
;
3535 varray_intrinsic_members
;
3536 varray_intrinsic_right_bracket
;
3539 varray_intrinsic_keyword
;
3540 varray_intrinsic_explicit_type
;
3541 varray_intrinsic_left_bracket
;
3542 varray_intrinsic_members
;
3543 varray_intrinsic_right_bracket
;
3545 | VectorIntrinsicExpression
3547 vector_intrinsic_keyword
;
3548 vector_intrinsic_explicit_type
;
3549 vector_intrinsic_left_bracket
;
3550 vector_intrinsic_members
;
3551 vector_intrinsic_right_bracket
;
3554 vector_intrinsic_keyword
;
3555 vector_intrinsic_explicit_type
;
3556 vector_intrinsic_left_bracket
;
3557 vector_intrinsic_members
;
3558 vector_intrinsic_right_bracket
;
3560 | ElementInitializer
{ element_key
; element_arrow
; element_value
} ->
3561 [element_key
; element_arrow
; element_value
]
3562 | SubscriptExpression
3565 subscript_left_bracket
;
3567 subscript_right_bracket
;
3571 subscript_left_bracket
;
3573 subscript_right_bracket
;
3575 | EmbeddedSubscriptExpression
3577 embedded_subscript_receiver
;
3578 embedded_subscript_left_bracket
;
3579 embedded_subscript_index
;
3580 embedded_subscript_right_bracket
;
3583 embedded_subscript_receiver
;
3584 embedded_subscript_left_bracket
;
3585 embedded_subscript_index
;
3586 embedded_subscript_right_bracket
;
3588 | AwaitableCreationExpression
3590 awaitable_attribute_spec
;
3592 awaitable_compound_statement
;
3595 awaitable_attribute_spec
; awaitable_async
; awaitable_compound_statement
;
3597 | XHPChildrenDeclaration
3599 xhp_children_keyword
;
3600 xhp_children_expression
;
3601 xhp_children_semicolon
;
3603 [xhp_children_keyword
; xhp_children_expression
; xhp_children_semicolon
]
3604 | XHPChildrenParenthesizedList
3606 xhp_children_list_left_paren
;
3607 xhp_children_list_xhp_children
;
3608 xhp_children_list_right_paren
;
3611 xhp_children_list_left_paren
;
3612 xhp_children_list_xhp_children
;
3613 xhp_children_list_right_paren
;
3615 | XHPCategoryDeclaration
3617 xhp_category_keyword
;
3618 xhp_category_categories
;
3619 xhp_category_semicolon
;
3621 [xhp_category_keyword
; xhp_category_categories
; xhp_category_semicolon
]
3626 xhp_enum_left_brace
;
3628 xhp_enum_right_brace
;
3633 xhp_enum_left_brace
;
3635 xhp_enum_right_brace
;
3637 | XHPLateinit
{ xhp_lateinit_at
; xhp_lateinit_keyword
} ->
3638 [xhp_lateinit_at
; xhp_lateinit_keyword
]
3639 | XHPRequired
{ xhp_required_at
; xhp_required_keyword
} ->
3640 [xhp_required_at
; xhp_required_keyword
]
3641 | XHPClassAttributeDeclaration
3643 xhp_attribute_keyword
;
3644 xhp_attribute_attributes
;
3645 xhp_attribute_semicolon
;
3648 xhp_attribute_keyword
;
3649 xhp_attribute_attributes
;
3650 xhp_attribute_semicolon
;
3654 xhp_attribute_decl_type
;
3655 xhp_attribute_decl_name
;
3656 xhp_attribute_decl_initializer
;
3657 xhp_attribute_decl_required
;
3660 xhp_attribute_decl_type
;
3661 xhp_attribute_decl_name
;
3662 xhp_attribute_decl_initializer
;
3663 xhp_attribute_decl_required
;
3665 | XHPSimpleClassAttribute
{ xhp_simple_class_attribute_type
} ->
3666 [xhp_simple_class_attribute_type
]
3667 | XHPSimpleAttribute
3669 xhp_simple_attribute_name
;
3670 xhp_simple_attribute_equal
;
3671 xhp_simple_attribute_expression
;
3674 xhp_simple_attribute_name
;
3675 xhp_simple_attribute_equal
;
3676 xhp_simple_attribute_expression
;
3678 | XHPSpreadAttribute
3680 xhp_spread_attribute_left_brace
;
3681 xhp_spread_attribute_spread_operator
;
3682 xhp_spread_attribute_expression
;
3683 xhp_spread_attribute_right_brace
;
3686 xhp_spread_attribute_left_brace
;
3687 xhp_spread_attribute_spread_operator
;
3688 xhp_spread_attribute_expression
;
3689 xhp_spread_attribute_right_brace
;
3693 xhp_open_left_angle
;
3695 xhp_open_attributes
;
3696 xhp_open_right_angle
;
3699 xhp_open_left_angle
;
3701 xhp_open_attributes
;
3702 xhp_open_right_angle
;
3704 | XHPExpression
{ xhp_open
; xhp_body
; xhp_close
} ->
3705 [xhp_open
; xhp_body
; xhp_close
]
3706 | XHPClose
{ xhp_close_left_angle
; xhp_close_name
; xhp_close_right_angle
}
3708 [xhp_close_left_angle
; xhp_close_name
; xhp_close_right_angle
]
3711 type_constant_left_type
;
3712 type_constant_separator
;
3713 type_constant_right_type
;
3716 type_constant_left_type
;
3717 type_constant_separator
;
3718 type_constant_right_type
;
3720 | VectorTypeSpecifier
3722 vector_type_keyword
;
3723 vector_type_left_angle
;
3725 vector_type_trailing_comma
;
3726 vector_type_right_angle
;
3729 vector_type_keyword
;
3730 vector_type_left_angle
;
3732 vector_type_trailing_comma
;
3733 vector_type_right_angle
;
3735 | KeysetTypeSpecifier
3737 keyset_type_keyword
;
3738 keyset_type_left_angle
;
3740 keyset_type_trailing_comma
;
3741 keyset_type_right_angle
;
3744 keyset_type_keyword
;
3745 keyset_type_left_angle
;
3747 keyset_type_trailing_comma
;
3748 keyset_type_right_angle
;
3750 | TupleTypeExplicitSpecifier
3753 tuple_type_left_angle
;
3755 tuple_type_right_angle
;
3759 tuple_type_left_angle
;
3761 tuple_type_right_angle
;
3763 | VarrayTypeSpecifier
3768 varray_trailing_comma
;
3775 varray_trailing_comma
;
3778 | FunctionCtxTypeSpecifier
3779 { function_ctx_type_keyword
; function_ctx_type_variable
} ->
3780 [function_ctx_type_keyword
; function_ctx_type_variable
]
3783 type_attribute_spec
;
3791 type_attribute_spec
;
3798 | TypeConstraint
{ constraint_keyword
; constraint_type
} ->
3799 [constraint_keyword
; constraint_type
]
3800 | ContextConstraint
{ ctx_constraint_keyword
; ctx_constraint_ctx_list
} ->
3801 [ctx_constraint_keyword
; ctx_constraint_ctx_list
]
3802 | DarrayTypeSpecifier
3809 darray_trailing_comma
;
3818 darray_trailing_comma
;
3821 | DictionaryTypeSpecifier
3823 dictionary_type_keyword
;
3824 dictionary_type_left_angle
;
3825 dictionary_type_members
;
3826 dictionary_type_right_angle
;
3829 dictionary_type_keyword
;
3830 dictionary_type_left_angle
;
3831 dictionary_type_members
;
3832 dictionary_type_right_angle
;
3834 | ClosureTypeSpecifier
3836 closure_outer_left_paren
;
3837 closure_readonly_keyword
;
3838 closure_function_keyword
;
3839 closure_inner_left_paren
;
3840 closure_parameter_list
;
3841 closure_inner_right_paren
;
3844 closure_readonly_return
;
3845 closure_return_type
;
3846 closure_outer_right_paren
;
3849 closure_outer_left_paren
;
3850 closure_readonly_keyword
;
3851 closure_function_keyword
;
3852 closure_inner_left_paren
;
3853 closure_parameter_list
;
3854 closure_inner_right_paren
;
3857 closure_readonly_return
;
3858 closure_return_type
;
3859 closure_outer_right_paren
;
3861 | ClosureParameterTypeSpecifier
3863 closure_parameter_call_convention
;
3864 closure_parameter_readonly
;
3865 closure_parameter_type
;
3868 closure_parameter_call_convention
;
3869 closure_parameter_readonly
;
3870 closure_parameter_type
;
3872 | ClassnameTypeSpecifier
3875 classname_left_angle
;
3877 classname_trailing_comma
;
3878 classname_right_angle
;
3882 classname_left_angle
;
3884 classname_trailing_comma
;
3885 classname_right_angle
;
3887 | FieldSpecifier
{ field_question
; field_name
; field_arrow
; field_type
}
3889 [field_question
; field_name
; field_arrow
; field_type
]
3892 field_initializer_name
;
3893 field_initializer_arrow
;
3894 field_initializer_value
;
3897 field_initializer_name
;
3898 field_initializer_arrow
;
3899 field_initializer_value
;
3901 | ShapeTypeSpecifier
3904 shape_type_left_paren
;
3906 shape_type_ellipsis
;
3907 shape_type_right_paren
;
3911 shape_type_left_paren
;
3913 shape_type_ellipsis
;
3914 shape_type_right_paren
;
3918 shape_expression_keyword
;
3919 shape_expression_left_paren
;
3920 shape_expression_fields
;
3921 shape_expression_right_paren
;
3924 shape_expression_keyword
;
3925 shape_expression_left_paren
;
3926 shape_expression_fields
;
3927 shape_expression_right_paren
;
3931 tuple_expression_keyword
;
3932 tuple_expression_left_paren
;
3933 tuple_expression_items
;
3934 tuple_expression_right_paren
;
3937 tuple_expression_keyword
;
3938 tuple_expression_left_paren
;
3939 tuple_expression_items
;
3940 tuple_expression_right_paren
;
3942 | GenericTypeSpecifier
{ generic_class_type
; generic_argument_list
} ->
3943 [generic_class_type
; generic_argument_list
]
3944 | NullableTypeSpecifier
{ nullable_question
; nullable_type
} ->
3945 [nullable_question
; nullable_type
]
3946 | LikeTypeSpecifier
{ like_tilde
; like_type
} -> [like_tilde
; like_type
]
3947 | SoftTypeSpecifier
{ soft_at
; soft_type
} -> [soft_at
; soft_type
]
3948 | AttributizedSpecifier
3949 { attributized_specifier_attribute_spec
; attributized_specifier_type
}
3951 [attributized_specifier_attribute_spec
; attributized_specifier_type
]
3952 | ReifiedTypeArgument
3953 { reified_type_argument_reified
; reified_type_argument_type
} ->
3954 [reified_type_argument_reified
; reified_type_argument_type
]
3957 type_arguments_left_angle
;
3958 type_arguments_types
;
3959 type_arguments_right_angle
;
3962 type_arguments_left_angle
;
3963 type_arguments_types
;
3964 type_arguments_right_angle
;
3968 type_parameters_left_angle
;
3969 type_parameters_parameters
;
3970 type_parameters_right_angle
;
3973 type_parameters_left_angle
;
3974 type_parameters_parameters
;
3975 type_parameters_right_angle
;
3977 | TupleTypeSpecifier
{ tuple_left_paren
; tuple_types
; tuple_right_paren
}
3979 [tuple_left_paren
; tuple_types
; tuple_right_paren
]
3980 | UnionTypeSpecifier
{ union_left_paren
; union_types
; union_right_paren
}
3982 [union_left_paren
; union_types
; union_right_paren
]
3983 | IntersectionTypeSpecifier
3985 intersection_left_paren
;
3987 intersection_right_paren
;
3989 [intersection_left_paren
; intersection_types
; intersection_right_paren
]
3990 | ErrorSyntax
{ error_error
} -> [error_error
]
3991 | ListItem
{ list_item
; list_separator
} -> [list_item
; list_separator
]
3992 | EnumClassLabelExpression
3994 enum_class_label_qualifier
;
3995 enum_class_label_hash
;
3996 enum_class_label_expression
;
3999 enum_class_label_qualifier
;
4000 enum_class_label_hash
;
4001 enum_class_label_expression
;
4004 let children node
= children_from_syntax node
.syntax
4006 let children_names node
=
4007 match node
.syntax with
4010 | SyntaxList _
-> []
4011 | EndOfFile
{ end_of_file_token
} -> ["end_of_file_token"]
4012 | Script
{ script_declarations
} -> ["script_declarations"]
4013 | QualifiedName
{ qualified_name_parts
} -> ["qualified_name_parts"]
4014 | SimpleTypeSpecifier
{ simple_type_specifier
} ->
4015 ["simple_type_specifier"]
4016 | LiteralExpression
{ literal_expression
} -> ["literal_expression"]
4017 | PrefixedStringExpression
{ prefixed_string_name
; prefixed_string_str
}
4019 ["prefixed_string_name"; "prefixed_string_str"]
4020 | PrefixedCodeExpression
4022 prefixed_code_prefix
;
4023 prefixed_code_left_backtick
;
4024 prefixed_code_expression
;
4025 prefixed_code_right_backtick
;
4028 "prefixed_code_prefix";
4029 "prefixed_code_left_backtick";
4030 "prefixed_code_expression";
4031 "prefixed_code_right_backtick";
4033 | VariableExpression
{ variable_expression
} -> ["variable_expression"]
4034 | PipeVariableExpression
{ pipe_variable_expression
} ->
4035 ["pipe_variable_expression"]
4036 | FileAttributeSpecification
4038 file_attribute_specification_left_double_angle
;
4039 file_attribute_specification_keyword
;
4040 file_attribute_specification_colon
;
4041 file_attribute_specification_attributes
;
4042 file_attribute_specification_right_double_angle
;
4045 "file_attribute_specification_left_double_angle";
4046 "file_attribute_specification_keyword";
4047 "file_attribute_specification_colon";
4048 "file_attribute_specification_attributes";
4049 "file_attribute_specification_right_double_angle";
4053 enum_attribute_spec
;
4065 "enum_attribute_spec";
4076 | EnumUse
{ enum_use_keyword
; enum_use_names
; enum_use_semicolon
} ->
4077 ["enum_use_keyword"; "enum_use_names"; "enum_use_semicolon"]
4083 enumerator_semicolon
;
4089 "enumerator_semicolon";
4091 | EnumClassDeclaration
4093 enum_class_attribute_spec
;
4094 enum_class_modifiers
;
4095 enum_class_enum_keyword
;
4096 enum_class_class_keyword
;
4101 enum_class_extends_list
;
4102 enum_class_left_brace
;
4103 enum_class_elements
;
4104 enum_class_right_brace
;
4107 "enum_class_attribute_spec";
4108 "enum_class_modifiers";
4109 "enum_class_enum_keyword";
4110 "enum_class_class_keyword";
4114 "enum_class_extends";
4115 "enum_class_extends_list";
4116 "enum_class_left_brace";
4117 "enum_class_elements";
4118 "enum_class_right_brace";
4120 | EnumClassEnumerator
4122 enum_class_enumerator_modifiers
;
4123 enum_class_enumerator_type
;
4124 enum_class_enumerator_name
;
4125 enum_class_enumerator_initializer
;
4126 enum_class_enumerator_semicolon
;
4129 "enum_class_enumerator_modifiers";
4130 "enum_class_enumerator_type";
4131 "enum_class_enumerator_name";
4132 "enum_class_enumerator_initializer";
4133 "enum_class_enumerator_semicolon";
4137 alias_attribute_spec
;
4140 alias_generic_parameter
;
4147 "alias_attribute_spec";
4150 "alias_generic_parameter";
4156 | ContextAliasDeclaration
4158 ctx_alias_attribute_spec
;
4161 ctx_alias_generic_parameter
;
4162 ctx_alias_as_constraint
;
4165 ctx_alias_semicolon
;
4168 "ctx_alias_attribute_spec";
4169 "ctx_alias_keyword";
4171 "ctx_alias_generic_parameter";
4172 "ctx_alias_as_constraint";
4174 "ctx_alias_context";
4175 "ctx_alias_semicolon";
4177 | PropertyDeclaration
4179 property_attribute_spec
;
4182 property_declarators
;
4186 "property_attribute_spec";
4187 "property_modifiers";
4189 "property_declarators";
4190 "property_semicolon";
4192 | PropertyDeclarator
{ property_name
; property_initializer
} ->
4193 ["property_name"; "property_initializer"]
4194 | NamespaceDeclaration
{ namespace_header
; namespace_body
} ->
4195 ["namespace_header"; "namespace_body"]
4196 | NamespaceDeclarationHeader
{ namespace_keyword
; namespace_name
} ->
4197 ["namespace_keyword"; "namespace_name"]
4200 namespace_left_brace
;
4201 namespace_declarations
;
4202 namespace_right_brace
;
4205 "namespace_left_brace";
4206 "namespace_declarations";
4207 "namespace_right_brace";
4209 | NamespaceEmptyBody
{ namespace_semicolon
} -> ["namespace_semicolon"]
4210 | NamespaceUseDeclaration
4212 namespace_use_keyword
;
4214 namespace_use_clauses
;
4215 namespace_use_semicolon
;
4218 "namespace_use_keyword";
4219 "namespace_use_kind";
4220 "namespace_use_clauses";
4221 "namespace_use_semicolon";
4223 | NamespaceGroupUseDeclaration
4225 namespace_group_use_keyword
;
4226 namespace_group_use_kind
;
4227 namespace_group_use_prefix
;
4228 namespace_group_use_left_brace
;
4229 namespace_group_use_clauses
;
4230 namespace_group_use_right_brace
;
4231 namespace_group_use_semicolon
;
4234 "namespace_group_use_keyword";
4235 "namespace_group_use_kind";
4236 "namespace_group_use_prefix";
4237 "namespace_group_use_left_brace";
4238 "namespace_group_use_clauses";
4239 "namespace_group_use_right_brace";
4240 "namespace_group_use_semicolon";
4242 | NamespaceUseClause
4244 namespace_use_clause_kind
;
4247 namespace_use_alias
;
4250 "namespace_use_clause_kind";
4251 "namespace_use_name";
4253 "namespace_use_alias";
4255 | FunctionDeclaration
4257 function_attribute_spec
;
4258 function_declaration_header
;
4262 "function_attribute_spec";
4263 "function_declaration_header";
4266 | FunctionDeclarationHeader
4271 function_type_parameter_list
;
4272 function_left_paren
;
4273 function_parameter_list
;
4274 function_right_paren
;
4277 function_readonly_return
;
4279 function_where_clause
;
4282 "function_modifiers";
4285 "function_type_parameter_list";
4286 "function_left_paren";
4287 "function_parameter_list";
4288 "function_right_paren";
4289 "function_contexts";
4291 "function_readonly_return";
4293 "function_where_clause";
4296 { contexts_left_bracket
; contexts_types
; contexts_right_bracket
} ->
4297 ["contexts_left_bracket"; "contexts_types"; "contexts_right_bracket"]
4298 | WhereClause
{ where_clause_keyword
; where_clause_constraints
} ->
4299 ["where_clause_keyword"; "where_clause_constraints"]
4302 where_constraint_left_type
;
4303 where_constraint_operator
;
4304 where_constraint_right_type
;
4307 "where_constraint_left_type";
4308 "where_constraint_operator";
4309 "where_constraint_right_type";
4311 | MethodishDeclaration
4313 methodish_attribute
;
4314 methodish_function_decl_header
;
4315 methodish_function_body
;
4316 methodish_semicolon
;
4319 "methodish_attribute";
4320 "methodish_function_decl_header";
4321 "methodish_function_body";
4322 "methodish_semicolon";
4324 | MethodishTraitResolution
4326 methodish_trait_attribute
;
4327 methodish_trait_function_decl_header
;
4328 methodish_trait_equal
;
4329 methodish_trait_name
;
4330 methodish_trait_semicolon
;
4333 "methodish_trait_attribute";
4334 "methodish_trait_function_decl_header";
4335 "methodish_trait_equal";
4336 "methodish_trait_name";
4337 "methodish_trait_semicolon";
4339 | ClassishDeclaration
4346 classish_type_parameters
;
4347 classish_extends_keyword
;
4348 classish_extends_list
;
4349 classish_implements_keyword
;
4350 classish_implements_list
;
4351 classish_where_clause
;
4355 "classish_attribute";
4356 "classish_modifiers";
4360 "classish_type_parameters";
4361 "classish_extends_keyword";
4362 "classish_extends_list";
4363 "classish_implements_keyword";
4364 "classish_implements_list";
4365 "classish_where_clause";
4370 classish_body_left_brace
;
4371 classish_body_elements
;
4372 classish_body_right_brace
;
4375 "classish_body_left_brace";
4376 "classish_body_elements";
4377 "classish_body_right_brace";
4379 | TraitUsePrecedenceItem
4381 trait_use_precedence_item_name
;
4382 trait_use_precedence_item_keyword
;
4383 trait_use_precedence_item_removed_names
;
4386 "trait_use_precedence_item_name";
4387 "trait_use_precedence_item_keyword";
4388 "trait_use_precedence_item_removed_names";
4392 trait_use_alias_item_aliasing_name
;
4393 trait_use_alias_item_keyword
;
4394 trait_use_alias_item_modifiers
;
4395 trait_use_alias_item_aliased_name
;
4398 "trait_use_alias_item_aliasing_name";
4399 "trait_use_alias_item_keyword";
4400 "trait_use_alias_item_modifiers";
4401 "trait_use_alias_item_aliased_name";
4403 | TraitUseConflictResolution
4405 trait_use_conflict_resolution_keyword
;
4406 trait_use_conflict_resolution_names
;
4407 trait_use_conflict_resolution_left_brace
;
4408 trait_use_conflict_resolution_clauses
;
4409 trait_use_conflict_resolution_right_brace
;
4412 "trait_use_conflict_resolution_keyword";
4413 "trait_use_conflict_resolution_names";
4414 "trait_use_conflict_resolution_left_brace";
4415 "trait_use_conflict_resolution_clauses";
4416 "trait_use_conflict_resolution_right_brace";
4418 | TraitUse
{ trait_use_keyword
; trait_use_names
; trait_use_semicolon
} ->
4419 ["trait_use_keyword"; "trait_use_names"; "trait_use_semicolon"]
4421 { require_keyword
; require_kind
; require_name
; require_semicolon
} ->
4422 ["require_keyword"; "require_kind"; "require_name"; "require_semicolon"]
4425 const_attribute_spec
;
4428 const_type_specifier
;
4433 "const_attribute_spec";
4436 "const_type_specifier";
4437 "const_declarators";
4440 | ConstantDeclarator
4441 { constant_declarator_name
; constant_declarator_initializer
} ->
4442 ["constant_declarator_name"; "constant_declarator_initializer"]
4443 | TypeConstDeclaration
4445 type_const_attribute_spec
;
4446 type_const_modifiers
;
4448 type_const_type_keyword
;
4450 type_const_type_parameters
;
4451 type_const_type_constraint
;
4453 type_const_type_specifier
;
4454 type_const_semicolon
;
4457 "type_const_attribute_spec";
4458 "type_const_modifiers";
4459 "type_const_keyword";
4460 "type_const_type_keyword";
4462 "type_const_type_parameters";
4463 "type_const_type_constraint";
4465 "type_const_type_specifier";
4466 "type_const_semicolon";
4468 | ContextConstDeclaration
4470 context_const_modifiers
;
4471 context_const_const_keyword
;
4472 context_const_ctx_keyword
;
4474 context_const_type_parameters
;
4475 context_const_constraint
;
4476 context_const_equal
;
4477 context_const_ctx_list
;
4478 context_const_semicolon
;
4481 "context_const_modifiers";
4482 "context_const_const_keyword";
4483 "context_const_ctx_keyword";
4484 "context_const_name";
4485 "context_const_type_parameters";
4486 "context_const_constraint";
4487 "context_const_equal";
4488 "context_const_ctx_list";
4489 "context_const_semicolon";
4491 | DecoratedExpression
4492 { decorated_expression_decorator
; decorated_expression_expression
} ->
4493 ["decorated_expression_decorator"; "decorated_expression_expression"]
4494 | ParameterDeclaration
4496 parameter_attribute
;
4497 parameter_visibility
;
4498 parameter_call_convention
;
4502 parameter_default_value
;
4505 "parameter_attribute";
4506 "parameter_visibility";
4507 "parameter_call_convention";
4508 "parameter_readonly";
4511 "parameter_default_value";
4515 variadic_parameter_call_convention
;
4516 variadic_parameter_type
;
4517 variadic_parameter_ellipsis
;
4520 "variadic_parameter_call_convention";
4521 "variadic_parameter_type";
4522 "variadic_parameter_ellipsis";
4524 | OldAttributeSpecification
4526 old_attribute_specification_left_double_angle
;
4527 old_attribute_specification_attributes
;
4528 old_attribute_specification_right_double_angle
;
4531 "old_attribute_specification_left_double_angle";
4532 "old_attribute_specification_attributes";
4533 "old_attribute_specification_right_double_angle";
4535 | AttributeSpecification
{ attribute_specification_attributes
} ->
4536 ["attribute_specification_attributes"]
4537 | Attribute
{ attribute_at
; attribute_attribute_name
} ->
4538 ["attribute_at"; "attribute_attribute_name"]
4539 | InclusionExpression
{ inclusion_require
; inclusion_filename
} ->
4540 ["inclusion_require"; "inclusion_filename"]
4541 | InclusionDirective
{ inclusion_expression
; inclusion_semicolon
} ->
4542 ["inclusion_expression"; "inclusion_semicolon"]
4544 { compound_left_brace
; compound_statements
; compound_right_brace
} ->
4545 ["compound_left_brace"; "compound_statements"; "compound_right_brace"]
4546 | ExpressionStatement
4547 { expression_statement_expression
; expression_statement_semicolon
} ->
4548 ["expression_statement_expression"; "expression_statement_semicolon"]
4549 | MarkupSection
{ markup_hashbang
; markup_suffix
} ->
4550 ["markup_hashbang"; "markup_suffix"]
4551 | MarkupSuffix
{ markup_suffix_less_than_question
; markup_suffix_name
} ->
4552 ["markup_suffix_less_than_question"; "markup_suffix_name"]
4565 "unset_right_paren";
4568 | UsingStatementBlockScoped
4570 using_block_await_keyword
;
4571 using_block_using_keyword
;
4572 using_block_left_paren
;
4573 using_block_expressions
;
4574 using_block_right_paren
;
4578 "using_block_await_keyword";
4579 "using_block_using_keyword";
4580 "using_block_left_paren";
4581 "using_block_expressions";
4582 "using_block_right_paren";
4585 | UsingStatementFunctionScoped
4587 using_function_await_keyword
;
4588 using_function_using_keyword
;
4589 using_function_expression
;
4590 using_function_semicolon
;
4593 "using_function_await_keyword";
4594 "using_function_using_keyword";
4595 "using_function_expression";
4596 "using_function_semicolon";
4610 "while_right_paren";
4629 "if_elseif_clauses";
4642 "elseif_left_paren";
4644 "elseif_right_paren";
4647 | ElseClause
{ else_keyword
; else_statement
} ->
4648 ["else_keyword"; "else_statement"]
4652 try_compound_statement
;
4658 "try_compound_statement";
4659 "try_catch_clauses";
4660 "try_finally_clause";
4676 "catch_right_paren";
4679 | FinallyClause
{ finally_keyword
; finally_body
} ->
4680 ["finally_keyword"; "finally_body"]
4705 for_first_semicolon
;
4707 for_second_semicolon
;
4716 "for_first_semicolon";
4718 "for_second_semicolon";
4728 foreach_await_keyword
;
4733 foreach_right_paren
;
4738 "foreach_left_paren";
4739 "foreach_collection";
4740 "foreach_await_keyword";
4745 "foreach_right_paren";
4760 "switch_left_paren";
4761 "switch_expression";
4762 "switch_right_paren";
4763 "switch_left_brace";
4765 "switch_right_brace";
4769 switch_section_labels
;
4770 switch_section_statements
;
4771 switch_section_fallthrough
;
4774 "switch_section_labels";
4775 "switch_section_statements";
4776 "switch_section_fallthrough";
4778 | SwitchFallthrough
{ fallthrough_keyword
; fallthrough_semicolon
} ->
4779 ["fallthrough_keyword"; "fallthrough_semicolon"]
4780 | CaseLabel
{ case_keyword
; case_expression
; case_colon
} ->
4781 ["case_keyword"; "case_expression"; "case_colon"]
4782 | DefaultLabel
{ default_keyword
; default_colon
} ->
4783 ["default_keyword"; "default_colon"]
4784 | ReturnStatement
{ return_keyword
; return_expression
; return_semicolon
}
4786 ["return_keyword"; "return_expression"; "return_semicolon"]
4787 | YieldBreakStatement
4788 { yield_break_keyword
; yield_break_break
; yield_break_semicolon
} ->
4789 ["yield_break_keyword"; "yield_break_break"; "yield_break_semicolon"]
4790 | ThrowStatement
{ throw_keyword
; throw_expression
; throw_semicolon
} ->
4791 ["throw_keyword"; "throw_expression"; "throw_semicolon"]
4792 | BreakStatement
{ break_keyword
; break_semicolon
} ->
4793 ["break_keyword"; "break_semicolon"]
4794 | ContinueStatement
{ continue_keyword
; continue_semicolon
} ->
4795 ["continue_keyword"; "continue_semicolon"]
4796 | EchoStatement
{ echo_keyword
; echo_expressions
; echo_semicolon
} ->
4797 ["echo_keyword"; "echo_expressions"; "echo_semicolon"]
4798 | ConcurrentStatement
{ concurrent_keyword
; concurrent_statement
} ->
4799 ["concurrent_keyword"; "concurrent_statement"]
4800 | SimpleInitializer
{ simple_initializer_equal
; simple_initializer_value
}
4802 ["simple_initializer_equal"; "simple_initializer_value"]
4805 anonymous_class_class_keyword
;
4806 anonymous_class_left_paren
;
4807 anonymous_class_argument_list
;
4808 anonymous_class_right_paren
;
4809 anonymous_class_extends_keyword
;
4810 anonymous_class_extends_list
;
4811 anonymous_class_implements_keyword
;
4812 anonymous_class_implements_list
;
4813 anonymous_class_body
;
4816 "anonymous_class_class_keyword";
4817 "anonymous_class_left_paren";
4818 "anonymous_class_argument_list";
4819 "anonymous_class_right_paren";
4820 "anonymous_class_extends_keyword";
4821 "anonymous_class_extends_list";
4822 "anonymous_class_implements_keyword";
4823 "anonymous_class_implements_list";
4824 "anonymous_class_body";
4828 anonymous_attribute_spec
;
4829 anonymous_async_keyword
;
4830 anonymous_function_keyword
;
4831 anonymous_left_paren
;
4832 anonymous_parameters
;
4833 anonymous_right_paren
;
4836 anonymous_readonly_return
;
4842 "anonymous_attribute_spec";
4843 "anonymous_async_keyword";
4844 "anonymous_function_keyword";
4845 "anonymous_left_paren";
4846 "anonymous_parameters";
4847 "anonymous_right_paren";
4848 "anonymous_ctx_list";
4850 "anonymous_readonly_return";
4855 | AnonymousFunctionUseClause
4857 anonymous_use_keyword
;
4858 anonymous_use_left_paren
;
4859 anonymous_use_variables
;
4860 anonymous_use_right_paren
;
4863 "anonymous_use_keyword";
4864 "anonymous_use_left_paren";
4865 "anonymous_use_variables";
4866 "anonymous_use_right_paren";
4870 lambda_attribute_spec
;
4877 "lambda_attribute_spec";
4890 lambda_readonly_return
;
4894 "lambda_left_paren";
4895 "lambda_parameters";
4896 "lambda_right_paren";
4899 "lambda_readonly_return";
4903 { cast_left_paren
; cast_type
; cast_right_paren
; cast_operand
} ->
4904 ["cast_left_paren"; "cast_type"; "cast_right_paren"; "cast_operand"]
4905 | ScopeResolutionExpression
4907 scope_resolution_qualifier
;
4908 scope_resolution_operator
;
4909 scope_resolution_name
;
4912 "scope_resolution_qualifier";
4913 "scope_resolution_operator";
4914 "scope_resolution_name";
4916 | MemberSelectionExpression
4917 { member_object
; member_operator
; member_name
} ->
4918 ["member_object"; "member_operator"; "member_name"]
4919 | SafeMemberSelectionExpression
4920 { safe_member_object
; safe_member_operator
; safe_member_name
} ->
4921 ["safe_member_object"; "safe_member_operator"; "safe_member_name"]
4922 | EmbeddedMemberSelectionExpression
4924 embedded_member_object
;
4925 embedded_member_operator
;
4926 embedded_member_name
;
4929 "embedded_member_object";
4930 "embedded_member_operator";
4931 "embedded_member_name";
4933 | YieldExpression
{ yield_keyword
; yield_operand
} ->
4934 ["yield_keyword"; "yield_operand"]
4935 | PrefixUnaryExpression
{ prefix_unary_operator
; prefix_unary_operand
} ->
4936 ["prefix_unary_operator"; "prefix_unary_operand"]
4937 | PostfixUnaryExpression
{ postfix_unary_operand
; postfix_unary_operator
}
4939 ["postfix_unary_operand"; "postfix_unary_operator"]
4941 { binary_left_operand
; binary_operator
; binary_right_operand
} ->
4942 ["binary_left_operand"; "binary_operator"; "binary_right_operand"]
4943 | IsExpression
{ is_left_operand
; is_operator
; is_right_operand
} ->
4944 ["is_left_operand"; "is_operator"; "is_right_operand"]
4945 | AsExpression
{ as_left_operand
; as_operator
; as_right_operand
} ->
4946 ["as_left_operand"; "as_operator"; "as_right_operand"]
4947 | NullableAsExpression
4949 nullable_as_left_operand
;
4950 nullable_as_operator
;
4951 nullable_as_right_operand
;
4954 "nullable_as_left_operand";
4955 "nullable_as_operator";
4956 "nullable_as_right_operand";
4959 { upcast_left_operand
; upcast_operator
; upcast_right_operand
} ->
4960 ["upcast_left_operand"; "upcast_operator"; "upcast_right_operand"]
4961 | ConditionalExpression
4964 conditional_question
;
4965 conditional_consequence
;
4967 conditional_alternative
;
4971 "conditional_question";
4972 "conditional_consequence";
4973 "conditional_colon";
4974 "conditional_alternative";
4977 { eval_keyword
; eval_left_paren
; eval_argument
; eval_right_paren
} ->
4978 ["eval_keyword"; "eval_left_paren"; "eval_argument"; "eval_right_paren"]
4983 isset_argument_list
;
4989 "isset_argument_list";
4990 "isset_right_paren";
4992 | FunctionCallExpression
4994 function_call_receiver
;
4995 function_call_type_args
;
4996 function_call_enum_class_label
;
4997 function_call_left_paren
;
4998 function_call_argument_list
;
4999 function_call_right_paren
;
5002 "function_call_receiver";
5003 "function_call_type_args";
5004 "function_call_enum_class_label";
5005 "function_call_left_paren";
5006 "function_call_argument_list";
5007 "function_call_right_paren";
5009 | FunctionPointerExpression
5010 { function_pointer_receiver
; function_pointer_type_args
} ->
5011 ["function_pointer_receiver"; "function_pointer_type_args"]
5012 | ParenthesizedExpression
5014 parenthesized_expression_left_paren
;
5015 parenthesized_expression_expression
;
5016 parenthesized_expression_right_paren
;
5019 "parenthesized_expression_left_paren";
5020 "parenthesized_expression_expression";
5021 "parenthesized_expression_right_paren";
5025 braced_expression_left_brace
;
5026 braced_expression_expression
;
5027 braced_expression_right_brace
;
5030 "braced_expression_left_brace";
5031 "braced_expression_expression";
5032 "braced_expression_right_brace";
5034 | ETSpliceExpression
5036 et_splice_expression_dollar
;
5037 et_splice_expression_left_brace
;
5038 et_splice_expression_expression
;
5039 et_splice_expression_right_brace
;
5042 "et_splice_expression_dollar";
5043 "et_splice_expression_left_brace";
5044 "et_splice_expression_expression";
5045 "et_splice_expression_right_brace";
5047 | EmbeddedBracedExpression
5049 embedded_braced_expression_left_brace
;
5050 embedded_braced_expression_expression
;
5051 embedded_braced_expression_right_brace
;
5054 "embedded_braced_expression_left_brace";
5055 "embedded_braced_expression_expression";
5056 "embedded_braced_expression_right_brace";
5059 { list_keyword
; list_left_paren
; list_members
; list_right_paren
} ->
5060 ["list_keyword"; "list_left_paren"; "list_members"; "list_right_paren"]
5061 | CollectionLiteralExpression
5063 collection_literal_name
;
5064 collection_literal_left_brace
;
5065 collection_literal_initializers
;
5066 collection_literal_right_brace
;
5069 "collection_literal_name";
5070 "collection_literal_left_brace";
5071 "collection_literal_initializers";
5072 "collection_literal_right_brace";
5074 | ObjectCreationExpression
5075 { object_creation_new_keyword
; object_creation_object
} ->
5076 ["object_creation_new_keyword"; "object_creation_object"]
5079 constructor_call_type
;
5080 constructor_call_left_paren
;
5081 constructor_call_argument_list
;
5082 constructor_call_right_paren
;
5085 "constructor_call_type";
5086 "constructor_call_left_paren";
5087 "constructor_call_argument_list";
5088 "constructor_call_right_paren";
5090 | DarrayIntrinsicExpression
5092 darray_intrinsic_keyword
;
5093 darray_intrinsic_explicit_type
;
5094 darray_intrinsic_left_bracket
;
5095 darray_intrinsic_members
;
5096 darray_intrinsic_right_bracket
;
5099 "darray_intrinsic_keyword";
5100 "darray_intrinsic_explicit_type";
5101 "darray_intrinsic_left_bracket";
5102 "darray_intrinsic_members";
5103 "darray_intrinsic_right_bracket";
5105 | DictionaryIntrinsicExpression
5107 dictionary_intrinsic_keyword
;
5108 dictionary_intrinsic_explicit_type
;
5109 dictionary_intrinsic_left_bracket
;
5110 dictionary_intrinsic_members
;
5111 dictionary_intrinsic_right_bracket
;
5114 "dictionary_intrinsic_keyword";
5115 "dictionary_intrinsic_explicit_type";
5116 "dictionary_intrinsic_left_bracket";
5117 "dictionary_intrinsic_members";
5118 "dictionary_intrinsic_right_bracket";
5120 | KeysetIntrinsicExpression
5122 keyset_intrinsic_keyword
;
5123 keyset_intrinsic_explicit_type
;
5124 keyset_intrinsic_left_bracket
;
5125 keyset_intrinsic_members
;
5126 keyset_intrinsic_right_bracket
;
5129 "keyset_intrinsic_keyword";
5130 "keyset_intrinsic_explicit_type";
5131 "keyset_intrinsic_left_bracket";
5132 "keyset_intrinsic_members";
5133 "keyset_intrinsic_right_bracket";
5135 | VarrayIntrinsicExpression
5137 varray_intrinsic_keyword
;
5138 varray_intrinsic_explicit_type
;
5139 varray_intrinsic_left_bracket
;
5140 varray_intrinsic_members
;
5141 varray_intrinsic_right_bracket
;
5144 "varray_intrinsic_keyword";
5145 "varray_intrinsic_explicit_type";
5146 "varray_intrinsic_left_bracket";
5147 "varray_intrinsic_members";
5148 "varray_intrinsic_right_bracket";
5150 | VectorIntrinsicExpression
5152 vector_intrinsic_keyword
;
5153 vector_intrinsic_explicit_type
;
5154 vector_intrinsic_left_bracket
;
5155 vector_intrinsic_members
;
5156 vector_intrinsic_right_bracket
;
5159 "vector_intrinsic_keyword";
5160 "vector_intrinsic_explicit_type";
5161 "vector_intrinsic_left_bracket";
5162 "vector_intrinsic_members";
5163 "vector_intrinsic_right_bracket";
5165 | ElementInitializer
{ element_key
; element_arrow
; element_value
} ->
5166 ["element_key"; "element_arrow"; "element_value"]
5167 | SubscriptExpression
5170 subscript_left_bracket
;
5172 subscript_right_bracket
;
5175 "subscript_receiver";
5176 "subscript_left_bracket";
5178 "subscript_right_bracket";
5180 | EmbeddedSubscriptExpression
5182 embedded_subscript_receiver
;
5183 embedded_subscript_left_bracket
;
5184 embedded_subscript_index
;
5185 embedded_subscript_right_bracket
;
5188 "embedded_subscript_receiver";
5189 "embedded_subscript_left_bracket";
5190 "embedded_subscript_index";
5191 "embedded_subscript_right_bracket";
5193 | AwaitableCreationExpression
5195 awaitable_attribute_spec
;
5197 awaitable_compound_statement
;
5200 "awaitable_attribute_spec";
5202 "awaitable_compound_statement";
5204 | XHPChildrenDeclaration
5206 xhp_children_keyword
;
5207 xhp_children_expression
;
5208 xhp_children_semicolon
;
5211 "xhp_children_keyword";
5212 "xhp_children_expression";
5213 "xhp_children_semicolon";
5215 | XHPChildrenParenthesizedList
5217 xhp_children_list_left_paren
;
5218 xhp_children_list_xhp_children
;
5219 xhp_children_list_right_paren
;
5222 "xhp_children_list_left_paren";
5223 "xhp_children_list_xhp_children";
5224 "xhp_children_list_right_paren";
5226 | XHPCategoryDeclaration
5228 xhp_category_keyword
;
5229 xhp_category_categories
;
5230 xhp_category_semicolon
;
5233 "xhp_category_keyword";
5234 "xhp_category_categories";
5235 "xhp_category_semicolon";
5241 xhp_enum_left_brace
;
5243 xhp_enum_right_brace
;
5248 "xhp_enum_left_brace";
5250 "xhp_enum_right_brace";
5252 | XHPLateinit
{ xhp_lateinit_at
; xhp_lateinit_keyword
} ->
5253 ["xhp_lateinit_at"; "xhp_lateinit_keyword"]
5254 | XHPRequired
{ xhp_required_at
; xhp_required_keyword
} ->
5255 ["xhp_required_at"; "xhp_required_keyword"]
5256 | XHPClassAttributeDeclaration
5258 xhp_attribute_keyword
;
5259 xhp_attribute_attributes
;
5260 xhp_attribute_semicolon
;
5263 "xhp_attribute_keyword";
5264 "xhp_attribute_attributes";
5265 "xhp_attribute_semicolon";
5269 xhp_attribute_decl_type
;
5270 xhp_attribute_decl_name
;
5271 xhp_attribute_decl_initializer
;
5272 xhp_attribute_decl_required
;
5275 "xhp_attribute_decl_type";
5276 "xhp_attribute_decl_name";
5277 "xhp_attribute_decl_initializer";
5278 "xhp_attribute_decl_required";
5280 | XHPSimpleClassAttribute
{ xhp_simple_class_attribute_type
} ->
5281 ["xhp_simple_class_attribute_type"]
5282 | XHPSimpleAttribute
5284 xhp_simple_attribute_name
;
5285 xhp_simple_attribute_equal
;
5286 xhp_simple_attribute_expression
;
5289 "xhp_simple_attribute_name";
5290 "xhp_simple_attribute_equal";
5291 "xhp_simple_attribute_expression";
5293 | XHPSpreadAttribute
5295 xhp_spread_attribute_left_brace
;
5296 xhp_spread_attribute_spread_operator
;
5297 xhp_spread_attribute_expression
;
5298 xhp_spread_attribute_right_brace
;
5301 "xhp_spread_attribute_left_brace";
5302 "xhp_spread_attribute_spread_operator";
5303 "xhp_spread_attribute_expression";
5304 "xhp_spread_attribute_right_brace";
5308 xhp_open_left_angle
;
5310 xhp_open_attributes
;
5311 xhp_open_right_angle
;
5314 "xhp_open_left_angle";
5316 "xhp_open_attributes";
5317 "xhp_open_right_angle";
5319 | XHPExpression
{ xhp_open
; xhp_body
; xhp_close
} ->
5320 ["xhp_open"; "xhp_body"; "xhp_close"]
5321 | XHPClose
{ xhp_close_left_angle
; xhp_close_name
; xhp_close_right_angle
}
5323 ["xhp_close_left_angle"; "xhp_close_name"; "xhp_close_right_angle"]
5326 type_constant_left_type
;
5327 type_constant_separator
;
5328 type_constant_right_type
;
5331 "type_constant_left_type";
5332 "type_constant_separator";
5333 "type_constant_right_type";
5335 | VectorTypeSpecifier
5337 vector_type_keyword
;
5338 vector_type_left_angle
;
5340 vector_type_trailing_comma
;
5341 vector_type_right_angle
;
5344 "vector_type_keyword";
5345 "vector_type_left_angle";
5347 "vector_type_trailing_comma";
5348 "vector_type_right_angle";
5350 | KeysetTypeSpecifier
5352 keyset_type_keyword
;
5353 keyset_type_left_angle
;
5355 keyset_type_trailing_comma
;
5356 keyset_type_right_angle
;
5359 "keyset_type_keyword";
5360 "keyset_type_left_angle";
5362 "keyset_type_trailing_comma";
5363 "keyset_type_right_angle";
5365 | TupleTypeExplicitSpecifier
5368 tuple_type_left_angle
;
5370 tuple_type_right_angle
;
5373 "tuple_type_keyword";
5374 "tuple_type_left_angle";
5376 "tuple_type_right_angle";
5378 | VarrayTypeSpecifier
5383 varray_trailing_comma
;
5388 "varray_left_angle";
5390 "varray_trailing_comma";
5391 "varray_right_angle";
5393 | FunctionCtxTypeSpecifier
5394 { function_ctx_type_keyword
; function_ctx_type_variable
} ->
5395 ["function_ctx_type_keyword"; "function_ctx_type_variable"]
5398 type_attribute_spec
;
5406 "type_attribute_spec";
5410 "type_param_params";
5413 | TypeConstraint
{ constraint_keyword
; constraint_type
} ->
5414 ["constraint_keyword"; "constraint_type"]
5415 | ContextConstraint
{ ctx_constraint_keyword
; ctx_constraint_ctx_list
} ->
5416 ["ctx_constraint_keyword"; "ctx_constraint_ctx_list"]
5417 | DarrayTypeSpecifier
5424 darray_trailing_comma
;
5429 "darray_left_angle";
5433 "darray_trailing_comma";
5434 "darray_right_angle";
5436 | DictionaryTypeSpecifier
5438 dictionary_type_keyword
;
5439 dictionary_type_left_angle
;
5440 dictionary_type_members
;
5441 dictionary_type_right_angle
;
5444 "dictionary_type_keyword";
5445 "dictionary_type_left_angle";
5446 "dictionary_type_members";
5447 "dictionary_type_right_angle";
5449 | ClosureTypeSpecifier
5451 closure_outer_left_paren
;
5452 closure_readonly_keyword
;
5453 closure_function_keyword
;
5454 closure_inner_left_paren
;
5455 closure_parameter_list
;
5456 closure_inner_right_paren
;
5459 closure_readonly_return
;
5460 closure_return_type
;
5461 closure_outer_right_paren
;
5464 "closure_outer_left_paren";
5465 "closure_readonly_keyword";
5466 "closure_function_keyword";
5467 "closure_inner_left_paren";
5468 "closure_parameter_list";
5469 "closure_inner_right_paren";
5472 "closure_readonly_return";
5473 "closure_return_type";
5474 "closure_outer_right_paren";
5476 | ClosureParameterTypeSpecifier
5478 closure_parameter_call_convention
;
5479 closure_parameter_readonly
;
5480 closure_parameter_type
;
5483 "closure_parameter_call_convention";
5484 "closure_parameter_readonly";
5485 "closure_parameter_type";
5487 | ClassnameTypeSpecifier
5490 classname_left_angle
;
5492 classname_trailing_comma
;
5493 classname_right_angle
;
5496 "classname_keyword";
5497 "classname_left_angle";
5499 "classname_trailing_comma";
5500 "classname_right_angle";
5502 | FieldSpecifier
{ field_question
; field_name
; field_arrow
; field_type
}
5504 ["field_question"; "field_name"; "field_arrow"; "field_type"]
5507 field_initializer_name
;
5508 field_initializer_arrow
;
5509 field_initializer_value
;
5512 "field_initializer_name";
5513 "field_initializer_arrow";
5514 "field_initializer_value";
5516 | ShapeTypeSpecifier
5519 shape_type_left_paren
;
5521 shape_type_ellipsis
;
5522 shape_type_right_paren
;
5525 "shape_type_keyword";
5526 "shape_type_left_paren";
5527 "shape_type_fields";
5528 "shape_type_ellipsis";
5529 "shape_type_right_paren";
5533 shape_expression_keyword
;
5534 shape_expression_left_paren
;
5535 shape_expression_fields
;
5536 shape_expression_right_paren
;
5539 "shape_expression_keyword";
5540 "shape_expression_left_paren";
5541 "shape_expression_fields";
5542 "shape_expression_right_paren";
5546 tuple_expression_keyword
;
5547 tuple_expression_left_paren
;
5548 tuple_expression_items
;
5549 tuple_expression_right_paren
;
5552 "tuple_expression_keyword";
5553 "tuple_expression_left_paren";
5554 "tuple_expression_items";
5555 "tuple_expression_right_paren";
5557 | GenericTypeSpecifier
{ generic_class_type
; generic_argument_list
} ->
5558 ["generic_class_type"; "generic_argument_list"]
5559 | NullableTypeSpecifier
{ nullable_question
; nullable_type
} ->
5560 ["nullable_question"; "nullable_type"]
5561 | LikeTypeSpecifier
{ like_tilde
; like_type
} ->
5562 ["like_tilde"; "like_type"]
5563 | SoftTypeSpecifier
{ soft_at
; soft_type
} -> ["soft_at"; "soft_type"]
5564 | AttributizedSpecifier
5565 { attributized_specifier_attribute_spec
; attributized_specifier_type
}
5567 ["attributized_specifier_attribute_spec"; "attributized_specifier_type"]
5568 | ReifiedTypeArgument
5569 { reified_type_argument_reified
; reified_type_argument_type
} ->
5570 ["reified_type_argument_reified"; "reified_type_argument_type"]
5573 type_arguments_left_angle
;
5574 type_arguments_types
;
5575 type_arguments_right_angle
;
5578 "type_arguments_left_angle";
5579 "type_arguments_types";
5580 "type_arguments_right_angle";
5584 type_parameters_left_angle
;
5585 type_parameters_parameters
;
5586 type_parameters_right_angle
;
5589 "type_parameters_left_angle";
5590 "type_parameters_parameters";
5591 "type_parameters_right_angle";
5593 | TupleTypeSpecifier
{ tuple_left_paren
; tuple_types
; tuple_right_paren
}
5595 ["tuple_left_paren"; "tuple_types"; "tuple_right_paren"]
5596 | UnionTypeSpecifier
{ union_left_paren
; union_types
; union_right_paren
}
5598 ["union_left_paren"; "union_types"; "union_right_paren"]
5599 | IntersectionTypeSpecifier
5601 intersection_left_paren
;
5603 intersection_right_paren
;
5606 "intersection_left_paren";
5607 "intersection_types";
5608 "intersection_right_paren";
5610 | ErrorSyntax
{ error_error
} -> ["error_error"]
5611 | ListItem
{ list_item
; list_separator
} ->
5612 ["list_item"; "list_separator"]
5613 | EnumClassLabelExpression
5615 enum_class_label_qualifier
;
5616 enum_class_label_hash
;
5617 enum_class_label_expression
;
5620 "enum_class_label_qualifier";
5621 "enum_class_label_hash";
5622 "enum_class_label_expression";
5625 let rec to_json_ ?
(with_value
= false) ?
(ignore_missing
= false) node
=
5628 match node
.syntax with
5629 | Token t
-> [("token", Token.to_json t
)]
5634 (List.filter_map ~f
:(to_json_ ~with_value ~ignore_missing
) x
) );
5637 let rec aux acc c n
=
5640 | (hc
:: tc
, hn
:: tn
) ->
5641 let result = (to_json_ ~with_value ~ignore_missing
) hc
in
5643 | Some r
-> aux ((hn
, r
) :: acc) tc tn
5644 | None
-> aux acc tc tn
)
5645 | _
-> failwith
"mismatch between children and names"
5647 List.rev
(aux [] (children node
) (children_names node
))
5649 let k = ("kind", JSON_String
(SyntaxKind.to_string
(kind node
))) in
5652 ("value", SyntaxValue.to_json node
.value) :: ch
5656 if ignore_missing
&& List.is_empty
ch then
5659 Some
(JSON_Object
(k :: v))
5661 let to_json ?
(with_value
= false) ?
(ignore_missing
= false) node
=
5662 match to_json_ ~with_value ~ignore_missing node
with
5664 | None
-> Hh_json.JSON_Object
[]
5666 let binary_operator_kind b
=
5669 let kind = Token.kind token
in
5670 if Operator.is_trailing_operator_token
kind then
5671 Some
(Operator.trailing_from_token
kind)
5676 let get_token node
=
5677 match syntax node
with
5678 | Token token
-> Some token
5681 let leading_token node
=
5686 let token = get_token h
in
5687 if Option.is_none
token then
5688 let result = aux (children h
) in
5689 if Option.is_none
result then
5698 let trailing_token node
=
5703 let token = get_token h
in
5704 if Option.is_none
token then
5705 let result = aux (List.rev
(children h
)) in
5706 if Option.is_none
result then
5715 let syntax_from_children kind ts
=
5716 match (kind, ts
) with
5717 | (SyntaxKind.EndOfFile
, [end_of_file_token
]) ->
5718 EndOfFile
{ end_of_file_token
}
5719 | (SyntaxKind.Script
, [script_declarations
]) ->
5720 Script
{ script_declarations
}
5721 | (SyntaxKind.QualifiedName
, [qualified_name_parts
]) ->
5722 QualifiedName
{ qualified_name_parts
}
5723 | (SyntaxKind.SimpleTypeSpecifier
, [simple_type_specifier
]) ->
5724 SimpleTypeSpecifier
{ simple_type_specifier
}
5725 | (SyntaxKind.LiteralExpression
, [literal_expression
]) ->
5726 LiteralExpression
{ literal_expression
}
5727 | ( SyntaxKind.PrefixedStringExpression
,
5728 [prefixed_string_name
; prefixed_string_str
] ) ->
5729 PrefixedStringExpression
{ prefixed_string_name
; prefixed_string_str
}
5730 | ( SyntaxKind.PrefixedCodeExpression
,
5732 prefixed_code_prefix
;
5733 prefixed_code_left_backtick
;
5734 prefixed_code_expression
;
5735 prefixed_code_right_backtick
;
5737 PrefixedCodeExpression
5739 prefixed_code_prefix
;
5740 prefixed_code_left_backtick
;
5741 prefixed_code_expression
;
5742 prefixed_code_right_backtick
;
5744 | (SyntaxKind.VariableExpression
, [variable_expression
]) ->
5745 VariableExpression
{ variable_expression
}
5746 | (SyntaxKind.PipeVariableExpression
, [pipe_variable_expression
]) ->
5747 PipeVariableExpression
{ pipe_variable_expression
}
5748 | ( SyntaxKind.FileAttributeSpecification
,
5750 file_attribute_specification_left_double_angle
;
5751 file_attribute_specification_keyword
;
5752 file_attribute_specification_colon
;
5753 file_attribute_specification_attributes
;
5754 file_attribute_specification_right_double_angle
;
5756 FileAttributeSpecification
5758 file_attribute_specification_left_double_angle
;
5759 file_attribute_specification_keyword
;
5760 file_attribute_specification_colon
;
5761 file_attribute_specification_attributes
;
5762 file_attribute_specification_right_double_angle
;
5764 | ( SyntaxKind.EnumDeclaration
,
5766 enum_attribute_spec
;
5779 enum_attribute_spec
;
5790 | ( SyntaxKind.EnumUse
,
5791 [enum_use_keyword
; enum_use_names
; enum_use_semicolon
] ) ->
5792 EnumUse
{ enum_use_keyword
; enum_use_names
; enum_use_semicolon
}
5793 | ( SyntaxKind.Enumerator
,
5798 enumerator_semicolon
;
5805 enumerator_semicolon
;
5807 | ( SyntaxKind.EnumClassDeclaration
,
5809 enum_class_attribute_spec
;
5810 enum_class_modifiers
;
5811 enum_class_enum_keyword
;
5812 enum_class_class_keyword
;
5817 enum_class_extends_list
;
5818 enum_class_left_brace
;
5819 enum_class_elements
;
5820 enum_class_right_brace
;
5822 EnumClassDeclaration
5824 enum_class_attribute_spec
;
5825 enum_class_modifiers
;
5826 enum_class_enum_keyword
;
5827 enum_class_class_keyword
;
5832 enum_class_extends_list
;
5833 enum_class_left_brace
;
5834 enum_class_elements
;
5835 enum_class_right_brace
;
5837 | ( SyntaxKind.EnumClassEnumerator
,
5839 enum_class_enumerator_modifiers
;
5840 enum_class_enumerator_type
;
5841 enum_class_enumerator_name
;
5842 enum_class_enumerator_initializer
;
5843 enum_class_enumerator_semicolon
;
5847 enum_class_enumerator_modifiers
;
5848 enum_class_enumerator_type
;
5849 enum_class_enumerator_name
;
5850 enum_class_enumerator_initializer
;
5851 enum_class_enumerator_semicolon
;
5853 | ( SyntaxKind.AliasDeclaration
,
5855 alias_attribute_spec
;
5858 alias_generic_parameter
;
5866 alias_attribute_spec
;
5869 alias_generic_parameter
;
5875 | ( SyntaxKind.ContextAliasDeclaration
,
5877 ctx_alias_attribute_spec
;
5880 ctx_alias_generic_parameter
;
5881 ctx_alias_as_constraint
;
5884 ctx_alias_semicolon
;
5886 ContextAliasDeclaration
5888 ctx_alias_attribute_spec
;
5891 ctx_alias_generic_parameter
;
5892 ctx_alias_as_constraint
;
5895 ctx_alias_semicolon
;
5897 | ( SyntaxKind.PropertyDeclaration
,
5899 property_attribute_spec
;
5902 property_declarators
;
5907 property_attribute_spec
;
5910 property_declarators
;
5913 | (SyntaxKind.PropertyDeclarator
, [property_name
; property_initializer
])
5915 PropertyDeclarator
{ property_name
; property_initializer
}
5916 | (SyntaxKind.NamespaceDeclaration
, [namespace_header
; namespace_body
]) ->
5917 NamespaceDeclaration
{ namespace_header
; namespace_body
}
5918 | ( SyntaxKind.NamespaceDeclarationHeader
,
5919 [namespace_keyword
; namespace_name
] ) ->
5920 NamespaceDeclarationHeader
{ namespace_keyword
; namespace_name
}
5921 | ( SyntaxKind.NamespaceBody
,
5922 [namespace_left_brace
; namespace_declarations
; namespace_right_brace
]
5926 namespace_left_brace
;
5927 namespace_declarations
;
5928 namespace_right_brace
;
5930 | (SyntaxKind.NamespaceEmptyBody
, [namespace_semicolon
]) ->
5931 NamespaceEmptyBody
{ namespace_semicolon
}
5932 | ( SyntaxKind.NamespaceUseDeclaration
,
5934 namespace_use_keyword
;
5936 namespace_use_clauses
;
5937 namespace_use_semicolon
;
5939 NamespaceUseDeclaration
5941 namespace_use_keyword
;
5943 namespace_use_clauses
;
5944 namespace_use_semicolon
;
5946 | ( SyntaxKind.NamespaceGroupUseDeclaration
,
5948 namespace_group_use_keyword
;
5949 namespace_group_use_kind
;
5950 namespace_group_use_prefix
;
5951 namespace_group_use_left_brace
;
5952 namespace_group_use_clauses
;
5953 namespace_group_use_right_brace
;
5954 namespace_group_use_semicolon
;
5956 NamespaceGroupUseDeclaration
5958 namespace_group_use_keyword
;
5959 namespace_group_use_kind
;
5960 namespace_group_use_prefix
;
5961 namespace_group_use_left_brace
;
5962 namespace_group_use_clauses
;
5963 namespace_group_use_right_brace
;
5964 namespace_group_use_semicolon
;
5966 | ( SyntaxKind.NamespaceUseClause
,
5968 namespace_use_clause_kind
;
5971 namespace_use_alias
;
5975 namespace_use_clause_kind
;
5978 namespace_use_alias
;
5980 | ( SyntaxKind.FunctionDeclaration
,
5981 [function_attribute_spec
; function_declaration_header
; function_body
]
5985 function_attribute_spec
;
5986 function_declaration_header
;
5989 | ( SyntaxKind.FunctionDeclarationHeader
,
5994 function_type_parameter_list
;
5995 function_left_paren
;
5996 function_parameter_list
;
5997 function_right_paren
;
6000 function_readonly_return
;
6002 function_where_clause
;
6004 FunctionDeclarationHeader
6009 function_type_parameter_list
;
6010 function_left_paren
;
6011 function_parameter_list
;
6012 function_right_paren
;
6015 function_readonly_return
;
6017 function_where_clause
;
6019 | ( SyntaxKind.Contexts
,
6020 [contexts_left_bracket
; contexts_types
; contexts_right_bracket
] ) ->
6022 { contexts_left_bracket
; contexts_types
; contexts_right_bracket
}
6023 | ( SyntaxKind.WhereClause
,
6024 [where_clause_keyword
; where_clause_constraints
] ) ->
6025 WhereClause
{ where_clause_keyword
; where_clause_constraints
}
6026 | ( SyntaxKind.WhereConstraint
,
6028 where_constraint_left_type
;
6029 where_constraint_operator
;
6030 where_constraint_right_type
;
6034 where_constraint_left_type
;
6035 where_constraint_operator
;
6036 where_constraint_right_type
;
6038 | ( SyntaxKind.MethodishDeclaration
,
6040 methodish_attribute
;
6041 methodish_function_decl_header
;
6042 methodish_function_body
;
6043 methodish_semicolon
;
6045 MethodishDeclaration
6047 methodish_attribute
;
6048 methodish_function_decl_header
;
6049 methodish_function_body
;
6050 methodish_semicolon
;
6052 | ( SyntaxKind.MethodishTraitResolution
,
6054 methodish_trait_attribute
;
6055 methodish_trait_function_decl_header
;
6056 methodish_trait_equal
;
6057 methodish_trait_name
;
6058 methodish_trait_semicolon
;
6060 MethodishTraitResolution
6062 methodish_trait_attribute
;
6063 methodish_trait_function_decl_header
;
6064 methodish_trait_equal
;
6065 methodish_trait_name
;
6066 methodish_trait_semicolon
;
6068 | ( SyntaxKind.ClassishDeclaration
,
6075 classish_type_parameters
;
6076 classish_extends_keyword
;
6077 classish_extends_list
;
6078 classish_implements_keyword
;
6079 classish_implements_list
;
6080 classish_where_clause
;
6090 classish_type_parameters
;
6091 classish_extends_keyword
;
6092 classish_extends_list
;
6093 classish_implements_keyword
;
6094 classish_implements_list
;
6095 classish_where_clause
;
6098 | ( SyntaxKind.ClassishBody
,
6100 classish_body_left_brace
;
6101 classish_body_elements
;
6102 classish_body_right_brace
;
6106 classish_body_left_brace
;
6107 classish_body_elements
;
6108 classish_body_right_brace
;
6110 | ( SyntaxKind.TraitUsePrecedenceItem
,
6112 trait_use_precedence_item_name
;
6113 trait_use_precedence_item_keyword
;
6114 trait_use_precedence_item_removed_names
;
6116 TraitUsePrecedenceItem
6118 trait_use_precedence_item_name
;
6119 trait_use_precedence_item_keyword
;
6120 trait_use_precedence_item_removed_names
;
6122 | ( SyntaxKind.TraitUseAliasItem
,
6124 trait_use_alias_item_aliasing_name
;
6125 trait_use_alias_item_keyword
;
6126 trait_use_alias_item_modifiers
;
6127 trait_use_alias_item_aliased_name
;
6131 trait_use_alias_item_aliasing_name
;
6132 trait_use_alias_item_keyword
;
6133 trait_use_alias_item_modifiers
;
6134 trait_use_alias_item_aliased_name
;
6136 | ( SyntaxKind.TraitUseConflictResolution
,
6138 trait_use_conflict_resolution_keyword
;
6139 trait_use_conflict_resolution_names
;
6140 trait_use_conflict_resolution_left_brace
;
6141 trait_use_conflict_resolution_clauses
;
6142 trait_use_conflict_resolution_right_brace
;
6144 TraitUseConflictResolution
6146 trait_use_conflict_resolution_keyword
;
6147 trait_use_conflict_resolution_names
;
6148 trait_use_conflict_resolution_left_brace
;
6149 trait_use_conflict_resolution_clauses
;
6150 trait_use_conflict_resolution_right_brace
;
6152 | ( SyntaxKind.TraitUse
,
6153 [trait_use_keyword
; trait_use_names
; trait_use_semicolon
] ) ->
6154 TraitUse
{ trait_use_keyword
; trait_use_names
; trait_use_semicolon
}
6155 | ( SyntaxKind.RequireClause
,
6156 [require_keyword
; require_kind
; require_name
; require_semicolon
] ) ->
6158 { require_keyword
; require_kind
; require_name
; require_semicolon
}
6159 | ( SyntaxKind.ConstDeclaration
,
6161 const_attribute_spec
;
6164 const_type_specifier
;
6170 const_attribute_spec
;
6173 const_type_specifier
;
6177 | ( SyntaxKind.ConstantDeclarator
,
6178 [constant_declarator_name
; constant_declarator_initializer
] ) ->
6180 { constant_declarator_name
; constant_declarator_initializer
}
6181 | ( SyntaxKind.TypeConstDeclaration
,
6183 type_const_attribute_spec
;
6184 type_const_modifiers
;
6186 type_const_type_keyword
;
6188 type_const_type_parameters
;
6189 type_const_type_constraint
;
6191 type_const_type_specifier
;
6192 type_const_semicolon
;
6194 TypeConstDeclaration
6196 type_const_attribute_spec
;
6197 type_const_modifiers
;
6199 type_const_type_keyword
;
6201 type_const_type_parameters
;
6202 type_const_type_constraint
;
6204 type_const_type_specifier
;
6205 type_const_semicolon
;
6207 | ( SyntaxKind.ContextConstDeclaration
,
6209 context_const_modifiers
;
6210 context_const_const_keyword
;
6211 context_const_ctx_keyword
;
6213 context_const_type_parameters
;
6214 context_const_constraint
;
6215 context_const_equal
;
6216 context_const_ctx_list
;
6217 context_const_semicolon
;
6219 ContextConstDeclaration
6221 context_const_modifiers
;
6222 context_const_const_keyword
;
6223 context_const_ctx_keyword
;
6225 context_const_type_parameters
;
6226 context_const_constraint
;
6227 context_const_equal
;
6228 context_const_ctx_list
;
6229 context_const_semicolon
;
6231 | ( SyntaxKind.DecoratedExpression
,
6232 [decorated_expression_decorator
; decorated_expression_expression
] ) ->
6234 { decorated_expression_decorator
; decorated_expression_expression
}
6235 | ( SyntaxKind.ParameterDeclaration
,
6237 parameter_attribute
;
6238 parameter_visibility
;
6239 parameter_call_convention
;
6243 parameter_default_value
;
6245 ParameterDeclaration
6247 parameter_attribute
;
6248 parameter_visibility
;
6249 parameter_call_convention
;
6253 parameter_default_value
;
6255 | ( SyntaxKind.VariadicParameter
,
6257 variadic_parameter_call_convention
;
6258 variadic_parameter_type
;
6259 variadic_parameter_ellipsis
;
6263 variadic_parameter_call_convention
;
6264 variadic_parameter_type
;
6265 variadic_parameter_ellipsis
;
6267 | ( SyntaxKind.OldAttributeSpecification
,
6269 old_attribute_specification_left_double_angle
;
6270 old_attribute_specification_attributes
;
6271 old_attribute_specification_right_double_angle
;
6273 OldAttributeSpecification
6275 old_attribute_specification_left_double_angle
;
6276 old_attribute_specification_attributes
;
6277 old_attribute_specification_right_double_angle
;
6279 | (SyntaxKind.AttributeSpecification
, [attribute_specification_attributes
])
6281 AttributeSpecification
{ attribute_specification_attributes
}
6282 | (SyntaxKind.Attribute
, [attribute_at
; attribute_attribute_name
]) ->
6283 Attribute
{ attribute_at
; attribute_attribute_name
}
6284 | (SyntaxKind.InclusionExpression
, [inclusion_require
; inclusion_filename
])
6286 InclusionExpression
{ inclusion_require
; inclusion_filename
}
6287 | ( SyntaxKind.InclusionDirective
,
6288 [inclusion_expression
; inclusion_semicolon
] ) ->
6289 InclusionDirective
{ inclusion_expression
; inclusion_semicolon
}
6290 | ( SyntaxKind.CompoundStatement
,
6291 [compound_left_brace
; compound_statements
; compound_right_brace
] ) ->
6293 { compound_left_brace
; compound_statements
; compound_right_brace
}
6294 | ( SyntaxKind.ExpressionStatement
,
6295 [expression_statement_expression
; expression_statement_semicolon
] ) ->
6297 { expression_statement_expression
; expression_statement_semicolon
}
6298 | (SyntaxKind.MarkupSection
, [markup_hashbang
; markup_suffix
]) ->
6299 MarkupSection
{ markup_hashbang
; markup_suffix
}
6300 | ( SyntaxKind.MarkupSuffix
,
6301 [markup_suffix_less_than_question
; markup_suffix_name
] ) ->
6302 MarkupSuffix
{ markup_suffix_less_than_question
; markup_suffix_name
}
6303 | ( SyntaxKind.UnsetStatement
,
6319 | ( SyntaxKind.UsingStatementBlockScoped
,
6321 using_block_await_keyword
;
6322 using_block_using_keyword
;
6323 using_block_left_paren
;
6324 using_block_expressions
;
6325 using_block_right_paren
;
6328 UsingStatementBlockScoped
6330 using_block_await_keyword
;
6331 using_block_using_keyword
;
6332 using_block_left_paren
;
6333 using_block_expressions
;
6334 using_block_right_paren
;
6337 | ( SyntaxKind.UsingStatementFunctionScoped
,
6339 using_function_await_keyword
;
6340 using_function_using_keyword
;
6341 using_function_expression
;
6342 using_function_semicolon
;
6344 UsingStatementFunctionScoped
6346 using_function_await_keyword
;
6347 using_function_using_keyword
;
6348 using_function_expression
;
6349 using_function_semicolon
;
6351 | ( SyntaxKind.WhileStatement
,
6367 | ( SyntaxKind.IfStatement
,
6387 | ( SyntaxKind.ElseifClause
,
6403 | (SyntaxKind.ElseClause
, [else_keyword
; else_statement
]) ->
6404 ElseClause
{ else_keyword
; else_statement
}
6405 | ( SyntaxKind.TryStatement
,
6408 try_compound_statement
;
6415 try_compound_statement
;
6419 | ( SyntaxKind.CatchClause
,
6437 | (SyntaxKind.FinallyClause
, [finally_keyword
; finally_body
]) ->
6438 FinallyClause
{ finally_keyword
; finally_body
}
6439 | ( SyntaxKind.DoStatement
,
6459 | ( SyntaxKind.ForStatement
,
6464 for_first_semicolon
;
6466 for_second_semicolon
;
6476 for_first_semicolon
;
6478 for_second_semicolon
;
6483 | ( SyntaxKind.ForeachStatement
,
6488 foreach_await_keyword
;
6493 foreach_right_paren
;
6501 foreach_await_keyword
;
6506 foreach_right_paren
;
6509 | ( SyntaxKind.SwitchStatement
,
6529 | ( SyntaxKind.SwitchSection
,
6531 switch_section_labels
;
6532 switch_section_statements
;
6533 switch_section_fallthrough
;
6537 switch_section_labels
;
6538 switch_section_statements
;
6539 switch_section_fallthrough
;
6541 | ( SyntaxKind.SwitchFallthrough
,
6542 [fallthrough_keyword
; fallthrough_semicolon
] ) ->
6543 SwitchFallthrough
{ fallthrough_keyword
; fallthrough_semicolon
}
6544 | (SyntaxKind.CaseLabel
, [case_keyword
; case_expression
; case_colon
]) ->
6545 CaseLabel
{ case_keyword
; case_expression
; case_colon
}
6546 | (SyntaxKind.DefaultLabel
, [default_keyword
; default_colon
]) ->
6547 DefaultLabel
{ default_keyword
; default_colon
}
6548 | ( SyntaxKind.ReturnStatement
,
6549 [return_keyword
; return_expression
; return_semicolon
] ) ->
6550 ReturnStatement
{ return_keyword
; return_expression
; return_semicolon
}
6551 | ( SyntaxKind.YieldBreakStatement
,
6552 [yield_break_keyword
; yield_break_break
; yield_break_semicolon
] ) ->
6554 { yield_break_keyword
; yield_break_break
; yield_break_semicolon
}
6555 | ( SyntaxKind.ThrowStatement
,
6556 [throw_keyword
; throw_expression
; throw_semicolon
] ) ->
6557 ThrowStatement
{ throw_keyword
; throw_expression
; throw_semicolon
}
6558 | (SyntaxKind.BreakStatement
, [break_keyword
; break_semicolon
]) ->
6559 BreakStatement
{ break_keyword
; break_semicolon
}
6560 | (SyntaxKind.ContinueStatement
, [continue_keyword
; continue_semicolon
])
6562 ContinueStatement
{ continue_keyword
; continue_semicolon
}
6563 | ( SyntaxKind.EchoStatement
,
6564 [echo_keyword
; echo_expressions
; echo_semicolon
] ) ->
6565 EchoStatement
{ echo_keyword
; echo_expressions
; echo_semicolon
}
6566 | ( SyntaxKind.ConcurrentStatement
,
6567 [concurrent_keyword
; concurrent_statement
] ) ->
6568 ConcurrentStatement
{ concurrent_keyword
; concurrent_statement
}
6569 | ( SyntaxKind.SimpleInitializer
,
6570 [simple_initializer_equal
; simple_initializer_value
] ) ->
6571 SimpleInitializer
{ simple_initializer_equal
; simple_initializer_value
}
6572 | ( SyntaxKind.AnonymousClass
,
6574 anonymous_class_class_keyword
;
6575 anonymous_class_left_paren
;
6576 anonymous_class_argument_list
;
6577 anonymous_class_right_paren
;
6578 anonymous_class_extends_keyword
;
6579 anonymous_class_extends_list
;
6580 anonymous_class_implements_keyword
;
6581 anonymous_class_implements_list
;
6582 anonymous_class_body
;
6586 anonymous_class_class_keyword
;
6587 anonymous_class_left_paren
;
6588 anonymous_class_argument_list
;
6589 anonymous_class_right_paren
;
6590 anonymous_class_extends_keyword
;
6591 anonymous_class_extends_list
;
6592 anonymous_class_implements_keyword
;
6593 anonymous_class_implements_list
;
6594 anonymous_class_body
;
6596 | ( SyntaxKind.AnonymousFunction
,
6598 anonymous_attribute_spec
;
6599 anonymous_async_keyword
;
6600 anonymous_function_keyword
;
6601 anonymous_left_paren
;
6602 anonymous_parameters
;
6603 anonymous_right_paren
;
6606 anonymous_readonly_return
;
6613 anonymous_attribute_spec
;
6614 anonymous_async_keyword
;
6615 anonymous_function_keyword
;
6616 anonymous_left_paren
;
6617 anonymous_parameters
;
6618 anonymous_right_paren
;
6621 anonymous_readonly_return
;
6626 | ( SyntaxKind.AnonymousFunctionUseClause
,
6628 anonymous_use_keyword
;
6629 anonymous_use_left_paren
;
6630 anonymous_use_variables
;
6631 anonymous_use_right_paren
;
6633 AnonymousFunctionUseClause
6635 anonymous_use_keyword
;
6636 anonymous_use_left_paren
;
6637 anonymous_use_variables
;
6638 anonymous_use_right_paren
;
6640 | ( SyntaxKind.LambdaExpression
,
6642 lambda_attribute_spec
;
6650 lambda_attribute_spec
;
6656 | ( SyntaxKind.LambdaSignature
,
6663 lambda_readonly_return
;
6673 lambda_readonly_return
;
6676 | ( SyntaxKind.CastExpression
,
6677 [cast_left_paren
; cast_type
; cast_right_paren
; cast_operand
] ) ->
6679 { cast_left_paren
; cast_type
; cast_right_paren
; cast_operand
}
6680 | ( SyntaxKind.ScopeResolutionExpression
,
6682 scope_resolution_qualifier
;
6683 scope_resolution_operator
;
6684 scope_resolution_name
;
6686 ScopeResolutionExpression
6688 scope_resolution_qualifier
;
6689 scope_resolution_operator
;
6690 scope_resolution_name
;
6692 | ( SyntaxKind.MemberSelectionExpression
,
6693 [member_object
; member_operator
; member_name
] ) ->
6694 MemberSelectionExpression
6695 { member_object
; member_operator
; member_name
}
6696 | ( SyntaxKind.SafeMemberSelectionExpression
,
6697 [safe_member_object
; safe_member_operator
; safe_member_name
] ) ->
6698 SafeMemberSelectionExpression
6699 { safe_member_object
; safe_member_operator
; safe_member_name
}
6700 | ( SyntaxKind.EmbeddedMemberSelectionExpression
,
6702 embedded_member_object
;
6703 embedded_member_operator
;
6704 embedded_member_name
;
6706 EmbeddedMemberSelectionExpression
6708 embedded_member_object
;
6709 embedded_member_operator
;
6710 embedded_member_name
;
6712 | (SyntaxKind.YieldExpression
, [yield_keyword
; yield_operand
]) ->
6713 YieldExpression
{ yield_keyword
; yield_operand
}
6714 | ( SyntaxKind.PrefixUnaryExpression
,
6715 [prefix_unary_operator
; prefix_unary_operand
] ) ->
6716 PrefixUnaryExpression
{ prefix_unary_operator
; prefix_unary_operand
}
6717 | ( SyntaxKind.PostfixUnaryExpression
,
6718 [postfix_unary_operand
; postfix_unary_operator
] ) ->
6719 PostfixUnaryExpression
{ postfix_unary_operand
; postfix_unary_operator
}
6720 | ( SyntaxKind.BinaryExpression
,
6721 [binary_left_operand
; binary_operator
; binary_right_operand
] ) ->
6723 { binary_left_operand
; binary_operator
; binary_right_operand
}
6724 | ( SyntaxKind.IsExpression
,
6725 [is_left_operand
; is_operator
; is_right_operand
] ) ->
6726 IsExpression
{ is_left_operand
; is_operator
; is_right_operand
}
6727 | ( SyntaxKind.AsExpression
,
6728 [as_left_operand
; as_operator
; as_right_operand
] ) ->
6729 AsExpression
{ as_left_operand
; as_operator
; as_right_operand
}
6730 | ( SyntaxKind.NullableAsExpression
,
6732 nullable_as_left_operand
;
6733 nullable_as_operator
;
6734 nullable_as_right_operand
;
6736 NullableAsExpression
6738 nullable_as_left_operand
;
6739 nullable_as_operator
;
6740 nullable_as_right_operand
;
6742 | ( SyntaxKind.UpcastExpression
,
6743 [upcast_left_operand
; upcast_operator
; upcast_right_operand
] ) ->
6745 { upcast_left_operand
; upcast_operator
; upcast_right_operand
}
6746 | ( SyntaxKind.ConditionalExpression
,
6749 conditional_question
;
6750 conditional_consequence
;
6752 conditional_alternative
;
6754 ConditionalExpression
6757 conditional_question
;
6758 conditional_consequence
;
6760 conditional_alternative
;
6762 | ( SyntaxKind.EvalExpression
,
6763 [eval_keyword
; eval_left_paren
; eval_argument
; eval_right_paren
] ) ->
6765 { eval_keyword
; eval_left_paren
; eval_argument
; eval_right_paren
}
6766 | ( SyntaxKind.IssetExpression
,
6770 isset_argument_list
;
6777 isset_argument_list
;
6780 | ( SyntaxKind.FunctionCallExpression
,
6782 function_call_receiver
;
6783 function_call_type_args
;
6784 function_call_enum_class_label
;
6785 function_call_left_paren
;
6786 function_call_argument_list
;
6787 function_call_right_paren
;
6789 FunctionCallExpression
6791 function_call_receiver
;
6792 function_call_type_args
;
6793 function_call_enum_class_label
;
6794 function_call_left_paren
;
6795 function_call_argument_list
;
6796 function_call_right_paren
;
6798 | ( SyntaxKind.FunctionPointerExpression
,
6799 [function_pointer_receiver
; function_pointer_type_args
] ) ->
6800 FunctionPointerExpression
6801 { function_pointer_receiver
; function_pointer_type_args
}
6802 | ( SyntaxKind.ParenthesizedExpression
,
6804 parenthesized_expression_left_paren
;
6805 parenthesized_expression_expression
;
6806 parenthesized_expression_right_paren
;
6808 ParenthesizedExpression
6810 parenthesized_expression_left_paren
;
6811 parenthesized_expression_expression
;
6812 parenthesized_expression_right_paren
;
6814 | ( SyntaxKind.BracedExpression
,
6816 braced_expression_left_brace
;
6817 braced_expression_expression
;
6818 braced_expression_right_brace
;
6822 braced_expression_left_brace
;
6823 braced_expression_expression
;
6824 braced_expression_right_brace
;
6826 | ( SyntaxKind.ETSpliceExpression
,
6828 et_splice_expression_dollar
;
6829 et_splice_expression_left_brace
;
6830 et_splice_expression_expression
;
6831 et_splice_expression_right_brace
;
6835 et_splice_expression_dollar
;
6836 et_splice_expression_left_brace
;
6837 et_splice_expression_expression
;
6838 et_splice_expression_right_brace
;
6840 | ( SyntaxKind.EmbeddedBracedExpression
,
6842 embedded_braced_expression_left_brace
;
6843 embedded_braced_expression_expression
;
6844 embedded_braced_expression_right_brace
;
6846 EmbeddedBracedExpression
6848 embedded_braced_expression_left_brace
;
6849 embedded_braced_expression_expression
;
6850 embedded_braced_expression_right_brace
;
6852 | ( SyntaxKind.ListExpression
,
6853 [list_keyword
; list_left_paren
; list_members
; list_right_paren
] ) ->
6855 { list_keyword
; list_left_paren
; list_members
; list_right_paren
}
6856 | ( SyntaxKind.CollectionLiteralExpression
,
6858 collection_literal_name
;
6859 collection_literal_left_brace
;
6860 collection_literal_initializers
;
6861 collection_literal_right_brace
;
6863 CollectionLiteralExpression
6865 collection_literal_name
;
6866 collection_literal_left_brace
;
6867 collection_literal_initializers
;
6868 collection_literal_right_brace
;
6870 | ( SyntaxKind.ObjectCreationExpression
,
6871 [object_creation_new_keyword
; object_creation_object
] ) ->
6872 ObjectCreationExpression
6873 { object_creation_new_keyword
; object_creation_object
}
6874 | ( SyntaxKind.ConstructorCall
,
6876 constructor_call_type
;
6877 constructor_call_left_paren
;
6878 constructor_call_argument_list
;
6879 constructor_call_right_paren
;
6883 constructor_call_type
;
6884 constructor_call_left_paren
;
6885 constructor_call_argument_list
;
6886 constructor_call_right_paren
;
6888 | ( SyntaxKind.DarrayIntrinsicExpression
,
6890 darray_intrinsic_keyword
;
6891 darray_intrinsic_explicit_type
;
6892 darray_intrinsic_left_bracket
;
6893 darray_intrinsic_members
;
6894 darray_intrinsic_right_bracket
;
6896 DarrayIntrinsicExpression
6898 darray_intrinsic_keyword
;
6899 darray_intrinsic_explicit_type
;
6900 darray_intrinsic_left_bracket
;
6901 darray_intrinsic_members
;
6902 darray_intrinsic_right_bracket
;
6904 | ( SyntaxKind.DictionaryIntrinsicExpression
,
6906 dictionary_intrinsic_keyword
;
6907 dictionary_intrinsic_explicit_type
;
6908 dictionary_intrinsic_left_bracket
;
6909 dictionary_intrinsic_members
;
6910 dictionary_intrinsic_right_bracket
;
6912 DictionaryIntrinsicExpression
6914 dictionary_intrinsic_keyword
;
6915 dictionary_intrinsic_explicit_type
;
6916 dictionary_intrinsic_left_bracket
;
6917 dictionary_intrinsic_members
;
6918 dictionary_intrinsic_right_bracket
;
6920 | ( SyntaxKind.KeysetIntrinsicExpression
,
6922 keyset_intrinsic_keyword
;
6923 keyset_intrinsic_explicit_type
;
6924 keyset_intrinsic_left_bracket
;
6925 keyset_intrinsic_members
;
6926 keyset_intrinsic_right_bracket
;
6928 KeysetIntrinsicExpression
6930 keyset_intrinsic_keyword
;
6931 keyset_intrinsic_explicit_type
;
6932 keyset_intrinsic_left_bracket
;
6933 keyset_intrinsic_members
;
6934 keyset_intrinsic_right_bracket
;
6936 | ( SyntaxKind.VarrayIntrinsicExpression
,
6938 varray_intrinsic_keyword
;
6939 varray_intrinsic_explicit_type
;
6940 varray_intrinsic_left_bracket
;
6941 varray_intrinsic_members
;
6942 varray_intrinsic_right_bracket
;
6944 VarrayIntrinsicExpression
6946 varray_intrinsic_keyword
;
6947 varray_intrinsic_explicit_type
;
6948 varray_intrinsic_left_bracket
;
6949 varray_intrinsic_members
;
6950 varray_intrinsic_right_bracket
;
6952 | ( SyntaxKind.VectorIntrinsicExpression
,
6954 vector_intrinsic_keyword
;
6955 vector_intrinsic_explicit_type
;
6956 vector_intrinsic_left_bracket
;
6957 vector_intrinsic_members
;
6958 vector_intrinsic_right_bracket
;
6960 VectorIntrinsicExpression
6962 vector_intrinsic_keyword
;
6963 vector_intrinsic_explicit_type
;
6964 vector_intrinsic_left_bracket
;
6965 vector_intrinsic_members
;
6966 vector_intrinsic_right_bracket
;
6968 | ( SyntaxKind.ElementInitializer
,
6969 [element_key
; element_arrow
; element_value
] ) ->
6970 ElementInitializer
{ element_key
; element_arrow
; element_value
}
6971 | ( SyntaxKind.SubscriptExpression
,
6974 subscript_left_bracket
;
6976 subscript_right_bracket
;
6981 subscript_left_bracket
;
6983 subscript_right_bracket
;
6985 | ( SyntaxKind.EmbeddedSubscriptExpression
,
6987 embedded_subscript_receiver
;
6988 embedded_subscript_left_bracket
;
6989 embedded_subscript_index
;
6990 embedded_subscript_right_bracket
;
6992 EmbeddedSubscriptExpression
6994 embedded_subscript_receiver
;
6995 embedded_subscript_left_bracket
;
6996 embedded_subscript_index
;
6997 embedded_subscript_right_bracket
;
6999 | ( SyntaxKind.AwaitableCreationExpression
,
7001 awaitable_attribute_spec
;
7003 awaitable_compound_statement
;
7005 AwaitableCreationExpression
7007 awaitable_attribute_spec
;
7009 awaitable_compound_statement
;
7011 | ( SyntaxKind.XHPChildrenDeclaration
,
7013 xhp_children_keyword
; xhp_children_expression
; xhp_children_semicolon
;
7015 XHPChildrenDeclaration
7017 xhp_children_keyword
;
7018 xhp_children_expression
;
7019 xhp_children_semicolon
;
7021 | ( SyntaxKind.XHPChildrenParenthesizedList
,
7023 xhp_children_list_left_paren
;
7024 xhp_children_list_xhp_children
;
7025 xhp_children_list_right_paren
;
7027 XHPChildrenParenthesizedList
7029 xhp_children_list_left_paren
;
7030 xhp_children_list_xhp_children
;
7031 xhp_children_list_right_paren
;
7033 | ( SyntaxKind.XHPCategoryDeclaration
,
7035 xhp_category_keyword
; xhp_category_categories
; xhp_category_semicolon
;
7037 XHPCategoryDeclaration
7039 xhp_category_keyword
;
7040 xhp_category_categories
;
7041 xhp_category_semicolon
;
7043 | ( SyntaxKind.XHPEnumType
,
7047 xhp_enum_left_brace
;
7049 xhp_enum_right_brace
;
7055 xhp_enum_left_brace
;
7057 xhp_enum_right_brace
;
7059 | (SyntaxKind.XHPLateinit
, [xhp_lateinit_at
; xhp_lateinit_keyword
]) ->
7060 XHPLateinit
{ xhp_lateinit_at
; xhp_lateinit_keyword
}
7061 | (SyntaxKind.XHPRequired
, [xhp_required_at
; xhp_required_keyword
]) ->
7062 XHPRequired
{ xhp_required_at
; xhp_required_keyword
}
7063 | ( SyntaxKind.XHPClassAttributeDeclaration
,
7065 xhp_attribute_keyword
;
7066 xhp_attribute_attributes
;
7067 xhp_attribute_semicolon
;
7069 XHPClassAttributeDeclaration
7071 xhp_attribute_keyword
;
7072 xhp_attribute_attributes
;
7073 xhp_attribute_semicolon
;
7075 | ( SyntaxKind.XHPClassAttribute
,
7077 xhp_attribute_decl_type
;
7078 xhp_attribute_decl_name
;
7079 xhp_attribute_decl_initializer
;
7080 xhp_attribute_decl_required
;
7084 xhp_attribute_decl_type
;
7085 xhp_attribute_decl_name
;
7086 xhp_attribute_decl_initializer
;
7087 xhp_attribute_decl_required
;
7089 | (SyntaxKind.XHPSimpleClassAttribute
, [xhp_simple_class_attribute_type
])
7091 XHPSimpleClassAttribute
{ xhp_simple_class_attribute_type
}
7092 | ( SyntaxKind.XHPSimpleAttribute
,
7094 xhp_simple_attribute_name
;
7095 xhp_simple_attribute_equal
;
7096 xhp_simple_attribute_expression
;
7100 xhp_simple_attribute_name
;
7101 xhp_simple_attribute_equal
;
7102 xhp_simple_attribute_expression
;
7104 | ( SyntaxKind.XHPSpreadAttribute
,
7106 xhp_spread_attribute_left_brace
;
7107 xhp_spread_attribute_spread_operator
;
7108 xhp_spread_attribute_expression
;
7109 xhp_spread_attribute_right_brace
;
7113 xhp_spread_attribute_left_brace
;
7114 xhp_spread_attribute_spread_operator
;
7115 xhp_spread_attribute_expression
;
7116 xhp_spread_attribute_right_brace
;
7118 | ( SyntaxKind.XHPOpen
,
7120 xhp_open_left_angle
;
7122 xhp_open_attributes
;
7123 xhp_open_right_angle
;
7127 xhp_open_left_angle
;
7129 xhp_open_attributes
;
7130 xhp_open_right_angle
;
7132 | (SyntaxKind.XHPExpression
, [xhp_open
; xhp_body
; xhp_close
]) ->
7133 XHPExpression
{ xhp_open
; xhp_body
; xhp_close
}
7134 | ( SyntaxKind.XHPClose
,
7135 [xhp_close_left_angle
; xhp_close_name
; xhp_close_right_angle
] ) ->
7136 XHPClose
{ xhp_close_left_angle
; xhp_close_name
; xhp_close_right_angle
}
7137 | ( SyntaxKind.TypeConstant
,
7139 type_constant_left_type
;
7140 type_constant_separator
;
7141 type_constant_right_type
;
7145 type_constant_left_type
;
7146 type_constant_separator
;
7147 type_constant_right_type
;
7149 | ( SyntaxKind.VectorTypeSpecifier
,
7151 vector_type_keyword
;
7152 vector_type_left_angle
;
7154 vector_type_trailing_comma
;
7155 vector_type_right_angle
;
7159 vector_type_keyword
;
7160 vector_type_left_angle
;
7162 vector_type_trailing_comma
;
7163 vector_type_right_angle
;
7165 | ( SyntaxKind.KeysetTypeSpecifier
,
7167 keyset_type_keyword
;
7168 keyset_type_left_angle
;
7170 keyset_type_trailing_comma
;
7171 keyset_type_right_angle
;
7175 keyset_type_keyword
;
7176 keyset_type_left_angle
;
7178 keyset_type_trailing_comma
;
7179 keyset_type_right_angle
;
7181 | ( SyntaxKind.TupleTypeExplicitSpecifier
,
7184 tuple_type_left_angle
;
7186 tuple_type_right_angle
;
7188 TupleTypeExplicitSpecifier
7191 tuple_type_left_angle
;
7193 tuple_type_right_angle
;
7195 | ( SyntaxKind.VarrayTypeSpecifier
,
7200 varray_trailing_comma
;
7208 varray_trailing_comma
;
7211 | ( SyntaxKind.FunctionCtxTypeSpecifier
,
7212 [function_ctx_type_keyword
; function_ctx_type_variable
] ) ->
7213 FunctionCtxTypeSpecifier
7214 { function_ctx_type_keyword
; function_ctx_type_variable
}
7215 | ( SyntaxKind.TypeParameter
,
7217 type_attribute_spec
;
7226 type_attribute_spec
;
7233 | (SyntaxKind.TypeConstraint
, [constraint_keyword
; constraint_type
]) ->
7234 TypeConstraint
{ constraint_keyword
; constraint_type
}
7235 | ( SyntaxKind.ContextConstraint
,
7236 [ctx_constraint_keyword
; ctx_constraint_ctx_list
] ) ->
7237 ContextConstraint
{ ctx_constraint_keyword
; ctx_constraint_ctx_list
}
7238 | ( SyntaxKind.DarrayTypeSpecifier
,
7245 darray_trailing_comma
;
7255 darray_trailing_comma
;
7258 | ( SyntaxKind.DictionaryTypeSpecifier
,
7260 dictionary_type_keyword
;
7261 dictionary_type_left_angle
;
7262 dictionary_type_members
;
7263 dictionary_type_right_angle
;
7265 DictionaryTypeSpecifier
7267 dictionary_type_keyword
;
7268 dictionary_type_left_angle
;
7269 dictionary_type_members
;
7270 dictionary_type_right_angle
;
7272 | ( SyntaxKind.ClosureTypeSpecifier
,
7274 closure_outer_left_paren
;
7275 closure_readonly_keyword
;
7276 closure_function_keyword
;
7277 closure_inner_left_paren
;
7278 closure_parameter_list
;
7279 closure_inner_right_paren
;
7282 closure_readonly_return
;
7283 closure_return_type
;
7284 closure_outer_right_paren
;
7286 ClosureTypeSpecifier
7288 closure_outer_left_paren
;
7289 closure_readonly_keyword
;
7290 closure_function_keyword
;
7291 closure_inner_left_paren
;
7292 closure_parameter_list
;
7293 closure_inner_right_paren
;
7296 closure_readonly_return
;
7297 closure_return_type
;
7298 closure_outer_right_paren
;
7300 | ( SyntaxKind.ClosureParameterTypeSpecifier
,
7302 closure_parameter_call_convention
;
7303 closure_parameter_readonly
;
7304 closure_parameter_type
;
7306 ClosureParameterTypeSpecifier
7308 closure_parameter_call_convention
;
7309 closure_parameter_readonly
;
7310 closure_parameter_type
;
7312 | ( SyntaxKind.ClassnameTypeSpecifier
,
7315 classname_left_angle
;
7317 classname_trailing_comma
;
7318 classname_right_angle
;
7320 ClassnameTypeSpecifier
7323 classname_left_angle
;
7325 classname_trailing_comma
;
7326 classname_right_angle
;
7328 | ( SyntaxKind.FieldSpecifier
,
7329 [field_question
; field_name
; field_arrow
; field_type
] ) ->
7330 FieldSpecifier
{ field_question
; field_name
; field_arrow
; field_type
}
7331 | ( SyntaxKind.FieldInitializer
,
7333 field_initializer_name
;
7334 field_initializer_arrow
;
7335 field_initializer_value
;
7339 field_initializer_name
;
7340 field_initializer_arrow
;
7341 field_initializer_value
;
7343 | ( SyntaxKind.ShapeTypeSpecifier
,
7346 shape_type_left_paren
;
7348 shape_type_ellipsis
;
7349 shape_type_right_paren
;
7354 shape_type_left_paren
;
7356 shape_type_ellipsis
;
7357 shape_type_right_paren
;
7359 | ( SyntaxKind.ShapeExpression
,
7361 shape_expression_keyword
;
7362 shape_expression_left_paren
;
7363 shape_expression_fields
;
7364 shape_expression_right_paren
;
7368 shape_expression_keyword
;
7369 shape_expression_left_paren
;
7370 shape_expression_fields
;
7371 shape_expression_right_paren
;
7373 | ( SyntaxKind.TupleExpression
,
7375 tuple_expression_keyword
;
7376 tuple_expression_left_paren
;
7377 tuple_expression_items
;
7378 tuple_expression_right_paren
;
7382 tuple_expression_keyword
;
7383 tuple_expression_left_paren
;
7384 tuple_expression_items
;
7385 tuple_expression_right_paren
;
7387 | ( SyntaxKind.GenericTypeSpecifier
,
7388 [generic_class_type
; generic_argument_list
] ) ->
7389 GenericTypeSpecifier
{ generic_class_type
; generic_argument_list
}
7390 | (SyntaxKind.NullableTypeSpecifier
, [nullable_question
; nullable_type
])
7392 NullableTypeSpecifier
{ nullable_question
; nullable_type
}
7393 | (SyntaxKind.LikeTypeSpecifier
, [like_tilde
; like_type
]) ->
7394 LikeTypeSpecifier
{ like_tilde
; like_type
}
7395 | (SyntaxKind.SoftTypeSpecifier
, [soft_at
; soft_type
]) ->
7396 SoftTypeSpecifier
{ soft_at
; soft_type
}
7397 | ( SyntaxKind.AttributizedSpecifier
,
7398 [attributized_specifier_attribute_spec
; attributized_specifier_type
]
7400 AttributizedSpecifier
7401 { attributized_specifier_attribute_spec
; attributized_specifier_type
}
7402 | ( SyntaxKind.ReifiedTypeArgument
,
7403 [reified_type_argument_reified
; reified_type_argument_type
] ) ->
7405 { reified_type_argument_reified
; reified_type_argument_type
}
7406 | ( SyntaxKind.TypeArguments
,
7408 type_arguments_left_angle
;
7409 type_arguments_types
;
7410 type_arguments_right_angle
;
7414 type_arguments_left_angle
;
7415 type_arguments_types
;
7416 type_arguments_right_angle
;
7418 | ( SyntaxKind.TypeParameters
,
7420 type_parameters_left_angle
;
7421 type_parameters_parameters
;
7422 type_parameters_right_angle
;
7426 type_parameters_left_angle
;
7427 type_parameters_parameters
;
7428 type_parameters_right_angle
;
7430 | ( SyntaxKind.TupleTypeSpecifier
,
7431 [tuple_left_paren
; tuple_types
; tuple_right_paren
] ) ->
7432 TupleTypeSpecifier
{ tuple_left_paren
; tuple_types
; tuple_right_paren
}
7433 | ( SyntaxKind.UnionTypeSpecifier
,
7434 [union_left_paren
; union_types
; union_right_paren
] ) ->
7435 UnionTypeSpecifier
{ union_left_paren
; union_types
; union_right_paren
}
7436 | ( SyntaxKind.IntersectionTypeSpecifier
,
7438 intersection_left_paren
; intersection_types
; intersection_right_paren
;
7440 IntersectionTypeSpecifier
7442 intersection_left_paren
;
7444 intersection_right_paren
;
7446 | (SyntaxKind.ErrorSyntax
, [error_error
]) -> ErrorSyntax
{ error_error
}
7447 | (SyntaxKind.ListItem
, [list_item
; list_separator
]) ->
7448 ListItem
{ list_item
; list_separator
}
7449 | ( SyntaxKind.EnumClassLabelExpression
,
7451 enum_class_label_qualifier
;
7452 enum_class_label_hash
;
7453 enum_class_label_expression
;
7455 EnumClassLabelExpression
7457 enum_class_label_qualifier
;
7458 enum_class_label_hash
;
7459 enum_class_label_expression
;
7461 | (SyntaxKind.Missing
, []) -> Missing
7462 | (SyntaxKind.SyntaxList
, items
) -> SyntaxList items
7464 failwith
"syntax_from_children called with wrong number of children"
7466 let all_tokens node
=
7467 let rec aux acc nodes
=
7473 | Token
token -> aux (token :: acc) t
7474 | _
-> aux (aux acc (children h
)) t
7477 List.rev
(aux [] [node
])
7479 module type ValueBuilderType
= sig
7480 val value_from_children
:
7481 Full_fidelity_source_text.t
->
7484 Full_fidelity_syntax_kind.t
->
7488 val value_from_token
: Token.t
-> SyntaxValue.t
7490 val value_from_syntax
: syntax -> SyntaxValue.t
7493 module WithValueBuilder
(ValueBuilder
: ValueBuilderType
) = struct
7494 let from_children text offset
kind ts
=
7495 let syntax = syntax_from_children kind ts
in
7496 let value = ValueBuilder.value_from_children text offset
kind ts
in
7499 let make_token token =
7500 let syntax = Token
token in
7501 let value = ValueBuilder.value_from_token
token in
7504 let make_missing text offset
=
7505 from_children text offset
SyntaxKind.Missing
[]
7507 (* An empty list is represented by Missing; everything else is a
7508 SyntaxList, even if the list has only one item. *)
7509 let make_list text offset items
=
7511 | [] -> make_missing text offset
7512 | _
-> from_children text offset
SyntaxKind.SyntaxList items
7514 let make_end_of_file end_of_file_token
=
7515 let syntax = EndOfFile
{ end_of_file_token
} in
7516 let value = ValueBuilder.value_from_syntax
syntax in
7519 let make_script script_declarations
=
7520 let syntax = Script
{ script_declarations
} in
7521 let value = ValueBuilder.value_from_syntax
syntax in
7524 let make_qualified_name qualified_name_parts
=
7525 let syntax = QualifiedName
{ qualified_name_parts
} in
7526 let value = ValueBuilder.value_from_syntax
syntax in
7529 let make_simple_type_specifier simple_type_specifier
=
7530 let syntax = SimpleTypeSpecifier
{ simple_type_specifier
} in
7531 let value = ValueBuilder.value_from_syntax
syntax in
7534 let make_literal_expression literal_expression
=
7535 let syntax = LiteralExpression
{ literal_expression
} in
7536 let value = ValueBuilder.value_from_syntax
syntax in
7539 let make_prefixed_string_expression
7540 prefixed_string_name prefixed_string_str
=
7542 PrefixedStringExpression
{ prefixed_string_name
; prefixed_string_str
}
7544 let value = ValueBuilder.value_from_syntax
syntax in
7547 let make_prefixed_code_expression
7548 prefixed_code_prefix
7549 prefixed_code_left_backtick
7550 prefixed_code_expression
7551 prefixed_code_right_backtick
=
7553 PrefixedCodeExpression
7555 prefixed_code_prefix
;
7556 prefixed_code_left_backtick
;
7557 prefixed_code_expression
;
7558 prefixed_code_right_backtick
;
7561 let value = ValueBuilder.value_from_syntax
syntax in
7564 let make_variable_expression variable_expression
=
7565 let syntax = VariableExpression
{ variable_expression
} in
7566 let value = ValueBuilder.value_from_syntax
syntax in
7569 let make_pipe_variable_expression pipe_variable_expression
=
7570 let syntax = PipeVariableExpression
{ pipe_variable_expression
} in
7571 let value = ValueBuilder.value_from_syntax
syntax in
7574 let make_file_attribute_specification
7575 file_attribute_specification_left_double_angle
7576 file_attribute_specification_keyword
7577 file_attribute_specification_colon
7578 file_attribute_specification_attributes
7579 file_attribute_specification_right_double_angle
=
7581 FileAttributeSpecification
7583 file_attribute_specification_left_double_angle
;
7584 file_attribute_specification_keyword
;
7585 file_attribute_specification_colon
;
7586 file_attribute_specification_attributes
;
7587 file_attribute_specification_right_double_angle
;
7590 let value = ValueBuilder.value_from_syntax
syntax in
7593 let make_enum_declaration
7607 enum_attribute_spec
;
7619 let value = ValueBuilder.value_from_syntax
syntax in
7622 let make_enum_use enum_use_keyword enum_use_names enum_use_semicolon
=
7624 EnumUse
{ enum_use_keyword
; enum_use_names
; enum_use_semicolon
}
7626 let value = ValueBuilder.value_from_syntax
syntax in
7630 enumerator_name enumerator_equal enumerator_value enumerator_semicolon
7638 enumerator_semicolon
;
7641 let value = ValueBuilder.value_from_syntax
syntax in
7644 let make_enum_class_declaration
7645 enum_class_attribute_spec
7646 enum_class_modifiers
7647 enum_class_enum_keyword
7648 enum_class_class_keyword
7653 enum_class_extends_list
7654 enum_class_left_brace
7656 enum_class_right_brace
=
7658 EnumClassDeclaration
7660 enum_class_attribute_spec
;
7661 enum_class_modifiers
;
7662 enum_class_enum_keyword
;
7663 enum_class_class_keyword
;
7668 enum_class_extends_list
;
7669 enum_class_left_brace
;
7670 enum_class_elements
;
7671 enum_class_right_brace
;
7674 let value = ValueBuilder.value_from_syntax
syntax in
7677 let make_enum_class_enumerator
7678 enum_class_enumerator_modifiers
7679 enum_class_enumerator_type
7680 enum_class_enumerator_name
7681 enum_class_enumerator_initializer
7682 enum_class_enumerator_semicolon
=
7686 enum_class_enumerator_modifiers
;
7687 enum_class_enumerator_type
;
7688 enum_class_enumerator_name
;
7689 enum_class_enumerator_initializer
;
7690 enum_class_enumerator_semicolon
;
7693 let value = ValueBuilder.value_from_syntax
syntax in
7696 let make_alias_declaration
7697 alias_attribute_spec
7700 alias_generic_parameter
7708 alias_attribute_spec
;
7711 alias_generic_parameter
;
7718 let value = ValueBuilder.value_from_syntax
syntax in
7721 let make_context_alias_declaration
7722 ctx_alias_attribute_spec
7725 ctx_alias_generic_parameter
7726 ctx_alias_as_constraint
7729 ctx_alias_semicolon
=
7731 ContextAliasDeclaration
7733 ctx_alias_attribute_spec
;
7736 ctx_alias_generic_parameter
;
7737 ctx_alias_as_constraint
;
7740 ctx_alias_semicolon
;
7743 let value = ValueBuilder.value_from_syntax
syntax in
7746 let make_property_declaration
7747 property_attribute_spec
7750 property_declarators
7751 property_semicolon
=
7755 property_attribute_spec
;
7758 property_declarators
;
7762 let value = ValueBuilder.value_from_syntax
syntax in
7765 let make_property_declarator property_name property_initializer
=
7767 PropertyDeclarator
{ property_name
; property_initializer
}
7769 let value = ValueBuilder.value_from_syntax
syntax in
7772 let make_namespace_declaration namespace_header namespace_body
=
7774 NamespaceDeclaration
{ namespace_header
; namespace_body
}
7776 let value = ValueBuilder.value_from_syntax
syntax in
7779 let make_namespace_declaration_header namespace_keyword namespace_name
=
7781 NamespaceDeclarationHeader
{ namespace_keyword
; namespace_name
}
7783 let value = ValueBuilder.value_from_syntax
syntax in
7786 let make_namespace_body
7787 namespace_left_brace namespace_declarations namespace_right_brace
=
7791 namespace_left_brace
;
7792 namespace_declarations
;
7793 namespace_right_brace
;
7796 let value = ValueBuilder.value_from_syntax
syntax in
7799 let make_namespace_empty_body namespace_semicolon
=
7800 let syntax = NamespaceEmptyBody
{ namespace_semicolon
} in
7801 let value = ValueBuilder.value_from_syntax
syntax in
7804 let make_namespace_use_declaration
7805 namespace_use_keyword
7807 namespace_use_clauses
7808 namespace_use_semicolon
=
7810 NamespaceUseDeclaration
7812 namespace_use_keyword
;
7814 namespace_use_clauses
;
7815 namespace_use_semicolon
;
7818 let value = ValueBuilder.value_from_syntax
syntax in
7821 let make_namespace_group_use_declaration
7822 namespace_group_use_keyword
7823 namespace_group_use_kind
7824 namespace_group_use_prefix
7825 namespace_group_use_left_brace
7826 namespace_group_use_clauses
7827 namespace_group_use_right_brace
7828 namespace_group_use_semicolon
=
7830 NamespaceGroupUseDeclaration
7832 namespace_group_use_keyword
;
7833 namespace_group_use_kind
;
7834 namespace_group_use_prefix
;
7835 namespace_group_use_left_brace
;
7836 namespace_group_use_clauses
;
7837 namespace_group_use_right_brace
;
7838 namespace_group_use_semicolon
;
7841 let value = ValueBuilder.value_from_syntax
syntax in
7844 let make_namespace_use_clause
7845 namespace_use_clause_kind
7848 namespace_use_alias
=
7852 namespace_use_clause_kind
;
7855 namespace_use_alias
;
7858 let value = ValueBuilder.value_from_syntax
syntax in
7861 let make_function_declaration
7862 function_attribute_spec function_declaration_header function_body
=
7866 function_attribute_spec
;
7867 function_declaration_header
;
7871 let value = ValueBuilder.value_from_syntax
syntax in
7874 let make_function_declaration_header
7878 function_type_parameter_list
7880 function_parameter_list
7881 function_right_paren
7884 function_readonly_return
7886 function_where_clause
=
7888 FunctionDeclarationHeader
7893 function_type_parameter_list
;
7894 function_left_paren
;
7895 function_parameter_list
;
7896 function_right_paren
;
7899 function_readonly_return
;
7901 function_where_clause
;
7904 let value = ValueBuilder.value_from_syntax
syntax in
7908 contexts_left_bracket contexts_types contexts_right_bracket
=
7911 { contexts_left_bracket
; contexts_types
; contexts_right_bracket
}
7913 let value = ValueBuilder.value_from_syntax
syntax in
7916 let make_where_clause where_clause_keyword where_clause_constraints
=
7918 WhereClause
{ where_clause_keyword
; where_clause_constraints
}
7920 let value = ValueBuilder.value_from_syntax
syntax in
7923 let make_where_constraint
7924 where_constraint_left_type
7925 where_constraint_operator
7926 where_constraint_right_type
=
7930 where_constraint_left_type
;
7931 where_constraint_operator
;
7932 where_constraint_right_type
;
7935 let value = ValueBuilder.value_from_syntax
syntax in
7938 let make_methodish_declaration
7940 methodish_function_decl_header
7941 methodish_function_body
7942 methodish_semicolon
=
7944 MethodishDeclaration
7946 methodish_attribute
;
7947 methodish_function_decl_header
;
7948 methodish_function_body
;
7949 methodish_semicolon
;
7952 let value = ValueBuilder.value_from_syntax
syntax in
7955 let make_methodish_trait_resolution
7956 methodish_trait_attribute
7957 methodish_trait_function_decl_header
7958 methodish_trait_equal
7959 methodish_trait_name
7960 methodish_trait_semicolon
=
7962 MethodishTraitResolution
7964 methodish_trait_attribute
;
7965 methodish_trait_function_decl_header
;
7966 methodish_trait_equal
;
7967 methodish_trait_name
;
7968 methodish_trait_semicolon
;
7971 let value = ValueBuilder.value_from_syntax
syntax in
7974 let make_classish_declaration
7980 classish_type_parameters
7981 classish_extends_keyword
7982 classish_extends_list
7983 classish_implements_keyword
7984 classish_implements_list
7985 classish_where_clause
7995 classish_type_parameters
;
7996 classish_extends_keyword
;
7997 classish_extends_list
;
7998 classish_implements_keyword
;
7999 classish_implements_list
;
8000 classish_where_clause
;
8004 let value = ValueBuilder.value_from_syntax
syntax in
8007 let make_classish_body
8008 classish_body_left_brace
8009 classish_body_elements
8010 classish_body_right_brace
=
8014 classish_body_left_brace
;
8015 classish_body_elements
;
8016 classish_body_right_brace
;
8019 let value = ValueBuilder.value_from_syntax
syntax in
8022 let make_trait_use_precedence_item
8023 trait_use_precedence_item_name
8024 trait_use_precedence_item_keyword
8025 trait_use_precedence_item_removed_names
=
8027 TraitUsePrecedenceItem
8029 trait_use_precedence_item_name
;
8030 trait_use_precedence_item_keyword
;
8031 trait_use_precedence_item_removed_names
;
8034 let value = ValueBuilder.value_from_syntax
syntax in
8037 let make_trait_use_alias_item
8038 trait_use_alias_item_aliasing_name
8039 trait_use_alias_item_keyword
8040 trait_use_alias_item_modifiers
8041 trait_use_alias_item_aliased_name
=
8045 trait_use_alias_item_aliasing_name
;
8046 trait_use_alias_item_keyword
;
8047 trait_use_alias_item_modifiers
;
8048 trait_use_alias_item_aliased_name
;
8051 let value = ValueBuilder.value_from_syntax
syntax in
8054 let make_trait_use_conflict_resolution
8055 trait_use_conflict_resolution_keyword
8056 trait_use_conflict_resolution_names
8057 trait_use_conflict_resolution_left_brace
8058 trait_use_conflict_resolution_clauses
8059 trait_use_conflict_resolution_right_brace
=
8061 TraitUseConflictResolution
8063 trait_use_conflict_resolution_keyword
;
8064 trait_use_conflict_resolution_names
;
8065 trait_use_conflict_resolution_left_brace
;
8066 trait_use_conflict_resolution_clauses
;
8067 trait_use_conflict_resolution_right_brace
;
8070 let value = ValueBuilder.value_from_syntax
syntax in
8073 let make_trait_use trait_use_keyword trait_use_names trait_use_semicolon
=
8075 TraitUse
{ trait_use_keyword
; trait_use_names
; trait_use_semicolon
}
8077 let value = ValueBuilder.value_from_syntax
syntax in
8080 let make_require_clause
8081 require_keyword require_kind require_name require_semicolon
=
8084 { require_keyword
; require_kind
; require_name
; require_semicolon
}
8086 let value = ValueBuilder.value_from_syntax
syntax in
8089 let make_const_declaration
8090 const_attribute_spec
8093 const_type_specifier
8099 const_attribute_spec
;
8102 const_type_specifier
;
8107 let value = ValueBuilder.value_from_syntax
syntax in
8110 let make_constant_declarator
8111 constant_declarator_name constant_declarator_initializer
=
8114 { constant_declarator_name
; constant_declarator_initializer
}
8116 let value = ValueBuilder.value_from_syntax
syntax in
8119 let make_type_const_declaration
8120 type_const_attribute_spec
8121 type_const_modifiers
8123 type_const_type_keyword
8125 type_const_type_parameters
8126 type_const_type_constraint
8128 type_const_type_specifier
8129 type_const_semicolon
=
8131 TypeConstDeclaration
8133 type_const_attribute_spec
;
8134 type_const_modifiers
;
8136 type_const_type_keyword
;
8138 type_const_type_parameters
;
8139 type_const_type_constraint
;
8141 type_const_type_specifier
;
8142 type_const_semicolon
;
8145 let value = ValueBuilder.value_from_syntax
syntax in
8148 let make_context_const_declaration
8149 context_const_modifiers
8150 context_const_const_keyword
8151 context_const_ctx_keyword
8153 context_const_type_parameters
8154 context_const_constraint
8156 context_const_ctx_list
8157 context_const_semicolon
=
8159 ContextConstDeclaration
8161 context_const_modifiers
;
8162 context_const_const_keyword
;
8163 context_const_ctx_keyword
;
8165 context_const_type_parameters
;
8166 context_const_constraint
;
8167 context_const_equal
;
8168 context_const_ctx_list
;
8169 context_const_semicolon
;
8172 let value = ValueBuilder.value_from_syntax
syntax in
8175 let make_decorated_expression
8176 decorated_expression_decorator decorated_expression_expression
=
8179 { decorated_expression_decorator
; decorated_expression_expression
}
8181 let value = ValueBuilder.value_from_syntax
syntax in
8184 let make_parameter_declaration
8186 parameter_visibility
8187 parameter_call_convention
8191 parameter_default_value
=
8193 ParameterDeclaration
8195 parameter_attribute
;
8196 parameter_visibility
;
8197 parameter_call_convention
;
8201 parameter_default_value
;
8204 let value = ValueBuilder.value_from_syntax
syntax in
8207 let make_variadic_parameter
8208 variadic_parameter_call_convention
8209 variadic_parameter_type
8210 variadic_parameter_ellipsis
=
8214 variadic_parameter_call_convention
;
8215 variadic_parameter_type
;
8216 variadic_parameter_ellipsis
;
8219 let value = ValueBuilder.value_from_syntax
syntax in
8222 let make_old_attribute_specification
8223 old_attribute_specification_left_double_angle
8224 old_attribute_specification_attributes
8225 old_attribute_specification_right_double_angle
=
8227 OldAttributeSpecification
8229 old_attribute_specification_left_double_angle
;
8230 old_attribute_specification_attributes
;
8231 old_attribute_specification_right_double_angle
;
8234 let value = ValueBuilder.value_from_syntax
syntax in
8237 let make_attribute_specification attribute_specification_attributes
=
8239 AttributeSpecification
{ attribute_specification_attributes
}
8241 let value = ValueBuilder.value_from_syntax
syntax in
8244 let make_attribute attribute_at attribute_attribute_name
=
8245 let syntax = Attribute
{ attribute_at
; attribute_attribute_name
} in
8246 let value = ValueBuilder.value_from_syntax
syntax in
8249 let make_inclusion_expression inclusion_require inclusion_filename
=
8251 InclusionExpression
{ inclusion_require
; inclusion_filename
}
8253 let value = ValueBuilder.value_from_syntax
syntax in
8256 let make_inclusion_directive inclusion_expression inclusion_semicolon
=
8258 InclusionDirective
{ inclusion_expression
; inclusion_semicolon
}
8260 let value = ValueBuilder.value_from_syntax
syntax in
8263 let make_compound_statement
8264 compound_left_brace compound_statements compound_right_brace
=
8267 { compound_left_brace
; compound_statements
; compound_right_brace
}
8269 let value = ValueBuilder.value_from_syntax
syntax in
8272 let make_expression_statement
8273 expression_statement_expression expression_statement_semicolon
=
8276 { expression_statement_expression
; expression_statement_semicolon
}
8278 let value = ValueBuilder.value_from_syntax
syntax in
8281 let make_markup_section markup_hashbang markup_suffix
=
8282 let syntax = MarkupSection
{ markup_hashbang
; markup_suffix
} in
8283 let value = ValueBuilder.value_from_syntax
syntax in
8286 let make_markup_suffix markup_suffix_less_than_question markup_suffix_name
8289 MarkupSuffix
{ markup_suffix_less_than_question
; markup_suffix_name
}
8291 let value = ValueBuilder.value_from_syntax
syntax in
8294 let make_unset_statement
8310 let value = ValueBuilder.value_from_syntax
syntax in
8313 let make_using_statement_block_scoped
8314 using_block_await_keyword
8315 using_block_using_keyword
8316 using_block_left_paren
8317 using_block_expressions
8318 using_block_right_paren
8321 UsingStatementBlockScoped
8323 using_block_await_keyword
;
8324 using_block_using_keyword
;
8325 using_block_left_paren
;
8326 using_block_expressions
;
8327 using_block_right_paren
;
8331 let value = ValueBuilder.value_from_syntax
syntax in
8334 let make_using_statement_function_scoped
8335 using_function_await_keyword
8336 using_function_using_keyword
8337 using_function_expression
8338 using_function_semicolon
=
8340 UsingStatementFunctionScoped
8342 using_function_await_keyword
;
8343 using_function_using_keyword
;
8344 using_function_expression
;
8345 using_function_semicolon
;
8348 let value = ValueBuilder.value_from_syntax
syntax in
8351 let make_while_statement
8367 let value = ValueBuilder.value_from_syntax
syntax in
8370 let make_if_statement
8390 let value = ValueBuilder.value_from_syntax
syntax in
8393 let make_elseif_clause
8409 let value = ValueBuilder.value_from_syntax
syntax in
8412 let make_else_clause else_keyword else_statement
=
8413 let syntax = ElseClause
{ else_keyword
; else_statement
} in
8414 let value = ValueBuilder.value_from_syntax
syntax in
8417 let make_try_statement
8419 try_compound_statement
8421 try_finally_clause
=
8426 try_compound_statement
;
8431 let value = ValueBuilder.value_from_syntax
syntax in
8434 let make_catch_clause
8452 let value = ValueBuilder.value_from_syntax
syntax in
8455 let make_finally_clause finally_keyword finally_body
=
8456 let syntax = FinallyClause
{ finally_keyword
; finally_body
} in
8457 let value = ValueBuilder.value_from_syntax
syntax in
8460 let make_do_statement
8480 let value = ValueBuilder.value_from_syntax
syntax in
8483 let make_for_statement
8489 for_second_semicolon
8499 for_first_semicolon
;
8501 for_second_semicolon
;
8507 let value = ValueBuilder.value_from_syntax
syntax in
8510 let make_foreach_statement
8514 foreach_await_keyword
8527 foreach_await_keyword
;
8532 foreach_right_paren
;
8536 let value = ValueBuilder.value_from_syntax
syntax in
8539 let make_switch_statement
8546 switch_right_brace
=
8559 let value = ValueBuilder.value_from_syntax
syntax in
8562 let make_switch_section
8563 switch_section_labels
8564 switch_section_statements
8565 switch_section_fallthrough
=
8569 switch_section_labels
;
8570 switch_section_statements
;
8571 switch_section_fallthrough
;
8574 let value = ValueBuilder.value_from_syntax
syntax in
8577 let make_switch_fallthrough fallthrough_keyword fallthrough_semicolon
=
8579 SwitchFallthrough
{ fallthrough_keyword
; fallthrough_semicolon
}
8581 let value = ValueBuilder.value_from_syntax
syntax in
8584 let make_case_label case_keyword case_expression case_colon
=
8585 let syntax = CaseLabel
{ case_keyword
; case_expression
; case_colon
} in
8586 let value = ValueBuilder.value_from_syntax
syntax in
8589 let make_default_label default_keyword default_colon
=
8590 let syntax = DefaultLabel
{ default_keyword
; default_colon
} in
8591 let value = ValueBuilder.value_from_syntax
syntax in
8594 let make_return_statement
8595 return_keyword return_expression return_semicolon
=
8598 { return_keyword
; return_expression
; return_semicolon
}
8600 let value = ValueBuilder.value_from_syntax
syntax in
8603 let make_yield_break_statement
8604 yield_break_keyword yield_break_break yield_break_semicolon
=
8607 { yield_break_keyword
; yield_break_break
; yield_break_semicolon
}
8609 let value = ValueBuilder.value_from_syntax
syntax in
8612 let make_throw_statement throw_keyword throw_expression throw_semicolon
=
8614 ThrowStatement
{ throw_keyword
; throw_expression
; throw_semicolon
}
8616 let value = ValueBuilder.value_from_syntax
syntax in
8619 let make_break_statement break_keyword break_semicolon
=
8620 let syntax = BreakStatement
{ break_keyword
; break_semicolon
} in
8621 let value = ValueBuilder.value_from_syntax
syntax in
8624 let make_continue_statement continue_keyword continue_semicolon
=
8626 ContinueStatement
{ continue_keyword
; continue_semicolon
}
8628 let value = ValueBuilder.value_from_syntax
syntax in
8631 let make_echo_statement echo_keyword echo_expressions echo_semicolon
=
8633 EchoStatement
{ echo_keyword
; echo_expressions
; echo_semicolon
}
8635 let value = ValueBuilder.value_from_syntax
syntax in
8638 let make_concurrent_statement concurrent_keyword concurrent_statement
=
8640 ConcurrentStatement
{ concurrent_keyword
; concurrent_statement
}
8642 let value = ValueBuilder.value_from_syntax
syntax in
8645 let make_simple_initializer
8646 simple_initializer_equal simple_initializer_value
=
8649 { simple_initializer_equal
; simple_initializer_value
}
8651 let value = ValueBuilder.value_from_syntax
syntax in
8654 let make_anonymous_class
8655 anonymous_class_class_keyword
8656 anonymous_class_left_paren
8657 anonymous_class_argument_list
8658 anonymous_class_right_paren
8659 anonymous_class_extends_keyword
8660 anonymous_class_extends_list
8661 anonymous_class_implements_keyword
8662 anonymous_class_implements_list
8663 anonymous_class_body
=
8667 anonymous_class_class_keyword
;
8668 anonymous_class_left_paren
;
8669 anonymous_class_argument_list
;
8670 anonymous_class_right_paren
;
8671 anonymous_class_extends_keyword
;
8672 anonymous_class_extends_list
;
8673 anonymous_class_implements_keyword
;
8674 anonymous_class_implements_list
;
8675 anonymous_class_body
;
8678 let value = ValueBuilder.value_from_syntax
syntax in
8681 let make_anonymous_function
8682 anonymous_attribute_spec
8683 anonymous_async_keyword
8684 anonymous_function_keyword
8685 anonymous_left_paren
8686 anonymous_parameters
8687 anonymous_right_paren
8690 anonymous_readonly_return
8697 anonymous_attribute_spec
;
8698 anonymous_async_keyword
;
8699 anonymous_function_keyword
;
8700 anonymous_left_paren
;
8701 anonymous_parameters
;
8702 anonymous_right_paren
;
8705 anonymous_readonly_return
;
8711 let value = ValueBuilder.value_from_syntax
syntax in
8714 let make_anonymous_function_use_clause
8715 anonymous_use_keyword
8716 anonymous_use_left_paren
8717 anonymous_use_variables
8718 anonymous_use_right_paren
=
8720 AnonymousFunctionUseClause
8722 anonymous_use_keyword
;
8723 anonymous_use_left_paren
;
8724 anonymous_use_variables
;
8725 anonymous_use_right_paren
;
8728 let value = ValueBuilder.value_from_syntax
syntax in
8731 let make_lambda_expression
8732 lambda_attribute_spec
8740 lambda_attribute_spec
;
8747 let value = ValueBuilder.value_from_syntax
syntax in
8750 let make_lambda_signature
8756 lambda_readonly_return
8766 lambda_readonly_return
;
8770 let value = ValueBuilder.value_from_syntax
syntax in
8773 let make_cast_expression
8774 cast_left_paren cast_type cast_right_paren cast_operand
=
8777 { cast_left_paren
; cast_type
; cast_right_paren
; cast_operand
}
8779 let value = ValueBuilder.value_from_syntax
syntax in
8782 let make_scope_resolution_expression
8783 scope_resolution_qualifier
8784 scope_resolution_operator
8785 scope_resolution_name
=
8787 ScopeResolutionExpression
8789 scope_resolution_qualifier
;
8790 scope_resolution_operator
;
8791 scope_resolution_name
;
8794 let value = ValueBuilder.value_from_syntax
syntax in
8797 let make_member_selection_expression
8798 member_object member_operator member_name
=
8800 MemberSelectionExpression
8801 { member_object
; member_operator
; member_name
}
8803 let value = ValueBuilder.value_from_syntax
syntax in
8806 let make_safe_member_selection_expression
8807 safe_member_object safe_member_operator safe_member_name
=
8809 SafeMemberSelectionExpression
8810 { safe_member_object
; safe_member_operator
; safe_member_name
}
8812 let value = ValueBuilder.value_from_syntax
syntax in
8815 let make_embedded_member_selection_expression
8816 embedded_member_object embedded_member_operator embedded_member_name
=
8818 EmbeddedMemberSelectionExpression
8820 embedded_member_object
;
8821 embedded_member_operator
;
8822 embedded_member_name
;
8825 let value = ValueBuilder.value_from_syntax
syntax in
8828 let make_yield_expression yield_keyword yield_operand
=
8829 let syntax = YieldExpression
{ yield_keyword
; yield_operand
} in
8830 let value = ValueBuilder.value_from_syntax
syntax in
8833 let make_prefix_unary_expression
8834 prefix_unary_operator prefix_unary_operand
=
8836 PrefixUnaryExpression
{ prefix_unary_operator
; prefix_unary_operand
}
8838 let value = ValueBuilder.value_from_syntax
syntax in
8841 let make_postfix_unary_expression
8842 postfix_unary_operand postfix_unary_operator
=
8844 PostfixUnaryExpression
8845 { postfix_unary_operand
; postfix_unary_operator
}
8847 let value = ValueBuilder.value_from_syntax
syntax in
8850 let make_binary_expression
8851 binary_left_operand binary_operator binary_right_operand
=
8854 { binary_left_operand
; binary_operator
; binary_right_operand
}
8856 let value = ValueBuilder.value_from_syntax
syntax in
8859 let make_is_expression is_left_operand is_operator is_right_operand
=
8861 IsExpression
{ is_left_operand
; is_operator
; is_right_operand
}
8863 let value = ValueBuilder.value_from_syntax
syntax in
8866 let make_as_expression as_left_operand as_operator as_right_operand
=
8868 AsExpression
{ as_left_operand
; as_operator
; as_right_operand
}
8870 let value = ValueBuilder.value_from_syntax
syntax in
8873 let make_nullable_as_expression
8874 nullable_as_left_operand
8875 nullable_as_operator
8876 nullable_as_right_operand
=
8878 NullableAsExpression
8880 nullable_as_left_operand
;
8881 nullable_as_operator
;
8882 nullable_as_right_operand
;
8885 let value = ValueBuilder.value_from_syntax
syntax in
8888 let make_upcast_expression
8889 upcast_left_operand upcast_operator upcast_right_operand
=
8892 { upcast_left_operand
; upcast_operator
; upcast_right_operand
}
8894 let value = ValueBuilder.value_from_syntax
syntax in
8897 let make_conditional_expression
8899 conditional_question
8900 conditional_consequence
8902 conditional_alternative
=
8904 ConditionalExpression
8907 conditional_question
;
8908 conditional_consequence
;
8910 conditional_alternative
;
8913 let value = ValueBuilder.value_from_syntax
syntax in
8916 let make_eval_expression
8917 eval_keyword eval_left_paren eval_argument eval_right_paren
=
8920 { eval_keyword
; eval_left_paren
; eval_argument
; eval_right_paren
}
8922 let value = ValueBuilder.value_from_syntax
syntax in
8925 let make_isset_expression
8926 isset_keyword isset_left_paren isset_argument_list isset_right_paren
=
8932 isset_argument_list
;
8936 let value = ValueBuilder.value_from_syntax
syntax in
8939 let make_function_call_expression
8940 function_call_receiver
8941 function_call_type_args
8942 function_call_enum_class_label
8943 function_call_left_paren
8944 function_call_argument_list
8945 function_call_right_paren
=
8947 FunctionCallExpression
8949 function_call_receiver
;
8950 function_call_type_args
;
8951 function_call_enum_class_label
;
8952 function_call_left_paren
;
8953 function_call_argument_list
;
8954 function_call_right_paren
;
8957 let value = ValueBuilder.value_from_syntax
syntax in
8960 let make_function_pointer_expression
8961 function_pointer_receiver function_pointer_type_args
=
8963 FunctionPointerExpression
8964 { function_pointer_receiver
; function_pointer_type_args
}
8966 let value = ValueBuilder.value_from_syntax
syntax in
8969 let make_parenthesized_expression
8970 parenthesized_expression_left_paren
8971 parenthesized_expression_expression
8972 parenthesized_expression_right_paren
=
8974 ParenthesizedExpression
8976 parenthesized_expression_left_paren
;
8977 parenthesized_expression_expression
;
8978 parenthesized_expression_right_paren
;
8981 let value = ValueBuilder.value_from_syntax
syntax in
8984 let make_braced_expression
8985 braced_expression_left_brace
8986 braced_expression_expression
8987 braced_expression_right_brace
=
8991 braced_expression_left_brace
;
8992 braced_expression_expression
;
8993 braced_expression_right_brace
;
8996 let value = ValueBuilder.value_from_syntax
syntax in
8999 let make_et_splice_expression
9000 et_splice_expression_dollar
9001 et_splice_expression_left_brace
9002 et_splice_expression_expression
9003 et_splice_expression_right_brace
=
9007 et_splice_expression_dollar
;
9008 et_splice_expression_left_brace
;
9009 et_splice_expression_expression
;
9010 et_splice_expression_right_brace
;
9013 let value = ValueBuilder.value_from_syntax
syntax in
9016 let make_embedded_braced_expression
9017 embedded_braced_expression_left_brace
9018 embedded_braced_expression_expression
9019 embedded_braced_expression_right_brace
=
9021 EmbeddedBracedExpression
9023 embedded_braced_expression_left_brace
;
9024 embedded_braced_expression_expression
;
9025 embedded_braced_expression_right_brace
;
9028 let value = ValueBuilder.value_from_syntax
syntax in
9031 let make_list_expression
9032 list_keyword list_left_paren list_members list_right_paren
=
9035 { list_keyword
; list_left_paren
; list_members
; list_right_paren
}
9037 let value = ValueBuilder.value_from_syntax
syntax in
9040 let make_collection_literal_expression
9041 collection_literal_name
9042 collection_literal_left_brace
9043 collection_literal_initializers
9044 collection_literal_right_brace
=
9046 CollectionLiteralExpression
9048 collection_literal_name
;
9049 collection_literal_left_brace
;
9050 collection_literal_initializers
;
9051 collection_literal_right_brace
;
9054 let value = ValueBuilder.value_from_syntax
syntax in
9057 let make_object_creation_expression
9058 object_creation_new_keyword object_creation_object
=
9060 ObjectCreationExpression
9061 { object_creation_new_keyword
; object_creation_object
}
9063 let value = ValueBuilder.value_from_syntax
syntax in
9066 let make_constructor_call
9067 constructor_call_type
9068 constructor_call_left_paren
9069 constructor_call_argument_list
9070 constructor_call_right_paren
=
9074 constructor_call_type
;
9075 constructor_call_left_paren
;
9076 constructor_call_argument_list
;
9077 constructor_call_right_paren
;
9080 let value = ValueBuilder.value_from_syntax
syntax in
9083 let make_darray_intrinsic_expression
9084 darray_intrinsic_keyword
9085 darray_intrinsic_explicit_type
9086 darray_intrinsic_left_bracket
9087 darray_intrinsic_members
9088 darray_intrinsic_right_bracket
=
9090 DarrayIntrinsicExpression
9092 darray_intrinsic_keyword
;
9093 darray_intrinsic_explicit_type
;
9094 darray_intrinsic_left_bracket
;
9095 darray_intrinsic_members
;
9096 darray_intrinsic_right_bracket
;
9099 let value = ValueBuilder.value_from_syntax
syntax in
9102 let make_dictionary_intrinsic_expression
9103 dictionary_intrinsic_keyword
9104 dictionary_intrinsic_explicit_type
9105 dictionary_intrinsic_left_bracket
9106 dictionary_intrinsic_members
9107 dictionary_intrinsic_right_bracket
=
9109 DictionaryIntrinsicExpression
9111 dictionary_intrinsic_keyword
;
9112 dictionary_intrinsic_explicit_type
;
9113 dictionary_intrinsic_left_bracket
;
9114 dictionary_intrinsic_members
;
9115 dictionary_intrinsic_right_bracket
;
9118 let value = ValueBuilder.value_from_syntax
syntax in
9121 let make_keyset_intrinsic_expression
9122 keyset_intrinsic_keyword
9123 keyset_intrinsic_explicit_type
9124 keyset_intrinsic_left_bracket
9125 keyset_intrinsic_members
9126 keyset_intrinsic_right_bracket
=
9128 KeysetIntrinsicExpression
9130 keyset_intrinsic_keyword
;
9131 keyset_intrinsic_explicit_type
;
9132 keyset_intrinsic_left_bracket
;
9133 keyset_intrinsic_members
;
9134 keyset_intrinsic_right_bracket
;
9137 let value = ValueBuilder.value_from_syntax
syntax in
9140 let make_varray_intrinsic_expression
9141 varray_intrinsic_keyword
9142 varray_intrinsic_explicit_type
9143 varray_intrinsic_left_bracket
9144 varray_intrinsic_members
9145 varray_intrinsic_right_bracket
=
9147 VarrayIntrinsicExpression
9149 varray_intrinsic_keyword
;
9150 varray_intrinsic_explicit_type
;
9151 varray_intrinsic_left_bracket
;
9152 varray_intrinsic_members
;
9153 varray_intrinsic_right_bracket
;
9156 let value = ValueBuilder.value_from_syntax
syntax in
9159 let make_vector_intrinsic_expression
9160 vector_intrinsic_keyword
9161 vector_intrinsic_explicit_type
9162 vector_intrinsic_left_bracket
9163 vector_intrinsic_members
9164 vector_intrinsic_right_bracket
=
9166 VectorIntrinsicExpression
9168 vector_intrinsic_keyword
;
9169 vector_intrinsic_explicit_type
;
9170 vector_intrinsic_left_bracket
;
9171 vector_intrinsic_members
;
9172 vector_intrinsic_right_bracket
;
9175 let value = ValueBuilder.value_from_syntax
syntax in
9178 let make_element_initializer element_key element_arrow element_value
=
9180 ElementInitializer
{ element_key
; element_arrow
; element_value
}
9182 let value = ValueBuilder.value_from_syntax
syntax in
9185 let make_subscript_expression
9187 subscript_left_bracket
9189 subscript_right_bracket
=
9194 subscript_left_bracket
;
9196 subscript_right_bracket
;
9199 let value = ValueBuilder.value_from_syntax
syntax in
9202 let make_embedded_subscript_expression
9203 embedded_subscript_receiver
9204 embedded_subscript_left_bracket
9205 embedded_subscript_index
9206 embedded_subscript_right_bracket
=
9208 EmbeddedSubscriptExpression
9210 embedded_subscript_receiver
;
9211 embedded_subscript_left_bracket
;
9212 embedded_subscript_index
;
9213 embedded_subscript_right_bracket
;
9216 let value = ValueBuilder.value_from_syntax
syntax in
9219 let make_awaitable_creation_expression
9220 awaitable_attribute_spec awaitable_async awaitable_compound_statement
9223 AwaitableCreationExpression
9225 awaitable_attribute_spec
;
9227 awaitable_compound_statement
;
9230 let value = ValueBuilder.value_from_syntax
syntax in
9233 let make_xhp_children_declaration
9234 xhp_children_keyword xhp_children_expression xhp_children_semicolon
=
9236 XHPChildrenDeclaration
9238 xhp_children_keyword
;
9239 xhp_children_expression
;
9240 xhp_children_semicolon
;
9243 let value = ValueBuilder.value_from_syntax
syntax in
9246 let make_xhp_children_parenthesized_list
9247 xhp_children_list_left_paren
9248 xhp_children_list_xhp_children
9249 xhp_children_list_right_paren
=
9251 XHPChildrenParenthesizedList
9253 xhp_children_list_left_paren
;
9254 xhp_children_list_xhp_children
;
9255 xhp_children_list_right_paren
;
9258 let value = ValueBuilder.value_from_syntax
syntax in
9261 let make_xhp_category_declaration
9262 xhp_category_keyword xhp_category_categories xhp_category_semicolon
=
9264 XHPCategoryDeclaration
9266 xhp_category_keyword
;
9267 xhp_category_categories
;
9268 xhp_category_semicolon
;
9271 let value = ValueBuilder.value_from_syntax
syntax in
9274 let make_xhp_enum_type
9279 xhp_enum_right_brace
=
9285 xhp_enum_left_brace
;
9287 xhp_enum_right_brace
;
9290 let value = ValueBuilder.value_from_syntax
syntax in
9293 let make_xhp_lateinit xhp_lateinit_at xhp_lateinit_keyword
=
9294 let syntax = XHPLateinit
{ xhp_lateinit_at
; xhp_lateinit_keyword
} in
9295 let value = ValueBuilder.value_from_syntax
syntax in
9298 let make_xhp_required xhp_required_at xhp_required_keyword
=
9299 let syntax = XHPRequired
{ xhp_required_at
; xhp_required_keyword
} in
9300 let value = ValueBuilder.value_from_syntax
syntax in
9303 let make_xhp_class_attribute_declaration
9304 xhp_attribute_keyword xhp_attribute_attributes xhp_attribute_semicolon
9307 XHPClassAttributeDeclaration
9309 xhp_attribute_keyword
;
9310 xhp_attribute_attributes
;
9311 xhp_attribute_semicolon
;
9314 let value = ValueBuilder.value_from_syntax
syntax in
9317 let make_xhp_class_attribute
9318 xhp_attribute_decl_type
9319 xhp_attribute_decl_name
9320 xhp_attribute_decl_initializer
9321 xhp_attribute_decl_required
=
9325 xhp_attribute_decl_type
;
9326 xhp_attribute_decl_name
;
9327 xhp_attribute_decl_initializer
;
9328 xhp_attribute_decl_required
;
9331 let value = ValueBuilder.value_from_syntax
syntax in
9334 let make_xhp_simple_class_attribute xhp_simple_class_attribute_type
=
9336 XHPSimpleClassAttribute
{ xhp_simple_class_attribute_type
}
9338 let value = ValueBuilder.value_from_syntax
syntax in
9341 let make_xhp_simple_attribute
9342 xhp_simple_attribute_name
9343 xhp_simple_attribute_equal
9344 xhp_simple_attribute_expression
=
9348 xhp_simple_attribute_name
;
9349 xhp_simple_attribute_equal
;
9350 xhp_simple_attribute_expression
;
9353 let value = ValueBuilder.value_from_syntax
syntax in
9356 let make_xhp_spread_attribute
9357 xhp_spread_attribute_left_brace
9358 xhp_spread_attribute_spread_operator
9359 xhp_spread_attribute_expression
9360 xhp_spread_attribute_right_brace
=
9364 xhp_spread_attribute_left_brace
;
9365 xhp_spread_attribute_spread_operator
;
9366 xhp_spread_attribute_expression
;
9367 xhp_spread_attribute_right_brace
;
9370 let value = ValueBuilder.value_from_syntax
syntax in
9377 xhp_open_right_angle
=
9381 xhp_open_left_angle
;
9383 xhp_open_attributes
;
9384 xhp_open_right_angle
;
9387 let value = ValueBuilder.value_from_syntax
syntax in
9390 let make_xhp_expression xhp_open xhp_body xhp_close
=
9391 let syntax = XHPExpression
{ xhp_open
; xhp_body
; xhp_close
} in
9392 let value = ValueBuilder.value_from_syntax
syntax in
9396 xhp_close_left_angle xhp_close_name xhp_close_right_angle
=
9399 { xhp_close_left_angle
; xhp_close_name
; xhp_close_right_angle
}
9401 let value = ValueBuilder.value_from_syntax
syntax in
9404 let make_type_constant
9405 type_constant_left_type
9406 type_constant_separator
9407 type_constant_right_type
=
9411 type_constant_left_type
;
9412 type_constant_separator
;
9413 type_constant_right_type
;
9416 let value = ValueBuilder.value_from_syntax
syntax in
9419 let make_vector_type_specifier
9421 vector_type_left_angle
9423 vector_type_trailing_comma
9424 vector_type_right_angle
=
9428 vector_type_keyword
;
9429 vector_type_left_angle
;
9431 vector_type_trailing_comma
;
9432 vector_type_right_angle
;
9435 let value = ValueBuilder.value_from_syntax
syntax in
9438 let make_keyset_type_specifier
9440 keyset_type_left_angle
9442 keyset_type_trailing_comma
9443 keyset_type_right_angle
=
9447 keyset_type_keyword
;
9448 keyset_type_left_angle
;
9450 keyset_type_trailing_comma
;
9451 keyset_type_right_angle
;
9454 let value = ValueBuilder.value_from_syntax
syntax in
9457 let make_tuple_type_explicit_specifier
9459 tuple_type_left_angle
9461 tuple_type_right_angle
=
9463 TupleTypeExplicitSpecifier
9466 tuple_type_left_angle
;
9468 tuple_type_right_angle
;
9471 let value = ValueBuilder.value_from_syntax
syntax in
9474 let make_varray_type_specifier
9478 varray_trailing_comma
9479 varray_right_angle
=
9486 varray_trailing_comma
;
9490 let value = ValueBuilder.value_from_syntax
syntax in
9493 let make_function_ctx_type_specifier
9494 function_ctx_type_keyword function_ctx_type_variable
=
9496 FunctionCtxTypeSpecifier
9497 { function_ctx_type_keyword
; function_ctx_type_variable
}
9499 let value = ValueBuilder.value_from_syntax
syntax in
9502 let make_type_parameter
9512 type_attribute_spec
;
9520 let value = ValueBuilder.value_from_syntax
syntax in
9523 let make_type_constraint constraint_keyword constraint_type
=
9524 let syntax = TypeConstraint
{ constraint_keyword
; constraint_type
} in
9525 let value = ValueBuilder.value_from_syntax
syntax in
9528 let make_context_constraint ctx_constraint_keyword ctx_constraint_ctx_list
9531 ContextConstraint
{ ctx_constraint_keyword
; ctx_constraint_ctx_list
}
9533 let value = ValueBuilder.value_from_syntax
syntax in
9536 let make_darray_type_specifier
9542 darray_trailing_comma
9543 darray_right_angle
=
9552 darray_trailing_comma
;
9556 let value = ValueBuilder.value_from_syntax
syntax in
9559 let make_dictionary_type_specifier
9560 dictionary_type_keyword
9561 dictionary_type_left_angle
9562 dictionary_type_members
9563 dictionary_type_right_angle
=
9565 DictionaryTypeSpecifier
9567 dictionary_type_keyword
;
9568 dictionary_type_left_angle
;
9569 dictionary_type_members
;
9570 dictionary_type_right_angle
;
9573 let value = ValueBuilder.value_from_syntax
syntax in
9576 let make_closure_type_specifier
9577 closure_outer_left_paren
9578 closure_readonly_keyword
9579 closure_function_keyword
9580 closure_inner_left_paren
9581 closure_parameter_list
9582 closure_inner_right_paren
9585 closure_readonly_return
9587 closure_outer_right_paren
=
9589 ClosureTypeSpecifier
9591 closure_outer_left_paren
;
9592 closure_readonly_keyword
;
9593 closure_function_keyword
;
9594 closure_inner_left_paren
;
9595 closure_parameter_list
;
9596 closure_inner_right_paren
;
9599 closure_readonly_return
;
9600 closure_return_type
;
9601 closure_outer_right_paren
;
9604 let value = ValueBuilder.value_from_syntax
syntax in
9607 let make_closure_parameter_type_specifier
9608 closure_parameter_call_convention
9609 closure_parameter_readonly
9610 closure_parameter_type
=
9612 ClosureParameterTypeSpecifier
9614 closure_parameter_call_convention
;
9615 closure_parameter_readonly
;
9616 closure_parameter_type
;
9619 let value = ValueBuilder.value_from_syntax
syntax in
9622 let make_classname_type_specifier
9624 classname_left_angle
9626 classname_trailing_comma
9627 classname_right_angle
=
9629 ClassnameTypeSpecifier
9632 classname_left_angle
;
9634 classname_trailing_comma
;
9635 classname_right_angle
;
9638 let value = ValueBuilder.value_from_syntax
syntax in
9641 let make_field_specifier field_question field_name field_arrow field_type
9644 FieldSpecifier
{ field_question
; field_name
; field_arrow
; field_type
}
9646 let value = ValueBuilder.value_from_syntax
syntax in
9649 let make_field_initializer
9650 field_initializer_name field_initializer_arrow field_initializer_value
9655 field_initializer_name
;
9656 field_initializer_arrow
;
9657 field_initializer_value
;
9660 let value = ValueBuilder.value_from_syntax
syntax in
9663 let make_shape_type_specifier
9665 shape_type_left_paren
9668 shape_type_right_paren
=
9673 shape_type_left_paren
;
9675 shape_type_ellipsis
;
9676 shape_type_right_paren
;
9679 let value = ValueBuilder.value_from_syntax
syntax in
9682 let make_shape_expression
9683 shape_expression_keyword
9684 shape_expression_left_paren
9685 shape_expression_fields
9686 shape_expression_right_paren
=
9690 shape_expression_keyword
;
9691 shape_expression_left_paren
;
9692 shape_expression_fields
;
9693 shape_expression_right_paren
;
9696 let value = ValueBuilder.value_from_syntax
syntax in
9699 let make_tuple_expression
9700 tuple_expression_keyword
9701 tuple_expression_left_paren
9702 tuple_expression_items
9703 tuple_expression_right_paren
=
9707 tuple_expression_keyword
;
9708 tuple_expression_left_paren
;
9709 tuple_expression_items
;
9710 tuple_expression_right_paren
;
9713 let value = ValueBuilder.value_from_syntax
syntax in
9716 let make_generic_type_specifier generic_class_type generic_argument_list
=
9718 GenericTypeSpecifier
{ generic_class_type
; generic_argument_list
}
9720 let value = ValueBuilder.value_from_syntax
syntax in
9723 let make_nullable_type_specifier nullable_question nullable_type
=
9725 NullableTypeSpecifier
{ nullable_question
; nullable_type
}
9727 let value = ValueBuilder.value_from_syntax
syntax in
9730 let make_like_type_specifier like_tilde like_type
=
9731 let syntax = LikeTypeSpecifier
{ like_tilde
; like_type
} in
9732 let value = ValueBuilder.value_from_syntax
syntax in
9735 let make_soft_type_specifier soft_at soft_type
=
9736 let syntax = SoftTypeSpecifier
{ soft_at
; soft_type
} in
9737 let value = ValueBuilder.value_from_syntax
syntax in
9740 let make_attributized_specifier
9741 attributized_specifier_attribute_spec attributized_specifier_type
=
9743 AttributizedSpecifier
9745 attributized_specifier_attribute_spec
;
9746 attributized_specifier_type
;
9749 let value = ValueBuilder.value_from_syntax
syntax in
9752 let make_reified_type_argument
9753 reified_type_argument_reified reified_type_argument_type
=
9756 { reified_type_argument_reified
; reified_type_argument_type
}
9758 let value = ValueBuilder.value_from_syntax
syntax in
9761 let make_type_arguments
9762 type_arguments_left_angle
9763 type_arguments_types
9764 type_arguments_right_angle
=
9768 type_arguments_left_angle
;
9769 type_arguments_types
;
9770 type_arguments_right_angle
;
9773 let value = ValueBuilder.value_from_syntax
syntax in
9776 let make_type_parameters
9777 type_parameters_left_angle
9778 type_parameters_parameters
9779 type_parameters_right_angle
=
9783 type_parameters_left_angle
;
9784 type_parameters_parameters
;
9785 type_parameters_right_angle
;
9788 let value = ValueBuilder.value_from_syntax
syntax in
9791 let make_tuple_type_specifier
9792 tuple_left_paren tuple_types tuple_right_paren
=
9795 { tuple_left_paren
; tuple_types
; tuple_right_paren
}
9797 let value = ValueBuilder.value_from_syntax
syntax in
9800 let make_union_type_specifier
9801 union_left_paren union_types union_right_paren
=
9804 { union_left_paren
; union_types
; union_right_paren
}
9806 let value = ValueBuilder.value_from_syntax
syntax in
9809 let make_intersection_type_specifier
9810 intersection_left_paren intersection_types intersection_right_paren
=
9812 IntersectionTypeSpecifier
9814 intersection_left_paren
;
9816 intersection_right_paren
;
9819 let value = ValueBuilder.value_from_syntax
syntax in
9822 let make_error error_error
=
9823 let syntax = ErrorSyntax
{ error_error
} in
9824 let value = ValueBuilder.value_from_syntax
syntax in
9827 let make_list_item list_item list_separator
=
9828 let syntax = ListItem
{ list_item
; list_separator
} in
9829 let value = ValueBuilder.value_from_syntax
syntax in
9832 let make_enum_class_label_expression
9833 enum_class_label_qualifier
9834 enum_class_label_hash
9835 enum_class_label_expression
=
9837 EnumClassLabelExpression
9839 enum_class_label_qualifier
;
9840 enum_class_label_hash
;
9841 enum_class_label_expression
;
9844 let value = ValueBuilder.value_from_syntax
syntax in
9847 let from_function_declaration
9849 function_attribute_spec
;
9850 function_declaration_header
;
9855 function_attribute_spec
;
9856 function_declaration_header
;
9860 let from_function_declaration_header
9865 function_type_parameter_list
;
9866 function_left_paren
;
9867 function_parameter_list
;
9868 function_right_paren
;
9871 function_readonly_return
;
9873 function_where_clause
;
9875 FunctionDeclarationHeader
9880 function_type_parameter_list
;
9881 function_left_paren
;
9882 function_parameter_list
;
9883 function_right_paren
;
9886 function_readonly_return
;
9888 function_where_clause
;
9891 let from_methodish_declaration
9893 methodish_attribute
;
9894 methodish_function_decl_header
;
9895 methodish_function_body
;
9896 methodish_semicolon
;
9898 MethodishDeclaration
9900 methodish_attribute
;
9901 methodish_function_decl_header
;
9902 methodish_function_body
;
9903 methodish_semicolon
;
9906 let from_anonymous_function
9908 anonymous_attribute_spec
;
9909 anonymous_async_keyword
;
9910 anonymous_function_keyword
;
9911 anonymous_left_paren
;
9912 anonymous_parameters
;
9913 anonymous_right_paren
;
9916 anonymous_readonly_return
;
9923 anonymous_attribute_spec
;
9924 anonymous_async_keyword
;
9925 anonymous_function_keyword
;
9926 anonymous_left_paren
;
9927 anonymous_parameters
;
9928 anonymous_right_paren
;
9931 anonymous_readonly_return
;
9937 let from_lambda_expression
9939 lambda_attribute_spec
;
9947 lambda_attribute_spec
;
9954 let from_lambda_signature
9961 lambda_readonly_return
;
9971 lambda_readonly_return
;
9975 let from_closure_type_specifier
9977 closure_outer_left_paren
;
9978 closure_readonly_keyword
;
9979 closure_function_keyword
;
9980 closure_inner_left_paren
;
9981 closure_parameter_list
;
9982 closure_inner_right_paren
;
9985 closure_readonly_return
;
9986 closure_return_type
;
9987 closure_outer_right_paren
;
9989 ClosureTypeSpecifier
9991 closure_outer_left_paren
;
9992 closure_readonly_keyword
;
9993 closure_function_keyword
;
9994 closure_inner_left_paren
;
9995 closure_parameter_list
;
9996 closure_inner_right_paren
;
9999 closure_readonly_return
;
10000 closure_return_type
;
10001 closure_outer_right_paren
;
10004 let get_function_declaration x
=
10006 | FunctionDeclaration
10008 function_attribute_spec
;
10009 function_declaration_header
;
10013 function_attribute_spec
;
10014 function_declaration_header
;
10017 | _
-> failwith
"get_function_declaration: not a FunctionDeclaration"
10019 let get_function_declaration_header x
=
10021 | FunctionDeclarationHeader
10023 function_modifiers
;
10026 function_type_parameter_list
;
10027 function_left_paren
;
10028 function_parameter_list
;
10029 function_right_paren
;
10032 function_readonly_return
;
10034 function_where_clause
;
10037 function_modifiers
;
10040 function_type_parameter_list
;
10041 function_left_paren
;
10042 function_parameter_list
;
10043 function_right_paren
;
10046 function_readonly_return
;
10048 function_where_clause
;
10052 "get_function_declaration_header: not a FunctionDeclarationHeader"
10054 let get_methodish_declaration x
=
10056 | MethodishDeclaration
10058 methodish_attribute
;
10059 methodish_function_decl_header
;
10060 methodish_function_body
;
10061 methodish_semicolon
;
10064 methodish_attribute
;
10065 methodish_function_decl_header
;
10066 methodish_function_body
;
10067 methodish_semicolon
;
10069 | _
-> failwith
"get_methodish_declaration: not a MethodishDeclaration"
10071 let get_anonymous_function x
=
10073 | AnonymousFunction
10075 anonymous_attribute_spec
;
10076 anonymous_async_keyword
;
10077 anonymous_function_keyword
;
10078 anonymous_left_paren
;
10079 anonymous_parameters
;
10080 anonymous_right_paren
;
10081 anonymous_ctx_list
;
10083 anonymous_readonly_return
;
10089 anonymous_attribute_spec
;
10090 anonymous_async_keyword
;
10091 anonymous_function_keyword
;
10092 anonymous_left_paren
;
10093 anonymous_parameters
;
10094 anonymous_right_paren
;
10095 anonymous_ctx_list
;
10097 anonymous_readonly_return
;
10102 | _
-> failwith
"get_anonymous_function: not a AnonymousFunction"
10104 let get_lambda_expression x
=
10108 lambda_attribute_spec
;
10115 lambda_attribute_spec
;
10121 | _
-> failwith
"get_lambda_expression: not a LambdaExpression"
10123 let get_lambda_signature x
=
10129 lambda_right_paren
;
10132 lambda_readonly_return
;
10138 lambda_right_paren
;
10141 lambda_readonly_return
;
10144 | _
-> failwith
"get_lambda_signature: not a LambdaSignature"
10146 let get_closure_type_specifier x
=
10148 | ClosureTypeSpecifier
10150 closure_outer_left_paren
;
10151 closure_readonly_keyword
;
10152 closure_function_keyword
;
10153 closure_inner_left_paren
;
10154 closure_parameter_list
;
10155 closure_inner_right_paren
;
10158 closure_readonly_return
;
10159 closure_return_type
;
10160 closure_outer_right_paren
;
10163 closure_outer_left_paren
;
10164 closure_readonly_keyword
;
10165 closure_function_keyword
;
10166 closure_inner_left_paren
;
10167 closure_parameter_list
;
10168 closure_inner_right_paren
;
10171 closure_readonly_return
;
10172 closure_return_type
;
10173 closure_outer_right_paren
;
10175 | _
-> failwith
"get_closure_type_specifier: not a ClosureTypeSpecifier"