authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-12-26 16:35:24+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-12-26 16:36:29+02:00
log0b859831ad8a0c9df11e8da11f13739ed2dcf0d5
treece138b381700c44e26d65aa3e0f4ab1c7ebb36ff
parent3535c4b3b67a3c325ff8040477e35b9b1415d7ae

update grammar in langref

Closes #14072

2 files changed, 45 insertions(+), 26 deletions(-)

doc/langref.html.in+41-22
......@@ -12062,24 +12062,24 @@ ContainerMembers <- ContainerDeclarations (ContainerField COMMA)* (ContainerFiel
1206212062
1206312063ContainerDeclarations
1206412064 <- TestDecl ContainerDeclarations
12065 / TopLevelComptime ContainerDeclarations
12066 / doc_comment? KEYWORD_pub? TopLevelDecl ContainerDeclarations
12065 / ComptimeDecl ContainerDeclarations
12066 / doc_comment? KEYWORD_pub? Decl ContainerDeclarations
1206712067 /
1206812068
12069TestDecl <- doc_comment? KEYWORD_test STRINGLITERALSINGLE? Block
12069TestDecl <- KEYWORD_test STRINGLITERALSINGLE? Block
1207012070
12071TopLevelComptime <- doc_comment? KEYWORD_comptime BlockExpr
12071ComptimeDecl <- KEYWORD_comptime Block
1207212072
12073TopLevelDecl
12073Decl
1207412074 <- (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE? / (KEYWORD_inline / KEYWORD_noinline))? FnProto (SEMICOLON / Block)
1207512075 / (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE?)? KEYWORD_threadlocal? VarDecl
1207612076 / KEYWORD_usingnamespace Expr SEMICOLON
1207712077
12078FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr
12078FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? AddrSpace? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr
1207912079
12080VarDecl <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? LinkSection? (EQUAL Expr)? SEMICOLON
12080VarDecl <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? AddrSpace? LinkSection? (EQUAL Expr)? SEMICOLON
1208112081
12082ContainerField <- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON (KEYWORD_anytype / TypeExpr) ByteAlign?)? (EQUAL Expr)?
12082ContainerField <- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON TypeExpr ByteAlign?)? (EQUAL Expr)?
1208312083
1208412084# *** Block Level ***
1208512085Statement
......@@ -12240,6 +12240,8 @@ WhileContinueExpr <- COLON LPAREN AssignExpr RPAREN
1224012240
1224112241LinkSection <- KEYWORD_linksection LPAREN Expr RPAREN
1224212242
12243AddrSpace <- KEYWORD_addrspace LPAREN Expr RPAREN
12244
1224312245# Fn specific
1224412246CallConv <- KEYWORD_callconv LPAREN Expr RPAREN
1224512247
......@@ -12267,7 +12269,7 @@ PtrIndexPayload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE
1226712269
1226812270
1226912271# Switch specific
12270SwitchProng <- SwitchCase EQUALRARROW PtrPayload? AssignExpr
12272SwitchProng <- KEYWORD_inline? SwitchCase EQUALRARROW PtrIndexPayload? AssignExpr
1227112273
1227212274SwitchCase
1227312275 <- SwitchItem (COMMA SwitchItem)* COMMA?
......@@ -12278,11 +12280,15 @@ SwitchItem <- Expr (DOT3 Expr)?
1227812280# Operators
1227912281AssignOp
1228012282 <- ASTERISKEQUAL
12283 / ASTERISKPIPEEQUAL
1228112284 / SLASHEQUAL
1228212285 / PERCENTEQUAL
1228312286 / PLUSEQUAL
12287 / PLUSPIPEEQUAL
1228412288 / MINUSEQUAL
12289 / MINUSPIPEEQUAL
1228512290 / LARROW2EQUAL
12291 / LARROW2PIPEEQUAL
1228612292 / RARROW2EQUAL
1228712293 / AMPERSANDEQUAL
1228812294 / CARETEQUAL
......@@ -12310,6 +12316,7 @@ BitwiseOp
1231012316BitShiftOp
1231112317 <- LARROW2
1231212318 / RARROW2
12319 / LARROW2PIPE
1231312320
1231412321AdditionOp
1231512322 <- PLUS
......@@ -12317,6 +12324,8 @@ AdditionOp
1231712324 / PLUS2
1231812325 / PLUSPERCENT
1231912326 / MINUSPERCENT
12327 / PLUSPIPE
12328 / MINUSPIPE
1232012329
1232112330MultiplyOp
1232212331 <- PIPE2
......@@ -12325,6 +12334,7 @@ MultiplyOp
1232512334 / PERCENT
1232612335 / ASTERISK2
1232712336 / ASTERISKPERCENT
12337 / ASTERISKPIPE
1232812338
1232912339PrefixOp
1233012340 <- EXCLAMATIONMARK
......@@ -12338,8 +12348,8 @@ PrefixOp
1233812348PrefixTypeOp
1233912349 <- QUESTIONMARK
1234012350 / KEYWORD_anyframe MINUSRARROW
12341 / SliceTypeStart (ByteAlign / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*
12342 / PtrTypeStart (KEYWORD_align LPAREN Expr (COLON INTEGER COLON INTEGER)? RPAREN / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*
12351 / SliceTypeStart (ByteAlign / AddrSpace / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*
12352 / PtrTypeStart (AddrSpace / KEYWORD_align LPAREN Expr (COLON INTEGER COLON INTEGER)? RPAREN / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*
1234312353 / ArrayTypeStart
1234412354
1234512355SuffixOp
......@@ -12364,7 +12374,7 @@ ArrayTypeStart <- LBRACKET Expr (COLON Expr)? RBRACKET
1236412374ContainerDeclAuto <- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE
1236512375
1236612376ContainerDeclType
12367 <- KEYWORD_struct
12377 <- KEYWORD_struct (LPAREN Expr RPAREN)?
1236812378 / KEYWORD_opaque
1236912379 / KEYWORD_enum (LPAREN Expr RPAREN)?
1237012380 / KEYWORD_union (LPAREN (KEYWORD_enum (LPAREN Expr RPAREN)? / Expr) RPAREN)?
......@@ -12455,7 +12465,7 @@ string_char
1245512465 / [^\\"\n]
1245612466
1245712467container_doc_comment <- ('//!' [^\n]* [ \n]*)+
12458doc_comment <- ('///' [^\n]* [ \n]*)+
12468doc_comment <- ('///' [^\n]* [ \n]*)+ skip
1245912469line_comment <- '//' ![!/][^\n]* / '////' [^\n]*
1246012470line_string <- ("\\\\" [^\n]* [ \n]*)+
1246112471skip <- ([ \n] / line_comment)*
......@@ -12483,11 +12493,13 @@ BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip
1248312493
1248412494AMPERSAND <- '&' ![=] skip
1248512495AMPERSANDEQUAL <- '&=' skip
12486ASTERISK <- '*' ![*%=] skip
12496ASTERISK <- '*' ![*%=|] skip
1248712497ASTERISK2 <- '**' skip
1248812498ASTERISKEQUAL <- '*=' skip
1248912499ASTERISKPERCENT <- '*%' ![=] skip
1249012500ASTERISKPERCENTEQUAL <- '*%=' skip
12501ASTERISKPIPE <- '*|' ![=] skip
12502ASTERISKPIPEEQUAL <- '*|=' skip
1249112503CARET <- '^' ![=] skip
1249212504CARETEQUAL <- '^=' skip
1249312505COLON <- ':' skip
......@@ -12503,27 +12515,33 @@ EQUALRARROW <- '=>' skip
1250312515EXCLAMATIONMARK <- '!' ![=] skip
1250412516EXCLAMATIONMARKEQUAL <- '!=' skip
1250512517LARROW <- '<' ![<=] skip
12506LARROW2 <- '<<' ![=] skip
12518LARROW2 <- '<<' ![=|] skip
1250712519LARROW2EQUAL <- '<<=' skip
12520LARROW2PIPE <- '<<|' ![=] skip
12521LARROW2PIPEEQUAL <- '<<|=' skip
1250812522LARROWEQUAL <- '<=' skip
1250912523LBRACE <- '{' skip
1251012524LBRACKET <- '[' skip
1251112525LPAREN <- '(' skip
12512MINUS <- '-' ![%=>] skip
12526MINUS <- '-' ![%=>|] skip
1251312527MINUSEQUAL <- '-=' skip
1251412528MINUSPERCENT <- '-%' ![=] skip
1251512529MINUSPERCENTEQUAL <- '-%=' skip
12530MINUSPIPE <- '-|' ![=] skip
12531MINUSPIPEEQUAL <- '-|=' skip
1251612532MINUSRARROW <- '->' skip
1251712533PERCENT <- '%' ![=] skip
1251812534PERCENTEQUAL <- '%=' skip
1251912535PIPE <- '|' ![|=] skip
1252012536PIPE2 <- '||' skip
1252112537PIPEEQUAL <- '|=' skip
12522PLUS <- '+' ![%+=] skip
12538PLUS <- '+' ![%+=|] skip
1252312539PLUS2 <- '++' skip
1252412540PLUSEQUAL <- '+=' skip
1252512541PLUSPERCENT <- '+%' ![=] skip
1252612542PLUSPERCENTEQUAL <- '+%=' skip
12543PLUSPIPE <- '+|' ![=] skip
12544PLUSPIPEEQUAL <- '+|=' skip
1252712545LETTERC <- 'c' skip
1252812546QUESTIONMARK <- '?' skip
1252912547RARROW <- '>' ![>=] skip
......@@ -12539,6 +12557,7 @@ SLASHEQUAL <- '/=' skip
1253912557TILDE <- '~' skip
1254012558
1254112559end_of_word <- ![a-zA-Z0-9_] skip
12560KEYWORD_addrspace <- 'addrspace' end_of_word
1254212561KEYWORD_align <- 'align' end_of_word
1254312562KEYWORD_allowzero <- 'allowzero' end_of_word
1254412563KEYWORD_and <- 'and' end_of_word
......@@ -12588,11 +12607,11 @@ KEYWORD_var <- 'var' end_of_word
1258812607KEYWORD_volatile <- 'volatile' end_of_word
1258912608KEYWORD_while <- 'while' end_of_word
1259012609
12591keyword <- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe
12592 / KEYWORD_anytype / KEYWORD_asm / KEYWORD_async / KEYWORD_await
12593 / KEYWORD_break / KEYWORD_callconv / KEYWORD_catch / KEYWORD_comptime
12594 / KEYWORD_const / KEYWORD_continue / KEYWORD_defer / KEYWORD_else
12595 / KEYWORD_enum / KEYWORD_errdefer / KEYWORD_error / KEYWORD_export
12610keyword <- KEYWORD_addrspace / KEYWORD_align / KEYWORD_allowzero / KEYWORD_and
12611 / KEYWORD_anyframe / KEYWORD_anytype / KEYWORD_asm / KEYWORD_async
12612 / KEYWORD_await / KEYWORD_break / KEYWORD_callconv / KEYWORD_catch
12613 / KEYWORD_comptime / KEYWORD_const / KEYWORD_continue / KEYWORD_defer
12614 / KEYWORD_else / KEYWORD_enum / KEYWORD_errdefer / KEYWORD_error / KEYWORD_export
1259612615 / KEYWORD_extern / KEYWORD_fn / KEYWORD_for / KEYWORD_if
1259712616 / KEYWORD_inline / KEYWORD_noalias / KEYWORD_nosuspend / KEYWORD_noinline
1259812617 / KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse / KEYWORD_packed
lib/std/zig/parse.zig+4-4
......@@ -240,10 +240,10 @@ const Parser = struct {
240240 /// ContainerMembers <- ContainerDeclarations (ContainerField COMMA)* (ContainerField / ContainerDeclarations)
241241 /// ContainerDeclarations
242242 /// <- TestDecl ContainerDeclarations
243 /// / TopLevelComptime ContainerDeclarations
244 /// / KEYWORD_pub? TopLevelDecl ContainerDeclarations
243 /// / ComptimeDecl ContainerDeclarations
244 /// / doc_comment? KEYWORD_pub? Decl ContainerDeclarations
245245 /// /
246 /// TopLevelComptime <- KEYWORD_comptime Block
246 /// ComptimeDecl <- KEYWORD_comptime Block
247247 fn parseContainerMembers(p: *Parser) !Members {
248248 const scratch_top = p.scratch.items.len;
249249 defer p.scratch.shrinkRetainingCapacity(scratch_top);
......@@ -622,7 +622,7 @@ const Parser = struct {
622622 };
623623 }
624624
625 /// TopLevelDecl
625 /// Decl
626626 /// <- (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE? / (KEYWORD_inline / KEYWORD_noinline))? FnProto (SEMICOLON / Block)
627627 /// / (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE?)? KEYWORD_threadlocal? VarDecl
628628 /// / KEYWORD_usingnamespace Expr SEMICOLON