authorgravatar for cnx@loang.netNguyễn Gia Phong <cnx@loang.net> 2026-05-28 13:53:43+09:00
committergravatar for mail@isaacfreund.comIsaac Freund <mail@isaacfreund.com> 2026-06-10 15:15:49+02:00
log028028ede3df4537223a2d10b2648e16f48a8826
tree59beb4e36bfa21ac9f242ac1b670c37a84ac55df
parent68bed7b46102c02e23bc833c3eb0fdd6749230d0

langref: grammar: remove redundant optional match

std.zig.AstSmith.pegSuffixOp is also fixed to match the grammar.

3 files changed, 11 insertions(+), 9 deletions(-)

doc/langref.html.in+1-1
...@@ -8079,7 +8079,7 @@ PrefixTypeOp...@@ -8079,7 +8079,7 @@ PrefixTypeOp
8079 / ArrayTypeStart8079 / ArrayTypeStart
80808080
8081SuffixOp8081SuffixOp
8082 <- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET8082 <- LBRACKET Expr (DOT2 Expr? (COLON Expr)?)? RBRACKET
8083 / DOT IDENTIFIER8083 / DOT IDENTIFIER
8084 / DOTASTERISK8084 / DOTASTERISK
8085 / DOTQUESTIONMARK8085 / DOTQUESTIONMARK
lib/std/zig/AstSmith.zig+9-7
...@@ -1810,7 +1810,7 @@ fn pegPrefixTypeOp(a: *AstSmith) SourceError!void {...@@ -1810,7 +1810,7 @@ fn pegPrefixTypeOp(a: *AstSmith) SourceError!void {
1810}1810}
18111811
1812/// SuffixOp1812/// SuffixOp
1813/// <- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET1813/// <- LBRACKET Expr (DOT2 Expr? (COLON Expr)?)? RBRACKET
1814/// / DOT IDENTIFIER1814/// / DOT IDENTIFIER
1815/// / DOTASTERISK1815/// / DOTASTERISK
1816/// / DOTQUESTIONMARK1816/// / DOTQUESTIONMARK
...@@ -1820,12 +1820,14 @@ fn pegSuffixOp(a: *AstSmith) SourceError!void {...@@ -1820,12 +1820,14 @@ fn pegSuffixOp(a: *AstSmith) SourceError!void {
1820 try a.pegToken(.l_bracket);1820 try a.pegToken(.l_bracket);
1821 try a.pegExpr();1821 try a.pegExpr();
18221822
1823 const components = a.smith.value(u2);1823 if (a.smith.value(bool)) {
1824 if (components >= 1) try a.pegToken(.ellipsis2);1824 try a.pegToken(.ellipsis2);
1825 if (components >= 2) try a.pegExpr();1825 if (a.smith.value(bool))
1826 if (components >= 3) {1826 try a.pegExpr();
1827 try a.pegToken(.colon);1827 if (a.smith.value(bool)) {
1828 try a.pegExpr();1828 try a.pegToken(.colon);
1829 try a.pegExpr();
1830 }
1829 }1831 }
18301832
1831 try a.pegToken(.r_bracket);1833 try a.pegToken(.r_bracket);
lib/std/zig/Parse.zig+1-1
...@@ -3137,7 +3137,7 @@ fn parsePtrModifiers(p: *Parse) !PtrModifiers {...@@ -3137,7 +3137,7 @@ fn parsePtrModifiers(p: *Parse) !PtrModifiers {
3137}3137}
31383138
3139/// SuffixOp3139/// SuffixOp
3140/// <- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET3140/// <- LBRACKET Expr (DOT2 Expr? (COLON Expr)?)? RBRACKET
3141/// / DOT IDENTIFIER3141/// / DOT IDENTIFIER
3142/// / DOTASTERISK3142/// / DOTASTERISK
3143/// / DOTQUESTIONMARK3143/// / DOTQUESTIONMARK