私は私の会社の中で20歳の独自の言語を補強するのを手伝ってきました。これは、大きな、チューリング完全な言語です。それを別の文法体制(Antlrなど)に翻訳することは選択肢ではありません(私はこれを決めることはできません)。Yacc文法デバッガはありますか?
ほとんどの場合、文法の拡張はスムーズに行われました。しかし、すべて一度しばらくの間中、私は、削減削減またはシフト削減
- は時々ちょうど(私の弱々しい脳に)意味がありません
- を排除することは困難であることを得るでしょう
y.outputのファイルと実験的な文法のリファクタリングで苦労して多くのことを見つめた後、私は通常どこに行きたかったのですか?時々私は不満足な妥協をしなければならなかった。
yaccの文法を吸い取ることができるツールはありますか?ブラウジングを強化し、実験を行い、変更のデバッグを許可しますか?
プロダクションを追加した場合、「どこでも使用されている原子生産」(思考識別子)「ルールfooとの競合」よりも多くを見たいと思います(はい、s/r、r/r、それよりも、私はあなたが私のドリフトを得ると思う)。私の考えを覆し、シンボルスタックと状態機械を想像しようとする以上の相互作用のヒントを持つことはいいことです。
更新:私は明確にすべきだと思います。私たちはBerkeley Yaccを使います。私は最近のバージョンのBisonを使ってテストしています。出力のために、文法を--report = itemsetとコンパイルしました。この記事で
私の目標は、オーグメント文法のデバッグ機能のyaccと船外部ツールを模索することです。今日はデフォルト設定で痛いです。 Antlrで使用できるような優れた対話型ツールを見つけるのに役立ちます。 - それは、基本的には完全なシンボルスタック状態のリストと、そのようなを与える http://tldp.org/HOWTO/Lex-YACC-HOWTO-7.html
あなたが何を意味するのか分かりません。どちらのyaccsでも-dは "トークンマクロのヘッダファイルを出力する"ことを意味します。 スイッチ--report = itemsetの使用に関する詳細を追加しました。これはあなたが意味するものですか?すべての状態遷移情報からいっぱいのファイルy.outputを生成します。私はそれを使用していますが、より強力でインタラクティブなツールを望んでいました。 –
Jerryが正しいです、S/Rの競合は必ずしもバグではありません。ほぼすべての実際の文法にはたくさんのものがあります。 – DigitalRoss