(我根据@Bart Kiers 的第一条评论编辑了我的问题 - 谢谢!)
我有以下语法:
SPACE : (' '|'\t'|'\n'|'\r')+ {$channel = HIDDEN;};
START : 'START:';
STRING_LITERAL : ('"' .* '"')+;
rule : START STRING_LITERAL;
我想解析如下语言:'START: "abcd" START: "img src="test.jpg""' (字符串文字可能在字符串文字中)。
如果字符串文字中有字符串文字,则上面定义的语法不起作用,因为对于语言 'START: "img src="test.jpg""',词法分析器将其翻译成以下标记: START('START:') STRING_LITERAL("img src=") test.jpg。
有什么方法可以定义适合我的问题的语法吗?