authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-07-30 13:54:34-07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-07-30 13:54:34-07:00
log2dd4cf012080bea60a94d0b694c2b7c77b67602e
tree2e4ec2b230817a6cb9bcb26ed3b1e32d818c63e1
parent47f06ffe0c6b5746004607241d171cdf1f380548
signature Signed by SSH key SHA256:4hHJbtBRU58AYXwjL7fkz2fnQHdiye8x1QpTCQ0sHNw

astgen: add eatWord


1 files changed, 6 insertions(+), 2 deletions(-)

src/astgen.zig+6-2
......@@ -137,6 +137,10 @@ const Parser = struct {
137137 std.debug.assert(std.mem.eql(u8, self.eat(.symbol), needle));
138138 }
139139
140 pub fn eatWord(comptime self: *Parser, comptime needle: string) void {
141 std.debug.assert(std.mem.eql(u8, needle, self.eat(.word)));
142 }
143
140144 pub fn doChildren(comptime self: *Parser) []const Value {
141145 var ret: []const Value = &[_]Value{};
142146
......@@ -168,7 +172,7 @@ const Parser = struct {
168172 var top = true;
169173 while (!self.tryEatSymbol("/")) {
170174 if (self.tryEatSymbol("<")) {
171 std.debug.assert(std.mem.eql(u8, "else", self.eat(.word)));
175 self.eatWord("else");
172176 self.eatSymbol(">");
173177 top = false;
174178 }
......@@ -178,7 +182,7 @@ const Parser = struct {
178182 bottom = bottom ++ &[_]Value{self.doValue()};
179183 }
180184 }
181 std.debug.assert(std.mem.eql(u8, @tagName(name), self.eat(.word)));
185 self.eatWord(@tagName(name));
182186 self.eatSymbol("/");
183187 return Value{ .block = Block{
184188 .name = name,