Token -> ControlToken

This commit is contained in:
jaina heartles 2022-11-18 02:05:13 -08:00
parent 1340862c28
commit 802e6402bf
1 changed files with 15 additions and 15 deletions

View File

@ -15,7 +15,7 @@ pub fn main() !void {
pub fn execute(writer: anytype, comptime template: []const u8, args: anytype) !void {
@setEvalBranchQuota(@intCast(u32, template.len * 8));
const tmpl = comptime parseTemplate(TokenIter{ .text = template }, .root);
const tmpl = comptime parseTemplate(ControlTokenIter{ .text = template }, .root);
try executeTemplate(writer, tmpl.item, args, .{});
}
@ -123,7 +123,7 @@ const TemplateType = enum {
if_block,
};
fn parseTemplate(comptime tokens: TokenIter, comptime template_type: TemplateType) ParseResult(TokenIter, []const TemplateItem) {
fn parseTemplate(comptime tokens: ControlTokenIter, comptime template_type: TemplateType) ParseResult(ControlTokenIter, []const TemplateItem) {
comptime {
var iter = tokens;
var items: []const TemplateItem = &.{};
@ -177,7 +177,7 @@ fn parseTemplate(comptime tokens: TokenIter, comptime template_type: TemplateTyp
}
}
fn parseExpression(comptime tokens: TokenIter) ParseResult(TokenIter, Expression) {
fn parseExpression(comptime tokens: ControlTokenIter) ParseResult(ControlTokenIter, Expression) {
comptime {
var iter = tokens;
@ -203,7 +203,7 @@ fn parseExpression(comptime tokens: TokenIter) ParseResult(TokenIter, Expression
}
}
fn parseControlBlock(comptime tokens: TokenIter) ParseResult(TokenIter, ControlBlock) {
fn parseControlBlock(comptime tokens: ControlTokenIter) ParseResult(ControlTokenIter, ControlBlock) {
comptime {
var iter = tokens;
var first_token: bool = true;
@ -303,7 +303,7 @@ fn parseControlBlock(comptime tokens: TokenIter) ParseResult(TokenIter, ControlB
}
}
fn skipWhitespace(comptime tokens: TokenIter) TokenIter {
fn skipWhitespace(comptime tokens: ControlTokenIter) ControlTokenIter {
comptime {
var iter = tokens;
while (iter.peek()) |token| switch (token) {
@ -315,7 +315,7 @@ fn skipWhitespace(comptime tokens: TokenIter) TokenIter {
}
}
fn endControlBlock(comptime tokens: TokenIter) TokenIter {
fn endControlBlock(comptime tokens: ControlTokenIter) ControlTokenIter {
comptime {
var iter = skipWhitespace(tokens);
@ -325,7 +325,7 @@ fn endControlBlock(comptime tokens: TokenIter) TokenIter {
}
}
fn parseForLoop(comptime tokens: TokenIter) ParseResult(TokenIter, ForLoop) {
fn parseForLoop(comptime tokens: ControlTokenIter) ParseResult(ControlTokenIter, ForLoop) {
comptime {
const iterable = parseExpression(tokens);
var iter = iterable.new_iter;
@ -360,7 +360,7 @@ fn parseForLoop(comptime tokens: TokenIter) ParseResult(TokenIter, ForLoop) {
}
}
fn parseIfStatement(comptime tokens: TokenIter) ParseResult(TokenIter, IfStatement) {
fn parseIfStatement(comptime tokens: ControlTokenIter) ParseResult(ControlTokenIter, IfStatement) {
comptime {
const condition = parseExpression(tokens);
var iter = endControlBlock(condition.new_iter);
@ -371,7 +371,7 @@ fn parseIfStatement(comptime tokens: TokenIter) ParseResult(TokenIter, IfStateme
}
}
fn parseDeref(comptime tokens: TokenIter) ParseResult(TokenIter, []const []const u8) {
fn parseDeref(comptime tokens: ControlTokenIter) ParseResult(ControlTokenIter, []const []const u8) {
comptime {
var iter = tokens;
var fields: []const []const u8 = &.{};
@ -450,7 +450,7 @@ const EndKeyword = enum {
@"if",
};
const Token = union(enum) {
const ControlToken = union(enum) {
text: []const u8,
open_bracket: void,
close_bracket: void,
@ -463,14 +463,14 @@ const Token = union(enum) {
equals: void,
};
const TokenIter = struct {
const ControlTokenIter = struct {
start: usize = 0,
text: []const u8,
peeked_token: ?Token = null,
peeked_token: ?ControlToken = null,
row: usize = 0,
fn next(self: *TokenIter) ?Token {
fn next(self: *ControlTokenIter) ?ControlToken {
if (self.peeked_token) |token| {
self.peeked_token = null;
return token;
@ -509,13 +509,13 @@ const TokenIter = struct {
}
}
fn peek(self: *TokenIter) ?Token {
fn peek(self: *ControlTokenIter) ?ControlToken {
const token = self.next();
self.peeked_token = token;
return token;
}
fn putBack(self: *TokenIter, token: Token) void {
fn putBack(self: *ControlTokenIter, token: ControlToken) void {
std.debug.assert(self.peeked_token == null);
self.peeked_token = token;
}