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
- Analyser un facteur corrigé
- Priorité du produit corrigé
- L'analyseur complet corrigé
- Ajouter la division corrigé
- Détecter les erreurs de syntaxe corrigé