From a7f626b9a6b8110c70fdfaf5b66db73c025b6de1 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 17 Jan 2026 15:32:31 +0900 Subject: refactor: tokenize() takes std.Io.Reader --- src/jq/tokenize.zig | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'src/jq/tokenize.zig') diff --git a/src/jq/tokenize.zig b/src/jq/tokenize.zig index 92f96ca..c4201b5 100644 --- a/src/jq/tokenize.zig +++ b/src/jq/tokenize.zig @@ -25,18 +25,14 @@ pub const Token = union(TokenKind) { } }; -pub fn tokenize(allocator: std.mem.Allocator, query: []const u8) ![]Token { +pub fn tokenize(allocator: std.mem.Allocator, reader: *std.Io.Reader) ![]Token { var tokens = try std.array_list.Aligned(Token, null).initCapacity(allocator, 16); - const len = query.len; - - if (len == 0) { - return error.UnexpectedEnd; - } - - var i: usize = 0; - while (i < len) { - const c = query[i]; + while (true) { + const c = reader.takeByte() catch |err| switch (err) { + error.EndOfStream => break, + error.ReadFailed => return error.ReadFailed, + }; switch (c) { '.' => try tokens.append(allocator, .dot), '[' => try tokens.append(allocator, .bracket_left), @@ -49,7 +45,10 @@ pub fn tokenize(allocator: std.mem.Allocator, query: []const u8) ![]Token { } }, } - i += 1; + } + + if (tokens.items.len == 0) { + return error.UnexpectedEnd; } try tokens.append(allocator, .end); -- cgit v1.3-1-g0d28