Привет,
Мне нужна помощь в программировании Lex/Yacc. Я написал компилятор для синтаксического анализа входных данных многих операторов. Теперь у меня особая проблема.
В случае ввода компилятор выдает правильный вывод, какой оператор использует, постоянный оператор или инструктор jmp для какой метки, теперь я должен написать так, если теперь приходит оператор if, сначала первая команда (перед еще) должно быть выдано, когда назначение if да, тогда оно должно перейти в конец, потому что команда после else не нужна, поэтому после этого jmp должна быть выдана вторая команда. Я покажу это на примере, может быть, вы понимаете, что я имею в виду.
Ввести адр. Выход
if(x==0) 10 if(x==0)
Wait 5 20 WAIT 5
else 30 JMP 50
Wait 1 40 WAIT 1
end 50 END
вот так. У меня есть идея, может быть, я могу сделать это с помощью специального оператора if, например
IF exp jmp_stmt_end stmt_seq END
когда во входных данных указан оператор if, компилятор должен распознать конец оператора, как и мой jmp_stmt в моем компиляторе (вы должны загрузить файлы с http://bitbucket.org/matrix/changed-tiny) только для перехода в конец. Надеюсь, вы понимаете мою проблему. Спасибо.