この例を実装しましたが、うまく機能します。
ここで、 から読み取るのではなく、文字列から読み取りたいので、次stdinのように変更しcalc.mlます。
let _ =
try
let lexbuf = Lexing.from_string "1+3" in
let result = Parser.main Lexer.token lexbuf in
print_int result
with Lexer.Eof ->
print_string "Lexer.Eof";
exit 0
そして奇妙なことにLexer.Eof、結果として返されます。と から削除| eof { raise Eof }するlexer.mllと、 と表示されますFatal error: exception Failure("lexing: empty token")。条件の周りに何か問題があると思いend-of-inputます...文字列をレックスできるようにレクサーを変更する方法を知っている人はいますか?