web-dev-qa-db-fra.com

Où puis-je apprendre les bases de l'écriture d'un lexer?

Je veux apprendre à écrire un lexer. Mon cours universitaire avait une tâche où nous devions écrire un analyseur (et un lexer pour l'accompagner), mais cela nous a été donné sans instruction ni rétroaction (au-delà de la marque), donc je n'ai pas vraiment appris beaucoup de cela.

Après avoir recherché ce sujet, je ne trouve que des articles assez avancés qui se concentrent sur des domaines qui me semblent avoir quelques pas d'avance sur ma situation. Je veux une discussion sur les bases de l'écriture d'un lexer pour un langage très simple que je peux utiliser comme base pour étudier la tokenisation de langages plus complexes.

À ce stade, je ne suis pas vraiment intéressé par les meilleures pratiques ou les techniques d'optimisation, mais préfère plutôt me concentrer sur l'essentiel. Quelles sont les bonnes ressources pour me lancer?

67

Fondamentalement, il existe deux approches principales pour écrire un lexer:

  1. Création d'un manuscrit auquel cas je recommande ce petit tutoriel .
  2. Utilisation de certains outils de génération de lexers tels que Lex . Dans ce cas, je recommande de lire les tutoriels sur l'outil particulier de votre choix.

Je voudrais également recommander le tutoriel Kaléidoscope de la documentation LLVM . Il passe par l'implémentation d'un langage simple et montre notamment comment écrire un petit lexer. Il existe une version C++ et une version Objective Caml du didacticiel.

Le manuel classique sur le sujet est Compilateurs: principes, techniques et outils également connu sous le nom de Dragon Book. Cependant, cela relève probablement de la catégorie des "écritures assez avancées".

59
vitaut

Le Dragon Book est probablement le guide définitif sur le sujet, bien qu'il puisse être un peu écrasant. Modèles d'implémentation du langage et Pragmatique du langage de programmation sont également d'excellentes ressources.

9
Brandon Moretz