blob: 213e8c3771a4a6f292726d57cca3df6a4fd7f4d1 [file] [log] [blame]
<?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.qvtd.xtext.qvtcore.QVTcore" usedGrammars="/1">
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
<ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="base">
<ePackage href="http://www.eclipse.org/ocl/3.1.0/BaseCST#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="essentialocl">
<ePackage href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="pivot">
<ePackage href="http://www.eclipse.org/ocl/3.1.0/Pivot#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="qvtbase">
<ePackage href="http://www.eclipse.org/qvt/0.9/QVTbase#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="qvtcorebase">
<ePackage href="http://www.eclipse.org/qvt/0.9/QVTcoreBase#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="qvtcore">
<ePackage href="http://www.eclipse.org/qvt/0.9/QVTcore#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel">
<ePackage href="http://www.eclipse.org/qvt/0.9/QVTcoreCST#/"/>
</metamodelDeclarations>
<rules xsi:type="xtext:ParserRule" name="TopLevelCS">
<type metamodel="/0/@metamodelDeclarations.7">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreCST#//TopLevelCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Alternatives" cardinality="*">
<elements xsi:type="xtext:Assignment" feature="ownedImport" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.4"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="ownedLibrary" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.5"/>
</elements>
</elements>
<elements xsi:type="xtext:Alternatives" cardinality="*">
<elements xsi:type="xtext:Assignment" feature="mappings" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="transformations" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.10"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="queries" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.8"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="MappingCS">
<type metamodel="/0/@metamodelDeclarations.7">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreCST#//MappingCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/0/@metamodelDeclarations.7">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreCST#//MappingCS"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="map"/>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="in"/>
<elements xsi:type="xtext:Assignment" feature="in" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.4">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTbase#//Transformation"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</terminal>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="refines"/>
<elements xsi:type="xtext:Assignment" feature="refines" operator="+=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcore#//Mapping"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</terminal>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="refines" operator="+=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcore#//Mapping"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</terminal>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="domains" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.6"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="where"/>
<elements xsi:type="xtext:Assignment" feature="middle" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.13"/>
</elements>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="composedMappings" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
</xtext:Grammar>
<xtext:Grammar name="org.eclipse.qvtd.xtext.qvtcorebase.QVTcoreBase" usedGrammars="/2">
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
<ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="base">
<ePackage href="http://www.eclipse.org/ocl/3.1.0/BaseCST#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="essentialocl">
<ePackage href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="pivot">
<ePackage href="http://www.eclipse.org/ocl/3.1.0/Pivot#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="qvtbase">
<ePackage href="http://www.eclipse.org/qvt/0.9/QVTbase#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="qvtcorebase">
<ePackage href="http://www.eclipse.org/qvt/0.9/QVTcoreBase#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel">
<ePackage href="http://www.eclipse.org/qvt/0.9/QVTcoreBaseCST#/"/>
</metamodelDeclarations>
<rules xsi:type="xtext:ParserRule" name="BottomPatternCS">
<type metamodel="/1/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBaseCST#//BottomPatternCS"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Assignment" feature="unrealizedVariables" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.11"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="realizedVariables" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.12"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Assignment" feature="unrealizedVariables" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.11"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="realizedVariables" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.12"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="|"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="constraints" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/1/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBaseCST#//BottomPatternCS"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="constraints" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="AssignmentCS">
<type metamodel="/1/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBaseCST#//AssignmentCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" cardinality="?" feature="default" operator="?=">
<terminal xsi:type="xtext:Keyword" value="default"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="target" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=":="/>
<elements xsi:type="xtext:Assignment" feature="initialiser" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value=";"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="DirectionCS">
<type metamodel="/1/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBaseCST#//DirectionCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/1/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBaseCST#//DirectionCS"/>
</type>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="imports"/>
<elements xsi:type="xtext:Assignment" feature="imports" operator="+=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/1/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/Pivot#//Package"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</terminal>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="imports" operator="+=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/1/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/Pivot#//Package"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</terminal>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="uses"/>
<elements xsi:type="xtext:Assignment" feature="uses" operator="+=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/1/@metamodelDeclarations.5">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBase#//CoreDomain"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</terminal>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="uses" operator="+=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/1/@metamodelDeclarations.5">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBase#//CoreDomain"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</terminal>
</elements>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="GuardPatternCS">
<type metamodel="/1/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBaseCST#//GuardPatternCS"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" feature="unrealizedVariables" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.11"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="unrealizedVariables" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.11"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="|"/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="constraints" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/1/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBaseCST#//GuardPatternCS"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="constraints" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ImportCS">
<type metamodel="/1/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//ImportCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="import"/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.22"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="pathName" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.35"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Assignment" feature="all" operator="?=">
<terminal xsi:type="xtext:Keyword" value="::"/>
</elements>
<elements xsi:type="xtext:Keyword" value="*"/>
</elements>
<elements xsi:type="xtext:Keyword" value=";"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="LibraryCS">
<type metamodel="/1/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//LibraryCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="library"/>
<elements xsi:type="xtext:Assignment" feature="package" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/1/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/Pivot#//Package"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.17"/>
</terminal>
</elements>
<elements xsi:type="xtext:Keyword" value=";"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NamedDomainCS">
<type metamodel="/1/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBaseCST#//DomainCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" cardinality="?" feature="check" operator="?=">
<terminal xsi:type="xtext:Keyword" value="check"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="enforce" operator="?=">
<terminal xsi:type="xtext:Keyword" value="enforce"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="direction" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/1/@metamodelDeclarations.4">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTbase#//TypedModel"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</terminal>
</elements>
<elements xsi:type="xtext:Assignment" feature="guardPattern" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.3"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="bottomPattern" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ParamDeclarationCS">
<type metamodel="/1/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBaseCST#//ParamDeclarationCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="ownedType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.62"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="QueryCS">
<type metamodel="/1/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBaseCST#//QueryCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="query"/>
<elements xsi:type="xtext:Assignment" feature="pathName" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.9"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</elements>
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Assignment" feature="inputParamDeclaration" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.7"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="inputParamDeclaration" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.7"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="ownedType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.62"/>
</elements>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value=";"/>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" feature="expression" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ScopeNameCS">
<type metamodel="/1/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//PathNameCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="path" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.33"/>
</elements>
<elements xsi:type="xtext:Keyword" value="::"/>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Assignment" feature="path" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.34"/>
</elements>
<elements xsi:type="xtext:Keyword" value="::"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TransformationCS">
<type metamodel="/1/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBaseCST#//TransformationCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="transformation"/>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="pathName" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.9"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.31"/>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Assignment" feature="directions" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
</elements>
<elements xsi:type="xtext:Keyword" value=";"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="UnrealizedVariableCS">
<type metamodel="/1/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBaseCST#//UnrealizedVariableCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="ownedType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.62"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="RealizedVariableCS">
<type metamodel="/1/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBaseCST#//RealizedVariableCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="realize"/>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="ownedType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.62"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="UnnamedDomainCS">
<type metamodel="/1/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBaseCST#//DomainCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/1/@metamodelDeclarations.6">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/qvt/0.9/QVTcoreBaseCST#//DomainCS"/>
</type>
</elements>
<elements xsi:type="xtext:Assignment" feature="guardPattern" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.3"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="bottomPattern" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="UnrestrictedName">
<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:RuleCall" rule="/2/@rules.28"/>
<elements xsi:type="xtext:Keyword" value="check"/>
<elements xsi:type="xtext:Keyword" value="enforce"/>
<elements xsi:type="xtext:Keyword" value="import"/>
<elements xsi:type="xtext:Keyword" value="imports"/>
<elements xsi:type="xtext:Keyword" value="library"/>
<elements xsi:type="xtext:Keyword" value="map"/>
<elements xsi:type="xtext:Keyword" value="query"/>
<elements xsi:type="xtext:Keyword" value="realize"/>
<elements xsi:type="xtext:Keyword" value="refines"/>
<elements xsi:type="xtext:Keyword" value="transformation"/>
<elements xsi:type="xtext:Keyword" value="uses"/>
</alternatives>
</rules>
</xtext:Grammar>
<xtext:Grammar name="org.eclipse.ocl.examples.xtext.essentialocl.EssentialOCL" definesHiddenTokens="true" hiddenTokens="/2/@rules.15 /2/@rules.13 /2/@rules.14">
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
<ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="pivot">
<ePackage href="http://www.eclipse.org/ocl/3.1.0/Pivot#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="base">
<ePackage href="http://www.eclipse.org/ocl/3.1.0/BaseCST#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel">
<ePackage href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#/"/>
</metamodelDeclarations>
<rules xsi:type="xtext:ParserRule" name="Model">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//ContextCS"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="ownedExpression" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="ESCAPED_CHARACTER" fragment="true">
<type metamodel="/2/@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: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="&quot;"/>
<elements xsi:type="xtext:Keyword" value="'"/>
<elements xsi:type="xtext:Keyword" value="\"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="LETTER_CHARACTER" fragment="true">
<type metamodel="/2/@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: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="_"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="DOUBLE_QUOTED_STRING">
<type metamodel="/2/@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="&quot;"/>
<elements xsi:type="xtext:Alternatives" cardinality="*">
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.1"/>
<elements xsi:type="xtext:NegatedToken">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="\"/>
<elements xsi:type="xtext:Keyword" value="&quot;"/>
</terminal>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="&quot;"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="SINGLE_QUOTED_STRING">
<type metamodel="/2/@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:Alternatives" cardinality="*">
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.1"/>
<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="'"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="ML_SINGLE_QUOTED_STRING">
<type metamodel="/2/@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="SIMPLE_ID">
<type metamodel="/2/@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="/2/@rules.2"/>
<elements xsi:type="xtext:Alternatives" cardinality="*">
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.2"/>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="ESCAPED_ID">
<type metamodel="/2/@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:RuleCall" rule="/2/@rules.4"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ID">
<type metamodel="/2/@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:RuleCall" rule="/2/@rules.6"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.7"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="INT">
<type metamodel="/2/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:CharacterRange" cardinality="+">
<left value="0"/>
<right value="9"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="LOWER">
<type metamodel="/2/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</type>
<alternatives xsi:type="xtext:RuleCall" rule="/2/@rules.9"/>
</rules>
<rules xsi:type="xtext:ParserRule" name="UPPER">
<type metamodel="/2/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.9"/>
<elements xsi:type="xtext:Keyword" value="*"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NUMBER_LITERAL">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//BigNumber"/>
</type>
<alternatives xsi:type="xtext:RuleCall" rule="/2/@rules.9"/>
</rules>
<rules xsi:type="xtext:TerminalRule" name="ML_COMMENT">
<type metamodel="/2/@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="/2/@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="&#xA;"/>
<elements xsi:type="xtext:Keyword" value="&#xD;"/>
</terminal>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" cardinality="?" value="&#xD;"/>
<elements xsi:type="xtext:Keyword" value="&#xA;"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="WS">
<type metamodel="/2/@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="&#x9;"/>
<elements xsi:type="xtext:Keyword" value="&#xD;"/>
<elements xsi:type="xtext:Keyword" value="&#xA;"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="ANY_OTHER">
<type metamodel="/2/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Wildcard"/>
</rules>
<rules xsi:type="xtext:ParserRule" name="URI">
<type metamodel="/2/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:RuleCall" rule="/2/@rules.4"/>
</rules>
<rules xsi:type="xtext:ParserRule" name="EssentialOCLReservedKeyword">
<type metamodel="/2/@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:Keyword" value="and"/>
<elements xsi:type="xtext:Keyword" value="else"/>
<elements xsi:type="xtext:Keyword" value="endif"/>
<elements xsi:type="xtext:Keyword" value="if"/>
<elements xsi:type="xtext:Keyword" value="implies"/>
<elements xsi:type="xtext:Keyword" value="in"/>
<elements xsi:type="xtext:Keyword" value="let"/>
<elements xsi:type="xtext:Keyword" value="not"/>
<elements xsi:type="xtext:Keyword" value="or"/>
<elements xsi:type="xtext:Keyword" value="then"/>
<elements xsi:type="xtext:Keyword" value="xor"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="EssentialOCLUnaryOperatorCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//UnaryOperatorCS"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="-"/>
<elements xsi:type="xtext:Keyword" value="not"/>
</terminal>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="EssentialOCLInfixOperatorCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//BinaryOperatorCS"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="*"/>
<elements xsi:type="xtext:Keyword" value="/"/>
<elements xsi:type="xtext:Keyword" value="+"/>
<elements xsi:type="xtext:Keyword" value="-"/>
<elements xsi:type="xtext:Keyword" value=">"/>
<elements xsi:type="xtext:Keyword" value="&lt;"/>
<elements xsi:type="xtext:Keyword" value=">="/>
<elements xsi:type="xtext:Keyword" value="&lt;="/>
<elements xsi:type="xtext:Keyword" value="="/>
<elements xsi:type="xtext:Keyword" value="&lt;>"/>
<elements xsi:type="xtext:Keyword" value="and"/>
<elements xsi:type="xtext:Keyword" value="or"/>
<elements xsi:type="xtext:Keyword" value="xor"/>
<elements xsi:type="xtext:Keyword" value="implies"/>
</terminal>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="EssentialOCLNavigationOperatorCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//NavigationOperatorCS"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="."/>
<elements xsi:type="xtext:Keyword" value="->"/>
</terminal>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Identifier">
<type metamodel="/2/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:RuleCall" rule="/2/@rules.8"/>
</rules>
<rules xsi:type="xtext:ParserRule" name="StringLiteral">
<type metamodel="/2/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:RuleCall" rule="/2/@rules.4"/>
</rules>
<rules xsi:type="xtext:ParserRule" name="BinaryOperatorCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//BinaryOperatorCS"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.25"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.26"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="InfixOperatorCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//BinaryOperatorCS"/>
</type>
<alternatives xsi:type="xtext:RuleCall" rule="/2/@rules.20"/>
</rules>
<rules xsi:type="xtext:ParserRule" name="NavigationOperatorCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//NavigationOperatorCS"/>
</type>
<alternatives xsi:type="xtext:RuleCall" rule="/2/@rules.21"/>
</rules>
<rules xsi:type="xtext:ParserRule" name="UnaryOperatorCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//UnaryOperatorCS"/>
</type>
<alternatives xsi:type="xtext:RuleCall" rule="/2/@rules.19"/>
</rules>
<rules xsi:type="xtext:ParserRule" name="EssentialOCLUnrestrictedName">
<type metamodel="/2/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:RuleCall" rule="/2/@rules.22"/>
</rules>
<rules xsi:type="xtext:ParserRule" name="UnrestrictedName">
<type metamodel="/2/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:RuleCall" rule="/2/@rules.28"/>
</rules>
<rules xsi:type="xtext:ParserRule" name="EssentialOCLUnreservedName">
<type metamodel="/2/@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:RuleCall" rule="/1/@rules.14"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.39"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.37"/>
<elements xsi:type="xtext:Keyword" value="Tuple"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="UnreservedName">
<type metamodel="/2/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:RuleCall" rule="/2/@rules.30"/>
</rules>
<rules xsi:type="xtext:ParserRule" name="PathNameCS">
<type metamodel="/2/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//PathNameCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="path" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.33"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value="::"/>
<elements xsi:type="xtext:Assignment" feature="path" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.34"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="FirstPathElementCS">
<type metamodel="/2/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//PathElementCS"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="element" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/2/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/Pivot#//NamedElement"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</terminal>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NextPathElementCS">
<type metamodel="/2/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//PathElementCS"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="element" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/2/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/Pivot#//NamedElement"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.31"/>
</terminal>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="URIPathNameCS">
<type metamodel="/2/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//PathNameCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="path" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.36"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value="::"/>
<elements xsi:type="xtext:Assignment" feature="path" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.34"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="URIFirstPathElementCS">
<type metamodel="/2/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//PathElementCS"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Assignment" feature="element" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/2/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/Pivot#//NamedElement"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</terminal>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/2/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//PathElementWithURICS"/>
</type>
</elements>
<elements xsi:type="xtext:Assignment" feature="element" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/2/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/Pivot#//Namespace"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.17"/>
</terminal>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="PrimitiveTypeIdentifier">
<type metamodel="/2/@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:Keyword" value="Boolean"/>
<elements xsi:type="xtext:Keyword" value="Integer"/>
<elements xsi:type="xtext:Keyword" value="Real"/>
<elements xsi:type="xtext:Keyword" value="String"/>
<elements xsi:type="xtext:Keyword" value="UnlimitedNatural"/>
<elements xsi:type="xtext:Keyword" value="OclAny"/>
<elements xsi:type="xtext:Keyword" value="OclInvalid"/>
<elements xsi:type="xtext:Keyword" value="OclVoid"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="PrimitiveTypeCS">
<type metamodel="/2/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//PrimitiveTypeRefCS"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.37"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="CollectionTypeIdentifier">
<type metamodel="/2/@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:Keyword" value="Set"/>
<elements xsi:type="xtext:Keyword" value="Bag"/>
<elements xsi:type="xtext:Keyword" value="Sequence"/>
<elements xsi:type="xtext:Keyword" value="Collection"/>
<elements xsi:type="xtext:Keyword" value="OrderedSet"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="CollectionTypeCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//CollectionTypeCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.39"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" feature="ownedType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.62"/>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="MultiplicityBoundsCS">
<type metamodel="/2/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//MultiplicityBoundsCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="lowerBound" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.10"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=".."/>
<elements xsi:type="xtext:Assignment" feature="upperBound" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.11"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="MultiplicityCS">
<type metamodel="/2/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//MultiplicityCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.41"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.43"/>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="MultiplicityStringCS">
<type metamodel="/2/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//MultiplicityStringCS"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="stringBounds" operator="=">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="*"/>
<elements xsi:type="xtext:Keyword" value="+"/>
<elements xsi:type="xtext:Keyword" value="?"/>
</terminal>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TupleTypeCS">
<type metamodel="/2/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//TupleTypeCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:Keyword" value="Tuple"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Assignment" feature="ownedParts" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.45"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="ownedParts" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.45"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TuplePartCS">
<type metamodel="/2/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//TuplePartCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="ownedType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.62"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="CollectionLiteralExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//CollectionLiteralExpCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="ownedType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.40"/>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Assignment" feature="ownedParts" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.47"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="ownedParts" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.47"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="CollectionLiteralPartCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//CollectionLiteralPartCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="expressionCS" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=".."/>
<elements xsi:type="xtext:Assignment" feature="lastExpressionCS" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ConstructorPartCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//ConstructorPartCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="property" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/2/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/Pivot#//Property"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</terminal>
</elements>
<elements xsi:type="xtext:Keyword" value="="/>
<elements xsi:type="xtext:Assignment" feature="initExpression" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="PrimitiveLiteralExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//PrimitiveLiteralExpCS"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.52"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.53"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.54"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.55"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.56"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.57"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TupleLiteralExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//TupleLiteralExpCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="Tuple"/>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" feature="ownedParts" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.51"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="ownedParts" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.51"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TupleLiteralPartCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//TupleLiteralPartCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="ownedType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.62"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="="/>
<elements xsi:type="xtext:Assignment" feature="initExpression" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NumberLiteralExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//NumberLiteralExpCS"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.12"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="StringLiteralExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//StringLiteralExpCS"/>
</type>
<alternatives xsi:type="xtext:Assignment" cardinality="+" feature="name" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.23"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="BooleanLiteralExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//BooleanLiteralExpCS"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:Keyword" value="true"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:Keyword" value="false"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="UnlimitedNaturalLiteralExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//UnlimitedNaturalLiteralExpCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//UnlimitedNaturalLiteralExpCS"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="*"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="InvalidLiteralExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//InvalidLiteralExpCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//InvalidLiteralExpCS"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="invalid"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NullLiteralExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//NullLiteralExpCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//NullLiteralExpCS"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="null"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TypeLiteralCS">
<type metamodel="/2/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//TypedRefCS"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.38"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.40"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.44"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TypeLiteralWithMultiplicityCS">
<type metamodel="/2/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//TypedRefCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.58"/>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="multiplicity" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.42"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TypeLiteralExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//TypeLiteralExpCS"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="ownedType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.59"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TypeNameExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//TypeNameExpCS"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="pathName" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.32"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TypeExpCS">
<type metamodel="/2/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/BaseCST#//TypedRefCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.61"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.58"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="multiplicity" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.42"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//ExpCS"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.64"/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Action" feature="ownedExpression" operator="+=">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//InfixExpCS"/>
</type>
</elements>
<elements xsi:type="xtext:Assignment" feature="ownedOperator" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.24"/>
</elements>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="ownedExpression" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.64"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Assignment" feature="ownedOperator" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.24"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="ownedExpression" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.64"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Assignment" feature="ownedOperator" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.24"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="ownedExpression" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.72"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Assignment" feature="ownedExpression" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.72"/>
</elements>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//PrefixExpCS"/>
</type>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="+" feature="ownedOperator" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.27"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="ownedExpression" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.72"/>
</elements>
</elements>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.72"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="PrefixedExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//ExpCS"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//PrefixExpCS"/>
</type>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="+" feature="ownedOperator" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.27"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="ownedExpression" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.65"/>
</elements>
</elements>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.65"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="PrimaryExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//ExpCS"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.74"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.71"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.75"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.49"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.50"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.46"/>
<elements xsi:type="xtext:RuleCall" rule="/2/@rules.60"/>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//NameExpCS"/>
</type>
</elements>
<elements xsi:type="xtext:Assignment" feature="pathName" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.32"/>
</elements>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Action" feature="nameExp" operator="=">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//IndexExpCS"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Assignment" feature="firstIndexes" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="firstIndexes" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="["/>
<elements xsi:type="xtext:Assignment" feature="secondIndexes" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="secondIndexes" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="]"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Assignment" feature="atPre" operator="?=">
<terminal xsi:type="xtext:Keyword" value="@"/>
</elements>
<elements xsi:type="xtext:Keyword" value="pre"/>
</elements>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Action" feature="nameExp" operator="=">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//ConstructorExpCS"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="ownedParts" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.48"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="ownedParts" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.48"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Assignment" feature="value" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.23"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Assignment" feature="atPre" operator="?=">
<terminal xsi:type="xtext:Keyword" value="@"/>
</elements>
<elements xsi:type="xtext:Keyword" value="pre"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Action" feature="nameExp" operator="=">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//InvocationExpCS"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Assignment" feature="argument" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.66"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="argument" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.68"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Assignment" feature="argument" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.69"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="argument" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.68"/>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Assignment" feature="argument" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.67"/>
</elements>
<elements xsi:type="xtext:Assignment" cardinality="*" feature="argument" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.68"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
</elements>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NavigatingArgCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//NavigatingArgCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.70"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="ownedType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.62"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="="/>
<elements xsi:type="xtext:Assignment" feature="init" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NavigatingBarArgCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//NavigatingArgCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="prefix" operator="=">
<terminal xsi:type="xtext:Keyword" value="|"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.70"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="ownedType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.62"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="="/>
<elements xsi:type="xtext:Assignment" feature="init" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NavigatingCommaArgCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//NavigatingArgCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="prefix" operator="=">
<terminal xsi:type="xtext:Keyword" value=","/>
</elements>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.70"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="ownedType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.62"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="="/>
<elements xsi:type="xtext:Assignment" feature="init" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NavigatingSemiArgCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//NavigatingArgCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="prefix" operator="=">
<terminal xsi:type="xtext:Keyword" value=";"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.70"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="ownedType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.62"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="="/>
<elements xsi:type="xtext:Assignment" feature="init" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NavigatingArgExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//ExpCS"/>
</type>
<alternatives xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</rules>
<rules xsi:type="xtext:ParserRule" name="IfExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//IfExpCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="if"/>
<elements xsi:type="xtext:Assignment" feature="condition" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
<elements xsi:type="xtext:Keyword" value="then"/>
<elements xsi:type="xtext:Assignment" feature="thenExpression" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
<elements xsi:type="xtext:Keyword" value="else"/>
<elements xsi:type="xtext:Assignment" feature="elseExpression" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
<elements xsi:type="xtext:Keyword" value="endif"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="LetExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//LetExpCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="let"/>
<elements xsi:type="xtext:Assignment" feature="variable" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.73"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="variable" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.73"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="in"/>
<elements xsi:type="xtext:Assignment" feature="in" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="LetVariableCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//LetVariableCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="name" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.14"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="ownedType" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.62"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="="/>
<elements xsi:type="xtext:Assignment" feature="initExpression" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NestedExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//NestedExpCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" feature="source" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/2/@rules.63"/>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="SelfExpCS">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//SelfExpCS"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/2/@metamodelDeclarations.3">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/ocl/3.1.0/EssentialOCLCST#//SelfExpCS"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="self"/>
</alternatives>
</rules>
</xtext:Grammar>
</xmi:XMI>