Cleanup.
[libfirm] / etc / effect.dtd
1 <!--
2 * Project:     libFIRM
3 * File name:   effect.dtd
4 * Purpose:     DTD to model effects of external procedures inside firm.
5 * Author:      Florian Liekweg
6 * Modified by: Boris Boesler
7 * Created:     Y.X.2004
8 * CVS-ID:      $Id$
9 * Copyright:   (c) 1999-2004 Universität Karlsruhe
10 * Licence:     This file is protected by GPL -  GNU GENERAL PUBLIC LICENSE.
11 -->
12
13 <!-- upload this file to http://www/~firm/ after making changes -->
14
15 <!-- content model for all nodes -->
16 <!-- allow nodes/entity accesses to reference other nodes/an entity -->
17 <!ENTITY        % firm.id               "id ID #REQUIRED">
18
19 <!-- allow a node to specify a type --> <!-- rename to firm.typeref -->
20 <!ENTITY        % firm.type             "type CDATA #REQUIRED">
21
22 <!-- allow a node to specify a field -->
23 <!ENTITY        % firm.entity           "entity CDATA #REQUIRED">
24
25 <!-- allow a node to specify a typeid --> <!-- wird das jemals gebraucht? -->
26 <!ENTITY        % typeid                "typeid CDATA #REQUIRED">
27
28 <!-- allow an eneity to specify an owner -->
29 <!ENTITY        % firm.owner            "owner CDATA #REQUIRED">
30
31 <!-- the root element -->
32 <!ELEMENT       effects (type*, entity*, effect*)>
33 <!ATTLIST       effects
34                         module          CDATA           #IMPLIED>
35
36 <!-- a type reference -->
37 <!ELEMENT       type    EMPTY>
38 <!ATTLIST       type
39                         %firm.id;
40                         %firm.type;>
41
42 <!-- an entity reference -->
43 <!ELEMENT       entity  EMPTY>
44 <!ATTLIST       entity
45                         %firm.id;
46                         %firm.type;
47                         %firm.entity;
48                         %firm.owner;>
49
50 <!-- a single effect -->
51 <!ELEMENT       effect (arg*, (load|store|alloc|call|join|unknown)*, raise?, ret)>
52 <!ATTLIST       effect
53                         procname        CDATA           #REQUIRED <!-- warum keine firm.entity? -->
54                         %firm.owner;>
55
56 <!-- procedure argument -->
57 <!ELEMENT       arg                     EMPTY>
58 <!ATTLIST       arg
59                         %firm.id;
60                         number          CDATA           #REQUIRED
61                     %firm.type;>
62
63 <!-- reference another value -->
64 <!ELEMENT       valref          EMPTY>
65 <!ATTLIST       valref
66                         refid           IDREF           #REQUIRED>
67
68 <!-- select element for use with store, load and call -->
69 <!-- for static entities, use a 'select' without a child element -->
70 <!ELEMENT       select          (valref?)>
71 <!ATTLIST       select          %firm.entity;>
72
73 <!-- load effect -->
74 <!ELEMENT       load            (select)>
75 <!ATTLIST       load
76                         %firm.id;>
77
78 <!-- store effect -->
79 <!ELEMENT       store           ((valref|select),valref)>
80
81 <!-- alloc effect -->
82 <!ELEMENT       alloc           EMPTY>
83 <!ATTLIST       alloc           %firm.id;
84                                 %firm.type;>
85
86 <!-- call effect -->
87 <!ELEMENT       call            ((select|valref),(valref)*)>
88 <!ATTLIST       call            %firm.id;>
89
90 <!-- unknown value -->
91 <!ELEMENT       unknown         EMPTY>
92 <!ATTLIST       unknown         %firm.id;>
93
94 <!-- join two or more values -->
95 <!ELEMENT       join            (valref,valref+)>
96 <!ATTLIST       join            %firm.id;>
97
98 <!-- raise an exception -->
99 <!ELEMENT       raise           (valref)>
100 <!ATTLIST       raise           %firm.type;>
101
102 <!-- ret effect -->
103 <!ELEMENT       ret             (valref?)>
104
105 <!--
106
107  $Log$
108  Revision 1.12  2004/11/24 14:53:10  liekweg
109  Annotated after writing Tech Report
110
111  Revision 1.11  2004/11/02 14:30:56  liekweg
112  Re-allow multi-input join
113
114  Revision 1.10  2004/10/29 18:52:32  liekweg
115  Allow only two values for join
116
117  Revision 1.9  2004/10/29 18:38:36  liekweg
118  ** Allow store ::= ((valref|select),valref)
119
120  Revision 1.8  2004/10/25 13:51:32  boesler
121  minor changes like owner
122
123  Revision 1.7  2004/10/21 15:32:21  boesler
124  minor changes
125
126  Revision 1.6  2004/10/11 09:55:19  liekweg
127  Renamed 'return' to 'ret' -flo
128
129  Revision 1.5  2004/10/05 16:19:04  liekweg
130  Grrr, CVS still messes up XML comments
131
132  Revision 1.4  2004/10/05 16:18:06  liekweg
133  Grrr, CVS messes up XML comments
134
135  Revision 1.3  2004/10/05 16:17:22  liekweg
136  Added 'raise' -flo
137
138  Revision 1.2  2004/10/05 15:46:59  liekweg
139  Added comment about this DTD's public location -flo
140
141  Revision 1.1  2004/10/05 14:34:13  liekweg
142  Added DTD for external effects description -flo
143
144  -->