ошибки fsyacc при сборке в Visual Studio

Я использую fsyacc в Visual Studio (используя шаблон Parsed Language Starter), но выходные данные сборки не показывают строку/столбец, где произошла ошибка (только: fsyacc завершил работу с кодом 1). Мне нужно выполнить сборку из командной строки, чтобы получить эту информацию, что несколько сводит на нет преимущества интеграции с VS.

Есть ли способ показать это в окне вывода?

РЕДАКТИРОВАТЬ

Вот несколько примеров ошибок, которые не отображаются в окне вывода.

Parser.fsy(74,4): error: parse error

а также

building tables
FSYACC: error FSY000: NonTerminal 'query' has no productions

Вот результат успеха, который также хотелось бы увидеть:

building tables
computing first function...time: 00:00:00.1318603
building kernels...time: 00:00:00.1027372
building kernel table...time: 00:00:00.0533044
computing lookahead relations.............................
..............time: 00:00:00.0517415
building lookahead table...time: 00:00:00.0207993
building action table...state 29: shift/reduce error on AS
state 49: shift/reduce error on OR
state 49: shift/reduce error on AND
...
time: 00:00:00.1457792
building goto table...time: 00:00:00.0035636
returning tables.
39 shift/reduce conflicts
62 states
11 nonterminals
41 terminals
46 productions
#rows in action table: 62

person Daniel    schedule 17.02.2012    source источник
comment
Это действительно дает красные закорючки в файле .fsy несколько раз (возможно, потребуется очистить решение и перестроить).   -  person Stephen Swensen    schedule 17.02.2012
comment
Я использовал fsyac совсем немного и еще не видел этого. Может быть, моя конфигурация испорчена.   -  person Daniel    schedule 17.02.2012
comment
На самом деле, вы можете быть правы, я только что попробовал и не смог создать сценарий, который порождал бы красные закорючки. Но я получил красные загогулины с моим файлом .fsl fslex, должно быть, думал об этом.   -  person Stephen Swensen    schedule 17.02.2012
comment
@StephenSwensen: я нашел красные волнистые линии. Сначала необходимо проанализировать файлы fsy и fsl. Как только это произойдет, некоторые ошибки будут выделены.   -  person Daniel    schedule 17.02.2012
comment
Возможно, fsyacc выводит на стандартный вывод, а не на стандартный вывод? Интересно, исправит ли это обертывание в скрипт для перенаправления вывода?   -  person Brian    schedule 18.02.2012
comment
@Brian: Нет, это будет стандартный вывод.   -  person Daniel    schedule 18.02.2012
comment
Да, когда я использую fslex/fsyacc, он ведет себя так же (нет подробного вывода в окне вывода). У меня просто открыто отдельное окно консоли для целей отладки. Было бы неплохо, если бы это сработало, но я думаю, что это довольно немногие функции.   -  person Tomas Petricek    schedule 18.02.2012


Ответы (1)


Вместо использования шаблона Parsed Language Starter я создаю парсер/лексер, используя Pre-build event в Build Events из свойств проекта VS:

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

person pad    schedule 18.02.2012