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
80798079 / ArrayTypeStart
80808080
80818081SuffixOp
8082 <- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET
8082 <- LBRACKET Expr (DOT2 Expr? (COLON Expr)?)? RBRACKET
80838083 / DOT IDENTIFIER
80848084 / DOTASTERISK
80858085 / DOTQUESTIONMARK
lib/std/zig/AstSmith.zig+9-7
......@@ -1810,7 +1810,7 @@ fn pegPrefixTypeOp(a: *AstSmith) SourceError!void {
18101810}
18111811
18121812/// SuffixOp
1813/// <- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET
1813/// <- LBRACKET Expr (DOT2 Expr? (COLON Expr)?)? RBRACKET
18141814/// / DOT IDENTIFIER
18151815/// / DOTASTERISK
18161816/// / DOTQUESTIONMARK
......@@ -1820,12 +1820,14 @@ fn pegSuffixOp(a: *AstSmith) SourceError!void {
18201820 try a.pegToken(.l_bracket);
18211821 try a.pegExpr();
18221822
1823 const components = a.smith.value(u2);
1824 if (components >= 1) try a.pegToken(.ellipsis2);
1825 if (components >= 2) try a.pegExpr();
1826 if (components >= 3) {
1827 try a.pegToken(.colon);
1828 try a.pegExpr();
1823 if (a.smith.value(bool)) {
1824 try a.pegToken(.ellipsis2);
1825 if (a.smith.value(bool))
1826 try a.pegExpr();
1827 if (a.smith.value(bool)) {
1828 try a.pegToken(.colon);
1829 try a.pegExpr();
1830 }
18291831 }
18301832
18311833 try a.pegToken(.r_bracket);
lib/std/zig/Parse.zig+1-1
......@@ -3137,7 +3137,7 @@ fn parsePtrModifiers(p: *Parse) !PtrModifiers {
31373137}
31383138
31393139/// SuffixOp
3140/// <- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET
3140/// <- LBRACKET Expr (DOT2 Expr? (COLON Expr)?)? RBRACKET
31413141/// / DOT IDENTIFIER
31423142/// / DOTASTERISK
31433143/// / DOTQUESTIONMARK