2016-04-21 2 views
1

Ich möchte ein Terminal erstellen, das etwas mit ID, aber nicht vollständig übereinstimmen kann. Während IDDefinieren Sie ein Terminal, das eine Untermenge von ID in xtext ist

terminal ID   : '^'?('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*; 

das Terminal Ich mag würde, ist

terminal TYPE: (('a'..'z'|'A'..'Z')?('a'..'z'|'A'..'Z'|'_'|'0'..'9')*)? 

definieren, da TYPE ID übereinstimmen, kann ich Regel-Kennzeichnungsfehler immer bin, was kann ich in diesem Fall tun?

______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]; 

Modell (Basis auf dem Blog Beispiel)

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 
} 

Antwort

1

Sie einen Datentyp Regel

MyID: ID | TYPE; 

und einen Wert Konverter für MyID vorstellen kann, und dass Sie ID an den Orten verwenden, verwendet

Oder Sie vergessen Typ und die Überprüfung für den eingeschränkten Bereich im Validator

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|MyID])? '{' 
     (features+=Feature)* 
    '}'; 

Feature: 
    (many?='many')? name=MyID ':' type=[XType|MyID]; 
+0

Ich bin nicht sicher, was meinst du Oder Sie Art und tun die Prüfung für den geschützten Bereich innerhalb des Validator – Quantico

+0

nur ein Terminal ule genannt ID haben, die Ihre Art und ID vereint und dann vergessen Sie meinen die Beschränkungen Validierung der Attribute, denen Sie ID zuweisen oder eine Datentypregel haben TYPE: ID mit einem IValueConverter, der ValueConverterExceptions bei schlechten Eingaben auslöst –

+0

Blick auf den Validator xtext vorgeneriert es hat eine Regel für Namen von Grüßen, die mit einem Großbuchstaben beginnen, obwohl ID würde erlaube auch Kleinbuchstaben –

Verwandte Themen