我目前正在使用 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 行有错误。