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 {}...@@ -7804,11 +7804,11 @@ fn readU32Be() u32 {}
7804 {#header_close#}7804 {#header_close#}
78057805
7806 {#header_open|Grammar#}7806 {#header_open|Grammar#}
7807 {#syntax_block|peg|grammar.y#}7807 {#syntax_block|peg|grammar.peg#}
7808Root <- skip container_doc_comment? ContainerMembers eof7808Root <- skip ContainerMembers eof
78097809
7810# *** Top level ***7810# *** Top level ***
7811ContainerMembers <- ContainerDeclaration* (ContainerField COMMA)* (ContainerField / ContainerDeclaration*)7811ContainerMembers <- container_doc_comment? ContainerDeclaration* (ContainerField COMMA)* (ContainerField / ContainerDeclaration*)
78127812
7813ContainerDeclaration <- TestDecl / ComptimeDecl / doc_comment? KEYWORD_pub? Decl7813ContainerDeclaration <- TestDecl / ComptimeDecl / doc_comment? KEYWORD_pub? Decl
78147814
...@@ -7837,7 +7837,6 @@ Statement...@@ -7837,7 +7837,6 @@ Statement
7837 / KEYWORD_errdefer Payload? BlockExprStatement7837 / KEYWORD_errdefer Payload? BlockExprStatement
7838 / IfStatement7838 / IfStatement
7839 / LabeledStatement7839 / LabeledStatement
7840 / SwitchExpr
7841 / VarDeclExprStatement7840 / VarDeclExprStatement
78427841
7843ComptimeStatement7842ComptimeStatement
...@@ -7848,7 +7847,7 @@ IfStatement...@@ -7848,7 +7847,7 @@ IfStatement
7848 <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )?7847 <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )?
7849 / IfPrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement )7848 / IfPrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement )
78507849
7851LabeledStatement <- BlockLabel? (Block / LoopStatement)7850LabeledStatement <- BlockLabel? (Block / LoopStatement / SwitchExpr)
78527851
7853LoopStatement <- KEYWORD_inline? (ForStatement / WhileStatement)7852LoopStatement <- KEYWORD_inline? (ForStatement / WhileStatement)
78547853
...@@ -7902,7 +7901,7 @@ PrimaryExpr...@@ -7902,7 +7901,7 @@ PrimaryExpr
7902 / KEYWORD_break BreakLabel? Expr?7901 / KEYWORD_break BreakLabel? Expr?
7903 / KEYWORD_comptime Expr7902 / KEYWORD_comptime Expr
7904 / KEYWORD_nosuspend Expr7903 / KEYWORD_nosuspend Expr
7905 / KEYWORD_continue BreakLabel?7904 / KEYWORD_continue BreakLabel? Expr?
7906 / KEYWORD_resume Expr7905 / KEYWORD_resume Expr
7907 / KEYWORD_return Expr?7906 / KEYWORD_return Expr?
7908 / BlockLabel? LoopExpr7907 / BlockLabel? LoopExpr
...@@ -7952,7 +7951,6 @@ PrimaryTypeExpr...@@ -7952,7 +7951,6 @@ PrimaryTypeExpr
7952 / KEYWORD_anyframe7951 / KEYWORD_anyframe
7953 / KEYWORD_unreachable7952 / KEYWORD_unreachable
7954 / STRINGLITERAL7953 / STRINGLITERAL
7955 / SwitchExpr
79567954
7957ContainerDecl <- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto7955ContainerDecl <- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto
79587956
...@@ -7965,6 +7963,7 @@ IfTypeExpr <- IfPrefix TypeExpr (KEYWORD_else Payload? TypeExpr)?...@@ -7965,6 +7963,7 @@ IfTypeExpr <- IfPrefix TypeExpr (KEYWORD_else Payload? TypeExpr)?
7965LabeledTypeExpr7963LabeledTypeExpr
7966 <- BlockLabel Block7964 <- BlockLabel Block
7967 / BlockLabel? LoopTypeExpr7965 / BlockLabel? LoopTypeExpr
7966 / BlockLabel? SwitchExpr
79687967
7969LoopTypeExpr <- KEYWORD_inline? (ForTypeExpr / WhileTypeExpr)7968LoopTypeExpr <- KEYWORD_inline? (ForTypeExpr / WhileTypeExpr)
79707969
...@@ -8134,7 +8133,7 @@ PtrTypeStart...@@ -8134,7 +8133,7 @@ PtrTypeStart
8134ArrayTypeStart <- LBRACKET Expr (COLON Expr)? RBRACKET8133ArrayTypeStart <- LBRACKET Expr (COLON Expr)? RBRACKET
81358134
8136# ContainerDecl specific8135# ContainerDecl specific
8137ContainerDeclAuto <- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE8136ContainerDeclAuto <- ContainerDeclType LBRACE ContainerMembers RBRACE
81388137
8139ContainerDeclType8138ContainerDeclType
8140 <- KEYWORD_struct (LPAREN Expr RPAREN)?8139 <- KEYWORD_struct (LPAREN Expr RPAREN)?
...@@ -8154,8 +8153,6 @@ AsmOutputList <- (AsmOutputItem COMMA)* AsmOutputItem?...@@ -8154,8 +8153,6 @@ AsmOutputList <- (AsmOutputItem COMMA)* AsmOutputItem?
81548153
8155AsmInputList <- (AsmInputItem COMMA)* AsmInputItem?8154AsmInputList <- (AsmInputItem COMMA)* AsmInputItem?
81568155
8157StringList <- (STRINGLITERAL COMMA)* STRINGLITERAL?
8158
8159ParamDeclList <- (ParamDecl COMMA)* ParamDecl?8156ParamDeclList <- (ParamDecl COMMA)* ParamDecl?
81608157
8161ExprList <- (Expr COMMA)* Expr?8158ExprList <- (Expr COMMA)* Expr?
...@@ -8202,7 +8199,7 @@ oxC2_oxDF <- [\302-\337]...@@ -8202,7 +8199,7 @@ oxC2_oxDF <- [\302-\337]
8202# [0xF1,0xF3] [0x80,0xBF] [0x80,0xBF] [0x80,0xBF]8199# [0xF1,0xF3] [0x80,0xBF] [0x80,0xBF] [0x80,0xBF]
8203# 0xF4 [0x80,0x8F] [0x80,0xBF] [0x80,0xBF]8200# 0xF4 [0x80,0x8F] [0x80,0xBF] [0x80,0xBF]
82048201
8205mb_utf8_literal <-8202multibyte_utf8 <-
8206 oxF4 ox80_ox8F ox80_oxBF ox80_oxBF8203 oxF4 ox80_ox8F ox80_oxBF ox80_oxBF
8207 / oxF1_oxF3 ox80_oxBF ox80_oxBF ox80_oxBF8204 / oxF1_oxF3 ox80_oxBF ox80_oxBF ox80_oxBF
8208 / oxF0 ox90_0xBF ox80_oxBF ox80_oxBF8205 / oxF0 ox90_0xBF ox80_oxBF ox80_oxBF
...@@ -8212,46 +8209,47 @@ mb_utf8_literal <-...@@ -8212,46 +8209,47 @@ mb_utf8_literal <-
8212 / oxE0 oxA0_oxBF ox80_oxBF8209 / oxE0 oxA0_oxBF ox80_oxBF
8213 / oxC2_oxDF ox80_oxBF8210 / 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
8217char_escape8214char_escape
8218 <- "\\x" hex hex8215 <- "\\x" hex hex
8219 / "\\u{" hex+ "}"8216 / "\\u{" hex+ "}"
8220 / "\\" [nr\\t'"]8217 / "\\" [nr\\t'"]
8221char_char8218char_char
8222 <- mb_utf8_literal8219 <- multibyte_utf8
8223 / char_escape8220 / char_escape
8224 / ascii_char_not_nl_slash_squote8221 / ![\\'\n] non_control_ascii
82258222
8226string_char8223string_char
8227 <- char_escape8224 <- multibyte_utf8
8228 / [^\\"\n]8225 / char_escape
8226 / ![\\"\n] non_control_ascii
82298227
8230container_doc_comment <- ('//!' [^\n]* [ \n]* skip)+8228container_doc_comment <- ('//!' [^\n]* [ \n]* skip)+
8231doc_comment <- ('///' [^\n]* [ \n]* skip)+8229doc_comment <- ('///' [^\n]* [ \n]* skip)+
8232line_comment <- '//' ![!/][^\n]* / '////' [^\n]*8230line_comment <- '//' ![!/][^\n]* / '////' [^\n]*
8233line_string <- ("\\\\" [^\n]* [ \n]*)+8231line_string <- ('\\\\' [^\n]* [ \n]*)+
8234skip <- ([ \n] / line_comment)*8232skip <- ([ \n] / line_comment)*
82358233
8236CHAR_LITERAL <- "'" char_char "'" skip8234CHAR_LITERAL <- ['] char_char ['] skip
8237FLOAT8235FLOAT
8238 <- "0x" hex_int "." hex_int ([pP] [-+]? dec_int)? skip8236 <- '0x' hex_int '.' hex_int ([pP] [-+]? dec_int)? skip
8239 / dec_int "." dec_int ([eE] [-+]? dec_int)? skip8237 / dec_int '.' dec_int ([eE] [-+]? dec_int)? skip
8240 / "0x" hex_int [pP] [-+]? dec_int skip8238 / '0x' hex_int [pP] [-+]? dec_int skip
8241 / dec_int [eE] [-+]? dec_int skip8239 / dec_int [eE] [-+]? dec_int skip
8242INTEGER8240INTEGER
8243 <- "0b" bin_int skip8241 <- '0b' bin_int skip
8244 / "0o" oct_int skip8242 / '0o' oct_int skip
8245 / "0x" hex_int skip8243 / '0x' hex_int skip
8246 / dec_int skip8244 / dec_int skip
8247STRINGLITERALSINGLE <- "\"" string_char* "\"" skip8245STRINGLITERALSINGLE <- ["] string_char* ["] skip
8248STRINGLITERAL8246STRINGLITERAL
8249 <- STRINGLITERALSINGLE8247 <- STRINGLITERALSINGLE
8250 / (line_string skip)+8248 / (line_string skip)+
8251IDENTIFIER8249IDENTIFIER
8252 <- !keyword [A-Za-z_] [A-Za-z0-9_]* skip8250 <- !keyword [A-Za-z_] [A-Za-z0-9_]* skip
8253 / "@" STRINGLITERALSINGLE8251 / '@' STRINGLITERALSINGLE
8254BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip8252BUILTINIDENTIFIER <- '@'[A-Za-z_][A-Za-z0-9_]* skip
82558253
82568254
8257AMPERSAND <- '&' ![=] skip8255AMPERSAND <- '&' ![=] skip
lib/std/zig/Parse.zig+4-4
...@@ -188,7 +188,7 @@ fn failMsg(p: *Parse, msg: Ast.Error) error{ ParseError, OutOfMemory } {...@@ -188,7 +188,7 @@ fn failMsg(p: *Parse, msg: Ast.Error) error{ ParseError, OutOfMemory } {
188 return error.ParseError;188 return error.ParseError;
189}189}
190190
191/// Root <- skip container_doc_comment? ContainerMembers eof191/// Root <- skip ContainerMembers eof
192pub fn parseRoot(p: *Parse) !void {192pub fn parseRoot(p: *Parse) !void {
193 // Root node must be index 0.193 // Root node must be index 0.
194 p.nodes.appendAssumeCapacity(.{194 p.nodes.appendAssumeCapacity(.{
...@@ -227,7 +227,7 @@ pub fn parseZon(p: *Parse) !void {...@@ -227,7 +227,7 @@ pub fn parseZon(p: *Parse) !void {
227 p.nodes.items(.data)[0] = .{ .node = node_index };227 p.nodes.items(.data)[0] = .{ .node = node_index };
228}228}
229229
230/// ContainerMembers <- ContainerDeclaration* (ContainerField COMMA)* (ContainerField / ContainerDeclaration*)230/// ContainerMembers <- container_doc_comment? ContainerDeclaration* (ContainerField COMMA)* (ContainerField / ContainerDeclaration*)
231///231///
232/// ContainerDeclaration <- TestDecl / ComptimeDecl / doc_comment? KEYWORD_pub? Decl232/// ContainerDeclaration <- TestDecl / ComptimeDecl / doc_comment? KEYWORD_pub? Decl
233///233///
...@@ -2423,7 +2423,7 @@ fn parseSuffixExpr(p: *Parse) !?Node.Index {...@@ -2423,7 +2423,7 @@ fn parseSuffixExpr(p: *Parse) !?Node.Index {
2423///2423///
2424/// ContainerDecl <- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto2424/// ContainerDecl <- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto
2425///2425///
2426/// ContainerDeclAuto <- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE2426/// ContainerDeclAuto <- ContainerDeclType LBRACE ContainerMembers RBRACE
2427///2427///
2428/// InitList2428/// InitList
2429/// <- LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE2429/// <- LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE
...@@ -3317,7 +3317,7 @@ fn parseSuffixOp(p: *Parse, lhs: Node.Index) !?Node.Index {...@@ -3317,7 +3317,7 @@ fn parseSuffixOp(p: *Parse, lhs: Node.Index) !?Node.Index {
33173317
3318/// Caller must have already verified the first token.3318/// Caller must have already verified the first token.
3319///3319///
3320/// ContainerDeclAuto <- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE3320/// ContainerDeclAuto <- ContainerDeclType LBRACE ContainerMembers RBRACE
3321///3321///
3322/// ContainerDeclType3322/// ContainerDeclType
3323/// <- KEYWORD_struct (LPAREN Expr RPAREN)?3323/// <- KEYWORD_struct (LPAREN Expr RPAREN)?