root/trunk/xml/logtalk.rng

Revision 4662, 8.3 KB (checked in by pmoura, 6 days ago)

Updated copyright notice.

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