2016-02-25 86 views
1

我正在編寫一個轉到Python編譯器的OCamllex和Menhir,但是我的詞法分析器無法導入Core包。OCamllex無法導入Core包(轉到Python編譯器)

這裏是我的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文件,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 

我能夠在OCaml的解釋,以開核,通過編輯我的.ocamlinit文件,但如何即時通訊由ocamlc編譯的腳本中的端口核心?

+1

你可以使用'ocamlfind'嗎?然後你可以做一些像'ocamlfind ocamlc -package core lex.ml -o lex'。 – RichN

+0

我試過'ocamlfind ocamlc -thread -package core lex.ml -o lex',它發現了包Core! –

+0

太棒了!建築時我總是使用'ocamlfind',因爲它工作正常。 – RichN

回答

2

從你的腳本中刪除一切,只使用

corebuild -use-menhir main.native 

corebuild將推斷所有的依賴和編譯他們,做所有的東西。

相關問題