How can i read a multiline text in ANTLR untill a special symbol occurs. Like as in below text:-
@Description("
Hi There I am.
")
I need to read it as key -> @Description and value -> "Hi There I am".
I tried it with following grammar
KEY
: '@' [a-zA-Z] (~[(\r\n] | '\\)')*
;
VALUE
: '(' ~[\r\n]*
;
I tried many variations of VALUE grammar but no luck.
You're likely confused by the lexer/parser separation here. You did only provide a single example, but I can infer the following:
declaration: KEY '(' STRING ')' ;
KEY : '@' [a-zA-Z]+ ;
STRING: '"' (~'"')* '"' ;
WS: [ \t\r\n] -> skip;
declaration
is a parser rule. It consists of a KEY
(@
followed by letters), an opening parenthesis, a STRING
(any text between quotes), and a closing parenthesis. KEY
and STRING
are the lexer rules.
Be aware that the STRING
rule above won't let you escape characters. If you need to be able to escape a quote with a backslash (and also a backslash with a backslash), use the following rule instead:
STRING: '"' ('\\' ["\\] | ~'"')* '"'