.net 如何使用C#恢复Irony Parser中的解析错误?

4nkexdtk  于 11个月前  发布在  .NET
关注(0)|答案(1)|浏览(65)

我目前正在使用Irony解析器,我似乎还没有找到那么多文档。这次我想做一些类似于野牛中的错误恢复的事情,在那里你可以得到错误所在的行和行。我真的不知道如何在这样的语法中获取错误信息,例如:

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行有错误。

p5fdfcr1

p5fdfcr11#

我发现在Github上搜索Alxandr制作的Irony克隆要容易得多:https://github.com/Alxandr/Irony/的数据。
结构SourceLocation出现以跟踪位置、直线和列。
根据我所看到的,LogMessageList类型的Parser.ParsingContext.CurrentParseTree.ParserMessages集合包含解析器消息列表和错误发生的位置。
语法错误以错误标记的形式出现在语法树中。这些令牌将具有TokenCategoryError。位置属性似乎包含位置数据。

相关问题