有没有人能为我指出针对包含语法错误或缺少必要标点符号等代码的解析技术的参考文献呢?
我正在开发一个集成开发环境,我们希望在不要求在调用函数时源代码处于语法正确状态的情况下,提供"跳转到定义"、自动完成和重构功能等特性。
我见过的大多数解析器代码似乎都是基于"早期失败"原则工作的,而非专注于错误恢复或解析部分完成的代码。
有没有人能为我指出针对包含语法错误或缺少必要标点符号等代码的解析技术的参考文献呢?
我正在开发一个集成开发环境,我们希望在不要求在调用函数时源代码处于语法正确状态的情况下,提供"跳转到定义"、自动完成和重构功能等特性。
我见过的大多数解析器代码似乎都是基于"早期失败"原则工作的,而非专注于错误恢复或解析部分完成的代码。
您尝试过ANTLR吗?
在 "The Definitive ANTLR Reference" 中,Terrence在第10.7节中讨论了5页的自动错误恢复策略。他引用了Algorithms + Data Structures = Programs,A Note on Error Recovery in Recursive Descent Parsers,Efficient and Comfortable Error Recovery in Recursive Descent Parsers。
此外,请参阅网站上的页面:
同时,查看 ANTLR 标签以访问 ANTLR 论坛,Terrence Parr 在那里回答问题。他在这里作为 ANTLR 专家 回答一些问题。
抱歉听起来像是在推销,但我已经使用 ANTLR 多年了,因为它被许多人使用,在生产系统中得到应用,有几个稳定的版本:Java、C、C#,拥有一个非常活跃的社区,有一个网站,有书籍,正在不断发展,维护良好,开源,采用 BSD 许可证,易于使用,并且有一些 GUI 工具。
其中一个正在为 ANTLR 4 编写 GUI 的人是 Sam Harwell。如果您可以通过 ANTLR 论坛联系到他,他可能能够帮助您。
;
,但接收到int
,则解析器可以继续,就好像在该源位置插入了;
一样。