2010-04-26 6 views
0

Bonjour tout le monde, Quelqu'un peut-il m'aider à sortir de ma situation, à la recherche d'un instructeur qui implémente l'instructeur JMP (Jump) comme dans Assembler. J'ai découvert que cela pourrait être avec la fonction goto de Flex/Bison mais je n'ai pas vraiment idée de comment faire. J'ai une idée Im très reconnaissant de votre aide. Merci.Instruction JMP dans Flex/bison

Voici un exemple à quoi cela ressemble. avec l'instructeur JMP, il va à l'étiquette L1.

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

Vous ne savez pas trop de quoi vous parlez, mais la boucle * while * remplacera joliment le peu de code que vous avez là. – slugster

+0

Hallo slugster, ce que je voulais dire, c'est une analyse syntaxique et je veux que l'interprète que je construis reconnaisse l'instructeur JMP, quand je donne une entrée comme en haut, et me redonne, que JMP a été utilisé et qu'il a sauté à l'étiquette L1. J'ai construit un arbre de syntaxe où il peut reconnaître les opérateurs et les plus grands opérateurs égaux inférieurs maintenant j'ai besoin de la même chose pour JMP, si vous allez à la question comment puis-je implémenter un ifstatement dans flex/bison là vous trouvez le code. Regardez-le et si vous avez une idée, je serai très reconnaissant. – Imran

Répondre

1

Pour mettre en œuvre une instruction de saut que vous devez ajouter le support Gramma pour le label

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

et certains Grammer pour analyser la commande de saut

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

Gardez à l'esprit, de reporter la vérification de toutes les cibles de saut jusqu'à la fin de l'analyse, sinon vous ne serez pas en mesure de sauter en avant.