| <?xml version="1.0"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You 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> |
| |