Antlr 动态变量

Antlr 动态变量,antlr,Antlr,我有一个ANTLR语法,可以解析和计算简单的表达式,比如1+2*4,等等。 我想做的是计算表达式,比如2+$a-$b/4,其中$variables是动态变量,来自外部源并不断更新 关于如何使用ANTLR、最佳实践等实现这一点,是否有任何设计模式 我应该用更新后的值($a->4.34)将$a“子串”起来吗 这样做更好吗 Thx事实上,在ANTLR手册(ANTLR权威参考)中有一个例子。模式是解析变量值并将其添加到目标语言的词典中: @members { var dict = new Dicti

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

关于如何使用ANTLR、最佳实践等实现这一点,是否有任何设计模式

  • 我应该用更新后的值($a->4.34)将$a“子串”起来吗
  • 这样做更好吗

Thx

事实上,在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')+;
@members{var dict=new Dictionary();}
decl:v=ID'='v=expr{dict[$e.Text]=int.Parse($v.Value);};
ID:'$'('a'..'z'|'a'..'z')+;

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

在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')+;
@members{var dict=new Dictionary();}
decl:v=ID'='v=expr{dict[$e.Text]=int.Parse($v.Value);};
ID:'$'('a'..'z'|'a'..'z')+;
其中“expr”可以是任何有效表达式(包括包含变量的表达式)