latest version
[libfirm] / etc / effect.dtd
index 4dc34e9..9df3aec 100644 (file)
@@ -1,21 +1,39 @@
-<!-- effect.dtd - DTD to model effects of external procedures inside firm. -->
-<!-- $Id$ -->
+<!--
+* Project:     libFIRM
+* File name:   effect.dtd
+* Purpose:     DTD to model effects of external procedures inside firm.
+* Author:      Florian Liekweg
+* Modified by: Boris Boesler
+* Created:     Y.X.2004
+* CVS-ID:      $Id$
+* Copyright:   (c) 1999-2004 Universität Karlsruhe
+* Licence:     This file is protected by GPL -  GNU GENERAL PUBLIC LICENSE.
+-->
+
+<!-- upload this file to http://www/~firm/ after making changes -->
+
 <!-- content model for all nodes -->
 <!-- allow nodes/entity accesses to reference other nodes/an entity -->
-<!ENTITY       % firm.id                       "id ID #REQUIRED">
+<!ENTITY       % firm.id               "id ID #REQUIRED">
 
-<!-- allow a node to specify a type -->
+<!-- allow a node to specify a type --> <!-- rename to firm.typeref -->
 <!ENTITY       % firm.type             "type CDATA #REQUIRED">
 
 <!-- allow a node to specify a field -->
 <!ENTITY       % firm.entity           "entity CDATA #REQUIRED">
 
+<!-- allow a node to specify a typeid --> <!-- wird das jemals gebraucht? -->
+<!ENTITY       % typeid                "typeid CDATA #REQUIRED">
+
+<!-- allow an eneity to specify an owner -->
+<!ENTITY       % firm.owner            "owner CDATA #REQUIRED">
+
 <!-- the root element -->
 <!ELEMENT      effects (type*, entity*, effect*)>
 <!ATTLIST      effects
                        module          CDATA           #IMPLIED>
 
-<!-- an entity reference -->
+<!-- a type reference -->
 <!ELEMENT      type    EMPTY>
 <!ATTLIST      type
                        %firm.id;
 <!ATTLIST      entity
                        %firm.id;
                        %firm.type;
-                       %firm.entity;>
+                       %firm.entity;
+                       %firm.owner;>
 
 <!-- a single effect -->
-<!ELEMENT      effect (arg*, (load|store|alloc|call|join|unknown)*, return)>
+<!ELEMENT      effect (arg*, (load|store|alloc|call|join|unknown)*, raise?, ret)>
 <!ATTLIST      effect
-                       procname        CDATA           #REQUIRED>
+                       procname        CDATA           #REQUIRED <!-- warum keine firm.entity? -->
+                       %firm.owner;>
 
 <!-- procedure argument -->
 <!ELEMENT      arg                     EMPTY>
 <!ATTLIST      arg
                        %firm.id;
-                       number          CDATA           #REQUIRED>
+                       number          CDATA           #REQUIRED
+                   %firm.type;>
 
 <!-- reference another value -->
 <!ELEMENT      valref          EMPTY>
 <!ATTLIST      valref
                        refid           IDREF           #REQUIRED>
 
-<!-- load effect -->
+<!-- select element for use with store, load and call -->
 <!-- for static entities, use a 'select' without a child element -->
 <!ELEMENT      select          (valref?)>
 <!ATTLIST      select          %firm.entity;>
                        %firm.id;>
 
 <!-- store effect -->
-<!ELEMENT      store           (select,valref)>
+<!ELEMENT      store           ((valref|select),valref)>
 
 <!-- alloc effect -->
 <!ELEMENT      alloc           EMPTY>
-<!ATTLIST      alloc           %firm.id;%firm.type;>
+<!ATTLIST      alloc           %firm.id;
+                               %firm.type;>
 
 <!-- call effect -->
-<!ELEMENT      call            (select,(valref)*)>
+<!ELEMENT      call            ((select|valref),(valref)*)>
 <!ATTLIST      call            %firm.id;>
 
 <!-- unknown value -->
 <!ELEMENT      join            (valref,valref+)>
 <!ATTLIST      join            %firm.id;>
 
-<!-- return effect -->
-<!ELEMENT      return          (valref?)>
+<!-- raise an exception -->
+<!ELEMENT      raise           (valref)>
+<!ATTLIST      raise           %firm.type;>
+
+<!-- ret effect -->
+<!ELEMENT      ret             (valref?)>
+
+<!--
+
+ $Log$
+ Revision 1.12  2004/11/24 14:53:10  liekweg
+ Annotated after writing Tech Report
+
+ Revision 1.11  2004/11/02 14:30:56  liekweg
+ Re-allow multi-input join
+
+ Revision 1.10  2004/10/29 18:52:32  liekweg
+ Allow only two values for join
+
+ Revision 1.9  2004/10/29 18:38:36  liekweg
+ ** Allow store ::= ((valref|select),valref)
+
+ Revision 1.8  2004/10/25 13:51:32  boesler
+ minor changes like owner
+
+ Revision 1.7  2004/10/21 15:32:21  boesler
+ minor changes
+
+ Revision 1.6  2004/10/11 09:55:19  liekweg
+ Renamed 'return' to 'ret' -flo
+
+ Revision 1.5  2004/10/05 16:19:04  liekweg
+ Grrr, CVS still messes up XML comments
+
+ Revision 1.4  2004/10/05 16:18:06  liekweg
+ Grrr, CVS messes up XML comments
+
+ Revision 1.3  2004/10/05 16:17:22  liekweg
+ Added 'raise' -flo
+
+ Revision 1.2  2004/10/05 15:46:59  liekweg
+ Added comment about this DTD's public location -flo
+
+ Revision 1.1  2004/10/05 14:34:13  liekweg
+ Added DTD for external effects description -flo
 
-<!-- $Log$
-<!-- Revision 1.1  2004/10/05 14:34:13  liekweg
-<!-- Added DTD for external effects description --flo
-<!-- -->
+ -->