【问题标题】:Paring program language with dynamic precedences?以动态优先级解析程序语言?
【发布时间】:2018-08-18 14:05:26
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python parsing prolog operator-precedence lepl


    【解决方案1】:

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

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

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

    【讨论】:

    • 但是你的例子不是暗示我必须自己实现解析器!我宁愿利用现有的解析器;(,而不是重新发明轮子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 2014-09-25
    • 2015-07-09
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多