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
标签可以像规则元素一样方便区分 - 否则您可以直接使用规则元素名称。
我正在尝试为我正在使用的逻辑创建一个解析器。
我有一个 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
标签可以像规则元素一样方便区分 - 否则您可以直接使用规则元素名称。