【发布时间】:2012-01-25 17:38:36
【问题描述】:
我设法获得了词法分析器、语法检查器和语义,现在我想继续生成中间代码。问题是我不知道如何处理逻辑表达式。我读了一些关于 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的语法怎么办?
谁能解释一下它会怎样,因为我真的很困惑。
【问题讨论】:
-
这个问题也应该加作业标签吗?
标签: java compiler-construction intermediate-language