削减具有动态优先级的程序语言?

时间:2018-03-09 22:42:47

标签: python parsing prolog operator-precedence lepl

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

我的问题如何优先实施优先权?有没有一个词呢?

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

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

1 个答案:

答案 0 :(得分:0)

我通过堆栈实现动态行为,通过'Reduce'操作扩展,检查表达式何时“关闭”。工作细节herehere用于使用,但它很简单,我建议从头开始......

  

我的问题如何优先实施优先权?有没有一个词呢?

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