Lorsque je redirige l'entrée vers mon programme yacc à partir d'un fichier d'entrée, une fois l'analyse du fichier terminée, je souhaite que l'analyseur yacc imprime un résumé de ce qu'il a fait. Je veux qu'il fasse la même chose si j'entre la saisie par le clavier et puis j'appuie sur Ctrl + D. Y-a-t-il un moyen de faire ça?Comment mettre un message récapitulatif final dans un programme yacc?
Répondre
J'ai découvert que la solution à mon problème est de créer une fonction yywrap() dans le fichier .y. Cette fonction sera exécutée quand yacc rencontre un EOF, qui est soit la fin d'un fichier d'entrée, soit l'utilisateur qui appuie sur Ctrl-D. C'est la solution.
Ceci s'exécute quand _lex_ rencontre EOF, pas quand yacc le fait. Ce sont deux moments différents. C'est une distinction importante à faire. 'yywrap' ne devrait rien faire de toute façon - c'est une forme terrible de" contrôle de flux "intégré dans lex. Le genre d'actions que vous pourriez faire dans 'yywrap' devrait être traité dans la fonction' main() 'de votre programme. –
-1: d'accord avec Chris, il est là pour que vous puissiez passer au fichier d'entrée suivant, lors du traitement de nombreux fichiers. –
Je n'ai pas de fonction principale, et même si je l'ai fait, je doute qu'il puisse faire quoi que ce soit puisque le principal serait dans le fichier .l et toutes mes variables sont dans le fichier. – neuromancer
sur la grammaire, vous pouvez appeler une fonction la fonction doit être sur la troisième partie
FIRST PART
%%
second PART
GRAMMAR { CALL YOUR FUNCTION();}
GRAMMAR2 VAR1 VAR2 VAR3 {CALL YOUR FUNCTION2($1,$2,$3);}
%%
third PART
YOUR FUNCTION(){}
YOUR FUNCTION2(int c, char*y , int z){}
int main (void) {
}
void yyerror (char *s) {fprintf (stderr, "%s\n", s);}
votre fonction peut imprimer tout ce que vous voulez aussi la grammaire becouse vous maintenant d'où il appelle la fonction par la paramètre que vous donnez
- 1. Grammaires YACC multiples dans un programme
- 2. MySQL Créer un tableau récapitulatif?
- 3. Afficher un récapitulatif de validation ASP.NET dans un message modal de l'interface utilisateur jQuery
- 4. Comment passez-vous un message d'un programme à un autre?
- 5. Comment mettre un vecteur dans un intention.extra?
- 6. ASP.NET Comment écrire un message à l'écran sans que l'utilisateur final le supprime?
- 7. Comment mettre une condition "IF DEBUG" dans un programme C#?
- 8. Comment mettre en évidence le Html.ValidationMessage sur un message AJAX?
- 9. Comment programmer Lex et Yacc pour analyser un fichier partiel
- 10. Comment faire un message dans un polynôme?
- 11. mod_rewrite: ajouter un slash final?
- 12. Mettre à jour un programme d'installation
- 13. Afficher un message lorsque Fermer le programme dans Qt/C++
- 14. Devrais-je créer private static final String = "Un message d'exception" ou le laisser dans le code?
- 15. Comment créer un programme en utilisant un contrat de message dans wcf?
- 16. Comment puis-je mettre en pause par programme un NSTimer?
- 17. Comment mettre un Dojox.grid dans un dijit.Dialog
- 18. Comment distribuer un programme d'installation qui contient un programme d'amorçage
- 19. Mettre un programme dans la barre d'état système au démarrage
- 20. Mettre un programme Java comme un socket dans un service en nuage
- 21. Comment envoyer un message à un objet?
- 22. Comment faites-vous un analyseur à partir d'un fichier yacc?
- 23. Récapitulatif du texte
- 24. Récapitulatif sélectif MDX pour un problème de normalisation
- 25. Sous-sélectionner une colonne Récapitulatif dans Oracle
- 26. Comment mettre une GSList dans un GHashTable?
- 27. Appel de lex/yacc à partir d'un programme séparé
- 28. Comment mettre en forme du texte dans un RichTextBox?
- 29. android: comment aligner un message dans alertDialog?
- 30. Comment afficher un message dans Google Maps?
Voulez-vous le dans yacc/bison ou (f) lex? Vous pouvez simplement fournir votre propre fonction 'main()' qui appelle 'yyparse()', puis imprime un message à la fin. –
Je le veux dans yacc au lieu de flex. – neuromancer
La réponse à cette question devrait être évidente pour toute personne qui a réellement essayé d'écrire un programme en utilisant yacc. J'ai remarqué un motif de poser des questions par Phenom comme ceci. –