| ... | ... | @@ -12382,21 +12382,22 @@ ComptimeDecl <- KEYWORD_comptime Block |
| 12382 | 12382 | |
| 12383 | 12383 | Decl |
| 12384 | 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 | 12386 | / KEYWORD_usingnamespace Expr SEMICOLON |
| 12387 | 12387 | |
| 12388 | 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 | 12394 | ContainerField |
| 12393 | | <- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON TypeExpr)? ByteAlign? (EQUAL Expr)? |
| 12394 | | / doc_comment? KEYWORD_comptime? (IDENTIFIER COLON)? !KEYWORD_fn TypeExpr ByteAlign? (EQUAL Expr)? |
| 12395 | <- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON TypeExpr)? ByteAlign? (EQUAL Expr)? |
| 12396 | / doc_comment? KEYWORD_comptime? (IDENTIFIER COLON)? !KEYWORD_fn TypeExpr ByteAlign? (EQUAL Expr)? |
| 12395 | 12397 | |
| 12396 | 12398 | # *** Block Level *** |
| 12397 | 12399 | Statement |
| 12398 | | <- KEYWORD_comptime? VarDecl |
| 12399 | | / KEYWORD_comptime BlockExprStatement |
| 12400 | <- KEYWORD_comptime ComptimeStatement |
| 12400 | 12401 | / KEYWORD_nosuspend BlockExprStatement |
| 12401 | 12402 | / KEYWORD_suspend BlockExprStatement |
| 12402 | 12403 | / KEYWORD_defer BlockExprStatement |
| ... | ... | @@ -12404,7 +12405,11 @@ Statement |
| 12404 | 12405 | / IfStatement |
| 12405 | 12406 | / LabeledStatement |
| 12406 | 12407 | / SwitchExpr |
| 12407 | | / AssignExpr SEMICOLON |
| 12408 | / VarDeclExprStatement |
| 12409 | |
| 12410 | ComptimeStatement |
| 12411 | <- BlockExpr |
| 12412 | / VarDeclExprStatement |
| 12408 | 12413 | |
| 12409 | 12414 | IfStatement |
| 12410 | 12415 | <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )? |
| ... | ... | @@ -12428,8 +12433,17 @@ BlockExprStatement |
| 12428 | 12433 | |
| 12429 | 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 | 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 | 12448 | Expr <- BoolOrExpr |
| 12435 | 12449 | |
| ... | ... | @@ -12570,7 +12584,7 @@ IfPrefix <- KEYWORD_if LPAREN Expr RPAREN PtrPayload? |
| 12570 | 12584 | |
| 12571 | 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 | 12589 | # Payloads |
| 12576 | 12590 | Payload <- PIPE IDENTIFIER PIPE |
| ... | ... | @@ -12579,9 +12593,10 @@ PtrPayload <- PIPE ASTERISK? IDENTIFIER PIPE |
| 12579 | 12593 | |
| 12580 | 12594 | PtrIndexPayload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE |
| 12581 | 12595 | |
| 12596 | PtrListPayload <- PIPE ASTERISK? IDENTIFIER (COMMA ASTERISK? IDENTIFIER)* COMMA? PIPE |
| 12582 | 12597 | |
| 12583 | 12598 | # Switch specific |
| 12584 | | SwitchProng <- KEYWORD_inline? SwitchCase EQUALRARROW PtrIndexPayload? AssignExpr |
| 12599 | SwitchProng <- KEYWORD_inline? SwitchCase EQUALRARROW PtrIndexPayload? SingleAssignExpr |
| 12585 | 12600 | |
| 12586 | 12601 | SwitchCase |
| 12587 | 12602 | <- SwitchItem (COMMA SwitchItem)* COMMA? |
| ... | ... | @@ -12589,6 +12604,11 @@ SwitchCase |
| 12589 | 12604 | |
| 12590 | 12605 | SwitchItem <- Expr (DOT3 Expr)? |
| 12591 | 12606 | |
| 12607 | # For specific |
| 12608 | ForArgumentsList <- ForItem (COMMA ForItem)* COMMA? |
| 12609 | |
| 12610 | ForItem <- Expr (DOT2 Expr?)? |
| 12611 | |
| 12592 | 12612 | # Operators |
| 12593 | 12613 | AssignOp |
| 12594 | 12614 | <- ASTERISKEQUAL |
| ... | ... | @@ -12799,7 +12819,7 @@ STRINGLITERAL |
| 12799 | 12819 | / (line_string skip)+ |
| 12800 | 12820 | IDENTIFIER |
| 12801 | 12821 | <- !keyword [A-Za-z_] [A-Za-z0-9_]* skip |
| 12802 | | / "@\"" string_char* "\"" skip |
| 12822 | / "@" STRINGLITERALSINGLE |
| 12803 | 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 | 12915 | KEYWORD_for <- 'for' end_of_word |
| 12896 | 12916 | KEYWORD_if <- 'if' end_of_word |
| 12897 | 12917 | KEYWORD_inline <- 'inline' end_of_word |
| 12898 | | KEYWORD_linksection <- 'linksection' end_of_word |
| 12899 | 12918 | KEYWORD_noalias <- 'noalias' end_of_word |
| 12900 | 12919 | KEYWORD_nosuspend <- 'nosuspend' end_of_word |
| 12901 | 12920 | KEYWORD_noinline <- 'noinline' end_of_word |
| ... | ... | @@ -12906,6 +12925,7 @@ KEYWORD_packed <- 'packed' end_of_word |
| 12906 | 12925 | KEYWORD_pub <- 'pub' end_of_word |
| 12907 | 12926 | KEYWORD_resume <- 'resume' end_of_word |
| 12908 | 12927 | KEYWORD_return <- 'return' end_of_word |
| 12928 | KEYWORD_linksection <- 'linksection' end_of_word |
| 12909 | 12929 | KEYWORD_struct <- 'struct' end_of_word |
| 12910 | 12930 | KEYWORD_suspend <- 'suspend' end_of_word |
| 12911 | 12931 | KEYWORD_switch <- 'switch' end_of_word |
| ... | ... | @@ -12925,9 +12945,9 @@ keyword <- KEYWORD_addrspace / KEYWORD_align / KEYWORD_allowzero / KEYWORD_and |
| 12925 | 12945 | / KEYWORD_comptime / KEYWORD_const / KEYWORD_continue / KEYWORD_defer |
| 12926 | 12946 | / KEYWORD_else / KEYWORD_enum / KEYWORD_errdefer / KEYWORD_error / KEYWORD_export |
| 12927 | 12947 | / KEYWORD_extern / KEYWORD_fn / KEYWORD_for / KEYWORD_if |
| 12928 | | / KEYWORD_inline / KEYWORD_linksection / KEYWORD_noalias / KEYWORD_noinline |
| 12929 | | 	 / KEYWORD_nosuspend / KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse |
| 12930 | | 	 / KEYWORD_packed / KEYWORD_pub / KEYWORD_resume / KEYWORD_return |
| 12948 | / KEYWORD_inline / KEYWORD_noalias / KEYWORD_nosuspend / KEYWORD_noinline |
| 12949 | / KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse / KEYWORD_packed |
| 12950 | / KEYWORD_pub / KEYWORD_resume / KEYWORD_return / KEYWORD_linksection |
| 12931 | 12951 | / KEYWORD_struct / KEYWORD_suspend / KEYWORD_switch / KEYWORD_test |
| 12932 | 12952 | / KEYWORD_threadlocal / KEYWORD_try / KEYWORD_union / KEYWORD_unreachable |
| 12933 | 12953 | / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while |