antlr解析string并返回splitted string

时间:2015-01-08 09:05:14

标签: antlr

我正在使用antlr来分割字符串{city} | {country} | {大陆}

它应该归还我 城市,国家,洲

我的语法是:

splitrule : ( OPENING_BRACES . CLOSING_BRACES ) SEPARATOR (OPENING_BRACES . CLOSING_BRACES); // match keyword hello followed by an identifier
ID : [a-z]+ ; // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; 
SEPARATOR               :'|';
OPENING_BRACES          : '{';
CLOSING_BRACES          : '}';
ANY_CHARACTER           :'.';

让我知道如何让它匹配任意数量的角色并返回城市,国家或城市国家,大陆

1 个答案:

答案 0 :(得分:1)

尝试以下语法:

splitrule : item ( SEPARATOR item )* ;
item : OPENING_BRACE ID CLOSING_BRACE ;

ID : [a-z]+ ; // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; 
SEPARATOR               :'|';
OPENING_BRACE           : '{';
CLOSING_BRACE           : '}';
ANY_CHARACTER           :'.';

如果大括号之间允许使用多个字词,请将ID替换为ID+规则中的item