我正在尝试了解如何编写语法,该语法将首先解析字符串的输入,然后在找到字符串时解析该字符串。
例如,如果我有一个输入,例如:
var1 = "world"
someVariable = "hello {{var1}}"
我想要的结果是 someVariable 等于"hello world"。
现在,我了解如何编写语法以将变量设置为字符串,但我无法弄清楚的是,如何解析该字符串以获取胡子语法,以便在 var1 中注入值。
提前感谢!
通过两个步骤更容易做到这一点:
- 像往常一样解析输入(即确定赋值,而不分析字符串的内容(
- 然后评估作业
- 将字符串分配给变量时,使用另一个解析器解析其内容(如果语法足够简单,甚至可以只使用正则表达式(来确定任何替换。
这不是ANTLR所做的。ANTLR 当然可以解析您的输入,甚至可以单独标记"hello {{var1}}"
1,但它不会评估var1
并替换它。这是您在 ANTLR 完成解析2后需要做的事情。
- 查看有关词法模式的文档:https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md#lexical-modes
- 这个问答展示了一个简单的例子,如何使用访问者评估某些东西:使用侦听器的ANTLR中的if/else语句