ANTLR词法分析器模式匹配任何文本无关的输入



我切换了模式,这样我就可以接受语法中的任何文本。这个例子没有包括现实生活中情况的复杂性。我从ANTLR的书中改编了一个例子。

词法分析程序

parser grammar StringsParser;
@header {
    package lexertest;
}
options { tokenVocab=StringsLexer; }
test:quotedString+;
quotedString:LQUOTE content;  
content:TEXT+?;
解析器

lexer grammar StringsLexer;
LQUOTE : '"' -> mode(STR) ;
WS     : [ rtn]+ -> skip ;
mode STR;
STRING : '"' -> mode(DEFAULT_MODE);
TEXT   : .;
测试输入

"hi"
"mom"

给我:

line 1:3 extraneous input '"' expecting {<EOF>, LQUOTE, TEXT}
line 2:4 extraneous input '"' expecting {<EOF>, LQUOTE, TEXT}

我如何解决这个问题,这样我就不会得到上面的错误?

STR模式同时发出TEXT和STRING标记。'quotedString'规则需要是:

quotedString : LQUOTE content STRING ;

最新更新