Ajouter la division
Exercice · OCaml (option informatique), chapitre 21 — Analyse syntaxique et interprétation
Énoncé
Étendre l'interpréteur avec la division / (même priorité que *). Indiquer les trois endroits à modifier.
Corrigé
Trois ajouts cohérents traversent toute la chaîne :
- le lexème : ajouter
Divau typelexeme, et le cas'/'danslexer;
- l'arbre : ajouter
Divi of expr * exprau typeexpr;
- le parser : dans
boucle_mul, traiterDiv :: restecommeFois(même niveau) en construisantDivi;
- l'évaluateur : le cas
Divi (a, b) -> evalue a / evalue b.
| Div :: reste -> let (d, r) = parse_facteur reste in boucle_mul (Divi (g, d)) r
(* ... *)
| Divi (a, b) -> evalue a / evalue b
À chaque ajout, le compilateur signale les match devenus non exhaustifs (chapitre 3) : il guide l'extension. Une grammaire bien structurée se prolonge sans effort.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.