我设法得到词法分析器,语法检查器和语义,现在我想移动中间代码生成。问题是我不知道如何处理逻辑表达式。我读了一些关于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的语法来做到这一点?
有人可以解释它将如何去,因为我真的很困惑。
作业标签也应该添加到这个问题吗? – AusCBloke 2011-12-21 23:46:27
@AusCBloke fixed – Takatakas 2011-12-21 23:48:22