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
où e est une expression arithmétique et n1, .., nk sont des
numéros de ligne. L'effet de cette instruction est le suivant :
-
si la valeur de e est un entier i compris entre 1 et k,
l'exécution de poursuit à la ligne ni ;
- sinon, l'exécution se poursuit à la ligne suivante.
Question
-
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.