@@ -216,7 +216,9 @@ void yyerror(YYLTYPE *yyloc, LFortran::Parser &p, const std::string &msg)
216
216
%type <ast> function_def
217
217
%type <args> parameter_list_opt
218
218
%type <arg> parameter
219
- %type <args> parameter_list_starargs
219
+ %type <fn_arg> parameter_list
220
+ %type <args_> parameter_list_no_posonly
221
+ %type <var_kw> parameter_list_starargs
220
222
%type <vec_arg> defparameter_list
221
223
%type <vec_ast> decorators
222
224
%type <vec_ast> decorators_opt
@@ -577,62 +579,43 @@ defparameter_list
577
579
| parameter { LIST_NEW($$); LIST_ADD($$, $1); }
578
580
| defparameter_list "," TK_TYPE_COMMENT parameter { $$ = $1;
579
581
LIST_ADD($$, $4); ADD_TYPE_COMMENT($1, $3, @$); }
582
+ | defparameter_list "," TK_TYPE_COMMENT {
583
+ $$ = $1; ADD_TYPE_COMMENT($1, $3, @$); }
584
+ ;
585
+
586
+ parameter_list
587
+ : defparameter_list "," "/" comma_opt {
588
+ $$ = PARAMETER_LIST_01($1, nullptr); }
589
+ | defparameter_list "," "/" "," parameter_list_no_posonly {
590
+ $$ = PARAMETER_LIST_01($1, $5); }
591
+ | parameter_list_no_posonly { $$ = PARAMETER_LIST_02($1); }
592
+ ;
593
+
594
+ parameter_list_no_posonly
595
+ : defparameter_list comma_opt { $$ = PARAMETER_LIST_03($1, nullptr); }
596
+ | defparameter_list "," parameter_list_starargs {
597
+ $$ = PARAMETER_LIST_03($1, $3); }
598
+ | parameter_list_starargs { $$ = PARAMETER_LIST_04($1); }
580
599
;
581
600
582
601
parameter_list_starargs
583
- : "*" parameter { $$ = STAR_ARGS_01($2, @$); }
584
- | "*" parameter "," defparameter_list { $$ = STAR_ARGS_02($2, $4, @$); }
585
- | "*" parameter "," defparameter_list "," "**" parameter {
586
- $$ = STAR_ARGS_03($2, $4, $7, @$); }
587
- | "*" parameter "," "**" parameter { $$ = STAR_ARGS_04($2, $5, @$); }
588
- | "**" parameter { $$ = STAR_ARGS_05($2, @$); }
589
-
590
- | defparameter_list "," "*" parameter { $$ = STAR_ARGS_06($1, $4, @$); }
591
- | defparameter_list "," "*" parameter "," defparameter_list {
592
- $$ = STAR_ARGS_07($1, $4, $6, @$); }
593
- | defparameter_list "," "*" parameter "," defparameter_list "," "**" parameter {
594
- $$ = STAR_ARGS_08($1, $4, $6, $9, @$); }
595
- | defparameter_list "," "*" parameter "," "**" parameter {
596
- $$ = STAR_ARGS_09($1, $4, $7, @$); }
597
- | defparameter_list "," "**" parameter { $$ = STAR_ARGS_10($1, $4, @$); }
598
-
599
- | defparameter_list "," "/" { $$ = STAR_ARGS_11($1, @$); }
600
- | defparameter_list "," "/" "," "*" parameter {
601
- $$ = STAR_ARGS_12($1, $6, @$); }
602
- | defparameter_list "," "/" "," "*" parameter "," defparameter_list {
603
- $$ = STAR_ARGS_13($1, $6, $8, @$); }
604
- | defparameter_list "," "/" "," "*" parameter "," defparameter_list
605
- "," "**" parameter { $$ = STAR_ARGS_14($1, $6, $8, $11, @$); }
606
- | defparameter_list "," "/" "," "**" parameter {
607
- $$ = STAR_ARGS_15($1, $6, @$); }
608
- | defparameter_list "," "/" "," "*" parameter "," "**" parameter {
609
- $$ = STAR_ARGS_16($1, $6, $9, @$); }
610
- | defparameter_list "," "/" "," defparameter_list "," "*" parameter {
611
- $$ = STAR_ARGS_17($1, $5, $8, @$); }
612
- | defparameter_list "," "/" "," defparameter_list "," "**" parameter {
613
- $$ = STAR_ARGS_18($1, $5, $8, @$); }
614
- | defparameter_list "," "/" "," defparameter_list "," "*" parameter
615
- "," "**" parameter { $$ = STAR_ARGS_19($1, $5, $8, $11, @$); }
616
- | defparameter_list "," "/" "," defparameter_list "," "*" parameter
617
- "," defparameter_list "," "**" parameter {
618
- $$ = STAR_ARGS_20($1, $5, $8, $10, $13, @$); }
619
- | defparameter_list "," "/" "," "*" "," defparameter_list {
620
- $$ = STAR_ARGS_21($1, $7, @$); }
621
- | defparameter_list "," "/" "," defparameter_list ","
622
- "*" "," defparameter_list { $$ = STAR_ARGS_22($1, $5, $9, @$); }
623
- | defparameter_list "," "*" "," defparameter_list {
624
- $$ = STAR_ARGS_23($1, $5, @$); }
625
- | "*" "," defparameter_list { $$ = STAR_ARGS_24($3, @$); }
602
+ : "*" "," defparameter_list comma_opt { $$ = PARAMETER_LIST_05($3); }
603
+ | "*" "," "**" parameter comma_opt { $$ = PARAMETER_LIST_06($4); }
604
+ | "*" "," defparameter_list "," "**" parameter comma_opt {
605
+ $$ = PARAMETER_LIST_07($3, $6); }
606
+ | "*" parameter comma_opt { $$ = PARAMETER_LIST_08($2); }
607
+ | "*" parameter "," defparameter_list comma_opt {
608
+ $$ = PARAMETER_LIST_09($2, $4); }
609
+ | "*" parameter "," "**" parameter comma_opt {
610
+ $$ = PARAMETER_LIST_10($2, $5); }
611
+ | "*" parameter "," defparameter_list "," "**" parameter comma_opt {
612
+ $$ = PARAMETER_LIST_11($2, $4, $7); }
613
+ | "**" parameter comma_opt { $$ = PARAMETER_LIST_06($2); }
626
614
;
627
615
628
616
parameter_list_opt
629
- : defparameter_list comma_opt { $$ = FUNC_ARG_LIST_01($1, @$); }
630
- | defparameter_list "," TK_TYPE_COMMENT { ADD_TYPE_COMMENT($1, $3, @$);
631
- $$ = FUNC_ARG_LIST_01($1, @$); }
632
- | parameter_list_starargs { $$ = $1; }
633
- | %empty { $$ = FUNC_ARG_LIST_02(@$); }
634
- | defparameter_list "," "/" "," defparameter_list {
635
- $$ = FUNC_ARG_LIST_03($1, $5, @$); }
617
+ : parameter_list { $$ = FUNC_ARGS_01(p.m_a, @$, $1); }
618
+ | %empty { $$ = PARAMETER_LIST_12(@$); }
636
619
;
637
620
638
621
comma_opt
@@ -869,7 +852,7 @@ lambda_id_list
869
852
870
853
lambda_expression
871
854
: KW_LAMBDA ":" expr %prec LAMBDA {
872
- $$ = LAMBDA_01(FUNC_ARG_LIST_02 (@$), $3, @$); }
855
+ $$ = LAMBDA_01(PARAMETER_LIST_12 (@$), $3, @$); }
873
856
| KW_LAMBDA lambda_id_list ":" expr %prec LAMBDA {
874
857
$$ = LAMBDA_01(FUNC_ARG_LIST_01($2, @$), $4, @$); }
875
858
;
0 commit comments