Adloun

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

L'interpréteur

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

Énoncé

Assembler interprete et donner les valeurs de "2 * (3 + 4) - 5" et "10 - 3 - 2".

Corrigé

let interprete s =
  let (e, reste) = parse_expr (lexer s) in
  if reste <> [] then failwith "expression mal formee" else evalue e

interprete "2 * (3 + 4) - 5" . interprete "10 - 3 - 2" (associativité à gauche, grâce à boucle_add). La chaîne lexer parser evalue produit la bonne valeur en respectant priorités et associativité.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre