Adloun

OCaml (option informatique) · Chapitre 21 · Exercice de TD

Ajouter la division

Analyse syntaxique et interprétation · niveau 3 (difficile)

Énoncé

Étendre l'interpréteur avec la division / (même priorité que *). Indiquer les endroits à modifier.

Corrigé

Quatre ajouts cohérents traversent toute la chaîne :

  • le lexème : ajouter Div au type lexeme, et le cas '/' dans lexer ;
  • l'arbre : ajouter Divi of expr * expr au type expr ;
  • le parser : dans boucle_mul, traiter Div :: reste comme Fois (même niveau) en construisant Divi ;
  • 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.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre