You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2012/06/29 04:51:36 UTC
[lucy-commits] svn commit: r1355218 - in /lucy/trunk/core/Lucy/Search: QueryParser.c
QueryParser.cfh
Author: marvin
Date: Fri Jun 29 02:51:35 2012
New Revision: 1355218
URL: http://svn.apache.org/viewvc?rev=1355218&view=rev
Log:
Rename helper class ParserToken to ParserElem.
Modified:
lucy/trunk/core/Lucy/Search/QueryParser.c
lucy/trunk/core/Lucy/Search/QueryParser.cfh
Modified: lucy/trunk/core/Lucy/Search/QueryParser.c
URL: http://svn.apache.org/viewvc/lucy/trunk/core/Lucy/Search/QueryParser.c?rev=1355218&r1=1355217&r2=1355218&view=diff
==============================================================================
--- lucy/trunk/core/Lucy/Search/QueryParser.c (original)
+++ lucy/trunk/core/Lucy/Search/QueryParser.c Fri Jun 29 02:51:35 2012
@@ -16,7 +16,7 @@
#define C_LUCY_QUERYPARSER
#define C_LUCY_PARSERCLAUSE
-#define C_LUCY_PARSERTOKEN
+#define C_LUCY_PARSERELEM
#define C_LUCY_VIEWCHARBUF
#include <stdlib.h>
#include <ctype.h>
@@ -249,7 +249,7 @@ S_parse_flat_string(QueryParser *self, C
ViewCB_Trim(qstring);
if (S_consume_ascii(qstring, "(", 1)) {
- VA_Push(parse_tree, (Obj*)ParserToken_new(TOKEN_OPEN_PAREN, NULL, 0));
+ VA_Push(parse_tree, (Obj*)ParserElem_new(TOKEN_OPEN_PAREN, NULL, 0));
if (ViewCB_Code_Point_From(qstring, 1) == ')') {
need_close_paren = true;
ViewCB_Chop(qstring, 1);
@@ -258,7 +258,7 @@ S_parse_flat_string(QueryParser *self, C
ViewCharBuf *temp = (ViewCharBuf*)ZCB_BLANK();
while (ViewCB_Get_Size(qstring)) {
- ParserToken *token = NULL;
+ ParserElem *token = NULL;
if (ViewCB_Trim_Top(qstring)) {
// Fast-forward past whitespace.
@@ -266,35 +266,35 @@ S_parse_flat_string(QueryParser *self, C
}
else if (S_consume_ascii(qstring, "+", 1)) {
if (ViewCB_Trim_Top(qstring)) {
- token = ParserToken_new(TOKEN_QUERY, "+", 1);
+ token = ParserElem_new(TOKEN_QUERY, "+", 1);
}
else {
- token = ParserToken_new(TOKEN_PLUS, NULL, 0);
+ token = ParserElem_new(TOKEN_PLUS, NULL, 0);
}
}
else if (S_consume_ascii(qstring, "-", 1)) {
if (ViewCB_Trim_Top(qstring)) {
- token = ParserToken_new(TOKEN_QUERY, "-", 1);
+ token = ParserElem_new(TOKEN_QUERY, "-", 1);
}
else {
- token = ParserToken_new(TOKEN_MINUS, NULL, 0);
+ token = ParserElem_new(TOKEN_MINUS, NULL, 0);
}
}
else if (S_consume_ascii_token(qstring, "AND", 3)) {
- token = ParserToken_new(TOKEN_AND, NULL, 0);
+ token = ParserElem_new(TOKEN_AND, NULL, 0);
}
else if (S_consume_ascii_token(qstring, "OR", 2)) {
- token = ParserToken_new(TOKEN_OR, NULL, 0);
+ token = ParserElem_new(TOKEN_OR, NULL, 0);
}
else if (S_consume_ascii_token(qstring, "NOT", 3)) {
- token = ParserToken_new(TOKEN_NOT, NULL, 0);
+ token = ParserElem_new(TOKEN_NOT, NULL, 0);
}
else if (self->heed_colons && S_consume_field(qstring, temp)) {
- token = ParserToken_new(TOKEN_FIELD, (char*)ViewCB_Get_Ptr8(temp),
+ token = ParserElem_new(TOKEN_FIELD, (char*)ViewCB_Get_Ptr8(temp),
ViewCB_Get_Size(temp));
}
else if (S_consume_non_whitespace(qstring, temp)) {
- token = ParserToken_new(TOKEN_QUERY, (char*)ViewCB_Get_Ptr8(temp),
+ token = ParserElem_new(TOKEN_QUERY, (char*)ViewCB_Get_Ptr8(temp),
ViewCB_Get_Size(temp));
}
else {
@@ -306,7 +306,7 @@ S_parse_flat_string(QueryParser *self, C
if (need_close_paren) {
VA_Push(parse_tree,
- (Obj*)ParserToken_new(TOKEN_CLOSE_PAREN, NULL, 0));
+ (Obj*)ParserElem_new(TOKEN_CLOSE_PAREN, NULL, 0));
}
// Clean up.
@@ -316,11 +316,11 @@ S_parse_flat_string(QueryParser *self, C
}
static void
-S_splice_out_token_type(VArray *elems, uint32_t token_type_mask) {
+S_splice_out_elem_type(VArray *elems, uint32_t mask) {
for (uint32_t i = VA_Get_Size(elems); i--;) {
- ParserToken *token = (ParserToken*)VA_Fetch(elems, i);
- if (Obj_Is_A((Obj*)token, PARSERTOKEN)) {
- if (token->type & token_type_mask) { VA_Excise(elems, i, 1); }
+ ParserElem *elem = (ParserElem*)VA_Fetch(elems, i);
+ if (Obj_Is_A((Obj*)elem, PARSERELEM)) {
+ if (elem->type & mask) { VA_Excise(elems, i, 1); }
}
}
}
@@ -336,7 +336,7 @@ S_do_tree(QueryParser *self, CharBuf *qu
VArray *elems = S_parse_flat_string(self, query_string);
// Determine whether this subclause is bracketed by parens.
- ParserToken *maybe_open_paren = (ParserToken*)VA_Fetch(elems, 0);
+ ParserElem *maybe_open_paren = (ParserElem*)VA_Fetch(elems, 0);
if (maybe_open_paren != NULL
&& maybe_open_paren->type == TOKEN_OPEN_PAREN
) {
@@ -344,8 +344,8 @@ S_do_tree(QueryParser *self, CharBuf *qu
VA_Excise(elems, 0, 1);
uint32_t num_elems = VA_Get_Size(elems);
if (num_elems) {
- ParserToken *maybe_close_paren
- = (ParserToken*)VA_Fetch(elems, num_elems - 1);
+ ParserElem *maybe_close_paren
+ = (ParserElem*)VA_Fetch(elems, num_elems - 1);
if (maybe_close_paren->type == TOKEN_CLOSE_PAREN) {
VA_Excise(elems, num_elems - 1, 1);
}
@@ -355,36 +355,36 @@ S_do_tree(QueryParser *self, CharBuf *qu
// Generate all queries. Apply any fields.
for (uint32_t i = VA_Get_Size(elems); i--;) {
CharBuf *field = default_field;
- ParserToken *token = (ParserToken*)VA_Fetch(elems, i);
+ ParserElem *elem = (ParserElem*)VA_Fetch(elems, i);
// Apply field.
if (i > 0) {
// Field specifier must immediately precede any query.
- ParserToken* maybe_field_token
- = (ParserToken*)VA_Fetch(elems, i - 1);
- if (maybe_field_token->type == TOKEN_FIELD) {
- field = maybe_field_token->text;
+ ParserElem* maybe_field_elem
+ = (ParserElem*)VA_Fetch(elems, i - 1);
+ if (maybe_field_elem->type == TOKEN_FIELD) {
+ field = maybe_field_elem->text;
}
}
- if (token->type == TOKEN_QUERY) {
+ if (elem->type == TOKEN_QUERY) {
// Generate a LeafQuery from a Phrase.
- if (CB_Starts_With(token->text, self->phrase_label)) {
+ if (CB_Starts_With(elem->text, self->phrase_label)) {
CharBuf *inner_text
- = (CharBuf*)Hash_Fetch(extractions, (Obj*)token->text);
+ = (CharBuf*)Hash_Fetch(extractions, (Obj*)elem->text);
Query *query = (Query*)LeafQuery_new(field, inner_text);
ParserClause *clause = ParserClause_new(query, default_occur);
- DECREF(Hash_Delete(extractions, (Obj*)token->text));
+ DECREF(Hash_Delete(extractions, (Obj*)elem->text));
VA_Store(elems, i, (Obj*)clause);
DECREF(query);
}
// Recursively parse parenthetical groupings.
- else if (CB_Starts_With(token->text, self->bool_group_label)) {
+ else if (CB_Starts_With(elem->text, self->bool_group_label)) {
CharBuf *inner_text
- = (CharBuf*)Hash_Fetch(extractions, (Obj*)token->text);
+ = (CharBuf*)Hash_Fetch(extractions, (Obj*)elem->text);
Query *query
= S_do_tree(self, inner_text, field, extractions);
- DECREF(Hash_Delete(extractions, (Obj*)token->text));
+ DECREF(Hash_Delete(extractions, (Obj*)elem->text));
if (query) {
ParserClause *clause
= ParserClause_new(query, default_occur);
@@ -394,30 +394,30 @@ S_do_tree(QueryParser *self, CharBuf *qu
}
// What's left is probably a term, so generate a LeafQuery.
else {
- Query *query = (Query*)LeafQuery_new(field, token->text);
+ Query *query = (Query*)LeafQuery_new(field, elem->text);
ParserClause *clause = ParserClause_new(query, default_occur);
VA_Store(elems, i, (Obj*)clause);
DECREF(query);
}
}
}
- S_splice_out_token_type(elems, TOKEN_FIELD | TOKEN_QUERY);
+ S_splice_out_elem_type(elems, TOKEN_FIELD | TOKEN_QUERY);
// Apply +, -, NOT.
for (uint32_t i = VA_Get_Size(elems); i--;) {
ParserClause *clause = (ParserClause*)VA_Fetch(elems, i);
if (Obj_Is_A((Obj*)clause, PARSERCLAUSE)) {
for (uint32_t j = i; j--;) {
- ParserToken *token = (ParserToken*)VA_Fetch(elems, j);
- if (Obj_Is_A((Obj*)token, PARSERTOKEN)) {
- if (token->type == TOKEN_MINUS
- || token->type == TOKEN_NOT
+ ParserElem *elem = (ParserElem*)VA_Fetch(elems, j);
+ if (Obj_Is_A((Obj*)elem, PARSERELEM)) {
+ if (elem->type == TOKEN_MINUS
+ || elem->type == TOKEN_NOT
) {
clause->occur = clause->occur == MUST_NOT
? MUST
: MUST_NOT;
}
- else if (token->type == TOKEN_PLUS) {
+ else if (elem->type == TOKEN_PLUS) {
if (clause->occur == SHOULD) {
clause->occur = MUST;
}
@@ -429,7 +429,7 @@ S_do_tree(QueryParser *self, CharBuf *qu
}
}
}
- S_splice_out_token_type(elems, TOKEN_PLUS | TOKEN_MINUS | TOKEN_NOT);
+ S_splice_out_elem_type(elems, TOKEN_PLUS | TOKEN_MINUS | TOKEN_NOT);
// Wrap negated queries with NOTQuery objects.
for (uint32_t i = 0, max = VA_Get_Size(elems); i < max; i++) {
@@ -444,8 +444,8 @@ S_do_tree(QueryParser *self, CharBuf *qu
// Silently discard non-sensical combos of AND and OR, e.g.
// 'OR a AND AND OR b AND'.
for (uint32_t i = 0; i < VA_Get_Size(elems); i++) {
- ParserToken *token = (ParserToken*)VA_Fetch(elems, i);
- if (Obj_Is_A((Obj*)token, PARSERTOKEN)) {
+ ParserElem *elem = (ParserElem*)VA_Fetch(elems, i);
+ if (Obj_Is_A((Obj*)elem, PARSERELEM)) {
uint32_t num_to_zap = 0;
ParserClause *preceding = (ParserClause*)VA_Fetch(elems, i - 1);
ParserClause *following = (ParserClause*)VA_Fetch(elems, i + 1);
@@ -466,8 +466,8 @@ S_do_tree(QueryParser *self, CharBuf *qu
// Apply AND.
for (uint32_t i = 0; i + 2 < VA_Get_Size(elems); i++) {
- ParserToken *token = (ParserToken*)VA_Fetch(elems, i + 1);
- if (Obj_Is_A((Obj*)token, PARSERTOKEN) && token->type == TOKEN_AND) {
+ ParserElem *elem = (ParserElem*)VA_Fetch(elems, i + 1);
+ if (Obj_Is_A((Obj*)elem, PARSERELEM) && elem->type == TOKEN_AND) {
ParserClause *preceding = (ParserClause*)VA_Fetch(elems, i);
VArray *children = VA_new(2);
uint32_t num_to_zap = 0;
@@ -480,10 +480,10 @@ S_do_tree(QueryParser *self, CharBuf *qu
j < jmax;
j += 2, num_to_zap += 2
) {
- ParserToken *maybe_and = (ParserToken*)VA_Fetch(elems, j);
+ ParserElem *maybe_and = (ParserElem*)VA_Fetch(elems, j);
ParserClause *following
= (ParserClause*)VA_Fetch(elems, j + 1);
- if (!Obj_Is_A((Obj*)maybe_and, PARSERTOKEN)
+ if (!Obj_Is_A((Obj*)maybe_and, PARSERELEM)
|| maybe_and->type != TOKEN_AND
) {
break;
@@ -507,8 +507,8 @@ S_do_tree(QueryParser *self, CharBuf *qu
// Apply OR.
for (uint32_t i = 0; i + 2 < VA_Get_Size(elems); i++) {
- ParserToken *token = (ParserToken*)VA_Fetch(elems, i + 1);
- if (Obj_Is_A((Obj*)token, PARSERTOKEN) && token->type == TOKEN_OR) {
+ ParserElem *elem = (ParserElem*)VA_Fetch(elems, i + 1);
+ if (Obj_Is_A((Obj*)elem, PARSERELEM) && elem->type == TOKEN_OR) {
ParserClause *preceding = (ParserClause*)VA_Fetch(elems, i);
VArray *children = VA_new(2);
uint32_t num_to_zap = 0;
@@ -521,10 +521,10 @@ S_do_tree(QueryParser *self, CharBuf *qu
j < jmax;
j += 2, num_to_zap += 2
) {
- ParserToken *maybe_or = (ParserToken*)VA_Fetch(elems, j);
+ ParserElem *maybe_or = (ParserElem*)VA_Fetch(elems, j);
ParserClause *following
= (ParserClause*)VA_Fetch(elems, j + 1);
- if (!Obj_Is_A((Obj*)maybe_or, PARSERTOKEN)
+ if (!Obj_Is_A((Obj*)maybe_or, PARSERELEM)
|| maybe_or->type != TOKEN_OR
) {
break;
@@ -1215,14 +1215,14 @@ ParserClause_destroy(ParserClause *self)
/********************************************************************/
-ParserToken*
-ParserToken_new(uint32_t type, const char *text, size_t len) {
- ParserToken *self = (ParserToken*)VTable_Make_Obj(PARSERTOKEN);
- return ParserToken_init(self, type, text, len);
+ParserElem*
+ParserElem_new(uint32_t type, const char *text, size_t len) {
+ ParserElem *self = (ParserElem*)VTable_Make_Obj(PARSERELEM);
+ return ParserElem_init(self, type, text, len);
}
-ParserToken*
-ParserToken_init(ParserToken *self, uint32_t type, const char *text,
+ParserElem*
+ParserElem_init(ParserElem *self, uint32_t type, const char *text,
size_t len) {
self->type = type;
self->text = text ? CB_new_from_utf8(text, len) : NULL;
@@ -1230,9 +1230,9 @@ ParserToken_init(ParserToken *self, uint
}
void
-ParserToken_destroy(ParserToken *self) {
+ParserElem_destroy(ParserElem *self) {
DECREF(self->text);
- SUPER_DESTROY(self, PARSERTOKEN);
+ SUPER_DESTROY(self, PARSERELEM);
}
Modified: lucy/trunk/core/Lucy/Search/QueryParser.cfh
URL: http://svn.apache.org/viewvc/lucy/trunk/core/Lucy/Search/QueryParser.cfh?rev=1355218&r1=1355217&r2=1355218&view=diff
==============================================================================
--- lucy/trunk/core/Lucy/Search/QueryParser.cfh (original)
+++ lucy/trunk/core/Lucy/Search/QueryParser.cfh Fri Jun 29 02:51:35 2012
@@ -246,20 +246,20 @@ class Lucy::QueryParser::ParserClause in
/** Private utility class.
*/
-class Lucy::QueryParser::ParserToken inherits Lucy::Object::Obj {
+class Lucy::QueryParser::ParserElem inherits Lucy::Object::Obj {
uint32_t type;
CharBuf *text;
- inert incremented ParserToken*
+ inert incremented ParserElem*
new(uint32_t type, const char *text = NULL, size_t len = 0);
- inert ParserToken*
- init(ParserToken *self, uint32_t type, const char *text = NULL,
+ inert ParserElem*
+ init(ParserElem *self, uint32_t type, const char *text = NULL,
size_t len = 0);
public void
- Destroy(ParserToken *self);
+ Destroy(ParserElem *self);
}