Алло,
Мне нужна помощь в программировании Lex / Yacc. Я написал компилятор для синтаксического анализа для ввода многих операторов. Теперь у меня особая проблема.
В случае ввода, компилятор выдает правильный вывод, какой оператор использует, оператор константы или инструктор jmp, к какой метке, теперь я должен написать так, если теперь приходит оператор if, сначала первая команда (перед else) должно быть выдано, когда присваивание if равно yes, тогда оно должно перейти к концу, потому что команда после 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) только для перехода к концу. надеюсь, вы понимаете мою проблему. спасибо.