2015-01-08 192 views
0

我正在使用antlr拆分字符串{city} | {country} | {大陸}antlr解析字符串並返回拆分字符串

它應該返回我 城市,國家,大陸

我的語法是:

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

如果大括號之間允許有幾個單詞,請在item規則中將ID替換爲ID+