有人可以指点我参考解析包含语法错误的代码的技术,或者缺少必要的标点符号吗?
我正在开发的应用程序是一个IDE,我们希望提供“跳转到定义”,自动完成和重构功能等功能,而不需要源语法在语法上正确调用函数。
我见过的大多数解析器代码似乎都是基于“早期失败”的原则,而不是专注于错误恢复或解析部分完整的代码。
答案 0 :(得分:2)
我不知道任何论文或教程,但uu-parsinglib是一个Haskell解析库,可以通过一般方式从语法错误中恢复。例如,如果预期;
但收到int
,则解析器可以继续,就像在该源位置插入了;
一样。
由您决定解析器将失败的位置以及将在何处继续进行更正,结果将与解析期间更正的一组错误一起传递。即使您不打算在Haskell中实现解析代码,对库的检查也可能为您提供一些见解。或者您可以在Haskell和call it from C中编写解析器。