1@returns Identifier 2IdentifierReference[Yield, Await] : 3 Identifier 4 => identifier_reference($0) 5 6@returns BindingIdentifier 7BindingIdentifier[Yield, Await] : 8 Identifier 9 => binding_identifier($0) 10 `yield` 11 => binding_identifier_yield($0) 12 `await` 13 => binding_identifier_await($0) 14 15@returns Label 16LabelIdentifier[Yield, Await] : 17 Identifier 18 => label_identifier($0) 19 20@returns Expression 21PrimaryExpression[Yield, Await] : 22 `this` 23 => this_expr($0) 24 IdentifierReference[?Yield, ?Await] 25 => identifier_expr($0) 26 Literal 27 => $0 28 ArrayLiteral[?Yield, ?Await] 29 => $0 30 ObjectLiteral[?Yield, ?Await] 31 => $0 32 FunctionExpression 33 => $0 34 ClassExpression[?Yield, ?Await] 35 => $0 36 GeneratorExpression 37 => $0 38 AsyncFunctionExpression 39 => $0 40 AsyncGeneratorExpression 41 => $0 42 RegularExpressionLiteral 43 => regexp_literal($0) 44 TemplateLiteral[?Yield, ?Await, ~Tagged] 45 => untagged_template_expr($0) 46 CoverParenthesizedExpressionAndArrowParameterList[?Yield, ?Await] 47 => uncover_parenthesized_expression($0) 48 49@returns CoverParenthesized 50CoverParenthesizedExpressionAndArrowParameterList[Yield, Await] : 51 `(` Expression[+In, ?Yield, ?Await] `)` 52 => cover_parenthesized_expression($0, $1, $2) 53 `(` Expression[+In, ?Yield, ?Await] `,` `)` 54 => cover_arrow_parameter_list($0, expression_to_parameter_list($1), None, $3) 55 `(` `)` 56 => cover_arrow_parameter_list($0, empty_parameter_list(), None, $1) 57 `(` `...` BindingIdentifier[?Yield, ?Await] `)` 58 => cover_arrow_parameter_list($0, empty_parameter_list(), Some(binding_identifier_to_binding($2)), $3) 59 `(` `...` BindingPattern[?Yield, ?Await] `)` 60 => cover_arrow_parameter_list($0, empty_parameter_list(), Some($2), $3) 61 `(` Expression[+In, ?Yield, ?Await] `,` `...` BindingIdentifier[?Yield, ?Await] `)` 62 => cover_arrow_parameter_list($0, expression_to_parameter_list($1), Some(binding_identifier_to_binding($4)), $5) 63 `(` Expression[+In, ?Yield, ?Await] `,` `...` BindingPattern[?Yield, ?Await] `)` 64 => cover_arrow_parameter_list($0, expression_to_parameter_list($1), Some($4), $5) 65 66 67@returns Expression 68Literal : 69 NullLiteral 70 => null_literal($0) 71 BooleanLiteral 72 => boolean_literal($0) 73 NumericLiteral 74 => numeric_literal($0) 75 BigIntLiteral 76 => bigint_literal($0) 77 StringLiteral 78 => string_literal($0) 79 80 81@returns Expression 82ArrayLiteral[Yield, Await] : 83 `[` Elision? `]` 84 => array_literal_empty($0, $1, $2) 85 `[` ElementList[?Yield, ?Await] `]` 86 => array_literal($0, $1, $2) 87 `[` ElementList[?Yield, ?Await] `,` Elision? `]` 88 => array_literal_with_trailing_elision($0,$1, $3, $4) 89 90@returns ArrayExpression 91ElementList[Yield, Await] : 92 Elision? AssignmentExpression[+In, ?Yield, ?Await] 93 => element_list_first($0, $1) 94 Elision? SpreadElement[?Yield, ?Await] 95 => element_list_first_spread($0, $1) 96 ElementList[?Yield, ?Await] `,` Elision? AssignmentExpression[+In, ?Yield, ?Await] 97 => element_list_append($0, $2, $3) 98 ElementList[?Yield, ?Await] `,` Elision? SpreadElement[?Yield, ?Await] 99 => element_list_append_spread($0, $2, $3) 100 101@returns ArrayExpression 102Elision : 103 `,` 104 => elision_single($0) 105 Elision `,` 106 => elision_append($0, $1) 107 108@returns Expression 109SpreadElement[Yield, Await] : 110 `...` AssignmentExpression[+In, ?Yield, ?Await] 111 => spread_element($1) 112 113 114@returns Expression 115ObjectLiteral[Yield, Await] : 116 `{` `}` 117 => object_literal_empty($0, $1) 118 `{` PropertyDefinitionList[?Yield, ?Await] `}` 119 => object_literal($0, $1, $2) 120 `{` PropertyDefinitionList[?Yield, ?Await] `,` `}` 121 => object_literal($0, $1, $2) 122 123@returns ObjectExpression 124PropertyDefinitionList[Yield, Await] : 125 PropertyDefinition[?Yield, ?Await] 126 => property_definition_list_single($0) 127 PropertyDefinitionList[?Yield, ?Await] `,` PropertyDefinition[?Yield, ?Await] 128 => property_definition_list_append($0, $2) 129 130@returns ObjectProperty 131PropertyDefinition[Yield, Await] : 132 IdentifierReference[?Yield, ?Await] 133 => shorthand_property($0) 134 CoverInitializedName[?Yield, ?Await] 135 => $0 136 PropertyName[?Yield, ?Await] `:` AssignmentExpression[+In, ?Yield, ?Await] 137 => property_definition($0, $2) 138 MethodDefinition[?Yield, ?Await] 139 => property_definition_method($0) 140 `...` AssignmentExpression[+In, ?Yield, ?Await] 141 => property_definition_spread($1) 142 143@returns PropertyName 144PropertyName[Yield, Await] : 145 LiteralPropertyName 146 => $0 147 ComputedPropertyName[?Yield, ?Await] 148 => $0 149 150@returns PropertyName 151LiteralPropertyName : 152 IdentifierName 153 => property_name_identifier($0) 154 StringLiteral 155 => property_name_string($0) 156 NumericLiteral 157 => property_name_numeric($0) 158 BigIntLiteral 159 => property_name_bigint($0) 160 161@returns PropertyName 162ComputedPropertyName[Yield, Await] : 163 `[` AssignmentExpression[+In, ?Yield, ?Await] `]` 164 => computed_property_name($0, $1, $2) 165 166@returns ObjectProperty 167CoverInitializedName[Yield, Await] : 168 IdentifierReference[?Yield, ?Await] Initializer[+In, ?Yield, ?Await] 169 => cover_initialized_name($0, $1) 170 171@returns Expression 172Initializer[In, Yield, Await] : 173 `=` AssignmentExpression[?In, ?Yield, ?Await] 174 => $1 175 176 177@returns TemplateExpression 178TemplateLiteral[Yield, Await, Tagged] : 179 NoSubstitutionTemplate 180 => template_literal($0) 181 SubstitutionTemplate[?Yield, ?Await, ?Tagged] 182 => $0 183 184@returns TemplateExpression 185SubstitutionTemplate[Yield, Await, Tagged] : 186 TemplateHead Expression[+In, ?Yield, ?Await] TemplateSpans[?Yield, ?Await, ?Tagged] 187 => substitution_template($0, $1, $2) 188 189@returns Void 190TemplateSpans[Yield, Await, Tagged] : 191 TemplateTail 192 => template_spans(None, $0) 193 TemplateMiddleList[?Yield, ?Await, ?Tagged] TemplateTail 194 => template_spans(Some($0), $1) 195 196@returns Void 197TemplateMiddleList[Yield, Await, Tagged] : 198 TemplateMiddle Expression[+In, ?Yield, ?Await] 199 => template_middle_list_single($0, $1) 200 TemplateMiddleList[?Yield, ?Await, ?Tagged] TemplateMiddle Expression[+In, ?Yield, ?Await] 201 => template_middle_list_append($0, $1, $2) 202 203@returns Expression 204MemberExpression[Yield, Await] : 205 PrimaryExpression[?Yield, ?Await] 206 => $0 207 MemberExpression[?Yield, ?Await] `[` Expression[+In, ?Yield, ?Await] `]` 208 => computed_member_expr($0, $2, $3) 209 MemberExpression[?Yield, ?Await] `.` IdentifierName 210 => static_member_expr($0, $2) 211 MemberExpression[?Yield, ?Await] TemplateLiteral[?Yield, ?Await, +Tagged] 212 => tagged_template_expr($0, $1) 213 SuperProperty[?Yield, ?Await] 214 => $0 215 MetaProperty 216 => $0 217 `new` MemberExpression[?Yield, ?Await] Arguments[?Yield, ?Await] 218 => new_expr_with_arguments($0, $1, $2) 219 MemberExpression[?Yield, ?Await] `.` PrivateIdentifier 220 => private_field_expr($0, $2) 221 222@returns Expression 223SuperProperty[Yield, Await] : 224 `super` `[` Expression[+In, ?Yield, ?Await] `]` 225 => super_property_computed($0, $2, $3) 226 `super` `.` IdentifierName 227 => super_property_static($0, $2) 228 229@returns Expression 230MetaProperty : 231 NewTarget 232 => $0 233 234@returns Expression 235NewTarget : 236 `new` `.` `target` 237 => new_target_expr($0, $2) 238 239@returns Expression 240NewExpression[Yield, Await] : 241 MemberExpression[?Yield, ?Await] 242 => $0 243 `new` NewExpression[?Yield, ?Await] 244 => new_expr_without_arguments($0, $1) 245 246@returns Expression 247CallExpression[Yield, Await] : 248 CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await] 249 => $0 250 SuperCall[?Yield, ?Await] 251 => $0 252 ImportCall[?Yield, ?Await] 253 => $0 254 CallExpression[?Yield, ?Await] Arguments[?Yield, ?Await] 255 => call_expr($0, $1) 256 CallExpression[?Yield, ?Await] `[` Expression[+In, ?Yield, ?Await] `]` 257 => computed_member_expr($0, $2, $3) 258 CallExpression[?Yield, ?Await] `.` IdentifierName 259 => static_member_expr($0, $2) 260 CallExpression[?Yield, ?Await] TemplateLiteral[?Yield, ?Await, +Tagged] 261 => tagged_template_expr($0, $1) 262 CallExpression[?Yield, ?Await] `.` PrivateIdentifier 263 => private_field_expr($0, $2) 264 265@returns Expression 266SuperCall[Yield, Await] : 267 `super` Arguments[?Yield, ?Await] 268 => super_call($0, $1) 269 270@returns Expression 271ImportCall[Yield, Await] : 272 `import` `(` AssignmentExpression[+In, ?Yield, ?Await] `)` 273 => import_call($0, $2, $3) 274 275@returns Arguments 276Arguments[Yield, Await] : 277 `(` `)` 278 => arguments_empty($0, $1) 279 `(` ArgumentList[?Yield, ?Await] `)` 280 => arguments($0, $1, $2) 281 `(` ArgumentList[?Yield, ?Await] `,` `)` 282 => arguments($0, $1, $3) 283 284@returns Arguments 285ArgumentList[Yield, Await] : 286 AssignmentExpression[+In, ?Yield, ?Await] 287 => arguments_single($0) 288 `...` AssignmentExpression[+In, ?Yield, ?Await] 289 => arguments_spread_single($1) 290 ArgumentList[?Yield, ?Await] `,` AssignmentExpression[+In, ?Yield, ?Await] 291 => arguments_append($0, $2) 292 ArgumentList[?Yield, ?Await] `,` `...` AssignmentExpression[+In, ?Yield, ?Await] 293 => arguments_append_spread($0, $3) 294 295@returns Expression 296OptionalExpression[Yield, Await] : 297 MemberExpression[?Yield, ?Await] OptionalChain[?Yield, ?Await] 298 => optional_expr($0, $1) 299 CallExpression[?Yield, ?Await] OptionalChain[?Yield, ?Await] 300 => optional_expr($0, $1) 301 OptionalExpression[?Yield, ?Await] OptionalChain[?Yield, ?Await] 302 => optional_expr($0, $1) 303 304@returns Expression 305OptionalChain[Yield, Await] : 306 `?.` `[` Expression[+In, ?Yield, ?Await] `]` 307 => optional_computed_member_expr_tail($0, $2, $3) 308 `?.` IdentifierName 309 => optional_static_member_expr_tail($0, $1) 310 `?.` PrivateIdentifier 311 => optional_private_field_member_expr_tail($0, $1) 312 `?.` Arguments[?Yield, ?Await] 313 => optional_call_expr_tail($0, $1) 314 `?.` TemplateLiteral[?Yield, ?Await, +Tagged] 315 => error_optional_chain_with_template() 316 OptionalChain[?Yield, ?Await] `[` Expression[+In, ?Yield, ?Await] `]` 317 => optional_computed_member_expr($0, $2, $3) 318 OptionalChain[?Yield, ?Await] `.` IdentifierName 319 => optional_static_member_expr($0, $2) 320 OptionalChain[?Yield, ?Await] `.` PrivateIdentifier 321 => optional_private_field_member_expr($0, $2) 322 OptionalChain[?Yield, ?Await] Arguments[?Yield, ?Await] 323 => optional_call_expr($0, $1) 324 OptionalChain[?Yield, ?Await] TemplateLiteral[?Yield, ?Await, +Tagged] 325 => error_optional_chain_with_template() 326 327@returns Expression 328LeftHandSideExpression[Yield, Await] : 329 NewExpression[?Yield, ?Await] 330 => $0 331 CallExpression[?Yield, ?Await] 332 => $0 333 OptionalExpression[?Yield, ?Await] 334 => $0 335 336 337@returns Expression 338CallMemberExpression[Yield, Await] : 339 MemberExpression[?Yield, ?Await] Arguments[?Yield, ?Await] 340 => call_expr($0, $1) 341 342 343@returns Expression 344UpdateExpression[Yield, Await] : 345 LeftHandSideExpression[?Yield, ?Await] 346 => $0 347 LeftHandSideExpression[?Yield, ?Await] [no LineTerminator here] `++` 348 => post_increment_expr($0, $1) 349 LeftHandSideExpression[?Yield, ?Await] [no LineTerminator here] `--` 350 => post_decrement_expr($0, $1) 351 `++` UnaryExpression[?Yield, ?Await] 352 => pre_decrement_expr($0, $1) 353 `--` UnaryExpression[?Yield, ?Await] 354 => pre_decrement_expr($0, $1) 355 356 357@returns Expression 358UnaryExpression[Yield, Await] : 359 UpdateExpression[?Yield, ?Await] 360 => $0 361 `delete` UnaryExpression[?Yield, ?Await] 362 => delete_expr($0, $1) 363 `void` UnaryExpression[?Yield, ?Await] 364 => void_expr($0, $1) 365 `typeof` UnaryExpression[?Yield, ?Await] 366 => typeof_expr($0, $1) 367 `+` UnaryExpression[?Yield, ?Await] 368 => unary_plus_expr($0, $1) 369 `-` UnaryExpression[?Yield, ?Await] 370 => unary_minus_expr($0, $1) 371 `~` UnaryExpression[?Yield, ?Await] 372 => bitwise_not_expr($0, $1) 373 `!` UnaryExpression[?Yield, ?Await] 374 => logical_not_expr($0, $1) 375 [+Await] AwaitExpression[?Yield] 376 => $0 377 378 379@returns Expression 380ExponentiationExpression[Yield, Await] : 381 UnaryExpression[?Yield, ?Await] 382 => $0 383 UpdateExpression[?Yield, ?Await] `**` ExponentiationExpression[?Yield, ?Await] 384 => binary_expr(pow_op($1), $0, $2) 385 386 387@returns Expression 388MultiplicativeExpression[Yield, Await] : 389 ExponentiationExpression[?Yield, ?Await] 390 => $0 391 MultiplicativeExpression[?Yield, ?Await] MultiplicativeOperator ExponentiationExpression[?Yield, ?Await] 392 => multiplicative_expr($0, $1, $2) 393 394@returns BinaryOperator 395MultiplicativeOperator : 396 `*` 397 => box_op(mul_op($0)) 398 `/` 399 => box_op(div_op($0)) 400 `%` 401 => box_op(mod_op($0)) 402 403 404@returns Expression 405AdditiveExpression[Yield, Await] : 406 MultiplicativeExpression[?Yield, ?Await] 407 => $0 408 AdditiveExpression[?Yield, ?Await] `+` MultiplicativeExpression[?Yield, ?Await] 409 => binary_expr(add_op($1), $0, $2) 410 AdditiveExpression[?Yield, ?Await] `-` MultiplicativeExpression[?Yield, ?Await] 411 => binary_expr(sub_op($1), $0, $2) 412 413 414@returns Expression 415ShiftExpression[Yield, Await] : 416 AdditiveExpression[?Yield, ?Await] 417 => $0 418 ShiftExpression[?Yield, ?Await] `<<` AdditiveExpression[?Yield, ?Await] 419 => binary_expr(left_shift_op($1), $0, $2) 420 ShiftExpression[?Yield, ?Await] `>>` AdditiveExpression[?Yield, ?Await] 421 => binary_expr(right_shift_op($1), $0, $2) 422 ShiftExpression[?Yield, ?Await] `>>>` AdditiveExpression[?Yield, ?Await] 423 => binary_expr(right_shift_ext_op($1), $0, $2) 424 425 426@returns Expression 427RelationalExpression[In, Yield, Await] : 428 ShiftExpression[?Yield, ?Await] 429 => $0 430 RelationalExpression[?In, ?Yield, ?Await] `<` ShiftExpression[?Yield, ?Await] 431 => binary_expr(less_than_op($1), $0, $2) 432 RelationalExpression[?In, ?Yield, ?Await] `>` ShiftExpression[?Yield, ?Await] 433 => binary_expr(greater_than_op($1), $0, $2) 434 RelationalExpression[?In, ?Yield, ?Await] `<=` ShiftExpression[?Yield, ?Await] 435 => binary_expr(less_than_or_equal_op($1), $0, $2) 436 RelationalExpression[?In, ?Yield, ?Await] `>=` ShiftExpression[?Yield, ?Await] 437 => binary_expr(greater_than_or_equal_op($1), $0, $2) 438 RelationalExpression[?In, ?Yield, ?Await] `instanceof` ShiftExpression[?Yield, ?Await] 439 => binary_expr(instanceof_op($1), $0, $2) 440 [+In] RelationalExpression[+In, ?Yield, ?Await] `in` ShiftExpression[?Yield, ?Await] 441 => binary_expr(in_op($1), $0, $2) 442 443 444@returns Expression 445EqualityExpression[In, Yield, Await] : 446 RelationalExpression[?In, ?Yield, ?Await] 447 => $0 448 EqualityExpression[?In, ?Yield, ?Await] `==` RelationalExpression[?In, ?Yield, ?Await] 449 => binary_expr(equals_op($1), $0, $2) 450 EqualityExpression[?In, ?Yield, ?Await] `!=` RelationalExpression[?In, ?Yield, ?Await] 451 => binary_expr(not_equals_op($1), $0, $2) 452 EqualityExpression[?In, ?Yield, ?Await] `===` RelationalExpression[?In, ?Yield, ?Await] 453 => binary_expr(strict_equals_op($1), $0, $2) 454 EqualityExpression[?In, ?Yield, ?Await] `!==` RelationalExpression[?In, ?Yield, ?Await] 455 => binary_expr(strict_not_equals_op($1), $0, $2) 456 457 458@returns Expression 459BitwiseANDExpression[In, Yield, Await] : 460 EqualityExpression[?In, ?Yield, ?Await] 461 => $0 462 BitwiseANDExpression[?In, ?Yield, ?Await] `&` EqualityExpression[?In, ?Yield, ?Await] 463 => binary_expr(bitwise_and_op($1), $0, $2) 464 465@returns Expression 466BitwiseXORExpression[In, Yield, Await] : 467 BitwiseANDExpression[?In, ?Yield, ?Await] 468 => $0 469 BitwiseXORExpression[?In, ?Yield, ?Await] `^` BitwiseANDExpression[?In, ?Yield, ?Await] 470 => binary_expr(bitwise_xor_op($1), $0, $2) 471 472@returns Expression 473BitwiseORExpression[In, Yield, Await] : 474 BitwiseXORExpression[?In, ?Yield, ?Await] 475 => $0 476 BitwiseORExpression[?In, ?Yield, ?Await] `|` BitwiseXORExpression[?In, ?Yield, ?Await] 477 => binary_expr(bitwise_or_op($1), $0, $2) 478 479@returns Expression 480LogicalANDExpression[In, Yield, Await] : 481 BitwiseORExpression[?In, ?Yield, ?Await] 482 => $0 483 LogicalANDExpression[?In, ?Yield, ?Await] `&&` BitwiseORExpression[?In, ?Yield, ?Await] 484 => binary_expr(logical_and_op($1), $0, $2) 485 486@returns Expression 487LogicalORExpression[In, Yield, Await] : 488 LogicalANDExpression[?In, ?Yield, ?Await] 489 => $0 490 LogicalORExpression[?In, ?Yield, ?Await] `||` LogicalANDExpression[?In, ?Yield, ?Await] 491 => binary_expr(logical_or_op($1), $0, $2) 492 493@returns Expression 494ShortCircuitExpression[In, Yield, Await] : 495 LogicalORExpression[?In, ?Yield, ?Await] 496 => $0 497 CoalesceExpression[?In, ?Yield, ?Await] 498 => $0 499 500@returns Expression 501CoalesceExpression[In, Yield, Await] : 502 CoalesceExpressionHead[?In, ?Yield, ?Await] `??` BitwiseORExpression[?In, ?Yield, ?Await] 503 => binary_expr(coalesce_op($1), $0, $2) 504 505@returns Expression 506CoalesceExpressionHead[In, Yield, Await] : 507 CoalesceExpression[?In, ?Yield, ?Await] 508 => $0 509 BitwiseORExpression[?In, ?Yield, ?Await] 510 => $0 511 512@returns Expression 513ConditionalExpression[In, Yield, Await] : 514 ShortCircuitExpression[?In, ?Yield, ?Await] 515 => $0 516 ShortCircuitExpression[?In, ?Yield, ?Await] `?` AssignmentExpression[+In, ?Yield, ?Await] `:` AssignmentExpression[?In, ?Yield, ?Await] 517 => conditional_expr($0, $2, $4) 518 519 520@returns Expression 521AssignmentExpression[In, Yield, Await] : 522 ConditionalExpression[?In, ?Yield, ?Await] 523 => $0 524 [+Yield] YieldExpression[?In, ?Await] 525 => $0 526 ArrowFunction[?In, ?Yield, ?Await] 527 => $0 528 AsyncArrowFunction[?In, ?Yield, ?Await] 529 => $0 530 LeftHandSideExpression[?Yield, ?Await] `=` AssignmentExpression[?In, ?Yield, ?Await] 531 => assignment_expr($0, $2) 532 LeftHandSideExpression[?Yield, ?Await] AssignmentOperator AssignmentExpression[?In, ?Yield, ?Await] 533 => compound_assignment_expr($0, $1, $2) 534 LeftHandSideExpression[?Yield, ?Await] LogicalAssignmentOperator AssignmentExpression[?In, ?Yield, ?Await] 535 => compound_assignment_expr($0, $1, $2) 536 537@returns CompoundAssignmentOperator 538AssignmentOperator : 539 `*=` 540 => box_assign_op(mul_assign_op($0)) 541 `/=` 542 => box_assign_op(div_assign_op($0)) 543 `%=` 544 => box_assign_op(mod_assign_op($0)) 545 `+=` 546 => box_assign_op(add_assign_op($0)) 547 `-=` 548 => box_assign_op(sub_assign_op($0)) 549 `<<=` 550 => box_assign_op(left_shift_assign_op($0)) 551 `>>=` 552 => box_assign_op(right_shift_assign_op($0)) 553 `>>>=` 554 => box_assign_op(right_shift_ext_assign_op($0)) 555 `&=` 556 => box_assign_op(bitwise_and_assign_op($0)) 557 `^=` 558 => box_assign_op(bitwise_xor_assign_op($0)) 559 `|=` 560 => box_assign_op(bitwise_or_assign_op($0)) 561 `**=` 562 => box_assign_op(pow_assign_op($0)) 563 564@returns CompoundAssignmentOperator 565LogicalAssignmentOperator : 566 `&&=` 567 => box_assign_op(logical_and_assign_op($0)) 568 `||=` 569 => box_assign_op(logical_or_assign_op($0)) 570 `??=` 571 => box_assign_op(coalesce_assign_op($0)) 572 573AssignmentPattern[Yield, Await] : 574 ObjectAssignmentPattern[?Yield, ?Await] 575 ArrayAssignmentPattern[?Yield, ?Await] 576 577ObjectAssignmentPattern[Yield, Await] : 578 `{` `}` 579 `{` AssignmentRestProperty[?Yield, ?Await] `}` 580 `{` AssignmentPropertyList[?Yield, ?Await] `}` 581 `{` AssignmentPropertyList[?Yield, ?Await] `,` AssignmentRestProperty[?Yield, ?Await]? `}` 582 583ArrayAssignmentPattern[Yield, Await] : 584 `[` Elision? AssignmentRestElement[?Yield, ?Await]? `]` 585 `[` AssignmentElementList[?Yield, ?Await] `]` 586 `[` AssignmentElementList[?Yield, ?Await] `,` Elision? AssignmentRestElement[?Yield, ?Await]? `]` 587 588AssignmentRestProperty[Yield, Await] : 589 `...` DestructuringAssignmentTarget[?Yield, ?Await] 590 591AssignmentPropertyList[Yield, Await] : 592 AssignmentProperty[?Yield, ?Await] 593 AssignmentPropertyList[?Yield, ?Await] `,` AssignmentProperty[?Yield, ?Await] 594 595AssignmentElementList[Yield, Await] : 596 AssignmentElisionElement[?Yield, ?Await] 597 AssignmentElementList[?Yield, ?Await] `,` AssignmentElisionElement[?Yield, ?Await] 598 599AssignmentElisionElement[Yield, Await] : 600 Elision? AssignmentElement[?Yield, ?Await] 601 602AssignmentProperty[Yield, Await] : 603 IdentifierReference[?Yield, ?Await] Initializer[+In, ?Yield, ?Await]? 604 PropertyName[?Yield, ?Await] `:` AssignmentElement[?Yield, ?Await] 605 606AssignmentElement[Yield, Await] : 607 DestructuringAssignmentTarget[?Yield, ?Await] Initializer[+In, ?Yield, ?Await]? 608 609AssignmentRestElement[Yield, Await] : 610 `...` DestructuringAssignmentTarget[?Yield, ?Await] 611 612DestructuringAssignmentTarget[Yield, Await] : 613 LeftHandSideExpression[?Yield, ?Await] 614 615 616@returns Expression 617Expression[In, Yield, Await] : 618 AssignmentExpression[?In, ?Yield, ?Await] 619 => $0 620 Expression[?In, ?Yield, ?Await] `,` AssignmentExpression[?In, ?Yield, ?Await] 621 => binary_expr(comma_op($1), $0, $2) 622 623 624@returns Statement 625Statement[Yield, Await, Return] : 626 BlockStatement[?Yield, ?Await, ?Return] 627 => $0 628 VariableStatement[?Yield, ?Await] 629 => $0 630 EmptyStatement 631 => $0 632 ExpressionStatement[?Yield, ?Await] 633 => $0 634 IfStatement[?Yield, ?Await, ?Return] 635 => $0 636 BreakableStatement[?Yield, ?Await, ?Return] 637 => $0 638 ContinueStatement[?Yield, ?Await] 639 => $0 640 BreakStatement[?Yield, ?Await] 641 => $0 642 [+Return] ReturnStatement[?Yield, ?Await] 643 => $0 644 WithStatement[?Yield, ?Await, ?Return] 645 => $0 646 LabelledStatement[?Yield, ?Await, ?Return] 647 => $0 648 ThrowStatement[?Yield, ?Await] 649 => $0 650 TryStatement[?Yield, ?Await, ?Return] 651 => $0 652 DebuggerStatement 653 => $0 654 655@returns Statement 656Declaration[Yield, Await] : 657 HoistableDeclaration[?Yield, ?Await, ~Default] 658 => $0 659 ClassDeclaration[?Yield, ?Await, ~Default] 660 => $0 661 LexicalDeclaration[+In, ?Yield, ?Await] 662 => $0 663 664@returns Statement 665HoistableDeclaration[Yield, Await, Default] : 666 FunctionDeclaration[?Yield, ?Await, ?Default] 667 => $0 668 GeneratorDeclaration[?Yield, ?Await, ?Default] 669 => $0 670 AsyncFunctionDeclaration[?Yield, ?Await, ?Default] 671 => $0 672 AsyncGeneratorDeclaration[?Yield, ?Await, ?Default] 673 => $0 674 675@returns Statement 676BreakableStatement[Yield, Await, Return] : 677 IterationStatement[?Yield, ?Await, ?Return] 678 => $0 679 SwitchStatement[?Yield, ?Await, ?Return] 680 => $0 681 682 683@returns Statement 684BlockStatement[Yield, Await, Return] : 685 Block[?Yield, ?Await, ?Return] 686 => block_statement($0) 687 688@returns Block 689Block[Yield, Await, Return] : 690 `{` StatementList[?Yield, ?Await, ?Return]? `}` 691 => block($0, $1, $2) 692 693@returns Vec<Statement> 694StatementList[Yield, Await, Return] : 695 StatementListItem[?Yield, ?Await, ?Return] 696 => statement_list_single($0) 697 StatementList[?Yield, ?Await, ?Return] StatementListItem[?Yield, ?Await, ?Return] 698 => statement_list_append($0, $1) 699 700@returns Statement 701StatementListItem[Yield, Await, Return] : 702 Statement[?Yield, ?Await, ?Return] 703 => $0 704 Declaration[?Yield, ?Await] 705 => $0 706 707 708@returns Statement 709LexicalDeclaration[In, Yield, Await] : 710 LetOrConst BindingList[?In, ?Yield, ?Await] `;` 711 => lexical_declaration($0, $1) 712 713@returns VariableDeclarationOrExpression 714ForLexicalDeclaration[In, Yield, Await] : 715 LetOrConst BindingList[?In, ?Yield, ?Await] `;` 716 => for_lexical_declaration($0, $1) 717 718@returns VariableDeclarationKind 719LetOrConst : 720 `let` 721 => let_kind($0) 722 `const` 723 => const_kind($0) 724 725@returns Vec<VariableDeclarator> 726BindingList[In, Yield, Await] : 727 LexicalBinding[?In, ?Yield, ?Await] 728 => variable_declaration_list_single($0) 729 BindingList[?In, ?Yield, ?Await] `,` LexicalBinding[?In, ?Yield, ?Await] 730 => variable_declaration_list_append($0, $2) 731 732@returns VariableDeclarator 733LexicalBinding[In, Yield, Await] : 734 BindingIdentifier[?Yield, ?Await] Initializer[?In, ?Yield, ?Await]? 735 => variable_declaration(binding_identifier_to_binding($0), $1) 736 BindingPattern[?Yield, ?Await] Initializer[?In, ?Yield, ?Await] 737 => variable_declaration($0, Some($1)) 738 739 740@returns Statement 741VariableStatement[Yield, Await] : 742 `var` VariableDeclarationList[+In, ?Yield, ?Await] `;` 743 => variable_statement($0, $1) 744 745@returns Vec<VariableDeclarator> 746VariableDeclarationList[In, Yield, Await] : 747 VariableDeclaration[?In, ?Yield, ?Await] 748 => variable_declaration_list_single($0) 749 VariableDeclarationList[?In, ?Yield, ?Await] `,` VariableDeclaration[?In, ?Yield, ?Await] 750 => variable_declaration_list_append($0, $2) 751 752@returns VariableDeclarator 753VariableDeclaration[In, Yield, Await] : 754 BindingIdentifier[?Yield, ?Await] Initializer[?In, ?Yield, ?Await]? 755 => variable_declaration(binding_identifier_to_binding($0), $1) 756 BindingPattern[?Yield, ?Await] Initializer[?In, ?Yield, ?Await] 757 => variable_declaration($0, Some($1)) 758 759 760@returns Binding 761BindingPattern[Yield, Await] : 762 ObjectBindingPattern[?Yield, ?Await] 763 => $0 764 ArrayBindingPattern[?Yield, ?Await] 765 => $0 766 767@returns Binding 768ObjectBindingPattern[Yield, Await] : 769 `{` `}` 770 => object_binding_pattern($0, binding_property_list_empty(), None, $1) 771 `{` BindingRestProperty[?Yield, ?Await] `}` 772 => object_binding_pattern($0, binding_property_list_empty(), Some($1), $2) 773 `{` BindingPropertyList[?Yield, ?Await] `}` 774 => object_binding_pattern($0, $1, None, $2) 775 `{` BindingPropertyList[?Yield, ?Await] `,` BindingRestProperty[?Yield, ?Await]? `}` 776 => object_binding_pattern($0, $1, $3, $4) 777 778@returns Binding 779ArrayBindingPattern[Yield, Await] : 780 `[` Elision? BindingRestElement[?Yield, ?Await]? `]` 781 => array_binding_pattern($0, binding_element_list_empty(), $1, $2, $3) 782 `[` BindingElementList[?Yield, ?Await] `]` 783 => array_binding_pattern($0, $1, None, None, $2) 784 `[` BindingElementList[?Yield, ?Await] `,` Elision? BindingRestElement[?Yield, ?Await]? `]` 785 => array_binding_pattern($0, $1, $3, $4, $5) 786 787@returns BindingIdentifier 788BindingRestProperty[Yield, Await] : 789 `...` BindingIdentifier[?Yield, ?Await] 790 => $1 791 792@returns Vec<BindingProperty> 793BindingPropertyList[Yield, Await] : 794 BindingProperty[?Yield, ?Await] 795 => binding_property_list_single($0) 796 BindingPropertyList[?Yield, ?Await] `,` BindingProperty[?Yield, ?Await] 797 => binding_property_list_append($0, $2) 798 799@returns Vec<Option<Parameter>> 800BindingElementList[Yield, Await] : 801 BindingElisionElement[?Yield, ?Await] 802 => $0 803 BindingElementList[?Yield, ?Await] `,` BindingElisionElement[?Yield, ?Await] 804 => binding_element_list_append($0, $2) 805 806@returns Vec<Option<Parameter>> 807BindingElisionElement[Yield, Await] : 808 Elision? BindingElement[?Yield, ?Await] 809 => binding_elision_element($0, $1) 810 811@returns BindingProperty 812BindingProperty[Yield, Await] : 813 SingleNameBinding[?Yield, ?Await] 814 => binding_property_shorthand($0) 815 PropertyName[?Yield, ?Await] `:` BindingElement[?Yield, ?Await] 816 => binding_property($0, $2) 817 818@returns Parameter 819BindingElement[Yield, Await] : 820 SingleNameBinding[?Yield, ?Await] 821 => $0 822 BindingPattern[?Yield, ?Await] Initializer[+In, ?Yield, ?Await]? 823 => binding_element_pattern($0, $1) 824 825@returns Parameter 826SingleNameBinding[Yield, Await] : 827 BindingIdentifier[?Yield, ?Await] Initializer[+In, ?Yield, ?Await]? 828 => single_name_binding($0, $1) 829 830@returns Binding 831BindingRestElement[Yield, Await] : 832 `...` BindingIdentifier[?Yield, ?Await] 833 => binding_identifier_to_binding($1) 834 `...` BindingPattern[?Yield, ?Await] 835 => $1 836 837 838@returns Statement 839EmptyStatement : 840 `;` 841 => empty_statement($0) 842 843@returns Statement 844ExpressionStatement[Yield, Await] : 845 [lookahead <! {`{`, `function`, `async`, `class`, `let`}] Expression[+In, ?Yield, ?Await] `;` 846 => expression_statement($0) 847 848 849@returns Statement 850IfStatement[Yield, Await, Return] : 851 `if` `(` Expression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return] `else` Statement[?Yield, ?Await, ?Return] 852 => if_statement($0, $2, $4, Some($6)) 853 `if` `(` Expression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return] [lookahead != `else`] 854 => if_statement($0, $2, $4, None) 855 `if` `(` Expression[+In, ?Yield, ?Await] `)` FunctionDeclaration[?Yield, ?Await, ~Default] `else` Statement[?Yield, ?Await, ?Return] 856 => if_statement($0, $2, make_block_stmt_from_function_decl($4), Some($6)) 857 `if` `(` Expression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return] `else` FunctionDeclaration[?Yield, ?Await, ~Default] 858 => if_statement($0, $2, $4, Some(make_block_stmt_from_function_decl($6))) 859 `if` `(` Expression[+In, ?Yield, ?Await] `)` FunctionDeclaration[?Yield, ?Await, ~Default] `else` FunctionDeclaration[?Yield, ?Await, ~Default] 860 => if_statement($0, $2, make_block_stmt_from_function_decl($4), Some(make_block_stmt_from_function_decl($6))) 861 `if` `(` Expression[+In, ?Yield, ?Await] `)` FunctionDeclaration[?Yield, ?Await, ~Default] [lookahead != `else`] 862 => if_statement($0, $2, make_block_stmt_from_function_decl($4), None) 863 864 865@returns Statement 866IterationStatement[Yield, Await, Return] : 867 `do` Statement[?Yield, ?Await, ?Return] `while` `(` Expression[+In, ?Yield, ?Await] `)` `;` 868 => do_while_statement($0, $1, $4, $5) 869 `while` `(` Expression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return] 870 => while_statement($0, $2, $4) 871 `for` `(` [lookahead != `let`] Expression[~In, ?Yield, ?Await]? `;` Expression[+In, ?Yield, ?Await]? `;` Expression[+In, ?Yield, ?Await]? `)` Statement[?Yield, ?Await, ?Return] 872 => for_statement($0, for_expression($2), $4, $6, $8) 873 `for` `(` `var` VariableDeclarationList[~In, ?Yield, ?Await] `;` Expression[+In, ?Yield, ?Await]? `;` Expression[+In, ?Yield, ?Await]? `)` Statement[?Yield, ?Await, ?Return] 874 => for_statement($0, Some(for_var_declaration($2, $3)), $5, $7, $9) 875 `for` `(` ForLexicalDeclaration[~In, ?Yield, ?Await] Expression[+In, ?Yield, ?Await]? `;` Expression[+In, ?Yield, ?Await]? `)` Statement[?Yield, ?Await, ?Return] 876 => for_statement_lexical($0, unbox_for_lexical_declaration($2), $3, $5, $7) 877 `for` `(` [lookahead != `let`] LeftHandSideExpression[?Yield, ?Await] `in` Expression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return] 878 => for_in_statement($0, for_assignment_target($2), $4, $6) 879 `for` `(` `var` ForBinding[?Yield, ?Await] `in` Expression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return] 880 => for_in_statement($0, for_in_or_of_var_declaration($2, $3, None), $5, $7) 881 `for` `(` `var` BindingIdentifier[?Yield, ?Await] Initializer[~In, ?Yield, ?Await] `in` Expression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return] 882 => for_in_statement($0, for_in_or_of_var_declaration($2, binding_identifier_to_binding($3), Some($4)), $6, $8) 883 `for` `(` ForDeclaration[?Yield, ?Await] `in` Expression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return] 884 => for_in_statement_lexical($0, unbox_for_declaration($2), $4, $6) 885 `for` `(` [lookahead <! {`async`, `let`} ] LeftHandSideExpression[?Yield, ?Await] `of` AssignmentExpression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return] 886 => for_of_statement($0, for_assignment_target($2), $4, $6) 887 `for` `(` `var` ForBinding[?Yield, ?Await] `of` AssignmentExpression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return] 888 => for_of_statement($0, for_in_or_of_var_declaration($2, $3, None), $5, $7) 889 `for` `(` ForDeclaration[?Yield, ?Await] `of` AssignmentExpression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return] 890 => for_of_statement_lexical($0, unbox_for_declaration($2), $4, $6) 891 [+Await] `for` `await` `(` [lookahead <! {`async`, `let`} ] LeftHandSideExpression[?Yield, ?Await] `of` AssignmentExpression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return] 892 => for_await_of_statement($0, for_assignment_target($3), $5, $7) 893 [+Await] `for` `await` `(` `var` ForBinding[?Yield, ?Await] `of` AssignmentExpression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return] 894 => for_await_of_statement($0, for_in_or_of_var_declaration($3, $4, None), $6, $8) 895 [+Await] `for` `await` `(` ForDeclaration[?Yield, ?Await] `of` AssignmentExpression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return] 896 => for_await_of_statement_lexical($0, unbox_for_declaration($3), $5, $7) 897 898@returns VariableDeclarationOrAssignmentTarget 899ForDeclaration[Yield, Await] : 900 LetOrConst ForBinding[?Yield, ?Await] 901 => for_declaration($0, $1) 902 903@returns Binding 904ForBinding[Yield, Await] : 905 BindingIdentifier[?Yield, ?Await] 906 => binding_identifier_to_binding($0) 907 BindingPattern[?Yield, ?Await] 908 => $0 909 910 911@returns Statement 912ContinueStatement[Yield, Await] : 913 `continue` `;` 914 => continue_statement($0, None) 915 `continue` [no LineTerminator here] LabelIdentifier[?Yield, ?Await] `;` 916 => continue_statement($0, Some($1)) 917 918 919@returns Statement 920BreakStatement[Yield, Await] : 921 `break` `;` 922 => break_statement($0, None) 923 `break` [no LineTerminator here] LabelIdentifier[?Yield, ?Await] `;` 924 => break_statement($0, Some($1)) 925 926 927@returns Statement 928ReturnStatement[Yield, Await] : 929 `return` `;` 930 => return_statement($0, None) 931 `return` [no LineTerminator here] Expression[+In, ?Yield, ?Await] `;` 932 => return_statement($0, Some($1)) 933 934 935@returns Statement 936WithStatement[Yield, Await, Return] : 937 `with` `(` Expression[+In, ?Yield, ?Await] `)` Statement[?Yield, ?Await, ?Return] 938 => with_statement($0, $2, $4) 939 940 941@returns Statement 942SwitchStatement[Yield, Await, Return] : 943 `switch` `(` Expression[+In, ?Yield, ?Await] `)` CaseBlock[?Yield, ?Await, ?Return] 944 => switch_statement($0, $2, $4) 945 946@returns Statement 947CaseBlock[Yield, Await, Return] : 948 `{` CaseClauses[?Yield, ?Await, ?Return]? `}` 949 => case_block($0, $1, $2) 950 `{` CaseClauses[?Yield, ?Await, ?Return]? DefaultClause[?Yield, ?Await, ?Return] CaseClauses[?Yield, ?Await, ?Return]? `}` 951 => case_block_with_default($0, $1, $2, $3, $4) 952 953@returns Vec<SwitchCase> 954CaseClauses[Yield, Await, Return] : 955 CaseClause[?Yield, ?Await, ?Return] 956 => case_clauses_single($0) 957 CaseClauses[?Yield, ?Await, ?Return] CaseClause[?Yield, ?Await, ?Return] 958 => case_clauses_append($0, $1) 959 960@returns SwitchCase 961CaseClause[Yield, Await, Return] : 962 `case` Expression[+In, ?Yield, ?Await] `:` StatementList[?Yield, ?Await, ?Return]? 963 => case_clause($0, $1, $2, $3) 964 965@returns SwitchDefault 966DefaultClause[Yield, Await, Return] : 967 `default` `:` StatementList[?Yield, ?Await, ?Return]? 968 => default_clause($0, $1, $2) 969 970 971@returns Statement 972LabelledStatement[Yield, Await, Return] : 973 LabelIdentifier[?Yield, ?Await] `:` LabelledItem[?Yield, ?Await, ?Return] 974 => labelled_statement($0, $2) 975 976@returns Statement 977LabelledItem[Yield, Await, Return] : 978 Statement[?Yield, ?Await, ?Return] 979 => $0 980 FunctionDeclaration[?Yield, ?Await, ~Default] 981 => $0 982 983 984@returns Statement 985ThrowStatement[Yield, Await] : 986 `throw` [no LineTerminator here] Expression[+In, ?Yield, ?Await] `;` 987 => throw_statement($0, $1) 988 989@returns Statement 990TryStatement[Yield, Await, Return] : 991 `try` Block[?Yield, ?Await, ?Return] Catch[?Yield, ?Await, ?Return] 992 => try_statement($0, $1, Some($2), None) 993 `try` Block[?Yield, ?Await, ?Return] Finally[?Yield, ?Await, ?Return] 994 => try_statement($0, $1, None, Some($2)) 995 `try` Block[?Yield, ?Await, ?Return] Catch[?Yield, ?Await, ?Return] Finally[?Yield, ?Await, ?Return] 996 => try_statement($0, $1, Some($2), Some($3)) 997 998@returns CatchClause 999Catch[Yield, Await, Return] : 1000 `catch` `(` CatchParameter[?Yield, ?Await] `)` CatchBlock[?Yield, ?Await, ?Return] 1001 => catch($0, $2, $4) 1002 `catch` Block[?Yield, ?Await, ?Return] 1003 => catch_no_param($0, $1) 1004 1005@returns Block 1006CatchBlock[Yield, Await, Return] : 1007 `{` StatementList[?Yield, ?Await, ?Return]? `}` 1008 => catch_block($0, $1, $2) 1009 1010@returns Block 1011Finally[Yield, Await, Return] : 1012 `finally` Block[?Yield, ?Await, ?Return] 1013 => $1 1014 1015@returns Binding 1016CatchParameter[Yield, Await] : 1017 BindingIdentifier[?Yield, ?Await] 1018 => binding_identifier_to_binding($0) 1019 BindingPattern[?Yield, ?Await] 1020 => $0 1021 1022 1023@returns Statement 1024DebuggerStatement : 1025 `debugger` `;` 1026 => debugger_statement($0) 1027 1028 1029@returns Statement 1030FunctionDeclaration[Yield, Await, Default] : 1031 `function` BindingIdentifier[?Yield, ?Await] `(` FormalParameters[~Yield, ~Await] `)` `{` FunctionBody[~Yield, ~Await] `}` 1032 => function_decl(function($0, Some($1), $2, $3, $4, $5, $6, $7)) 1033 [+Default] `function` `(` FormalParameters[~Yield, ~Await] `)` `{` FunctionBody[~Yield, ~Await] `}` 1034 => function_decl(function($0, None, $1, $2, $3, $4, $5, $6)) 1035 1036@returns Expression 1037FunctionExpression : 1038 `function` BindingIdentifier[~Yield, ~Await]? `(` FormalParameters[~Yield, ~Await] `)` `{` FunctionBody[~Yield, ~Await] `}` 1039 => function_expr(function($0, $1, $2, $3, $4, $5, $6, $7)) 1040 1041@returns FormalParameters 1042UniqueFormalParameters[Yield, Await] : 1043 FormalParameters[?Yield, ?Await] 1044 => unique_formal_parameters($0) 1045 1046@returns FormalParameters 1047FormalParameters[Yield, Await] : 1048 [empty] 1049 => empty_formal_parameters() 1050 FunctionRestParameter[?Yield, ?Await] 1051 => with_rest_parameter(empty_formal_parameters(), $0) 1052 FormalParameterList[?Yield, ?Await] 1053 => $0 1054 FormalParameterList[?Yield, ?Await] `,` 1055 => $0 1056 FormalParameterList[?Yield, ?Await] `,` FunctionRestParameter[?Yield, ?Await] 1057 => with_rest_parameter($0, $2) 1058 1059@returns FormalParameters 1060FormalParameterList[Yield, Await] : 1061 FormalParameter[?Yield, ?Await] 1062 => formal_parameter_list_single($0) 1063 FormalParameterList[?Yield, ?Await] `,` FormalParameter[?Yield, ?Await] 1064 => formal_parameter_list_append($0, $2) 1065 1066@returns Binding 1067FunctionRestParameter[Yield, Await] : 1068 BindingRestElement[?Yield, ?Await] 1069 => $0 1070 1071@returns Parameter 1072FormalParameter[Yield, Await] : 1073 BindingElement[?Yield, ?Await] 1074 => $0 1075 1076@returns FunctionBody 1077FunctionBody[Yield, Await] : 1078 FunctionStatementList[?Yield, ?Await] 1079 => function_body($0) 1080 1081@returns Vec<Statement> 1082FunctionStatementList[Yield, Await] : 1083 StatementList[?Yield, ?Await, +Return]? 1084 => function_statement_list($0) 1085 1086 1087@returns Expression 1088ArrowFunction[In, Yield, Await] : 1089 ArrowParameters[?Yield, ?Await] [no LineTerminator here] `=>` ConciseBody[?In] 1090 => arrow_function($0, $2) 1091 1092@returns FormalParameters 1093ArrowParameters[Yield, Await] : 1094 BindingIdentifier[?Yield, ?Await] 1095 => arrow_parameters_bare($0) 1096 CoverParenthesizedExpressionAndArrowParameterList[?Yield, ?Await] 1097 => uncover_arrow_parameters($0) 1098 1099@returns ArrowExpressionBody 1100ConciseBody[In] : 1101 [lookahead != `{` ] AssignmentExpression[?In, ~Yield, ~Await] 1102 => concise_body_expression($0) 1103 `{` FunctionBody[~Yield, ~Await] `}` 1104 => concise_body_block($0, $1, $2) 1105 1106 1107ArrowFormalParameters[Yield, Await] : 1108 `(` UniqueFormalParameters[?Yield, ?Await] `)` 1109 1110 1111@returns MethodDefinition 1112MethodDefinition[Yield, Await] : 1113 ClassElementName[?Yield, ?Await] `(` UniqueFormalParameters[~Yield, ~Await] `)` `{` FunctionBody[~Yield, ~Await] `}` 1114 => method_definition($0, $1, $2, $3, $4, $5, $6) 1115 GeneratorMethod[?Yield, ?Await] 1116 => $0 1117 AsyncMethod[?Yield, ?Await] 1118 => $0 1119 AsyncGeneratorMethod[?Yield, ?Await] 1120 => $0 1121 `get` ClassElementName[?Yield, ?Await] `(` `)` `{` FunctionBody[~Yield, ~Await] `}` 1122 => getter($0, $1, $4, $5, $6) 1123 `set` ClassElementName[?Yield, ?Await] `(` PropertySetParameterList `)` `{` FunctionBody[~Yield, ~Await] `}` 1124 => setter($0, $1, $2, $3, $4, $5, $6, $7) 1125 1126@returns Parameter 1127PropertySetParameterList : 1128 FormalParameter[~Yield, ~Await] 1129 => $0 1130 1131 1132@returns MethodDefinition 1133GeneratorMethod[Yield, Await] : 1134 `*` ClassElementName[?Yield, ?Await] `(` UniqueFormalParameters[+Yield, ~Await] `)` `{` GeneratorBody `}` 1135 => generator_method($0, $1, $2, $3, $4, $5, $6, $7) 1136 1137@returns Statement 1138GeneratorDeclaration[Yield, Await, Default] : 1139 `function` `*` BindingIdentifier[?Yield, ?Await] `(` FormalParameters[+Yield, ~Await] `)` `{` GeneratorBody `}` 1140 => function_decl(generator($0, Some($2), $3, $4, $5, $6, $7, $8)) 1141 [+Default] `function` `*` `(` FormalParameters[+Yield, ~Await] `)` `{` GeneratorBody `}` 1142 => function_decl(generator($0, None, $2, $3, $4, $5, $6, $7)) 1143 1144@returns Expression 1145GeneratorExpression : 1146 `function` `*` BindingIdentifier[+Yield, ~Await]? `(` FormalParameters[+Yield, ~Await] `)` `{` GeneratorBody `}` 1147 => function_expr(generator($0, $2, $3, $4, $5, $6, $7, $8)) 1148 1149@returns FunctionBody 1150GeneratorBody : 1151 FunctionBody[+Yield, ~Await] 1152 => $0 1153 1154@returns Expression 1155YieldExpression[In, Await] : 1156 `yield` 1157 => yield_expr($0, None) 1158 `yield` [no LineTerminator here] AssignmentExpression[?In, +Yield, ?Await] 1159 => yield_expr($0, Some($1)) 1160 `yield` [no LineTerminator here] `*` AssignmentExpression[?In, +Yield, ?Await] 1161 => yield_star_expr($0, $2) 1162 1163 1164@returns MethodDefinition 1165AsyncGeneratorMethod[Yield, Await] : 1166 `async` [no LineTerminator here] `*` ClassElementName[?Yield, ?Await] `(` UniqueFormalParameters[+Yield, +Await] `)` `{` AsyncGeneratorBody `}` 1167 => async_generator_method($0, $2, $3, $4, $5, $6, $7, $8) 1168 1169@returns Statement 1170AsyncGeneratorDeclaration[Yield, Await, Default] : 1171 `async` [no LineTerminator here] `function` `*` BindingIdentifier[?Yield, ?Await] `(` FormalParameters[+Yield, +Await] `)` `{` AsyncGeneratorBody `}` 1172 => function_decl(async_generator($0, Some($3), $4, $5, $6, $7, $8, $9)) 1173 [+Default] `async` [no LineTerminator here] `function` `*` `(` FormalParameters[+Yield, +Await] `)` `{` AsyncGeneratorBody `}` 1174 => function_decl(async_generator($0, None, $3, $4, $5, $6, $7, $8)) 1175 1176@returns Expression 1177AsyncGeneratorExpression : 1178 `async` [no LineTerminator here] `function` `*` BindingIdentifier[+Yield, +Await]? `(` FormalParameters[+Yield, +Await] `)` `{` AsyncGeneratorBody `}` 1179 => function_expr(async_function($0, $3, $4, $5, $6, $7, $8, $9)) 1180 1181@returns FunctionBody 1182AsyncGeneratorBody : 1183 FunctionBody[+Yield, +Await] 1184 => $0 1185 1186 1187@returns Statement 1188ClassDeclaration[Yield, Await, Default] : 1189 `class` BindingIdentifier[?Yield, ?Await] ClassTail[?Yield, ?Await] 1190 => class_declaration($0, Some($1), $2) 1191 [+Default] `class` ClassTail[?Yield, ?Await] 1192 => class_declaration($0, None, $1) 1193 1194@returns Expression 1195ClassExpression[Yield, Await] : 1196 `class` BindingIdentifier[?Yield, ?Await]? ClassTail[?Yield, ?Await] 1197 => class_expression($0, $1, $2) 1198 1199@returns ClassExpression 1200ClassTail[Yield, Await] : 1201 ClassHeritage[?Yield, ?Await]? `{` ClassBody[?Yield, ?Await]? `}` 1202 => class_tail($0, $2, $3) 1203 1204@returns Expression 1205ClassHeritage[Yield, Await] : 1206 `extends` LeftHandSideExpression[?Yield, ?Await] 1207 => $1 1208 1209@returns Vec<Box<ClassElement>> 1210ClassBody[Yield, Await] : 1211 ClassElementList[?Yield, ?Await] 1212 => $0 1213 1214@returns Vec<Box<ClassElement>> 1215ClassElementList[Yield, Await] : 1216 ClassElement[?Yield, ?Await] 1217 => $0 1218 ClassElementList[?Yield, ?Await] ClassElement[?Yield, ?Await] 1219 => class_element_list_append($0, $1) 1220 1221@returns ClassElement 1222FieldDefinition[Yield, Await] : 1223 ClassElementName[?Yield, ?Await] Initializer[+In, ~Yield, ~Await]? 1224 => class_field_definition($0, $1) 1225 1226@returns ClassElementName 1227ClassElementName[Yield, Await] : 1228 PropertyName[?Yield, ?Await] 1229 => property_name_to_class_element_name($0) 1230 PrivateIdentifier 1231 => class_element_name_private($0) 1232 1233@returns Vec<Box<ClassElement>> 1234ClassElement[Yield, Await] : 1235 MethodDefinition[?Yield, ?Await] 1236 => class_element($0) 1237 `static` MethodDefinition[?Yield, ?Await] 1238 => class_element_static($0, $1) 1239 FieldDefinition[?Yield, ?Await] `;` 1240 => class_element_to_vec($0) 1241 `static` FieldDefinition[?Yield, ?Await] `;` 1242 => class_element_static_field($0, $1) 1243 `;` 1244 => class_element_empty() 1245 1246 1247@returns Statement 1248AsyncFunctionDeclaration[Yield, Await, Default] : 1249 `async` [no LineTerminator here] `function` BindingIdentifier[?Yield, ?Await] `(` FormalParameters[~Yield, +Await] `)` `{` AsyncFunctionBody `}` 1250 => function_decl(async_function($0, Some($2), $3, $4, $5, $6, $7, $8)) 1251 [+Default] `async` [no LineTerminator here] `function` `(` FormalParameters[~Yield, +Await] `)` `{` AsyncFunctionBody `}` 1252 => function_decl(async_function($0, None, $2, $3, $4, $5, $6, $7)) 1253 1254@returns Expression 1255AsyncFunctionExpression : 1256 `async` [no LineTerminator here] `function` `(` FormalParameters[~Yield, +Await] `)` `{` AsyncFunctionBody `}` 1257 => function_expr(async_function($0, None, $2, $3, $4, $5, $6, $7)) 1258 `async` [no LineTerminator here] `function` BindingIdentifier[~Yield, +Await] `(` FormalParameters[~Yield, +Await] `)` `{` AsyncFunctionBody `}` 1259 => function_expr(async_function($0, Some($2), $3, $4, $5, $6, $7, $8)) 1260 1261@returns MethodDefinition 1262AsyncMethod[Yield, Await] : 1263 `async` [no LineTerminator here] PropertyName[?Yield, ?Await] `(` UniqueFormalParameters[~Yield, +Await] `)` `{` AsyncFunctionBody `}` 1264 => async_method($0, $1, $2, $3, $4, $5, $6, $7) 1265 1266@returns FunctionBody 1267AsyncFunctionBody : 1268 FunctionBody[~Yield, +Await] 1269 => $0 1270 1271@returns Expression 1272AwaitExpression[Yield] : 1273 `await` UnaryExpression[?Yield, +Await] 1274 => await_expr($0, $1) 1275 1276 1277@returns Expression 1278AsyncArrowFunction[In, Yield, Await] : 1279 `async` [no LineTerminator here] AsyncArrowBindingIdentifier[?Yield] [no LineTerminator here] `=>` AsyncConciseBody[?In] 1280 => async_arrow_function_bare($0, $1, $3) 1281 CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await] [no LineTerminator here] `=>` AsyncConciseBody[?In] 1282 => async_arrow_function($0, $2) 1283 1284@returns ArrowExpressionBody 1285AsyncConciseBody[In] : 1286 [lookahead != `{`] AssignmentExpression[?In, ~Yield, +Await] 1287 => concise_body_expression($0) 1288 `{` AsyncFunctionBody `}` 1289 => concise_body_block($0, $1, $2) 1290 1291@returns BindingIdentifier 1292AsyncArrowBindingIdentifier[Yield] : 1293 BindingIdentifier[?Yield, +Await] 1294 => $0 1295 1296@returns Expression 1297CoverCallExpressionAndAsyncArrowHead[Yield, Await] : 1298 MemberExpression[?Yield, ?Await] Arguments[?Yield, ?Await] 1299 => call_expr($0, $1) 1300 1301 1302AsyncArrowHead : 1303 `async` [no LineTerminator here] ArrowFormalParameters[~Yield, +Await] 1304 1305 1306@returns Script 1307Script : 1308 ScriptBody? 1309 => script($0) 1310 1311@returns Script 1312ScriptBody : 1313 StatementList[~Yield, ~Await, ~Return] 1314 => script_body($0) 1315 1316@returns Vec<Statement> 1317Module : 1318 ModuleBody? 1319 => module($0) 1320 1321@returns Vec<Statement> 1322ModuleBody : 1323 ModuleItemList 1324 => $0 1325 1326@returns Vec<Statement> 1327ModuleItemList : 1328 ModuleItem 1329 => module_item_list_single($0) 1330 ModuleItemList ModuleItem 1331 => module_item_list_append($0, $1) 1332 1333@returns Statement 1334ModuleItem : 1335 ImportDeclaration 1336 => $0 1337 ExportDeclaration 1338 => $0 1339 StatementListItem[~Yield, ~Await, ~Return] 1340 => $0 1341 1342 1343@returns Statement 1344ImportDeclaration : 1345 `import` ImportClause FromClause `;` 1346 => import_declaration(Some($1), $2) 1347 `import` ModuleSpecifier `;` 1348 => import_declaration(None, $1) 1349 1350@returns Void 1351ImportClause : 1352 ImportedDefaultBinding 1353 => import_clause(Some($0), None, None) 1354 NameSpaceImport 1355 => import_clause(None, Some($0), None) 1356 NamedImports 1357 => import_clause(None, None, Some($0)) 1358 ImportedDefaultBinding `,` NameSpaceImport 1359 => import_clause(Some($0), Some($2), None) 1360 ImportedDefaultBinding `,` NamedImports 1361 => import_clause(Some($0), None, Some($2)) 1362 1363@returns BindingIdentifier 1364ImportedDefaultBinding : 1365 ImportedBinding 1366 => $0 1367 1368@returns Void 1369NameSpaceImport : 1370 `*` `as` ImportedBinding 1371 => name_space_import($2) 1372 1373@returns Void 1374NamedImports : 1375 `{` `}` 1376 => imports_list_empty() 1377 `{` ImportsList `}` 1378 => $1 1379 `{` ImportsList `,` `}` 1380 => $1 1381 1382@returns Token 1383FromClause : 1384 `from` ModuleSpecifier 1385 => $1 1386 1387@returns Void 1388ImportsList : 1389 ImportSpecifier 1390 => imports_list_append(imports_list_empty(), $0) 1391 ImportsList `,` ImportSpecifier 1392 => imports_list_append($0, $2) 1393 1394@returns Void 1395ImportSpecifier : 1396 ImportedBinding 1397 => import_specifier($0) 1398 IdentifierName `as` ImportedBinding 1399 => import_specifier_renaming($0, $2) 1400 1401@returns Token 1402ModuleSpecifier : 1403 StringLiteral 1404 => module_specifier($0) 1405 1406@returns BindingIdentifier 1407ImportedBinding : 1408 BindingIdentifier[~Yield, ~Await] 1409 => $0 1410 1411 1412@returns Statement 1413ExportDeclaration : 1414 `export` `*` FromClause `;` 1415 => export_all_from($2) 1416 `export` ExportClause FromClause `;` 1417 => export_set_from($1, $2) 1418 `export` ExportClause `;` 1419 => export_set($1) 1420 `export` VariableStatement[~Yield, ~Await] 1421 => export_vars($1) 1422 `export` Declaration[~Yield, ~Await] 1423 => export_declaration($1) 1424 `export` `default` HoistableDeclaration[~Yield, ~Await, +Default] 1425 => export_default_hoistable($2) 1426 `export` `default` ClassDeclaration[~Yield, ~Await, +Default] 1427 => export_default_class($2) 1428 `export` `default` [lookahead <! {`function`, `async`, `class`}] AssignmentExpression[+In, ~Yield, ~Await] `;` 1429 => export_default_value($2) 1430 1431@returns Void 1432ExportClause : 1433 `{` `}` 1434 => exports_list_empty() 1435 `{` ExportsList `}` 1436 => $1 1437 `{` ExportsList `,` `}` 1438 => $1 1439 1440@returns Void 1441ExportsList : 1442 ExportSpecifier 1443 => exports_list_append(exports_list_empty(), $0) 1444 ExportsList `,` ExportSpecifier 1445 => exports_list_append($0, $2) 1446 1447@returns Void 1448ExportSpecifier : 1449 IdentifierName 1450 => export_specifier($0) 1451 IdentifierName `as` IdentifierName 1452 => export_specifier_renaming($0, $2) 1453 1454