We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.
Methemetics/Interpreter
Jump to navigation
Jump to search
DEBUG = 0
import re
from sys import argv
matchregex=r"(_?\w|[a-zA-Z]{2,}) ?= ?(-?\d+|_?\w|[a-zA-Z]{2,})( ?(!=|>|<|==|-|\+|\*|\/|%) ?(-?\d+|_?\w|[a-zA-Z]{2,}))?;";
try:
input = argv[2]
except:
input =
txt = open(argv[1],'r').read()
_i = '_i'
v = {'_i':0,'_z':0}
x = re.findall(matchregex, txt)
if DEBUG:
print(x)
for i in range(len(x)):
if x[i][2] == :
x[i] = (x[i][0],x[i][1],)
else:
x[i] = (x[i][0],x[i][1],x[i][3],x[i][4])
if DEBUG:
print(x)
while v[_i] < len(x):
try:
v["_p"] = ord(input[v["_z"]])
except IndexError:
v["_p"] = -1
if x[v[_i]][2] == :
match x[v[_i]][0]:
case '_o':
if DEBUG:
print('outputted value:',v[x[v[_i]][1]])
else:
try:
print(chr(v[x[v[_i]][1]]),end=)
except ValueError:
print(chr(0),end=)
except KeyError:
try:
print(chr(int(x[v[_i]][1])),end=)
except ValueError:
print(chr(0),end=)
case _:
match x[v[_i]][1]:
case "_p":
v[x[v[_i]][0]] = v["_p"]
case _:
try:
v[x[v[_i]][0]] = int(x[v[_i]][1])
except ValueError:
v[x[v[_i]][0]] = v[x[v[_i]][1]]
else:
try:
try:
exec(f'v[x[v[_i]][0]] = int(x[v[_i]][1]){x[v[_i]][2]}int(x[v[_i]][3])') # this
except ValueError:
exec(f'v[x[v[_i]][0]] = int(x[v[_i]][1]){x[v[_i]][2]}v[x[v[_i]][3]]') # is
except:
try:
exec(f'v[x[v[_i]][0]] = int(x[v[_i]][3]){x[v[_i]][2]}v[x[v[_i]][1]]') # extremely
except ValueError:
exec(f'v[x[v[_i]][0]] = v[x[v[_i]][1]]{x[v[_i]][2]}v[x[v[_i]][3]]') # cursed
if DEBUG:
print(v) # i guess
if v[_i] < -1:
if DEBUG:
print(v) # i guess
exit()
v[_i] += 1