2010-04-26 5 views
0

Hallo everyone, Может кто-нибудь помочь мне выйти из моей ситуации, я искал инструктора, который реализует инструктор JMP (Jump), как в Assembler. Я узнал, что это может быть связано с функцией goto Flex/Bison, но я не знаю, как это сделать. У кого-нибудь есть идея. Я очень благодарен за вашу помощь. Благодарю.Инструкция JMP в Flex/bison

Вот пример того, как это выглядит. с инструктором JMP он отправляется на лейбл L1.

:L1 
IF FLAG AND X"0001" 
EVT 23; 
ELSE 
WAIT 500 ms; 
JMP L1; 
END IF; 
+1

Не слишком уверен в том, о чем вы говорите, но цикл * while * прекрасно заменит тот бит кода, который у вас там есть. – slugster

+0

Hallo slugster, какой я был, его всесторонний синтаксический анализ, и я хочу, чтобы интерпретатор i build должен распознавать JMP-инструктор, когда я ввожу Input, как наверху, и возвращает мне, что JMP использовался, и он прыгал на этикетку L1. Я создал дерево синтаксиса, где он может распознать оператор while и операторы и более низкие операторы с более низким коэффициентом, теперь мне нужно то же самое для JMP, если вы перейдете к вопросу о том, как мне реализовать ifstatement в flex/bison, вы найдете код. посмотрите, и если у вас есть идея, я буду очень благодарен. – Imran

ответ

1

Чтобы реализовать команду перехода необходимо добавить поддержку Грамма для лейбла

label: ':' NAME { /* code to store the label */ }; 

и некоторые грамматики для разбора команды перехода

jmp: JMP NAME { /* code to look-up label and go there */ }; 

Имейте в виду, отложить проверку всех целей перехода до конца синтаксического анализа, иначе вы не сможете двигаться вперед.