Emacs [Ocaml]:Build lexer.mll

Emacs [Ocaml]:Build lexer.mll,emacs,ocaml,interpreter,Emacs,Ocaml,Interpreter,我通过安装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 | [filena

我通过安装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 1
在emacs中运行Ocaml时出现问题:

Error: Unbound module Lexer

请帮我修复它

您未能描述您在这里尝试的内容。。。我猜您在编译
main.ml
之前没有编译
Lexer
,尽管这取决于
Lexer
。你应该做的是:

  • 使用
    ocamlex
    lexer.mll
    转换为
    lexer.ml
    ocamlex-lexer.mll
  • 编译
    lexer.ml
    ocamlc lexer.ml
  • 然后编译
    main.ml

要使此过程自动化,您应该使用一些构建工具,如
make
ocamlbuild
omake
,等等。无论如何,您应该阅读一本好的OCaml入门书,了解如何将OCaml及其工具与多个源文件一起使用。

您没有描述您在这里尝试的内容。。。我猜您在编译
main.ml
之前没有编译
Lexer
,尽管这取决于
Lexer
。你应该做的是:

  • 使用
    ocamlex
    lexer.mll
    转换为
    lexer.ml
    ocamlex-lexer.mll
  • 编译
    lexer.ml
    ocamlc lexer.ml
  • 然后编译
    main.ml

要使此过程自动化,您应该使用一些构建工具,如
make
ocamlbuild
omake
,等等。无论如何,您应该阅读一本好的OCaml入门书,了解如何将OCaml及其工具与多个源文件一起使用。

您没有描述您在这里尝试的内容。。。我猜您在编译
main.ml
之前没有编译
Lexer
,尽管这取决于
Lexer
。你应该做的是:

  • 使用
    ocamlex
    lexer.mll
    转换为
    lexer.ml
    ocamlex-lexer.mll
  • 编译
    lexer.ml
    ocamlc lexer.ml
  • 然后编译
    main.ml

要使此过程自动化,您应该使用一些构建工具,如
make
ocamlbuild
omake
,等等。无论如何,您应该阅读一本好的OCaml入门书,了解如何将OCaml及其工具与多个源文件一起使用。

您没有描述您在这里尝试的内容。。。我猜您在编译
main.ml
之前没有编译
Lexer
,尽管这取决于
Lexer
。你应该做的是:

  • 使用
    ocamlex
    lexer.mll
    转换为
    lexer.ml
    ocamlex-lexer.mll
  • 编译
    lexer.ml
    ocamlc lexer.ml
  • 然后编译
    main.ml

要使这个过程自动化,您应该使用一些构建工具,例如
make
ocamlbuild
omake
,等等。无论如何,您应该阅读一本好的OCaml入门书,学习如何将OCaml及其工具用于多源文件。

在编译main.ml时,我遇到了另一个错误:文件“main.ml”,第1行:错误:链接main.cmo时出错:引用未定义的全局“Lexer”
ocamlc-c main.ml
,然后
ocamlc-o your.exe Lexer.cmo main.cmo
。请阅读手册!谢谢你,我用这种方式构建了我的源代码:ocamlc-clexer.mlocamlc-cmain.mlocamlc-o taka lexer.mlmain.mlocamlrun taka非常感谢你。我可以按照你的方式构建我的源代码。你能给我推荐一本学习Ocaml语言的好书吗?编译main.ml时,我遇到了另一个错误:文件“main.ml”,第1行:错误:链接main.cmo时出错:引用未定义的全局“Lexer”
ocamlc-cmain.ml
,然后
ocamlc-o your.exe Lexer.cmo main.cmo
。请阅读手册!谢谢你,我用这种方式构建了我的源代码:ocamlc-clexer.mlocamlc-cmain.mlocamlc-o taka lexer.mlmain.mlocamlrun taka非常感谢你。我可以按照你的方式构建我的源代码。你能给我推荐一本学习Ocaml语言的好书吗?编译main.ml时,我遇到了另一个错误:文件“main.ml”,第1行:错误:链接main.cmo时出错:引用未定义的全局“Lexer”
ocamlc-cmain.ml
,然后
ocamlc-o your.exe Lexer.cmo main.cmo
。请阅读手册!谢谢你,我用这种方式构建了我的源代码:ocamlc-clexer.mlocamlc-cmain.mlocamlc-o taka lexer.mlmain.mlocamlrun taka非常感谢你。我可以按照你的方式构建我的源代码。你能给我推荐一本学习Ocaml语言的好书吗?编译main.ml时,我遇到了另一个错误:文件“main.ml”,第1行:错误:链接main.cmo时出错:引用未定义的全局“Lexer”
ocamlc-cmain.ml
,然后
ocamlc-o your.exe Lexer.cmo main.cmo
。请阅读手册!谢谢你,我用这种方式构建了我的源代码:ocamlc-clexer.mlocamlc-cmain.mlocamlc-o taka lexer.mlmain.mlocamlrun taka非常感谢你。我可以按照你的方式构建我的源代码。你能给我推荐一本学习Ocaml语言的好书吗。
Error: Unbound module Lexer