我通过安装OcamlWinPlus及其组件Emacs来使用Ocaml。在我的源代码中,我有两个文件main.ml和lexer.mll,它们的代码如下:
main.ml:
open Format
let print data =
List.iter (fun l -> printf "%s@." (String.concat " " l)) data
let () =
match List.tl (Array.to_list Sys.argv) with
| [filename] ->
let ch = open_in filename in
let data = Lexer.lex [] (Lexing.from_channel ch) in
close_in ch;
print data
| _ -> eprintf "killer <file>@."; exit 1lexer.mll
rule lex xs = parse
| [' ' '\r' '\t'] { lex xs lexbuf }
| '\n' { List.rev xs :: lex [] lexbuf }
| ['0'-'9']+ as x { lex (x :: xs) lexbuf }
| eof { [] }当我在emacs中运行Ocaml时,遇到了麻烦:
Error: Unbound module Lexer请帮我修一下
发布于 2014-11-10 04:54:49
你没能描述你在这里尝试过的..。我想您在编译Lexer之前并没有编译main.ml,尽管它依赖于Lexer。你应该做的是:
lexer.mll:ocamllex lexer.mll将ocamllex转换为lexer.mllexer.ml:ocamlc lexer.mlmain.ml要自动化这个过程,您应该使用一些构建工具,如make、ocamlbuild、omake等。无论如何,您应该阅读一本很好的OCaml入门书,以了解如何使用多源文件使用OCaml及其工具。
https://stackoverflow.com/questions/26836728
复制相似问题