【问题标题】:Pound (#) meaning in OCamlOCaml 中的磅 (#) 含义
【发布时间】:2018-10-15 23:33:53
【问题描述】:

我正在做一个 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> 形式的行是什么意思?

【问题讨论】:

    标签: syntax ocaml semantics


    【解决方案1】:

    你是对的,这是一个生成的文件。也就是说,它是从一个名为 lexer.mll 的文件(它是一个 ocamllex 文件)中生成的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多