A-LPG / LPG2

The LALR parser generator (LPG) is a tool for developing scanners and parsers. Supports multi-language . Input is specified by BNF rules. LPG supports backtracking (to resolve ambiguity), automatic AST generation and grammar inheritance.
Eclipse Public License 2.0
5 stars 4 forks source link

Amount of conflicts differ from bison? #6

Closed modulovalue closed 9 months ago

modulovalue commented 10 months ago

Hello @kuafuwang,

I have a quick question and I hope you don't mind if I ask here.

I've noticed that LPG2 reports fewer conflicts with LA=1 than, for example, bison set to LALR(1).

I'm wondering, do you know if there are other techniques that LPG2 uses to remove conflicts (by default), and is there maybe a way to turn them all off?

I'm trying to get LPG2 to report the same amount of conflicts that bison does for LALR(1), but that's never the case. Do you know what could be going on?

Here's, for example, what bison reports for a grammar:

Screenshot 2023-12-11 at 01 51 37

And here's what LPG2 reports:

Screenshot 2023-12-11 at 01 51 29 Screenshot 2023-12-11 at 01 51 09

Notice how LPG2 reports fewer than 100 conflicts, but bison reports almost 500 conflicts.

kuafuwang commented 9 months ago
image

you can try to set -soft_keywords .

modulovalue commented 9 months ago

Interesting:

./lpg2 -soft_keywords output.g
... 80~ conflicts in la=1 mode ...

./lpg2 output.g
... 30~ conflicts in la=1 mode ...

bison output.y
... 460 conflicts in lalr mode ...

@kuafuwang are there perhaps any other flags that you think could help here?

kuafuwang commented 9 months ago

I can not find any other flags . lpg will attempts to resolve conflicts by doing more look-ahead. If the conflict resolution is s successful, then a new state is created and returned

image
kuafuwang commented 9 months ago

I think It's not lalr 1 when there are conflict. it resolve conflicts by doing more look-ahead.

modulovalue commented 9 months ago

Weird:

with LPG:

Number of Shift-Reduce conflicts: 62
Number of Reduce-Reduce conflicts: 25
> ./lpg2 -soft_keywords output.g

Number of Shift-Reduce conflicts: 62
Number of Reduce-Reduce conflicts: 25
> ./lpg2 la=1 output.g

Number of Shift-Reduce conflicts: 28
Number of Reduce-Reduce conflicts: 5
>./lpg2 la=12 output.g

with bison:

