Syntax Pound(#)在OCaml中的含义
我正在做一个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"
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文件