blob: b3e79f8292f5102f3e235f54180510a24586df41 (
plain) (
tree)
|
|
<?xml version="1.0" encoding="ASCII"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:xtext="http://www.eclipse.org/2008/Xtext">
<xtext:Grammar name="org.eclipse.etrice.core.Room" usedGrammars="/1">
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
<ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:GeneratedMetamodel" name="room">
<ePackage href="http://www.eclipse.org/etrice/Room#/"/>
</metamodelDeclarations>
<rules xsi:type="xtext:ParserRule" name="RoomModel">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//RoomModel"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="RoomModel"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="imports" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.86"/>
</elements>
<elements xsi:type="xtext:Alternatives" cardinality="*">
<elements xsi:type="xtext:Assignment" feature="primitiveTypes" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="externalTypes" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="dataClasses" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="protocolClasses" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="actorClasses" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.31"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="subSystemClasses" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.41"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="systems" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.38"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="RoomClass">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//RoomClass"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="StructureClass">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//StructureClass"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.3"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.38"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ActorContainerClass">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorContainerClass"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.31"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.41"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="VarDecl">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//VarDecl"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="refType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="RefableType">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//RefableType"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="type" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//DataType"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
</terminal>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="ref" operator="?=">
<terminal xsi:type="xtext:Keyword" value="ref"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:EnumRule" name="LiteralType">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EEnum" href="http://www.eclipse.org/etrice/Room#//LiteralType"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/etrice/Room#//LiteralType/BOOL"/>
<literal value="ptBoolean"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/etrice/Room#//LiteralType/INT"/>
<literal value="ptInteger"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/etrice/Room#//LiteralType/REAL"/>
<literal value="ptReal"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/etrice/Room#//LiteralType/CHAR"/>
<literal value="ptCharacter"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="DataType">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//DataType"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.8"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ComplexType">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ComplexType"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="PrimitiveType">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//PrimitiveType"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="PrimitiveType"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="type" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
</elements>
<elements xsi:type="xtext:Keyword" value="->"/>
<elements xsi:type="xtext:Assignment" feature="targetName" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" feature="castName" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
<elements xsi:type="xtext:Keyword" value="default"/>
<elements xsi:type="xtext:Assignment" feature="defaultValueLiteral" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ExternalType">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ExternalType"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="ExternalType"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value="->"/>
<elements xsi:type="xtext:Assignment" feature="targetName" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="default"/>
<elements xsi:type="xtext:Assignment" feature="defaultValueLiteral" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
</elements>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="DataClass">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//DataClass"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="DataClass"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="extends"/>
<elements xsi:type="xtext:Assignment" feature="base" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//DataClass"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
</terminal>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.84"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="usercode1"/>
<elements xsi:type="xtext:Assignment" feature="userCode1" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="usercode2"/>
<elements xsi:type="xtext:Assignment" feature="userCode2" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="usercode3"/>
<elements xsi:type="xtext:Assignment" feature="userCode3" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="attributes" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="operations" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.14"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Attribute">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Attribute"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="Attribute"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Assignment" feature="size" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="refType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="="/>
<elements xsi:type="xtext:Assignment" feature="defaultValueLiteral" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
</elements>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Operation">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Operation"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.14"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="StandardOperation">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//StandardOperation"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="Operation"/>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="destructor" operator="?=">
<terminal xsi:type="xtext:Keyword" value="~"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="void"/>
<elements xsi:type="xtext:Assignment" feature="returntype" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="detailCode" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="PortOperation">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//PortOperation"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="Operation"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="arguments" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
<elements xsi:type="xtext:Alternatives" cardinality="?">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="void"/>
<elements xsi:type="xtext:Assignment" feature="returntype" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="sends"/>
<elements xsi:type="xtext:Assignment" feature="sendsMsg" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Message"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="detailCode" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:EnumRule" name="CommunicationType">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EEnum" href="http://www.eclipse.org/etrice/Room#//CommunicationType"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/etrice/Room#//CommunicationType/EVENT_DRIVEN"/>
<literal value="eventdriven"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/etrice/Room#//CommunicationType/DATA_DRIVEN"/>
<literal value="datadriven"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/etrice/Room#//CommunicationType/SYNCHRONOUS"/>
<literal value="sync"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="GeneralProtocolClass">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//GeneralProtocolClass"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ProtocolClass">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ProtocolClass"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" cardinality="?" feature="commType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
</elements>
<elements xsi:type="xtext:Keyword" value="ProtocolClass"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="extends"/>
<elements xsi:type="xtext:Assignment" feature="base" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ProtocolClass"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
</terminal>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.84"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="usercode1"/>
<elements xsi:type="xtext:Assignment" feature="userCode1" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="usercode2"/>
<elements xsi:type="xtext:Assignment" feature="userCode2" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="usercode3"/>
<elements xsi:type="xtext:Assignment" feature="userCode3" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="incoming"/>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="incomingMessages" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="outgoing"/>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="outgoingMessages" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="regular"/>
<elements xsi:type="xtext:Keyword" value="PortClass"/>
<elements xsi:type="xtext:Assignment" feature="regular" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="conjugate"/>
<elements xsi:type="xtext:Keyword" value="PortClass"/>
<elements xsi:type="xtext:Assignment" feature="conjugate" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
</elements>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="semantics" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="CompoundProtocolClass">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//CompoundProtocolClass"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="CompoundProtocolClass"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.84"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="+" feature="subProtocols" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="SubProtocol">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SubProtocol"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="SubProtocol"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="protocol" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//GeneralProtocolClass"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
</terminal>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Message">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Message"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" cardinality="?" feature="priv" operator="?=">
<terminal xsi:type="xtext:Keyword" value="private"/>
</elements>
<elements xsi:type="xtext:Keyword" value="Message"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="data" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="PortClass">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//PortClass"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="usercode"/>
<elements xsi:type="xtext:Assignment" feature="userCode" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Alternatives" cardinality="+">
<elements xsi:type="xtext:Assignment" feature="attributes" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="operations" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="msgHandlers" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="MessageHandler">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//MessageHandler"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="InMessageHandler">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//InMessageHandler"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="handle"/>
<elements xsi:type="xtext:Keyword" value="incoming"/>
<elements xsi:type="xtext:Assignment" feature="msg" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Message"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
<elements xsi:type="xtext:Assignment" feature="detailCode" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="OutMessageHandler">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//OutMessageHandler"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="handle"/>
<elements xsi:type="xtext:Keyword" value="outgoing"/>
<elements xsi:type="xtext:Assignment" feature="msg" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Message"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
<elements xsi:type="xtext:Assignment" feature="detailCode" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ProtocolSemantics">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ProtocolSemantics"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ProtocolSemantics"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="semantics"/>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="rules" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="SemanticsRule">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SemanticsRule"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="InSemanticsRule">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//InSemanticsRule"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="in"/>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="msg" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Message"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="->"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Assignment" feature="followUps" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" feature="followUps" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="+">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="followUps" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="OutSemanticsRule">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//OutSemanticsRule"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="out"/>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="msg" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Message"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="->"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Assignment" feature="followUps" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" feature="followUps" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="+">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="followUps" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:EnumRule" name="ActorCommunicationType">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EEnum" href="http://www.eclipse.org/etrice/Room#//ActorCommunicationType"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/etrice/Room#//ActorCommunicationType/EVENT_DRIVEN"/>
<literal value="eventdriven"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/etrice/Room#//ActorCommunicationType/DATA_DRIVEN"/>
<literal value="datadriven"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/etrice/Room#//ActorCommunicationType/ASYNCHRONOUS"/>
<literal value="async"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/etrice/Room#//ActorCommunicationType/SYNCHRONOUS"/>
<literal value="sync"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ActorClass">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorClass"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:UnorderedGroup">
<elements xsi:type="xtext:Assignment" cardinality="?" feature="abstract" operator="?=">
<terminal xsi:type="xtext:Keyword" value="abstract"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="commType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.30"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="ActorClass"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="extends"/>
<elements xsi:type="xtext:Assignment" feature="base" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorClass"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
</terminal>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.84"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="Interface"/>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="ifPorts" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="ifSPPs" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="Structure"/>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="structureDocu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="usercode1"/>
<elements xsi:type="xtext:Assignment" feature="userCode1" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="usercode2"/>
<elements xsi:type="xtext:Assignment" feature="userCode2" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="usercode3"/>
<elements xsi:type="xtext:Assignment" feature="userCode3" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Alternatives" cardinality="*">
<elements xsi:type="xtext:Assignment" feature="intPorts" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="extPorts" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.34"/>
</elements>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="serviceImplementations" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.37"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="strSAPs" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.35"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="attributes" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="actorRefs" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="bindings" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="connections" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.47"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="Behavior"/>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="behaviorDocu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="behaviorAnnotations" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.84"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="operations" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.14"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="stateMachine" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="InterfaceItem">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//InterfaceItem"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.35"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Port">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Port"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" cardinality="?" feature="conjugated" operator="?=">
<terminal xsi:type="xtext:Keyword" value="conjugated"/>
</elements>
<elements xsi:type="xtext:Keyword" value="Port"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="multiplicity" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.89"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="protocol" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//GeneralProtocolClass"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
</terminal>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ExternalPort">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ExternalPort"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="external"/>
<elements xsi:type="xtext:Keyword" value="Port"/>
<elements xsi:type="xtext:Assignment" feature="ifport" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Port"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="SAPRef">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SAPRef"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="SAP"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="protocol" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ProtocolClass"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
</terminal>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="SPPRef">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SPPRef"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="SPP"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="protocol" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ProtocolClass"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
</terminal>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ServiceImplementation">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ServiceImplementation"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="ServiceImplementation"/>
<elements xsi:type="xtext:Keyword" value="of"/>
<elements xsi:type="xtext:Assignment" feature="spp" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SPPRef"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="LogicalSystem">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//LogicalSystem"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="LogicalSystem"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.84"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="subSystems" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.40"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="bindings" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="connections" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.47"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ActorContainerRef">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorContainerRef"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.40"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="SubSystemRef">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SubSystemRef"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="SubSystemRef"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="type" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SubSystemClass"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
</terminal>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="SubSystemClass">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SubSystemClass"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="SubSystemClass"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="annotations" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.84"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="usercode1"/>
<elements xsi:type="xtext:Assignment" feature="userCode1" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="usercode2"/>
<elements xsi:type="xtext:Assignment" feature="userCode2" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="usercode3"/>
<elements xsi:type="xtext:Assignment" feature="userCode3" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="relayPorts" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="ifSPPs" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="actorRefs" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="bindings" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="connections" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.47"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="threads" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.42"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="actorInstanceMappings" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="LogicalThread">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//LogicalThread"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="LogicalThread"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ActorInstanceMapping">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorInstanceMapping"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="ActorInstanceMapping"/>
<elements xsi:type="xtext:Assignment" feature="path" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
</elements>
<elements xsi:type="xtext:Keyword" value="->"/>
<elements xsi:type="xtext:Assignment" feature="thread" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//LogicalThread"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="actorInstanceMappings" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="RefPath">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//RefPath"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="refs" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value="/"/>
<elements xsi:type="xtext:Assignment" feature="refs" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Binding">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Binding"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="Binding"/>
<elements xsi:type="xtext:Assignment" feature="endpoint1" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
</elements>
<elements xsi:type="xtext:Keyword" value="and"/>
<elements xsi:type="xtext:Assignment" feature="endpoint2" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="BindingEndPoint">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//BindingEndPoint"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Assignment" feature="actorRef" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorContainerRef"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
<elements xsi:type="xtext:Keyword" value="."/>
</elements>
<elements xsi:type="xtext:Assignment" feature="port" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Port"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="sub"/>
<elements xsi:type="xtext:Assignment" feature="sub" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SubProtocol"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="LayerConnection">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//LayerConnection"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="LayerConnection"/>
<elements xsi:type="xtext:Assignment" feature="from" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
</elements>
<elements xsi:type="xtext:Keyword" value="satisfied_by"/>
<elements xsi:type="xtext:Assignment" feature="to" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.51"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="SAPoint">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SAPoint"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.50"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="RefSAPoint">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//RefSAPoint"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="ref"/>
<elements xsi:type="xtext:Assignment" feature="ref" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorContainerRef"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="RelaySAPoint">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//RelaySAPoint"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="relay_sap"/>
<elements xsi:type="xtext:Assignment" feature="relay" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SPPRef"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="SPPoint">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SPPoint"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="ref" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorContainerRef"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
<elements xsi:type="xtext:Keyword" value="."/>
<elements xsi:type="xtext:Assignment" feature="service" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SPPRef"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ActorRef">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorRef"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="ActorRef"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Assignment" feature="size" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="type" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ActorClass"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
</terminal>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="StateGraphNode">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//StateGraphNode"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.55"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.65"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.61"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="StateGraphItem">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//StateGraphItem"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.66"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="State">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//State"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.58"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.59"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="StateGraph">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//StateGraph"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//StateGraph"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Alternatives" cardinality="*">
<elements xsi:type="xtext:Assignment" feature="states" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.55"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="trPoints" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.61"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="chPoints" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.65"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="transitions" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.66"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="refinedTransitions" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.74"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="StateMachine">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//StateGraph"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//StateGraph"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="StateMachine"/>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Alternatives" cardinality="*">
<elements xsi:type="xtext:Assignment" feature="states" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.55"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="trPoints" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.61"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="chPoints" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.65"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="transitions" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.66"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="refinedTransitions" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.74"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="SimpleState">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SimpleState"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="State"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="entry"/>
<elements xsi:type="xtext:Assignment" feature="entryCode" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="exit"/>
<elements xsi:type="xtext:Assignment" feature="exitCode" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="do"/>
<elements xsi:type="xtext:Assignment" feature="doCode" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="subgraph"/>
<elements xsi:type="xtext:Assignment" feature="subgraph" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.56"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="RefinedState">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//RefinedState"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="RefinedState"/>
<elements xsi:type="xtext:Assignment" feature="target" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//State"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
</terminal>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="entry"/>
<elements xsi:type="xtext:Assignment" feature="entryCode" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="exit"/>
<elements xsi:type="xtext:Assignment" feature="exitCode" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="do"/>
<elements xsi:type="xtext:Assignment" feature="doCode" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="subgraph"/>
<elements xsi:type="xtext:Assignment" feature="subgraph" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.56"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="DetailCode">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//DetailCode"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" cardinality="+" feature="commands" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TrPoint">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//TrPoint"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.63"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.64"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TransitionPoint">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//TransitionPoint"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" cardinality="?" feature="handler" operator="?=">
<terminal xsi:type="xtext:Keyword" value="handler"/>
</elements>
<elements xsi:type="xtext:Keyword" value="TransitionPoint"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="EntryPoint">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//EntryPoint"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="EntryPoint"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ExitPoint">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ExitPoint"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="ExitPoint"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ChoicePoint">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ChoicePoint"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="ChoicePoint"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Transition">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Transition"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.69"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.67"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NonInitialTransition">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//NonInitialTransition"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.68"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.73"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TransitionChainStartTransition">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//TransitionChainStartTransition"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.71"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.72"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="InitialTransition">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//InitialTransition"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="Transition"/>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Keyword" value="initial"/>
<elements xsi:type="xtext:Keyword" value="->"/>
<elements xsi:type="xtext:Assignment" feature="to" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.75"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="action"/>
<elements xsi:type="xtext:Assignment" feature="action" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ContinuationTransition">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ContinuationTransition"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="Transition"/>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="from" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.75"/>
</elements>
<elements xsi:type="xtext:Keyword" value="->"/>
<elements xsi:type="xtext:Assignment" feature="to" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.75"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="action"/>
<elements xsi:type="xtext:Assignment" feature="action" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TriggeredTransition">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//TriggeredTransition"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="Transition"/>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="from" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.75"/>
</elements>
<elements xsi:type="xtext:Keyword" value="->"/>
<elements xsi:type="xtext:Assignment" feature="to" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.75"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Keyword" value="triggers"/>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" feature="triggers" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.80"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value="or"/>
<elements xsi:type="xtext:Assignment" feature="triggers" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.80"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="action"/>
<elements xsi:type="xtext:Assignment" feature="action" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="GuardedTransition">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//GuardedTransition"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="Transition"/>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="from" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.75"/>
</elements>
<elements xsi:type="xtext:Keyword" value="->"/>
<elements xsi:type="xtext:Assignment" feature="to" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.75"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Keyword" value="guard"/>
<elements xsi:type="xtext:Assignment" feature="guard" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="action"/>
<elements xsi:type="xtext:Assignment" feature="action" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="CPBranchTransition">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//CPBranchTransition"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="Transition"/>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="from" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.75"/>
</elements>
<elements xsi:type="xtext:Keyword" value="->"/>
<elements xsi:type="xtext:Assignment" feature="to" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.75"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Keyword" value="cond"/>
<elements xsi:type="xtext:Assignment" feature="condition" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="action"/>
<elements xsi:type="xtext:Assignment" feature="action" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="RefinedTransition">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//RefinedTransition"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="RefinedTransition"/>
<elements xsi:type="xtext:Assignment" feature="target" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Transition"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
</terminal>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="docu" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Keyword" value="action"/>
<elements xsi:type="xtext:Assignment" feature="action" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TransitionTerminal">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//TransitionTerminal"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.76"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.77"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.78"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.79"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="StateTerminal">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//StateTerminal"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="state" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//State"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TrPointTerminal">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//TrPointTerminal"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="my"/>
<elements xsi:type="xtext:Assignment" feature="trPoint" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//TrPoint"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="SubStateTrPointTerminal">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//SubStateTrPointTerminal"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="trPoint" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//TrPoint"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
<elements xsi:type="xtext:Keyword" value="of"/>
<elements xsi:type="xtext:Assignment" feature="state" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//State"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ChoicepointTerminal">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ChoicepointTerminal"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="cp"/>
<elements xsi:type="xtext:Assignment" feature="cp" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//ChoicePoint"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Trigger">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Trigger"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="<"/>
<elements xsi:type="xtext:Assignment" feature="msgFromIfPairs" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.81"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value="|"/>
<elements xsi:type="xtext:Assignment" feature="msgFromIfPairs" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.81"/>
</elements>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="guard" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.82"/>
</elements>
<elements xsi:type="xtext:Keyword" value=">"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="MessageFromIf">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//MessageFromIf"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="message" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Message"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="from" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//InterfaceItem"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Guard">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Guard"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="guard"/>
<elements xsi:type="xtext:Assignment" feature="guard" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Documentation">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Documentation"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Assignment" cardinality="+" feature="text" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Annotation">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Annotation"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="@"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" feature="attributes" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.85"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="attributes" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.85"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="KeyValue">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//KeyValue"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="key" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value="="/>
<elements xsi:type="xtext:Assignment" feature="value" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Import">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/etrice/Room#//Import"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="import"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="importedNamespace" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.87"/>
</elements>
<elements xsi:type="xtext:Keyword" value="from"/>
</elements>
<elements xsi:type="xtext:Keyword" value="model"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="importURI" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ImportedFQN">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.88"/>
<elements xsi:type="xtext:Keyword" cardinality="?" value=".*"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="FQN">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value="."/>
<elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="MULTIPLICITY">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="*"/>
<elements xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
</alternatives>
</rules>
</xtext:Grammar>
<xtext:Grammar name="org.eclipse.xtext.common.Terminals" definesHiddenTokens="true" hiddenTokens="/1/@rules.5 /1/@rules.3 /1/@rules.4">
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
<ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
</metamodelDeclarations>
<rules xsi:type="xtext:TerminalRule" name="ID">
<type metamodel="/1/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" cardinality="?" value="^"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:CharacterRange">
<left value="a"/>
<right value="z"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="A"/>
<right value="Z"/>
</elements>
<elements xsi:type="xtext:Keyword" value="_"/>
</elements>
<elements xsi:type="xtext:Alternatives" cardinality="*">
<elements xsi:type="xtext:CharacterRange">
<left value="a"/>
<right value="z"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="A"/>
<right value="Z"/>
</elements>
<elements xsi:type="xtext:Keyword" value="_"/>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="INT">
<type metamodel="/1/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</type>
<alternatives xsi:type="xtext:CharacterRange" cardinality="+">
<left value="0"/>
<right value="9"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="STRING">
<type metamodel="/1/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="""/>
<elements xsi:type="xtext:Alternatives" cardinality="*">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="\"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="b"/>
<elements xsi:type="xtext:Keyword" value="t"/>
<elements xsi:type="xtext:Keyword" value="n"/>
<elements xsi:type="xtext:Keyword" value="f"/>
<elements xsi:type="xtext:Keyword" value="r"/>
<elements xsi:type="xtext:Keyword" value="u"/>
<elements xsi:type="xtext:Keyword" value="""/>
<elements xsi:type="xtext:Keyword" value="'"/>
<elements xsi:type="xtext:Keyword" value="\"/>
</elements>
</elements>
<elements xsi:type="xtext:NegatedToken">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="\"/>
<elements xsi:type="xtext:Keyword" value="""/>
</terminal>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="""/>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="'"/>
<elements xsi:type="xtext:Alternatives" cardinality="*">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="\"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="b"/>
<elements xsi:type="xtext:Keyword" value="t"/>
<elements xsi:type="xtext:Keyword" value="n"/>
<elements xsi:type="xtext:Keyword" value="f"/>
<elements xsi:type="xtext:Keyword" value="r"/>
<elements xsi:type="xtext:Keyword" value="u"/>
<elements xsi:type="xtext:Keyword" value="""/>
<elements xsi:type="xtext:Keyword" value="'"/>
<elements xsi:type="xtext:Keyword" value="\"/>
</elements>
</elements>
<elements xsi:type="xtext:NegatedToken">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="\"/>
<elements xsi:type="xtext:Keyword" value="'"/>
</terminal>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="'"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="ML_COMMENT">
<type metamodel="/1/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="/*"/>
<elements xsi:type="xtext:UntilToken">
<terminal xsi:type="xtext:Keyword" value="*/"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="SL_COMMENT">
<type metamodel="/1/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="//"/>
<elements xsi:type="xtext:NegatedToken" cardinality="*">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="
"/>
<elements xsi:type="xtext:Keyword" value="
"/>
</terminal>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" cardinality="?" value="
"/>
<elements xsi:type="xtext:Keyword" value="
"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="WS">
<type metamodel="/1/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Alternatives" cardinality="+">
<elements xsi:type="xtext:Keyword" value=" "/>
<elements xsi:type="xtext:Keyword" value="	"/>
<elements xsi:type="xtext:Keyword" value="
"/>
<elements xsi:type="xtext:Keyword" value="
"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="ANY_OTHER">
<type metamodel="/1/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Wildcard"/>
</rules>
</xtext:Grammar>
</xmi:XMI>
|