10
votes

Flex, Bison et C: À la recherche d'une introduction très basique

Je recherche un très court exemple de travail de flex et de bison avec un matrice d'accompagnement qui utilise les règles intégrées. J'ai essayé plusieurs résultats Google qui étaient en désordre, ne construiraient pas ou n'étaient pas en C ++ qui n'est pas acceptable. Les bonnes ressources en ligne et le code d'échantillon court sont appréciés.


additionnel xxx

Je voudrais un maquillage qui ressemble à ceci avec des fichiers sources attachés qui font quelque chose d'arbitrairement Simple.


0 commentaires

5 Réponses :


1
votes

Quoi de manuel GNU ?


0 commentaires

2
votes

Vous pouvez commencer par regarder le wikipedia page de bison . Il dispose d'un exemple de code complet d'analyseur réentrant écrit avec Bison. Il utilise Flex comme LEXER et possède également un exemple de code sur la manière de l'utiliser.

Si vous avez des corrections, je vous remercie d'avance :)

plus tard: Le code sur Wikipedia a été testé sur Linux (GCC) et Windows (Visual Studio) et devrait fonctionner avec d'autres compilateurs également.


3 commentaires

C'est un exemple décent, même s'il manque un maquillage. Je cherche, essentiellement, pour un exemple de type World Hello. Je suis familier avec faire d'autres choses, mais je n'ai pas réussi à écrire un matrice concis pour Flex / Bison.


Désolé, je n'ai pas fourni cela dans la page wiki, mais comme vous pouvez le constater dans la première partie du fichier, les commandes utilisées pour obtenir les fichiers nécessaires pour effectuer une compilation avec le compilateur C. Tout ce que vous avez à faire est d'exécuter ces commandes sur le fichier Flex et sur le fichier de bison.


Si vous savez comment écrire un makefile pour un fichier C pour un fichier flex, vous avez ce qui suit (dans ce cas particulier): parser.c: parser.y bison --defines = parser.h parser.y lexer. C: Lexer.L Flex --Outfile = lxer.c --header-file = lxer.h lexer.l



1
votes

Le bison La documentation est parfaite avec un très bon exemple d'une calculatrice. Je l'ai utilisé pour commencer avec Bison. Et l'exemple C ++ utilise un scanner Flex. Il serait facile de le faire en c.


0 commentaires

19
votes

Le projet Flex lui-même est livré avec un ensemble d'exemples décents, notamment des fichiers et des fichiers de bison.

https://github.com/westes/flex/relases

Pour une excellente intro du sujet, je vous suggère que Lex et YACC 2e édition:

http://oreilly.com/catalog/9781565920002

Enfin, allez ici pour une amorce rapide:

http://ds9a.nl/lex-yacc/cvs /lex-yacc-howto.html

EDIT:

Comme Bart mentionné, une autre source est la suivante: HTTP : //Orilly.com/catalog/9780596155988/

et ce qui suit est le fichier squelette que j'utilise pour démarrer un projet Flex. Il utilise getopts GNU pour analyser les options de ligne de commande et obtenir le nom du fichier. Je ne fais aucune allégation quant à la portabilité ou à la facilité d'utilisation! :) xxx

Enfin, puisque les gens continuent à vérifier cela, j'ai aussi un Exemple Lexer and Parser avec Makefile sur GitHub.


1 commentaires

@Bart Kiers j'ai ajouté votre lien et la source de mon fichier Flex Skeleton.