ANTLR,动态变量

发布于 2024-09-05 11:46:42 字数 219 浏览 1 评论 0原文

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

是否有关于如何使用 ANTLR、最佳实践等来做到这一点的设计模式?

  • 我应该用更新后的值($a -> 4.34)“子串” $a
  • 更好的方法吗?

谢谢

I have an ANTLR grammar that can parse and evaluate simple expressions like 1+2*4, etc.
What I would like to do is to evaluate expressions like 2+$a-$b/4 where the $ variables are dynamic variables, that come from an external source and are continuously updated.

Is there any design pattern on how to do this using ANTLR, best practices, etc?

  • Shall I "substring" the $a with the updated value ($a -> 4.34)
  • A nicer way to do this?

Thx

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

神也荒唐 2024-09-12 11:46:42

实际上,ANTLR 书中有一个示例(ANTLR Definitive Reference)。该模式是解析变量值并将它们添加到目标语言的字典中:

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

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

ID  : '

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

('a'..'z'|'A'..'Z')+;

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

There is actually an example for this in the ANTLR book (the ANTLR Definitive Reference.) The pattern is to parse the variable values and add them to a dictionary in the target language:

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

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

ID  : '

where 'expr' can be any valid expression (including an expression containing a variable.)

('a'..'z'|'A'..'Z')+;

where 'expr' can be any valid expression (including an expression containing a variable.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文