Haskell的交互式分析

Haskell的交互式解析

(添加081113)

该项目的目标是为Haskell编程开发一个解析器语法软件编辑器中使用的语言,例如.

大多数编程环境都向程序员提供交互式反馈。这种反馈通常主要基于源代码的语法分析正在编辑。

为了给出有意义的反馈,所使用的解析器必须是:

稳健
应尽可能优雅地处理输入中的错误。理想情况下,输入中的错误应该只对解析产生局部影响。
高效
快速反馈很重要。如果反馈很慢,要么用户将不得不频繁暂停,扰乱他们的工作,要么他们有可能对过时、不正确的信息做出反应。在这个项目中,我们的目标是在每次击键后获得准确的反馈。
精确
解析器执行的分析应该尽可能接近编译器的分析。

编辑器通常具有基于正则表达式的解析器,这些解析器高效且健壮,但缺乏准确性:他们无法识别复杂结构。编译器中使用的分析器是精确的,但通常不健壮:它们无法出错后恢复。它们在编辑方面也效率低下,因为他们必须从一开始就分析文件,即使用户对输入的增量更改。更多现代IDE使用编译器强度解析器,但它们会向用户提供延迟的反馈。用good构建解析器特征具有挑战性:没有一个系统提供这样的组合属性。

Yi有一个解析库来帮助构建健壮高效的解析器。这个库用于为Haskell提供支持,其精度介于正则表达式匹配器和编译器。

为了完成这个项目,学生应该为Haskell编写一个解析器结合了健壮性、效率和精度。可以使用现有的解析库,但它的改进可能是必修的。

背景
AFP(Haskell),编程语言
人数
1-2
联系人
珍妮·菲利佩