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
1238212382
1238312383Decl
1238412384 <- (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
1238612386 / KEYWORD_usingnamespace Expr SEMICOLON
1238712387
1238812388FnProto <- 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)? SEMICOLON
12390VarDeclProto <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? AddrSpace? LinkSection?
12391
12392GlobalVarDecl <- VarDeclProto (EQUAL Expr)? SEMICOLON
1239112393
1239212394ContainerField
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)?
1239512397
1239612398# *** Block Level ***
1239712399Statement
12398 <- KEYWORD_comptime? VarDecl
12399 / KEYWORD_comptime BlockExprStatement
12400 <- KEYWORD_comptime ComptimeStatement
1240012401 / KEYWORD_nosuspend BlockExprStatement
1240112402 / KEYWORD_suspend BlockExprStatement
1240212403 / KEYWORD_defer BlockExprStatement
......@@ -12404,7 +12405,11 @@ Statement
1240412405 / IfStatement
1240512406 / LabeledStatement
1240612407 / SwitchExpr
12407 / AssignExpr SEMICOLON
12408 / VarDeclExprStatement
12409
12410ComptimeStatement
12411 <- BlockExpr
12412 / VarDeclExprStatement
1240812413
1240912414IfStatement
1241012415 <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )?
......@@ -12428,8 +12433,17 @@ BlockExprStatement
1242812433
1242912434BlockExpr <- 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
1243112441# *** 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
1243412448Expr <- BoolOrExpr
1243512449
......@@ -12570,7 +12584,7 @@ IfPrefix <- KEYWORD_if LPAREN Expr RPAREN PtrPayload?
1257012584
1257112585WhilePrefix <- KEYWORD_while LPAREN Expr RPAREN PtrPayload? WhileContinueExpr?
1257212586
12573ForPrefix <- KEYWORD_for LPAREN Expr RPAREN PtrIndexPayload
12587ForPrefix <- KEYWORD_for LPAREN ForArgumentsList RPAREN PtrListPayload
1257412588
1257512589# Payloads
1257612590Payload <- PIPE IDENTIFIER PIPE
......@@ -12579,9 +12593,10 @@ PtrPayload <- PIPE ASTERISK? IDENTIFIER PIPE
1257912593
1258012594PtrIndexPayload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE
1258112595
12596PtrListPayload <- PIPE ASTERISK? IDENTIFIER (COMMA ASTERISK? IDENTIFIER)* COMMA? PIPE
1258212597
1258312598# Switch specific
12584SwitchProng <- KEYWORD_inline? SwitchCase EQUALRARROW PtrIndexPayload? AssignExpr
12599SwitchProng <- KEYWORD_inline? SwitchCase EQUALRARROW PtrIndexPayload? SingleAssignExpr
1258512600
1258612601SwitchCase
1258712602 <- SwitchItem (COMMA SwitchItem)* COMMA?
......@@ -12589,6 +12604,11 @@ SwitchCase
1258912604
1259012605SwitchItem <- Expr (DOT3 Expr)?
1259112606
12607# For specific
12608ForArgumentsList <- ForItem (COMMA ForItem)* COMMA?
12609
12610ForItem <- Expr (DOT2 Expr?)?
12611
1259212612# Operators
1259312613AssignOp
1259412614 <- ASTERISKEQUAL
......@@ -12799,7 +12819,7 @@ STRINGLITERAL
1279912819 / (line_string skip)+
1280012820IDENTIFIER
1280112821 <- !keyword [A-Za-z_] [A-Za-z0-9_]* skip
12802 / "@\"" string_char* "\"" skip
12822 / "@" STRINGLITERALSINGLE
1280312823BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip
1280412824
1280512825
......@@ -12895,7 +12915,6 @@ KEYWORD_fn <- 'fn' end_of_word
1289512915KEYWORD_for <- 'for' end_of_word
1289612916KEYWORD_if <- 'if' end_of_word
1289712917KEYWORD_inline <- 'inline' end_of_word
12898KEYWORD_linksection <- 'linksection' end_of_word
1289912918KEYWORD_noalias <- 'noalias' end_of_word
1290012919KEYWORD_nosuspend <- 'nosuspend' end_of_word
1290112920KEYWORD_noinline <- 'noinline' end_of_word
......@@ -12906,6 +12925,7 @@ KEYWORD_packed <- 'packed' end_of_word
1290612925KEYWORD_pub <- 'pub' end_of_word
1290712926KEYWORD_resume <- 'resume' end_of_word
1290812927KEYWORD_return <- 'return' end_of_word
12928KEYWORD_linksection <- 'linksection' end_of_word
1290912929KEYWORD_struct <- 'struct' end_of_word
1291012930KEYWORD_suspend <- 'suspend' end_of_word
1291112931KEYWORD_switch <- 'switch' end_of_word
......@@ -12925,9 +12945,9 @@ keyword <- KEYWORD_addrspace / KEYWORD_align / KEYWORD_allowzero / KEYWORD_and
1292512945 / KEYWORD_comptime / KEYWORD_const / KEYWORD_continue / KEYWORD_defer
1292612946 / KEYWORD_else / KEYWORD_enum / KEYWORD_errdefer / KEYWORD_error / KEYWORD_export
1292712947 / 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
1293112951 / KEYWORD_struct / KEYWORD_suspend / KEYWORD_switch / KEYWORD_test
1293212952 / KEYWORD_threadlocal / KEYWORD_try / KEYWORD_union / KEYWORD_unreachable
1293312953 / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while