【问题标题】:Dynamically updating variables in ANTLR generated parser在 ANTLR 生成的解析器中动态更新变量
【发布时间】:2016-05-12 18:28:40
【问题描述】:

我正在为一种简单的语言编写 EBNF。该语言的功能之一是计算表达式并存储在变量中。例如:

A = 5
B = A + 2
C = B / (A * 2)
D = C - B + A

我正在使用 ANTLR 生成 Python 解析器,并且能够很好地计算值并构建我的数据结构。

不过,我有一个额外的要求。如果稍后在代码中更新变量 A 的值,我需要 B、C 和 D 来获取与 A 对应的新值。 到目前为止,我的想法是为每个变量存储整个表达式/方程。然后,一旦解析器完成了第一遍,我就会重新评估所有存储的表达式以获取更新的值。

但我想知道 ANTLR 本身是否提供了一些钩子来做这样的事情?像多通道之类的东西?

任何指针将不胜感激。

【问题讨论】:

    标签: python antlr


    【解决方案1】:

    AFAIK,Antlr 不提供此类功能。

    您必须保留每个表达式的解析树,以及每个变量的依赖列表,以便能够重新评估那些依赖于直接或间接更改的变量。

    【讨论】:

    • 是的,我就是这么想的。希望外面有人已经做了这样的事情。哦,好吧。
    猜你喜欢
    • 1970-01-01
    • 2018-09-22
    • 2021-08-15
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 2010-10-15
    • 1970-01-01
    相关资源
    最近更新 更多