Troubles with returns declaration on the first parser rule in an ANTLR4 grammar -


i using returns parser rules works parser rules except first one. if first parser rule in grammer uses returns declaration antlr4 complains follows:

expecting arg_action while matching rule

if add parser rule above not use "returns" antlr not complain.

here have grammar reduced problem:

grammar firstparserrulereturnissue; id  :   ('a'..'z'|'a'..'z'|'_') ('a'..'z'|'a'..'z'|'0'..'9'|'_')*; arule returns [string s]: id { $s = $id.text; }; 

i searched find special role of first rule explain behaviour did not find anything. bug? miss understanding?

you need place parser rules (start lowercase letter) before lexer rules (start uppercase letter) in grammar. after encountering lexer rule, [ triggers lexer_char_set instead of arg_action, token stream seen compiler looks you're passing set of characters return value should be.


Comments