我正在进行OCaml任务,并且正在窥探分配文件,在那里我找到了我认为生成的文件。它有很多像这样的代码,
match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
| 0 ->
# 81 "lexer.mll"
( TOK_EOF )
# 239 "lexer.ml"
| 1 ->
# 82 "lexer.mll"
( new_line lexbuf; TOK_WHITE )
# 244 "lexer.ml"
我很抱歉这个间距,但这就是它在文件中的显示方式。由于我真的不知道#
字符是否应该在左边那样,我只是按照它的样子粘贴它。
# <number> <string>
形式的行的含义是什么?
答案 0 :(得分:2)
你是对的,这是一个生成的文件。即它是从名为project
的文件生成的(这是一个ocamllex文件)。
以ImportError: No module named 'tools'
开头的行将生成的文件中的代码与原始文件中的行相关联。因此,例如lexer.mll
表示:&#34;以下代码是从lexer.mll&#34;的第82行生成的。 ocaml编译器使用错误消息的信息。因此,如果.ml包含错误(由于程序员在.mll文件中编写了错误的代码而发生这种错误),错误消息将指向.mll文件中的一行,而不是生成的.ml文件。