在antlr4中的含义=

时间:2017-06-10 06:27:29

标签: antlr4

我有类似的语法

rule1 : GO (count=DECIMAL)? ;

rule2 : name '=' expression

我不明白' ='之间的区别登录rule1和rule2

1 个答案:

答案 0 :(得分:1)

赋值是一个变量赋值。 ANTLR4将为您生成一个名为count的成员变量,在匹配时获取DECIMAL标记(因为它是可选的,count可能为空/ null)。

您可以在侦听器代码中使用count来直接获取该值,但您也可以使用DECIMAL代替。因此,它对语法中的动作代码或谓词最有用。您可以使用例如这些变量来引用这些变量$count

rule1: GO (count = DECIMAL)? { $count.toString().toInteger() < 4}?;

仅当GO后跟一个小于4的值时才匹配。

旁注:toInteger()这里只是伪代码。使用目标的string-to-int转换API。