2015-01-08 3 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   :'.'; 

Если между фигурными скобками допускается несколько слов, замените ID на ID+ в правиле item.

Смежные вопросы