authorgravatar for mail@isaacfreund.comIsaac Freund <mail@isaacfreund.com> 2025-08-21 10:33:48+02:00
committergravatar for mail@isaacfreund.comIsaac Freund <mail@isaacfreund.com> 2025-08-21 17:12:38+02:00
log52de06c3b0720223a8ee2d337152df9e214388f8
tree19b21ede48a8318ef50151dac0b6857f9b39b4b4
parent01b5023868a2881d69e2947c0fd7d9bcf51a1698

langref: sync with zig-spec grammar.peg


2 files changed, 29 insertions(+), 31 deletions(-)

doc/langref.html.in+25-27
......@@ -7804,11 +7804,11 @@ fn readU32Be() u32 {}
78047804 {#header_close#}
78057805
78067806 {#header_open|Grammar#}
7807 {#syntax_block|peg|grammar.y#}
7808Root <- skip container_doc_comment? ContainerMembers eof
7807 {#syntax_block|peg|grammar.peg#}
7808Root <- skip ContainerMembers eof
78097809
78107810# *** Top level ***
7811ContainerMembers <- ContainerDeclaration* (ContainerField COMMA)* (ContainerField / ContainerDeclaration*)
7811ContainerMembers <- container_doc_comment? ContainerDeclaration* (ContainerField COMMA)* (ContainerField / ContainerDeclaration*)
78127812
78137813ContainerDeclaration <- TestDecl / ComptimeDecl / doc_comment? KEYWORD_pub? Decl
78147814
......@@ -7837,7 +7837,6 @@ Statement
78377837 / KEYWORD_errdefer Payload? BlockExprStatement
78387838 / IfStatement
78397839 / LabeledStatement
7840 / SwitchExpr
78417840 / VarDeclExprStatement
78427841
78437842ComptimeStatement
......@@ -7848,7 +7847,7 @@ IfStatement
78487847 <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )?
78497848 / IfPrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement )
78507849
7851LabeledStatement <- BlockLabel? (Block / LoopStatement)
7850LabeledStatement <- BlockLabel? (Block / LoopStatement / SwitchExpr)
78527851
78537852LoopStatement <- KEYWORD_inline? (ForStatement / WhileStatement)
78547853
......@@ -7902,7 +7901,7 @@ PrimaryExpr
79027901 / KEYWORD_break BreakLabel? Expr?
79037902 / KEYWORD_comptime Expr
79047903 / KEYWORD_nosuspend Expr
7905 / KEYWORD_continue BreakLabel?
7904 / KEYWORD_continue BreakLabel? Expr?
79067905 / KEYWORD_resume Expr
79077906 / KEYWORD_return Expr?
79087907 / BlockLabel? LoopExpr
......@@ -7952,7 +7951,6 @@ PrimaryTypeExpr
79527951 / KEYWORD_anyframe
79537952 / KEYWORD_unreachable
79547953 / STRINGLITERAL
7955 / SwitchExpr
79567954
79577955ContainerDecl <- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto
79587956
......@@ -7965,6 +7963,7 @@ IfTypeExpr <- IfPrefix TypeExpr (KEYWORD_else Payload? TypeExpr)?
79657963LabeledTypeExpr
79667964 <- BlockLabel Block
79677965 / BlockLabel? LoopTypeExpr
7966 / BlockLabel? SwitchExpr
79687967
79697968LoopTypeExpr <- KEYWORD_inline? (ForTypeExpr / WhileTypeExpr)
79707969
......@@ -8134,7 +8133,7 @@ PtrTypeStart
81348133ArrayTypeStart <- LBRACKET Expr (COLON Expr)? RBRACKET
81358134
81368135# ContainerDecl specific
8137ContainerDeclAuto <- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE
8136ContainerDeclAuto <- ContainerDeclType LBRACE ContainerMembers RBRACE
81388137
81398138ContainerDeclType
81408139 <- KEYWORD_struct (LPAREN Expr RPAREN)?
......@@ -8154,8 +8153,6 @@ AsmOutputList <- (AsmOutputItem COMMA)* AsmOutputItem?
81548153
81558154AsmInputList <- (AsmInputItem COMMA)* AsmInputItem?
81568155
8157StringList <- (STRINGLITERAL COMMA)* STRINGLITERAL?
8158
81598156ParamDeclList <- (ParamDecl COMMA)* ParamDecl?
81608157
81618158ExprList <- (Expr COMMA)* Expr?
......@@ -8202,7 +8199,7 @@ oxC2_oxDF <- [\302-\337]
82028199# [0xF1,0xF3] [0x80,0xBF] [0x80,0xBF] [0x80,0xBF]
82038200# 0xF4 [0x80,0x8F] [0x80,0xBF] [0x80,0xBF]
82048201
8205mb_utf8_literal <-
8202multibyte_utf8 <-
82068203 oxF4 ox80_ox8F ox80_oxBF ox80_oxBF
82078204 / oxF1_oxF3 ox80_oxBF ox80_oxBF ox80_oxBF
82088205 / oxF0 ox90_0xBF ox80_oxBF ox80_oxBF
......@@ -8212,46 +8209,47 @@ mb_utf8_literal <-
82128209 / oxE0 oxA0_oxBF ox80_oxBF
82138210 / oxC2_oxDF ox80_oxBF
82148211
8215ascii_char_not_nl_slash_squote <- [\000-\011\013-\046\050-\133\135-\177]
8212non_control_ascii <- [\040-\176]
82168213
82178214char_escape
82188215 <- "\\x" hex hex
82198216 / "\\u{" hex+ "}"
82208217 / "\\" [nr\\t'"]
82218218char_char
8222 <- mb_utf8_literal
8219 <- multibyte_utf8
82238220 / char_escape
8224 / ascii_char_not_nl_slash_squote
8221 / ![\\'\n] non_control_ascii
82258222
82268223string_char
8227 <- char_escape
8228 / [^\\"\n]
8224 <- multibyte_utf8
8225 / char_escape
8226 / ![\\"\n] non_control_ascii
82298227
82308228container_doc_comment <- ('//!' [^\n]* [ \n]* skip)+
82318229doc_comment <- ('///' [^\n]* [ \n]* skip)+
82328230line_comment <- '//' ![!/][^\n]* / '////' [^\n]*
8233line_string <- ("\\\\" [^\n]* [ \n]*)+
8231line_string <- ('\\\\' [^\n]* [ \n]*)+
82348232skip <- ([ \n] / line_comment)*
82358233
8236CHAR_LITERAL <- "'" char_char "'" skip
8234CHAR_LITERAL <- ['] char_char ['] skip
82378235FLOAT
8238 <- "0x" hex_int "." hex_int ([pP] [-+]? dec_int)? skip
8239 / dec_int "." dec_int ([eE] [-+]? dec_int)? skip
8240 / "0x" hex_int [pP] [-+]? dec_int skip
8236 <- '0x' hex_int '.' hex_int ([pP] [-+]? dec_int)? skip
8237 / dec_int '.' dec_int ([eE] [-+]? dec_int)? skip
8238 / '0x' hex_int [pP] [-+]? dec_int skip
82418239 / dec_int [eE] [-+]? dec_int skip
82428240INTEGER
8243 <- "0b" bin_int skip
8244 / "0o" oct_int skip
8245 / "0x" hex_int skip
8241 <- '0b' bin_int skip
8242 / '0o' oct_int skip
8243 / '0x' hex_int skip
82468244 / dec_int skip
8247STRINGLITERALSINGLE <- "\"" string_char* "\"" skip
8245STRINGLITERALSINGLE <- ["] string_char* ["] skip
82488246STRINGLITERAL
82498247 <- STRINGLITERALSINGLE
82508248 / (line_string skip)+
82518249IDENTIFIER
82528250 <- !keyword [A-Za-z_] [A-Za-z0-9_]* skip
8253 / "@" STRINGLITERALSINGLE
8254BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip
8251 / '@' STRINGLITERALSINGLE
8252BUILTINIDENTIFIER <- '@'[A-Za-z_][A-Za-z0-9_]* skip
82558253
82568254
82578255AMPERSAND <- '&' ![=] skip
lib/std/zig/Parse.zig+4-4
......@@ -188,7 +188,7 @@ fn failMsg(p: *Parse, msg: Ast.Error) error{ ParseError, OutOfMemory } {
188188 return error.ParseError;
189189}
190190
191/// Root <- skip container_doc_comment? ContainerMembers eof
191/// Root <- skip ContainerMembers eof
192192pub fn parseRoot(p: *Parse) !void {
193193 // Root node must be index 0.
194194 p.nodes.appendAssumeCapacity(.{
......@@ -227,7 +227,7 @@ pub fn parseZon(p: *Parse) !void {
227227 p.nodes.items(.data)[0] = .{ .node = node_index };
228228}
229229
230/// ContainerMembers <- ContainerDeclaration* (ContainerField COMMA)* (ContainerField / ContainerDeclaration*)
230/// ContainerMembers <- container_doc_comment? ContainerDeclaration* (ContainerField COMMA)* (ContainerField / ContainerDeclaration*)
231231///
232232/// ContainerDeclaration <- TestDecl / ComptimeDecl / doc_comment? KEYWORD_pub? Decl
233233///
......@@ -2423,7 +2423,7 @@ fn parseSuffixExpr(p: *Parse) !?Node.Index {
24232423///
24242424/// ContainerDecl <- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto
24252425///
2426/// ContainerDeclAuto <- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE
2426/// ContainerDeclAuto <- ContainerDeclType LBRACE ContainerMembers RBRACE
24272427///
24282428/// InitList
24292429/// <- LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE
......@@ -3317,7 +3317,7 @@ fn parseSuffixOp(p: *Parse, lhs: Node.Index) !?Node.Index {
33173317
33183318/// Caller must have already verified the first token.
33193319///
3320/// ContainerDeclAuto <- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE
3320/// ContainerDeclAuto <- ContainerDeclType LBRACE ContainerMembers RBRACE
33213321///
33223322/// ContainerDeclType
33233323/// <- KEYWORD_struct (LPAREN Expr RPAREN)?