/**
* Copyright 2008 University of Washington Structural Informatics Group
*
* 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.
*/

/*------------------------------------------------------------------
* GLEEN V0.6 PathExpression Grammar
* Landon Todd Detwiler
* Structural Informatics Group
* University of Washington
* 06/02/2008
*------------------------------------------------------------------*/

SKIP :
" "
| "\t"
| "\n"
| "\r"
| <"//" (~["\n","\r"])* ("\n"|"\r"|"\r\n")>
| <"/*" (~["*"])* "*" (~["/"] (~["*"])* "*")* "/">
}

TOKENS:
< LGROUP> ::= "("
< RGROUP> ::= ")"
< CONCAT> ::= "/"
< ALT> ::= "|"
< STAR> ::= "*"
< PLUS> ::=: "+"
< OPT> ::= "?"
< PROPERTY> ::= "["(<PROPERTY_CHAR>)+"]"
< PROPERTY_CHAR> ::= ~["[","]"]

PRODUCTIONS:
<Start> ::= <Expr>
<Expr> ::= <BinaryOpExpr>
<BinaryOpExpr> ::= <UnaryOpExpr> [(<CONCAT> <BinaryOpExpr>)+ | (<ALT> <BinaryOpExpr>)+]
<UnaryOpExpr> ::= <SubExpr> [<STAR> | <PLUS> | <OPT>]
<SubExpr> ::= <LGROUP> <Expr> <RGROUP> | <SimpTerm>
<SimpTerm> ::= <PROPERTY>