gpt4 book ai didi

java - 逻辑表达式和中间代码生成

转载 作者:行者123 更新时间:2023-12-01 15:37:51 24 4
gpt4 key购买 nike

我设法获得了词法分析器、语法检查器和语义,现在我想继续进行中间代码生成。问题是我不知道如何处理逻辑表达式。我读过一些关于 E.true 和 E.false 的内容。这个例子随处可见,但我不明白。

例如,如果我有以下代码

if x>y and x<y or x == 1 then
//super duper code here
x = x+1
else
//super duper wow code here
y = y+1
endif

结果一定是这样的

1: > x y 3
2: jmp _ _ 9
3: < x y 7
4: jmp _ _ 5
5: == x 1 _
6: jmp _ _ 9
7: + 1 x $1
8: = $1 _ x
9: + 1 y $2
10: = $2 _ y

但是在您真正完成 if 语句的解析之前,跳转的标签是不知道的。

所以我必须生成四边形然后对它们进行反向修补。我该如何用这个post的语法来做到这一点? ?

有人可以解释一下它会如何进行吗,因为我真的很困惑。

最佳答案

是的,您应该生成符号/标签的分支目标。如果您的中间语言 (IL) 支持这一点,那么您可能根本不应该使用数字指令位置。 (数字中间指令位置无助于最终代码生成......因为它们不简单地映射到最终指令的地址/偏移量。)

另一个提示是许多构造都涉及顺序执行,其中包括大多数类型的简单表达式。因此,如果 IL 支持这一点,事情就会变得简单;即没有目标标签意味着继续下一条指令。这将简化 IL 序列的代码生成。

关于java - 逻辑表达式和中间代码生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8597786/

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