CRÉER UN PARSEUR LL

Signaler
Messages postés
373
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
17 juin 2013
-
Messages postés
261
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
9 août 2013
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53061-creer-un-parseur-ll

Messages postés
261
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
9 août 2013
3
Merci ^^

Pour être honnête je suis allergique aux maths aussi mais je pense que l'on peu décrire le fonctionnement sans passer par la, j'essayerai en tout cas ;)
Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012

J'ai hâte de lire ton tuto car je suis un peu imperméable aux formules mathématiques et théoriques et le site de Levee ne m'a pas plus aidé. Je trouve que la théorie des ensembles embrouille plus que n'explique, un bon tuto et une bonne dose de vulgarisation ne ferais pas de mal :))) surtout qu'après quelques recherches acharnées sur google j'ai rien trouvé de convaincant.

Bon courage pour ton tuto et merci pour cette source :)
Messages postés
261
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
9 août 2013
3
En fait il faudrai que j'écrive un tuto dessus pour bien expliquer le principe d'un parseur llk, il y a beaucoup de notions que je n'ai pas aborde dans cette source parce que je voulais qu'elle reste simple et accessible c'est pour ca que j'ai précisé sans lexer parce que la on tape dans l'implémentation de la grammaire et la c'est plus complexe.
Messages postés
261
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
9 août 2013
3
Oui le NodeParser c'etait un test d'heritage pour verifier que tout marchait bien et comme ce n'etait pas reelement un parseur xml j'ai change le nom mais j'ai oublie de le faire dans les test ^^

Sinon cote buffers :

J'ai mit deux buffer mais ce n'est pas comme cela qu'il faudrait procéder, en fait le readBuffer devrai être remplace par une pile fifo, surtout si on veux pouvoir créer des règles d'assignation du genre a = b la pile deviens indispensable.

Le buffer principal qui est donc le flux a parser est automatiquement tronque dans un parseur ll enfin c'est comme ca que j'ai appris a les écrire en C++ ca a l'avantage de libérer de la mémoire (en PhP on a pas cette problématique), on consomme littéralement le flux d'entrée au fur et a mesure du parsing et on empile les éléments. Cela dit peu être effectivement que il y aurait une façon plus rapide de tronquer le flux et utiliser un index marcherai bien entendu.

Pourquoi ne pas avoir instancie le buffer et l'avoir mit en statique ?
Tout simplement par pur préférence personnelle ^^ Je me suis dit que on allait parser une chose a la fois et pas deux simultanément.

Pour revenir sur le principe d'un parseur ll, l'introduction que tu trouvera la explique plutôt bien leur principe de base :

http://levee-online.org/frll1-parser.html

Mais ici mon but etait de faire la version la plus simpliste c'est a dire sans grammaire récursive avec un lexer et des token terminaux et non terminaux. Ici les règles de parsing sont de simple fonctions c'est bien plus simple a comprendre et ca marche tellement bien ^^
Afficher les 9 commentaires