authorgravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2023-09-15 00:49:15+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-09-15 11:34:07-07:00
logaec821c083531a6189b0ae9b6860a1512ea3d692
tree81b911eb3584a36978b303d1e04a581fafd48405
parent88f5315ddfc6eaf3e28433504ec046fb3252db7c

langref: apply grammar changes

This applies the changes to the grammar introduced by the new destructuring syntax, as well as some existing changes which were not copied into the langref.

1 files changed, 35 insertions(+), 15 deletions(-)

doc/langref.html.in+35-15
...@@ -12382,21 +12382,22 @@ ComptimeDecl <- KEYWORD_comptime Block...@@ -12382,21 +12382,22 @@ ComptimeDecl <- KEYWORD_comptime Block
1238212382
12383Decl12383Decl
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? VarDecl12385 / (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE?)? KEYWORD_threadlocal? GlobalVarDecl
12386 / KEYWORD_usingnamespace Expr SEMICOLON12386 / KEYWORD_usingnamespace Expr SEMICOLON
1238712387
12388FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? AddrSpace? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr12388FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? AddrSpace? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr
1238912389
12390VarDecl <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? AddrSpace? LinkSection? (EQUAL Expr)? SEMICOLON12390VarDeclProto <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? AddrSpace? LinkSection?
12391
12392GlobalVarDecl <- VarDeclProto (EQUAL Expr)? SEMICOLON
1239112393
12392ContainerField12394ContainerField
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)?
1239512397
12396# *** Block Level ***12398# *** Block Level ***
12397Statement12399Statement
12398 <- KEYWORD_comptime? VarDecl12400 <- KEYWORD_comptime ComptimeStatement
12399 / KEYWORD_comptime BlockExprStatement
12400 / KEYWORD_nosuspend BlockExprStatement12401 / KEYWORD_nosuspend BlockExprStatement
12401 / KEYWORD_suspend BlockExprStatement12402 / KEYWORD_suspend BlockExprStatement
12402 / KEYWORD_defer BlockExprStatement12403 / KEYWORD_defer BlockExprStatement
...@@ -12404,7 +12405,11 @@ Statement...@@ -12404,7 +12405,11 @@ Statement
12404 / IfStatement12405 / IfStatement
12405 / LabeledStatement12406 / LabeledStatement
12406 / SwitchExpr12407 / SwitchExpr
12407 / AssignExpr SEMICOLON12408 / VarDeclExprStatement
12409
12410ComptimeStatement
12411 <- BlockExpr
12412 / VarDeclExprStatement
1240812413
12409IfStatement12414IfStatement
12410 <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )?12415 <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )?
...@@ -12428,8 +12433,17 @@ BlockExprStatement...@@ -12428,8 +12433,17 @@ BlockExprStatement
1242812433
12429BlockExpr <- BlockLabel? Block12434BlockExpr <- BlockLabel? Block
1243012435
12436# An expression, assignment, or any destructure, as a statement.
12437VarDeclExprStatement
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 ***
12432AssignExpr <- Expr (AssignOp Expr)?12442
12443# An assignment or a destructure whose LHS are all lvalue expressions.
12444AssignExpr <- Expr (AssignOp Expr / (COMMA Expr)+ EQUAL Expr)?
12445
12446SingleAssignExpr <- Expr (AssignOp Expr)?
1243312447
12434Expr <- BoolOrExpr12448Expr <- BoolOrExpr
1243512449
...@@ -12570,7 +12584,7 @@ IfPrefix <- KEYWORD_if LPAREN Expr RPAREN PtrPayload?...@@ -12570,7 +12584,7 @@ IfPrefix <- KEYWORD_if LPAREN Expr RPAREN PtrPayload?
1257012584
12571WhilePrefix <- KEYWORD_while LPAREN Expr RPAREN PtrPayload? WhileContinueExpr?12585WhilePrefix <- KEYWORD_while LPAREN Expr RPAREN PtrPayload? WhileContinueExpr?
1257212586
12573ForPrefix <- KEYWORD_for LPAREN Expr RPAREN PtrIndexPayload12587ForPrefix <- KEYWORD_for LPAREN ForArgumentsList RPAREN PtrListPayload
1257412588
12575# Payloads12589# Payloads
12576Payload <- PIPE IDENTIFIER PIPE12590Payload <- PIPE IDENTIFIER PIPE
...@@ -12579,9 +12593,10 @@ PtrPayload <- PIPE ASTERISK? IDENTIFIER PIPE...@@ -12579,9 +12593,10 @@ PtrPayload <- PIPE ASTERISK? IDENTIFIER PIPE
1257912593
12580PtrIndexPayload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE12594PtrIndexPayload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE
1258112595
12596PtrListPayload <- PIPE ASTERISK? IDENTIFIER (COMMA ASTERISK? IDENTIFIER)* COMMA? PIPE
1258212597
12583# Switch specific12598# Switch specific
12584SwitchProng <- KEYWORD_inline? SwitchCase EQUALRARROW PtrIndexPayload? AssignExpr12599SwitchProng <- KEYWORD_inline? SwitchCase EQUALRARROW PtrIndexPayload? SingleAssignExpr
1258512600
12586SwitchCase12601SwitchCase
12587 <- SwitchItem (COMMA SwitchItem)* COMMA?12602 <- SwitchItem (COMMA SwitchItem)* COMMA?
...@@ -12589,6 +12604,11 @@ SwitchCase...@@ -12589,6 +12604,11 @@ SwitchCase
1258912604
12590SwitchItem <- Expr (DOT3 Expr)?12605SwitchItem <- Expr (DOT3 Expr)?
1259112606
12607# For specific
12608ForArgumentsList <- ForItem (COMMA ForItem)* COMMA?
12609
12610ForItem <- Expr (DOT2 Expr?)?
12611
12592# Operators12612# Operators
12593AssignOp12613AssignOp
12594 <- ASTERISKEQUAL12614 <- ASTERISKEQUAL
...@@ -12799,7 +12819,7 @@ STRINGLITERAL...@@ -12799,7 +12819,7 @@ STRINGLITERAL
12799 / (line_string skip)+12819 / (line_string skip)+
12800IDENTIFIER12820IDENTIFIER
12801 <- !keyword [A-Za-z_] [A-Za-z0-9_]* skip12821 <- !keyword [A-Za-z_] [A-Za-z0-9_]* skip
12802 / "@\"" string_char* "\"" skip12822 / "@" STRINGLITERALSINGLE
12803BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip12823BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip
1280412824
1280512825
...@@ -12895,7 +12915,6 @@ KEYWORD_fn <- 'fn' end_of_word...@@ -12895,7 +12915,6 @@ KEYWORD_fn <- 'fn' end_of_word
12895KEYWORD_for <- 'for' end_of_word12915KEYWORD_for <- 'for' end_of_word
12896KEYWORD_if <- 'if' end_of_word12916KEYWORD_if <- 'if' end_of_word
12897KEYWORD_inline <- 'inline' end_of_word12917KEYWORD_inline <- 'inline' end_of_word
12898KEYWORD_linksection <- 'linksection' end_of_word
12899KEYWORD_noalias <- 'noalias' end_of_word12918KEYWORD_noalias <- 'noalias' end_of_word
12900KEYWORD_nosuspend <- 'nosuspend' end_of_word12919KEYWORD_nosuspend <- 'nosuspend' end_of_word
12901KEYWORD_noinline <- 'noinline' end_of_word12920KEYWORD_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
12906KEYWORD_pub <- 'pub' end_of_word12925KEYWORD_pub <- 'pub' end_of_word
12907KEYWORD_resume <- 'resume' end_of_word12926KEYWORD_resume <- 'resume' end_of_word
12908KEYWORD_return <- 'return' end_of_word12927KEYWORD_return <- 'return' end_of_word
12928KEYWORD_linksection <- 'linksection' end_of_word
12909KEYWORD_struct <- 'struct' end_of_word12929KEYWORD_struct <- 'struct' end_of_word
12910KEYWORD_suspend <- 'suspend' end_of_word12930KEYWORD_suspend <- 'suspend' end_of_word
12911KEYWORD_switch <- 'switch' end_of_word12931KEYWORD_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_defer12945 / KEYWORD_comptime / KEYWORD_const / KEYWORD_continue / KEYWORD_defer
12926 / KEYWORD_else / KEYWORD_enum / KEYWORD_errdefer / KEYWORD_error / KEYWORD_export12946 / KEYWORD_else / KEYWORD_enum / KEYWORD_errdefer / KEYWORD_error / KEYWORD_export
12927 / KEYWORD_extern / KEYWORD_fn / KEYWORD_for / KEYWORD_if12947 / KEYWORD_extern / KEYWORD_fn / KEYWORD_for / KEYWORD_if
12928 / KEYWORD_inline / KEYWORD_linksection / KEYWORD_noalias / KEYWORD_noinline12948 / KEYWORD_inline / KEYWORD_noalias / KEYWORD_nosuspend / KEYWORD_noinline
12929 / KEYWORD_nosuspend / KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse12949 / KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse / KEYWORD_packed
12930 / KEYWORD_packed / KEYWORD_pub / KEYWORD_resume / KEYWORD_return12950 / KEYWORD_pub / KEYWORD_resume / KEYWORD_return / KEYWORD_linksection
12931 / KEYWORD_struct / KEYWORD_suspend / KEYWORD_switch / KEYWORD_test12951 / KEYWORD_struct / KEYWORD_suspend / KEYWORD_switch / KEYWORD_test
12932 / KEYWORD_threadlocal / KEYWORD_try / KEYWORD_union / KEYWORD_unreachable12952 / KEYWORD_threadlocal / KEYWORD_try / KEYWORD_union / KEYWORD_unreachable
12933 / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while12953 / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while