home *** CD-ROM | disk | FTP | other *** search
- <?xml version="1.0"?>
- <!--
- Copyright 1999-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
- <grammar xmlns="http://chaperon.sourceforge.net/schema/grammar/2.0"
- start="grammar">
-
- <definition name="grammar">
- <sequence>
- <optional>
- <element name="ws"/>
- </optional>
- <choice>
- <element name="definition"/>
- <element name="abbreviation"/>
- <element name="start"/>
- </choice>
- <zero-or-more>
- <element name="ws"/>
- <choice>
- <element name="definition"/>
- <element name="abbreviation"/>
- <element name="start"/>
- </choice>
- </zero-or-more>
- <optional>
- <element name="ws"/>
- </optional>
- </sequence>
- </definition>
-
- <definition name="definition">
- <sequence>
- <element name="name"/>
- <element name="ws"/>
- <char value=":"/>
- <element name="ws"/>
- <optional>
- <element name="regex"/>
- </optional>
- <element name="ws"/>
- <char value=";"/>
- </sequence>
- </definition>
-
- <definition name="name">
- <sequence>
- <class>
- <interval><char value="A"/><char value="Z"/></interval>
- <interval><char value="a"/><char value="z"/></interval>
- </class>
- <zero-or-more>
- <class>
- <interval><char value="A"/><char value="Z"/></interval>
- <interval><char value="a"/><char value="z"/></interval>
- <interval><char value="0"/><char value="9"/></interval>
- <char value="_"/>
- <char value="-"/>
- </class>
- </zero-or-more>
- </sequence>
- </definition>
-
- <definition name="abbreviation">
- <char value="%"/>
- <char value="a"/>
- <char value="b"/>
- <element name="ws"/>
- <element name="name"/>
- <element name="ws"/>
- <char value=":"/>
- <element name="ws"/>
- <element name="regex"/>
- <element name="ws"/>
- <char value=";"/>
- </definition>
-
- <definition name="start">
- <char value="%"/>
- <char value="s"/>
- <char value="t"/>
- <char value="a"/>
- <char value="r"/>
- <char value="t"/>
- <element name="ws"/>
- <element name="name"/>
- <element name="ws"/>
- <char value=";"/>
- </definition>
-
- <definition name="precedence">
- <element name="ws"/>
- <char value="%"/>
- <char value="p"/>
- <char value="r"/>
- <char value="e"/>
- <char value="c"/>
- <element name="ws"/>
- <element name="name"/>
- </definition>
-
- <definition name="regex">
- <choice>
- <element name="choice"/>
- <element name="sequence"/>
- <element name="quantifier"/>
- </choice>
- </definition>
-
- <definition name="choice">
- <sequence>
- <choice>
- <element name="sequence"/>
- <element name="quantifier"/>
- </choice>
- <one-or-more>
- <optional>
- <element name="precedence"/>
- </optional>
- <element name="ws"/>
- <char value="|"/>
- <element name="ws"/>
- <choice>
- <element name="sequence"/>
- <element name="quantifier"/>
- </choice>
- <optional>
- <element name="precedence"/>
- </optional>
- </one-or-more>
- </sequence>
- </definition>
-
- <definition name="sequence">
- <sequence>
- <element name="quantifier"/>
- <one-or-more>
- <element name="ws"/>
- <element name="quantifier"/>
- </one-or-more>
- </sequence>
- </definition>
-
- <definition name="quantifier">
- <choice>
- <element name="optional"/>
- <element name="one-or-more"/>
- <element name="zero-or-more"/>
- <element name="term"/>
- </choice>
- </definition>
-
- <definition name="optional">
- <sequence>
- <element name="term"/>
- <element name="ws"/>
- <char value="?"/>
- </sequence>
- </definition>
-
- <definition name="one-or-more">
- <sequence>
- <element name="term"/>
- <element name="ws"/>
- <char value="+"/>
- </sequence>
- </definition>
-
- <definition name="zero-or-more">
- <sequence>
- <element name="term"/>
- <element name="ws"/>
- <char value="*"/>
- </sequence>
- </definition>
-
- <definition name="term">
- <choice>
- <element name="class"/>
- <element name="string"/>
- <element name="nested"/>
- <element name="element"/>
- <element name="dot"/>
- </choice>
- </definition>
-
- <definition name="class">
- <sequence>
- <char value="["/>
- <optional>
- <element name="exclusive"/>
- </optional>
- <one-or-more>
- <choice>
- <element name="interval"/>
- <element name="class-char"/>
- <element name="masked-char"/>
- </choice>
- </one-or-more>
- <char value="]"/>
- </sequence>
- </definition>
-
- <definition name="exclusive">
- <char value="^"/>
- </definition>
-
- <definition name="string">
- <sequence>
- <char value="""/>
- <one-or-more>
- <choice>
- <element name="char"/>
- <element name="masked-char"/>
- </choice>
- </one-or-more>
- <char value="""/>
- </sequence>
- </definition>
-
- <definition name="char">
- <class exclusive="true">
- <char value="\"/>
- <char value="
"/>
- <char value="
"/>
- <char value="""/>
- </class>
- </definition>
-
- <definition name="class-char">
- <class exclusive="true">
- <char value="\"/>
- <char value="["/>
- <char value="]"/>
- <char value="-"/>
- <char value="
"/>
- <char value="
"/>
- <char value=" "/>
- <char value="^"/>
- </class>
- </definition>
-
- <definition name="masked-char">
- <choice>
- <sequence>
- <char value="\"/>
- <class exclusive="true">
- <char value="u"/>
- </class>
- </sequence>
- <sequence>
- <char value="\"/>
- <char value="u"/>
- <class>
- <interval><char value="0"/><char value="9"/></interval>
- <interval><char value="a"/><char value="f"/></interval>
- <interval><char value="A"/><char value="F"/></interval>
- </class>
- <class>
- <interval><char value="0"/><char value="9"/></interval>
- <interval><char value="a"/><char value="f"/></interval>
- <interval><char value="A"/><char value="F"/></interval>
- </class>
- <class>
- <interval><char value="0"/><char value="9"/></interval>
- <interval><char value="a"/><char value="f"/></interval>
- <interval><char value="A"/><char value="F"/></interval>
- </class>
- <class>
- <interval><char value="0"/><char value="9"/></interval>
- <interval><char value="a"/><char value="f"/></interval>
- <interval><char value="A"/><char value="F"/></interval>
- </class>
- </sequence>
- </choice>
- </definition>
-
- <definition name="dot">
- <char value="."/>
- </definition>
-
- <definition name="interval">
- <sequence>
- <choice>
- <element name="class-char"/>
- <element name="masked-char"/>
- </choice>
- <char value="-"/>
- <choice>
- <element name="class-char"/>
- <element name="masked-char"/>
- </choice>
- </sequence>
- </definition>
-
- <definition name="nested">
- <sequence>
- <char value="("/>
- <element name="ws"/>
- <choice>
- <element name="choice"/>
- <element name="sequence"/>
- <element name="quantifier"/>
- </choice>
- <element name="ws"/>
- <char value=")"/>
- </sequence>
- </definition>
-
- <definition name="element">
- <sequence>
- <class>
- <interval><char value="A"/><char value="Z"/></interval>
- <interval><char value="a"/><char value="z"/></interval>
- </class>
- <zero-or-more>
- <class>
- <interval><char value="A"/><char value="Z"/></interval>
- <interval><char value="a"/><char value="z"/></interval>
- <interval><char value="0"/><char value="9"/></interval>
- <char value="_"/>
- <char value="-"/>
- </class>
- </zero-or-more>
- </sequence>
- </definition>
-
- <definition name="ws">
- <zero-or-more>
- <choice>
- <sequence>
- <char value="/"/>
- <char value="/"/>
- <zero-or-more>
- <class exclusive="true">
- <char value="
"/>
- <char value="
"/>
- </class>
- </zero-or-more>
- <one-or-more>
- <class>
- <char value="
"/>
- <char value="
"/>
- </class>
- </one-or-more>
- </sequence>
- <sequence>
- <char value="/"/>
- <char value="*"/>
- <zero-or-more>
- <choice>
- <class exclusive="true"><char value="*"/></class>
- <sequence><char value="*"/><class exclusive="true"><char value="/"/></class></sequence>
- </choice>
- </zero-or-more>
- <char value="*"/>
- <char value="/"/>
- </sequence>
- <class>
- <char value="
"/>
- <char value="
"/>
- <char value=" "/>
- <char value=" "/>
- </class>
- </choice>
- </zero-or-more>
- </definition>
- </grammar>
-
-