diff options
Diffstat (limited to 'src/zisp/io')
| -rw-r--r-- | src/zisp/io/Parser.zig | 27 | ||||
| -rw-r--r-- | src/zisp/io/unparser.zig | 7 |
2 files changed, 17 insertions, 17 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)); diff --git a/src/zisp/io/unparser.zig b/src/zisp/io/unparser.zig index d703182..e72f130 100644 --- a/src/zisp/io/unparser.zig +++ b/src/zisp/io/unparser.zig @@ -80,8 +80,9 @@ fn unparseMisc(w: anytype, v: Value) !void { .f => w.writeAll("#f"), .t => w.writeAll("#t"), .nil => w.writeAll("()"), - .eof => w.writeAll("#eof"), - .undef => w.writeAll("#undef"), + .eof => w.writeAll("#EOF"), + .none => w.writeAll("#NONE"), + .undef => w.writeAll("#UNDEF"), }; } @@ -93,7 +94,7 @@ fn unparsePair(w: anytype, p: *[2]Value) !void { try w.writeByte(' '); try unparse(w, value.pair.car(cdr)); } - if (!value.nil.check(cdr)) { + if (!value.nil.eq(cdr)) { try w.writeByte(' '); try w.writeByte('.'); try w.writeByte(' '); |
