この例を実装しましたが、うまく機能します。
ここで、 から読み取るのではなく、文字列から読み取りたいので、次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
ます...文字列をレックスできるようにレクサーを変更する方法を知っている人はいますか?