我正在使用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 :'.';
让我知道如何让它匹配任意数量的角色并返回城市,国家或城市国家,大陆
答案 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
。