output.y: warning: 288 shift/reduce conflicts [-Wconflicts-sr]
output.y: warning: 181 reduce/reduce conflicts [-Wconflicts-rr]
...
> bison output.y
lpg grammar ``` %options la=1 %Rules parsed_root ::= dart_language ; opt_opt_scripttag_1 ::= scripttag | ; opt___4 ::= misc_metadata | ; andinner___3 ::= opt___4 single_top_level_definition ; star_simple_leftrec_body_elements_2 ::= star_simple_leftrec_body_elements_2 andinner___3 | ; dart_language ::= opt_opt_scripttag_1 dart_header star_simple_leftrec_body_elements_2 ; opt___7 ::= misc_metadata | ; andinner___6 ::= opt___7 library_name ; opt_opt_library_name_5 ::= andinner___6 | ; opt___10 ::= misc_metadata | ; andinner___12 ::= library_import ; orinner___11 ::= andinner___12 | andinner___13 ; andinner___13 ::= library_export ; andinner___9 ::= opt___10 orinner___11 ; star_simple_leftrec_ports_8 ::= star_simple_leftrec_ports_8 andinner___9 | ; opt___16 ::= misc_metadata | ; andinner___15 ::= opt___16 part_directive ; star_simple_leftrec_parts_14 ::= star_simple_leftrec_parts_14 andinner___15 | ; dart_header ::= opt_opt_library_name_5 star_simple_leftrec_ports_8 star_simple_leftrec_parts_14 | misc_metadata part_of_library | part_of_library ; part_directive ::= kpart str_completestrings ssemicolon ; part_of_library ::= kpart kof str_completestrings ssemicolon | kpart kof id_list_dotted ssemicolon ; library_name ::= klibrary ssemicolon | klibrary id_list_dotted ssemicolon ; star_simple_leftrec_importconfiguri_17 ::= star_simple_leftrec_importconfiguri_17 configuration_uri | ; opt_alias_clause_20 ::= kdeferred | ; andinner___19 ::= opt_alias_clause_20 kas id_type_identifier ; opt_import_alias_clause_18 ::= andinner___19 | ; library_import ::= kimport str_completestrings star_simple_leftrec_importconfiguri_17 opt_import_alias_clause_18 combinators ssemicolon ; star_simple_leftrec_exportconfiguri_21 ::= star_simple_leftrec_exportconfiguri_21 configuration_uri | ; library_export ::= kexport str_completestrings star_simple_leftrec_exportconfiguri_21 combinators ssemicolon ; opt_conf_uri_test_22 ::= uri_test | ; configuration_uri ::= kif slpar id_list_dotted opt_conf_uri_test_22 srpar str_completestrings ; uri_test ::= seqeq str_completestrings ; andinner___25 ::= kshow id_list_noexpr ; orinner___24 ::= andinner___25 | andinner___26 ; andinner___26 ::= khide id_list_noexpr ; star_simple_leftrec_combinators_23 ::= star_simple_leftrec_combinators_23 orinner___24 | ; combinators ::= star_simple_leftrec_combinators_23 ; id_identifier_or_new ::= id_identifier | knew ; id_identifier ::= id_type_identifier | kabstract | kas | kcovariant | kdynamic | kdeferred | kexport | kextension | kexternal | kfactory | kfunction | kget | kimplements | kimport | kinterface | klate | klibrary | koperator | kmixin | kpart | krequired | kset | kstatic | ktypedef ; id_type_identifier ::= identifier | kasync | khide | kof | kon | kshow | ksync | ksealed | kbase | kwhen | ktype ; id_user_definable_operator ::= id_operator_complement | id_operator_multiplicative | id_operator_additive | id_operator_shift | id_operator_relational | id_operator_eqeq | sand | scaret | spipe | slbra srbra seq | slbra srbra ; id_operator_equality ::= id_operator_eqeq | id_operator_neq ; id_operator_multiplicative ::= sstar | sslash | spercent | stildeslash ; id_operator_additive ::= splus | sminus ; id_operator_shift ::= ambop_lessless | ambop_greatergreatergreater | ambop_greatergreater ; id_operator_relational ::= ambop_greatereq | sg | ambop_lesseq | sl ; id_operator_eqeq ::= seqeq ; id_operator_neq ::= sbangeq ; id_operator_complement ::= stilde ; star_simple_leftrec_fn_components_27 ::= star_simple_leftrec_fn_components_27 ktype_function_component | ; type_boundable_type ::= ktype_function_type_return_type misc_optional_question star_simple_leftrec_fn_components_27 | plus_fn_components_28 ; plus_fn_components_28 ::= plus_fn_components_28 ktype_function_component | ktype_function_component ; ktype_function_type_return_type ::= type_inheritable_type | ktype_record_type | type_dynamic_type | misc_importqualifier kvoid | kvoid ; type_dynamic_type ::= misc_importqualifier kdynamic | kdynamic ; type_inheritable_type ::= misc_importqualifier id_type_identifier type_type_args | misc_importqualifier id_type_identifier | id_type_identifier type_type_args | id_type_identifier | misc_importqualifier kfunction | kfunction ; plusi_inheritable_types_29 ::= plusi_inheritable_types_29 scomma type_inheritable_type | type_inheritable_type ; type_inheritable_types ::= plusi_inheritable_types_29 ; ktype_function_component ::= kfunction type_type_params ktype_function_parameters misc_optional_question | kfunction ktype_function_parameters misc_optional_question ; ktype_function_parameters ::= slpar srpar | slpar ktype_function_normal_parameters srpar | slpar ktype_function_optional_parameters srpar ; ktype_function_normal_parameters ::= ktype_function_normal_parameter scomma ktype_function_normal_parameters | ktype_function_normal_parameter scomma ktype_function_optional_parameters | ktype_function_normal_parameter scomma | ktype_function_normal_parameter ; plusi_tfnops_30 ::= plusi_tfnops_30 scomma ktype_function_normal_parameter | ktype_function_normal_parameter ; ktype_function_optional_parameters ::= slbra plusi_tfnops_30 misc_optional_comma srbra | lcur plusi_tfnaps_31 misc_optional_comma rcur ; plusi_tfnaps_31 ::= plusi_tfnaps_31 scomma ktype_function_named_parameter | ktype_function_named_parameter ; ktype_function_normal_parameter ::= misc_metadata type_boundable_type misc_opt_id | type_boundable_type misc_opt_id ; ktype_function_named_parameter ::= misc_metadata krequired type_boundable_type misc_opt_id | misc_metadata type_boundable_type misc_opt_id | krequired type_boundable_type misc_opt_id | type_boundable_type misc_opt_id ; ktype_record_type ::= slpar srpar | slpar ktype_record_type_unnamed_fields srpar | slpar ktype_record_type_named_fields srpar ; ktype_record_type_unnamed_fields ::= ktype_record_type_unnamed_field scomma ktype_record_type_unnamed_fields | ktype_record_type_unnamed_field scomma ktype_record_type_named_fields | ktype_record_type_unnamed_field scomma | ktype_record_type_unnamed_field ; ktype_record_type_unnamed_field ::= misc_metadata type_boundable_type misc_opt_id | type_boundable_type misc_opt_id ; ktype_record_type_named_field ::= misc_metadata type_boundable_type id_identifier | type_boundable_type id_identifier ; plusi_trtnfs_32 ::= plusi_trtnfs_32 scomma ktype_record_type_named_field | ktype_record_type_named_field ; ktype_record_type_named_fields ::= lcur plusi_trtnfs_32 misc_optional_comma rcur ; plusi_type_params_33 ::= plusi_type_params_33 scomma type_type_param | type_type_param ; type_type_params ::= sl plusi_type_params_33 sg ; type_type_param ::= misc_metadata id_type_identifier kextends type_boundable_type | misc_metadata id_type_identifier | id_type_identifier kextends type_boundable_type | id_type_identifier ; plusi_boundable_types_34 ::= plusi_boundable_types_34 scomma type_boundable_type | type_boundable_type ; type_type_args ::= sl plusi_boundable_types_34 sg ; opt_optid_35 ::= id_identifier | ; misc_opt_id ::= opt_optid_35 ; plus_strings_36 ::= plus_strings_36 str_completestring | str_completestring ; str_completestrings ::= plus_strings_36 ; str_completestring ::= str_slsq | str_sldq | str_mlsq | str_mldq | str_rslsq | str_rsldq | str_rmlsq | str_rmldq ; opt_blibla41_37 ::= rslsqcontent | ; str_rslsq ::= startrslsq opt_blibla41_37 rslsqend ; opt_blibla42_38 ::= rsldqcontent | ; str_rsldq ::= startrsldq opt_blibla42_38 rsldqend ; opt_blibla43_39 ::= rmlsqcontent | ; str_rmlsq ::= startrmlsq opt_blibla43_39 rmlsqend ; opt_blibla44_40 ::= rmldqcontent | ; str_rmldq ::= startrmldq opt_blibla44_40 rmldqend ; star_simple_leftrec_strslsq_41 ::= star_simple_leftrec_strslsq_41 str_slsqstrcontent | ; str_slsq ::= startslsq star_simple_leftrec_strslsq_41 slsqpop ; star_simple_leftrec_strsdsq_42 ::= star_simple_leftrec_strsdsq_42 str_sldqstrcontent | ; str_sldq ::= startsldq star_simple_leftrec_strsdsq_42 sldqpop ; star_simple_leftrec_strmlsq_43 ::= star_simple_leftrec_strmlsq_43 str_mlsq_content | ; str_mlsq ::= startmlsq star_simple_leftrec_strmlsq_43 mlsqpop ; opt_blibla45_44 ::= mlsqq | ; str_mlsq_content ::= opt_blibla45_44 str_mlsqstrcontent ; star_simple_leftrec_starbla2_45 ::= star_simple_leftrec_starbla2_45 str_mldq_content | ; str_mldq ::= startmldq star_simple_leftrec_starbla2_45 mldqpop ; opt_blibla46_46 ::= mldqq | ; str_mldq_content ::= opt_blibla46_46 str_mldqstrcontent ; str_slsqstrcontent ::= slsqcontent | str_commonstrcontent ; str_sldqstrcontent ::= sldqcontent | str_commonstrcontent ; str_mlsqstrcontent ::= mlsqcontent | str_commonstrcontent ; str_mldqstrcontent ::= mldqcontent | str_commonstrcontent ; str_commonstrcontent ::= escaped_lf | escaped_cr | escaped_b | escaped_ht | escaped_vt | escaped_byte | escaped_unicodesimple | escaped_unicoderaw | escaped_unescaped | simpleinterpolation | advancedinterpolation expr_expr rcur ; star_simple_leftrec_osc_47 ::= star_simple_leftrec_osc_47 statement | ; statements ::= star_simple_leftrec_osc_47 ; statement ::= labels unlabelled_statement ; unlabelled_statement ::= if_head statement kelse statement | if_head statement | kawait misc_for_head statement | misc_for_head statement | kwhile slpar expr_expr srpar statement | kdo statement kwhile slpar expr_expr srpar ssemicolon | block | ktry block plus_catchons_48 opt___49 | ktry block kfinally block | kswitch slpar expr_expr srpar lcur switch_entries rcur | krethrow ssemicolon | kbreak id_identifier ssemicolon | kbreak ssemicolon | kcontinue id_identifier ssemicolon | kcontinue ssemicolon | kreturn expr_expr ssemicolon | kreturn ssemicolon | misc_assertion ssemicolon | expr_expr ssemicolon | ssemicolon | kyield expr_expr ssemicolon | kyield sstar expr_expr ssemicolon | misc_metadata klate kfinal type_boundable_type id_list_optexpr ssemicolon | misc_metadata klate kfinal id_list_optexpr ssemicolon | misc_metadata klate kvar id_list_optexpr ssemicolon | misc_metadata klate type_boundable_type id_list_optexpr ssemicolon | misc_metadata kfinal type_boundable_type id_list_optexpr ssemicolon | misc_metadata kfinal id_list_optexpr ssemicolon | misc_metadata kvar id_list_optexpr ssemicolon | misc_metadata type_boundable_type id_list_optexpr ssemicolon | misc_metadata kconst type_boundable_type id_list_optexpr ssemicolon | misc_metadata kconst id_list_optexpr ssemicolon | misc_metadata pattern_variable_declaration ssemicolon | misc_metadata misc_function_signature misc_function_body | klate kfinal type_boundable_type id_list_optexpr ssemicolon | klate kfinal id_list_optexpr ssemicolon | klate kvar id_list_optexpr ssemicolon | klate type_boundable_type id_list_optexpr ssemicolon | kfinal type_boundable_type id_list_optexpr ssemicolon | kfinal id_list_optexpr ssemicolon | kvar id_list_optexpr ssemicolon | type_boundable_type id_list_optexpr ssemicolon | kconst type_boundable_type id_list_optexpr ssemicolon | kconst id_list_optexpr ssemicolon | pattern_variable_declaration ssemicolon | misc_function_signature misc_function_body ; plus_catchons_48 ::= plus_catchons_48 try_catchon | try_catchon ; andinner___50 ::= kfinally block ; opt___49 ::= andinner___50 | ; if_head ::= kif slpar expr_expr srpar | kif slpar expr_expr kcase guarded_pattern srpar ; star_simple_leftrec_labels_51 ::= star_simple_leftrec_labels_51 label | ; labels ::= star_simple_leftrec_labels_51 ; label ::= id_identifier scolon ; block ::= lcur statements rcur ; switch_entries ::= labels kcase guarded_pattern scolon statements switch_entries | labels kdefault scolon statements | ; try_catchon ::= kon type_boundable_type block | kcatch slpar id_identifier srpar block | kcatch slpar id_identifier scomma id_identifier srpar block | kon type_boundable_type kcatch slpar id_identifier srpar block | kon type_boundable_type kcatch slpar id_identifier scomma id_identifier srpar block ; single_top_level_definition ::= misc_class_modifier kclass id_type_identifier type_type_params misc_opt_clauseextends misc_opt_clausewith misc_opt_clauseimplements lcur declmembers rcur | misc_class_modifier kclass kfunction type_type_params misc_opt_clauseextends misc_opt_clausewith misc_opt_clauseimplements lcur declmembers rcur | misc_class_modifier kclass id_type_identifier misc_opt_clauseextends misc_opt_clausewith misc_opt_clauseimplements lcur declmembers rcur | misc_class_modifier kclass kfunction misc_opt_clauseextends misc_opt_clausewith misc_opt_clauseimplements lcur declmembers rcur | misc_class_modifier kclass id_type_identifier type_type_params seq type_inheritable_type clause_with misc_opt_clauseimplements ssemicolon | misc_class_modifier kclass id_type_identifier seq type_inheritable_type clause_with misc_opt_clauseimplements ssemicolon | misc_mixin_modifier kmixin id_type_identifier type_type_params misc_opt_clauseonmany misc_opt_clauseimplements lcur declmembers rcur | misc_mixin_modifier kmixin id_type_identifier misc_opt_clauseonmany misc_opt_clauseimplements lcur declmembers rcur | kextension ktype opt___52 id_type_identifier opt___53 opt___54 slpar opt___55 type_boundable_type id_identifier srpar misc_opt_clauseimplements lcur declmembers rcur | kextension id_type_identifier type_type_params clause_onone lcur declmembers rcur | kextension type_type_params clause_onone lcur declmembers rcur | kextension id_type_identifier clause_onone lcur declmembers rcur | kextension clause_onone lcur declmembers rcur | kenum id_type_identifier type_type_params misc_opt_clausewith misc_opt_clauseimplements lcur enum_entries ssemicolon declmembers rcur | kenum id_type_identifier type_type_params misc_opt_clausewith misc_opt_clauseimplements lcur enum_entries rcur | kenum id_type_identifier misc_opt_clausewith misc_opt_clauseimplements lcur enum_entries ssemicolon declmembers rcur | kenum id_type_identifier misc_opt_clausewith misc_opt_clauseimplements lcur enum_entries rcur | ktypedef orinner___56 ssemicolon | klate kfinal type_boundable_type id_list_optexpr ssemicolon | klate kfinal id_list_optexpr ssemicolon | klate kvar id_list_optexpr ssemicolon | klate type_boundable_type id_list_optexpr ssemicolon | kfinal type_boundable_type id_list_optexpr ssemicolon | kfinal id_list_optexpr ssemicolon | kvar id_list_optexpr ssemicolon | type_boundable_type id_list_optexpr ssemicolon | kconst type_boundable_type id_list_optexpr ssemicolon | kconst id_list_optexpr ssemicolon | kexternal kfinal type_boundable_type id_list_noexpr ssemicolon | kexternal kfinal id_list_noexpr ssemicolon | kexternal kvar id_list_noexpr ssemicolon | kexternal type_boundable_type id_list_noexpr ssemicolon | misc_getter_signature misc_function_body | misc_setter_signature misc_function_body | misc_function_signature misc_function_body | kexternal misc_getter_signature ssemicolon | kexternal misc_setter_signature ssemicolon | kexternal misc_function_signature ssemicolon ; opt___52 ::= kconst | ; opt___53 ::= type_type_params | ; opt___54 ::= misc_constructor_qualifier | ; opt___55 ::= misc_metadata | ; andinner___57 ::= id_type_identifier type_type_params seq type_boundable_type ; orinner___56 ::= andinner___57 | andinner___58 | andinner___59 ; andinner___58 ::= id_type_identifier seq type_boundable_type ; andinner___59 ::= misc_function_signature ; misc_class_modifier ::= ksealed | kabstract | kabstract kbase | kbase | kabstract kinterface | kinterface | kabstract kfinal | kfinal | kabstract kbase kmixin | kbase kmixin | kabstract kmixin | kmixin | ; misc_mixin_modifier ::= ksealed | kbase | kinterface | kfinal | ; clause_with ::= kwith type_inheritable_types ; clause_onmany ::= kon type_inheritable_types ; clause_implements ::= kimplements type_inheritable_types ; clause_extends ::= kextends type_inheritable_type ; clause_onone ::= kon type_boundable_type ; member ::= id_type_identifier misc_constructor_qualifier misc_formal_parameter_list misc_function_body | id_type_identifier misc_constructor_qualifier misc_formal_parameter_list scolon member_constructor_initializer_list misc_function_body | id_type_identifier misc_formal_parameter_list scolon member_constructor_initializer_list misc_function_body | kconst kfactory id_type_identifier misc_constructor_qualifier misc_formal_parameter_list misc_function_body | kconst kfactory id_type_identifier misc_formal_parameter_list misc_function_body | kfactory id_type_identifier misc_constructor_qualifier misc_formal_parameter_list misc_function_body | kfactory id_type_identifier misc_formal_parameter_list misc_function_body | kconst id_type_identifier misc_constructor_qualifier misc_formal_parameter_list misc_function_body | kconst id_type_identifier misc_formal_parameter_list misc_function_body | kexternal kconst kfactory id_type_identifier misc_constructor_qualifier misc_formal_parameter_list ssemicolon | kexternal kconst kfactory id_type_identifier misc_formal_parameter_list ssemicolon | kexternal kfactory id_type_identifier misc_constructor_qualifier misc_formal_parameter_list ssemicolon | kexternal kfactory id_type_identifier misc_formal_parameter_list ssemicolon | kexternal kconst id_type_identifier misc_constructor_qualifier misc_formal_parameter_list ssemicolon | kexternal kconst id_type_identifier misc_formal_parameter_list ssemicolon | kexternal id_type_identifier misc_constructor_qualifier misc_formal_parameter_list ssemicolon | kconst kfactory id_type_identifier misc_constructor_qualifier misc_formal_parameter_list seq misc_constructor_desig ssemicolon | kconst kfactory id_type_identifier misc_formal_parameter_list seq misc_constructor_desig ssemicolon | kfactory id_type_identifier misc_constructor_qualifier misc_formal_parameter_list seq misc_constructor_desig ssemicolon | kfactory id_type_identifier misc_formal_parameter_list seq misc_constructor_desig ssemicolon | id_type_identifier misc_constructor_qualifier misc_formal_parameter_list ssemicolon | kconst id_type_identifier misc_constructor_qualifier misc_formal_parameter_list ssemicolon | kconst id_type_identifier misc_formal_parameter_list ssemicolon | id_type_identifier misc_constructor_qualifier misc_formal_parameter_list scolon member_constructor_redirector ssemicolon | id_type_identifier misc_formal_parameter_list scolon member_constructor_redirector ssemicolon | kconst id_type_identifier misc_constructor_qualifier misc_formal_parameter_list scolon member_constructor_redirector ssemicolon | kconst id_type_identifier misc_formal_parameter_list scolon member_constructor_redirector ssemicolon | kexternal kstatic misc_procedure_signature ssemicolon | kexternal misc_procedure_signature ssemicolon | kstatic misc_procedure_signature misc_function_body | misc_procedure_signature ssemicolon | misc_procedure_signature misc_function_body | kexternal misc_operator_signature ssemicolon | misc_operator_signature misc_function_body | misc_operator_signature ssemicolon | kexternal kstatic kfinal type_boundable_type id_list_noexpr ssemicolon | kexternal kstatic kfinal id_list_noexpr ssemicolon | kexternal kstatic kvar id_list_noexpr ssemicolon | kexternal kstatic type_boundable_type id_list_noexpr ssemicolon | kexternal kfinal type_boundable_type id_list_noexpr ssemicolon | kexternal kfinal id_list_noexpr ssemicolon | kexternal kvar id_list_noexpr ssemicolon | kexternal type_boundable_type id_list_noexpr ssemicolon | kexternal kcovariant kvar id_list_noexpr ssemicolon | kexternal kcovariant type_boundable_type id_list_noexpr ssemicolon | kabstract kfinal type_boundable_type id_list_noexpr ssemicolon | kabstract kfinal id_list_noexpr ssemicolon | kabstract kvar id_list_noexpr ssemicolon | kabstract type_boundable_type id_list_noexpr ssemicolon | kabstract kcovariant kvar id_list_noexpr ssemicolon | kabstract kcovariant type_boundable_type id_list_noexpr ssemicolon | kstatic kconst type_boundable_type id_list_reqexpr ssemicolon | kstatic kconst id_list_reqexpr ssemicolon | kstatic klate kfinal type_boundable_type id_list_optexpr ssemicolon | kstatic klate kfinal id_list_optexpr ssemicolon | kstatic kfinal type_boundable_type id_list_reqexpr ssemicolon | kstatic kfinal id_list_reqexpr ssemicolon | kstatic klate kvar id_list_optexpr ssemicolon | kstatic klate type_boundable_type id_list_optexpr ssemicolon | kstatic kvar id_list_optexpr ssemicolon | kstatic type_boundable_type id_list_optexpr ssemicolon | kcovariant klate kfinal type_boundable_type id_list_noexpr ssemicolon | kcovariant klate kfinal id_list_noexpr ssemicolon | kcovariant klate kvar id_list_optexpr ssemicolon | kcovariant klate type_boundable_type id_list_optexpr ssemicolon | kcovariant kvar id_list_optexpr ssemicolon | kcovariant type_boundable_type id_list_optexpr ssemicolon | klate kfinal type_boundable_type id_list_optexpr ssemicolon | klate kfinal id_list_optexpr ssemicolon | klate kvar id_list_optexpr ssemicolon | klate type_boundable_type id_list_optexpr ssemicolon | kfinal type_boundable_type id_list_optexpr ssemicolon | kfinal id_list_optexpr ssemicolon | kvar id_list_optexpr ssemicolon | type_boundable_type id_list_optexpr ssemicolon ; opt___62 ::= misc_metadata | ; andinner___61 ::= opt___62 enum_entry ; plusi_enum_entries_60 ::= plusi_enum_entries_60 scomma andinner___61 | andinner___61 ; enum_entries ::= plusi_enum_entries_60 misc_optional_comma ; enum_entry ::= id_identifier | id_identifier type_type_args misc_opt_constructor_qualifier | id_identifier misc_opt_constructor_qualifier ; opt___65 ::= misc_metadata | ; andinner___64 ::= opt___65 member ; star_simple_leftrec_decl_members_63 ::= star_simple_leftrec_decl_members_63 andinner___64 | ; declmembers ::= star_simple_leftrec_decl_members_63 ; member_constructor_redirector ::= kthis misc_opt_constructor_qualifier | member_constructor_initializer_list ; plusi_mcies_66 ::= plusi_mcies_66 scomma member_constructor_initializer_entry | member_constructor_initializer_entry ; member_constructor_initializer_list ::= plusi_mcies_66 ; member_constructor_initializer_entry ::= ksuper misc_opt_constructor_qualifier | kthis sdot id_identifier seq expr_expr_initializer_constructor | id_identifier seq expr_expr_initializer_constructor | misc_assertion ; misc_assertion ::= kassert slpar expr_expr misc_optional_comma srpar | kassert slpar expr_expr scomma expr_expr misc_optional_comma srpar ; misc_assertion_message ::= scomma expr_expr ; misc_metadata ::= misc_nonoptmetadata misc_metadata | misc_nonoptmetadata ; misc_nonoptmetadata ::= sat id_identifier | sat misc_qualified_name | sat misc_constructor_desig misc_arguments ; misc_qualified_name ::= misc_importqualifier id_type_identifier misc_constructor_qualifier | id_type_identifier misc_constructor_qualifier ; misc_constructor_desig ::= misc_importqualifier id_type_identifier type_type_args | id_type_identifier type_type_args | id_type_identifier | type_inheritable_type misc_constructor_qualifier ; misc_constructor_qualifier ::= sdot id_identifier_or_new ; misc_importqualifier ::= id_type_identifier sdot ; misc_arguments ::= slpar misc_arguments_component misc_optional_comma srpar | slpar srpar ; misc_arguments_component ::= misc_arguments_component scomma label expr_expr | misc_arguments_component scomma expr_expr | label expr_expr | expr_expr ; misc_for_loop_parts ::= misc_metadata id_identifier kin expr_expr | misc_metadata klate kfinal type_boundable_type id_identifier kin expr_expr | misc_metadata klate kfinal id_identifier kin expr_expr | misc_metadata klate kvar id_identifier kin expr_expr | misc_metadata klate type_boundable_type id_identifier kin expr_expr | misc_metadata kfinal type_boundable_type id_identifier kin expr_expr | misc_metadata kfinal id_identifier kin expr_expr | misc_metadata kvar id_identifier kin expr_expr | misc_metadata type_boundable_type id_identifier kin expr_expr | misc_metadata kconst type_boundable_type id_identifier kin expr_expr | misc_metadata kconst id_identifier kin expr_expr | misc_metadata kfinal outer_pattern kin expr_expr | misc_metadata kvar outer_pattern kin expr_expr | id_identifier kin expr_expr | klate kfinal type_boundable_type id_identifier kin expr_expr | klate kfinal id_identifier kin expr_expr | klate kvar id_identifier kin expr_expr | klate type_boundable_type id_identifier kin expr_expr | kfinal type_boundable_type id_identifier kin expr_expr | kfinal id_identifier kin expr_expr | kvar id_identifier kin expr_expr | type_boundable_type id_identifier kin expr_expr | kconst type_boundable_type id_identifier kin expr_expr | kconst id_identifier kin expr_expr | kfinal outer_pattern kin expr_expr | kvar outer_pattern kin expr_expr | opt_forold_lhs_67 ssemicolon opt_expr_68 ssemicolon opt_exprcommalist_69 ; opt_forold_lhs_67 ::= misc_forold_lhs | ; opt_expr_68 ::= expr_expr | ; opt_exprcommalist_69 ::= expr_exprcommalist | ; misc_forold_lhs ::= misc_metadata klate kfinal type_boundable_type id_list_optexpr | misc_metadata klate kfinal id_list_optexpr | misc_metadata klate kvar id_list_optexpr | misc_metadata klate type_boundable_type id_list_optexpr | misc_metadata kfinal type_boundable_type id_list_optexpr | misc_metadata kfinal id_list_optexpr | misc_metadata kvar id_list_optexpr | misc_metadata type_boundable_type id_list_optexpr | misc_metadata kconst type_boundable_type id_list_optexpr | misc_metadata kconst id_list_optexpr | misc_metadata pattern_variable_declaration | klate kfinal type_boundable_type id_list_optexpr | klate kfinal id_list_optexpr | klate kvar id_list_optexpr | klate type_boundable_type id_list_optexpr | kfinal type_boundable_type id_list_optexpr | kfinal id_list_optexpr | kvar id_list_optexpr | type_boundable_type id_list_optexpr | kconst type_boundable_type id_list_optexpr | kconst id_list_optexpr | pattern_variable_declaration | expr_expr ; plusi_elements_70 ::= plusi_elements_70 scomma misc_element | misc_element ; misc_elements ::= plusi_elements_70 misc_optional_comma | ; misc_element ::= if_head misc_element kelse misc_element | if_head misc_element | misc_for_head misc_element | kawait misc_for_head misc_element | expr_expr | expr_expr scolon expr_expr | sdotdotdot expr_expr | sdotdotdotq expr_expr ; misc_for_head ::= kfor slpar misc_for_loop_parts srpar ; misc_procedure_signature ::= misc_function_signature | misc_setter_signature | misc_getter_signature ; misc_function_signature ::= type_boundable_type id_identifier misc_formal_parameter_part | id_identifier misc_formal_parameter_part ; misc_setter_signature ::= type_boundable_type kset id_identifier misc_formal_parameter_list | kset id_identifier misc_formal_parameter_list ; misc_getter_signature ::= type_boundable_type kget id_identifier | kget id_identifier ; misc_operator_signature ::= type_boundable_type koperator id_user_definable_operator misc_formal_parameter_list | koperator id_user_definable_operator misc_formal_parameter_list ; misc_function_block_body ::= block | kasync sstar block | kasync block | ksync sstar block ; misc_function_expression_body ::= ambop_fatarrow expr_expr | kasync ambop_fatarrow expr_expr ; misc_function_expression_body_withoutcascade ::= ambop_fatarrow expr_expr_withoutcascade | kasync ambop_fatarrow expr_expr_withoutcascade ; misc_function_body ::= misc_function_expression_body ssemicolon | misc_function_block_body | id_identifier str_completestring ssemicolon ; misc_formal_parameter_list ::= slpar srpar | slpar misc_normal_formal_parameters srpar | slpar misc_optional_or_named_formal_parameters srpar ; misc_normal_formal_parameters ::= misc_normal_formal_parameter scomma misc_normal_formal_parameters | misc_normal_formal_parameter scomma misc_optional_or_named_formal_parameters | misc_normal_formal_parameter scomma | misc_normal_formal_parameter ; misc_optional_or_named_formal_parameters ::= misc_optional_positional_formal_parameters | misc_named_formal_parameters ; plusi_mdfps_71 ::= plusi_mdfps_71 scomma misc_default_formal_parameter | misc_default_formal_parameter ; misc_optional_positional_formal_parameters ::= slbra plusi_mdfps_71 misc_optional_comma srbra ; plusi_mdnps_72 ::= plusi_mdnps_72 scomma misc_default_named_parameter | misc_default_named_parameter ; misc_named_formal_parameters ::= lcur plusi_mdnps_72 misc_optional_comma rcur ; misc_default_named_parameter ::= misc_metadata krequired misc_normal_formal_parameter_nometadata | misc_metadata misc_normal_formal_parameter_nometadata | misc_metadata krequired misc_normal_formal_parameter_nometadata seq expr_expr | misc_metadata misc_normal_formal_parameter_nometadata seq expr_expr | misc_metadata krequired misc_normal_formal_parameter_nometadata scolon expr_expr | misc_metadata misc_normal_formal_parameter_nometadata scolon expr_expr | krequired misc_normal_formal_parameter_nometadata | misc_normal_formal_parameter_nometadata | krequired misc_normal_formal_parameter_nometadata seq expr_expr | misc_normal_formal_parameter_nometadata seq expr_expr | krequired misc_normal_formal_parameter_nometadata scolon expr_expr | misc_normal_formal_parameter_nometadata scolon expr_expr ; misc_default_formal_parameter ::= misc_normal_formal_parameter | misc_normal_formal_parameter seq expr_expr | misc_normal_formal_parameter scolon expr_expr ; misc_normal_formal_parameter ::= misc_metadata misc_normal_formal_parameter_nometadata | misc_normal_formal_parameter_nometadata ; misc_normal_formal_parameter_nometadata ::= kcovariant misc_function_signature misc_optional_question | misc_function_signature misc_optional_question | klate kfinal type_boundable_type kthis sdot id_identifier | klate kfinal kthis sdot id_identifier | klate kvar kthis sdot id_identifier | klate type_boundable_type kthis sdot id_identifier | kfinal type_boundable_type kthis sdot id_identifier | kfinal kthis sdot id_identifier | kvar kthis sdot id_identifier | type_boundable_type kthis sdot id_identifier | kconst type_boundable_type kthis sdot id_identifier | kconst kthis sdot id_identifier | kthis sdot id_identifier | type_boundable_type ksuper sdot id_identifier | ksuper sdot id_identifier | klate kfinal type_boundable_type kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | klate kfinal kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | klate kvar kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | klate type_boundable_type kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | kfinal type_boundable_type kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | kfinal kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | kvar kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | type_boundable_type kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | kconst type_boundable_type kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | kconst kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | type_boundable_type ksuper sdot id_identifier misc_formal_parameter_part misc_optional_question | ksuper sdot id_identifier misc_formal_parameter_part misc_optional_question | kcovariant klate kfinal type_boundable_type id_identifier | kcovariant klate kfinal id_identifier | kcovariant klate kvar id_identifier | kcovariant klate type_boundable_type id_identifier | kcovariant kfinal type_boundable_type id_identifier | kcovariant kfinal id_identifier | kcovariant kvar id_identifier | kcovariant type_boundable_type id_identifier | kcovariant kconst type_boundable_type id_identifier | kcovariant kconst id_identifier | klate kfinal type_boundable_type id_identifier | klate kfinal id_identifier | klate kvar id_identifier | klate type_boundable_type id_identifier | kfinal type_boundable_type id_identifier | kfinal id_identifier | kvar id_identifier | type_boundable_type id_identifier | kconst type_boundable_type id_identifier | kconst id_identifier | kcovariant id_identifier | id_identifier ; misc_formal_parameter_part ::= type_type_params misc_formal_parameter_list | misc_formal_parameter_list ; opt_blibla9_73 ::= clause_onmany | ; misc_opt_clauseonmany ::= opt_blibla9_73 ; opt_blibla10_74 ::= clause_with | ; misc_opt_clausewith ::= opt_blibla10_74 ; opt_blibla11_75 ::= clause_extends | ; misc_opt_clauseextends ::= opt_blibla11_75 ; opt_blibla12_76 ::= clause_implements | ; misc_opt_clauseimplements ::= opt_blibla12_76 ; opt_ocq_77 ::= misc_constructor_qualifier | ; misc_opt_constructor_qualifier ::= opt_ocq_77 misc_arguments ; opt_optional_comma_78 ::= scomma | ; misc_optional_comma ::= opt_optional_comma_78 ; opt_opt_q_79 ::= squestion | ; misc_optional_question ::= opt_opt_q_79 ; ambop_fatarrow ::= seqsg ; ambop_lesseq ::= sleq ; ambop_lesslesseq ::= slleq ; ambop_lessless ::= sll ; ambop_greatereq ::= sg seq ; ambop_greatergreatereq ::= sg sg seq ; ambop_greatergreatergreatereq ::= sg sg sg seq ; ambop_greatergreater ::= sg sg ; ambop_greatergreatergreater ::= sg sg sg ; expr_expr ::= misc_formal_parameter_part misc_function_expression_body | kthrow expr_expr | id_identifier expr_assignment_operator expr_expr | expr_assignable_expression expr_assignment_operator expr_expr | expr_expr_conditional opt_cascadepart_80 | pattern_assignment ; opt_cascadepart_80 ::= expr_expr_cascade | ; expr_expr_withoutcascade ::= misc_formal_parameter_part misc_function_expression_body_withoutcascade | kthrow expr_expr_withoutcascade | id_identifier expr_assignment_operator expr_expr_withoutcascade | expr_assignable_expression expr_assignment_operator expr_expr_withoutcascade | expr_expr_conditional ; opt_cascadepart_81 ::= expr_expr_cascade | ; expr_expr_initializer_constructor ::= expr_expr_conditional opt_cascadepart_81 | kthrow expr_expr_withoutcascade ; plusi_equality_expr_85 ::= plusi_equality_expr_85 id_operator_equality expr_relational_expr | expr_relational_expr ; plusi_logical_and_expr_84 ::= plusi_logical_and_expr_84 sandand plusi_equality_expr_85 | plusi_equality_expr_85 ; plusi_logical_or_exprs_83 ::= plusi_logical_or_exprs_83 spipepipe plusi_logical_and_expr_84 | plusi_logical_and_expr_84 ; plusi_expr_if_null_82 ::= plusi_expr_if_null_82 sqq plusi_logical_or_exprs_83 | plusi_logical_or_exprs_83 ; andinner___87 ::= squestion expr_expr_withoutcascade scolon expr_expr_withoutcascade ; opt_conditionalpart_86 ::= andinner___87 | ; expr_expr_conditional ::= plusi_expr_if_null_82 opt_conditionalpart_86 ; andinner___89 ::= ; orinner___88 ::= andinner___89 | andinner___90 | andinner___91 | andinner___92 | andinner___93 ; andinner___90 ::= id_operator_relational expr_bitwise_or_expr ; andinner___91 ::= kis type_boundable_type ; andinner___92 ::= kis sbang type_boundable_type ; andinner___93 ::= kas type_boundable_type ; expr_relational_expr ::= expr_bitwise_or_expr orinner___88 ; plusi_multiplicative_expr_99 ::= plusi_multiplicative_expr_99 id_operator_multiplicative expr_unary_expr | expr_unary_expr ; plusi_additive_expr_98 ::= plusi_additive_expr_98 id_operator_additive plusi_multiplicative_expr_99 | plusi_multiplicative_expr_99 ; plusi_shift_expr_97 ::= plusi_shift_expr_97 id_operator_shift plusi_additive_expr_98 | plusi_additive_expr_98 ; plusi_bitwise_and_expr_96 ::= plusi_bitwise_and_expr_96 sand plusi_shift_expr_97 | plusi_shift_expr_97 ; plusi_bitwise_xor_expr_95 ::= plusi_bitwise_xor_expr_95 scaret plusi_bitwise_and_expr_96 | plusi_bitwise_and_expr_96 ; plusi_bitwise_or_expr_94 ::= plusi_bitwise_or_expr_94 spipe plusi_bitwise_xor_expr_95 | plusi_bitwise_xor_expr_95 ; expr_bitwise_or_expr ::= plusi_bitwise_or_expr_94 ; andinner___102 ::= sminus ; orinner___101 ::= andinner___102 | andinner___103 | andinner___104 | andinner___105 ; andinner___103 ::= sbang ; andinner___104 ::= stilde ; andinner___105 ::= kawait ; plus_unaryops_100 ::= plus_unaryops_100 orinner___101 | orinner___101 ; expr_unary_expr ::= plus_unaryops_100 expr_unary_expr_tail | expr_unary_expr_tail ; expr_unary_expr_tail ::= expr_super_access expr_selectors | expr_primary expr_selectors | expr_id_list_symbol_literal | expr_assignable_expression splusplus | expr_assignable_expression sminusminus | id_identifier splusplus | id_identifier sminusminus | splusplus expr_assignable_expression | sminusminus expr_assignable_expression | splusplus id_identifier | sminusminus id_identifier | ksuper ; expr_assignable_expression ::= expr_super_access | expr_super_access expr_selectors expr_assignable_selector | expr_primary expr_selectors expr_assignable_selector | expr_id_list_symbol_literal expr_conditional_assignable_selector ; plusi_cascadesections1_106 ::= plusi_cascadesections1_106 sdotdot expr_expr_cascadesection | expr_expr_cascadesection ; expr_expr_cascade ::= sdotdot plusi_cascadesections1_106 | squestiondotdot plusi_cascadesections2_107 ; plusi_cascadesections2_107 ::= plusi_cascadesections2_107 sdotdot expr_expr_cascadesection | expr_expr_cascadesection ; expr_expr_cascadesection ::= slbra expr_expr srbra expr_cascade_section_tail | id_identifier expr_cascade_section_tail ; expr_cascade_section_tail ::= expr_cascade_assignment | expr_selectors expr_assignable_selector expr_cascade_assignment | expr_selectors ; expr_cascade_assignment ::= expr_assignment_operator expr_expr_withoutcascade ; star_simple_leftrec_selectors_108 ::= star_simple_leftrec_selectors_108 expr_selector | ; expr_selectors ::= star_simple_leftrec_selectors_108 ; expr_selector ::= sbang | expr_assignable_selector | misc_arguments | type_type_args ; star_simple_leftrec_selectors_not_dotid_109 ::= star_simple_leftrec_selectors_not_dotid_109 expr_selector_not_dotid | ; expr_selectors_not_dotid ::= star_simple_leftrec_selectors_not_dotid_109 ; expr_selector_not_dotid ::= sbang | misc_arguments | type_type_args | expr_conditional_assignable_selector ; expr_assignable_selector ::= sdot id_identifier | expr_conditional_assignable_selector ; expr_conditional_assignable_selector ::= slbra expr_expr srbra | squestiondot id_identifier | squestion slbra expr_expr srbra ; expr_assignment_operator ::= seq | sstareq | sslasheq | stildeslasheq | spercenteq | spluseq | sminuseq | ambop_lesslesseq | ambop_greatergreatergreatereq | ambop_greatergreatereq | sandeq | scareteq | spipeeq | sqqeq ; expr_super_access ::= ksuper slbra expr_expr srbra | ksuper sdot id_identifier ; numeric_literal ::= integer | decimal | hex ; expr_id_list_symbol_literal ::= shash id_list_dotted expr_selectors_not_dotid ; expr_primary ::= exprpattern_shared | type_type_args lcur misc_elements rcur | lcur misc_elements rcur | type_type_args slbra misc_elements srbra | slbra misc_elements srbra | knew misc_constructor_desig misc_arguments | kthis | type_inheritable_type sdot knew | slpar expr_expr srpar | ksuper type_type_args misc_arguments | ksuper misc_arguments | kswitch slpar expr_expr srpar lcur opt_optentries_110 rcur | misc_formal_parameter_part misc_function_block_body | record_literal_body ; plusi_switche_cases_112 ::= plusi_switche_cases_112 scomma switche_case | switche_case ; andinner___111 ::= plusi_switche_cases_112 misc_optional_comma ; opt_optentries_110 ::= andinner___111 | ; record_literal_body ::= slpar srpar | slpar orinner___113 srpar ; andinner___114 ::= expr_expr scomma ; orinner___113 ::= andinner___114 | andinner___115 | andinner___116 | andinner___118 ; andinner___115 ::= label expr_expr misc_optional_comma ; plusi_rls_117 ::= plusi_rls_117 scomma expr_record_field | expr_record_field ; andinner___116 ::= expr_expr scomma plusi_rls_117 misc_optional_comma ; plusi_rls_119 ::= plusi_rls_119 scomma expr_record_field | expr_record_field ; andinner___118 ::= label expr_expr scomma plusi_rls_119 misc_optional_comma ; opt_label ::= label | ; switche_case ::= guarded_pattern ambop_fatarrow expr_expr ; expr_record_field ::= expr_expr | label expr_expr ; plusi_exprs_120 ::= plusi_exprs_120 scomma expr_expr | expr_expr ; expr_exprcommalist ::= plusi_exprs_120 ; plusi_optexprs_121 ::= plusi_optexprs_121 scomma id_list_optexpr_component | id_list_optexpr_component ; id_list_optexpr ::= plusi_optexprs_121 ; id_list_optexpr_component ::= id_identifier seq expr_expr | id_identifier ; plusi_reqeprs_122 ::= plusi_reqeprs_122 scomma id_list_reqexpr_component | id_list_reqexpr_component ; id_list_reqexpr ::= plusi_reqeprs_122 ; id_list_reqexpr_component ::= id_identifier seq expr_expr ; plusi_noexprs_123 ::= plusi_noexprs_123 scomma id_identifier | id_identifier ; id_list_noexpr ::= plusi_noexprs_123 ; plusi_dotted_ids_124 ::= plusi_dotted_ids_124 sdot id_identifier | id_identifier ; id_list_dotted ::= plusi_dotted_ids_124 ; guarded_pattern ::= pattern | pattern kwhen expr_expr ; plusi_pat_logical_ands_126 ::= plusi_pat_logical_ands_126 sandand pattern_relational | pattern_relational ; plusi_pat_logical_ors_125 ::= plusi_pat_logical_ors_125 spipepipe plusi_pat_logical_ands_126 | plusi_pat_logical_ands_126 ; pattern ::= plusi_pat_logical_ors_125 ; pattern_relational ::= id_operator_equality expr_bitwise_or_expr | id_operator_relational expr_bitwise_or_expr | pattern_primary orinner___127 ; andinner___128 ::= ; orinner___127 ::= andinner___128 | andinner___129 | andinner___130 | andinner___131 ; andinner___129 ::= kas type_boundable_type ; andinner___130 ::= squestion ; andinner___131 ::= sbang ; pattern_primary ::= outer_pattern | exprpattern_shared | sminus numeric_literal | expr_id_list_symbol_literal | misc_qualified_name | kconst slpar expr_expr srpar | kfinal type_boundable_type id_identifier | kfinal id_identifier | kvar id_identifier | type_boundable_type id_identifier ; outer_pattern ::= type_type_args slbra srbra | slbra srbra | type_type_args slbra plusi_listpat_elements_132 misc_optional_comma srbra | slbra plusi_listpat_elements_133 misc_optional_comma srbra | type_type_args lcur rcur | lcur rcur | type_type_args lcur plusi_mappat_elements_134 misc_optional_comma rcur | lcur plusi_mappat_elements_135 misc_optional_comma rcur | type_dynamic_type slpar opt___136 srpar | type_inheritable_type slpar opt___137 srpar | slpar orinner___138 srpar ; plusi_listpat_elements_132 ::= plusi_listpat_elements_132 scomma list_pattern_element | list_pattern_element ; plusi_listpat_elements_133 ::= plusi_listpat_elements_133 scomma list_pattern_element | list_pattern_element ; plusi_mappat_elements_134 ::= plusi_mappat_elements_134 scomma map_pattern_entry | map_pattern_entry ; plusi_mappat_elements_135 ::= plusi_mappat_elements_135 scomma map_pattern_entry | map_pattern_entry ; opt___136 ::= patternfields | ; opt___137 ::= patternfields | ; andinner___139 ::= ; orinner___138 ::= andinner___139 | andinner___140 | andinner___141 | andinner___142 | andinner___143 | andinner___144 ; andinner___140 ::= pattern ; andinner___141 ::= pattern scomma ; andinner___142 ::= misc_opt_id scolon pattern misc_optional_comma ; andinner___143 ::= misc_opt_id scolon pattern scomma patternfields ; andinner___144 ::= pattern scomma patternfields ; plusi_patternfields_145 ::= plusi_patternfields_145 scomma patternfield | patternfield ; patternfields ::= plusi_patternfields_145 misc_optional_comma ; patternfield ::= misc_opt_id scolon pattern | pattern ; pattern_assignment ::= outer_pattern seq expr_expr ; exprpattern_shared ::= shash id_user_definable_operator | shash kvoid | ktrue | kfalse | knull | str_completestrings | id_identifier | kconst misc_constructor_desig misc_arguments | kconst type_type_args lcur misc_elements rcur | kconst lcur misc_elements rcur | kconst type_type_args slbra misc_elements srbra | kconst slbra misc_elements srbra | numeric_literal | kconst record_literal_body ; list_pattern_element ::= pattern | sdotdotdot | sdotdotdot pattern ; map_pattern_entry ::= expr_expr scolon pattern | sdotdotdot ; pattern_variable_declaration ::= kfinal pattern_assignment | kvar pattern_assignment ; skip ::= ws_many ; plus_wss_146 ::= plus_wss_146 ws_single | ws_single ; ws_many ::= plus_wss_146 ; ws_single ::= ws_blanks | ws_linenondoccomment | ws_blockcomment ; ws_blanks ::= ws ; ws_linenondoccomment ::= singlelinenondoccomment ; ws_blockcomment ::= ws_blockcommentnondoc ; ws_blockcommentnondoc ::= bcinit ws_blockcommentbody ; star_simple_leftrec_bcinner_147 ::= star_simple_leftrec_bcinner_147 ws_blockcommentinner | ; ws_blockcommentbody ::= star_simple_leftrec_bcinner_147 bcend ; ws_blockcommentinner ::= bcstart ws_blockcommentbody ; %End ```
bison grammar ``` %token scripttag kpart ssemicolon kof klibrary kdeferred kas kimport kexport kif slpar srpar seqeq kshow khide knew kabstract kcovariant kdynamic kextension kexternal kfactory kfunction kget kimplements kinterface klate koperator kmixin krequired kset kstatic ktypedef identifier kasync kon ksync ksealed kbase kwhen ktype sand scaret spipe slbra srbra seq sstar sslash spercent stildeslash splus sminus sg sl sbangeq stilde kvoid scomma lcur rcur kextends rslsqcontent startrslsq rslsqend rsldqcontent startrsldq rsldqend rmlsqcontent startrmlsq rmlsqend rmldqcontent startrmldq rmldqend startslsq slsqpop startsldq sldqpop startmlsq mlsqpop mlsqq startmldq mldqpop mldqq slsqcontent sldqcontent mlsqcontent mldqcontent escaped_lf escaped_cr escaped_b escaped_ht escaped_vt escaped_byte escaped_unicodesimple escaped_unicoderaw escaped_unescaped simpleinterpolation advancedinterpolation kelse kawait kwhile kdo ktry kfinally kswitch krethrow kbreak kcontinue kreturn kyield kfinal kvar kconst kcase scolon kdefault kcatch kclass kenum kwith kthis ksuper sdot kassert sat kin sdotdotdot sdotdotdotq kfor squestion seqsg sleq slleq sll kthrow sandand spipepipe sqq kis sbang splusplus sminusminus sdotdot squestiondotdot squestiondot sstareq sslasheq stildeslasheq spercenteq spluseq sminuseq sandeq scareteq spipeeq sqqeq integer decimal hex shash ktrue kfalse knull ws singlelinenondoccomment bcinit bcend bcstart %start parsed_root; %define lr.type lalr %% parsed_root : dart_language ; opt_opt_scripttag_1 : scripttag | ; opt___4 : misc_metadata | ; andinner___3 : opt___4 single_top_level_definition ; star_simple_leftrec_body_elements_2 : star_simple_leftrec_body_elements_2 andinner___3 | ; dart_language : opt_opt_scripttag_1 dart_header star_simple_leftrec_body_elements_2 ; opt___7 : misc_metadata | ; andinner___6 : opt___7 library_name ; opt_opt_library_name_5 : andinner___6 | ; opt___10 : misc_metadata | ; andinner___12 : library_import ; orinner___11 : andinner___12 | andinner___13 ; andinner___13 : library_export ; andinner___9 : opt___10 orinner___11 ; star_simple_leftrec_ports_8 : star_simple_leftrec_ports_8 andinner___9 | ; opt___16 : misc_metadata | ; andinner___15 : opt___16 part_directive ; star_simple_leftrec_parts_14 : star_simple_leftrec_parts_14 andinner___15 | ; dart_header : opt_opt_library_name_5 star_simple_leftrec_ports_8 star_simple_leftrec_parts_14 | misc_metadata part_of_library | part_of_library ; part_directive : kpart str_completestrings ssemicolon ; part_of_library : kpart kof str_completestrings ssemicolon | kpart kof id_list_dotted ssemicolon ; library_name : klibrary ssemicolon | klibrary id_list_dotted ssemicolon ; star_simple_leftrec_importconfiguri_17 : star_simple_leftrec_importconfiguri_17 configuration_uri | ; opt_alias_clause_20 : kdeferred | ; andinner___19 : opt_alias_clause_20 kas id_type_identifier ; opt_import_alias_clause_18 : andinner___19 | ; library_import : kimport str_completestrings star_simple_leftrec_importconfiguri_17 opt_import_alias_clause_18 combinators ssemicolon ; star_simple_leftrec_exportconfiguri_21 : star_simple_leftrec_exportconfiguri_21 configuration_uri | ; library_export : kexport str_completestrings star_simple_leftrec_exportconfiguri_21 combinators ssemicolon ; opt_conf_uri_test_22 : uri_test | ; configuration_uri : kif slpar id_list_dotted opt_conf_uri_test_22 srpar str_completestrings ; uri_test : seqeq str_completestrings ; andinner___25 : kshow id_list_noexpr ; orinner___24 : andinner___25 | andinner___26 ; andinner___26 : khide id_list_noexpr ; star_simple_leftrec_combinators_23 : star_simple_leftrec_combinators_23 orinner___24 | ; combinators : star_simple_leftrec_combinators_23 ; id_identifier_or_new : id_identifier | knew ; id_identifier : id_type_identifier | kabstract | kas | kcovariant | kdynamic | kdeferred | kexport | kextension | kexternal | kfactory | kfunction | kget | kimplements | kimport | kinterface | klate | klibrary | koperator | kmixin | kpart | krequired | kset | kstatic | ktypedef ; id_type_identifier : identifier | kasync | khide | kof | kon | kshow | ksync | ksealed | kbase | kwhen | ktype ; id_user_definable_operator : id_operator_complement | id_operator_multiplicative | id_operator_additive | id_operator_shift | id_operator_relational | id_operator_eqeq | sand | scaret | spipe | slbra srbra seq | slbra srbra ; id_operator_equality : id_operator_eqeq | id_operator_neq ; id_operator_multiplicative : sstar | sslash | spercent | stildeslash ; id_operator_additive : splus | sminus ; id_operator_shift : ambop_lessless | ambop_greatergreatergreater | ambop_greatergreater ; id_operator_relational : ambop_greatereq | sg | ambop_lesseq | sl ; id_operator_eqeq : seqeq ; id_operator_neq : sbangeq ; id_operator_complement : stilde ; star_simple_leftrec_fn_components_27 : star_simple_leftrec_fn_components_27 ktype_function_component | ; type_boundable_type : ktype_function_type_return_type misc_optional_question star_simple_leftrec_fn_components_27 | plus_fn_components_28 ; plus_fn_components_28 : plus_fn_components_28 ktype_function_component | ktype_function_component ; ktype_function_type_return_type : type_inheritable_type | ktype_record_type | type_dynamic_type | misc_importqualifier kvoid | kvoid ; type_dynamic_type : misc_importqualifier kdynamic | kdynamic ; type_inheritable_type : misc_importqualifier id_type_identifier type_type_args | misc_importqualifier id_type_identifier | id_type_identifier type_type_args | id_type_identifier | misc_importqualifier kfunction | kfunction ; plusi_inheritable_types_29 : plusi_inheritable_types_29 scomma type_inheritable_type | type_inheritable_type ; type_inheritable_types : plusi_inheritable_types_29 ; ktype_function_component : kfunction type_type_params ktype_function_parameters misc_optional_question | kfunction ktype_function_parameters misc_optional_question ; ktype_function_parameters : slpar srpar | slpar ktype_function_normal_parameters srpar | slpar ktype_function_optional_parameters srpar ; ktype_function_normal_parameters : ktype_function_normal_parameter scomma ktype_function_normal_parameters | ktype_function_normal_parameter scomma ktype_function_optional_parameters | ktype_function_normal_parameter scomma | ktype_function_normal_parameter ; plusi_tfnops_30 : plusi_tfnops_30 scomma ktype_function_normal_parameter | ktype_function_normal_parameter ; ktype_function_optional_parameters : slbra plusi_tfnops_30 misc_optional_comma srbra | lcur plusi_tfnaps_31 misc_optional_comma rcur ; plusi_tfnaps_31 : plusi_tfnaps_31 scomma ktype_function_named_parameter | ktype_function_named_parameter ; ktype_function_normal_parameter : misc_metadata type_boundable_type misc_opt_id | type_boundable_type misc_opt_id ; ktype_function_named_parameter : misc_metadata krequired type_boundable_type misc_opt_id | misc_metadata type_boundable_type misc_opt_id | krequired type_boundable_type misc_opt_id | type_boundable_type misc_opt_id ; ktype_record_type : slpar srpar | slpar ktype_record_type_unnamed_fields srpar | slpar ktype_record_type_named_fields srpar ; ktype_record_type_unnamed_fields : ktype_record_type_unnamed_field scomma ktype_record_type_unnamed_fields | ktype_record_type_unnamed_field scomma ktype_record_type_named_fields | ktype_record_type_unnamed_field scomma | ktype_record_type_unnamed_field ; ktype_record_type_unnamed_field : misc_metadata type_boundable_type misc_opt_id | type_boundable_type misc_opt_id ; ktype_record_type_named_field : misc_metadata type_boundable_type id_identifier | type_boundable_type id_identifier ; plusi_trtnfs_32 : plusi_trtnfs_32 scomma ktype_record_type_named_field | ktype_record_type_named_field ; ktype_record_type_named_fields : lcur plusi_trtnfs_32 misc_optional_comma rcur ; plusi_type_params_33 : plusi_type_params_33 scomma type_type_param | type_type_param ; type_type_params : sl plusi_type_params_33 sg ; type_type_param : misc_metadata id_type_identifier kextends type_boundable_type | misc_metadata id_type_identifier | id_type_identifier kextends type_boundable_type | id_type_identifier ; plusi_boundable_types_34 : plusi_boundable_types_34 scomma type_boundable_type | type_boundable_type ; type_type_args : sl plusi_boundable_types_34 sg ; opt_optid_35 : id_identifier | ; misc_opt_id : opt_optid_35 ; plus_strings_36 : plus_strings_36 str_completestring | str_completestring ; str_completestrings : plus_strings_36 ; str_completestring : str_slsq | str_sldq | str_mlsq | str_mldq | str_rslsq | str_rsldq | str_rmlsq | str_rmldq ; opt_blibla41_37 : rslsqcontent | ; str_rslsq : startrslsq opt_blibla41_37 rslsqend ; opt_blibla42_38 : rsldqcontent | ; str_rsldq : startrsldq opt_blibla42_38 rsldqend ; opt_blibla43_39 : rmlsqcontent | ; str_rmlsq : startrmlsq opt_blibla43_39 rmlsqend ; opt_blibla44_40 : rmldqcontent | ; str_rmldq : startrmldq opt_blibla44_40 rmldqend ; star_simple_leftrec_strslsq_41 : star_simple_leftrec_strslsq_41 str_slsqstrcontent | ; str_slsq : startslsq star_simple_leftrec_strslsq_41 slsqpop ; star_simple_leftrec_strsdsq_42 : star_simple_leftrec_strsdsq_42 str_sldqstrcontent | ; str_sldq : startsldq star_simple_leftrec_strsdsq_42 sldqpop ; star_simple_leftrec_strmlsq_43 : star_simple_leftrec_strmlsq_43 str_mlsq_content | ; str_mlsq : startmlsq star_simple_leftrec_strmlsq_43 mlsqpop ; opt_blibla45_44 : mlsqq | ; str_mlsq_content : opt_blibla45_44 str_mlsqstrcontent ; star_simple_leftrec_starbla2_45 : star_simple_leftrec_starbla2_45 str_mldq_content | ; str_mldq : startmldq star_simple_leftrec_starbla2_45 mldqpop ; opt_blibla46_46 : mldqq | ; str_mldq_content : opt_blibla46_46 str_mldqstrcontent ; str_slsqstrcontent : slsqcontent | str_commonstrcontent ; str_sldqstrcontent : sldqcontent | str_commonstrcontent ; str_mlsqstrcontent : mlsqcontent | str_commonstrcontent ; str_mldqstrcontent : mldqcontent | str_commonstrcontent ; str_commonstrcontent : escaped_lf | escaped_cr | escaped_b | escaped_ht | escaped_vt | escaped_byte | escaped_unicodesimple | escaped_unicoderaw | escaped_unescaped | simpleinterpolation | advancedinterpolation expr_expr rcur ; star_simple_leftrec_osc_47 : star_simple_leftrec_osc_47 statement | ; statements : star_simple_leftrec_osc_47 ; statement : labels unlabelled_statement ; unlabelled_statement : if_head statement kelse statement | if_head statement | kawait misc_for_head statement | misc_for_head statement | kwhile slpar expr_expr srpar statement | kdo statement kwhile slpar expr_expr srpar ssemicolon | block | ktry block plus_catchons_48 opt___49 | ktry block kfinally block | kswitch slpar expr_expr srpar lcur switch_entries rcur | krethrow ssemicolon | kbreak id_identifier ssemicolon | kbreak ssemicolon | kcontinue id_identifier ssemicolon | kcontinue ssemicolon | kreturn expr_expr ssemicolon | kreturn ssemicolon | misc_assertion ssemicolon | expr_expr ssemicolon | ssemicolon | kyield expr_expr ssemicolon | kyield sstar expr_expr ssemicolon | misc_metadata klate kfinal type_boundable_type id_list_optexpr ssemicolon | misc_metadata klate kfinal id_list_optexpr ssemicolon | misc_metadata klate kvar id_list_optexpr ssemicolon | misc_metadata klate type_boundable_type id_list_optexpr ssemicolon | misc_metadata kfinal type_boundable_type id_list_optexpr ssemicolon | misc_metadata kfinal id_list_optexpr ssemicolon | misc_metadata kvar id_list_optexpr ssemicolon | misc_metadata type_boundable_type id_list_optexpr ssemicolon | misc_metadata kconst type_boundable_type id_list_optexpr ssemicolon | misc_metadata kconst id_list_optexpr ssemicolon | misc_metadata pattern_variable_declaration ssemicolon | misc_metadata misc_function_signature misc_function_body | klate kfinal type_boundable_type id_list_optexpr ssemicolon | klate kfinal id_list_optexpr ssemicolon | klate kvar id_list_optexpr ssemicolon | klate type_boundable_type id_list_optexpr ssemicolon | kfinal type_boundable_type id_list_optexpr ssemicolon | kfinal id_list_optexpr ssemicolon | kvar id_list_optexpr ssemicolon | type_boundable_type id_list_optexpr ssemicolon | kconst type_boundable_type id_list_optexpr ssemicolon | kconst id_list_optexpr ssemicolon | pattern_variable_declaration ssemicolon | misc_function_signature misc_function_body ; plus_catchons_48 : plus_catchons_48 try_catchon | try_catchon ; andinner___50 : kfinally block ; opt___49 : andinner___50 | ; if_head : kif slpar expr_expr srpar | kif slpar expr_expr kcase guarded_pattern srpar ; star_simple_leftrec_labels_51 : star_simple_leftrec_labels_51 label | ; labels : star_simple_leftrec_labels_51 ; label : id_identifier scolon ; block : lcur statements rcur ; switch_entries : labels kcase guarded_pattern scolon statements switch_entries | labels kdefault scolon statements | ; try_catchon : kon type_boundable_type block | kcatch slpar id_identifier srpar block | kcatch slpar id_identifier scomma id_identifier srpar block | kon type_boundable_type kcatch slpar id_identifier srpar block | kon type_boundable_type kcatch slpar id_identifier scomma id_identifier srpar block ; single_top_level_definition : misc_class_modifier kclass id_type_identifier type_type_params misc_opt_clauseextends misc_opt_clausewith misc_opt_clauseimplements lcur declmembers rcur | misc_class_modifier kclass kfunction type_type_params misc_opt_clauseextends misc_opt_clausewith misc_opt_clauseimplements lcur declmembers rcur | misc_class_modifier kclass id_type_identifier misc_opt_clauseextends misc_opt_clausewith misc_opt_clauseimplements lcur declmembers rcur | misc_class_modifier kclass kfunction misc_opt_clauseextends misc_opt_clausewith misc_opt_clauseimplements lcur declmembers rcur | misc_class_modifier kclass id_type_identifier type_type_params seq type_inheritable_type clause_with misc_opt_clauseimplements ssemicolon | misc_class_modifier kclass id_type_identifier seq type_inheritable_type clause_with misc_opt_clauseimplements ssemicolon | misc_mixin_modifier kmixin id_type_identifier type_type_params misc_opt_clauseonmany misc_opt_clauseimplements lcur declmembers rcur | misc_mixin_modifier kmixin id_type_identifier misc_opt_clauseonmany misc_opt_clauseimplements lcur declmembers rcur | kextension ktype opt___52 id_type_identifier opt___53 opt___54 slpar opt___55 type_boundable_type id_identifier srpar misc_opt_clauseimplements lcur declmembers rcur | kextension id_type_identifier type_type_params clause_onone lcur declmembers rcur | kextension type_type_params clause_onone lcur declmembers rcur | kextension id_type_identifier clause_onone lcur declmembers rcur | kextension clause_onone lcur declmembers rcur | kenum id_type_identifier type_type_params misc_opt_clausewith misc_opt_clauseimplements lcur enum_entries ssemicolon declmembers rcur | kenum id_type_identifier type_type_params misc_opt_clausewith misc_opt_clauseimplements lcur enum_entries rcur | kenum id_type_identifier misc_opt_clausewith misc_opt_clauseimplements lcur enum_entries ssemicolon declmembers rcur | kenum id_type_identifier misc_opt_clausewith misc_opt_clauseimplements lcur enum_entries rcur | ktypedef orinner___56 ssemicolon | klate kfinal type_boundable_type id_list_optexpr ssemicolon | klate kfinal id_list_optexpr ssemicolon | klate kvar id_list_optexpr ssemicolon | klate type_boundable_type id_list_optexpr ssemicolon | kfinal type_boundable_type id_list_optexpr ssemicolon | kfinal id_list_optexpr ssemicolon | kvar id_list_optexpr ssemicolon | type_boundable_type id_list_optexpr ssemicolon | kconst type_boundable_type id_list_optexpr ssemicolon | kconst id_list_optexpr ssemicolon | kexternal kfinal type_boundable_type id_list_noexpr ssemicolon | kexternal kfinal id_list_noexpr ssemicolon | kexternal kvar id_list_noexpr ssemicolon | kexternal type_boundable_type id_list_noexpr ssemicolon | misc_getter_signature misc_function_body | misc_setter_signature misc_function_body | misc_function_signature misc_function_body | kexternal misc_getter_signature ssemicolon | kexternal misc_setter_signature ssemicolon | kexternal misc_function_signature ssemicolon ; opt___52 : kconst | ; opt___53 : type_type_params | ; opt___54 : misc_constructor_qualifier | ; opt___55 : misc_metadata | ; andinner___57 : id_type_identifier type_type_params seq type_boundable_type ; orinner___56 : andinner___57 | andinner___58 | andinner___59 ; andinner___58 : id_type_identifier seq type_boundable_type ; andinner___59 : misc_function_signature ; misc_class_modifier : ksealed | kabstract | kabstract kbase | kbase | kabstract kinterface | kinterface | kabstract kfinal | kfinal | kabstract kbase kmixin | kbase kmixin | kabstract kmixin | kmixin | ; misc_mixin_modifier : ksealed | kbase | kinterface | kfinal | ; clause_with : kwith type_inheritable_types ; clause_onmany : kon type_inheritable_types ; clause_implements : kimplements type_inheritable_types ; clause_extends : kextends type_inheritable_type ; clause_onone : kon type_boundable_type ; member : id_type_identifier misc_constructor_qualifier misc_formal_parameter_list misc_function_body | id_type_identifier misc_constructor_qualifier misc_formal_parameter_list scolon member_constructor_initializer_list misc_function_body | id_type_identifier misc_formal_parameter_list scolon member_constructor_initializer_list misc_function_body | kconst kfactory id_type_identifier misc_constructor_qualifier misc_formal_parameter_list misc_function_body | kconst kfactory id_type_identifier misc_formal_parameter_list misc_function_body | kfactory id_type_identifier misc_constructor_qualifier misc_formal_parameter_list misc_function_body | kfactory id_type_identifier misc_formal_parameter_list misc_function_body | kconst id_type_identifier misc_constructor_qualifier misc_formal_parameter_list misc_function_body | kconst id_type_identifier misc_formal_parameter_list misc_function_body | kexternal kconst kfactory id_type_identifier misc_constructor_qualifier misc_formal_parameter_list ssemicolon | kexternal kconst kfactory id_type_identifier misc_formal_parameter_list ssemicolon | kexternal kfactory id_type_identifier misc_constructor_qualifier misc_formal_parameter_list ssemicolon | kexternal kfactory id_type_identifier misc_formal_parameter_list ssemicolon | kexternal kconst id_type_identifier misc_constructor_qualifier misc_formal_parameter_list ssemicolon | kexternal kconst id_type_identifier misc_formal_parameter_list ssemicolon | kexternal id_type_identifier misc_constructor_qualifier misc_formal_parameter_list ssemicolon | kconst kfactory id_type_identifier misc_constructor_qualifier misc_formal_parameter_list seq misc_constructor_desig ssemicolon | kconst kfactory id_type_identifier misc_formal_parameter_list seq misc_constructor_desig ssemicolon | kfactory id_type_identifier misc_constructor_qualifier misc_formal_parameter_list seq misc_constructor_desig ssemicolon | kfactory id_type_identifier misc_formal_parameter_list seq misc_constructor_desig ssemicolon | id_type_identifier misc_constructor_qualifier misc_formal_parameter_list ssemicolon | kconst id_type_identifier misc_constructor_qualifier misc_formal_parameter_list ssemicolon | kconst id_type_identifier misc_formal_parameter_list ssemicolon | id_type_identifier misc_constructor_qualifier misc_formal_parameter_list scolon member_constructor_redirector ssemicolon | id_type_identifier misc_formal_parameter_list scolon member_constructor_redirector ssemicolon | kconst id_type_identifier misc_constructor_qualifier misc_formal_parameter_list scolon member_constructor_redirector ssemicolon | kconst id_type_identifier misc_formal_parameter_list scolon member_constructor_redirector ssemicolon | kexternal kstatic misc_procedure_signature ssemicolon | kexternal misc_procedure_signature ssemicolon | kstatic misc_procedure_signature misc_function_body | misc_procedure_signature ssemicolon | misc_procedure_signature misc_function_body | kexternal misc_operator_signature ssemicolon | misc_operator_signature misc_function_body | misc_operator_signature ssemicolon | kexternal kstatic kfinal type_boundable_type id_list_noexpr ssemicolon | kexternal kstatic kfinal id_list_noexpr ssemicolon | kexternal kstatic kvar id_list_noexpr ssemicolon | kexternal kstatic type_boundable_type id_list_noexpr ssemicolon | kexternal kfinal type_boundable_type id_list_noexpr ssemicolon | kexternal kfinal id_list_noexpr ssemicolon | kexternal kvar id_list_noexpr ssemicolon | kexternal type_boundable_type id_list_noexpr ssemicolon | kexternal kcovariant kvar id_list_noexpr ssemicolon | kexternal kcovariant type_boundable_type id_list_noexpr ssemicolon | kabstract kfinal type_boundable_type id_list_noexpr ssemicolon | kabstract kfinal id_list_noexpr ssemicolon | kabstract kvar id_list_noexpr ssemicolon | kabstract type_boundable_type id_list_noexpr ssemicolon | kabstract kcovariant kvar id_list_noexpr ssemicolon | kabstract kcovariant type_boundable_type id_list_noexpr ssemicolon | kstatic kconst type_boundable_type id_list_reqexpr ssemicolon | kstatic kconst id_list_reqexpr ssemicolon | kstatic klate kfinal type_boundable_type id_list_optexpr ssemicolon | kstatic klate kfinal id_list_optexpr ssemicolon | kstatic kfinal type_boundable_type id_list_reqexpr ssemicolon | kstatic kfinal id_list_reqexpr ssemicolon | kstatic klate kvar id_list_optexpr ssemicolon | kstatic klate type_boundable_type id_list_optexpr ssemicolon | kstatic kvar id_list_optexpr ssemicolon | kstatic type_boundable_type id_list_optexpr ssemicolon | kcovariant klate kfinal type_boundable_type id_list_noexpr ssemicolon | kcovariant klate kfinal id_list_noexpr ssemicolon | kcovariant klate kvar id_list_optexpr ssemicolon | kcovariant klate type_boundable_type id_list_optexpr ssemicolon | kcovariant kvar id_list_optexpr ssemicolon | kcovariant type_boundable_type id_list_optexpr ssemicolon | klate kfinal type_boundable_type id_list_optexpr ssemicolon | klate kfinal id_list_optexpr ssemicolon | klate kvar id_list_optexpr ssemicolon | klate type_boundable_type id_list_optexpr ssemicolon | kfinal type_boundable_type id_list_optexpr ssemicolon | kfinal id_list_optexpr ssemicolon | kvar id_list_optexpr ssemicolon | type_boundable_type id_list_optexpr ssemicolon ; opt___62 : misc_metadata | ; andinner___61 : opt___62 enum_entry ; plusi_enum_entries_60 : plusi_enum_entries_60 scomma andinner___61 | andinner___61 ; enum_entries : plusi_enum_entries_60 misc_optional_comma ; enum_entry : id_identifier | id_identifier type_type_args misc_opt_constructor_qualifier | id_identifier misc_opt_constructor_qualifier ; opt___65 : misc_metadata | ; andinner___64 : opt___65 member ; star_simple_leftrec_decl_members_63 : star_simple_leftrec_decl_members_63 andinner___64 | ; declmembers : star_simple_leftrec_decl_members_63 ; member_constructor_redirector : kthis misc_opt_constructor_qualifier | member_constructor_initializer_list ; plusi_mcies_66 : plusi_mcies_66 scomma member_constructor_initializer_entry | member_constructor_initializer_entry ; member_constructor_initializer_list : plusi_mcies_66 ; member_constructor_initializer_entry : ksuper misc_opt_constructor_qualifier | kthis sdot id_identifier seq expr_expr_initializer_constructor | id_identifier seq expr_expr_initializer_constructor | misc_assertion ; misc_assertion : kassert slpar expr_expr misc_optional_comma srpar | kassert slpar expr_expr scomma expr_expr misc_optional_comma srpar ; misc_assertion_message : scomma expr_expr ; misc_metadata : misc_nonoptmetadata misc_metadata | misc_nonoptmetadata ; misc_nonoptmetadata : sat id_identifier | sat misc_qualified_name | sat misc_constructor_desig misc_arguments ; misc_qualified_name : misc_importqualifier id_type_identifier misc_constructor_qualifier | id_type_identifier misc_constructor_qualifier ; misc_constructor_desig : misc_importqualifier id_type_identifier type_type_args | id_type_identifier type_type_args | id_type_identifier | type_inheritable_type misc_constructor_qualifier ; misc_constructor_qualifier : sdot id_identifier_or_new ; misc_importqualifier : id_type_identifier sdot ; misc_arguments : slpar misc_arguments_component misc_optional_comma srpar | slpar srpar ; misc_arguments_component : misc_arguments_component scomma label expr_expr | misc_arguments_component scomma expr_expr | label expr_expr | expr_expr ; misc_for_loop_parts : misc_metadata id_identifier kin expr_expr | misc_metadata klate kfinal type_boundable_type id_identifier kin expr_expr | misc_metadata klate kfinal id_identifier kin expr_expr | misc_metadata klate kvar id_identifier kin expr_expr | misc_metadata klate type_boundable_type id_identifier kin expr_expr | misc_metadata kfinal type_boundable_type id_identifier kin expr_expr | misc_metadata kfinal id_identifier kin expr_expr | misc_metadata kvar id_identifier kin expr_expr | misc_metadata type_boundable_type id_identifier kin expr_expr | misc_metadata kconst type_boundable_type id_identifier kin expr_expr | misc_metadata kconst id_identifier kin expr_expr | misc_metadata kfinal outer_pattern kin expr_expr | misc_metadata kvar outer_pattern kin expr_expr | id_identifier kin expr_expr | klate kfinal type_boundable_type id_identifier kin expr_expr | klate kfinal id_identifier kin expr_expr | klate kvar id_identifier kin expr_expr | klate type_boundable_type id_identifier kin expr_expr | kfinal type_boundable_type id_identifier kin expr_expr | kfinal id_identifier kin expr_expr | kvar id_identifier kin expr_expr | type_boundable_type id_identifier kin expr_expr | kconst type_boundable_type id_identifier kin expr_expr | kconst id_identifier kin expr_expr | kfinal outer_pattern kin expr_expr | kvar outer_pattern kin expr_expr | opt_forold_lhs_67 ssemicolon opt_expr_68 ssemicolon opt_exprcommalist_69 ; opt_forold_lhs_67 : misc_forold_lhs | ; opt_expr_68 : expr_expr | ; opt_exprcommalist_69 : expr_exprcommalist | ; misc_forold_lhs : misc_metadata klate kfinal type_boundable_type id_list_optexpr | misc_metadata klate kfinal id_list_optexpr | misc_metadata klate kvar id_list_optexpr | misc_metadata klate type_boundable_type id_list_optexpr | misc_metadata kfinal type_boundable_type id_list_optexpr | misc_metadata kfinal id_list_optexpr | misc_metadata kvar id_list_optexpr | misc_metadata type_boundable_type id_list_optexpr | misc_metadata kconst type_boundable_type id_list_optexpr | misc_metadata kconst id_list_optexpr | misc_metadata pattern_variable_declaration | klate kfinal type_boundable_type id_list_optexpr | klate kfinal id_list_optexpr | klate kvar id_list_optexpr | klate type_boundable_type id_list_optexpr | kfinal type_boundable_type id_list_optexpr | kfinal id_list_optexpr | kvar id_list_optexpr | type_boundable_type id_list_optexpr | kconst type_boundable_type id_list_optexpr | kconst id_list_optexpr | pattern_variable_declaration | expr_expr ; plusi_elements_70 : plusi_elements_70 scomma misc_element | misc_element ; misc_elements : plusi_elements_70 misc_optional_comma | ; misc_element : if_head misc_element kelse misc_element | if_head misc_element | misc_for_head misc_element | kawait misc_for_head misc_element | expr_expr | expr_expr scolon expr_expr | sdotdotdot expr_expr | sdotdotdotq expr_expr ; misc_for_head : kfor slpar misc_for_loop_parts srpar ; misc_procedure_signature : misc_function_signature | misc_setter_signature | misc_getter_signature ; misc_function_signature : type_boundable_type id_identifier misc_formal_parameter_part | id_identifier misc_formal_parameter_part ; misc_setter_signature : type_boundable_type kset id_identifier misc_formal_parameter_list | kset id_identifier misc_formal_parameter_list ; misc_getter_signature : type_boundable_type kget id_identifier | kget id_identifier ; misc_operator_signature : type_boundable_type koperator id_user_definable_operator misc_formal_parameter_list | koperator id_user_definable_operator misc_formal_parameter_list ; misc_function_block_body : block | kasync sstar block | kasync block | ksync sstar block ; misc_function_expression_body : ambop_fatarrow expr_expr | kasync ambop_fatarrow expr_expr ; misc_function_expression_body_withoutcascade : ambop_fatarrow expr_expr_withoutcascade | kasync ambop_fatarrow expr_expr_withoutcascade ; misc_function_body : misc_function_expression_body ssemicolon | misc_function_block_body | id_identifier str_completestring ssemicolon ; misc_formal_parameter_list : slpar srpar | slpar misc_normal_formal_parameters srpar | slpar misc_optional_or_named_formal_parameters srpar ; misc_normal_formal_parameters : misc_normal_formal_parameter scomma misc_normal_formal_parameters | misc_normal_formal_parameter scomma misc_optional_or_named_formal_parameters | misc_normal_formal_parameter scomma | misc_normal_formal_parameter ; misc_optional_or_named_formal_parameters : misc_optional_positional_formal_parameters | misc_named_formal_parameters ; plusi_mdfps_71 : plusi_mdfps_71 scomma misc_default_formal_parameter | misc_default_formal_parameter ; misc_optional_positional_formal_parameters : slbra plusi_mdfps_71 misc_optional_comma srbra ; plusi_mdnps_72 : plusi_mdnps_72 scomma misc_default_named_parameter | misc_default_named_parameter ; misc_named_formal_parameters : lcur plusi_mdnps_72 misc_optional_comma rcur ; misc_default_named_parameter : misc_metadata krequired misc_normal_formal_parameter_nometadata | misc_metadata misc_normal_formal_parameter_nometadata | misc_metadata krequired misc_normal_formal_parameter_nometadata seq expr_expr | misc_metadata misc_normal_formal_parameter_nometadata seq expr_expr | misc_metadata krequired misc_normal_formal_parameter_nometadata scolon expr_expr | misc_metadata misc_normal_formal_parameter_nometadata scolon expr_expr | krequired misc_normal_formal_parameter_nometadata | misc_normal_formal_parameter_nometadata | krequired misc_normal_formal_parameter_nometadata seq expr_expr | misc_normal_formal_parameter_nometadata seq expr_expr | krequired misc_normal_formal_parameter_nometadata scolon expr_expr | misc_normal_formal_parameter_nometadata scolon expr_expr ; misc_default_formal_parameter : misc_normal_formal_parameter | misc_normal_formal_parameter seq expr_expr | misc_normal_formal_parameter scolon expr_expr ; misc_normal_formal_parameter : misc_metadata misc_normal_formal_parameter_nometadata | misc_normal_formal_parameter_nometadata ; misc_normal_formal_parameter_nometadata : kcovariant misc_function_signature misc_optional_question | misc_function_signature misc_optional_question | klate kfinal type_boundable_type kthis sdot id_identifier | klate kfinal kthis sdot id_identifier | klate kvar kthis sdot id_identifier | klate type_boundable_type kthis sdot id_identifier | kfinal type_boundable_type kthis sdot id_identifier | kfinal kthis sdot id_identifier | kvar kthis sdot id_identifier | type_boundable_type kthis sdot id_identifier | kconst type_boundable_type kthis sdot id_identifier | kconst kthis sdot id_identifier | kthis sdot id_identifier | type_boundable_type ksuper sdot id_identifier | ksuper sdot id_identifier | klate kfinal type_boundable_type kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | klate kfinal kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | klate kvar kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | klate type_boundable_type kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | kfinal type_boundable_type kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | kfinal kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | kvar kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | type_boundable_type kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | kconst type_boundable_type kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | kconst kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | kthis sdot id_identifier misc_formal_parameter_part misc_optional_question | type_boundable_type ksuper sdot id_identifier misc_formal_parameter_part misc_optional_question | ksuper sdot id_identifier misc_formal_parameter_part misc_optional_question | kcovariant klate kfinal type_boundable_type id_identifier | kcovariant klate kfinal id_identifier | kcovariant klate kvar id_identifier | kcovariant klate type_boundable_type id_identifier | kcovariant kfinal type_boundable_type id_identifier | kcovariant kfinal id_identifier | kcovariant kvar id_identifier | kcovariant type_boundable_type id_identifier | kcovariant kconst type_boundable_type id_identifier | kcovariant kconst id_identifier | klate kfinal type_boundable_type id_identifier | klate kfinal id_identifier | klate kvar id_identifier | klate type_boundable_type id_identifier | kfinal type_boundable_type id_identifier | kfinal id_identifier | kvar id_identifier | type_boundable_type id_identifier | kconst type_boundable_type id_identifier | kconst id_identifier | kcovariant id_identifier | id_identifier ; misc_formal_parameter_part : type_type_params misc_formal_parameter_list | misc_formal_parameter_list ; opt_blibla9_73 : clause_onmany | ; misc_opt_clauseonmany : opt_blibla9_73 ; opt_blibla10_74 : clause_with | ; misc_opt_clausewith : opt_blibla10_74 ; opt_blibla11_75 : clause_extends | ; misc_opt_clauseextends : opt_blibla11_75 ; opt_blibla12_76 : clause_implements | ; misc_opt_clauseimplements : opt_blibla12_76 ; opt_ocq_77 : misc_constructor_qualifier | ; misc_opt_constructor_qualifier : opt_ocq_77 misc_arguments ; opt_optional_comma_78 : scomma | ; misc_optional_comma : opt_optional_comma_78 ; opt_opt_q_79 : squestion | ; misc_optional_question : opt_opt_q_79 ; ambop_fatarrow : seqsg ; ambop_lesseq : sleq ; ambop_lesslesseq : slleq ; ambop_lessless : sll ; ambop_greatereq : sg seq ; ambop_greatergreatereq : sg sg seq ; ambop_greatergreatergreatereq : sg sg sg seq ; ambop_greatergreater : sg sg ; ambop_greatergreatergreater : sg sg sg ; expr_expr : misc_formal_parameter_part misc_function_expression_body | kthrow expr_expr | id_identifier expr_assignment_operator expr_expr | expr_assignable_expression expr_assignment_operator expr_expr | expr_expr_conditional opt_cascadepart_80 | pattern_assignment ; opt_cascadepart_80 : expr_expr_cascade | ; expr_expr_withoutcascade : misc_formal_parameter_part misc_function_expression_body_withoutcascade | kthrow expr_expr_withoutcascade | id_identifier expr_assignment_operator expr_expr_withoutcascade | expr_assignable_expression expr_assignment_operator expr_expr_withoutcascade | expr_expr_conditional ; opt_cascadepart_81 : expr_expr_cascade | ; expr_expr_initializer_constructor : expr_expr_conditional opt_cascadepart_81 | kthrow expr_expr_withoutcascade ; plusi_equality_expr_85 : plusi_equality_expr_85 id_operator_equality expr_relational_expr | expr_relational_expr ; plusi_logical_and_expr_84 : plusi_logical_and_expr_84 sandand plusi_equality_expr_85 | plusi_equality_expr_85 ; plusi_logical_or_exprs_83 : plusi_logical_or_exprs_83 spipepipe plusi_logical_and_expr_84 | plusi_logical_and_expr_84 ; plusi_expr_if_null_82 : plusi_expr_if_null_82 sqq plusi_logical_or_exprs_83 | plusi_logical_or_exprs_83 ; andinner___87 : squestion expr_expr_withoutcascade scolon expr_expr_withoutcascade ; opt_conditionalpart_86 : andinner___87 | ; expr_expr_conditional : plusi_expr_if_null_82 opt_conditionalpart_86 ; andinner___89 : ; orinner___88 : andinner___89 | andinner___90 | andinner___91 | andinner___92 | andinner___93 ; andinner___90 : id_operator_relational expr_bitwise_or_expr ; andinner___91 : kis type_boundable_type ; andinner___92 : kis sbang type_boundable_type ; andinner___93 : kas type_boundable_type ; expr_relational_expr : expr_bitwise_or_expr orinner___88 ; plusi_multiplicative_expr_99 : plusi_multiplicative_expr_99 id_operator_multiplicative expr_unary_expr | expr_unary_expr ; plusi_additive_expr_98 : plusi_additive_expr_98 id_operator_additive plusi_multiplicative_expr_99 | plusi_multiplicative_expr_99 ; plusi_shift_expr_97 : plusi_shift_expr_97 id_operator_shift plusi_additive_expr_98 | plusi_additive_expr_98 ; plusi_bitwise_and_expr_96 : plusi_bitwise_and_expr_96 sand plusi_shift_expr_97 | plusi_shift_expr_97 ; plusi_bitwise_xor_expr_95 : plusi_bitwise_xor_expr_95 scaret plusi_bitwise_and_expr_96 | plusi_bitwise_and_expr_96 ; plusi_bitwise_or_expr_94 : plusi_bitwise_or_expr_94 spipe plusi_bitwise_xor_expr_95 | plusi_bitwise_xor_expr_95 ; expr_bitwise_or_expr : plusi_bitwise_or_expr_94 ; andinner___102 : sminus ; orinner___101 : andinner___102 | andinner___103 | andinner___104 | andinner___105 ; andinner___103 : sbang ; andinner___104 : stilde ; andinner___105 : kawait ; plus_unaryops_100 : plus_unaryops_100 orinner___101 | orinner___101 ; expr_unary_expr : plus_unaryops_100 expr_unary_expr_tail | expr_unary_expr_tail ; expr_unary_expr_tail : expr_super_access expr_selectors | expr_primary expr_selectors | expr_id_list_symbol_literal | expr_assignable_expression splusplus | expr_assignable_expression sminusminus | id_identifier splusplus | id_identifier sminusminus | splusplus expr_assignable_expression | sminusminus expr_assignable_expression | splusplus id_identifier | sminusminus id_identifier | ksuper ; expr_assignable_expression : expr_super_access | expr_super_access expr_selectors expr_assignable_selector | expr_primary expr_selectors expr_assignable_selector | expr_id_list_symbol_literal expr_conditional_assignable_selector ; plusi_cascadesections1_106 : plusi_cascadesections1_106 sdotdot expr_expr_cascadesection | expr_expr_cascadesection ; expr_expr_cascade : sdotdot plusi_cascadesections1_106 | squestiondotdot plusi_cascadesections2_107 ; plusi_cascadesections2_107 : plusi_cascadesections2_107 sdotdot expr_expr_cascadesection | expr_expr_cascadesection ; expr_expr_cascadesection : slbra expr_expr srbra expr_cascade_section_tail | id_identifier expr_cascade_section_tail ; expr_cascade_section_tail : expr_cascade_assignment | expr_selectors expr_assignable_selector expr_cascade_assignment | expr_selectors ; expr_cascade_assignment : expr_assignment_operator expr_expr_withoutcascade ; star_simple_leftrec_selectors_108 : star_simple_leftrec_selectors_108 expr_selector | ; expr_selectors : star_simple_leftrec_selectors_108 ; expr_selector : sbang | expr_assignable_selector | misc_arguments | type_type_args ; star_simple_leftrec_selectors_not_dotid_109 : star_simple_leftrec_selectors_not_dotid_109 expr_selector_not_dotid | ; expr_selectors_not_dotid : star_simple_leftrec_selectors_not_dotid_109 ; expr_selector_not_dotid : sbang | misc_arguments | type_type_args | expr_conditional_assignable_selector ; expr_assignable_selector : sdot id_identifier | expr_conditional_assignable_selector ; expr_conditional_assignable_selector : slbra expr_expr srbra | squestiondot id_identifier | squestion slbra expr_expr srbra ; expr_assignment_operator : seq | sstareq | sslasheq | stildeslasheq | spercenteq | spluseq | sminuseq | ambop_lesslesseq | ambop_greatergreatergreatereq | ambop_greatergreatereq | sandeq | scareteq | spipeeq | sqqeq ; expr_super_access : ksuper slbra expr_expr srbra | ksuper sdot id_identifier ; numeric_literal : integer | decimal | hex ; expr_id_list_symbol_literal : shash id_list_dotted expr_selectors_not_dotid ; expr_primary : exprpattern_shared | type_type_args lcur misc_elements rcur | lcur misc_elements rcur | type_type_args slbra misc_elements srbra | slbra misc_elements srbra | knew misc_constructor_desig misc_arguments | kthis | type_inheritable_type sdot knew | slpar expr_expr srpar | ksuper type_type_args misc_arguments | ksuper misc_arguments | kswitch slpar expr_expr srpar lcur opt_optentries_110 rcur | misc_formal_parameter_part misc_function_block_body | record_literal_body ; plusi_switche_cases_112 : plusi_switche_cases_112 scomma switche_case | switche_case ; andinner___111 : plusi_switche_cases_112 misc_optional_comma ; opt_optentries_110 : andinner___111 | ; record_literal_body : slpar srpar | slpar orinner___113 srpar ; andinner___114 : expr_expr scomma ; orinner___113 : andinner___114 | andinner___115 | andinner___116 | andinner___118 ; andinner___115 : label expr_expr misc_optional_comma ; plusi_rls_117 : plusi_rls_117 scomma expr_record_field | expr_record_field ; andinner___116 : expr_expr scomma plusi_rls_117 misc_optional_comma ; plusi_rls_119 : plusi_rls_119 scomma expr_record_field | expr_record_field ; andinner___118 : label expr_expr scomma plusi_rls_119 misc_optional_comma ; opt_label : label | ; switche_case : guarded_pattern ambop_fatarrow expr_expr ; expr_record_field : expr_expr | label expr_expr ; plusi_exprs_120 : plusi_exprs_120 scomma expr_expr | expr_expr ; expr_exprcommalist : plusi_exprs_120 ; plusi_optexprs_121 : plusi_optexprs_121 scomma id_list_optexpr_component | id_list_optexpr_component ; id_list_optexpr : plusi_optexprs_121 ; id_list_optexpr_component : id_identifier seq expr_expr | id_identifier ; plusi_reqeprs_122 : plusi_reqeprs_122 scomma id_list_reqexpr_component | id_list_reqexpr_component ; id_list_reqexpr : plusi_reqeprs_122 ; id_list_reqexpr_component : id_identifier seq expr_expr ; plusi_noexprs_123 : plusi_noexprs_123 scomma id_identifier | id_identifier ; id_list_noexpr : plusi_noexprs_123 ; plusi_dotted_ids_124 : plusi_dotted_ids_124 sdot id_identifier | id_identifier ; id_list_dotted : plusi_dotted_ids_124 ; guarded_pattern : pattern | pattern kwhen expr_expr ; plusi_pat_logical_ands_126 : plusi_pat_logical_ands_126 sandand pattern_relational | pattern_relational ; plusi_pat_logical_ors_125 : plusi_pat_logical_ors_125 spipepipe plusi_pat_logical_ands_126 | plusi_pat_logical_ands_126 ; pattern : plusi_pat_logical_ors_125 ; pattern_relational : id_operator_equality expr_bitwise_or_expr | id_operator_relational expr_bitwise_or_expr | pattern_primary orinner___127 ; andinner___128 : ; orinner___127 : andinner___128 | andinner___129 | andinner___130 | andinner___131 ; andinner___129 : kas type_boundable_type ; andinner___130 : squestion ; andinner___131 : sbang ; pattern_primary : outer_pattern | exprpattern_shared | sminus numeric_literal | expr_id_list_symbol_literal | misc_qualified_name | kconst slpar expr_expr srpar | kfinal type_boundable_type id_identifier | kfinal id_identifier | kvar id_identifier | type_boundable_type id_identifier ; outer_pattern : type_type_args slbra srbra | slbra srbra | type_type_args slbra plusi_listpat_elements_132 misc_optional_comma srbra | slbra plusi_listpat_elements_133 misc_optional_comma srbra | type_type_args lcur rcur | lcur rcur | type_type_args lcur plusi_mappat_elements_134 misc_optional_comma rcur | lcur plusi_mappat_elements_135 misc_optional_comma rcur | type_dynamic_type slpar opt___136 srpar | type_inheritable_type slpar opt___137 srpar | slpar orinner___138 srpar ; plusi_listpat_elements_132 : plusi_listpat_elements_132 scomma list_pattern_element | list_pattern_element ; plusi_listpat_elements_133 : plusi_listpat_elements_133 scomma list_pattern_element | list_pattern_element ; plusi_mappat_elements_134 : plusi_mappat_elements_134 scomma map_pattern_entry | map_pattern_entry ; plusi_mappat_elements_135 : plusi_mappat_elements_135 scomma map_pattern_entry | map_pattern_entry ; opt___136 : patternfields | ; opt___137 : patternfields | ; andinner___139 : ; orinner___138 : andinner___139 | andinner___140 | andinner___141 | andinner___142 | andinner___143 | andinner___144 ; andinner___140 : pattern ; andinner___141 : pattern scomma ; andinner___142 : misc_opt_id scolon pattern misc_optional_comma ; andinner___143 : misc_opt_id scolon pattern scomma patternfields ; andinner___144 : pattern scomma patternfields ; plusi_patternfields_145 : plusi_patternfields_145 scomma patternfield | patternfield ; patternfields : plusi_patternfields_145 misc_optional_comma ; patternfield : misc_opt_id scolon pattern | pattern ; pattern_assignment : outer_pattern seq expr_expr ; exprpattern_shared : shash id_user_definable_operator | shash kvoid | ktrue | kfalse | knull | str_completestrings | id_identifier | kconst misc_constructor_desig misc_arguments | kconst type_type_args lcur misc_elements rcur | kconst lcur misc_elements rcur | kconst type_type_args slbra misc_elements srbra | kconst slbra misc_elements srbra | numeric_literal | kconst record_literal_body ; list_pattern_element : pattern | sdotdotdot | sdotdotdot pattern ; map_pattern_entry : expr_expr scolon pattern | sdotdotdot ; pattern_variable_declaration : kfinal pattern_assignment | kvar pattern_assignment ; skip : ws_many ; plus_wss_146 : plus_wss_146 ws_single | ws_single ; ws_many : plus_wss_146 ; ws_single : ws_blanks | ws_linenondoccomment | ws_blockcomment ; ws_blanks : ws ; ws_linenondoccomment : singlelinenondoccomment ; ws_blockcomment : ws_blockcommentnondoc ; ws_blockcommentnondoc : bcinit ws_blockcommentbody ; star_simple_leftrec_bcinner_147 : star_simple_leftrec_bcinner_147 ws_blockcommentinner | ; ws_blockcommentbody : star_simple_leftrec_bcinner_147 bcend ; ws_blockcommentinner : bcstart ws_blockcommentbody ; %% ```
modulovalue commented 9 months ago

I can not find any other flags

Thank you for your help @kuafuwang