私は無料コースのエクササイズをしています。次のocamlコードは "make"するとコンパイルされますが、一度それをトップレベルに入れようとすると文句を言います。どうして?トップレベルでコンパイルされていないOcamlコード
let main() =
(* Parsing arguments *)
let f_name = ref "" in
Arg.parse [ ] (fun s -> f_name := s) "Mini-Java analyzer";
(* Parsing of the source file *)
let simple_java_prog =
if String.compare !f_name "" = 0 then failwith "no program file given";
Localizing.current_file_name := !f_name;
let f_desc = open_in !f_name in
let lexbuf = Lexing.from_channel f_desc in
let java_prog =
try Java_parser.program Java_lexer.token lexbuf
with
| e ->
Printf.printf "Exception during parsing: %s\n"
(Printexc.to_string e);
failwith "Stopped" in
Simple_java_translate.tr_java_prog java_prog in
Printf.printf "finished...\n"
let _ = main()
しかし、私(emacsのから) "CC CEの" トップレベルには、このコードは、その後、私のエラー
....
let main() =
Error: Reference to undefined global `Localizing'
を与え、このエラー情報を、私は
から説明を得ました言うhttp://caml.inria.fr/pub/docs/manual-ocaml/manual023.html
、
未定義グローバル・モデムへの参照 モジュールの実装を#loadで にロードするのを怠りました。
こうすると、#load "localizing.cmo"を実行しようとしています。しかし、今問題は次のとおりです。ローカライズはありません.cmo ここに検索結果があります。
bash-3.2$ ls localizing*
localizing.cmi localizing.cmx localizing.ml localizing.mli localizing.o
メイクファイルをここに置くと、問題の原因は「メイクファイル」から来てはならず、大きなものです。また、私はコースのサイトで提供されているので、makefileを変更するはずがありません。
何が問題ですか?ありがとうございました。すべてのocamlプログラムがトップレベルで実行できるはずではないと結論付けるのは間違いありませんか?
'cmo'または' cma'を読み込むことができます。どちらも 'ocamlc [.opt]'で作成できます。 – nlucaroni
私は、ほとんどの問題の原因が 'Makefile'であることがわかりました。 – nlucaroni