pub const Tokenizer = struct {
buffer: [:0]const u8,
index: usize,
t: type,
pub fn new(buffer: [:0]const u8, comptime t: type) Tokenizer {
return .{
.buffer = buffer,
.index = if (std.mem.startsWith(u8, buffer, "\xEF\xBB\xBF")) 3 else 0,
.t = t,
};
}
const State = enum {
start,
invalid,
identifier,
};
pub fn next(self: *Tokenizer) type {
var result: self.t = .{
.tag = undefined,
.loc = .{
.start = self.index,
.end = undefined,
},
};
Im getting
test
└─ run test
└─ zig test Debug native 1 errors
src/libs/token/root.zig:100:43: error: expected type 'datatok.build()', found 'root.Tokenizer'
var tokenizer: DataTag = Tokenizer.new("frame", DataTag);
~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
src/libs/token/root.zig:13:23: note: struct declared here
pub const Tokenizer = struct {
^~~~~~
src/libs/token/datatok.zig:14:12: note: enum declared here
return @Type(.{ .@"enum" = .{
^~~~~
DataTag is a comptime type combining my shared tags, and the data tags
I'm running the test with this
test "get keyword tokenized" {
var tokenizer: DataTag = Tokenizer.new("frame", DataTag);
try testing.expect(tokenizer.next() == DataTag.keyword_frame);
}