Я пытаюсь создать грамматику, анализирующие бы следующее:XText список элементов или только один элемент
reference: java.util.String
но а
reference: {java.util.String, java.lang.Integer}
Другими словами, я хочу его проанализируйте как список Квалифицированных имен, но также только один элемент (в этом случае не помечен '{').
То, что я попытался это:
Reference:
'reference' ':' ('{' values+=QualifiedName (',' values+=QualifiedName)* '}') | (values+=QualifiedName);
Однако я получаю сообщение об ошибке: отсутствующий «{» на «Java», при использовании первой формы ссылки (без {). Любые предложения, что я должен попробовать?
EDIT: Также пробовал
Reference:
'reference' ':' ('{' values+=QualifiedName (',' values+=QualifiedName)* '}') | ((!'{')values+=QualifiedName);
, но не получая нет жизнеспособной альтернативы на входе '!' ошибка в определении грамматики.
EDIT2: У меня нет проблем с «списком, разделенным запятыми», я пробовал это отдельно, и он работает хорошо. Моя единственная проблема заключается в различии между двумя частями правила, основанными на символе '{'.
Отлично, я понял, где я ошибся :) – Deelazee