Voilà, nous avons maintenant tout ce qu’il nous faut pour réaliser un analyseur syntaxique. Le mois prochain, nous verrons comment compiler ce programme Yacc sur Amiga et nous continuerons notre apprentissage de ce langage en améliorant notre exemple. En attendant, pour ceux qui connaîtraient déjà ce langage, et également pour vous permettre de vous le procurer pour le mois prochain, je vous signale que Yacc version Amiga est disponible dans la collection Fred Fish sur la disquette numéro 419. Je me permets de vous souhaiter une bonne et heureuse année 1992, avec TANT, bien entendu. A bientôt. Par Herr Doktor von GlutenStimmellmDorf *tj Votre pantagruélique serviteur revient faire des siennes dans les pages de votre cher ANT, suite à une absence prolongée pour cause de programmation intense d’utilitaires déments. GREFFEUR 00000000, 00000001 et 00000002, puis trois mots longs donnant leur longueur respective, et ainsi de suite. ÜSiii Vous avez compris ? Je continue. Pour parvenir à nos fins, il suffit de connaître tous les identificateurs existants (ou plutôt ceux utilisés dans un fichier exécutable) et de savoir comment chaque hunk est structuré. Et puisque l’on parle d’utilitaires, celui que je vous propose aujourd’hui, n’est pas dément, mais presque. Il s’agit d’un programme capable de greffer des programmes sur des programmes. Autrement dit, vous disposez d’un excellent programme, mais vous regrettez que lors de son lancement, telle ou telle fonction ne soit pas accomplie : il vous suffit de programmer vous-même ladite fonction et de la greffer sur le programme fautif grâce à l’utilitaire du mois. RESTEZ SAGES ! Je vois venir certains petits malins, qui ont immédiatement compris qu’ils leur sera possible de se servir de cet utilitaire (au demeurant génial) afin de répandre d’odieux virus coquilles tout partout. Oui cela est possible, mais je maudis les coupables jusqu’à la 52ième incarnation. Voilà ! COMMENT CELA SE PEUSSE ? Puisque l’Amiga est multitâche, n’en déplaise aux bidouilleurs de démos (que je maudis cette fois jusqu’à la 104ième incarnation), il n’est pas possible de savoir à l’avance à quelle adresse mémoire sera chargé tel ou tel programme. Pour résoudre cette difficulté, les développeurs de l’Amiga ont employé la solution suivante : un programme exécutable n’est pas sauvé tel quel sur disquette. Ainsi, toutes les addresses de saut ne sont pas réelles mais comptées à partir de l’adresse 0. Lors du chargement du programme en mémoire, AmigaDOS se charge d’ajouter à chaque adresse répertoriée, l’adresse absolue de chargement et le programme se trouve relogé et donc en état de fonctionner.