To answer to myself:

EXTEND Gram

GLOBAL: sig_item;

sig_item:  [[
    "module"; "type"; i = a_UIDENT; "="; mt = module_type; "with"; id = LIDENT ->
        <:sig_item< module type $uid:i ^ "_" ^ id$ = $mt$; >>
    ]];
END

should have been: str_item instead of sig_item + any keyword different from "with" after the signature definition.

- Thomas