Целочисленная файловая директива 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# может генерировать предупреждение / сообщение об ошибке, ссылающееся на исходный код, который является основой сгенерированного кода, вызывающего ошибку.

Другие вопросы по тегам