-
-
Notifications
You must be signed in to change notification settings - Fork 203
Expand file tree
/
Copy pathumple_traits.grammar
More file actions
44 lines (38 loc) · 3.06 KB
/
umple_traits.grammar
File metadata and controls
44 lines (38 loc) · 3.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// The master of this part of the Umple grammar is available at
// [*https://github.com/umple/umple/blob/master/cruise.umple/src/trait/umple_traits.grammar*]
// Copyright: All contributors to the Umple Project
// This file is made available subject to the open source license found at:
// [*https://umple.org/license*]
traitDefinition : trait [name] [[traitParameters]]? { [[traitContent]]* }
traitContent- : [[mixsetDefinition]] | [[testCase]] | [[requiredModelElements]] | [[comment]] | [[reqImplementation]] | [[traitDefinition]] | [[trace]] | [[position]] | [[displayColor]] | [[abstract]] | [[keyDefinition]] | [[softwarePattern]] | [[depend]] | [[symmetricReflexiveAssociation]] | [[attribute]] | [[stateMachine]] | [[inlineAssociation]] | [[concreteMethodDeclaration]] | [[abstractMethodDeclaration]] | [[constantDeclaration]] | [[invariant]] | ; | [[exception]] | [[extraCode]]
traitParameters : < [[traitFullParameters]] ( , [[traitFullParameters]] )* >
traitFullParameters : [~parameter] ([[traitParametersInterface]])? ( = [~defaultType] )?
traitParametersInterface- : isA [~tInterface]( & [~tInterface])*
requiredModelElements : require ([[requiredState]] | [[requiredEvent]])
requiredState : [smName] ;
//.[~stateName](.[~stateName])* ;
requiredEvent : [smName] OPEN_ROUND_BRACKET ( [parameter] ( , [parameter] )* )? CLOSE_ROUND_BRACKET ;
//.[~stateName](.[~stateName])*
//iE = Include Exclude
AllInclusionExclusionAlias- : [[InclusionExclusionAlias]] ( , [[InclusionExclusionAlias]] )*
InclusionExclusionAlias- : [[functionIncludeExcludeAlias]] | [[StateMachineIncludeExcludeAlias]]
functionIncludeExcludeAlias- : [[functionInExAlias]] ( , [[functionInExAlias]] )*
functionInExAlias- : [[functionAliasName]] | [[iEFunction]] | [[traitAppliedParameters]]
iEFunction : [=modifier:+|-] [~methodName] [[iEParameterList]]
iEParameterList : OPEN_ROUND_BRACKET ( [parameter] ( , [parameter] )* )? CLOSE_ROUND_BRACKET
functionAliasName : [=modifier:+]? ( ( [~smName] | [!smPattern:\d+|[*]]) .)? [~methodName] [[iEParameterList]] as [[IEVisibilityAlias]]
IEVisibilityAlias- : ([[IEVisibility]] [~aliasName]?) | ([~aliasName])
IEVisibility- : [=iEVisibility:public|private|protected]
traitAppliedParameters : [~pName] = [~rName]
StateMachineIncludeExcludeAlias- : [[ StateMachineInExAlias]] ( , [[StateMachineInExAlias]] )*
StateMachineInExAlias- : [[StateMachineAliasName]] | [[iEStateMachine]]
//| [[StateMachineTransitionAlias]]
StateMachineAliasName : ([=iEStateMachineModifier:+])? [~smName] ([[StateNames]])? as [~smDesName] ([[DesStateNames]])?
StateNames : . [~sName] ( [[StateNamesPassing]] )*
DesStateNames :[[StateNames]]
StateNamesPassing : [[StateNames]]
//iEStateMachine : [=iEStateMachineModifier:+|-] [~smName] [[StateNames]]?
iEStateMachine : [=modifier:+|-] [~smName] ( [[StateNames]] ( ( [[iEParameterList]] [[guardOption]]? ) | ( . [[guardOption]] ) )? )?
guardOption : [[guard]] | []
//This is for events in state machines
//StateMachineTransitionAlias : ( [~smName] | [!smPattern:\d+|[*]]) . [~eventName] [[iEParameterList]] as [~AliasName]