-/* $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
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
+#include <yaz/nmem.h>
#include <yaz/cql.h>
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 {
int last_error;
int last_pos;
struct cql_node *top;
+ NMEM nmem;
};
#define YYSTYPE token
} 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;
}
$$.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;
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);
}