diff options
| -rw-r--r-- | runner.py | 3 | ||||
| -rw-r--r-- | tokens.py | 11 |
2 files changed, 12 insertions, 2 deletions
@@ -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}'") @@ -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 |
