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 p> Je voudrais un maquillage qui ressemble à ceci avec des fichiers sources attachés qui font quelque chose d'arbitrairement Simple. p> p>
5 Réponses :
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. P>
Si vous avez des corrections, je vous remercie d'avance :) p>
plus tard: strong> Le code sur Wikipedia a été testé sur Linux (GCC) et Windows (Visual Studio) et devrait fonctionner avec d'autres compilateurs également. P>
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
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. P>
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 P> BlockQuote>
Pour une excellente intro du sujet, je vous suggère que Lex et YACC 2e édition: P>
http://oreilly.com/catalog/9781565920002 p> BlockQuote>
Enfin, allez ici pour une amorce rapide: p>
http://ds9a.nl/lex-yacc/cvs /lex-yacc-howto.html P> blockquote>
EDIT: P>
Comme Bart mentionné, une autre source est la suivante: HTTP : //Orilly.com/catalog/9780596155988/ P>
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! :) p>
xxx pré> Enfin, puisque les gens continuent à vérifier cela, j'ai aussi un Exemple Lexer and Parser avec Makefile sur GitHub. P> P>
@Bart Kiers j'ai ajouté votre lien et la source de mon fichier Flex Skeleton.
La deuxième édition comporte 15 pages concernant la boîte à outils YACC / LEX (à l'aperçu rapide). Vous ne répondez que des liens vers le livre, alors comment est-ce pertinent pour la question?