X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=cql%2Fcql.y;h=daa31359fedc265a0a53eddd330ca5be3f03a485;hb=006c3df264a95c03bfc557b2004595fc6cc3ee14;hp=4a816aa924c24772d442a85ca537ead387aabc7f;hpb=4d531a1a9131d69c3b6c27fbac42837e22cff61c;p=yaz-moved-to-github.git diff --git a/cql/cql.y b/cql/cql.y index 4a816aa..daa3135 100644 --- a/cql/cql.y +++ b/cql/cql.y @@ -1,4 +1,4 @@ -/* $Id: cql.y,v 1.1 2003-01-06 08:20:27 adam Exp $ +/* $Id: cql.y,v 1.4 2003-04-11 15:53:39 adam Exp $ Copyright (C) 2002-2003 Index Data Aps @@ -13,14 +13,15 @@ See the file LICENSE. #include #include #include +#include #include typedef struct { struct cql_node *rel; struct cql_node *cql; - char buf[80]; + char *buf; size_t len; - size_t max; + size_t size; } token; struct cql_parser { @@ -30,6 +31,7 @@ See the file LICENSE. int last_error; int last_pos; struct cql_node *top; + NMEM nmem; }; #define YYSTYPE token @@ -71,9 +73,9 @@ cqlQuery: } searchClause { struct cql_node *cn = cql_node_mk_boolean($2.buf); - cn->u.bool.modifiers = $2.rel; - cn->u.bool.left = $1.cql; - cn->u.bool.right = $4.cql; + cn->u.boolean.modifiers = $2.rel; + cn->u.boolean.left = $1.cql; + cn->u.boolean.right = $4.cql; $$.cql = cn; } @@ -98,7 +100,7 @@ searchClause: $$.rel->u.st.index = strdup($1.buf); } searchClause { $$.cql = $4.cql; - cql_node_destroy($$.rel); + cql_node_destroy($2.rel); } | '>' searchTerm '=' searchTerm { $$.rel = $0.rel; @@ -250,14 +252,22 @@ int cql_parser_stream(CQL_parser cp, CQL_parser cql_parser_create(void) { - CQL_parser cp = malloc (sizeof(*cp)); - + CQL_parser cp = (CQL_parser) malloc (sizeof(*cp)); + + cp->top = 0; + cp->getbyte = 0; + cp->ungetbyte = 0; + cp->client_data = 0; + cp->last_error = 0; + cp->last_pos = 0; + cp->nmem = nmem_create(); return cp; } void cql_parser_destroy(CQL_parser cp) { cql_node_destroy(cp->top); + nmem_destroy(cp->nmem); free (cp); }