diff --git a/lib.py b/lib.py index 8a6685b..f7fbfa2 100644 --- a/lib.py +++ b/lib.py @@ -68,7 +68,7 @@ def execute(program): elif ctx[0] == _ident("miracle"): return _box(getattr(eval(_destr(subs[1])), _destr(subs[2]))(*[(i if type(i) == type([]) else i[1]) for i in _fixarr(subs[3])])) elif ctx[0] == _ident("r"): - return ("string", open(_destr(subs[1]), "r").read(subs[2][1])) + return ("string", open(_destr(subs[1]), "r").read(int(subs[2][1]))) elif ctx[0] == _ident("w"): open(_destr(subs[1]), "w").write(_destr(subs[2])) return subs[2] @@ -94,6 +94,13 @@ def execute(program): elif ctx[0] == _ident("<"): return ("number", 1.0 if subs[1][1] < subs[2][1] else 0.0) elif ctx[0] == _ident("conv"): + if subs[1][1] == "number": + return (subs[1][1], float(subs[2][1])) + elif subs[1][1] == "string": + return (subs[1][1], str(subs[2][1] if not isinstance(subs[2], list) else subs[2])) + elif subs[1][1] == "identifier": + return (subs[1][1], str(subs[2][1])) + return (subs[1][1], float(subs[2][1]) if subs[1][1] == "number" else str(subs[2][1])) elif ctx[0] == _ident("all"): ret = _execute(subs[1], lids)