Compilateurs / Lex et Yacc
Compilateur
La réalisation d’un compilateur est une tache particulièrement difficile, que ce soit pour permettre de ’scripter’ une application ou d’analyser le contenu d’un fichier.
Il existe plusieurs outils pour simplifier cette tache, le plus commun est le couple Lex/Yacc (Flex/Bison). Il suffit simplement de leurs fournir une grammaire pour obtenir un analyseur lexicale et syntaxique de celle-ci.
Certe ce n’est pas un compilateur complet mais cela permet déjà de nombreuses possibilités.
Machine virtuelle
Une chose que je trouve formidable c’est cette notion de machine virtuelle, qui date du Pascal et du PCode, USCDPascal...
Le principe est celui que l’on retrouve dans Java et plus récement dans dotnet : le compilateur fournit un pseudo code machine qui sera interprété sur une machine virtuelle elle-même adapté à la machine cible.
Dans le cas de Java et dot net on dispose (il me semble pour java, pour dotnet j’en suis sûr) d’un compilateur "juste à temps" qui transforme tout cela en code machine évitant la lenteur de l’interprétation.
L’objectif avant tout est la portabilité. Mais d’une manière détournée on peut aussi s’en servir pour permettre d’étendre un programme à un utilisateur.
LIRE SUR CE SITE
Machine virtuelle, Pascal-S et P-Code
Quelques petites notions sur les machines virtuelles + La machine virtuelle de Mr Wirth qui permet de s’amuser un peu en pascal.
Un mini langage de script pour une application
Proposer aux utilisateurs de scripter une application