<?xml encoding="US-ASCII"?>

<!-- Version 1.0 SGL for autohit  -->

<!-- COMMON elements and entities  ########################## -->

<!ELEMENT note (#PCDATA)>

<!-- INFO.  This section describes the SIM ################## -->

<!ELEMENT version (#PCDATA)>
<!ATTLIST version
   num CDATA #IMPLIED>

<!ELEMENT name (#PCDATA)>
<!ATTLIST name
   uid CDATA #REQUIRED>

<!ENTITY % OptionalInfo "(version|note)">

<!ELEMENT info (name, (%OptionalInfo;)*)>


<!-- CODE.  This section contains the code for the SGL  #### -->


<!ENTITY % Instruction "sim | wait | set | add | env">
<!ENTITY % Control "for | block | while | if">  
<!ENTITY % CodeConstruct "(%Instruction; | %Control;)*">

<!ELEMENT set EMPTY>
<!ATTLIST set
  name CDATA #REQUIRED
  value CDATA #REQUIRED
  >
  
<!ELEMENT wait EMPTY>
<!ATTLIST wait
  time CDATA #REQUIRED>

<!ELEMENT env EMPTY>
<!ATTLIST env
  name  CDATA #REQUIRED
  value CDATA #REQUIRED>
  
<!ELEMENT add EMPTY>
<!ATTLIST add
  name  CDATA #REQUIRED
  value CDATA #REQUIRED>    

<!ENTITY % SimSpecification "(if | env)*">

<!ELEMENT sim ((%SimSpecification;)*)>
<!ATTLIST sim
  name      CDATA   #REQUIRED
  chute     CDATA   #IMPLIED
  >

<!ELEMENT for (%CodeConstruct;)>
<!ATTLIST for
  count     CDATA   #REQUIRED
  init      CDATA   #IMPLIED
  >

<!ELEMENT while (%CodeConstruct;)>
<!ATTLIST while
  e      CDATA   #REQUIRED
  value  CDATA   #REQUIRED
  >
  
<!ELEMENT if (%CodeConstruct;)>
<!ATTLIST if
  e      CDATA   #REQUIRED
  value  CDATA   #REQUIRED
  >  

<!ELEMENT block (%CodeConstruct;)>  

<!ELEMENT code ((%CodeConstruct;)*)>


<!-- A Sim.  consists of a Info section and Code section -->
<!ELEMENT sgl (info, code)>


