coucou747

Ce blog présente principalement les évolutions du compilateur metalang : les nouveaux backends, les nouvelles corrections de bugs, les nouvelles features, nouvaux tests, son utilisation dans le cadre du concours prologin.

le 02/02/2014

Metalang

Une nouvelle série de commits à été pushée sur metalang. On peut noter plusieurs améliorations principales comme des correctifs sur les passes de checkings, ou la génération de code propre. On peut aussi noter une meilleur stdlib qui permet de gérer un meilleur code python (pour le moment) généré lorsque les entrées sont formatées d'une des façons suivantes :

  • Un entier sur une ligne
  • Une liste d'entiers sur une ligne
  • Une matrice d'entiers

Pour ces primitives, on utilise des primitives pythons plus natives. Dans les autres langages, ces fonctions sont codées en metalang à partir de read et de skip.

On peut aussi noter une passe qui permet de cleaner les types inutiles écrits dans la librairie standard, ce qui permet potentiellement dans le futur de faire une librairie standard plus complète sans sacrifier le code généré.

La modification la plus importante est celle qui concerne le plus de langages et qui consiste à fusionner les instructions "print", merger les formats pour faire un code généré plus humain et plus naturel.

Pour les chaines constantes, en python, avant on avait :
print("%s" % "\n", end='');
Maintenant, on a :
print( "\n", end='');
Idem,
print("%d" % x, end='');
print("%s" % ", ", end='');
print("%d" % y, end='');
print("%s" % ", ", end='');
print("%d" % currentNote, end='');
print("%s" % "\n", end='');
S'est transformé en :
print("%d, %d, %d\n" % ( x, y, currentNote ), end='');

Ce qui est non seulement plus court mais qui ressemble aussi beaucoup plus à un code humain.

J'ai aussi pris le temps de réparer les tests not compile en ajoutant plusieurs passes, même si mon prochain article traite de ce sujet.

Dans Catégories/Metalang/Changelog.

Sujets : #metalang #prologin