Photo by Lionel Pottier

Menhir est un générateur d'analyseurs syntaxiques LR(1) pour le langage de programmation OCaml. En d'autres termes, Menhir traduit des spécifications de grammaires LR(1) en code OCaml. Menhir a été conçu et implémenté par François Pottier et Yann Régis-Gianas.

Menhir est compatible à 90% avec ocamlyacc. Les grammaires ocamlyacc existantes sont acceptées et compilées par Menhir. Les analyseurs syntaxiques ainsi produits tournent et produisent des arbres syntaxiques corrects. Cependant, les analyseurs qui font appel aux fonctions du module Parsing se comportent de façon légèrement incorrecte. Par exemple, les fonctions qui permettent l'accès aux positions renvoient une position par défaut lorsqu'elles sont appelées par un analyseur produit par Menhir. Pour porter une spécification de grammaire de ocamlyacc vers Menhir, il faut remplacer tous les appels au module Parsing par de nouveaux mots-clef spécifiques à Menhir.

Pourquoi préférer Menhir à ocamlyacc?

Il y a d'autres différences, documentées dans le manuel de référence de Menhir.

Documentation

Veuillez consulter le manuel de référence.

L'API MenhirLib.Convert facilite la conversion entre l'interface traditionnelle des analyseurs syntaxiques (laquelle suppose que l'analyseur lexical est produit par ocamllex) et une interface révisée (qui ne fait pas cette supposition).

L'API incrémentale est définie par MenhirLib.IncrementalEngine (et est également expliquée dans le manual de référence).

Téléchargement

Voici le code source de la dernière version. Pour le compiler et l'installer, il vous faudra GNU make et OCaml (version 4.02 ou plus récente). Rapports de bogues et suggestions sont les bienvenus. Voici la liste des modifications récentes.

Menhir est également disponible par l'intermédiaire d'opam. Une fois que vous installé opam, tapez simplement opam install menhir.

Liste de diffusion

Il existe une liste de diffusion dédiée aux annonces de nouvelles versions et à la discussion de problèmes, bogues, nouvelles fonctionalités, etc. Seuls les abonnés peuvent écrire.


EnglishPage principale Email Dernière modification : 12 July 2017