解析 Antlr4 中字符串内的标记



我正在尝试了解如何编写语法,该语法将首先解析字符串的输入,然后在找到字符串时解析该字符串。

例如,如果我有一个输入,例如:

var1 = "world"
someVariable = "hello {{var1}}"

我想要的结果是 someVariable 等于"hello world"。

现在,我了解如何编写语法以将变量设置为字符串,但我无法弄清楚的是,如何解析该字符串以获取胡子语法,以便在 var1 中注入值。

提前感谢!

通过两个步骤更容易做到这一点:

  • 像往常一样解析输入(即确定赋值,而不分析字符串的内容(
  • 然后评估作业
    • 将字符串分配给变量时,使用另一个解析器解析其内容(如果语法足够简单,甚至可以只使用正则表达式(来确定任何替换。

这不是ANTLR所做的。ANTLR 当然可以解析您的输入,甚至可以单独标记"hello {{var1}}"1,但它不会评估var1并替换它。这是您在 ANTLR 完成解析2后需要做的事情。

  1. 查看有关词法模式的文档:https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md#lexical-modes
  2. 这个问答展示了一个简单的例子,如何使用访问者评估某些东西:使用侦听器的ANTLR中的if/else语句

相关内容

  • 没有找到相关文章

最新更新