在Antlr4中解析字符串内部的标记

时间:2018-06-04 18:36:29

标签: python antlr antlr4

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

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

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

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

现在,我理解如何编写语法来将变量设置为字符串,但我无法弄清楚如何解析该字符串for mustache语法以便在var1中注入值。

提前致谢!

2 个答案:

答案 0 :(得分:1)

通过两个步骤完成此操作会更容易:

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

答案 1 :(得分:0)

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

  1. 查看词汇模式的文档:https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md#lexical-modes
  2. 此Q& A显示了如何使用访问者评估内容的简单示例:If/else statements in ANTLR using listeners