OCamllex无法导入核心包(转到Python编译器)



我正在使用OCamllex和Menhir编写一个Go to Python编译器,但我的词法分析器无法导入Core包。

这是我的lex.mll文件:

{
   (* Header *)
  open Core.Std
  open Lexing
  open Parser
  exception SyntaxError of string
  let next_line lexbuf =
    let pos = lexbuf.lex_curr_p in
    lexbuf.lex_curr_p <-
      { pos with pos_bol = lexbuf.lex_curr_pos;
             pos_lnum = pos.pos_lnum + 1
      }
  let syntaxError msg = raise (SyntaxError (msg ^ " on line " ^ (string_of_int next_line)))

   (* End Header *)
}
[ lexer rules ]

我有一个制作文件,make.sh 将词法分析和解析器放在一起

#! /bin/bash
echo "==Creating compiler=="
echo "- OCamllex : lex.mll -> lex.ml"
ocamllex lex.mll
echo "- OCaml : lex.ml -> lex"
ocamlc lex.ml -o lex
# echo "- OCamlBuild -> main.ml"
# ocamlbuild -use-menhir main.native

但是当我运行 ./make.sh 时出现此错误:

==Creating compiler==
- OCamllex : lex.mll -> lex.ml
1030 states, 16995 transitions, table size 74160 bytes
- OCaml : lex.ml -> lex
File "lex.mll", line 4, characters 7-15:
Error: Unbound module Core

我可以通过编辑我的 .ocamlinit 文件在 ocaml 解释器中打开 Core,但是如何在 ocamlc 编译的脚本中导入 Core?

从脚本中删除所有内容,然后使用

corebuild -use-menhir main.native

corebuild将推断所有依赖项并编译它们,并执行所有操作。

相关内容

  • 没有找到相关文章

最新更新