diff options
Diffstat (limited to 'rba.tool.editor/src/rba/tool/editor/RBAModel.xtext')
-rw-r--r-- | rba.tool.editor/src/rba/tool/editor/RBAModel.xtext | 1196 |
1 files changed, 1196 insertions, 0 deletions
diff --git a/rba.tool.editor/src/rba/tool/editor/RBAModel.xtext b/rba.tool.editor/src/rba/tool/editor/RBAModel.xtext new file mode 100644 index 0000000..a9022c1 --- /dev/null +++ b/rba.tool.editor/src/rba/tool/editor/RBAModel.xtext @@ -0,0 +1,1196 @@ +grammar rba.tool.editor.RBAModel hidden(WS, ML_COMMENT, SL_COMMENT) + +import "http://www.eclipse.org/emf/2002/Ecore" as ecore +import "http://www.denso.com/ict/rba/core" as rbacore +import "http://www.denso.com/ict/rba/view" as rbaview +import "http://www.denso.com/ict/rba/sound" as rbasound + +generate rbaEditorModel "http://www.denso.com/ict/rbatooleditor" + +/* Top Level */ +TopLevel: + {TopLevel} ('module' QualifiedName)? + (project+=Project)* + (imports+=Import)* + (packages+=Package)*; + +Import: + 'import' importedNamespace=QualifiedNameWithWildcard; + +/* Abstract Structured Data Type */ + +PackagableElement returns rbacore::PackagableElement: + Package | Stereotype | RuleObject | Display | AbstractConstraint | Size; + +AbstractConstraint returns rbacore::AbstractConstraint: + Constraint; + +SizeIdentifier returns rbaview::SizeIdentifier: + SizeReference | Size; + +RuleObject returns rbacore::RuleObject: + AbstractContent | AbstractScene | AbstractAllocatable; + +AbstractAllocatable returns rbacore::AbstractAllocatable: + Allocatable | AllocatableSet; + +Allocatable returns rbacore::Allocatable: + Area | Zone; + +AllocatableSet returns rbacore::AllocatableSet: + AreaSet | ZoneSet; + +AbstractContent returns rbacore::AbstractContent: + Content | ContentSet; + +Content returns rbacore::Content: + ViewContent | SoundContent; + +ContentSet returns rbacore::ContentSet: + ViewContentSet | SoundContentSet; + +AbstractScene returns rbacore::AbstractScene: + Scene; + +AbstractProperty returns rbacore::AbstractProperty: + ({rbacore::IntegerProperty} 'int') name=ValidID (':' value=IntegerValue)?; + +LayoutManager returns rbaview::LayoutManager: + AlignedLayout | FixedPositionLayout; + +AlignedLayout returns rbaview::AlignedLayout: + VerticalLayout | HorizontalLayout; + +/* Structured Data Type */ +Tag returns rbacore::Tag: + =>( + ({rbacore::Tag} '<<' name=QualifiedName '>>') | + ({CTag} '«' name=QualifiedName '»') + ) ('{' (values+=EString (',' values+=EString)*)? '}')?; + +Package returns rbacore::Package: + {rbacore::Package} + 'Package' + name=QualifiedName + '{' ( + ('description:' description=EString)? & + (packagableelement+=PackagableElement)* + ) '}'; + +/* Structured Data Type */ +Stereotype returns rbacore::Stereotype: + {rbacore::Stereotype} + 'Stereotype' '<' targetModelName=StereotypableElementName '>' + name=QualifiedName + '(' (variables+=Variable (',' variables+=Variable)*)? ')' + (bodyText=RichString)?; + +StereotypableElementName: + 'Area' | 'Zone' | 'SoundContent' | 'ViewContent' +; + +Display returns rbaview::Display: + {rbaview::Display} + 'Display' + name=QualifiedName + '{' ( + ('description:' description=EString)? & + (size=SizeIdentifier)? & + (root=CompositeArea)? + ) '}'; + +Constraint returns rbacore::Constraint: + {rbacore::Constraint} + 'Constraint' + name=QualifiedName + '{' ( + ('description:' description=EString)? & + ('runtime:' runtime=EBoolean)? & + (expression=ComplexExpression)? + ) '}'; + +ViewContent returns rbaview::ViewContent: + {rbaview::ViewContent} + 'ViewContent' + name=QualifiedName + '{' ( + ('description:' description=EString)? & + ('loserType:' loserType=LoserType)? & + ('allocatable:' '[' (allocatable+=[rbacore::AbstractAllocatable|QualifiedName] ("," allocatable+=[rbacore::AbstractAllocatable|QualifiedName])*)? ']')? & + (states+=ViewContentState)* & + (size+=SizeIdentifier)* & + (tags+=Tag)* + ) '}'; + +SoundContent returns rbasound::SoundContent: + {rbasound::SoundContent} + 'SoundContent' + name=QualifiedName + '{' ( + ('description:' description=EString)? & + ('loserType:' loserType=LoserType)? & + ('allocatable:' '[' (allocatable+=[rbacore::AbstractAllocatable|QualifiedName] ("," allocatable+=[rbacore::AbstractAllocatable|QualifiedName])*)? ']')? & + (states+=SoundContentState)* & + (tags+=Tag)* + ) '}'; + +Size returns rbaview::Size: + {rbaview::Size} + 'Size' + name=QualifiedName + '{' ( + ('description:' description=EString)? & + ('width:' width=EInt)? & + ('height:' height=EInt)? + ) '}'; + +SizeReference returns rbaview::SizeReference: + {rbaview::SizeReference} + 'sizeReference:' size=[rbaview::Size|QualifiedName]; + +Offset returns rbaview::Offset: + {rbaview::Offset} + 'Offset' + '{' ( + ('description:' description=EString)? & + ('x:' x=EInt)? & + ('y:' y=EInt)? & + (size=SizeReference)? + ) '}'; + +AreaSet returns rbaview::AreaSet: + {rbaview::AreaSet} + 'AreaSet' + name=QualifiedName + '{' ( + ('description:' description=EString)? & + ('target:' '[' (target+=[rbacore::AbstractAllocatable|QualifiedName] ("," target+=[rbacore::AbstractAllocatable|QualifiedName])*)? ']')? + ) '}'; + +ZoneSet returns rbasound::ZoneSet: + {rbasound::ZoneSet} + 'ZoneSet' + name=QualifiedName + '{' ( + ('description:' description=EString)? & + ('target:' '[' (target+=[rbacore::AbstractAllocatable|QualifiedName] ("," target+=[rbacore::AbstractAllocatable|QualifiedName])*)? ']')? + ) '}'; + +CompositeArea returns rbaview::CompositeArea: + {rbaview::CompositeArea} + 'CompositeArea' + name=QualifiedName + '{' ( + ('description:' description=EString)? & + ('layout:' layout=LayoutManager)? + ) '}'; + +Area returns rbaview::Area: + {rbaview::Area} + 'Area' + name=QualifiedName + '{' ( + ('description:' description=EString)? & + ('arbitrationPolicy:' arbitrationPolicy=ArbitrationPolicy)? & + (size+=SizeIdentifier)* & + (('visibility:' | 'priority:') visibility=VExpression)? & + ('zorder:' zorder=VExpression)? & + (tags+=Tag)* + ) '}'; + +Zone returns rbasound::Zone: + {rbasound::Zone} + 'Zone' + name=QualifiedName + '{' ( + ('description:' description=EString)? & + ('arbitrationPolicy:' arbitrationPolicy=ArbitrationPolicy)? & + (('visibility:' | 'priority:') visibility=VExpression)? & + ('attenuateValue:' attenuate=IntegerValue)? & + (tags+=Tag)* + ) '}'; + +ViewContentState returns rbaview::ViewContentState: + {rbaview::ViewContentState} + 'State' + name=QualifiedName + '{' ( + ('description:' description=EString)? & + (('priority:' | 'value:') value=VExpression)? + ) '}'; + +SoundContentState returns rbasound::SoundContentState: + {rbasound::SoundContentState} + 'State' + name=QualifiedName + '{' ( + ('description:' description=EString)? & + (('priority:' | 'value:') value=VExpression)? + ) '}'; + +Project returns rbacore::Project: + {rbacore::Project} + 'Project' + (dummyName=QualifiedName)? + '{' + 'version:' version=EString + '}'; + +/* ####################################### + * Sort Value Expression(VExpression) + * ####################################### */ +VExpression returns rbacore::Expression: + VPlusOperator; + +VPlusOperator returns rbacore::Expression: + VComparisonAnd (=>({rbacore::PlusOperator.operand+=current} OpPlus) operand+=VComparisonAnd)*; + +OpPlus: + '+'; + +VComparisonAnd returns rbacore::Expression: + VRelationalExpression (=>({rbacore::ComparisonAnd.operand+=current} OpAnd) operand+=VRelationalExpression)*; + +VRelationalExpression returns rbacore::Expression: + VPrimaryExpression | + ({rbacore::MuchGreaterThanOperator} OpMuchGreaterThan operand+=VPrimaryExpression) | + ({rbacore::EqualToOperator} OpEqualTo operand+=VPrimaryExpression) | + ({rbacore::GreaterThanOperator} OpGreaterThan operand+=VPrimaryExpression) | + ({rbacore::LowerThanOperator} OpLowerThan operand+=VPrimaryExpression); + +OpMuchGreaterThan: + '>>'; +OpEqualTo: + '='; +OpGreaterThan: + '>'; +OpLowerThan: + '<'; + +VPrimaryExpression returns rbacore::Expression: + ThatOfOperator | + VValueExpression | + '(' VExpression ')'; + +VValueExpression returns rbacore::Expression: + IntegerValue | + StandardValue | + NoneValue | + MinValue | + MaxValue; + +ThatOfOperator returns rbacore::Expression: + ({rbacore::ThatOfOperator} 'That-of' operand+=VMemberFeatureReference?); + +VMemberFeatureReference returns rbacore::ObjectReference: + {rbacore::ObjectReference} refObject=[rbacore::RuleObject|ValidID] + ({MemberFeatureReference.operand+=current} '.' refObject=[rbacore::RuleObject|ValidID])*; + +IntegerValue returns rbacore::IntegerValue: + {rbacore::IntegerValue} + (value=EInt); +StandardValue returns rbacore::StandardValue: + {rbacore::StandardValue} + 'STANDARD_VALUE'; +NoneValue returns rbacore::NoneValue: + {rbacore::NoneValue} + 'NONE_VALUE'; +MinValue returns rbacore::MinValue: + {rbacore::MinValue} + 'MIN_VALUE'; +MaxValue returns rbacore::MaxValue: + {rbacore::MaxValue} + 'MAX_VALUE'; + +/* ####################################### + * Constraint Expression(CExpression) + * ####################################### */ +CExpression returns rbacore::Expression: + CImpliesOperator; + +CImpliesOperator returns rbacore::Expression: + COrOperator (=>({rbacore::ImpliesOperator.operand+=current} OpImplies) operand+=COrOperator)*; + +OpImplies: + '->'; + +COrOperator returns rbacore::Expression: + CAndOperator (=>({rbacore::OrOperator.operand+=current} OpOr) operand+=CAndOperator)*; + +OpOr: + 'OR'; + +CAndOperator returns rbacore::Expression: + CEqualityExpression (=>({rbacore::AndOperator.operand+=current} OpAnd) operand+=CEqualityExpression)*; + +OpAnd: + 'AND'; + +CEqualityExpression returns rbacore::Expression: + CRelationalExpression ( + =>( + ({rbacore::ObjectCompare.operand+=current} OpObjectCompare) | + ({rbacore::ObjectCompareNot.operand+=current} OpObjectNotCompare) | + ({rbacore::IsEqualToOperator.operand+=current} OpEquality) + ) operand+=CRelationalExpression)*; + +OpObjectCompare: + '=='; +OpObjectNotCompare: + '!='; +OpEquality: + '='; + +CRelationalExpression returns rbacore::Expression: + CUnaryOperation ( + =>( + ({rbacore::IsGreaterThanEqualOperator.operand+=current} OpIsGreaterThanEqual) | + ({rbacore::IsLowerThanEqualOperator.operand+=current} OpIsLowerThanEqual) | + ({rbacore::IsGreaterThanOperator.operand+=current} OpIsGreaterThan) | + ({rbacore::IsLowerThanOperator.operand+=current} OpIsLowerThan) + ) operand+=CUnaryOperation)*; + +OpIsGreaterThanEqual: + '>='; +OpIsLowerThanEqual: + '<='; +OpIsGreaterThan: + '>'; +OpIsLowerThan: + '<'; + +CUnaryOperation returns rbacore::Expression: + ({rbacore::NotOperator} OpNot operand+=CUnaryOperation) + | COperationFeatureCall; + +OpNot: + "!"; + +COperationFeatureCall returns rbacore::Expression: + CPrimaryExpression + (=>(".") + ( + (( + //({MemberFeatureReference.operand+=current} refObject=[rbacore::RuleObject|ValidID]) | + ({rbacore::GetProperty.operand+=current} OpGetProperty) | + ({rbacore::IsOn.operand+=current} OpIsOn) | + ({rbacore::GetContentsList.operand+=current} OpGetContentsList) | + ({rbacore::ContentValue.operand+=current} OpContentValue) | + ({rbacore::IsActive.operand+=current} OpIsActive) | + ({rbacore::GetAllocatables.operand+=current} OpGetAllocatables) | + ({rbacore::AllocatedContent.operand+=current} OpAllocatedContent) | + ({rbacore::HasComeEarlierThan.operand+=current} OpHasComeEarlierThan) | + ({rbacore::HasComeLaterThan.operand+=current} OpHasComeLaterThan) | + ({rbacore::StateValue.operand+=current} OpStateValue) | + ({rbacore::ActiveContents.operand+=current} OpActiveContents) | + ({rbacore::SizeOperator.operand+=current} OpSizeOperator) | + ({rbacore::HasBeenDisplayed.operand+=current} OpHasBeenDisplayed) | + ({rbacore::ActiveState.operand+=current} OpActiveState) | + ({rbaview::IsDisplayed.operand+=current} OpIsDisplayed) | + ({rbaview::IsHidden.operand+=current} OpIsHidden) | + ({rbaview::DisplayingContent.operand+=current} OpDisplayingContent) | + ({rbaview::IsVisible.operand+=current} OpIsVisible) | + ({rbasound::IsOutputted.operand+=current} OpIsOutputted) | + ({rbasound::IsMuted.operand+=current} OpIsMuted) | + ({rbasound::OutputtingSound.operand+=current} OpOutputtingSound) | + ({rbasound::IsSounding.operand+=current} OpIsSounding) | + ({rbacore::IsAllocatedTo.operand+=current} OpIsAllocatedTo) | + ({rbacore::IsChanged.operand+=current} OpIsChanged) | + ({rbacore::IsTranslatedTo.operand+=current} OpIsTranslatedTo) | + ({rbaview::IsDisplayedOn.operand+=current} OpIsDisplayedOn) | + ({rbaview::IsChangedDisplay.operand+=current} OpIsChangedDisplay) | + ({rbaview::IsTranslatedViewTo.operand+=current} OpIsTranslatedViewTo) | + ({rbasound::IsOutputtedOn.operand+=current} OpIsOutputtedOn) | + ({rbasound::IsChangedOutput.operand+=current} OpIsChangedOutput) | + ({rbasound::IsTranslatedSoundTo.operand+=current} OpIsTranslatedSoundTo) | + ({rbasound::IsAttenuated.operand+=current} OpIsAttenuated) + ) =>('(' (operand+=CExpression)? ')') + ) | + ( + ( + ({rbacore::IsTypeOf.operand+=current} OpIsTypeOf) + ) =>('(' (tagName=EString)? ')')? + ) | + ( + ( + ({rbacore::MaxOperator.operand+=current} OpMaxOperator lambda=LambdaExpression) | + ({rbacore::MinOperator.operand+=current} OpMinOperator lambda=LambdaExpression) | + ({rbacore::SelectOperator.operand+=current} OpSelectOperator lambda=LambdaExpression) + ) + ) + ) + )*; + +OpGetProperty: + 'get'; +OpIsOn: + 'isOn'; +OpGetContentsList: + 'contentsList'; +OpContentValue: + 'contentValue'; +OpIsActive: + 'isActive'; +OpGetAllocatables: + 'allocatables'; +OpAllocatedContent: + 'allocatedContent'; +OpIsDisplayed: + 'isDisplayed'; +OpIsHidden: + 'isHidden'; +OpDisplayingContent: + 'displayingContent'; +OpIsVisible: + 'isVisible'; +OpIsOutputted: + 'isOutputted'; +OpIsMuted: + 'isMuted'; +OpOutputtingSound: + 'outputtingSound'; +OpIsSounding: + 'isSounding'; +OpIsAttenuated: + 'isAttenuated'; +OpHasComeEarlierThan: + 'hasComeEarlierThan'; +OpHasComeLaterThan: + 'hasComeLaterThan'; +OpStateValue: + 'stateValue'; +OpIsAllocatedTo: + 'isAllocatedTo'; +OpIsChanged: + 'isChanged'; +OpIsTranslatedTo: + 'isTranslatedTo'; +OpIsDisplayedOn: + 'isDisplayedOn'; +OpIsChangedDisplay: + 'isChangedDisplay'; +OpIsTranslatedViewTo: + 'isTranslatedViewTo'; +OpIsOutputtedOn: + 'isOutputtedOn'; +OpIsChangedOutput: + 'isChangedOutput'; +OpIsTranslatedSoundTo: + 'isTranslatedSoundTo'; +OpIsTypeOf: + 'isTypeOf'; +OpActiveContents: + 'activeContents'; +OpSizeOperator: + 'size'; +OpHasBeenDisplayed: + 'hasBeenDisplayed'; +OpActiveState: + 'activeState'; +OpGetState: + 'state'; +OpMaxOperator: + 'max'; +OpMinOperator: + 'min'; +OpSelectOperator: + 'select'; +OpStartOprator: + 'start'; +OpStopOprator: + 'stop'; +OpActivateOprator: + 'activate'; + +CPrimaryExpression returns rbacore::Expression: + CMemberFeatureReference | + PreviousModifier | + AllInstanceOfExpression | + NullExpression | + IntegerValue | + MuteLowerPriority | + HideLowerPriority | + SetOfOperator | + IfStatement | + ForAllOperator | + ExistsOperator | + '(' CExpression ')'; + +AllInstanceOfExpression returns rbacore::Expression: + =>( + ({rbaview::AllInstanceOfArea} 'ALL_AREAS') | + ({rbaview::AllInstanceOfViewContent} 'ALL_VIEWCONTENTS') | + ({rbasound::AllInstanceOfZone} 'ALL_ZONES') | + ({rbasound::AllInstanceOfSoundContent} 'ALL_SOUNDCONTENTS') + ); + +NullExpression returns rbacore::Expression: + =>({rbacore::NullExpression} 'NULL'); + +PreviousModifier returns rbacore::PreviousModifier: + {rbacore::PreviousModifier} + '(pre)' (objReference=CMemberFeatureReference); + +HideLowerPriority returns rbaview::HideLowerPriority: + {rbaview::HideLowerPriority} + 'HideLowerPriority' '(' (operand+=CExpression) ',' (operand+=CExpression) ')'; + +MuteLowerPriority returns rbasound::MuteLowerPriority: + {rbasound::MuteLowerPriority} + 'MuteLowerPriority' '(' (operand+=CExpression) ',' (operand+=CExpression) ')'; + +SetOfOperator returns rbacore::SetOfOperator: + {rbacore::SetOfOperator} + '{' (operand+=CExpression (',' operand+=CExpression)*)? '}'; +IfStatement returns rbacore::IfStatement: + {rbacore::IfStatement} + 'IF' '(' condition=CExpression? ')' + (=>'THEN' thenExpression=CExpression)? + (=>'ELSE' elseExpression=CExpression)?; +ForAllOperator returns rbacore::ForAllOperator: + {rbacore::ForAllOperator} + 'For-All' (operand+=CExpression) (lambda=LambdaExpression); +ExistsOperator returns rbacore::ExistsOperator: + {rbacore::ExistsOperator} + 'Exists' (operand+=CExpression) (lambda=LambdaExpression); + +// Other +LambdaExpression returns rbacore::LambdaExpression: + =>({rbacore::LambdaExpression} + '{') + (x=Variable? '|')? + (letStatements+=LetStatement)* + bodyText=CExpression + '}'; +Variable returns rbacore::Variable: + {rbacore::Variable} + name=QualifiedName; + +CObjectReference returns rbacore::ObjectReference: + {rbacore::ObjectReference} refObject=[rbacore::RuleObject|IdOrThis]; + +CMemberFeatureReference returns rbacore::ObjectReference: + {rbacore::ObjectReference} refObject=[rbacore::RuleObject|IdOrThis] + ({MemberFeatureReference.operand+=current} '.' refObject=[rbacore::RuleObject|ValidID])*; + +LetStatement returns rbacore::LetStatement: + {rbacore::LetStatement} + ('let') (=>variable=Variable) ('=' body=CExpression)?; + +ComplexExpression returns rbacore::ComplexExpression: + {rbacore::ComplexExpression} + (letStatements+=LetStatement)* + otherExpression=CExpression; + +EnumExpression returns rbacore::EnumExpression: + ('LoserType::' =>LoserTypeExpression) | ('ArbitrationPolicy::' =>ArbitrationPolicyExpression); + +LoserTypeExpression returns rbacore::LoserTypeExpression: + {rbacore::LoserTypeExpression} + value=LoserType; + +ArbitrationPolicyExpression returns rbacore::ArbitrationPolicyExpression: + {rbacore::ArbitrationPolicyExpression} + value=ArbitrationPolicy; + +// ################################################################################################ // + +ViewContentSet returns rbaview::ViewContentSet: + {rbaview::ViewContentSet} + 'ViewContentSet' + name=QualifiedName + '{' ( + ('description:' description=EString)? & + ('target:' '[' (target+=[rbacore::AbstractContent|QualifiedName] ("," target+=[rbacore::AbstractContent|QualifiedName])*)? ']')? & + ('allocatable:' '[' (allocatable+=[rbacore::AbstractAllocatable|QualifiedName] ("," allocatable+=[rbacore::AbstractAllocatable|QualifiedName])*)? ']')? + ) '}'; + +SoundContentSet returns rbasound::SoundContentSet: + {rbasound::SoundContentSet} + 'SoundContentSet' + name=QualifiedName + '{' ( + ('description:' description=EString)? & + ('target:' '[' (target+=[rbacore::AbstractContent|QualifiedName] ("," target+=[rbacore::AbstractContent|QualifiedName])*)? ']')? & + ('allocatable:' '[' (allocatable+=[rbacore::AbstractAllocatable|QualifiedName] ("," allocatable+=[rbacore::AbstractAllocatable|QualifiedName])*)? ']')? + ) '}'; + +Scene returns rbacore::Scene: + {rbacore::Scene} + 'Scene' + name=QualifiedName + '{' ( + ('description:' description=EString)? & + ('global:' global=EBoolean)? & + (properties+=AbstractProperty)* + ) '}'; + +VerticalLayout returns rbaview::VerticalLayout: + {rbaview::VerticalLayout} + 'VerticalLayout' + '{' ( + ('basePoint:' basePoint=BasePoint)? & + ('subarea:' '[' (subarea+=[rbaview::Area|QualifiedName] ("," subarea+=[rbaview::Area|QualifiedName])*)? ']')? + ) '}'; + +HorizontalLayout returns rbaview::HorizontalLayout: + {rbaview::HorizontalLayout} + 'HorizontalLayout' + '{' ( + ('basePoint:' basePoint=BasePoint)? & + ('subarea:' '[' (subarea+=[rbaview::Area|QualifiedName] ("," subarea+=[rbaview::Area|QualifiedName])*)? ']')? + ) '}'; + +FixedPositionLayout returns rbaview::FixedPositionLayout: + {rbaview::FixedPositionLayout} + 'FixedPositionLayout' + '{' + (subAreaPosition+=PositionContainer)* + '}'; + +PositionContainer returns rbaview::PositionContainer: + {rbaview::PositionContainer} + 'PositionContainer' + '{' ( + ('x:' x=EInt)? & + ('y:' y=EInt)? & + ('basePoint:' basePoint=BasePoint)? & + ('areaReference:' area=[rbaview::Area|QualifiedName])? & + (offset+=Offset)* + ) '}'; + +/* Primitive Data Type */ +EBoolean returns ecore::EBoolean: + 'true' | 'false'; + +EInt returns ecore::EInt: + '-'? INT; + +EString returns ecore::EString: + STRING; + +RichString returns ecore::EString: + RICH_STRING; + +QualifiedNameWithWildcard: + QualifiedName '.*'?; + +QualifiedName: + ID ('.' ID)*; + +IdOrThis: + ValidID | 'this'; + +ValidID: + ID; + +/* Enum */ +enum ArbitrationPolicy returns rbacore::ArbitrationPolicy: + DEFAULT='DEFAULT' | FIRST_COME_FIRST='FIRST_COME_FIRST' | LAST_COME_FIRST='LAST_COME_FIRST' | + PRIORITY_FIRST_COME_FIRST='PRIORITY_FIRST_COME_FIRST' | PRIORITY_LAST_COME_FIRST='PRIORITY_LAST_COME_FIRST'; + +enum BasePoint returns rbaview::BasePoint: + LEFT_TOP='LEFT_TOP' | LEFT_MIDDLE='LEFT_MIDDLE' | LEFT_BOTTOM='LEFT_BOTTOM' | RIGHT_TOP='RIGHT_TOP' | + RIGHT_MIDDLE='RIGHT_MIDDLE' | RIGHT_BOTTOM='RIGHT_BOTTOM' | CENTER_TOP='CENTER_TOP' | CENTER_MIDDLE='CENTER_MIDDLE' | + CENTER_BOTTOM='CENTER_BOTTOM'; + +enum LoserType returns rbacore::LoserType: + NEVER_GIVEUP='NEVER_GIVEUP' | GOOD_LOSER='GOOD_LOSER' | DO_NOT_GIVEUP_UNTIL_WIN='DO_NOT_GIVEUP_UNTIL_WIN'; + +/* Terminal */ +terminal ID: + (IDENTIFIER_START | UNICODE_ESCAPE) (IDENTIFIER_PART | UNICODE_ESCAPE)*; + +terminal fragment IDENTIFIER_START_IMPL: + '\u0024' + | '\u0041'..'\u005A' + | '\uff08'..'\uff09' + | '\u005F' + | '\u0061'..'\u007A' + | '\u00A2'..'\u00A5' + | '\u00AA' + | '\u00B5' + | '\u00BA' + | '\u00C0'..'\u00D6' + | '\u00D8'..'\u00F6' + | '\u00F8'..'\u0236' + | '\u0250'..'\u02C1' + | '\u02C6'..'\u02D1' + | '\u02E0'..'\u02E4' + | '\u02EE' + | '\u037A' + | '\u0386' + | '\u0388'..'\u038A' + | '\u038C' + | '\u038E'..'\u03A1' + | '\u03A3'..'\u03CE' + | '\u03D0'..'\u03F5' + | '\u03F7'..'\u03FB' + | '\u0400'..'\u0481' + | '\u048A'..'\u04CE' + | '\u04D0'..'\u04F5' + | '\u04F8'..'\u04F9' + | '\u0500'..'\u050F' + | '\u0531'..'\u0556' + | '\u0559' + | '\u0561'..'\u0587' + | '\u05D0'..'\u05EA' + | '\u05F0'..'\u05F2' + | '\u0621'..'\u063A' + | '\u0640'..'\u064A' + | '\u066E'..'\u066F' + | '\u0671'..'\u06D3' + | '\u06D5' + | '\u06E5'..'\u06E6' + | '\u06EE'..'\u06EF' + | '\u06FA'..'\u06FC' + | '\u06FF' + | '\u0710' + | '\u0712'..'\u072F' + | '\u074D'..'\u074F' + | '\u0780'..'\u07A5' + | '\u07B1' + | '\u0904'..'\u0939' + | '\u093D' + | '\u0950' + | '\u0958'..'\u0961' + | '\u0985'..'\u098C' + | '\u098F'..'\u0990' + | '\u0993'..'\u09A8' + | '\u09AA'..'\u09B0' + | '\u09B2' + | '\u09B6'..'\u09B9' + | '\u09BD' + | '\u09DC'..'\u09DD' + | '\u09DF'..'\u09E1' + | '\u09F0'..'\u09F3' + | '\u0A05'..'\u0A0A' + | '\u0A0F'..'\u0A10' + | '\u0A13'..'\u0A28' + | '\u0A2A'..'\u0A30' + | '\u0A32'..'\u0A33' + | '\u0A35'..'\u0A36' + | '\u0A38'..'\u0A39' + | '\u0A59'..'\u0A5C' + | '\u0A5E' + | '\u0A72'..'\u0A74' + | '\u0A85'..'\u0A8D' + | '\u0A8F'..'\u0A91' + | '\u0A93'..'\u0AA8' + | '\u0AAA'..'\u0AB0' + | '\u0AB2'..'\u0AB3' + | '\u0AB5'..'\u0AB9' + | '\u0ABD' + | '\u0AD0' + | '\u0AE0'..'\u0AE1' + | '\u0AF1' + | '\u0B05'..'\u0B0C' + | '\u0B0F'..'\u0B10' + | '\u0B13'..'\u0B28' + | '\u0B2A'..'\u0B30' + | '\u0B32'..'\u0B33' + | '\u0B35'..'\u0B39' + | '\u0B3D' + | '\u0B5C'..'\u0B5D' + | '\u0B5F'..'\u0B61' + | '\u0B71' + | '\u0B83' + | '\u0B85'..'\u0B8A' + | '\u0B8E'..'\u0B90' + | '\u0B92'..'\u0B95' + | '\u0B99'..'\u0B9A' + | '\u0B9C' + | '\u0B9E'..'\u0B9F' + | '\u0BA3'..'\u0BA4' + | '\u0BA8'..'\u0BAA' + | '\u0BAE'..'\u0BB5' + | '\u0BB7'..'\u0BB9' + | '\u0BF9' + | '\u0C05'..'\u0C0C' + | '\u0C0E'..'\u0C10' + | '\u0C12'..'\u0C28' + | '\u0C2A'..'\u0C33' + | '\u0C35'..'\u0C39' + | '\u0C60'..'\u0C61' + | '\u0C85'..'\u0C8C' + | '\u0C8E'..'\u0C90' + | '\u0C92'..'\u0CA8' + | '\u0CAA'..'\u0CB3' + | '\u0CB5'..'\u0CB9' + | '\u0CBD' + | '\u0CDE' + | '\u0CE0'..'\u0CE1' + | '\u0D05'..'\u0D0C' + | '\u0D0E'..'\u0D10' + | '\u0D12'..'\u0D28' + | '\u0D2A'..'\u0D39' + | '\u0D60'..'\u0D61' + | '\u0D85'..'\u0D96' + | '\u0D9A'..'\u0DB1' + | '\u0DB3'..'\u0DBB' + | '\u0DBD' + | '\u0DC0'..'\u0DC6' + | '\u0E01'..'\u0E30' + | '\u0E32'..'\u0E33' + | '\u0E3F'..'\u0E46' + | '\u0E81'..'\u0E82' + | '\u0E84' + | '\u0E87'..'\u0E88' + | '\u0E8A' + | '\u0E8D' + | '\u0E94'..'\u0E97' + | '\u0E99'..'\u0E9F' + | '\u0EA1'..'\u0EA3' + | '\u0EA5' + | '\u0EA7' + | '\u0EAA'..'\u0EAB' + | '\u0EAD'..'\u0EB0' + | '\u0EB2'..'\u0EB3' + | '\u0EBD' + | '\u0EC0'..'\u0EC4' + | '\u0EC6' + | '\u0EDC'..'\u0EDD' + | '\u0F00' + | '\u0F40'..'\u0F47' + | '\u0F49'..'\u0F6A' + | '\u0F88'..'\u0F8B' + | '\u1000'..'\u1021' + | '\u1023'..'\u1027' + | '\u1029'..'\u102A' + | '\u1050'..'\u1055' + | '\u10A0'..'\u10C5' + | '\u10D0'..'\u10F8' + | '\u1100'..'\u1159' + | '\u115F'..'\u11A2' + | '\u11A8'..'\u11F9' + | '\u1200'..'\u1206' + | '\u1208'..'\u1246' + | '\u1248' + | '\u124A'..'\u124D' + | '\u1250'..'\u1256' + | '\u1258' + | '\u125A'..'\u125D' + | '\u1260'..'\u1286' + | '\u1288' + | '\u128A'..'\u128D' + | '\u1290'..'\u12AE' + | '\u12B0' + | '\u12B2'..'\u12B5' + | '\u12B8'..'\u12BE' + | '\u12C0' + | '\u12C2'..'\u12C5' + | '\u12C8'..'\u12CE' + | '\u12D0'..'\u12D6' + | '\u12D8'..'\u12EE' + | '\u12F0'..'\u130E' + | '\u1310' + | '\u1312'..'\u1315' + | '\u1318'..'\u131E' + | '\u1320'..'\u1346' + | '\u1348'..'\u135A' + | '\u13A0'..'\u13F4' + | '\u1401'..'\u166C' + | '\u166F'..'\u1676' + | '\u1681'..'\u169A' + | '\u16A0'..'\u16EA' + | '\u16EE'..'\u16F0' + | '\u1700'..'\u170C' + | '\u170E'..'\u1711' + | '\u1720'..'\u1731' + | '\u1740'..'\u1751' + | '\u1760'..'\u176C' + | '\u176E'..'\u1770' + | '\u1780'..'\u17B3' + | '\u17D7' + | '\u17DB'..'\u17DC' + | '\u1820'..'\u1877' + | '\u1880'..'\u18A8' + | '\u1900'..'\u191C' + | '\u1950'..'\u196D' + | '\u1970'..'\u1974' + | '\u1D00'..'\u1D6B' + | '\u1E00'..'\u1E9B' + | '\u1EA0'..'\u1EF9' + | '\u1F00'..'\u1F15' + | '\u1F18'..'\u1F1D' + | '\u1F20'..'\u1F45' + | '\u1F48'..'\u1F4D' + | '\u1F50'..'\u1F57' + | '\u1F59' + | '\u1F5B' + | '\u1F5D' + | '\u1F5F'..'\u1F7D' + | '\u1F80'..'\u1FB4' + | '\u1FB6'..'\u1FBC' + | '\u1FBE' + | '\u1FC2'..'\u1FC4' + | '\u1FC6'..'\u1FCC' + | '\u1FD0'..'\u1FD3' + | '\u1FD6'..'\u1FDB' + | '\u1FE0'..'\u1FEC' + | '\u1FF2'..'\u1FF4' + | '\u1FF6'..'\u1FFC' + | '\u203F'..'\u2040' + | '\u2054' + | '\u2071' + | '\u207F' + | '\u20A0'..'\u20B1' + | '\u2102' + | '\u2107' + | '\u210A'..'\u2113' + | '\u2115' + | '\u2119'..'\u211D' + | '\u2124' + | '\u2126' + | '\u2128' + | '\u212A'..'\u212D' + | '\u212F'..'\u2131' + | '\u2133'..'\u2139' + | '\u213D'..'\u213F' + | '\u2145'..'\u2149' + | '\u2160'..'\u2183' + | '\u3005'..'\u3007' + | '\u3021'..'\u3029' + | '\u3031'..'\u3035' + | '\u3038'..'\u303C' + | '\u3041'..'\u3096' + | '\u309D'..'\u309F' + | '\u30A1'..'\u30FF' + | '\u3105'..'\u312C' + | '\u3131'..'\u318E' + | '\u31A0'..'\u31B7' + | '\u31F0'..'\u31FF' + | '\u3400'..'\u4DB5' + | '\u4E00'..'\u9FA5' + | '\uA000'..'\uA48C' + | '\uAC00'..'\uD7A3' + | '\uF900'..'\uFA2D' + | '\uFA30'..'\uFA6A' + | '\uFB00'..'\uFB06' + | '\uFB13'..'\uFB17' + | '\uFB1D' + | '\uFB1F'..'\uFB28' + | '\uFB2A'..'\uFB36' + | '\uFB38'..'\uFB3C' + | '\uFB3E' + | '\uFB40'..'\uFB41' + | '\uFB43'..'\uFB44' + | '\uFB46'..'\uFBB1' + | '\uFBD3'..'\uFD3D' + | '\uFD50'..'\uFD8F' + | '\uFD92'..'\uFDC7' + | '\uFDF0'..'\uFDFC' + | '\uFE33'..'\uFE34' + | '\uFE4D'..'\uFE4F' + | '\uFE69' + | '\uFE70'..'\uFE74' + | '\uFE76'..'\uFEFC' + | '\uFF04' + | '\uFF1A' + | '\uFF21'..'\uFF3A' + | '\uFF3F' + | '\uFF41'..'\uFF5A' + | '\uFF65'..'\uFFBE' + | '\uFFC2'..'\uFFC7' + | '\uFFCA'..'\uFFCF' + | '\uFFD2'..'\uFFD7' + | '\uFFDA'..'\uFFDC' + | '\uFFE0'..'\uFFE1' + | '\uFFE5'..'\uFFE6'; + +terminal fragment IDENTIFIER_PART_IMPL: + '\u0000'..'\u0008' + | '\u000E'..'\u001B' + | '\u007F'..'\u009F' + | '\u00AD' + | '\u3001'..'\u3002' + | '\u0300'..'\u0357' + | '\u035D'..'\u036F' + | '\u0483'..'\u0486' + | '\u0591'..'\u05A1' + | '\u05A3'..'\u05B9' + | '\u05BB'..'\u05BD' + | '\u05BF' + | '\u05C1'..'\u05C2' + | '\u05C4' + | '\u0600'..'\u0603' + | '\u0610'..'\u0615' + | '\u064B'..'\u0658' + | '\u0660'..'\u0669' + | '\u0670' + | '\u06D6'..'\u06DD' + | '\u06DF'..'\u06E4' + | '\u06E7'..'\u06E8' + | '\u06EA'..'\u06ED' + | '\u06F0'..'\u06F9' + | '\u070F' + | '\u0711' + | '\u0730'..'\u074A' + | '\u07A6'..'\u07B0' + | '\u0901'..'\u0903' + | '\u093C' + | '\u093E'..'\u094D' + | '\u0951'..'\u0954' + | '\u0962'..'\u0963' + | '\u0966'..'\u096F' + | '\u0981'..'\u0983' + | '\u09BC' + | '\u09BE'..'\u09C4' + | '\u09C7'..'\u09C8' + | '\u09CB'..'\u09CD' + | '\u09D7' + | '\u09E2'..'\u09E3' + | '\u09E6'..'\u09EF' + | '\u0A01'..'\u0A03' + | '\u0A3C' + | '\u0A3E'..'\u0A42' + | '\u0A47'..'\u0A48' + | '\u0A4B'..'\u0A4D' + | '\u0A66'..'\u0A71' + | '\u0A81'..'\u0A83' + | '\u0ABC' + | '\u0ABE'..'\u0AC5' + | '\u0AC7'..'\u0AC9' + | '\u0ACB'..'\u0ACD' + | '\u0AE2'..'\u0AE3' + | '\u0AE6'..'\u0AEF' + | '\u0B01'..'\u0B03' + | '\u0B3C' + | '\u0B3E'..'\u0B43' + | '\u0B47'..'\u0B48' + | '\u0B4B'..'\u0B4D' + | '\u0B56'..'\u0B57' + | '\u0B66'..'\u0B6F' + | '\u0B82' + | '\u0BBE'..'\u0BC2' + | '\u0BC6'..'\u0BC8' + | '\u0BCA'..'\u0BCD' + | '\u0BD7' + | '\u0BE7'..'\u0BEF' + | '\u0C01'..'\u0C03' + | '\u0C3E'..'\u0C44' + | '\u0C46'..'\u0C48' + | '\u0C4A'..'\u0C4D' + | '\u0C55'..'\u0C56' + | '\u0C66'..'\u0C6F' + | '\u0C82'..'\u0C83' + | '\u0CBC' + | '\u0CBE'..'\u0CC4' + | '\u0CC6'..'\u0CC8' + | '\u0CCA'..'\u0CCD' + | '\u0CD5'..'\u0CD6' + | '\u0CE6'..'\u0CEF' + | '\u0D02'..'\u0D03' + | '\u0D3E'..'\u0D43' + | '\u0D46'..'\u0D48' + | '\u0D4A'..'\u0D4D' + | '\u0D57' + | '\u0D66'..'\u0D6F' + | '\u0D82'..'\u0D83' + | '\u0DCA' + | '\u0DCF'..'\u0DD4' + | '\u0DD6' + | '\u0DD8'..'\u0DDF' + | '\u0DF2'..'\u0DF3' + | '\u0E31' + | '\u0E34'..'\u0E3A' + | '\u0E47'..'\u0E4E' + | '\u0E50'..'\u0E59' + | '\u0EB1' + | '\u0EB4'..'\u0EB9' + | '\u0EBB'..'\u0EBC' + | '\u0EC8'..'\u0ECD' + | '\u0ED0'..'\u0ED9' + | '\u0F18'..'\u0F19' + | '\u0F20'..'\u0F29' + | '\u0F35' + | '\u0F37' + | '\u0F39' + | '\u0F3E'..'\u0F3F' + | '\u0F71'..'\u0F84' + | '\u0F86'..'\u0F87' + | '\u0F90'..'\u0F97' + | '\u0F99'..'\u0FBC' + | '\u0FC6' + | '\u102C'..'\u1032' + | '\u1036'..'\u1039' + | '\u1040'..'\u1049' + | '\u1056'..'\u1059' + | '\u1369'..'\u1371' + | '\u1712'..'\u1714' + | '\u1732'..'\u1734' + | '\u1752'..'\u1753' + | '\u1772'..'\u1773' + | '\u17B4'..'\u17D3' + | '\u17DD' + | '\u17E0'..'\u17E9' + | '\u180B'..'\u180D' + | '\u1810'..'\u1819' + | '\u18A9' + | '\u1920'..'\u192B' + | '\u1930'..'\u193B' + | '\u1946'..'\u194F' + | '\u200C'..'\u200F' + | '\u202A'..'\u202E' + | '\u2060'..'\u2063' + | '\u206A'..'\u206F' + | '\u20D0'..'\u20DC' + | '\u20E1' + | '\u20E5'..'\u20EA' + | '\u302A'..'\u302F' + | '\u3099'..'\u309A' + | '\uFB1E' + | '\uFE00'..'\uFE0F' + | '\uFE20'..'\uFE23' + | '\uFEFF' + | '\uFF10'..'\uFF19' + | '\uFFF9'..'\uFFFB'; + +terminal fragment IDENTIFIER_DIGITS: + '\u0030'..'\u0039'; + +terminal fragment HEX_DIGIT: + '0'..'9' | 'a'..'f' | 'A'..'F'; + +terminal fragment UNICODE_ESCAPE: + '\\' 'u' ( HEX_DIGIT ( HEX_DIGIT ( HEX_DIGIT HEX_DIGIT? )? )? )?; + +terminal fragment IDENTIFIER_PART: + IDENTIFIER_START_IMPL | IDENTIFIER_DIGITS | IDENTIFIER_PART_IMPL; + +terminal fragment IDENTIFIER_START: + IDENTIFIER_START_IMPL | IDENTIFIER_PART_IMPL; + +terminal WS: + (' '|'\t'|'\r'|'\n')+; + +terminal INT returns ecore::EInt: + ('0'..'9')+; + +terminal STRING: + '"' ('\\' . /* 'b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\' */ | !('\\' | '"' | "'" | '\n' | '\r'))* '"'; + +terminal RICH_STRING: + '@BEGIN@' -> '@END@'; + +terminal ML_COMMENT: '/*' -> '*/'; + +terminal SL_COMMENT: '//' !('\n'|'\r')* ('\r'? '\n')?; + + +ConfigurationParserRule_OperatorWithMultipleOperand: OpHasComeEarlierThan | OpHasComeLaterThan | OpIsAllocatedTo | OpIsTranslatedTo | OpIsDisplayedOn | OpIsTranslatedViewTo | OpIsOutputtedOn | OpIsTranslatedSoundTo | OpIsTypeOf; + +ConfigurationParserRule_AreaOperatorForConstraint: OpAllocatedContent | OpContentValue | OpGetContentsList | OpIsDisplayed | OpDisplayingContent | OpIsHidden | OpIsChanged | OpIsTranslatedTo | OpIsChangedDisplay | OpIsTranslatedViewTo; + +ContentOperatorsCommon: OpIsActive | OpGetAllocatables | OpIsVisible | OpHasComeEarlierThan | OpHasComeLaterThan | OpStateValue | OpIsAllocatedTo | OpIsDisplayedOn; +ConfigurationParserRule_ContentOperatorForConstraint: ContentOperatorsCommon; + +ConfigurationParserRule_ZoneOperatorForConstraint: OpAllocatedContent | OpContentValue | OpGetContentsList | OpIsOutputted | OpOutputtingSound | OpIsMuted | OpIsAttenuated | OpIsChanged | OpIsTranslatedTo | OpIsChangedOutput | OpIsTranslatedSoundTo; + +SoundOperatorsCommon: OpIsActive | OpGetAllocatables | OpIsSounding | OpHasComeEarlierThan | OpHasComeLaterThan | OpStateValue | OpIsAllocatedTo | OpIsOutputtedOn; +ConfigurationParserRule_SoundOperatorForConstraint: SoundOperatorsCommon; + +ConfigurationParserRule_SceneOperatorForConstraint: OpIsOn; + +ConfigurationParserRule_PropertyOperatorForConstraint: OpGetProperty; + |