我正在使用 Irony.Net ( https://irony.codeplex.com/ ) 并且一直在使用 SQL 语法。现在我有解析器和项目来正确解析我的语句。(我必须在默认语法中添加参数支持)。
现在我的问题很简单。在我操纵了 ParseTree 之后,我想重建针对 ParseTree 的语句。
Irony 是否有针对树重建原始解析文本的方法,还是我需要为此编写自己的系统?
我很好地编写自己的系统,但如果它已经到位,我宁愿使用它。
我正在使用 Irony.Net ( https://irony.codeplex.com/ ) 并且一直在使用 SQL 语法。现在我有解析器和项目来正确解析我的语句。(我必须在默认语法中添加参数支持)。
现在我的问题很简单。在我操纵了 ParseTree 之后,我想重建针对 ParseTree 的语句。
Irony 是否有针对树重建原始解析文本的方法,还是我需要为此编写自己的系统?
我很好地编写自己的系统,但如果它已经到位,我宁愿使用它。
在使用 Irony.Net 解析器相当长的一段时间后,在您操作 ParseTree 之后重建原始解析字符串似乎相对困难。
这样做的原因是除非您保留空格,并且分配的标点符号解析树会自动删除这些条目。
现在,解析树的一部分确实为您提供了原始字符串中存在令牌 \ 术语的字符的“跨度”。
鉴于跨度详细信息,您基本上可以通过在跨度标记处删除原始语句中的字符来重建语句。
经过多次讨论后发现,尽管 Irony.Net 项目在将您的语句解析为 AST 方面非常出色,但该项目并不适合处理解析树。
话虽如此,我们仍在使用 Irony.Net 项目来解决其他问题。