Я хотел бы создать терминал, который несколько можно сопоставить с ID, но не полностью. Хотя идентификаторопределить терминал, который является подмножеством идентификатора в xtext
terminal ID : '^'?('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
терминал Я хотел бы определить это
terminal TYPE: (('a'..'z'|'A'..'Z')?('a'..'z'|'A'..'Z'|'_'|'0'..'9')*)?
потому что TYPE может соответствовать ID я получаю RULE_ID ошибки, что я могу сделать в этом случае?
______EDIT__________
Domainmodel :
(elements+=XType)*;
terminal TYPE: ('a'..'z'|'A'..'Z')('a'..'z'|'A'..'Z'|'0'..'9'|'_')*;
MyID:
TYPE | ID
;
XType:
DataType | Entity;
DataType:
'datatype' name=MyID;
Entity:
'entity' name=MyID ('extends' superType=[Entity])? '{'
(features+=Feature)*
'}';
Feature:
(many?='many')? name=MyID ':' type=[XType];
Модель (основание на примере блога)
datatype String
entity Blog {
title: String
title2: String
many posts: Post
many Posts: Post
}
entity HasAuthor {
author: String
}
entity Post extends HasAuthor {
title: String
content: String
many comments: Comment
}
entity Comment extends HasAuthor {
content: String
}
Я не уверен, что вы имеете в виде Или вы забыли тип и сделать проверку для ограниченного диапазона внутри валидатора – Quantico
просто один терминал ОЮЛ называется идентификатор, который объединяет ваш тип и идентификатор, а затем сделать ограничение моего проверка атрибутов, присваиваемых идентификатору или имеющих правило типа данных. ТИП: Идентификатор с IValueConverter, который генерирует значения ValueConverterExceptions при неудачных входах. –
взгляните на валидатор xtext pregenerates, у него есть правило для имен приветствий, начинающихся с буквы верхнего регистра, хотя идентификатор разрешить строчные буквы, а также –