--+block1: select * from emp where 1=2--+block2: select 1 from dept ddvggh--+block3: set nocount on set nocount on; dfdfdf; dfdfd dfdfdf; dfdfdf;
lexer grammar multilexer;
CODE: 'code';
LCURLY: '--+' .*? ':' -> pushMode(CODE_0);
WS1: WS -> skip;
NL1: NL -> skip;
mode CODE_0;
CODE_0_LCURLY: '--+' .*? ':' -> type(OTHER), pushMode(CODE_N);
RCURLY: ( WS1 | NL1 )* (LCURLY | EOF) -> popMode; // Close for LCURLY
CODE_0_OTHER: ~('-')+ -> type(OTHER);
CODE_0_TAG: '--+' .*? ':' -> type(TAG);
mode CODE_N;
CODE_N_LCURLY: LCURLY -> type(OTHER), pushMode(CODE_N);
CODE_N_RCURLY: ( WS1 | NL1 )* (LCURLY | EOF) -> type(OTHER), popMode;
OTHER: ~('-')+;
TAG: '--+' .*? ':';
fragment WS : [ \t\f]+ ;
fragment NL : '\r'? '\n' ;
parser grammar multiparser;
options { tokenVocab = multilexer ; }
skip_code: LCURLY OTHER* RCURLY;