Td corrigé Licence Informatique Année 2000-2001 pdf

Licence Informatique Année 2000-2001

Gnu Prolog est un Prolog disponible gratuitement utilisant la syntaxe d' Edimbourg (celle ... Remarque : si vous avez à corriger votre programme sous Emacs, il faut le ... Faire de même avec les programmes sur les listes abordés au dernier TD. ... Modifier cet analyseur pour calculer le nombre de0, de 1, et de 2 que contient ...




part of the document



corriger votre programme sous Emacs, il faut le recharger par l’instruction reconsult(menu). Elle permet d’effacer le programme précédent au sein du système Prolog avant de charger les nouvelles règles.
Faire de même avec les programmes sur les listes abordés au dernier TD.
Pour terminer l’exécution du programme Prolog, il suffit de taper l’instruction  ?-halt.

Les modes conversationnels :
Lorsque le système Prolog est lancé, il dialogue avec l’utilisateur. Il existe deux modes conversationnels :
Le mode interrogation : dans ce mode, le système considère que ce que l’utilisateur tape au clavier est une question. Toute question est une formule ou une conjonction de formules impérativement terminée par un point. Le système lit la question et y répond comme vous venez de le voir.
Le mode enregistrement : dans ce mode, le système considère que ce que l’utilisateur tape au clavier constitue des faits et ou des règles qu’il doit enregistrer en tant que programme.
Lorsque le système est lancé, Prolog est normalement en mode interrogation. La manière de passer d’un mode à l’autre est dépendante du système et il vous faut consulter le manuel de GnuProlog (/net2/softs/gnu/gprolog-1.2.1/docs) pour la connaître. Cependant le mode interrogation est le plus important, car il est plus facile de taper les programmes en un seul bloc sous Emacs.

Travail sur les N-uplets : Les arbres syntaxiques

Exercice 1 :
Nous avons vu dans le chapitre sur les listes la manière de construire un analyseur associé à une grammaire. Nous allons maintenant introduire la notion d arbre syntaxique.
Considérons la grammaire :
G1 : {S ’! c, S ’! aSb}

Citez quelques mots du langage.
En déduire les arbres syntaxiques correspondants.
En déduire les n-uplets correspondants.
Ecrire un programme qui construit tous les arbres syntaxiques de la grammaire G1.
Tester le programme en lui de demandant de reconnaître si un arbre donné correspond à la grammaire G1 ou non.
Tester le programme pour générer des arbres syntaxiques (attention c’est un processus infini). Que remarque-t-on en inversant l’ordre des règles ?
Reprendre les règles de l’analyseur associé à cette grammaire (ou les retrouver). Peut-on modifier ce programme de façon que l’analyseur construise l’arbre syntaxique d’un mot, en même temps qu’il reconnaît ce mot.
Lorsqu’on construit un arbre syntaxique, la liste des feuilles constitue le mot dérivé par l’arbre. Ecrire un programme qui construit la liste des feuilles d’un arbre en respectant les deux contraintes suivantes :
Vous vous limiterez aux arbres comportant au plus trois branches (ou fils). Vous coderez donc ces arbres au moyen des n-uplets , ou .
Le programme doit être capable de reconnaître des feuilles de nature très diverse : caractères, entiers, identificateurs, etc. Un moyen simple de parvenir à ce but est de coder les feuilles par le singleton .

Exercice 2 :
On se donne la grammaire :
 : :=
 : := 01
 : :=01
 : :=2
 : :=2
Donnez des exemples de mot générés à partir de cette grammaire.
Ecrire l’analyseur associé à cette grammaire.
Modifier cet analyseur pour calculer le nombre de0, de 1, et de 2 que contient le nombre (on utilisera le terme plus-un(K, M) qui effectue le calcul M=K+1).