<?xml version="1.0" encoding="UTF-8"?> <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Logtalk - Open source object-oriented logic programming language % Release 2.30.7 % % 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>