We should be able to use menhir as a group interface: $ cat >dune-project < (lang dune 3.11) > (using menhir 2.1) > EOF $ cat >dune < (include_subdirs qualified) > (executable (name foo)) > EOF $ touch foo.ml $ mkdir group $ cat >group/dune < (menhir (modules group)) > EOF $ cat >group/group.mly < %{ > module M = M > %} > %token EOF > > %start unit > %% > > unit: > | EOF { () } > EOF $ touch group/m.ml $ dune build File "group/group.mly", line 2, characters 11-12: Error: Unbound module M [1]