Forum Programmation.autre Création d'un parseur

Posté par  (site web personnel) .
Étiquettes : aucune
0
16
nov.
2005
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  (site web personnel) . Évalué à 2.

    J'ai bossé avec antlr une fois. Il marche avec java ou C++, mais surtout avec java (manque de pot, je devais l'utiliser avec C++).
    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  (site web personnel) . Évalué à 2.

    https://linuxfr.org/2004/08/26/17106.html
    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  . Évalué à 1.

    j'avais pur un projet en compilation utilisé flex et bison, dans mes souvenirs c'est pas trop compliqué, il faut just ecrire la grammaire du language dans deux fichiers. (voir un seul) dans lequelle on appelle les fonctions correspondant au expression.
    j'ai pas de liens sous la mains desolé, cherche dans des cours de compilation
  • # en fait...

    Posté par  . Évalué à 5.

    ...c'est la partie la plus facile :)

    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  (site web personnel) . Évalué à 1.

    Merci a tous pour vos commentaires/liens.

    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  (site web personnel) . Évalué à 1.

    Bison et Flex ne sont pas les seuls outils ce but.

    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.