antlr-选择性地象征一个字符串



我是Antlr的新手,我正在尝试编写语法以选择性地将字符串示为字符串。我非常感谢有关在哪里寻找的任何帮助/指示,以及实施此操作的方法。

例如,字符串"禁用"出现在设备的各个地方的输出中,

section1 {
  property1 disabled 
}
section2 {
  disabled
}
section3 {
  property2 disabled
}

语法:

section2  
: 'section2' '{'
'disabled' a_disabled=NL
'}'
;

这最终将字符串"禁用"引起,从而将"分配给property1和propert2,而意图是在第2节中对"禁用"并将其分配给a_disabled。预期的JSON输出将是:

{"section1": 
   {
     "property1": "disabled"
   },
 "section2":
   {
     "disabled": "true",
   },
 "section3":
   {
     "property2": "disabled"
   },
}

我编写了代码以正确分配节2:禁用为" true",但是属性1和属性2值被分配了"。

{"section1": 
   {
     "property1": ""
   },
 "section2":
   {
     "disabled": "true",
   },
 "section3":
   {
     "property2": ""
   },
}

ANTLR调试输出表明,"禁用"的所有出现都被标记化。

做到这一点的最佳方法是什么?经过文档后,似乎模式或语义谓词将起作用。我们还使用Antlr 4.7并进行。

我不太确定您想从描述中实现什么,而且还不清楚您如何选择'选择性地将字符串化',但是该语法呢:

section: ID '{' ID? 'disabled' '}'
WS : [ nu000D] -> skip ; 
ID : [a-zA-Z] [a-zA-Z0-9]* ;

然后将其余的作为对解析树的操作?如果您提供了更多信息,我将更新答案。

相关内容

  • 没有找到相关文章

最新更新