Я не уверен, правильно ли я понимаю.
Но вы боретесь с круговой зависимостью? Допустим, T
содержит ваш тип и вызывает синтаксический анализатор, P
. P
не может создать тип T.t
, поскольку T
зависит от P
, а не наоборот. Обычно я создал третий файл, содержащий информацию о типе, T'
.
Например,
T.ml
let parse filename : T'.t =
filename
|> open_in
|> Lexing.from_channel
|> P.command L.token
P.mly
%type <T'.t> command
%start command
%%
T'.ml
type t = Label of String
| Integer of String
| Float of string
| Star of t