Determine whether a rule has left or right, direct or indirect, recursion.
Grammar
grammar Kleene;
s : a ;
a : a ';' e | e ;
b : e ';' b | e ;
e : e '*' e | INT ;
INT : [0-9]+ ;
WS : [ \t\n]+ -> skip ;
has dr left "//(parserRuleSpec | lexerRuleSpec)/(RULE_REF | TOKEN_REF)"
Result
s False
a True
b False
e True
INT False
WS False
has dr right "//(parserRuleSpec | lexerRuleSpec)/(RULE_REF | TOKEN_REF)"
Result
s False
a False
b True
e True
INT False
WS False