Python-仅打印';打印';
我正在尝试制作自己的基本编程语言。我的Python-仅打印';打印';,python,Python,我正在尝试制作自己的基本编程语言。我的smrlang.py文件中有以下代码 from sys import * tokens = [] def open_file(filename): data = open(filename, "r").read() return data def smr(filecontents): tok = "" state = 0 string = "" filecontents = list(fileconten
smrlang.py
文件中有以下代码
from sys import *
tokens = []
def open_file(filename):
data = open(filename, "r").read()
return data
def smr(filecontents):
tok = ""
state = 0
string = ""
filecontents = list(filecontents)
for char in filecontents:
tok += char
if tok == " ":
if state == 0:
tok = ""
else:
tok = " "
elif tok == "PRINT":
tokens.append("PRINT")
tok = ""
elif tok == "\"":
if state == 0:
state = 1
elif state == 1:
print("STRING")
string = ""
state = 0
elif state == 1:
string += tok
print(tokens)
def run():
data = open_file(argv[1])
smr(data)
run()
我的one.smr
文件中有这个:
PRINT "HELLO WORLD"
输出应该类似于
PRINT STRING
,但是当我使用命令python3 smrlang.py one.smr
时,输出就是PRINT
。我正在使用Python 3在头部调试它,我发现了问题:
elif state == 1:
string += tok
您不能在此处重置令牌。它将是aababcadd
而不是abcd
,识别\
将不起作用(因为它将是aababcadd\
)
这也会导致令牌成为一切,并且永远不会打印
尝试将其更改为:
elif state == 1:
string += tok
tok = ""
修复后的输出:
> py -3 temp.py temp.txt
STRING
['PRINT']
使用调试器或向代码中添加更多调试打印语句。