Files
beluga/lisp-interpreter/tests/data/json-to-lisp.py
T
Arthur Barraux d8fc7d2d67
Meson Build and Deploy / build (push) Failing after 29s
adding lisp-interpreter
2025-09-24 10:58:09 +02:00

39 lines
981 B
Python

import json
import sys
import itertools
json_data = json.load(sys.stdin)
def lisp_dump(data):
if isinstance(data, int):
return str(data)
elif isinstance(data, float):
return str(data)
elif isinstance(data, str):
escaped_string = data.encode("unicode_escape").decode("utf-8")
return "\"" + escaped_string + "\""
elif isinstance(data, list):
result = "("
for i, item in enumerate(data):
result += lisp_dump(item)
if i + 1 < len(data):
result += " "
result += ")"
return result
elif isinstance(data, dict):
result = "#("
i = 0
for key, item in data.items():
result += "(%s . %s)" % (key, lisp_dump(item))
if i + 1 < len(data):
result += " "
i += 1
result += ")"
return result
else:
print("error")
print(type(data))
print(lisp_dump(json_data))