为什么我的解析器不能用我的语言打印字符串

why won't my parser print the string in my language

class Lex:
    def run(args, string):
        if args == "print":
            print(str(string))
class Calin:
    string = ""
    running = ""
    def parse(args):
        lexic = Lex
        string = ""
        tok = ""
        state = 0
        for char in args:
            tok += char
            if tok == " ":
                if state == 0:
                    tok = ""
                elif state == 1:
                    tok = " "
            elif tok == "\"":
                if state == 0:
                    state = 1
                elif state == 1:
                    state = 0
            elif state == 1:
                string += char
            elif tok == "print":
                running = "print"
        lexic.run(running, string)

trans = Calin
trans.parse("print \"WOW A STRING\"")

因为您仅在 tok == "\"" 时才制作 state == 1,而这种情况从未发生过(您一直在向其添加 str。)。将其更改为 char 有效:

class Lex:
    def run(args, string):
        if args == "print":
            print(str(string))

class Calin:
    string = ""
    running = ""
    def parse(args):
        lexic = Lex
        string = ""
        tok = ""
        state = 0
        for char in args:
            tok += char
            if tok == " ":
                if state == 0:
                    tok = ""
                elif state == 1:
                    tok = " "
            elif char == "\"": # <<< Change this
                if state == 0:
                    state = 1
                elif state == 1:
                    state = 0
            elif state == 1:
                string += char
            elif tok == "print":
                running = "print"
        lexic.run(running, string)

trans = Calin
trans.parse("print \"WOW A STRING\"")
# WOW A STRING