Évaluateur Mini-BASIC
Projet
2000-01
Nous avons vu en cours et vous avez implanté en TP une version
minimale d'un interpréteur du langage BASIC. Votre projet final
consistera à implanter au moins une des extensions proposées
ci-dessous.
Outre ces rajouts, vous devrez également affiner votre
interpréteur de façon à intercepter tout déclenchement
d'exception pour afficher un message d'erreur et rendre le contrôle
à la boucle principale.
Nouvelle instruction
Un immense progrés des langage de compilation a été
l'introduction de la possibilité d'appel à des
sous-programmes.
L'appel à un sous programme se fait par l'instruction
GOSUB num
où num est un numéro de ligne (la première du
sous-programme).
On sort du sous-programme, pour revenir àl'exécution de
l'instruction suivant celle de l'appel par l'instruction
RETURN
La gestion des adresses (i.e. numéros de lignes) de retour
est réalisée à' l'aide d'une pile :
- l'instruction GOSUB provoque l'empilement de l'adresse
de retour ;
- l'instruction RETURN provoqie le retour à l'adresse
trouvée en sommet de pile.
Commandes enrichies
On veut enrichir les commandes RUN et LIST de
façon àpour leur passer en argument des numéros de
ligne. Nous vous proposons les options suivantes :
- RUN num exécution du programme à partir
de la ligne num ;
- LIST num affcihage de la seule ligne
num ;
- LIST num1-num2 affichage des lignes
dont les numéros sont compris entre num1 et num2,
inclusivement ;
- LIST num- affichage à partir de la ligne
dont le numéro est supérieur ou égal à num
jusqu'à la fin du programme ;
- LIST -num affichage à partir de la
première ligne du programme jusqu'à la ligne dont le numéro
est inférieur ou égale à num.
Nouvelles commandes
On veut rajouter quelques nouvelles commandes d'édition des
programmes.
- SAVE name sauvegarde du programme courrant
dans le fichier de nom name ;
- NEW suppression de la totalité du programme courrant ;
- DEL num suppression de la ligne numéro
num ;
- RENUM renumérotation de l'ensemble des numéros de
lignes du programme (en commençant à 1 et en augmentant de 1
à chaque ligne).
- RENUM num renumérotation de l'ensemble des
numéros de ligne du programme, en commençant à num
et en augmentant de 1 à chaque ligne.
- RENUM num +step renumérotation de
l'ensemble des numéros de ligne du programme, en commençant
à num et en augmentantde step à chaque
ligne.
Un autre type de données
On veut pouvoir calculer aussi bien sur les entiers que sur les
nombres décimaux (les flottants).
Un nombre décimal est notécomme deux suites de chiffres
séparées par un point. L'une des deux suites peut être vide. Par
exemple 1.234, 123.4, 1234. et
.1234 sont des nombres décimaux. Les opérations
utilisées seront les mêmes que celles sur les entiers (addition,
soustraction, multiplication et division).
On interdira les conversions en cours d'opération : l'évaluation
de l'expression 1 + 2.3 doit provoquer une erreur (de type).
Le résultat de 3 / 2 est 1 et non pas
1.5, mais le résultat de 3.0 / 2.0 est bien le
flottant 1.5.
Le type des variables est fixélors de leur première affectation
(soit par LET, soit par INPUT). Ainsi, le programme
10 LET n = 2
20 LET n = 1.5
est incorrect. De même que le programme
10 LET n = 2
20 LET x = 0.5
30 LET a = n * x
Un ``débeugueur''
Un outil important des environnements de programmation est le
``débeugueur'' (de l'anglais debugger) qui permet
d'exécuter pas-à-pas les instructions d'un programme, d'inspecter
et de modifier les valeurs des variables qu'il manipule. On veut
rajouter un tel outil à notre interpréteur.
Pour cela, on rajoute la commande DEBUG qui permet de passer
du mode usuel de l'interpréteur en mode ``débeugage''.
Ce mode (et ce mode seulement) donne accés àde nouvelles
commandes :
- START num indique que l'on désire commencer
une exécution du programme à la ligne num (par
défaut, on commencera à la première ligne) ;
- STEP demande l'exécution de la ligne courrante et
avance d'une ligne dans le programme (sans l'exécuter encore) ;
- STEP num demande l'exécution de num
lignes de programmes à partir de la ligne courrante puis met
l'interpréteur en attente sur la ligne suivant la dernière
exécutée ;
- INSPECT var affiche le contenu de la variable
de nom var ;
- SET var val modifie la valeur de la
variable de nom var avec la valeur val (cette
dernière devra être une constante) ;
En mode de ``débeugage'' on aura égalemnt accés à la
commande LIST (avec ou sans paramètres) ainsi qu'àla
commande QUIT. Cette dernière aura pour effet de revenir en
mode usuel.
Nous vous conseillons d'utiliser une invite différente pour le mode
usuel et le mode de ``débeugage''.
Administratif
Vous aurez remis à vos chargés de TP l'état courrant de votre
implantation de la version de base de l'interpréteur la semaine du 2
avril 2001.
L'évaluation finale de votre projet aura lieu la semaine du 14 mai
2001. Vous aurez remis d'ici là, sur papier, l'ensemble des
sources de votre réalisation ainsi qu'un document indiquant le choix
des extensions que vous aurez implantées accompagné de la
description des ajouts et modification que vous aurez apportées
à la version de base de l'interpréteur (nouvelles fonctions,
nouvelles variables, et le rôle de chacune).
Vous aurez préparépour la semaine du 14 mai, aux horaires des
séances de TP, une démonstration de vos réalisations durant
laquelle, vous illustrerez celles-ci àl'aide d'un jeu d'exemples
manifestant aussi bien ce qui tourne correctement que ce qui peut
provoquer des erreurs ou des comportements imprévus.
This document was translated from LATEX by HEVEA.