I have to parse the following query using antlr
sys_nameLIKEvalue
Here sys_name is a variable which has lower case and underscores. LIKE is a fixed key word.
value is a variable which can contain lower case uppercase as well as number.
Below the grammer rule i am using
**expression : parameter 'LIKE' values EOF;
parameter : (ID);  
ID : (LOWERCASE) (LOWERCASE | UNDERSCORE)* ; 
values : (VALUE);
VALUE :  (LOWERCASE | NUMBER | UPPERCASE)+ ;
LOWERCASE : 'a'..'z' ;
UPPERCASE : 'A'..'Z' ;
NUMBER : '0'..'9' ;
UNDERSCORE : '_' ;**
Test Case 1
Input : sys_nameLIKEabc
error thrown : line 1:8 missing 'LIKE' at 'LIKEabc'
Test Case 2
Input : sysnameLIKEabc
error thrown : line 1:0 mismatched input 'sysnameLIKEabc' expecting ID
				
                        
A literal token inside your parser rule will be translated into a plain lexer rule. So, your grammar really looks like this:
Since lexer rules are greedy, and if two or more lexer rules match the same amount of character the first will "win", your input is tokenized as follows:
Input:
sys_nameLIKEabc, 2 tokens:sys_name:IDLIKEabc:VALUEInput:
sysnameLIKEabc, 1 token:sys_nameLIKEabc:VALUESo, the token
LIKEwill never be created with your test input, so none of your parser rule will ever match. It also seems a bit odd to parse input without any delimiters, like spaces.To fix your issue, you will either have to introduce delimiters, or disallow your
VALUEto contain uppercases.