summaryrefslogtreecommitdiff
path: root/src/zisp/io/Parser.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/zisp/io/Parser.zig')
-rw-r--r--src/zisp/io/Parser.zig27
1 files changed, 13 insertions, 14 deletions
diff --git a/src/zisp/io/Parser.zig b/src/zisp/io/Parser.zig
index 08bf8ba..df9e238 100644
--- a/src/zisp/io/Parser.zig
+++ b/src/zisp/io/Parser.zig
@@ -78,7 +78,6 @@ const GRAVE = value.rune.pack("GRAVE");
const COMMA = value.rune.pack("COMMA");
const SQUARE = value.rune.pack("SQUARE");
const BRACE = value.rune.pack("BRACE");
-const VOID = value.rune.packForced("");
const LSTAIL = value.sstr.pack(".");
// zig fmt: on
@@ -328,7 +327,7 @@ fn jump(p: *Parser, next: Fn, val: ?Value) void {
}
fn abort(p: *Parser, next: Fn, unread_c: u8) void {
- p.result = VOID;
+ p.result = value.none;
p.unread_char = unread_c;
p.context.next = next;
}
@@ -354,7 +353,7 @@ fn parseUnit(p: *Parser) !void {
},
}
}
- return p.retval(value.eof.eof);
+ return p.retval(value.eof);
}
fn endUnit(p: *Parser) !void {
@@ -381,7 +380,7 @@ fn parseDatum(p: *Parser) !void {
}
fn endFirstDatum(p: *Parser) !void {
- if (p.result.eq(VOID)) {
+ if (p.result.eq(value.none)) {
return p.ret();
}
return parseJoin(p);
@@ -406,7 +405,7 @@ fn parseJoin(p: *Parser) !void {
fn endJoinDatum(p: *Parser) !void {
const prev = p.context.val;
const join = p.context.char;
- if (p.result.eq(VOID)) {
+ if (p.result.eq(value.none)) {
if (join == 0) {
return p.retval(prev);
} else {
@@ -573,7 +572,7 @@ fn parseHashDatum(p: *Parser) !void {
}
fn endHashDatum(p: *Parser) !void {
- if (p.result.eq(VOID)) {
+ if (p.result.eq(value.none)) {
return p.err(.InvalidCharacter, "hash datum");
}
return p.retval(p.cons(HASH, p.result));
@@ -620,7 +619,7 @@ fn parseRuneDatum(p: *Parser) !void {
}
fn endRuneDatum(p: *Parser) !void {
- if (p.result.eq(VOID)) {
+ if (p.result.eq(value.none)) {
p.retval(p.context.val);
}
return p.retval(p.cons(p.context.val, p.result));
@@ -645,7 +644,7 @@ fn parseLabelEnd(p: *Parser, l: Value, next: Fn) !void {
}
fn endLabelDatum(p: *Parser) !void {
- if (p.result.eq(VOID)) {
+ if (p.result.eq(value.none)) {
return p.err(.InvalidCharacter, "label datum");
}
return p.retval(p.cons(LABEL, p.cons(p.context.val, p.result)));
@@ -653,9 +652,9 @@ fn endLabelDatum(p: *Parser) !void {
fn parseList(p: *Parser, open: u8, next: Fn) !void {
const head = switch (open) {
- '(' => value.nil.nil,
- '[' => p.cons(SQUARE, value.nil.nil),
- '{' => p.cons(BRACE, value.nil.nil),
+ '(' => value.nil,
+ '[' => p.cons(SQUARE, value.nil),
+ '{' => p.cons(BRACE, value.nil),
else => unreachable,
};
const close: u8 = switch (open) {
@@ -694,7 +693,7 @@ fn listParserSetup(p: *Parser, head: Value, close: u8, next: Fn) !void {
fn continueList(p: *Parser) !void {
const close = p.context.char;
- if (p.result.eq(VOID)) {
+ if (p.result.eq(value.none)) {
const c = p.getUnread().?;
if (c == close) {
return endList(p);
@@ -733,7 +732,7 @@ fn endList(p: *Parser) !void {
}
fn endImproperList(p: *Parser) !void {
- if (p.result.eq(VOID)) {
+ if (p.result.eq(value.none)) {
return p.err(.InvalidCharacter, "list tail");
}
p.context.val = lib.list.reverseWithTail(p.context.val, p.result);
@@ -772,7 +771,7 @@ fn parseQuoteExpr(p: *Parser, c1: u8, next: Fn) !void {
}
fn endQuoteExpr(p: *Parser) !void {
- if (p.result.eq(VOID)) {
+ if (p.result.eq(value.none)) {
return p.err(.InvalidCharacter, "quote expression datum");
}
return p.retval(p.cons(p.context.val, p.result));