[Marseille-pm] Faire mumuse avec les compilos...

arnaud.assad at free.fr arnaud.assad at free.fr
Thu Jul 31 17:49:02 CDT 2003


Bon ce mail est plus particulièrement destiné à Nicolas
(gloom est plus valable ? c'est deadcow maintenant ?)

Pour les autres, je situe le contexte :
Nicolas écrit un langage, et j'essaie de le convaincre
d'utiliser parrot comme machine virtuelle (au moins dans la 
phase de conception/test) de destination

Pourquoi ? :

 1) Parce que c'est facile
 2) Parce que parrot est déjà une bonne VM et le sera encore plus au
    fil du temps
 3) Parce que c'est UTILE (y'a plus de 3 personnes qui l'utilisent)
 4) parce que comme ca on peut bosser à plusieurs dessus
 5) parce que c'est amusant
 6) Pour me faire plaisir ;-)
 7) Parce qu'une bonne partie des fonctionnalités est déjà présente dans
    la VM, permettant un test du langage plus rapide/facile
 8) et SURTOUT parce que cette VM existe déjà !!!
 

Nicolas étant réticent, je lui ai expliqué, que grace à parrot il n'aurait
pas à se préoccupper de pas mal de taches (interprétation, gestion de la
mémoire...) et qu'écrire un compilo vers parrot ne pouvait pas être plus dur
qu'écrire un compilo classique
(Un compilo écrit du code pour un CPU, une VM n'est jamais qu'un "CPU virtuel")
Comme il n'était pas convaincu, un petit "défi" m'a été lancé, écrire un
petit langage qui fasse les 4 opérations de bases le branchement et
l'affichage.

Nico, tu trouveras ci joint le compilo 'minil' (mini langage ;-)

Soyons clair : Il est hideux !
Mais il fait le boulot (la découverte des bug est laissé comme exercice au
lecteur ;-) et ça ne m'a pas prit plus de 3 heures pour le faire...
(même si la syntaxe ressemble beaucoup à la syntaxe de l'assembleur parrot,
tu m'accorderas que c'est trivial a régler dans la grammaire...)

Pour Info je suis nul en écriture de compilo (je ne l'ai jamais fait) ma
grammaire est vraiment pas optimale et je ne maitrise pas l'outil
Parse::RecDescent (d'ou un usage abusif de la pile...)


Toutefois je crois que tu ne pourras que constater que le principe marche...

tu peux tester le code produit en installant parrot (je suis trop rusé)

Maintenant, pour ceux qui seraient intéressés, j'aimerais écrire un langage
correctement (en utilisant Parse::Yapp ?) pour les présentation
(affichage de texte/images, temporisation, saisie d'évènement clavier,
passage au slide suivant/précédent...) le but est de se familiariser avec
l'écriture des compilos et parrot.
(Comment ça le talk de Leo m'a marqué ? ;-)

C'est pourquoi je poste sur la liste, j'espère bien que parmi vous certaines
personnes seront intéressées et me rejoindront...
Dans tous les cas je compte sur tes bon conseils nico (et même sur ta
participation pour être honnète ;-)

Alors nico ? ok pour bosser sur parrot ? 
(ton langage-objet et mon langage-jouet)

Arnaud.

PS: Nico ne t'inquiètes pas si tu ne trouves pas de Lexer ni de Parser,
Parse::RecDescent combine les deux fonctions, je suis persuadé que tu va voir
cela comme du bricolage à la Perl, mais la théorie sous jacente et éprouvée :

C'est un parser récursif (sous classe particulière des "top down" parsers ou
LL parsers) avec une tokenization "context-sensitive"...
Plus d'info à : 
http://search.cpan.org/src/DCONWAY/Parse-RecDescent-1.94/tutorial/tutorial.html

-------------- next part --------------
A non-text attachment was scrubbed...
Name: Minil_P_RD.pl
Type: application/x-perl
Size: 1723 bytes
Desc: not available
Url : http://mail.pm.org/pipermail/marseille-pm/attachments/20030801/cfc1fe72/Minil_P_RD.bin


More information about the Marseille-pm mailing list