MIO2-2
Projet
basic
12 Septembre 2001
--
° --






Documents autorisés : notes de cours manuscrites ou polycopiées






Intro

On veut rajouter au langage l'instruction ON .. GOTO ..

Le schéma de cette instruction est
ON e GOTO n1, n2, .., nk
e est une expression arithmétique et n1, .., nk sont des numéros de ligne. L'effet de cette instruction est le suivant :
  1. si la valeur de e est un entier i compris entre 1 et k, l'exécution de poursuit à la ligne ni ;
  2. sinon, l'exécution se poursuit à la ligne suivante.



Question
  1. décrivez les modifications à apporter à l'ensemble du programme vu en cours.



Rappels

Nous rappelons, quelques types et fonctions mis en oeuvre.

(* == Fichier: syntabs.ml *)
type bin_op = PLUS | MINUS | MULT | DIV 

type exp =
  ExpInt of int 
| ExpVar of string
| ExpOpp of exp
| ExpBin of exp * bin_op * exp  

type inst = 
  Rem of string
| Goto of int
| Gosub of int
| Print_e of exp
| Print_s of string
| Println
| Input of string 
| If of test * int 
| Let of string * exp
| Return
| End

(* == Fichier: eval.ml *)
val eval_exp : Syntabs.exp -> Env.env -> int
val eval_test : Env.env -> Syntabs.exp * Syntabs.bin_rel * Syntabs.exp -> bool
val exec_inst : bool ref -> Env.env -> int ref -> int Stack.t -> Syntabs.inst -> unit
val ld_prog : (int * Syntabs.inst) list -> Syntabs.inst array
val exec_prog : (int * Syntabs.inst) list -> unit

(* == Fichier: printer.ml *)
val print_exp : Syntabs.exp -> unit
val print_test : Syntabs.exp * Syntabs.bin_rel * Syntabs.exp -> unit
val print_inst : Syntabs.inst -> unit
val print_prog : (int * Syntabs.inst) list -> unit
Les fonctions d'analyses lexicale et syntaxique sont sythétisées par les outils ocamllex et ocamlyacc à partir des définitions contenues dans les fichiers parser.mly et lexer.mll.


This document was translated from LATEX by HEVEA.