This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/Logtalk/xml/logtalk.rng
pmoura 4569fca292 Logtalk 2.29.5 files.
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1858 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
2007-03-28 22:44:31 +00:00

473 lines
8.0 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!--
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Logtalk - Object oriented extension to Prolog
% Release 2.29.5
%
% Copyright (c) 1998-2007 Paulo Moura. All Rights Reserved.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-->
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
<define name="logtalk">
<element name="logtalk">
<ref name="entity"/>
<ref name="relations"/>
<ref name="predicates"/>
<ref name="remarks"/>
</element>
</define>
<define name="entity">
<element name="entity">
<ref name="name"/>
<ref name="type"/>
<ref name="compilation"/>
<optional>
<ref name="comment"/>
</optional>
<optional>
<choice>
<ref name="parnames"/>
<ref name="parameters"/>
</choice>
</optional>
<optional>
<ref name="author"/>
</optional>
<optional>
<ref name="version"/>
</optional>
<optional>
<ref name="date"/>
</optional>
<optional>
<ref name="copyright"/>
</optional>
<optional>
<ref name="license"/>
</optional>
<zeroOrMore>
<ref name="info"/>
</zeroOrMore>
</element>
</define>
<define name="name">
<element name="name">
<text/>
</element>
</define>
<define name="type">
<element name="type">
<choice>
<value>category</value>
<value>object</value>
<value>protocol</value>
</choice>
</element>
</define>
<define name="compilation">
<element name="compilation">
<choice>
<value>static</value>
<value>dynamic</value>
</choice>
</element>
</define>
<define name="comment">
<element name="comment">
<text/>
</element>
</define>
<define name="parnames">
<element name="parnames">
<text/>
</element>
</define>
<define name="parameters">
<element name="parameters">
<zeroOrMore>
<ref name="parameter"/>
</zeroOrMore>
</element>
</define>
<define name="parameter">
<element name="parameter">
<ref name="name"/>
<ref name="description"/>
</element>
</define>
<define name="description">
<element name="description">
<text/>
</element>
</define>
<define name="author">
<element name="author">
<text/>
</element>
</define>
<define name="version">
<element name="version">
<text/>
</element>
</define>
<define name="date">
<element name="date">
<text/>
</element>
</define>
<define name="copyright">
<element name="copyright">
<text/>
</element>
</define>
<define name="license">
<element name="license">
<text/>
</element>
</define>
<define name="info">
<element name="info">
<ref name="key"/>
<ref name="value"/>
</element>
</define>
<define name="key">
<element name="key">
<text/>
</element>
</define>
<define name="value">
<element name="value">
<text/>
</element>
</define>
<define name="relations">
<element name="relations">
<zeroOrMore>
<ref name="implements"/>
</zeroOrMore>
<zeroOrMore>
<ref name="imports"/>
</zeroOrMore>
<zeroOrMore>
<ref name="extends"/>
</zeroOrMore>
<zeroOrMore>
<ref name="instantiates"/>
</zeroOrMore>
<zeroOrMore>
<ref name="specializes"/>
</zeroOrMore>
<zeroOrMore>
<ref name="uses"/>
</zeroOrMore>
<zeroOrMore>
<ref name="calls"/>
</zeroOrMore>
</element>
</define>
<define name="implements">
<element name="implements">
<ref name="name"/>
<ref name="scope"/>
<ref name="file"/>
</element>
</define>
<define name="imports">
<element name="imports">
<ref name="name"/>
<ref name="scope"/>
<ref name="file"/>
</element>
</define>
<define name="extends">
<element name="extends">
<ref name="name"/>
<ref name="scope"/>
<ref name="file"/>
</element>
</define>
<define name="instantiates">
<element name="instantiates">
<ref name="name"/>
<ref name="scope"/>
<ref name="file"/>
</element>
</define>
<define name="specializes">
<element name="specializes">
<ref name="name"/>
<ref name="scope"/>
<ref name="file"/>
</element>
</define>
<define name="uses">
<element name="uses">
<ref name="name"/>
<ref name="file"/>
</element>
</define>
<define name="calls">
<element name="calls">
<ref name="name"/>
<ref name="file"/>
</element>
</define>
<define name="scope">
<element name="scope">
<choice>
<value>public</value>
<value>protected</value>
<value>private</value>
</choice>
</element>
</define>
<define name="file">
<element name="file">
<text/>
</element>
</define>
<define name="predicates">
<element name="predicates">
<ref name="public"/>
<ref name="protected"/>
<ref name="private"/>
</element>
</define>
<define name="public">
<element name="public">
<zeroOrMore>
<ref name="predicate"/>
</zeroOrMore>
</element>
</define>
<define name="protected">
<element name="protected">
<zeroOrMore>
<ref name="predicate"/>
</zeroOrMore>
</element>
</define>
<define name="private">
<element name="private">
<zeroOrMore>
<ref name="predicate"/>
</zeroOrMore>
</element>
</define>
<define name="predicate">
<element name="predicate">
<ref name="name"/>
<ref name="scope"/>
<ref name="compilation"/>
<optional>
<ref name="meta"/>
</optional>
<zeroOrMore>
<ref name="mode"/>
</zeroOrMore>
<optional>
<ref name="comment"/>
</optional>
<optional>
<ref name="template"/>
</optional>
<optional>
<choice>
<ref name="argnames"/>
<ref name="arguments"/>
</choice>
</optional>
<optional>
<ref name="exceptions"/>
</optional>
<zeroOrMore>
<ref name="info"/>
</zeroOrMore>
<optional>
<ref name="examples"/>
</optional>
</element>
</define>
<define name="meta">
<element name="meta">
<text/>
</element>
</define>
<define name="mode">
<element name="mode">
<ref name="template"/>
<ref name="solutions"/>
</element>
</define>
<define name="template">
<element name="template">
<text/>
</element>
</define>
<define name="solutions">
<element name="solutions">
<choice>
<value>zero</value>
<value>zero_or_one</value>
<value>zero_or_more</value>
<value>one</value>
<value>one_or_more</value>
<value>error</value>
</choice>
</element>
</define>
<define name="argnames">
<element name="argnames">
<text/>
</element>
</define>
<define name="arguments">
<element name="arguments">
<zeroOrMore>
<ref name="argument"/>
</zeroOrMore>
</element>
</define>
<define name="argument">
<element name="argument">
<ref name="name"/>
<ref name="description"/>
</element>
</define>
<define name="exceptions">
<element name="exceptions">
<zeroOrMore>
<ref name="exception"/>
</zeroOrMore>
</element>
</define>
<define name="exception">
<element name="exception">
<ref name="condition"/>
<ref name="term"/>
</element>
</define>
<define name="condition">
<element name="condition">
<text/>
</element>
</define>
<define name="term">
<element name="term">
<text/>
</element>
</define>
<define name="examples">
<element name="examples">
<zeroOrMore>
<ref name="example"/>
</zeroOrMore>
</element>
</define>
<define name="example">
<element name="example">
<ref name="description"/>
<ref name="call"/>
<ref name="bindings"/>
</element>
</define>
<define name="call">
<element name="call">
<text/>
</element>
</define>
<define name="bindings">
<element name="bindings">
<text/>
</element>
</define>
<define name="remarks">
<element name="remarks">
<zeroOrMore>
<ref name="remark"/>
</zeroOrMore>
</element>
</define>
<define name="remark">
<element name="remark">
<ref name="topic"/>
<ref name="text"/>
</element>
</define>
<define name="topic">
<element name="topic">
<text/>
</element>
</define>
<define name="text">
<element name="text">
<text/>
</element>
</define>
<start>
<choice>
<ref name="logtalk"/>
</choice>
</start>
</grammar>