// ----------------------------------------------------------------------------
// file header
// ----------------------------------------------------------------------------
header {
/*
* 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.
*
*/
package org.apache.felix.bundledb.filter;
}
// ----------------------------------------------------------------------------
// class definition
// ----------------------------------------------------------------------------
/**
* The filter parser's primary lexer.
*
* @see String Representation of Search Filters
* @see LDAP: Directory Information Models
* @author Apache Directory Project
*/
class AntlrFilterLexer extends Lexer;
// ----------------------------------------------------------------------------
// lexer options
// ----------------------------------------------------------------------------
options
{
k=2;
charVocabulary='\u0001'..'\u0127';
exportVocab = FilterLexer;
importVocab = FilterValueLexer;
defaultErrorHandler=false;
}
// ----------------------------------------------------------------------------
// lexer class members
// ----------------------------------------------------------------------------
{
/** the selector key used by this class of lexer */
public static final String SELECTOR_KEY = "filterLexer";
}
// ----------------------------------------------------------------------------
// attribute description lexer rules from models
// ----------------------------------------------------------------------------
WS : ( ' '
| '\t'
| '\r' '\n' { newline(); }
| '\n' { newline(); }
| '\r' { newline(); }
)
{$setType(Token.SKIP);} //ignore this token
;
protected RANGLE: '>';
protected LANGLE: '<';
protected TILDE: '~';
COLON: ':';
ASTERISK: '*';
EXCLAMATION: '!';
EQUALS: '=';
LPAREN: '(';
RPAREN: ')';
VERTBAR: '|';
AMPERSTAND: '&';
DN: ":dn";
COLONEQUALS: ":=";
APPROX: TILDE EQUALS;
GREATEROREQUAL: RANGLE EQUALS;
LESSOREQUAL: LANGLE EQUALS;
protected DIGIT: '0' | LDIGIT;
protected LDIGIT: '1'..'9';
protected ALPHA: 'A'..'Z' | 'a'..'z';
protected NUMBER: DIGIT | ( LDIGIT ( DIGIT )+ );
protected NUMERICOID: NUMBER ( '.' NUMBER )+;
protected DESCR: ALPHA ( ALPHA | DIGIT | '-' )*;
protected OID: DESCR | NUMERICOID;
protected OPTION: ( ALPHA | DIGIT | '-' )+;
protected OPTIONS: ( ';' OPTION )*;
ATTRIBUTEDESCRIPTION: OID OPTIONS;