может быть, я просто ошибаюсь в очень простой вещи, но я разрабатываю intepreter, написанный на OCaml, со стандартными инструментами, такими как ocamllex и ocamlyacc , и у меня такая ситуация:1005 *
- iparser.mly содержит спецификацию синтаксического анализатора
- ilexer.mll содержит спецификацию лексера
- невозможный.ml содержит виртуальную машину, выполняющую код, и все необходимые типы
Тип инструкции, который определяет различные инструкции, находится в impossible.ml
, и он необходим для синтаксического анализатора, но impossible.ml
использует синтаксический анализатор, определенный в iparser.mly
, поэтому они оба нуждаются друг в друге для корректной компиляции.
Есть ли способ создать файл .cmi
для моего impossible.ml
?Таким образом, синтаксический анализатор будет знать о типах, определенных в impossible.ml
, и это позволит мне скомпилировать impossible.cmo/.cmi
, а затем скомпилировать также impossible.cmo
.Затем я могу связать их все вместе.
Пока мой сценарий компиляции:
ocamlyacc iparser.mly
ocamlc -c iparser.mli
ocamllex ilexer.mll
ocamlc -c ilexer.ml
ocamlc -c iparser.ml
ocamlc -c impossible.ml
ocamlc -o imp.exe ilexer.cmo iparser.cmo impossible.cmo
, но это не работает, потому что ocamlc -c iparser.ml
требуется по крайней мере impossible.cmi
, чтобы знатьтипы.
Есть предложения?Заранее спасибо ..