I'm trying to parse CCL commands like:
dylan or zimmerman
bob and (dylan or zimmerman)
I need to seach a database for each token and combine the results.
- What the best approach for this task?
- I've been looking at a lot of parsers, but can't find anything similar.
- I've found a grammar for such a comman, but failed to build any perl code
CCL-Find ::= CCL-Find Op Elements
Op ::= "and" | "or" | "not"
-- The above means that Elements are separated by boolean operators.
Elements ::= '(' CCL-Find ')'
| Qualifiers Relation Terms
| Qualifiers Relation '(' CCL-Find ')'
| Qualifiers '=' string '-' string
-- Elements is either a recursive definition, a result set reference
-- list of terms, qualifiers followed by terms, qualifiers followed
-- by a recursive definition or qualifiers in a range (lower - upper
Set ::= 'set' = string
-- Reference to a result set
Terms ::= Terms Prox Term
-- Proximity of terms.
Term ::= Term string
-- This basically means that a term may include a blank
Qualifiers ::= Qualifiers ',' string
-- Qualifiers is a list of strings separated by comma
Relation ::= '=' | '>=' | '<=' | '<>' | '>' | '<'
-- Relational operators. This really doesn't follow the ISO8777
Prox ::= '%' | '!'
-- Proximity operator
Are you posting in the right place? Check out Where do I post X? to know for sure.
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
Want more info? How to link
or How to display code and escape characters
are good places to start.