Bonjour,
j'ai en tête un petit projet censer m'occuper un peu, mais une étape de celui-ci consiste à créer un petit langage de programmation (en francais) que je devrai parser.
C'est a mon avis la partie la plus dure de mon projet, mais aussi la plus interessante.
J'avais déjà il y a très longtemps essayé de me documenter sur flex/bison, mais je n'avais rien trouvé d'abordable (beaucoup de document en anglais et/ou imbuvable)
J'ai conscience que le domaine est compliqué, mais quelqu'un aurait-il des liens pertinents, ou je pourrai apprendre (dans une facilité relative) les notions me permettant d'ecrire une grammaire simple, et ensuite un parseur ?
Question langage, je suis plutot C/Java/Python.
Merci !
# antlr
Posté par Adrien BUSTANY (site web personnel) . Évalué à 2.
Il permet de réellement séparer le parseur du lexeur, et le code des actions du reste. En revanche, la communauté me semble moins fournie que celle de bison, et la doc pour le C++ est rare. Donc si tu connais un peu de java, antlr est la solution de choix.
# des liens
Posté par Krunch (site web personnel) . Évalué à 2.
http://laticia.homeip.net/2cinf/phpbb/viewtopic.php?t=252
Sinon écrire un parser "from scratch" n'est pas si compliqué que ça (je viens de terminer mon premier :).
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
# flex/bison
Posté par Cyrille Hombecq . Évalué à 1.
j'ai pas de liens sous la mains desolé, cherche dans des cours de compilation
# en fait...
Posté par Erwan . Évalué à 5.
Pour faire un langage de programmation, il faut:
1) Definir les mots reserves (if, while...) et la grammaire
2) Implementer un truc qui parse le source pour construire un arbre en memoire representant le programme
3) Parcourir l'arbre pour executer le programme si c'est interprete, ou generer le code assembleur si c'est compile.
A mon avis, le plus dur c'est le 1) (bon, pas si dur pour une grammaire simple) et le 3) (c'est vraiment la qu'est ton interpreteur ou ton compilateur).
Le 2) c'est assez simple, a condition bien sur de connaitre lex et yacc (ou flex et bison).
Tu as un tuto ici:
http://ds9a.nl/lex-yacc/
# Merci
Posté par cho7 (site web personnel) . Évalué à 1.
Effectivement ca me parait un peu plus abordable désormais, enfin le plus dur etant a mon sens la grammaire avec bison.
Ce soir j'vais aller attaquer ca
Merci !
# Et Javacc
Posté par beleys (site web personnel) . Évalué à 1.
Tu peux aussi utiliser Javacc qui te permettra de faire la mm chose en utilisant le langage Java (ce qui peut être plus suivant le langage que tu maitrise le mieux)
- Lien sur le magazine LOGIN ayant fait un dossier dessus.
Bonne introduction sur Flex, Bison Mais se limite au généralité : le langage is au point permet smplement de faire une calculatrice (c'est un début toujours utile à comprendre) ->
http://beleys.no-ip.org/spip/article.php3?id_article=822
-Lienb sur JavaCC :
https://javacc.dev.java.net/
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.