0

私はfslexとfsyaccを使用してきましたが、F#ソースファイル(.fsレクサー(.fsl)とパーサー(.fsp)のルールから生成されます)は、このようなステートメントであらゆる場所で元.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
...

また、.fsによって生成されたファイルpars.fspも同じようなことをしますが、それと一緒に生成されたF#署名ファイル(.fsi)への参照が追加されます。これはどういう意味ですか?

4

1 に答える 1

2

生成されたコードに表示されるアノテーションは、F#コンパイラディレクティブ(具体的には、「line」ディレクティブ)です。

'line'ディレクティブを使用すると、F#コンパイラが生成されたコードの一部に対して警告/エラーメッセージを出力する必要がある場合に、元のファイルのどの部分が生成されたコードのその部分に対応するかを判断できます。つまり、F#コンパイラは、エラーの原因となる生成されたコードの基礎となる元のコードを参照する警告/エラーメッセージを生成できます。

于 2013-03-15T03:10:04.733 に答える