Évaluateur Mini-BASIC
Projet

2001-02






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 l'extension obligatoire et au moins une des extensions proposées ci-dessous.



Documents et fichiers annexes

Vous devrez remettre un petit document technique décrivant les modifications que vous avez dûfaire subir àla version 0.0 pour implanter les extensions.

Pour chacune des extensions, vous devrez avoir préparéun jeu de tests montrant leur bon fonctionnement. Chaque test sera accompagnéd'un petit commentaire indiquant quel aspect de l'extension est visé.



Obligatoires

Pour chacune de ces extensions, vous devrez préparer un jeu de tests montrant leur bon fonctionnement.

  1. Implantez l'ajout de l'instruction GOSUB sans oublier son alter ego RETURN.
  2. Faites en sorte qu'aucune exception ne puisse àla boucle principale.

Au choix

Nouvelle exception

L'utilisation d'une variable non définie provoque une erreur non spécifiée et non spécifique. Le but de cette extension est d'intégrer un mécanisme permettant une gestion plus appropriée de ce genre d'erreur.

Pour cela, on peut rajouter au module Env la déclaration d'une exception encapsulant le nom de la variable fautive. Cette exception est déclanchélors d'une tentative d'accés àune variable non définie dans l'environnement et interceptée par les fonction d'évaluation.

Implantez cette solution.



Commandes enrichies

On veut enrichir les commandes RUN et LIST de façon àpouvoir leur passer en argument des numéros de ligne. Nous vous proposons les options suivantes :

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 = n * 0.5

Encore un autre type de données

Si l'on veut un peu sophistiquer les affichages lors de l'exécution d'un programme, il est pratique de disposer d'outils de manipulations de chaînes de caractères. Il faut donc que les chaînes soient une valeur du langage, que l'on puisse lier ces valeurs àdes variables.

L'extension ici proposée consiste à
  1. introduire le type des chaîne de caractères comme nouveau type de valeur stockable dans un environnement.
  2. autoriser l'écriture d'expressions manipulant des chaînes en ajoutant des opérateurs tels que la concaténation, la conversion en entiers et chaîine, etc.
  3. autoriser l'utilisation de ces expressions dans l'affectation et l'écriture de valeurs ; autoriser la lecture de telles valeurs.

This document was translated from LATEX by HEVEA.