# Installer flex & bison



## Theviins0570 (27 Avril 2010)

Bonjour,

Dans le cadre d'un stage, je dois créer un analyseur syntaxique. Connaissant flex & bison que j'ai manié sous Linux, je voudrais faire de même sous Snow Leopard.
Par contre, je ne sais pas comment m'y prendre. Les tutos sur internet ne sont pas clair ... j'ai essayé de l'installer via MacPort, sans succès.
En espérant que quelqu'un puisse m'aider.

Florian


----------



## Fingah (27 Avril 2010)

bah justement c'est facile

en fait ils sont installes sur mon systeme mais c'est peut etre livre avec les Developer Tools (Xcode et compagnie)



> [iMac] ~ > flex --version
> flex 2.5.35
> [iMac] ~ > bison --version
> bison (GNU Bison) 2.3
> ...


verifie dans le terminal: si tu ne les as pas, installe les developer tools; il faut s'enregistrer sur le site Apple mais c'est gratuit
http://developer.apple.com/technologies/xcode.html


----------



## Theviins0570 (27 Avril 2010)

Oui, c'est ce que je pensais ... mais dans le terminal, aucune trace de commande flex et bison ... et pourtant j'ai installer les developer tools car j'ai Xcode. Donc je ne comprend pas tout!
Je vais essayer de réinstaller Xcode 

Je vous tiens au courant

EDIT: J'avais pas vu que ce n'étais pas gratuit, étant à Montréal, je n'ai pas mon dvd d'installation avec des developper tools, ni a t'il pas un autre moyen de compiler du flex et du bison sous MacOSX ?!


----------



## Fingah (27 Avril 2010)

étrange car c'est clairement livré avec les Developer Tools

http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/bison.1.html
http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/flex.1.html

par contre je suis certain que les developer tools c'est gratuit ... ou alors ca a changé très récemment:
http://developer.apple.com/programs/register/
une fois le compte tu te connectes et tu vas dans la sections Downloads

quand tu installes les Developer Tools vérifie bien que tout est coché

sinon tu peux toujours tenter une installation depuis les sources mais il faudra certainement jouer avec qq options
pour flex les sources sont dispos ici:http://flex.sourceforge.net/

après il reste macports, fink, ... mais je ne suis pas un adepte de ces solutions (surtout que dans le cas présent tu peux avoir une installation propre via les Developer Tools)


----------



## Theviins0570 (27 Avril 2010)

Je trouve pas de section Downloads ... à chaque il me propose de devenir develloper pour la modique somme de 79 dollards ou euros. Je m'y prend surement mal.
Mais le pire, c'est que dans mon dossier Develloper/usr/bin ... j'ai bien des fichier flex et bison.
C'est à ne rien y comprendre ...


----------



## Fingah (27 Avril 2010)

ok alors les executables sont bien installes, c'est peut etre juste un probleme de variable PATH dans le terminal

dans le terminal tape:
echo $PATH pour vérifier les chemins de recherche des commandes
par exemple moi j'ai:
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/texbin:/usr/X11/bin

et si je tape
whereis flex j'obtiens
/usr/bin/flex donc ca colle

tape aussi:
/Developer/usr/bin/flex --version
pour voir si tu peux lancer flex

tiens moi au courant car tu n'es pas tres loin de la solution


----------



## Theviins0570 (27 Avril 2010)

Déjà merci d'essayer de réfléchir et de régler mon problème 

Donc, lorsque je tape echo $PATH, j'obtiens :
/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/usr/X11/bin

Et lorsque je tape /Developer/usr/bin/flex --version, j'obtiens :
flex 2.5.35

et 

bison (GNU Bison) 2.3
Written by Robert Corbett and Richard Stallman.

pour bison . Donc si je comprend bien, ils sont installés mais y'a un problème avec le PATH ( dont j'ai aucune idée de ce que c'est ). Mais je crois que ça a un rapport avec un fichier caché dans le home, non ?!

J'ai l'impression qu'on approche de la solution


----------



## Fingah (27 Avril 2010)

c'est étrange comme configuration mais peu importe

normalement dans ton home directory tu dois avoir un fichier .bashrc (le point est important); si tu en as pas ce n'est pas très grave

il faut juste rajouter dans la variable PATH le chemin /Developer/usr/bin donc dans le terminal:
1/ si le fichier .bashrc n'existe pas tu le crées en faisant:
touch .bashrc
2/ open .bashrc pour l'ouvrir dans TextEdit
3/ tu ajoutes dans le fichier la ligne
export PATH=/Developer/usr/bin/:$PATH (avec un retour a la ligne)

tu sauves, tu fermes le fichier, tu fermes l'application Terminal et tu la relances

normalement si tu tapes flex --version ca devrait marcher tout seul

---------- Nouveau message ajouté à 16h52 ---------- Le message précédent a été envoyé à 16h51 ----------

pour info la variable PATH contient l'ensemble des chemins dans lequel le systeme (enfin le shell dans le terminal) "regarder" pour trouver le nom d'une commande et la lancer


