我正在研究一个小型的Haskell项目,该项目需要能够将一小部分严格形成的英语用于令牌以进行语义分析。对于具有许多不同末端效应器的系统而言,它是一种非常天真的自然语言接口,而不是可以发出的命令。我目前正在使用Alex,但Alex依赖其词典进行静态编译。系统的性质使得世界上末端效应器的数量甚至类型都可以在编译后增加和减少,因此我需要能够在运行时从词典中添加或删除可行的令牌。
我一直在寻找动态lexing解决方案,而我能得到的最接近的是this动态Lexer引擎,它自2000年以来一直没有更新过。
我一直在考虑一些技术,比如使用较低级别的方法(也许是Attoparsec),甚至为Alex配置重新编译钩子并将词法分析器与应用程序的其余部分分开。
这种词汇分析是否有任何众所周知的解决方案?我打算最终通过Natural Language Processing for the Working Programmer,所以我可以采取一种不那么简化的方法,但目前基本的词法分析器是我需要的。