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']

使用调试器或向代码中添加更多调试打印语句。