----------



## Theviins0570 (27 Avril 2010)

D'accord pour la définition du PATH, c' toujours bon un peu de culture.

Par contre j'ai respecté à la lettre ce qu'il fallait faire, donc créer le fichier car je n'en avait pas et tout, sauvegarder ... quand après je refais open, j'ai bien ce qu'il faut dans le fichier ... et pourtant même en redémarrant le Terminal, rien y fait, il ne trouve pas la commande flex. Pourtant le chemin est bon, j'ai vérifié ... Bizarre !


----------



## Fingah (27 Avril 2010)

mmm

que donne "echo $PATH" ?

dans les préférences de l'application Terminal tu as quoi pour le réglagle (premier onglet) "Shells open with" ? coche "Command (complete path)" et assure toi qu'il y a bien /bin/bash

sinon essaye une fois dans le terminal un "source .bashrc" et ensuite flex pour voir si ca marche


----------



## Theviins0570 (27 Avril 2010)

Yeesss, quand je fais source .bashrc, bah ensuite je peux vérifier les versions de bison et flex, et compiler je pense ... donc ça c'est cool! Par contre, dès que le Terminal est fermé, je suis obligé de refaire la manip' à chaque fois. Pour info, j'ai changer les préférences du terminal et echo $PATH me donne :
/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/usr/X11/bin

Hmm pas encore ça, le compilateur du flex marche et celui du bison aussi, mais dès lors que je lance mon makefile ( qui marche sous Linux ), il me ressort plein d'erreur dans le lex et yacc ...


----------



## tatouille (27 Avril 2010)

http://trac.macports.org/browser/trunk/dports/devel/bison/Portfile


----------



## Fingah (27 Avril 2010)

il faudrait deja que tu verifies pourquoi le fichier .bashrc n'est pas lu a l'init du shell 

as tu verifie les prefs du Terminal ?

sinon copie le .bashrc en .profile et ressaye

peux tu copier coller les erreurs provenant du Makefile ?

---------- Nouveau message ajouté à 18h22 ---------- Le message précédent a été envoyé à 18h13 ----------

ah oui et aussi un "finger username" pour verifie que le Shell est bien /bin/bash


----------



## Theviins0570 (27 Avril 2010)

C'est bon le flex et bison marche en modifiant le .profile ... c'est déjà ça en moins. Par contre, il ne m'a pas l'air de trouver les bibliothèques C car le début de mes erreurs à la compilation sont : 

./compile
test_lex.c:2:20: error: stdio.h: No such file or directory
test_lex.c:3:20: error: string.h: No such file or directory
In file included from test_lex.c:6:
meta.yacc: In function yyerror:
meta.yacc:32: warning: incompatible implicit declaration of built-in function printf
In file included from test_lex.c:7:
lex.yy.c:21:19: error: errno.h: No such file or directory
lex.yy.c:22:20: error: stdlib.h: No such file or directory
In file included from test_lex.c:7:
lex.yy.c: At top level:
lex.yy.c:157: error: expected =, ,, ;, asm or __attribute__ before yy_size_t
lex.yy.c:160: error: expected =, ,, ;, asm or __attribute__ before yyleng
lex.yy.c:162: error: expected =, ,, ;, asm or __attribute__ before * token
lex.yy.c:190: error: expected specifier-qualifier-list before FILE
lex.yy.c:252: error: expected =, ,, ;, asm or __attribute__ before yy_buffer_stack_top
lex.yy.c:253: error: expected =, ,, ;, asm or __attribute__ before yy_buffer_stack_max
lex.yy.c:273: error: expected =, ,, ;, 
......


----------



## Fingah (27 Avril 2010)

la il faudrait un copie colle du Makefile pour que je puisse t'aider

post le ici ou par MP je jetterai un coup d'oeil des que possible (ce soir probablement ... enfin dans la nuit pour toi)


----------



## tatouille (27 Avril 2010)

Theviins0570 a dit:


> C'est bon le flex et bison marche en modifiant le .profile ... c'est déjà ça en moins. Par contre, il ne m'a pas l'air de trouver les bibliothèques C car le début de mes erreurs à la compilation sont :
> 
> ./compile
> test_lex.c:2:20: error: stdio.h: No such file or directory
> ...


well known issue

http://trac.macports.org/browser/tru...bison/Portfile


----------



## Fingah (28 Avril 2010)

je viens de voir ton MP content que tout rentre dans l'ordre (peut être faut-il indiquer le thread comme résolu)


----------



## imenedjidji (28 Octobre 2014)

je voudrais installer flex sur mon macbook pro et 
j'ai essayer la commande whereis flex 
ça a donner:
/usr/bin/flex
mais quand j'ai essayer la commande /Developer/usr/bin/flex --version pour lançer l'installation 
ça a donner
-bash: /Developer/usr/bin/flex: No such file or directory
aider moi s'il vous plais je cherche la commande pour installer flex


----------

