X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fcql.y;h=187cba1c98be6076c3f9b719f5fb06c36be338d9;hb=85a1ec4eb983744107e98378be5f3a1d0c33ef52;hp=1086549135ef97bed750f6856ca3c96d8abe41f4;hpb=87ca9b11fd146605fc3b54fcafbcad9869487295;p=yaz-moved-to-github.git diff --git a/src/cql.y b/src/cql.y index 1086549..187cba1 100644 --- a/src/cql.y +++ b/src/cql.y @@ -1,6 +1,6 @@ -/* $Id: cql.y,v 1.8 2004-11-01 20:13:02 adam Exp $ - Copyright (C) 2002-2004 - Index Data Aps +/* $Id: cql.y,v 1.13 2006-12-14 09:05:18 adam Exp $ + Copyright (C) 2002-2006 + Index Data ApS This file is part of the YAZ toolkit. @@ -135,8 +135,7 @@ searchClause: /* unary NOT search TERM here .. */ boolean: - AND | OR | NOT | PROX - ; + AND | OR | NOT | PROX ; modifiers: modifiers '/' searchTerm { @@ -286,27 +285,38 @@ int yylex(YYSTYPE *lval, void *vp) } else { - putb(lval, cp, c); - while ((c = cp->getbyte(cp->client_data)) != 0 && - !strchr(" \n()=<>/", c)) + while (c != 0 && !strchr(" \n()=<>/", c)) { if (c == '\\') c = cp->getbyte(cp->client_data); putb(lval, cp, c); + c = cp->getbyte(cp->client_data); } #if YYDEBUG printf ("got %s\n", lval->buf); #endif if (c != 0) cp->ungetbyte(c, cp->client_data); - if (!strcmp(lval->buf, "and")) + if (!cql_strcmp(lval->buf, "and")) + { + lval->buf = "and"; return AND; - if (!strcmp(lval->buf, "or")) + } + if (!cql_strcmp(lval->buf, "or")) + { + lval->buf = "or"; return OR; - if (!strcmp(lval->buf, "not")) + } + if (!cql_strcmp(lval->buf, "not")) + { + lval->buf = "not"; return NOT; - if (!strncmp(lval->buf, "prox", 4)) + } + if (!cql_strcmp(lval->buf, "prox")) + { + lval->buf = "prox"; return PROX; + } } return TERM; }