Non, vous ne pouvez pas revenir en arrière bison. Habituellement Bison analyse le code et génère une sorte de représentation intermédiaire. Comme un AST ou un bytecode. Ensuite, vous exécutez cela dans une étape séparée. Par conséquent, dans votre cas, puisque vous analysez un langage d'assemblage pour un format de bytecode, il est logique de le traduire en bytecode réel. C'est quand votre analyseur voit "ajouter r0 4 4", tout ce qu'il devrait faire est d'ajouter la séquence d'octets correspondante à un tableau contenant votre bytecode. Ensuite, après que l'analyseur a créé ce tableau, vous pouvez le passer à une fonction qui exécute réellement le bytecode.
Il serait probablement judicieux de scinder ces deux étapes en deux programmes distincts: un assembleur qui transforme un fichier source en un fichier de bytecode binaire, et un interprète bytecode qui lit un fichier bytecode et l'exécute. Ce dernier n'aurait pas besoin d'utiliser Bison du tout, il suffit de lire les octets et switch
sur eux.
Duplicata de http://stackoverflow.com/questions/37186142/goto-label-in-the-same-loop-in-bison/ –