私は現在、Irony パーサーを使用していますが、まだそれほど多くのドキュメントを見つけていないようです。今回は、エラーが発生した行と行を取得する Bison でのエラー回復のようなことをしたいと思います。たとえば、次のような文法でエラー情報を取得する方法がよくわかりません。
NumberLiteral number = new NumberLiteral("number");
NonTerminal S = new NonTerminal("S");
NonTerminal E = new NonTerminal("E");
S -> E;
E -> E + E
|E - E
|E / E
|E * E
|number;
this.Root = S;
RegisterOperators(1, "+", "-");
RegisterOperators(2, "*", "/");
そして、エラーがあることを示すだけでなく、「2++」のようなものを入力すると、1 行目の 2 行目にエラーがあったことを報告します。