Целочисленная файловая директива F#
Я использую 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
Сгенерировано рядом с ним. Что из этого делает / значит?
1 ответ
Аннотации, которые вы видите в сгенерированном коде, являются директивами компилятора F# (в частности, директивой 'line').
Директива 'line' делает это так, что когда компилятору F# необходимо выдать сообщение с предупреждением / ошибкой для некоторой части сгенерированного кода, он может определить, какая часть исходного файла соответствует этой части сгенерированного кода. Другими словами, компилятор F# может генерировать предупреждение / сообщение об ошибке, ссылающееся на исходный код, который является основой сгенерированного кода, вызывающего ошибку.