feat(interpreter): add method to stringify values

This commit is contained in:
2026-02-06 16:50:16 +01:00
parent 7049af8f16
commit 058c959792

View File

@@ -169,7 +169,7 @@ class Interpreter(Expr.Visitor[Any], Stmt.Visitor[None]):
def visit_print_stmt(self, stmt: PrintStmt) -> None:
value: Any = self.evaluate(stmt.expression)
print(value)
print(self.stringify(value))
def visit_return_stmt(self, stmt: ReturnStmt) -> None:
value: Any = None
@@ -280,3 +280,17 @@ class Interpreter(Expr.Visitor[Any], Stmt.Visitor[None]):
if isinstance(value, (int, float)):
return
raise PebbleRuntimeError(clause, "For loop clauses must be numbers.")
@staticmethod
def stringify(obj: Any) -> str:
if obj is None:
return "null"
if obj is True:
return "true"
if obj is False:
return "false"
if isinstance(obj, (int, float)):
if obj.is_integer():
obj = int(obj)
return str(obj)
return obj