import string from sys import argv file = open(argv[1]).readlines(); bfcode = "" variables = [] varbytes = [] def removeChar(str, char): ans = "" for i in str: if (i != char): ans += i return ans def removeEnd(string, num): ans = "" for i in range(len(string)-1): ans += string[i] return ans def ord2(char): if (len(char) == 1): return ord(char) elif (len(char == 0)): return(0) for i in file: if (i.split(" ")[0] == "create"): if (i[len(i)-1] == "\n"): i = removeEnd(i, 1) bfcode += ">>>>>>>>>>>>[[>>]>>]" bytes = int(removeChar(i.split("*", 1)[1].split("=", 1)[0], " ")) varbytes.append(bytes) a = i.split("=", 1)[1] if (a[0] == " "): a = a.split(" ", 1)[1] # Get type if ((a[0] == "\"") & (a[len(a)-1] == "\"")): type = "string" else: type = "undefined" if (type == "string"): a = a.split("\"", 1)[1] a = removeEnd(a, 1) for j in range(bytes): bfcode += "+++>" if (j < len(a)): bfcode += "+" * ord(a[j]) + ">" else: bfcode += ">" bfcode += "<<[[<<]<<]<<<<<<<<" variables.append(i.split(" ")[1].split("*")[0]) elif (i.split(" ")[0] == "print"): a = i.split(" ", 1)[1] if a[len(a)-1] == "\n": a = removeEnd(a, 1) if (a in variables): bfcode += ">>>>>>>>>>>>" for j in range(variables.index(a)): bfcode += "[>>]>>" bfcode += "[>.>]<<[[<<]<<]<<<<<<<<++++++++++.[-]" else: raise NameError(f"Could not find variable {a}") elif (i.split(" ")[0] == "set"): a = i.split(" ")[1] if a[len(a)-1] == "\n": a = removeEnd(a, 1) if (a in variables): bfcode += ">>>>>>>>>>>>" for j in range(variables.index(a)): bfcode += "[>>]>>" for j in range(varbytes[variables.index(a)]): bfcode += "[-]>[-]>" for j in range(varbytes[variables.index(a)]): bfcode += "<<" # Get type val = i.split("=", 1)[1].split(" ", 1)[1] if (val[len(val)-1] == "\n"): val = removeEnd(val, 1) if (val[0] == "\"") & (val[len(val)-1] == "\""): val = val.split("\"", 1)[1] val = removeEnd(val, 1) type = "string" if (type == "string"): for j in range(varbytes[variables.index(a)]): bfcode += "+++>" if (j >= len(val)): bfcode += ">" else: bfcode += "+" * ord(val[j]) + ">" bfcode += "<<[[<<]<<]<<<<<<<<" else: raise NameError(f"Could not find variable {a}") elif ((i != "\n") & (i != "")): raise ValueError(f"Invalid Command") with open(argv[2], "w") as file: file.write(bfcode)