Мне удалось получить lexer, синтаксическую проверку и семантику, и теперь я хочу перейти к созданию промежуточного кода. Проблема в том, что я не знаю, как обращаться с логическими выражениями. Я кое-что прочитал о 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
но этикетки для прыжков не известны, пока вы на самом деле закончить разбор, если заявление ,
Так что я должен сгенерировать квадроциклы, а затем отложить их. Как я могу это сделать с грамматикой этого post?
Может кто-нибудь объяснить, как это пойдет, потому что я действительно смущен.
Должна ли добавляться и домашняя тега к этому вопросу? – AusCBloke
@AusCBloke fixed – Takatakas