blob: b7d7d96993258ff9f01cc1c1377a46badefd2e4f [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.papyrus.marte.vsl.VSL" usedGrammars="/1">
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="uml">
<ePackage href="http://www.eclipse.org/uml2/4.0.0/UML#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
<ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:GeneratedMetamodel" name="vSL">
<ePackage href="http://www.eclipse.org/papyrus/marte/vsl/VSL#/"/>
</metamodelDeclarations>
<rules xsi:type="xtext:ParserRule" name="Expression">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//Expression"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="exp" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="AndOrXorExpression">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//AndOrXorExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Assignment" feature="op" operator="+=">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="and"/>
<elements xsi:type="xtext:Keyword" value="or"/>
<elements xsi:type="xtext:Keyword" value="xor"/>
</terminal>
</elements>
<elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="EqualityExpression">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//EqualityExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.3"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Assignment" feature="op" operator="+=">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="=="/>
<elements xsi:type="xtext:Keyword" value="&lt;>"/>
</terminal>
</elements>
<elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.3"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="RelationalExpression">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//RelationalExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Assignment" feature="op" operator="+=">
<terminal xsi:type="xtext:Alternatives">
<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=">="/>
</terminal>
</elements>
<elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ConditionalExpression">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//ConditionalExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Assignment" feature="op" operator="+=">
<terminal xsi:type="xtext:Keyword" value="?"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="AdditiveExpression">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//AdditiveExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Assignment" feature="op" operator="+=">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="+"/>
<elements xsi:type="xtext:Keyword" value="-"/>
</terminal>
</elements>
<elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="MultiplicativeExpression">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//MultiplicativeExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Assignment" feature="op" operator="+=">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="*"/>
<elements xsi:type="xtext:Keyword" value="/"/>
<elements xsi:type="xtext:Keyword" value="mod"/>
</terminal>
</elements>
<elements xsi:type="xtext:Assignment" feature="exp" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="UnaryExpression">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//UnaryExpression"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="op" operator="=">
<terminal xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="not"/>
<elements xsi:type="xtext:Keyword" value="-"/>
<elements xsi:type="xtext:Keyword" value="+"/>
</terminal>
</elements>
<elements xsi:type="xtext:Assignment" feature="unary" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
</elements>
</elements>
<elements xsi:type="xtext:Assignment" feature="exp" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.8"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="PrimaryExpression">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//PrimaryExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="prefix" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="."/>
<elements xsi:type="xtext:Assignment" feature="suffix" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ValueSpecification">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//ValueSpecification"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.14"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="SuffixExpression">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//SuffixExpression"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="PropertyCallExpression">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//PropertyCallExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="property" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>
</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" feature="suffix" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="OperationCallExpression">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//OperationCallExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="operation" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Operation"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="arguments" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
</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="suffix" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Literal">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//Literal"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.31"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.37"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.39"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.41"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NameOrChoiceOrBehaviorCall">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//NameOrChoiceOrBehaviorCall"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" cardinality="?" feature="path" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="id" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
</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="arguments" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="QualifiedName">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//QualifiedName"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="path" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
<elements xsi:type="xtext:Keyword" value="::"/>
<elements xsi:type="xtext:Assignment" cardinality="?" feature="remaining" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Interval">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//Interval"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="]"/>
<elements xsi:type="xtext:Assignment" feature="isLowerIncluded" operator="=">
<terminal xsi:type="xtext:Keyword" value="["/>
</elements>
</elements>
<elements xsi:type="xtext:Assignment" feature="lower" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=".."/>
<elements xsi:type="xtext:Assignment" feature="upper" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
</elements>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Assignment" feature="isUpperIncluded" operator="=">
<terminal xsi:type="xtext:Keyword" value="]"/>
</elements>
<elements xsi:type="xtext:Keyword" value="["/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="CollectionOrTuple">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//CollectionOrTuple"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" feature="listOfValues" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
</elements>
<elements xsi:type="xtext:Keyword" value="}"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="Tuple">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//Tuple"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="{"/>
<elements xsi:type="xtext:Assignment" feature="listOfValueNamePairs" 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="ListOfValues">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//ListOfValues"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="values" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="values" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ListOfValueNamePairs">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//ListOfValueNamePairs"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="valueNamePairs" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="valueNamePairs" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ValueNamePair">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//ValueNamePair"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" feature="property" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
<elements xsi:type="xtext:Keyword" value="="/>
<elements xsi:type="xtext:Assignment" feature="value" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TimeExpression">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//TimeExpression"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="InstantObsExpression">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//InstantObsExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="@"/>
<elements xsi:type="xtext:Assignment" feature="id" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" feature="index" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="when"/>
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" feature="condition" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="InstantObsName">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//InstantObsName"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" cardinality="?" feature="path" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="instantId" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TimeObservation"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="DurationObsExpression">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//DurationObsExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="&amp;"/>
<elements xsi:type="xtext:Assignment" feature="id" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" feature="index" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="when"/>
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" feature="condition" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="DurationObsName">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//DurationObsName"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" cardinality="?" feature="path" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="durationId" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//DurationObservation"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="JitterExp">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//JitterExp"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="jitter("/>
<elements xsi:type="xtext:Assignment" feature="firstInstant" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="-"/>
<elements xsi:type="xtext:Assignment" feature="secondInstant" 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="VariableDeclaration">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//VariableDeclaration"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" cardinality="?" feature="variableDeclaration" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
</elements>
<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:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:Assignment" feature="type" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.30"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="="/>
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" feature="initValue" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="="/>
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" feature="initValue" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.0"/>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="VariableDirectionKind">
<type metamodel="/0/@metamodelDeclarations.1">
<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="in"/>
<elements xsi:type="xtext:Keyword" value="out"/>
<elements xsi:type="xtext:Keyword" value="inout"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="DataTypeName">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//DataTypeName"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Assignment" cardinality="?" feature="path" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="type" operator="=">
<terminal xsi:type="xtext:CrossReference">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//DataType"/>
</type>
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</terminal>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NumberLiteralRule">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//NumberLiteralRule"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.32"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.34"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.35"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="IntegerLiteralRule">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//IntegerLiteralRule"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="IntegerLiteral">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Alternatives" cardinality="?">
<elements xsi:type="xtext:Keyword" value="+"/>
<elements xsi:type="xtext:Keyword" value="-"/>
</elements>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:CharacterRange" cardinality="+">
<left value="0"/>
<right value="9"/>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="0x"/>
<elements xsi:type="xtext:Alternatives" cardinality="+">
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="A"/>
<right value="F"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="a"/>
<right value="f"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="0b"/>
<elements xsi:type="xtext:CharacterRange" cardinality="+">
<left value="0"/>
<right value="1"/>
</elements>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="UnlimitedLiteralRule">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//UnlimitedLiteralRule"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
<terminal xsi:type="xtext:Keyword" value="*"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="RealLiteralRule">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//RealLiteralRule"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="RealLiteral">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Alternatives" cardinality="?">
<elements xsi:type="xtext:Keyword" value="+"/>
<elements xsi:type="xtext:Keyword" value="-"/>
</elements>
<elements xsi:type="xtext:CharacterRange" cardinality="+">
<left value="0"/>
<right value="9"/>
</elements>
<elements xsi:type="xtext:Keyword" value="."/>
<elements xsi:type="xtext:CharacterRange" cardinality="+">
<left value="0"/>
<right value="9"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value="E"/>
<elements xsi:type="xtext:Alternatives" cardinality="?">
<elements xsi:type="xtext:Keyword" value="+"/>
<elements xsi:type="xtext:Keyword" value="-"/>
</elements>
<elements xsi:type="xtext:CharacterRange" cardinality="+">
<left value="0"/>
<right value="9"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="DateTimeLiteralRule">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//DateTimeLiteralRule"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.38"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="DateTimeLiteral">
<type metamodel="/0/@metamodelDeclarations.1">
<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:Group">
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="1"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="2"/>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="3"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="5"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="5"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=":"/>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=" "/>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
<elements xsi:type="xtext:Keyword" value="/"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="0"/>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="1"/>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="2"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="/"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="2"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="3"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="0"/>
<elements xsi:type="xtext:Keyword" value="1"/>
</elements>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=" "/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="Mon"/>
<elements xsi:type="xtext:Keyword" value="Tue"/>
<elements xsi:type="xtext:Keyword" value="Wed"/>
<elements xsi:type="xtext:Keyword" value="Thr"/>
<elements xsi:type="xtext:Keyword" value="Fri"/>
<elements xsi:type="xtext:Keyword" value="Sat"/>
<elements xsi:type="xtext:Keyword" value="Sun"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
<elements xsi:type="xtext:Keyword" value="/"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="0"/>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="1"/>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="2"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="/"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="2"/>
</elements>
<elements xsi:type="xtext:CharacterRange">
<left value="0"/>
<right value="9"/>
</elements>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="3"/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="0"/>
<elements xsi:type="xtext:Keyword" value="1"/>
</elements>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Group" cardinality="?">
<elements xsi:type="xtext:Keyword" value=" "/>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="Mon"/>
<elements xsi:type="xtext:Keyword" value="Tue"/>
<elements xsi:type="xtext:Keyword" value="Wed"/>
<elements xsi:type="xtext:Keyword" value="Thr"/>
<elements xsi:type="xtext:Keyword" value="Fri"/>
<elements xsi:type="xtext:Keyword" value="Sat"/>
<elements xsi:type="xtext:Keyword" value="Sun"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="Mon"/>
<elements xsi:type="xtext:Keyword" value="Tue"/>
<elements xsi:type="xtext:Keyword" value="Wed"/>
<elements xsi:type="xtext:Keyword" value="Thr"/>
<elements xsi:type="xtext:Keyword" value="Fri"/>
<elements xsi:type="xtext:Keyword" value="Sat"/>
<elements xsi:type="xtext:Keyword" value="Sun"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="BooleanLiteralRule">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//BooleanLiteralRule"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.40"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="BooleanLiteral">
<type metamodel="/0/@metamodelDeclarations.1">
<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="true"/>
<elements xsi:type="xtext:Keyword" value="false"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NullLiteralRule">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//NullLiteralRule"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.42"/>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="NullLiteral">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</type>
<alternatives xsi:type="xtext:Keyword" value="null"/>
</rules>
<rules xsi:type="xtext:ParserRule" name="DefaultLiteralRule">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//DefaultLiteralRule"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
<terminal xsi:type="xtext:Keyword" value="/"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="StringLiteralRule">
<type metamodel="/0/@metamodelDeclarations.2">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/papyrus/marte/vsl/VSL#//StringLiteralRule"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
</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="&quot;"/>
<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="&quot;"/>
<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="&quot;"/>
</terminal>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="&quot;"/>
</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="&quot;"/>
<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="&#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="/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="&#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="/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>