Je veux écrire un analyseur-générateur à des fins éducatives et je me demandais s'il y a de bonnes ressources en ligne ou des tutoriels qui expliquent comment écrire un. Quelque chose sur les lignes de "construisons un compilateur" de Jack Crenshaw. P>
Je veux écrire le générateur d'analyseur pour la grammaire LR (1). P>
J'ai une compréhension décente de la théorie derrière générer les tables d'action et de goto, mais vous voulez une ressource qui m'aidera à la mettre en œuvre. P>
Les langues préférées sont C / C ++, Java si même d'autres langues sont correctes. P>
Merci. P>
4 Réponses :
Pas vraiment en ligne, mais le Livre Dragon a assez élaboré Discussions sur l'analyse de LR. P>
Si vous vouliez aller à la route Python, je recommanderais ce qui suit. p>
J'ai trouvé ces deux extrêmement utiles et Paul McGuire L'auteur de Pyparsing est super à vous aider lorsque vous rencontrez des problèmes. Le traitement du texte du livre à Python n'est qu'une référence pratique pour avoir à vos pointes et vous aider à vous mettre dans le bon état d'esprit lorsque vous essayez de construire un analyseur. p>
Je soulignerais également qu'une langue oo est mieux adaptée en tant que moteur d'analyse linguistique, car il est extensible et le polymorphisme est la bonne façon de le faire (IMHO). En regardant le problème en termes d'une machine à états plutôt que de «chercher un point-virgule à la fin de XYZ» démontrera que votre analyseur devient beaucoup plus robuste à la fin. P>
espère que cela aide! p>
Je suis d'accord avec les autres, le livre de dragon est bon fond pour l'analyse LR. P>
Si vous êtes intéressé par des analyseurs de descente récursive, une expérience d'apprentissage extrêmement amusante est ce site Web, qui vous guide tout au long de la construction d'un système de compilateur complètement autonome pouvant compiler lui-même et d'autres langues: P>
Tutoriel de compilateur Metaii P>
Tout cela est basé sur un incroyable papier technique de 10 pages de Val Schorre: META II II: une langue d'écriture de compilateur orientée de la syntaxe b> de honnête-à-dieu 1964. J'ai appris à construire Compilateurs de ce retour en 1970. Il y a un moment de soufflage d'esprit lorsque vous grognez enfin comment le compilateur peut se régénérer ... P>
Je connais le site Web auteur de mes journées de collège, mais n'a rien à voir avec le site Web. P>
J'ai trouvé plus facile à apprendre à écrire des analyseurs de descente récursifs avant d'apprendre à écrire des analyseurs LR. Eh bien, pour être honnête, après de nombreuses années d'échecs d'écriture, je n'ai jamais trouvé nécessaire d'écrire un analyseur LR. p>
J'ai récemment écrit un didacticiel à CodeProject appelé Mise en œuvre des outils de langage de programmation en C # 4.0 < / a> qui décrit des techniques d'analyse de descente récursives. p>