root/tags/lgt2305/xml/logtalk.rng

Revision 3824, 8.0 KB (checked in by pmoura, 17 months ago)

Updated Logtalk release number to 2.30.5.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2
3<!--
4%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5%
6%   Logtalk - Open source object-oriented logic programming language
7%   Release 2.30.5
8%
9%   Copyright (c) 1998-2007 Paulo Moura.    All Rights Reserved.
10%
11%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12-->
13
14<grammar xmlns="http://relaxng.org/ns/structure/1.0">
15
16    <define name="logtalk">
17        <element name="logtalk">
18            <ref name="entity"/>
19            <ref name="relations"/>
20            <ref name="predicates"/>
21            <ref name="remarks"/>
22        </element>
23    </define>
24
25    <define name="entity">
26        <element name="entity">
27            <ref name="name"/>
28            <ref name="type"/>
29            <ref name="compilation"/>
30            <optional>
31                <ref name="comment"/>
32            </optional>
33            <optional>
34                <choice>
35                    <ref name="parnames"/>
36                    <ref name="parameters"/>
37                </choice>
38            </optional>
39            <optional>
40                <ref name="author"/>
41            </optional>
42            <optional>
43                <ref name="version"/>
44            </optional>
45            <optional>
46                <ref name="date"/>
47            </optional>
48            <optional>
49                <ref name="copyright"/>
50            </optional>
51            <optional>
52                <ref name="license"/>
53            </optional>
54            <zeroOrMore>
55                <ref name="info"/>
56            </zeroOrMore>
57        </element>
58    </define>
59
60    <define name="name">
61        <element name="name">
62            <text/>
63        </element>
64    </define>
65
66    <define name="type">
67        <element name="type">
68            <choice>
69                <value>category</value>
70                <value>object</value>
71                <value>protocol</value>
72            </choice>
73        </element>
74    </define>
75
76    <define name="compilation">
77        <element name="compilation">
78            <choice>
79                <value>static</value>
80                <value>dynamic</value>
81            </choice>
82        </element>
83    </define>
84
85    <define name="comment">
86        <element name="comment">
87            <text/>
88        </element>
89    </define>
90
91    <define name="parnames">
92        <element name="parnames">
93            <text/>
94        </element>
95    </define>
96
97    <define name="parameters">
98        <element name="parameters">
99            <zeroOrMore>
100                <ref name="parameter"/>
101            </zeroOrMore>
102        </element>
103    </define>
104
105    <define name="parameter">
106        <element name="parameter">
107            <ref name="name"/>
108            <ref name="description"/>
109        </element>
110    </define>
111
112    <define name="description">
113        <element name="description">
114            <text/>
115        </element>
116    </define>
117
118    <define name="author">
119        <element name="author">
120            <text/>
121        </element>
122    </define>
123
124    <define name="version">
125        <element name="version">
126            <text/>
127        </element>
128    </define>
129
130    <define name="date">
131        <element name="date">
132            <text/>
133        </element>
134    </define>
135
136    <define name="copyright">
137        <element name="copyright">
138            <text/>
139        </element>
140    </define>
141
142    <define name="license">
143        <element name="license">
144            <text/>
145        </element>
146    </define>
147
148    <define name="info">
149        <element name="info">
150            <ref name="key"/>
151            <ref name="value"/>
152        </element>
153    </define>
154
155    <define name="key">
156        <element name="key">
157            <text/>
158        </element>
159    </define>
160
161    <define name="value">
162        <element name="value">
163            <text/>
164        </element>
165    </define>
166
167    <define name="relations">
168        <element name="relations">
169            <zeroOrMore>
170                <ref name="implements"/>
171            </zeroOrMore>
172            <zeroOrMore>
173                <ref name="imports"/>
174            </zeroOrMore>
175            <zeroOrMore>
176                <ref name="extends"/>
177            </zeroOrMore>
178            <zeroOrMore>
179                <ref name="instantiates"/>
180            </zeroOrMore>
181            <zeroOrMore>
182                <ref name="specializes"/>
183            </zeroOrMore>
184            <zeroOrMore>
185                <ref name="uses"/>
186            </zeroOrMore>
187            <zeroOrMore>
188                <ref name="calls"/>
189            </zeroOrMore>
190        </element>
191    </define>
192
193    <define name="implements">
194        <element name="implements">
195            <ref name="name"/>
196            <ref name="scope"/>
197            <ref name="file"/>
198        </element>
199    </define>
200
201    <define name="imports">
202        <element name="imports">
203            <ref name="name"/>
204            <ref name="scope"/>
205            <ref name="file"/>
206        </element>
207    </define>
208
209    <define name="extends">
210        <element name="extends">
211            <ref name="name"/>
212            <ref name="scope"/>
213            <ref name="file"/>
214        </element>
215    </define>
216
217    <define name="instantiates">
218        <element name="instantiates">
219            <ref name="name"/>
220            <ref name="scope"/>
221            <ref name="file"/>
222        </element>
223    </define>
224
225    <define name="specializes">
226        <element name="specializes">
227            <ref name="name"/>
228            <ref name="scope"/>
229            <ref name="file"/>
230        </element>
231    </define>
232
233    <define name="uses">
234        <element name="uses">
235            <ref name="name"/>
236            <ref name="file"/>
237        </element>
238    </define>
239
240    <define name="calls">
241        <element name="calls">
242            <ref name="name"/>
243            <ref name="file"/>
244        </element>
245    </define>
246
247    <define name="scope">
248        <element name="scope">
249            <choice>
250                <value>public</value>
251                <value>protected</value>
252                <value>private</value>
253            </choice>
254        </element>
255    </define>
256
257    <define name="file">
258        <element name="file">
259            <text/>
260        </element>
261    </define>
262
263    <define name="predicates">
264        <element name="predicates">
265            <ref name="public"/>
266            <ref name="protected"/>
267            <ref name="private"/>
268        </element>
269    </define>
270
271    <define name="public">
272        <element name="public">
273            <zeroOrMore>
274                <ref name="predicate"/>
275            </zeroOrMore>
276        </element>
277    </define>
278
279    <define name="protected">
280        <element name="protected">
281            <zeroOrMore>
282                <ref name="predicate"/>
283            </zeroOrMore>
284        </element>
285    </define>
286
287
288    <define name="private">
289        <element name="private">
290            <zeroOrMore>
291                <ref name="predicate"/>
292            </zeroOrMore>
293        </element>
294    </define>
295
296    <define name="predicate">
297        <element name="predicate">
298            <ref name="name"/>
299            <ref name="scope"/>
300            <ref name="compilation"/>
301            <optional>
302                <ref name="meta"/>
303            </optional>
304            <zeroOrMore>
305                <ref name="mode"/>
306            </zeroOrMore>
307            <optional>
308                <ref name="comment"/>
309            </optional>
310            <optional>
311                <ref name="template"/>
312            </optional>
313            <optional>
314                <choice>
315                    <ref name="argnames"/>
316                    <ref name="arguments"/>
317                </choice>
318            </optional>
319            <optional>
320                <ref name="exceptions"/>
321            </optional>
322            <zeroOrMore>
323                <ref name="info"/>
324            </zeroOrMore>
325            <optional>
326                <ref name="examples"/>
327            </optional>
328        </element>
329    </define>
330
331    <define name="meta">
332        <element name="meta">
333            <text/>
334        </element>
335    </define>
336
337    <define name="mode">
338        <element name="mode">
339            <ref name="template"/>
340            <ref name="solutions"/>
341        </element>
342    </define>
343
344    <define name="template">
345        <element name="template">
346            <text/>
347        </element>
348    </define>
349
350    <define name="solutions">
351        <element name="solutions">
352            <choice>
353                <value>zero</value>
354                <value>zero_or_one</value>
355                <value>zero_or_more</value>
356                <value>one</value>
357                <value>one_or_more</value>
358                <value>error</value>
359            </choice>
360        </element>
361    </define>
362
363    <define name="argnames">
364        <element name="argnames">
365            <text/>
366        </element>
367    </define>
368
369    <define name="arguments">
370        <element name="arguments">
371            <zeroOrMore>
372                <ref name="argument"/>
373            </zeroOrMore>
374        </element>
375    </define>
376
377    <define name="argument">
378        <element name="argument">
379            <ref name="name"/>
380            <ref name="description"/>
381        </element>
382    </define>
383
384    <define name="exceptions">
385        <element name="exceptions">
386            <zeroOrMore>
387                <ref name="exception"/>
388            </zeroOrMore>
389        </element>
390    </define>
391
392    <define name="exception">
393        <element name="exception">
394            <ref name="condition"/>
395            <ref name="term"/>
396        </element>
397    </define>
398
399    <define name="condition">
400        <element name="condition">
401            <text/>
402        </element>
403    </define>
404
405    <define name="term">
406        <element name="term">
407            <text/>
408        </element>
409    </define>
410
411    <define name="examples">
412        <element name="examples">
413            <zeroOrMore>
414                <ref name="example"/>
415            </zeroOrMore>
416        </element>
417    </define>
418
419    <define name="example">
420        <element name="example">
421            <ref name="description"/>
422            <ref name="call"/>
423            <ref name="bindings"/>
424        </element>
425    </define>
426
427    <define name="call">
428        <element name="call">
429            <text/>
430        </element>
431    </define>
432
433    <define name="bindings">
434        <element name="bindings">
435            <text/>
436        </element>
437    </define>
438
439    <define name="remarks">
440        <element name="remarks">
441            <zeroOrMore>
442                <ref name="remark"/>
443            </zeroOrMore>
444        </element>
445    </define>
446
447    <define name="remark">
448        <element name="remark">
449            <ref name="topic"/>
450            <ref name="text"/>
451        </element>
452    </define>
453
454    <define name="topic">
455        <element name="topic">
456            <text/>
457        </element>
458    </define>
459
460    <define name="text">
461        <element name="text">
462            <text/>
463        </element>
464    </define>
465
466    <start>
467        <choice>
468            <ref name="logtalk"/>
469        </choice>
470    </start>
471
472</grammar>
Note: See TracBrowser for help on using the browser.