Dans l'introduction de la première saison, nous avons dit qu'un
interprète pouvait être schématisé par:
données, programmes (et résultats) étant des informations (sous forme
de textes).
Remarque: dans ce cours, nous n'utilisons pratiquement pas la
possibilité de lire des données (informations données).
Ainsi, un interprète doit « comprendre » le programme et les données
et faire calculer par l'ordinateur le résultat en utilisant
l'algorithme, ou le procédé de calcul, décrit par le programme.
La « compréhension » s'effectue dans une phase dite d'
analyse, le
calcul s'effectuant dans une phase dite d'
évaluation:
On peut analyser le source du programme parce qu'il est écrit dans un
langage et on peut le faire analyser par un programme
d'ordinateur parce que ce langage est parfaitement défini, en général
à l'aide d'une grammaire:
Noter que cette analyse peut être un problème difficile -- de plus en
plus lorsque l'on veut se rapprocher d'une langue naturelle -- et
qu'il existe des concepts et des techniques extrêmement sophistiqués
pour le résoudre. Dans ce cours, nous n'analyserons que des langages
simples (nous vous fournirons un analyseur pour un langage plus
compliqué à analyser) mais nous aurons tout de même besoin de quelques
concepts pour nous aider (nous étudierons ces concepts dans la
première section).
Afin que l'évaluation soit le plus efficace possible (et que le source
de l'interprète correspondant soit plus simple à écrire), la phase
d'analyse construit une représentation interne du programme à
interpréter. Il faut bien voir que le choix de la structure de données
contenant cette représentation interne est de la plus haute importance
pour l'efficacité de l'interpréteur.
Pour améliorer l'efficacité de l'évaluation ou pour simplifier
l'écriture de l'évaluateur (en diminuant le nombre de constructions à
traiter), on peut aussi transformer la représentation du programme en
une autre équivalente (c'est-à-dire dont l'évaluation donnera le même
résultat):
Enfin, dès qu'il y a la notion de variable dans le langage,
l'évaluateur évalue le programme dans un
environnement,
structure de données qui, entre autres, reçoit les données du
problème (noter que cet environnement évolue lors d'une évaluation):
Dans les sections qui suivent, nous introduirons les concepts et les
techniques en nous appuyant sur quatre exemples qui tournent autour
des langages logiques.