如何在ANTLR中读取多行文本,直到出现特殊符号。如下文所示: -
@Description("
Hi There I am.
")
我需要将其读作键 - > @Description 和值 - > "您好我在" 。
我尝试了以下语法
KEY
: '@' [a-zA-Z] (~[(\r\n] | '\\)')*
;
VALUE
: '(' ~[\r\n]*
;
我尝试了很多VALUE语法的变种,但没有运气。
答案 0 :(得分:1)
您可能会对此处的词法分析器/解析器分离感到困惑。您只提供了一个示例,但我可以推断出以下内容:
declaration: KEY '(' STRING ')' ;
KEY : '@' [a-zA-Z]+ ;
STRING: '"' (~'"')* '"' ;
WS: [ \t\r\n] -> skip;
declaration
是一个解析器规则。它由KEY
(@
后跟字母),左括号,STRING
(引号之间的任何文本)和右括号组成。 KEY
和STRING
是词法分析器规则。
请注意,上面的STRING
规则不允许您转义字符。如果您需要能够使用反斜杠(以及带有反斜杠的反斜杠)来转义引号,请改用以下规则:
STRING: '"' ('\\' ["\\] | ~'"')* '"'