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.
This commit is contained in:
mlugg 2023-09-15 00:49:15 +01:00 committed by Andrew Kelley
parent 88f5315ddf
commit aec821c083

View file

@ -12382,21 +12382,22 @@ ComptimeDecl <- KEYWORD_comptime Block
Decl Decl
<- (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE? / (KEYWORD_inline / KEYWORD_noinline))? FnProto (SEMICOLON / Block) <- (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE? / (KEYWORD_inline / KEYWORD_noinline))? FnProto (SEMICOLON / Block)
/ (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE?)? KEYWORD_threadlocal? VarDecl / (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE?)? KEYWORD_threadlocal? GlobalVarDecl
/ KEYWORD_usingnamespace Expr SEMICOLON / KEYWORD_usingnamespace Expr SEMICOLON
FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? AddrSpace? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? AddrSpace? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr
VarDecl <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? AddrSpace? LinkSection? (EQUAL Expr)? SEMICOLON VarDeclProto <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? AddrSpace? LinkSection?
GlobalVarDecl <- VarDeclProto (EQUAL Expr)? SEMICOLON
ContainerField ContainerField
<- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON TypeExpr)? ByteAlign? (EQUAL Expr)? <- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON TypeExpr)? ByteAlign? (EQUAL Expr)?
/ doc_comment? KEYWORD_comptime? (IDENTIFIER COLON)? !KEYWORD_fn TypeExpr ByteAlign? (EQUAL Expr)? / doc_comment? KEYWORD_comptime? (IDENTIFIER COLON)? !KEYWORD_fn TypeExpr ByteAlign? (EQUAL Expr)?
# *** Block Level *** # *** Block Level ***
Statement Statement
<- KEYWORD_comptime? VarDecl <- KEYWORD_comptime ComptimeStatement
/ KEYWORD_comptime BlockExprStatement
/ KEYWORD_nosuspend BlockExprStatement / KEYWORD_nosuspend BlockExprStatement
/ KEYWORD_suspend BlockExprStatement / KEYWORD_suspend BlockExprStatement
/ KEYWORD_defer BlockExprStatement / KEYWORD_defer BlockExprStatement
@ -12404,7 +12405,11 @@ Statement
/ IfStatement / IfStatement
/ LabeledStatement / LabeledStatement
/ SwitchExpr / SwitchExpr
/ AssignExpr SEMICOLON / VarDeclExprStatement
ComptimeStatement
<- BlockExpr
/ VarDeclExprStatement
IfStatement IfStatement
<- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )? <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )?
@ -12428,8 +12433,17 @@ BlockExprStatement
BlockExpr <- BlockLabel? Block BlockExpr <- BlockLabel? Block
# An expression, assignment, or any destructure, as a statement.
VarDeclExprStatement
<- VarDeclProto (COMMA (VarDeclProto / Expr))* EQUAL Expr SEMICOLON
/ Expr (AssignOp Expr / (COMMA (VarDeclProto / Expr))+ EQUAL Expr)? SEMICOLON
# *** Expression Level *** # *** Expression Level ***
AssignExpr <- Expr (AssignOp Expr)?
# An assignment or a destructure whose LHS are all lvalue expressions.
AssignExpr <- Expr (AssignOp Expr / (COMMA Expr)+ EQUAL Expr)?
SingleAssignExpr <- Expr (AssignOp Expr)?
Expr <- BoolOrExpr Expr <- BoolOrExpr
@ -12570,7 +12584,7 @@ IfPrefix <- KEYWORD_if LPAREN Expr RPAREN PtrPayload?
WhilePrefix <- KEYWORD_while LPAREN Expr RPAREN PtrPayload? WhileContinueExpr? WhilePrefix <- KEYWORD_while LPAREN Expr RPAREN PtrPayload? WhileContinueExpr?
ForPrefix <- KEYWORD_for LPAREN Expr RPAREN PtrIndexPayload ForPrefix <- KEYWORD_for LPAREN ForArgumentsList RPAREN PtrListPayload
# Payloads # Payloads
Payload <- PIPE IDENTIFIER PIPE Payload <- PIPE IDENTIFIER PIPE
@ -12579,9 +12593,10 @@ PtrPayload <- PIPE ASTERISK? IDENTIFIER PIPE
PtrIndexPayload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE PtrIndexPayload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE
PtrListPayload <- PIPE ASTERISK? IDENTIFIER (COMMA ASTERISK? IDENTIFIER)* COMMA? PIPE
# Switch specific # Switch specific
SwitchProng <- KEYWORD_inline? SwitchCase EQUALRARROW PtrIndexPayload? AssignExpr SwitchProng <- KEYWORD_inline? SwitchCase EQUALRARROW PtrIndexPayload? SingleAssignExpr
SwitchCase SwitchCase
<- SwitchItem (COMMA SwitchItem)* COMMA? <- SwitchItem (COMMA SwitchItem)* COMMA?
@ -12589,6 +12604,11 @@ SwitchCase
SwitchItem <- Expr (DOT3 Expr)? SwitchItem <- Expr (DOT3 Expr)?
# For specific
ForArgumentsList <- ForItem (COMMA ForItem)* COMMA?
ForItem <- Expr (DOT2 Expr?)?
# Operators # Operators
AssignOp AssignOp
<- ASTERISKEQUAL <- ASTERISKEQUAL
@ -12799,7 +12819,7 @@ STRINGLITERAL
/ (line_string skip)+ / (line_string skip)+
IDENTIFIER IDENTIFIER
<- !keyword [A-Za-z_] [A-Za-z0-9_]* skip <- !keyword [A-Za-z_] [A-Za-z0-9_]* skip
/ "@\"" string_char* "\"" skip / "@" STRINGLITERALSINGLE
BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip
@ -12895,7 +12915,6 @@ KEYWORD_fn <- 'fn' end_of_word
KEYWORD_for <- 'for' end_of_word KEYWORD_for <- 'for' end_of_word
KEYWORD_if <- 'if' end_of_word KEYWORD_if <- 'if' end_of_word
KEYWORD_inline <- 'inline' end_of_word KEYWORD_inline <- 'inline' end_of_word
KEYWORD_linksection <- 'linksection' end_of_word
KEYWORD_noalias <- 'noalias' end_of_word KEYWORD_noalias <- 'noalias' end_of_word
KEYWORD_nosuspend <- 'nosuspend' end_of_word KEYWORD_nosuspend <- 'nosuspend' end_of_word
KEYWORD_noinline <- 'noinline' end_of_word KEYWORD_noinline <- 'noinline' end_of_word
@ -12906,6 +12925,7 @@ KEYWORD_packed <- 'packed' end_of_word
KEYWORD_pub <- 'pub' end_of_word KEYWORD_pub <- 'pub' end_of_word
KEYWORD_resume <- 'resume' end_of_word KEYWORD_resume <- 'resume' end_of_word
KEYWORD_return <- 'return' end_of_word KEYWORD_return <- 'return' end_of_word
KEYWORD_linksection <- 'linksection' end_of_word
KEYWORD_struct <- 'struct' end_of_word KEYWORD_struct <- 'struct' end_of_word
KEYWORD_suspend <- 'suspend' end_of_word KEYWORD_suspend <- 'suspend' end_of_word
KEYWORD_switch <- 'switch' end_of_word KEYWORD_switch <- 'switch' end_of_word
@ -12925,9 +12945,9 @@ keyword <- KEYWORD_addrspace / KEYWORD_align / KEYWORD_allowzero / KEYWORD_and
/ KEYWORD_comptime / KEYWORD_const / KEYWORD_continue / KEYWORD_defer / KEYWORD_comptime / KEYWORD_const / KEYWORD_continue / KEYWORD_defer
/ KEYWORD_else / KEYWORD_enum / KEYWORD_errdefer / KEYWORD_error / KEYWORD_export / KEYWORD_else / KEYWORD_enum / KEYWORD_errdefer / KEYWORD_error / KEYWORD_export
/ KEYWORD_extern / KEYWORD_fn / KEYWORD_for / KEYWORD_if / KEYWORD_extern / KEYWORD_fn / KEYWORD_for / KEYWORD_if
/ KEYWORD_inline / KEYWORD_linksection / KEYWORD_noalias / KEYWORD_noinline / KEYWORD_inline / KEYWORD_noalias / KEYWORD_nosuspend / KEYWORD_noinline
/ KEYWORD_nosuspend / KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse / KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse / KEYWORD_packed
/ KEYWORD_packed / KEYWORD_pub / KEYWORD_resume / KEYWORD_return / KEYWORD_pub / KEYWORD_resume / KEYWORD_return / KEYWORD_linksection
/ KEYWORD_struct / KEYWORD_suspend / KEYWORD_switch / KEYWORD_test / KEYWORD_struct / KEYWORD_suspend / KEYWORD_switch / KEYWORD_test
/ KEYWORD_threadlocal / KEYWORD_try / KEYWORD_union / KEYWORD_unreachable / KEYWORD_threadlocal / KEYWORD_try / KEYWORD_union / KEYWORD_unreachable
/ KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while