blob: 2e1f399b281bf2f432f9b4dac34a8f5f5a3ebf14 [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.net4j.tools.workingset.Dsl" usedGrammars="/1">
<metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
<ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
</metamodelDeclarations>
<metamodelDeclarations xsi:type="xtext:GeneratedMetamodel" name="dsl">
<ePackage href="http://www.eclipse.org/net4j/tools/workingset#/"/>
</metamodelDeclarations>
<rules xsi:type="xtext:ParserRule" name="BooleanExpression">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//BooleanExpression"/>
</type>
<alternatives xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
</rules>
<rules xsi:type="xtext:ParserRule" name="OrExpression">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//BooleanExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Action" feature="left" operator="=">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//OrExpression"/>
</type>
</elements>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
<elements xsi:type="xtext:Assignment" feature="right" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="XorExpression">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//BooleanExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.3"/>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Action" feature="left" operator="=">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//XorExpression"/>
</type>
</elements>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
<elements xsi:type="xtext:Assignment" feature="right" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.3"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="AndExpression">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//BooleanExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Action" feature="left" operator="=">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//AndExpression"/>
</type>
</elements>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
<elements xsi:type="xtext:Assignment" feature="right" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ComparisonExpression">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//BooleanExpression"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Action" feature="left" operator="=">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//BooleanComparison"/>
</type>
</elements>
<elements xsi:type="xtext:Assignment" feature="operator" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="right" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
</elements>
</elements>
</elements>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
<elements xsi:type="xtext:Group" cardinality="+">
<elements xsi:type="xtext:Action" feature="left" operator="=">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//StringComparison"/>
</type>
</elements>
<elements xsi:type="xtext:Assignment" feature="operator" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="right" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
</elements>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="PrimaryExpression">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//BooleanExpression"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.8"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
<elements xsi:type="xtext:Group">
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
<elements xsi:type="xtext:Keyword" value=")"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="BooleanLiteral">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//BooleanLiteral"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NotExpression">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//BooleanExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//NotExpression"/>
</type>
</elements>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
<elements xsi:type="xtext:Assignment" feature="right" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="IsExpression">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//BooleanExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//IsExpression"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="is"/>
<elements xsi:type="xtext:Assignment" feature="type" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="HasExpression">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//BooleanExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//HasExpression"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="has"/>
<elements xsi:type="xtext:Assignment" feature="kind" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
</elements>
<elements xsi:type="xtext:Assignment" feature="what" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="TestExpression">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//BooleanExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:Action">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//TestExpression"/>
</type>
</elements>
<elements xsi:type="xtext:Assignment" feature="property" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value="."/>
<elements xsi:type="xtext:Assignment" feature="property" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value="("/>
<elements xsi:type="xtext:Assignment" feature="args" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
</elements>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Keyword" value=","/>
<elements xsi:type="xtext:Assignment" feature="args" operator="+=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
</elements>
</elements>
<elements xsi:type="xtext:Keyword" value=")"/>
<elements xsi:type="xtext:Keyword" value="is"/>
<elements xsi:type="xtext:Assignment" feature="expected" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="ConcatExpression">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//StringExpression"/>
</type>
<alternatives xsi:type="xtext:Group">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
<elements xsi:type="xtext:Group" cardinality="*">
<elements xsi:type="xtext:Action" feature="left" operator="=">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//ConcatExpression"/>
</type>
</elements>
<elements xsi:type="xtext:Keyword" value="+"/>
<elements xsi:type="xtext:Assignment" feature="right" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
</elements>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="StringExpression">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//StringExpression"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
<elements xsi:type="xtext:RuleCall" rule="/0/@rules.14"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="StringLiteral">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//StringLiteral"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="value" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="PropertyAccess">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/net4j/tools/workingset#//PropertyAccess"/>
</type>
<alternatives xsi:type="xtext:Assignment" feature="property" operator="=">
<terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="OrOperator">
<type metamodel="/0/@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="|"/>
<elements xsi:type="xtext:Keyword" value="||"/>
<elements xsi:type="xtext:Keyword" value="or"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="XorOperator">
<type metamodel="/0/@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="^"/>
<elements xsi:type="xtext:Keyword" value="xor"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="AndOperator">
<type metamodel="/0/@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="&amp;"/>
<elements xsi:type="xtext:Keyword" value="&amp;&amp;"/>
<elements xsi:type="xtext:Keyword" value="and"/>
</alternatives>
</rules>
<rules xsi:type="xtext:ParserRule" name="NotOperator">
<type metamodel="/0/@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="!"/>
<elements xsi:type="xtext:Keyword" value="not"/>
</alternatives>
</rules>
<rules xsi:type="xtext:EnumRule" name="ComparisonOperator">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EEnum" href="http://www.eclipse.org/net4j/tools/workingset#//ComparisonOperator"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//ComparisonOperator/EQ"/>
<literal value="="/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//ComparisonOperator/EQ2"/>
<literal value="=="/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//ComparisonOperator/NE"/>
<literal value="!="/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//ComparisonOperator/NE2"/>
<literal value="&lt;>"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//ComparisonOperator/GT"/>
<literal value=">"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//ComparisonOperator/GE"/>
<literal value=">="/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//ComparisonOperator/LT"/>
<literal value="&lt;"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//ComparisonOperator/LE"/>
<literal value="&lt;="/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:EnumRule" name="StringOperator">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EEnum" href="http://www.eclipse.org/net4j/tools/workingset#//StringOperator"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//StringOperator/EQ"/>
<literal value="="/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//StringOperator/EQ2"/>
<literal value="=="/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//StringOperator/NE"/>
<literal value="!="/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//StringOperator/NE2"/>
<literal value="&lt;>"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//StringOperator/GT"/>
<literal value=">"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//StringOperator/GE"/>
<literal value=">="/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//StringOperator/LT"/>
<literal value="&lt;"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//StringOperator/LE"/>
<literal value="&lt;="/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//StringOperator/LIKE"/>
<literal value="like"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//StringOperator/LIKE2"/>
<literal value="~"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//StringOperator/UNLIKE"/>
<literal value="unlike"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//StringOperator/UNLIKE2"/>
<literal value="!~"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//StringOperator/STARTS"/>
<literal value="starts"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//StringOperator/ENDS"/>
<literal value="ends"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//StringOperator/CONTAINS"/>
<literal value="contains"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:EnumRule" name="Type">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EEnum" href="http://www.eclipse.org/net4j/tools/workingset#//Type"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//Type/FILE"/>
<literal value="file"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//Type/FOLDER"/>
<literal value="folder"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//Type/CONTAINER"/>
<literal value="container"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//Type/PROJECT"/>
<literal value="project"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:EnumRule" name="Kind">
<type metamodel="/0/@metamodelDeclarations.1">
<classifier xsi:type="ecore:EEnum" href="http://www.eclipse.org/net4j/tools/workingset#//Kind"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//Kind/REFERENCE"/>
<literal value="reference"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//Kind/NATURE"/>
<literal value="nature"/>
</elements>
<elements xsi:type="xtext:EnumLiteralDeclaration">
<enumLiteral href="http://www.eclipse.org/net4j/tools/workingset#//Kind/BUILDER"/>
<literal value="builder"/>
</elements>
</alternatives>
</rules>
<rules xsi:type="xtext:TerminalRule" name="BOOLEAN">
<type metamodel="/0/@metamodelDeclarations.0">
<classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</type>
<alternatives xsi:type="xtext:Alternatives">
<elements xsi:type="xtext:Keyword" value="false"/>
<elements xsi:type="xtext:Keyword" value="true"/>
</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="&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="&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>