F#integer文件指令



我一直在使用fslex和fsyacc,它们从lexer(.fsl(和解析器(.fsp(规则生成的F#源文件(.fs(到处引用原始.fsl(有时也引用相同的.fs源文件(,语句如下(数字是行号(:

lex.fs
1      # 1 "/[PROJECT-PATH-HERE]/lex.fsp
...
16     # 16 "/PROJECT-PATH-HERE]/lex.fs
17     // This is the type of tokens accepted by the parser
18     type token =
19       | EOF
...

此外,pars.fsp生成的.fs文件也做同样的事情,只是额外引用了旁边生成的F#签名文件(.fsi(。这意味着什么?

您在生成的代码中看到的注释是F#编译器指令(特别是"line"指令(。

"line"指令使得当F#编译器需要为生成的代码的某个部分发出警告/错误消息时,它可以确定原始文件的哪个部分对应于生成代码的那个部分。换句话说,F#编译器可以生成引用原始代码的警告/错误消息,该原始代码是导致错误的生成代码的基础。

相关内容

  • 没有找到相关文章

最新更新