From 12a2caa02af85f91f862d87ab0b518020751197c Mon Sep 17 00:00:00 2001 From: mryouse Date: Tue, 10 May 2022 04:27:12 +0000 Subject: make the literals print nicely --- runner.py | 3 +-- tokens.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/runner.py b/runner.py index 0d8560e..1023473 100644 --- a/runner.py +++ b/runner.py @@ -12,8 +12,7 @@ def evaluate(items, pop): if nxt is None: return pop elif isinstance(nxt, NebLiteral): - pop = nxt.value - return evaluate(items[1:], pop) + return evaluate(items[1:], nxt) elif isinstance(nxt, NebSymbol): if not nxt.name in STD: raise Exception(f"no such symbol: '{nxt.name}'") diff --git a/tokens.py b/tokens.py index 688fb7f..2d4387e 100644 --- a/tokens.py +++ b/tokens.py @@ -11,6 +11,9 @@ class NebType(Enum): STRING = auto() BOOL = auto() + def __str__(self): + return ":" + self.name.lower() + @dataclass class NebToken: pass @@ -20,6 +23,14 @@ class NebLiteral(NebToken): type_: NebType value: T + def __str__(self): + fixed = str(self.value) + if self.type_ == NebType.BOOL: + fixed = f"#{str(self.value).lower()}" + elif self.type_ == NebType.STRING: + fixed = f'"{self.value}"' + return f"{fixed} <{self.type_}>" + class NebSeparator(NebToken): pass -- cgit v1.2.3