Ошибки fsyacc при сборке в Visual Studio
Я использую fsyacc в Visual Studio (используя шаблон Parsed Language Starter), но вывод сборки не показывает строку / столбец, где произошла ошибка (только: fsyacc завершен с кодом 1). Я должен собрать из командной строки, чтобы получить эту информацию, несколько сводя на нет преимущества интеграции VS.
Есть ли способ показать это в окне вывода?
РЕДАКТИРОВАТЬ
Вот несколько примеров ошибок, которые не отображаются в окне вывода.
Parser.fsy (74,4): ошибка: ошибка синтаксического анализа
а также
строительные столы FSYACC: ошибка FSY000: нетерминальный "запрос" не имеет производств
Вот результат успеха, который было бы приятно видеть также:
строительные столы вычисление первой функции... время: 00:00:00.1318603 сборка ядер... время: 00:00:00.1027372 сборка таблицы ядра... время: 00:00:00.0533044 вычисление перспективных отношений........................................... время: 00:00:00.0517415 строительная таблица... время: 00:00:00.0207993 таблица действий здания... состояние 29: ошибка сдвига / уменьшения на AS состояние 49: сдвиг / уменьшение ошибки при ИЛИ состояние 49: сдвиг / уменьшение ошибки на И... время: 00:00:00.1457792 построение таблицы... время: 00:00:00.0035636 возвращая таблицы. 39 сдвиг / уменьшение конфликтов 62 государства 11 нетерминалов 41 терминал 46 постановок #rows в таблице действий: 62
1 ответ
Вместо использования шаблона Parsed Language Starter, я создаю парсер / лексер, используя Pre-build event
в Build Events
от VS Project Properties:
fslex "$(ProjectDir)Lexer.fsl"
fsyacc --module Grammar "$(ProjectDir)Grammar.fsy"
Это не очень желательно, так как я должен установить fsyacc / fslex в переменной среды Path. Всякий раз, когда я не хочу перестраивать парсер / лексер, я должен закомментировать следующую часть в файле fsproj:
<PropertyGroup>
<PreBuildEvent>fslex "$(ProjectDir)Lexer.fsl"
fsyacc --module Grammar "$(ProjectDir)Grammar.fsy"
</PreBuildEvent>
</PropertyGroup>
Тем не менее, победный момент очевиден. У нас есть все сообщения, включая сообщения об ошибках и успехах в stdout
что удобно для отладки.