antlr解析字符串和return分割字符串

antlr to parse stringand return splitted string

我正在使用 antlr 拆分字符串 { city } | { 国家 } | {大陆}

应该return我 城市,国家,大陆

我的语法是:

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           :'.';

让我知道我应该如何匹配任意数量的字符和 return 城市、国家或城市国家、大陆

试试下面的语法:

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           :'.';

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