首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[Ocaml]:构建lexer.mll

[Ocaml]:构建lexer.mll
EN

Stack Overflow用户
提问于 2014-11-10 04:22:47
回答 1查看 872关注 0票数 0

我通过安装OcamlWinPlus及其组件Emacs来使用Ocaml。在我的源代码中,我有两个文件main.ml和lexer.mll,它们的代码如下:

main.ml:

代码语言:javascript
复制
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

lexer.mll

代码语言:javascript
复制
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时,遇到了麻烦:

代码语言:javascript
复制
Error: Unbound module Lexer

请帮我修一下

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-10 04:54:49

你没能描述你在这里尝试过的..。我想您在编译Lexer之前并没有编译main.ml,尽管它依赖于Lexer。你应该做的是:

  • lexer.mllocamllex lexer.mllocamllex转换为lexer.ml
  • 编译lexer.mlocamlc lexer.ml
  • 然后编译main.ml

要自动化这个过程,您应该使用一些构建工具,如makeocamlbuildomake等。无论如何,您应该阅读一本很好的OCaml入门书,以了解如何使用多源文件使用OCaml及其工具。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26836728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档