2016-05-12 42 views
1

我正在爲一種簡單的語言編寫一個EBNF。該語言的一個功能是計算表達式並存儲在變量中。例如:動態更新ANTLR生成的分析器中的變量

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

我使用ANTLR生成一個Python語法分析器,我能計算出的值就好,建立我的數據結構。

雖然我有一個額外的要求。如果在代碼中稍後更新變量A的值,我需要B,C和D來獲得對應於A的新值。到目前爲止,我的想法是存儲每個變量的整個表達式/方程。然後一旦解析器完成第一遍,我重新評估所有存儲的表達式以獲取更新的值。

但我想知道ANTLR本身是否提供了一些掛鉤來做這樣的事情?就像一個多種類的東西?

任何指針將不勝感激。

回答

0

AFAIK,Antlr不提供此功能。

您必須保留每個表達式的解析樹,並且每個變量的依賴列表能夠重新評估那些依賴於直接或間接更改的依賴列表。

+0

是的,那正是我想要做的。希望有人能夠做到這樣的事情。好吧。 – shikhanshu