Ошибки 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 что удобно для отладки.

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