在Visual Studio中构建时出现fsyacc错误

时间:2012-02-17 16:58:12

标签: visual-studio-2010 msbuild f# fsyacc

我在Visual Studio中使用fsyacc(使用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

1 个答案:

答案 0 :(得分:3)

我没有使用Parsed Language Starter模板,而是使用来自VS Project Properties的Pre-build event中的Build Events来构建解析器/词法分析器:

fslex "$(ProjectDir)Lexer.fsl"
fsyacc --module Grammar "$(ProjectDir)Grammar.fsy"

由于我必须在Path环境变量中设置fsyacc / fslex,因此不太理想。每当我不想重建解析器/词法分析器时,我必须在fsproj文件中注释掉以下部分:

<PropertyGroup>
  <PreBuildEvent>fslex "$(ProjectDir)Lexer.fsl"
                 fsyacc --module Grammar "$(ProjectDir)Grammar.fsy"
  </PreBuildEvent>
</PropertyGroup>

然而,获胜点很明确。我们在stdout中包含所有消息,包括错误和成功输出,便于调试。