Antlr v4 中的值匹配

value matching in Antlr v4


我正在尝试为我正在使用的逻辑创建一个解析器。
我有一个 Pb 的表达式的形式是:
Ag ( s1 , SC( s3 , s2 , p) ) .
我想确保 s1 = s3 。
但是 s1 是一个随机字符串,定义为

VAR_NAME : [a-zA-Z]+[a-zA-Z0-9]*; 

所以规则是这样的:

s : 'Ag' '(' VAR_NAME ',' 'SC' '(' VAR_NAME ',' VAR_NAME ',' pathformula ')' ')';

我需要第一个和第二个 VAR_NAME 相等!

是否有类似标签强制 s1 和 s3 值相同?

如果两个变量不相同,则使用谓词使规则失败。基本形式为:

rule : x=VAR_NAME y=VAR_NAME { $x.equals($y) }? ; // presuming Java backend

标签可以像规则元素一样方便区分 - 否则您可以直接使用规则元素名称。