Mar*_*sey 8 parsing programming-languages heuristics
有人可以指点我在解析包含语法错误的代码的技术,或者缺少必要的标点符号吗?
我正在处理的应用程序是一个IDE,我们希望提供诸如"跳转到定义",自动完成和重构功能之类的功能,而不需要在调用函数时源语法正确. .
我见过的大多数解析器代码似乎都是基于"早期失败"的原则,而不是专注于错误恢复或解析部分完整的代码.
你试过ANTLR吗?
在《The Definitive ANTLR Reference》中,5页的Terrence第10.7节自动错误恢复策略谈到了这一点。他引用了算法+数据结构=程序、递归下降解析器中的错误恢复注意事项、递归下降解析器中的高效且舒适的错误恢复。
另请参阅网站的页面:
另请检查ANTLR标签以访问 ANTLR 论坛,Terrence Parr 在此回答问题。他确实以ANTLR Guy 的身份在这里回答了一些问题。
抱歉,听起来像是推销,但我已经使用 ANTLR 多年了,因为它被很多人使用,用于生产系统,有一些可靠的版本:Java、C、C#,有一个非常活跃的社区,有一个网站,有书籍,正在不断发展、维护、开源、BSD 许可证、易于使用并且有一些 GUI 工具。
Sam Harwell 是为 ANTLR 4开发GUI的人之一,该 GUI 具有语法突出显示和自动完成功能以及其他有用的 IDE 编辑功能。如果您可以通过 ANTLR 论坛联系他,他也许可以帮助您。
我不知道\xe2\x80\x99t 任何论文或教程,但uu-parsinglib是一个 Haskell 解析库,可以以一般方式从语法错误中恢复。例如,如果;
预期但int
已收到,则解析器可以继续,就像;
插入到该源位置一样。
\xe2\x80\x99 由您决定解析器在哪里会失败以及在哪里进行更正,并且结果将与解析期间纠正的一组错误一起交付。即使您不打算在 Haskell 中实现解析代码,对该库的检查也可能为您提供一些见解。或者您可以用 Haskell 编写一个解析器并从 C 调用它。
\n