Je cherche un compilateur simple qui compile un langage simple, j'en ai besoin pour écrire un article à ce sujet et pour apprendre comment les compilateurs fonctionnent, je ne cherche pas une chose sophistiquée juste un langage simple (par simple je veux dire un petit code parce que par exemple gcc est trop gros). toute aide est appréciée.
Réponses
Trop de publicités?Si vous voulez regarder le code, je suis très impressionné par le code d'Eijiro Sumii. MinCaml compilateur.
-
Il n'y a que 2000 lignes.
-
Il compile un langage source assez intéressant.
-
Il génère du vrai code machine, rien de tout cela en C ou en LLVM :-)
-
La vitesse du code compilé est compétitive avec gcc et les compilateurs OCaml natifs.
-
Le compilateur est conçu pour l'enseignement.
Ai-je mentionné que j'ai été très impressionné ?
Je recommande TinyScheme ou jonesforth .
Jack Crenshaw, un docteur qui a beaucoup écrit sur les méthodes numériques pratiques, a longtemps eu peur des compilateurs. Il en a finalement eu assez d'avoir peur et a écrit un tutoriel en plusieurs parties sur la construction des compilateurs, en se basant sur ce qu'il a appris en s'initiant à ce sujet.
Voir "Construisons un compilateur" pour plus d'informations. Notez qu'il n'est pas complet ; il s'est essoufflé avant de le terminer, mais il contient beaucoup d'informations faciles à digérer.
Environ 1000 lignes de code. Compile Scheme en assembleur LLVM ou en C. Je dirais que cela convient parfaitement à un article sur les compilateurs. Si vous voulez aller plus loin, je vous recommande le livre "SICP" .
Regardez le compilateur simple pour PL/0 (un petit sous-ensemble de type Pascal - pas de paramètres, seulement des données entières). La source, écrite en Pascal, ne comporte qu'environ 500 lignes de code, et est facile à suivre. C'est peut-être tout ce que vous avez besoin de voir.
Cependant, si vous voulez aller un peu plus loin, une fois que vous êtes à l'aise avec cela, regardez la source de Pascal-S. Il s'agit d'un compilateur pour un plus grand sous-ensemble de Pascal, mais il inclut quelques concepts supplémentaires, comme le passage de paramètres, des types de données supplémentaires, des tableaux et des enregistrements (structures). Cependant, il n'y a qu'environ 2000 lignes de code, et il est facile à suivre une fois que vous avez maîtrisé le PL/0.
Vous pouvez trouver les sources ici :