2

Visual Studio 内で fsyacc を使用しています (Parsed Language Starter テンプレートを使用) が、ビルド出力にはエラーが発生した行/列が表示されません (のみ: fsyacc はコード 1 で終了しました)。この情報を取得するには、コマンド プロンプトからビルドする必要があり、VS 統合の利点が多少損なわれます。

これを出力ウィンドウに表示する方法はありますか?

編集

出力ウィンドウに表示されないエラーの例を次に示します。

Parser.fsy(74,4): エラー: 解析エラー

テーブルの構築
FSYACC: エラー FSY000: NonTerminal 'query' has no productions

これも見たいと思う成功の出力です:

テーブルの構築
最初の関数を計算しています...時間: 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
後藤テーブルを構築しています...時間: 00:00:00.0035636
テーブルを返します。
39 シフト/リデュース コンフリクト
62州
11 個の非終端記号
41端末
46作品
アクション テーブルの行数: 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 環境変数に fsyacc/fslex を設定する必要があるため、あまり望ましくありません。パーサー/レクサーを再構築したくないときはいつでも、fsproj ファイルの次の部分をコメントアウトする必要があります。

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

しかし、勝点は明らかです。stdoutデバッグに便利なエラーと成功の出力を含むすべてのメッセージがあります。

于 2012-02-18T16:32:24.280 に答える