你好,
我需要 Lex/Yacc 编程方面的帮助。我编写了一个编译器,用于对许多语句的输入进行语法分析。现在我有一个特殊的问题。
在输入的情况下,编译器给出正确的输出,使用哪个语句,常量运算符或 jmp 指导员到哪个标签,现在我必须这样写,如果现在出现 if 语句,首先是第一个命令(在 else 之前) if 的赋值为yes 时必须要跳出,因为else 后面的命令不需要,所以在这个jmp 之后必须跳出第二个命令。我在一个例子中展示它也许你明白我的意思。
输入广告。输出
if(x==0) 10 if(x==0)
Wait 5 20 WAIT 5
else 30 JMP 50
Wait 1 40 WAIT 1
end 50 END
像这样。我有一个想法,也许我可以用一个特殊的 if 语句来做到这一点
IF exp jmp_stmt_end stmt_seq END
当 if 语句在输入中给出时,编译器必须识别语句的结尾,就像我的编译器中的 jmp_stmt 一样(你必须从http://bitbucket.org/matrix/changed-tiny下载文件)才跳转到最后。我希望你能理解我的问题。谢谢。