-<!-- 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.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.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
+
+ -->