Compilateur Pseudo-C et interpréteur de byte-code avec flex et bison

•janvier 13, 2009 • 9 commentaires

En deuxième année à l’ENSIAS, le projet de compilation portait sur un langage impératif nommé Pseudo-C. Il s’agit d’une version allégée du C qui ne travaille que sur des entiers (et des tableaux d’entier). Il fallait, en deux mois, écrire un compilateur du Pseudo-C vers du byte-code, et développer un interpréteur pour le byte-code.

Le projet dans son ensemble a été une véritable partie de plaisir, tellement ce que je découvrais m’enchantait. Je venais juste de commencer à saisir la programmation en C et la philosophie des outils en ligne de commande Unix. J’ai fini par développer un environnement complet pour travailler avec le Pseudo-C, avec des utilitaires écrits en C pour aider au debuggage, un programme Scheme de génération aléatoire de programmes Pseudo-C, divers scripts shell, et un framework plutôt élégant de test pour le code du compilateur.

Le code a été développé à la hate (le projet a duré 2 mois), les commentaires ne sont pas toujours à la hauteur, le style n’est pas toujours fin, mais le projet pourrait être utile à toute personne qui débute en compilation. J’ai donc décidé de le mettre en ligne.

Le fichier PseudoCCompilerCollection.zip contient le code du compilateur, de l’interpréteur, les librairies tierces, le framework de test, les jeux de test, les utilitaires et le rapport du projet. N’hésiter pas à m’envoyer des commentaires, et happy hacking!

TéléchargerTélécharger PseudoCCompilerCollection.zip

Update (12/04/2009): Le projet est maintenant hébergé sur github.

Bookmark and Share

99 exercices Scheme, corrigés et commentés

•janvier 6, 2009 • 4 commentaires

En première année à l’ENSIAS, j’ai découvert l’élégance algorithmique possible avec Scheme, et je suis très vite devenu fan. Chaque fonction correcte était une sorte de poésie dont la grace ne finissait pas de m’étonner…

Heureusement, il existe une liste de 99 problèmes (en Prolog, par le docteur Werner Hett), adaptés depuis pour plusieurs autres langages de programmation. J’ai donc décidé de traduire (de l’anglais en français) et résoudre les 99 problèmes, en Scheme, afin de saisir l’essence du langage.

Je n’en ai résolu que … 30, avant que d’autres matières, beaucoup moins intéressantes (qui a parlé de Java ;-) ), ne prennent la place de Scheme dans mon emploi du temps. Vivement le jour où je pourrais revenir prendre une bouffée d’oxygène auprès de Scheme!

Vous allez avoir toute sortes d’illuminations en résolvant ces exercices. Mais par dessus tout, vous allez saisir tout le sens de “L’itération est humaine, la récursivité divine”. Agréable séjour derrière les parenthèses, et n’hésitez surtout pas à me laisser un mot.

Le fichier ninety-nine-scheme-problems.txt contient les problèmes (en commentaire), et les solutions. Vous pouvez donc l’ouvrir directement dans un interprétateur Scheme (comme Edwin, mais je vous recommande vivement DrScheme). Au besoin, renommez le fichier en ninety-nine-scheme-problems.scm ou ninety-nine-scheme-problems.ss.

Télécharger Télécharger les 99 problèmes en scheme, avec 30 corrections (en français)

Update (12/04/2009): Les problèmes sont maintenant disponible en ligne sur github (avec coloration syntaxique)

Update (12/04/2009): J’ai converti les solutions en Common Lisp. La version Lisp est, elle aussi, disponible sur github.

Bookmark and Share