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會允許小寫字母 –