2

我在 Visual Studio 中使用 fsyacc(使用 Parsed Language Starter 模板),但构建输出不显示发生错误的行/列(仅:fsyacc exited with code 1)。我必须从命令提示符构建才能获取此信息,这在某种程度上否定了 VS 集成的好处。

有没有办法在输出窗口中显示这个?

编辑

以下是输出窗口中未显示的一些错误示例。

Parser.fsy(74,4):错误:解析错误

构建表
FSYACC: 错误 FSY000: NonTerminal 'query' 没有产生

这里的成功输出也很高兴看到:

构建表
计算第一个函数...时间:00:00:00.1318603
构建内核...时间:00:00:00.1027372
构建内核表...时间:00:00:00.0533044
计算前瞻关系..........................
.............时间:00:00:00.0517415
构建前瞻表...时间:00:00:00.0207993
构建操作表...状态 29:AS 上的移位/减少错误
状态 49:OR 上的移位/减少错误
状态 49:AND 上的移位/减少错误
...
时间:00:00:00.1457792
构建 goto 表...时间:00:00:00.0035636
返回表。
39 班次/减少冲突
62 个州
11 个非终结符
41个终端
46 部作品
#rows in action table: 62
4

1 回答 1

3

我没有使用 Parsed Language Starter 模板,而是使用VS 项目属性中的Pre-build eventin构建解析器/词法分析器:Build Events

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

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

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

不过,胜负点很明确。我们有所有消息,包括错误和成功输出,stdout方便调试。

于 2012-02-18T16:32:24.280 回答