私はAntlrが初めてです。CSSパーサーを実装しようとしています。まず、この文法を使用してパーサーを生成しています。私はガイドとしてこのチュートリアルに従っています。Antlr 3.4 を使用して C# でコードを生成しています (次は、Antlr 4.0 も使用してみます)。
私はいくつかの問題に直面しており、インターネット上でそれらを明確に理解できるリソースを見つけることができませんでした。
私が抱えている問題:
さまざまなタイプ (エラー、警告) でカスタマイズされたエラー メッセージを生成します。これは Antlr で提供されていますか。これを達成する方法を理解するために、いくつかのリソースを提供してください。
私がフォローしているチュートリアルでは、解析と字句解析で例外をキャッチできました。しかし、私が試した文法では、この次のコードを追加して間違ったcssコンテンツでテストしても、エラーは発生しません。
partial class CSS3Lexer { public override void ReportError(RecognitionException e) { base.ReportError(e); Console.WriteLine("Error in lexer at line " + e.Line + ":" + e.CharPositionInLine + e.Message); } }
エラーのリスト (パーサー エラーとレクサー エラー) をある種のデータ構造 (エラー タイプ、メッセージ、場所を持つエラー オブジェクトのリスト) に収集して、別のタスクに使用できるようにしたいと考えています。これを行うためのより意味のある方法はありますか。
私はまだよりエレガントなデザインに到達することができないので、私のアプローチについても提案をしたいと思います.