gpt4 book ai didi

c++ - 使用 Flex/Bison 进行语法分析第 2 部分

转载 作者:行者123 更新时间:2023-11-30 03:10:54 25 4
gpt4 key购买 nike

你好,

我需要 Lex/Yacc 编程方面的帮助。我编写了一个编译器,用于对许多语句的输入进行语法分析。现在我有一个特殊的问题。

在输入的情况下,编译器给出正确的输出,使用哪个语句,常量运算符或哪个标签的 jmp instructor,现在我必须这样写,如果现在出现 if 语句,首先是第一个命令(之前the 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 下载文件)一样,只能跳转到结尾。我希望你能理解我的问题。谢谢。

最佳答案

我会通过两阶段输出来做到这一点:第一遍会为每个输出语句生成一个列表,其中跳转目标由标签编码,第二遍,该列表用于生成实际输出.像这样:

通过一个:

Number Label Satatement
10 if(x==0)
20 WAIT 5
30 JMP (A)
40 WAIT 1
50 A END

关于c++ - 使用 Flex/Bison 进行语法分析第 2 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2801318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com