磅(#)意思是OCaml

时间:2018-05-05 18:04:56

标签: syntax ocaml semantics

我正在进行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>形式的行的含义是什么?

1 个答案:

答案 0 :(得分:2)

你是对的,这是一个生成的文件。即它是从名为project的文件生成的(这是一个ocamllex文件)。

ImportError: No module named 'tools'开头的行将生成的文件中的代码与原始文件中的行相关联。因此,例如lexer.mll表示:&#34;以下代码是从lexer.mll&#34;的第82行生成的。 ocaml编译器使用错误消息的信息。因此,如果.ml包含错误(由于程序员在.mll文件中编写了错误的代码而发生这种错误),错误消息将指向.mll文件中的一行,而不是生成的.ml文件。