2

正如您在 Prolog 中所知道的,您可以使用 op/3 动态定义优先级。我正在用 Python 实现自己的 Prolog。已经有工作原型,但我仍然通过有限的 python 伪序言更新数据库。我的下一步是实现解析器。我可以做没有 op-precedence 的静态语法。

我的问题一般是如何实现优先级的?有什么说法吗?

它不必是完全动态的 op/3 即我会没事的,即使我必须在开始解析之前预加载 op-table。我想我可以事先通过字符串操作来修改语法。

如果重要的话,我可能会使用 LEPL:http ://www.acooke.org/lepl/。

4

1 回答 1

0

我通过堆栈实现了动态行为,该堆栈由“Reduce”操作扩展,检查表达式何时“关闭”。工作细节在这里在这里使用,但它是如此简单,我建议从头开始......

我的问题一般是如何实现优先级的?有什么说法吗?

我认为正确的词就是:优先。正如我在编译器构建课程中的老师所建议的那样(很久以前),由于用于有效解析的标准算法没有涵盖动态定义,因此只需设计一种“临时”方法。这就是我在链接源中所做的......

于 2018-03-10T08:31:15.380 回答