私はレクサー、構文チェッカー、セマンティクスを手に入れることができました。今は中間コード生成に移りたいと思います。問題は、論理式をどのように処理するのか分からないことです。私は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
@AusCBloke fixed – Takatakas