Une version différente, qui utilise (détourne) les facilités de créations de grammaires de Camlp4 :


open Camlp4.PreCast

let sem_op = function
| "*" -> ( *.)
| "/" -> (/.)
| "+" -> (+.)
|...