我正在为一种简单的语言编写EBNF。该语言的一个功能是计算表达式并存储在变量中。例如:
A = 5
B = A + 2
C = B / (A * 2)
D = C - B + A
我正在使用ANTLR生成一个Python解析器,我能够很好地计算这些值并构建我的数据结构。
我有一个额外的要求。如果稍后在代码中更新变量A的值,我需要B,C和D来获得与A对应的新值。 到目前为止,我的想法是存储每个变量的整个表达式/方程式。然后,一旦解析器完成了第一次传递,我就会重新评估所有存储的表达式以获取更新的值。
但是我想知道ANTLR本身是否提供了一些钩子来做这样的事情?就像一种多次传递的东西?
任何指针都将受到赞赏。
答案 0 :(得分:0)
AFAIK,Antlr不提供此类功能。
您必须保留每个表达式的解析树,并且每个变量的依赖关系列表能够重新评估那些取决于直接或间接更改的那些变量。