<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://elixir.parserbuilder.com/v1.0.0">
  <rule id="cs_string">
    <cs_literal value="strings"/>
  </rule>
  <rule id="twoStrings">
    <cs_literal value="me"/>
    <cs_literal value="you"/>
  </rule>
  <rule id="caseInsensitive">
    <ci_literal value="me"/>
    <ci_literal value="you"/>
  </rule>
  <rule id="ignore1">
    <ci_literal value="do"/>
    <ignore>
      <ci_literal value="ignore"/>
    </ignore>
    <ci_literal value="this"/>
  </rule>
  <rule id="tagged1">
    <ci_literal value="this"/>
    <ci_literal value="is"/>
    <tag name="tag1">
      <ci_literal value="tagged"/>
    </tag>
  </rule>
  <rule id="replace1">
    <ci_literal value="you"/>
    <ci_literal value="should"/>
    <ci_literal value="replace"/>
    <replace value="that">
      <ci_literal value="this"/>
    </replace>
  </rule>
  <rule id="ruleRef1">
    <ruleRef uri="cs_string"/>
  </rule>
  <rule id="choice1">
    <ci_literal value="me"/>
    <oneOf>
      <item>
        <ci_literal value="and"/>
      </item>
      <item>
        <ci_literal value="or"/>
      </item>
    </oneOf>
    <ci_literal value="you"/>
  </rule>
  <rule id="choice2">
    <ci_literal value="me"/>
    <oneOf>
      <item>
        <ci_literal value="and"/>
        <ci_literal value="you"/>
      </item>
      <item>
        <ci_literal value="and"/>
        <ci_literal value="him"/>
      </item>
    </oneOf>
    <oneOf>
      <item>
        <ci_literal value="or"/>
        <ci_literal value="us"/>
      </item>
      <item>
        <ci_literal value="or"/>
        <ci_literal value="them"/>
      </item>
    </oneOf>
  </rule>
  <rule id="many1">
    <many>
      <ci_literal value="me"/>
    </many>
  </rule>
  <rule id="many2">
    <cs_literal value="us"/>
    <many>
      <oneOf>
        <item>
          <cs_literal value="me"/>
        </item>
        <item>
          <cs_literal value="you"/>
        </item>
      </oneOf>
    </many>
    <cs_literal value="them"/>
    <many>
      <cs_literal value="you"/>
    </many>
  </rule>
  <rule id="manyOne1">
    <manyOne>
      <ci_literal value="me"/>
    </manyOne>
  </rule>
  <rule id="literal1">
    <literal value="dummy"/>
  </rule>
  <rule id="optional1">
    <literal value="me"/>
    <optional>
      <literal value="you"/>
    </optional>
    <literal value="us"/>
  </rule>
  <rule id="optional2">
    <literal value="me"/>
    <optional>
      <literal value="you"/>
    </optional>
  </rule>
  <rule id="atLeast1">
    <atLeast count="2">
      <literal value="me"/>
    </atLeast>
    <literal value="you"/>
  </rule>
  <rule id="exactly1">
    <exactly count="2">
      <literal value="me"/>
    </exactly>
    <literal value="you"/>
  </rule>
  <rule id="atMost1">
    <atMost count="2">
      <literal value="me"/>
    </atMost>
    <literal value="you"/>
  </rule>
  <rule id="repeat1">
    <repeat min="1" max="3">
      <literal value="me"/>
    </repeat>
    <literal value="you"/>
  </rule>
  <rule id="hex1">
    <hexValue value="fc"/>
    <literal value="ber"/>
  </rule>
  <rule id="hexRange1">
    <hexRange start="61" end="7A"/>
    <literal value="dummy"/>
  </rule>
  <rule id="untag1">
    <untagAndFlatten>
      <ruleRef uri="tagged1"/>
    </untagAndFlatten>
  </rule>
  <rule id="backtracking1">
    <untagAndFlatten>
      <cs_literal value="a"/>
      <oneOf>
        <item>
          <cs_literal value="bcd"/>
        </item>
        <item>
          <cs_literal value="bcde"/>
        </item>
        <item>
          <oneOf>
            <item>
              <cs_literal value="fgh"/>
            </item>
            <item>
              <cs_literal value="ijk"/>
            </item>
          </oneOf>
        </item>
      </oneOf>
    </untagAndFlatten>
  </rule>
  <rule id="SP">
    <hexValue value="20"/>
  </rule>
  <rule id="CLOSE" postprocess="ignore">
    <literal value=")"/>
  </rule>
  <rule id="OPEN" postprocess="ignore">
    <literal value="("/>
  </rule>
  <rule id="anyExpr1">
    <tag name="any">
      <ignore>
        <literal value="any"/>
      </ignore>
      <ruleRef uri="OPEN"/>
      <ruleRef uri="WSP"/>
      <optional>
        <literal value="lambda"/>
        <ignore>
          <literal value=":"/>
        </ignore>
        <literal value="body"/>
      </optional>
      <ruleRef uri="WSP"/>
      <ruleRef uri="CLOSE"/>
    </tag>
  </rule>
  <rule id="WSP" postprocess="ignore">
    <many>
      <ruleRef uri="SP"/>
    </many>
  </rule>
  <rule id="tagged2">
    <tag name="tag1">
      <tag name="tag2">
        <literal value="me"/>
      </tag>
      <tag name="tag3">
        <literal value="you"/>
      </tag>
    </tag>
  </rule>
  <rule id="partial1">
    <tag name="bool">
      <replace value="true">
        <literal value="true"/>
      </replace>
    </tag>
  </rule>
  <rule id="optionalAtEnd1">
    <literal value="one"/>
    <optional>
      <literal value="two"/>
    </optional>
    <optional>
      <literal value="three"/>
    </optional>
    <optional>
      <literal value="four"/>
    </optional>
  </rule>
  <rule id="override1">
    <literal value="override"/>
  </rule>
</grammar>
