<?xml version="1.0"?>


<!-- Regular Expressions are widely used for pattern matching issues. A
regular expression on a finite alphabet S. Several definitions
(semantically but not syntactically equivalent) exist. Here we
consider that a regular expression is defined by elements of S,
product, star and union (other approaches are described in Regi.xml
files). We use the following grammar (the U is commutative and
idempotent).

S -> a | b | c | d 
E= S | E.E | E U E | E* | epslison
-->



<!DOCTYPE specification SYSTEM "seed.dtd">


<specification>
  <start idref="All"/> 

  <union id="All"> <!-- defintion of a regular expression-->
    <child idref="S"/> <!-- either a letter-->
    <child idref="Prod"/> <!-- or the product of two expressions-->
    <child idref="Union"/><!-- or the union of two expressions-->
    <child idref="Star"/><!-- or the star of an expression-->
  </union> 

  <constants id="S"> <!-- defintion of the alphabet-->
    <symbol value="a"/>
    <symbol value="b"/>
    <symbol value="c"/>
    <symbol value="d"/>
    <symbol value="epsilon"/> <!-- empty word-->
  </constants>


  <unary id="Star"> <!-- stars of an expression -->
    <symbol value="*"/>
    <child idref="All"/>
  </unary>

  <binary id="Prod"> <!-- product of expressions -->
    <symbol value="."/>
    <child idref="All"/>
    <child idref="All"/>
  </binary>
  
  <binary_sym_neq id="Union"> <!-- union of expressions -->
    <symbol value="+"/>
    <child idref="All"/>
  </binary_sym_neq>


</specification>

