Syntax Pound(#)在OCaml中的含义

Syntax Pound(#)在OCaml中的含义,syntax,ocaml,semantics,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"

我正在做一个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"
很抱歉,间距太大,但文件中就是这样显示的。因为我真的不知道
#
字符是否应该像那样在左边,所以我只是按照它显示的样子粘贴它


表单的行是什么意思?

没错,这是一个生成的文件。也就是说,它是从名为
lexer.mll
的文件(这是一个ocamlex文件)生成的


#
开头的行将生成文件中的代码与原始文件中的行相关联。因此,例如
#82“lexer.mll”
的意思是:“以下代码是从lexer.mll的第82行生成的”。ocaml编译器将这些信息用于错误消息。因此,如果.ml包含错误(这是因为程序员在.mll文件中编写了不正确的代码),错误消息将指向.mll文件中的一行,而不是生成的.ml文件。

没错,这是生成的文件。也就是说,它是从名为
lexer.mll
的文件(这是一个ocamlex文件)生成的

#
开头的行将生成文件中的代码与原始文件中的行相关联。因此,例如
#82“lexer.mll”
的意思是:“以下代码是从lexer.mll的第82行生成的”。ocaml编译器将这些信息用于错误消息。因此,如果.ml包含错误(这是因为程序员在.mll文件中编写了不正确的代码),错误消息将指向.mll文件中的一行,而不是生成的.ml文件