| ... | @@ -12382,21 +12382,22 @@ ComptimeDecl <- KEYWORD_comptime Block | ... | @@ -12382,21 +12382,22 @@ ComptimeDecl <- KEYWORD_comptime Block |
| 12382 | | 12382 | |
| 12383 | Decl | 12383 | Decl |
| 12384 | <- (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE? / (KEYWORD_inline / KEYWORD_noinline))? FnProto (SEMICOLON / Block) | 12384 | <- (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE? / (KEYWORD_inline / KEYWORD_noinline))? FnProto (SEMICOLON / Block) |
| 12385 | / (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE?)? KEYWORD_threadlocal? VarDecl | 12385 | / (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE?)? KEYWORD_threadlocal? GlobalVarDecl |
| 12386 | / KEYWORD_usingnamespace Expr SEMICOLON | 12386 | / KEYWORD_usingnamespace Expr SEMICOLON |
| 12387 | | 12387 | |
| 12388 | FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? AddrSpace? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr | 12388 | FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? AddrSpace? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr |
| 12389 | | 12389 | |
| 12390 | VarDecl <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? AddrSpace? LinkSection? (EQUAL Expr)? SEMICOLON | 12390 | VarDeclProto <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? AddrSpace? LinkSection? |
| | 12391 | |
| | 12392 | GlobalVarDecl <- VarDeclProto (EQUAL Expr)? SEMICOLON |
| 12391 | | 12393 | |
| 12392 | ContainerField | 12394 | ContainerField |
| 12393 | <- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON TypeExpr)? ByteAlign? (EQUAL Expr)? | 12395 | <- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON TypeExpr)? ByteAlign? (EQUAL Expr)? |
| 12394 | / doc_comment? KEYWORD_comptime? (IDENTIFIER COLON)? !KEYWORD_fn TypeExpr ByteAlign? (EQUAL Expr)? | 12396 | / doc_comment? KEYWORD_comptime? (IDENTIFIER COLON)? !KEYWORD_fn TypeExpr ByteAlign? (EQUAL Expr)? |
| 12395 | | 12397 | |
| 12396 | # *** Block Level *** | 12398 | # *** Block Level *** |
| 12397 | Statement | 12399 | Statement |
| 12398 | <- KEYWORD_comptime? VarDecl | 12400 | <- KEYWORD_comptime ComptimeStatement |
| 12399 | / KEYWORD_comptime BlockExprStatement | | |
| 12400 | / KEYWORD_nosuspend BlockExprStatement | 12401 | / KEYWORD_nosuspend BlockExprStatement |
| 12401 | / KEYWORD_suspend BlockExprStatement | 12402 | / KEYWORD_suspend BlockExprStatement |
| 12402 | / KEYWORD_defer BlockExprStatement | 12403 | / KEYWORD_defer BlockExprStatement |
| ... | @@ -12404,7 +12405,11 @@ Statement | ... | @@ -12404,7 +12405,11 @@ Statement |
| 12404 | / IfStatement | 12405 | / IfStatement |
| 12405 | / LabeledStatement | 12406 | / LabeledStatement |
| 12406 | / SwitchExpr | 12407 | / SwitchExpr |
| 12407 | / AssignExpr SEMICOLON | 12408 | / VarDeclExprStatement |
| | 12409 | |
| | 12410 | ComptimeStatement |
| | 12411 | <- BlockExpr |
| | 12412 | / VarDeclExprStatement |
| 12408 | | 12413 | |
| 12409 | IfStatement | 12414 | IfStatement |
| 12410 | <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )? | 12415 | <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )? |
| ... | @@ -12428,8 +12433,17 @@ BlockExprStatement | ... | @@ -12428,8 +12433,17 @@ BlockExprStatement |
| 12428 | | 12433 | |
| 12429 | BlockExpr <- BlockLabel? Block | 12434 | BlockExpr <- BlockLabel? Block |
| 12430 | | 12435 | |
| | 12436 | # An expression, assignment, or any destructure, as a statement. |
| | 12437 | VarDeclExprStatement |
| | 12438 | <- VarDeclProto (COMMA (VarDeclProto / Expr))* EQUAL Expr SEMICOLON |
| | 12439 | / Expr (AssignOp Expr / (COMMA (VarDeclProto / Expr))+ EQUAL Expr)? SEMICOLON |
| | 12440 | |
| 12431 | # *** Expression Level *** | 12441 | # *** Expression Level *** |
| 12432 | AssignExpr <- Expr (AssignOp Expr)? | 12442 | |
| | 12443 | # An assignment or a destructure whose LHS are all lvalue expressions. |
| | 12444 | AssignExpr <- Expr (AssignOp Expr / (COMMA Expr)+ EQUAL Expr)? |
| | 12445 | |
| | 12446 | SingleAssignExpr <- Expr (AssignOp Expr)? |
| 12433 | | 12447 | |
| 12434 | Expr <- BoolOrExpr | 12448 | Expr <- BoolOrExpr |
| 12435 | | 12449 | |
| ... | @@ -12570,7 +12584,7 @@ IfPrefix <- KEYWORD_if LPAREN Expr RPAREN PtrPayload? | ... | @@ -12570,7 +12584,7 @@ IfPrefix <- KEYWORD_if LPAREN Expr RPAREN PtrPayload? |
| 12570 | | 12584 | |
| 12571 | WhilePrefix <- KEYWORD_while LPAREN Expr RPAREN PtrPayload? WhileContinueExpr? | 12585 | WhilePrefix <- KEYWORD_while LPAREN Expr RPAREN PtrPayload? WhileContinueExpr? |
| 12572 | | 12586 | |
| 12573 | ForPrefix <- KEYWORD_for LPAREN Expr RPAREN PtrIndexPayload | 12587 | ForPrefix <- KEYWORD_for LPAREN ForArgumentsList RPAREN PtrListPayload |
| 12574 | | 12588 | |
| 12575 | # Payloads | 12589 | # Payloads |
| 12576 | Payload <- PIPE IDENTIFIER PIPE | 12590 | Payload <- PIPE IDENTIFIER PIPE |
| ... | @@ -12579,9 +12593,10 @@ PtrPayload <- PIPE ASTERISK? IDENTIFIER PIPE | ... | @@ -12579,9 +12593,10 @@ PtrPayload <- PIPE ASTERISK? IDENTIFIER PIPE |
| 12579 | | 12593 | |
| 12580 | PtrIndexPayload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE | 12594 | PtrIndexPayload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE |
| 12581 | | 12595 | |
| | 12596 | PtrListPayload <- PIPE ASTERISK? IDENTIFIER (COMMA ASTERISK? IDENTIFIER)* COMMA? PIPE |
| 12582 | | 12597 | |
| 12583 | # Switch specific | 12598 | # Switch specific |
| 12584 | SwitchProng <- KEYWORD_inline? SwitchCase EQUALRARROW PtrIndexPayload? AssignExpr | 12599 | SwitchProng <- KEYWORD_inline? SwitchCase EQUALRARROW PtrIndexPayload? SingleAssignExpr |
| 12585 | | 12600 | |
| 12586 | SwitchCase | 12601 | SwitchCase |
| 12587 | <- SwitchItem (COMMA SwitchItem)* COMMA? | 12602 | <- SwitchItem (COMMA SwitchItem)* COMMA? |
| ... | @@ -12589,6 +12604,11 @@ SwitchCase | ... | @@ -12589,6 +12604,11 @@ SwitchCase |
| 12589 | | 12604 | |
| 12590 | SwitchItem <- Expr (DOT3 Expr)? | 12605 | SwitchItem <- Expr (DOT3 Expr)? |
| 12591 | | 12606 | |
| | 12607 | # For specific |
| | 12608 | ForArgumentsList <- ForItem (COMMA ForItem)* COMMA? |
| | 12609 | |
| | 12610 | ForItem <- Expr (DOT2 Expr?)? |
| | 12611 | |
| 12592 | # Operators | 12612 | # Operators |
| 12593 | AssignOp | 12613 | AssignOp |
| 12594 | <- ASTERISKEQUAL | 12614 | <- ASTERISKEQUAL |
| ... | @@ -12799,7 +12819,7 @@ STRINGLITERAL | ... | @@ -12799,7 +12819,7 @@ STRINGLITERAL |
| 12799 | / (line_string skip)+ | 12819 | / (line_string skip)+ |
| 12800 | IDENTIFIER | 12820 | IDENTIFIER |
| 12801 | <- !keyword [A-Za-z_] [A-Za-z0-9_]* skip | 12821 | <- !keyword [A-Za-z_] [A-Za-z0-9_]* skip |
| 12802 | / "@\"" string_char* "\"" skip | 12822 | / "@" STRINGLITERALSINGLE |
| 12803 | BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip | 12823 | BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip |
| 12804 | | 12824 | |
| 12805 | | 12825 | |
| ... | @@ -12895,7 +12915,6 @@ KEYWORD_fn <- 'fn' end_of_word | ... | @@ -12895,7 +12915,6 @@ KEYWORD_fn <- 'fn' end_of_word |
| 12895 | KEYWORD_for <- 'for' end_of_word | 12915 | KEYWORD_for <- 'for' end_of_word |
| 12896 | KEYWORD_if <- 'if' end_of_word | 12916 | KEYWORD_if <- 'if' end_of_word |
| 12897 | KEYWORD_inline <- 'inline' end_of_word | 12917 | KEYWORD_inline <- 'inline' end_of_word |
| 12898 | KEYWORD_linksection <- 'linksection' end_of_word | | |
| 12899 | KEYWORD_noalias <- 'noalias' end_of_word | 12918 | KEYWORD_noalias <- 'noalias' end_of_word |
| 12900 | KEYWORD_nosuspend <- 'nosuspend' end_of_word | 12919 | KEYWORD_nosuspend <- 'nosuspend' end_of_word |
| 12901 | KEYWORD_noinline <- 'noinline' end_of_word | 12920 | KEYWORD_noinline <- 'noinline' end_of_word |
| ... | @@ -12906,6 +12925,7 @@ KEYWORD_packed <- 'packed' end_of_word | ... | @@ -12906,6 +12925,7 @@ KEYWORD_packed <- 'packed' end_of_word |
| 12906 | KEYWORD_pub <- 'pub' end_of_word | 12925 | KEYWORD_pub <- 'pub' end_of_word |
| 12907 | KEYWORD_resume <- 'resume' end_of_word | 12926 | KEYWORD_resume <- 'resume' end_of_word |
| 12908 | KEYWORD_return <- 'return' end_of_word | 12927 | KEYWORD_return <- 'return' end_of_word |
| | 12928 | KEYWORD_linksection <- 'linksection' end_of_word |
| 12909 | KEYWORD_struct <- 'struct' end_of_word | 12929 | KEYWORD_struct <- 'struct' end_of_word |
| 12910 | KEYWORD_suspend <- 'suspend' end_of_word | 12930 | KEYWORD_suspend <- 'suspend' end_of_word |
| 12911 | KEYWORD_switch <- 'switch' end_of_word | 12931 | KEYWORD_switch <- 'switch' end_of_word |
| ... | @@ -12925,9 +12945,9 @@ keyword <- KEYWORD_addrspace / KEYWORD_align / KEYWORD_allowzero / KEYWORD_and | ... | @@ -12925,9 +12945,9 @@ keyword <- KEYWORD_addrspace / KEYWORD_align / KEYWORD_allowzero / KEYWORD_and |
| 12925 | / KEYWORD_comptime / KEYWORD_const / KEYWORD_continue / KEYWORD_defer | 12945 | / KEYWORD_comptime / KEYWORD_const / KEYWORD_continue / KEYWORD_defer |
| 12926 | / KEYWORD_else / KEYWORD_enum / KEYWORD_errdefer / KEYWORD_error / KEYWORD_export | 12946 | / KEYWORD_else / KEYWORD_enum / KEYWORD_errdefer / KEYWORD_error / KEYWORD_export |
| 12927 | / KEYWORD_extern / KEYWORD_fn / KEYWORD_for / KEYWORD_if | 12947 | / KEYWORD_extern / KEYWORD_fn / KEYWORD_for / KEYWORD_if |
| 12928 | / KEYWORD_inline / KEYWORD_linksection / KEYWORD_noalias / KEYWORD_noinline | 12948 | / KEYWORD_inline / KEYWORD_noalias / KEYWORD_nosuspend / KEYWORD_noinline |
| 12929 | 	 / KEYWORD_nosuspend / KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse | 12949 | / KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse / KEYWORD_packed |
| 12930 | 	 / KEYWORD_packed / KEYWORD_pub / KEYWORD_resume / KEYWORD_return | 12950 | / KEYWORD_pub / KEYWORD_resume / KEYWORD_return / KEYWORD_linksection |
| 12931 | / KEYWORD_struct / KEYWORD_suspend / KEYWORD_switch / KEYWORD_test | 12951 | / KEYWORD_struct / KEYWORD_suspend / KEYWORD_switch / KEYWORD_test |
| 12932 | / KEYWORD_threadlocal / KEYWORD_try / KEYWORD_union / KEYWORD_unreachable | 12952 | / KEYWORD_threadlocal / KEYWORD_try / KEYWORD_union / KEYWORD_unreachable |
| 12933 | / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while | 12953 | / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while |