-<!-- 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 -->
+<!-- allow a node to specify a typeid --> <!-- wird das jemals gebraucht? -->
<!ENTITY % typeid "typeid CDATA #REQUIRED">
-<!-- allow a node to specify an owner -->
+<!-- allow an eneity to specify an owner -->
<!ENTITY % firm.owner "owner CDATA #REQUIRED">
<!-- the root element -->
<!ATTLIST effects
module CDATA #IMPLIED>
-<!-- an entity reference -->
+<!-- a type reference -->
<!ELEMENT type EMPTY>
<!ATTLIST type
%firm.id;
<!-- a single effect -->
<!ELEMENT effect (arg*, (load|store|alloc|call|join|unknown)*, raise?, ret)>
<!ATTLIST effect
- procname CDATA #REQUIRED;
- %firm.type;>
+ procname CDATA #REQUIRED <!-- warum keine firm.entity? -->
+ %firm.owner;>
<!-- procedure argument -->
<!ELEMENT arg EMPTY>
<!ATTLIST arg
%firm.id;
- number CDATA #REQUIRED;
- %firm.type>
+ 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>
%firm.type;>
<!-- call effect -->
-<!ELEMENT call (select,(valref)*)>
+<!ELEMENT call ((select|valref),(valref)*)>
<!ATTLIST call %firm.id;>
<!-- unknown value -->
<!ATTLIST raise %firm.type;>
<!-- ret effect -->
-<!ELEMENT ret (valref?)>
+<!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