2010-06-11 67 views
0

我有一个ANTLR语法,可以解析和评估简单表达式,如1 + 2 * 4等。 我想要做的是评估像2 + $ a- $ b/4这样的表达式$变量是动态变量,来自外部来源并不断更新。ANTLR,动态变量

有没有关于如何使用ANTLR,最佳实践等的任何设计模式?

  • 要我 “串” 在$一个更新后的值($ A - > 4.34)
  • 一个更好的方式来做到这一点?

THX

回答

3

实际上有一个例子为这个在ANTLR书(ANTLR权威参考。)的图案是解析变量值并将其添加到在目标语言的字典:

@members { var dict = new Dictionary<string, int>(); } 

decl: v=ID '=' v=expr { dict[$e.Text] = int.Parse($v.Value); }; 

ID : '$' ('a'..'z'|'A'..'Z')+; 

其中“expr”可以是任何有效的表达式(包括含有变量的表达式)。