Имам файл tokens.ml
, който има израз type token
в него. Имам и tokens.mli
със същото изявление type token
. Сега имам parser.mly
, който използва токените от tokens.mly
. Искам да запазя токените си в tokens.ml/mli
и синтактичния анализатор в parser.mly
.
И така, опитах да компилирам своя анализатор с помощта на командата
menhir parser.mly --table --explain --external-tokens Tokens
Това ми дава грешка, че един от моите токени не съществува. по-конкретно,
File "parser.mly", line 173, characters 4-12:
Error: OPERATOR is undefined.
Така че menhir не намира модула Tokens
. Не знам как да го направя видим за menhir
. Опитах се да направя библиотека tokens.cma
, но дори тогава все още получавам същата грешка.
Menhir изглежда не се интересува дали модулът не съществува, защото ако изпълня командата
menhir parser.mly --table --explain --external-tokens SomeNonExistentModule
Все още дава същата грешка, че OPERATOR
е недефиниран.
Как да накарам Menhir да намери моя модул за токени. Бих предпочел да не използвам ocamlbuild. Ако предлагате решение на ocamlbuild, моля, обяснете поне междинните ръчни стъпки, които мога да направя вместо това. Искам да разбера какво очаква Менхир.