<?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.yakindu.sct.generator.genmodel.SGen" 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="gen">
      <ePackage href="http://www.yakindu.org/sct/statechart/SGen#/"/>
    </metamodelDeclarations>
    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="sct">
      <ePackage href="http://www.yakindu.org/sct/sgraph/2.0.0#/"/>
    </metamodelDeclarations>
    <rules xsi:type="xtext:ParserRule" name="GeneratorModel">
      <type metamodel="/0/@metamodelDeclarations.1">
        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//GeneratorModel"/>
      </type>
      <alternatives xsi:type="xtext:Group">
        <elements xsi:type="xtext:Keyword" value="GeneratorModel"/>
        <elements xsi:type="xtext:Keyword" value="for"/>
        <elements xsi:type="xtext:Assignment" feature="generatorId" operator="=">
          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
        </elements>
        <elements xsi:type="xtext:Keyword" value="{"/>
        <elements xsi:type="xtext:Assignment" cardinality="*" feature="entries" operator="+=">
          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
        </elements>
        <elements xsi:type="xtext:Keyword" value="}"/>
      </alternatives>
    </rules>
    <rules xsi:type="xtext:ParserRule" name="GeneratorEntry">
      <type metamodel="/0/@metamodelDeclarations.1">
        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//GeneratorEntry"/>
      </type>
      <alternatives xsi:type="xtext:Group">
        <elements xsi:type="xtext:Assignment" feature="contentType" operator="=">
          <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
        </elements>
        <elements xsi:type="xtext:Assignment" feature="elementRef" operator="=">
          <terminal xsi:type="xtext:CrossReference">
            <type metamodel="/0/@metamodelDeclarations.0">
              <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
            </type>
            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
          </terminal>
        </elements>
        <elements xsi:type="xtext:Keyword" value="{"/>
        <elements xsi:type="xtext:Assignment" cardinality="*" feature="features" operator="+=">
          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
        </elements>
        <elements xsi:type="xtext:Keyword" value="}"/>
      </alternatives>
    </rules>
    <rules xsi:type="xtext:ParserRule" name="FeatureConfiguration">
      <type metamodel="/0/@metamodelDeclarations.1">
        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//FeatureConfiguration"/>
      </type>
      <alternatives xsi:type="xtext:Group">
        <elements xsi:type="xtext:Action">
          <type metamodel="/0/@metamodelDeclarations.1">
            <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//FeatureConfiguration"/>
          </type>
        </elements>
        <elements xsi:type="xtext:Keyword" value="feature"/>
        <elements xsi:type="xtext:Assignment" feature="type" operator="=">
          <terminal xsi:type="xtext:CrossReference">
            <type metamodel="/0/@metamodelDeclarations.1">
              <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//FeatureType"/>
            </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="parameterValues" operator="+=">
          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.3"/>
        </elements>
        <elements xsi:type="xtext:Keyword" value="}"/>
      </alternatives>
    </rules>
    <rules xsi:type="xtext:ParserRule" name="FeatureParameterValue">
      <type metamodel="/0/@metamodelDeclarations.1">
        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//FeatureParameterValue"/>
      </type>
      <alternatives xsi:type="xtext:Group">
        <elements xsi:type="xtext:Action">
          <type metamodel="/0/@metamodelDeclarations.1">
            <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//FeatureParameterValue"/>
          </type>
        </elements>
        <elements xsi:type="xtext:Assignment" feature="parameter" operator="=">
          <terminal xsi:type="xtext:CrossReference">
            <type metamodel="/0/@metamodelDeclarations.1">
              <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//FeatureParameter"/>
            </type>
            <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
          </terminal>
        </elements>
        <elements xsi:type="xtext:Keyword" value="="/>
        <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
        </elements>
      </alternatives>
    </rules>
    <rules xsi:type="xtext:ParserRule" name="Literal">
      <type metamodel="/0/@metamodelDeclarations.1">
        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//Literal"/>
      </type>
      <alternatives xsi:type="xtext:Alternatives">
        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
        <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"/>
      </alternatives>
    </rules>
    <rules xsi:type="xtext:ParserRule" name="BoolLiteral">
      <type metamodel="/0/@metamodelDeclarations.1">
        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//BoolLiteral"/>
      </type>
      <alternatives xsi:type="xtext:Group">
        <elements xsi:type="xtext:Action">
          <type metamodel="/0/@metamodelDeclarations.1">
            <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//BoolLiteral"/>
          </type>
        </elements>
        <elements xsi:type="xtext:Assignment" feature="value" operator="=">
          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
        </elements>
      </alternatives>
    </rules>
    <rules xsi:type="xtext:ParserRule" name="IntLiteral">
      <type metamodel="/0/@metamodelDeclarations.1">
        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//IntLiteral"/>
      </type>
      <alternatives xsi:type="xtext:Group">
        <elements xsi:type="xtext:Action">
          <type metamodel="/0/@metamodelDeclarations.1">
            <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//IntLiteral"/>
          </type>
        </elements>
        <elements xsi:type="xtext:Assignment" feature="value" operator="=">
          <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
        </elements>
      </alternatives>
    </rules>
    <rules xsi:type="xtext:ParserRule" name="RealLiteral">
      <type metamodel="/0/@metamodelDeclarations.1">
        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//RealLiteral"/>
      </type>
      <alternatives xsi:type="xtext:Group">
        <elements xsi:type="xtext:Action">
          <type metamodel="/0/@metamodelDeclarations.1">
            <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//RealLiteral"/>
          </type>
        </elements>
        <elements xsi:type="xtext:Assignment" feature="value" operator="=">
          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
        </elements>
      </alternatives>
    </rules>
    <rules xsi:type="xtext:ParserRule" name="StringLiteral">
      <type metamodel="/0/@metamodelDeclarations.1">
        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//StringLiteral"/>
      </type>
      <alternatives xsi:type="xtext:Group">
        <elements xsi:type="xtext:Action">
          <type metamodel="/0/@metamodelDeclarations.1">
            <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SGen#//StringLiteral"/>
          </type>
        </elements>
        <elements xsi:type="xtext:Assignment" feature="value" operator="=">
          <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
        </elements>
      </alternatives>
    </rules>
    <rules xsi:type="xtext:TerminalRule" name="BOOL">
      <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="true"/>
        <elements xsi:type="xtext:Keyword" value="false"/>
        <elements xsi:type="xtext:Keyword" value="yes"/>
        <elements xsi:type="xtext:Keyword" value="no"/>
      </alternatives>
    </rules>
    <rules xsi:type="xtext:TerminalRule" name="FLOAT">
      <type metamodel="/0/@metamodelDeclarations.0">
        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
      </type>
      <alternatives xsi:type="xtext:Group">
        <elements xsi:type="xtext:Group">
          <elements xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
          <elements xsi:type="xtext:Keyword" value="."/>
          <elements xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
        </elements>
        <elements xsi:type="xtext:Group" cardinality="?">
          <elements xsi:type="xtext:Keyword" value="e"/>
          <elements xsi:type="xtext:Alternatives">
            <elements xsi:type="xtext:Keyword" value="-"/>
            <elements xsi:type="xtext:Keyword" value="+"/>
          </elements>
          <elements xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
        </elements>
        <elements xsi:type="xtext:Alternatives" cardinality="?">
          <elements xsi:type="xtext:Keyword" value="f"/>
          <elements xsi:type="xtext:Keyword" value="F"/>
          <elements xsi:type="xtext:Keyword" value="d"/>
          <elements xsi:type="xtext:Keyword" value="D"/>
        </elements>
      </alternatives>
    </rules>
    <rules xsi:type="xtext:ParserRule" name="QID">
      <type metamodel="/0/@metamodelDeclarations.0">
        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      </type>
      <alternatives xsi:type="xtext:Group">
        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
        <elements xsi:type="xtext:Group" cardinality="*">
          <elements xsi:type="xtext:Alternatives">
            <elements xsi:type="xtext:Keyword" value="::"/>
            <elements xsi:type="xtext:Keyword" value="."/>
          </elements>
          <elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
        </elements>
      </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>
