7

我正在开发一个小型 Haskell 项目,该项目需要能够将一个非常小的严格格式的英语子集转换为用于语义解析的标记。对于具有许多不同末端执行器的系统来说,这是一个非常幼稚的自然语言界面,而不是可以发出命令。我目前正在为此使用 Alex,但 Alex 依赖其词典进行静态编译。系统的本质是编译后世界上末端执行器的数量甚至类型可以增加也可以减少,因此我需要能够在运行时从词典中添加或删除可行的标记。

我试过四处寻找动态词法分析解决方案,我能得到的最接近的是这个动态词法引擎,它看起来自 2000 年以来就没有更新过。

我一直在考虑一些技术,比如使用不太高级的方法(也许是 Attoparsec),或者甚至为 Alex 连接一个重新编译钩子并将词法分析器与应用程序的其余部分分开。

这种词法分析有什么众所周知的解决方案吗?我打算最终为工作程序员完成自然语言处理,这样我就可以采取一种不太简化的方法,但目前我需要一个基本的词法分析器。

4

1 回答 1

4

CTK相当于 parsec,但用于词法分析。它支持动态添加新的组合器。

于 2013-02-08T09:44:54.860 回答