@@ -217,7 +217,7 @@ enum_list ::= enum_constant (COMMA enum_constant ?)* COMMA?
217217enum_constant ::= CONST_IDENT attributes? [eq_expr_pin]
218218arg_list ::= arg (COMMA arg)* COMMA?
219219named_ident ::= CT_IDENT | HASH_IDENT | IDENT | CT_TYPE_IDENT
220- arg ::= (named_ident COLON (expr | type)) | param_path (EQ (expr | type))? | expr | type | KW_CT_VASPLAT (LBT range_exp RBT)? | ELLIPSIS expr
220+ arg ::= (named_ident COLON (ELLIPSIS? expr | type)) | param_path (EQ (expr | type))? | expr | type | KW_CT_VASPLAT (LBT range_exp RBT)? | ELLIPSIS expr
221221
222222
223223global_decl ::= KW_TLOCAL? optional_type IDENT (global_multi_declaration | global_single_declaration) EOS
@@ -254,9 +254,9 @@ range_exp ::= range_loc? (DOTDOT | COLON) range_loc?
254254range_loc ::= BIT_XOR? expr
255255lambda_decl ::= KW_FN optional_type? fn_parameter_list attributes?
256256optional_type ::= type QUESTION?
257- fn_parameter_list ::= LP parameter_list? RP
258- param_decl ::= parameter [eq_expr_pin]
259- parameter_list ::= param_decl (COMMA param_decl)* { pin(".*")=1 }
257+ fn_parameter_list ::= LP parameter_list? COMMA? RP
258+ param_decl ::= parameter ((EQ ELLIPSIS) | [eq_expr_pin])
259+ parameter_list ::= param_decl (COMMA param_decl)* { pin(".*")=2 }
260260parameter ::= KW_INLINE? type (ELLIPSIS? IDENT attributes? | ELLIPSIS? CT_IDENT | (HASH_IDENT | AMP IDENT) attributes? | attributes?)
261261 | ELLIPSIS | HASH_IDENT attributes?| AMP IDENT attributes? | IDENT ELLIPSIS? attributes?
262262 | CT_IDENT | CT_IDENT ELLIPSIS
@@ -392,7 +392,7 @@ compound_statement ::= LB statement_list* RB { pin(".*")=2 }
392392
393393statement_list ::= statement+
394394
395- unary_op ::= AMP | AND | STAR | PLUS | MINUS | BIT_NOT | BANG | PLUSPLUS | MINUSMINUS | LP type RP { name = "operator" }
395+ unary_op ::= AMP | AND | STAR | PLUS | MINUS | BIT_NOT | BANG | BANGBANG | PLUSPLUS | MINUSMINUS | LP type RP { name = "operator" }
396396mult_bin_op ::= STAR | DIV | MOD { name = "operator" }
397397shift_bin_op ::= SHL | SHR { name = "operator "}
398398bit_bin_op ::= AMP | BIT_XOR | BIT_OR { name = "operator" }
@@ -456,7 +456,7 @@ call_expr ::= expr call_expr_tail {
456456}
457457unary_expr ::= unary_op expr { rightAssociative=true }
458458expr_terminator ::= EOS | RP | RBT | RB | COMMA | COLON
459- ternary_expr ::= expr QUESTION !((BANGBANG | BANG)? expr_terminator) expr COLON expr { rightAssociative=true }
459+ ternary_expr ::= expr ( QUESTION | CT_TERNARY) !((BANGBANG | BANG)? expr_terminator) expr COLON expr { rightAssociative=true }
460460optional_expr ::= expr QUESTION &((BANGBANG | BANG)? expr_terminator)
461461elvis_bin_expr ::= expr ELVIS expr { rightAssociative=true }
462462optelse_bin_expr ::= expr OPTELSE expr { rightAssociative=true }
0 commit comments