正如您在 Prolog 中所知道的,您可以使用 op/3 动态定义优先级。我正在用 Python 实现自己的 Prolog。已经有工作原型,但我仍然通过有限的 python 伪序言更新数据库。我的下一步是实现解析器。我可以做没有 op-precedence 的静态语法。
我的问题一般是如何实现优先级的?有什么说法吗?
它不必是完全动态的 op/3 即我会没事的,即使我必须在开始解析之前预加载 op-table。我想我可以事先通过字符串操作来修改语法。
如果重要的话,我可能会使用 LEPL:http ://www.acooke.org/lepl/。