文本没有一些令牌ANTLR

时间:2016-05-14 08:05:33

标签: antlr antlr4

我使用ANTLR在我的词法分析器中匹配文本时遇到问题。 我在这个标签中有类似html的标签和属性。例如:

<tag name=" some text {! ... } some text {! ... } some text ">

属性值(在" ... "内)和带有感叹号({!)和近大括号(})的外部开括号内的所有内容都是文本(ATTR_TEXT)。 我试图这样做,但它没有按照我的预期工作,因为当lexer找到一个否定的符号时,它会将文本分成两个或多个ATTR_TEXT标记,具体取决于已建立的否定符号的数量:

...
OPEN            :   '<'                 ->pushMode(INSIDE);
...
mode INSIDE;    

DQUOTE          :   '"'                 ->pushMode(INSIDE_DOUBLE_QUOTES);
...

mode INSIDE_DOUBLE_QUOTES;
OPEN_EXPR   :   '{!'                ->pushMode(INSIDE_EXPR);    
ATTR_TEXT   :   ~["{!}]+ ;
CLOSE_QUOTE :   '"'                 ->popMode;

mode INSIDE_EXPR;

CLOSE_EXPR  :   '}'                 ->popMode;
...

提前致谢!

0 个答案:

没有答案