1
我想创建一个可以与ID匹配但不完全的终端。 虽然ID是定义一个终端,它是xtext中ID的一个子集
terminal ID : '^'?('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
我想定义终端是
terminal TYPE: (('a'..'z'|'A'..'Z')?('a'..'z'|'A'..'Z'|'_'|'0'..'9')*)?
,因为类型可以匹配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
内禁区范围做检查只需要一个终端ULE叫统一了您的类型和ID号,然后做了限制我验证您为ID分配的属性或具有数据类型规则TYPE:带有IValueConverter的ID在错误输入中抛出ValueConverterExceptions –
查看验证器xtext预生成它具有一个用大写字母开头的规则,尽管ID会允许小写字母 –