* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-/* $Id: cql.h,v 1.19 2007-11-14 21:03:59 adam Exp $ */
+/* $Id: cql.h,v 1.20 2008-01-06 16:22:02 adam Exp $ */
/** \file cql.h
\brief Header with public definitions about CQL.
char *relation_uri;
/** relation modifiers */
struct cql_node *modifiers;
+ /** term list */
+ struct cql_node *extra_terms;
} st;
/** which == CQL_NODE_BOOL */
struct {
-/* $Id: cql.y,v 1.16 2008-01-06 13:08:09 adam Exp $
+/* $Id: cql.y,v 1.17 2008-01-06 16:22:02 adam Exp $
Copyright (C) 2002-2006
Index Data ApS
$$.cql = $3.cql;
}
|
- searchTerm {
- struct cql_node *st = cql_node_dup (((CQL_parser) parm)->nmem, $0.rel);
+searchTerm extraTerms {
+ struct cql_node *st = cql_node_dup(((CQL_parser) parm)->nmem, $0.rel);
+ st->u.st.extra_terms = $2.cql;
st->u.st.term = nmem_strdup(((CQL_parser)parm)->nmem, $1.buf);
$$.cql = st;
}
}
;
+extraTerms:
+extraTerms TERM {
+ struct cql_node *st = cql_node_mk_sc(((CQL_parser) parm)->nmem,
+ /* index */ 0, /* rel */ 0, $2.buf);
+ st->u.st.extra_terms = $1.cql;
+ $$.cql = st;
+}
+|
+{ $$.cql = 0; }
+;
+
+
/* unary NOT search TERM here .. */
boolean:
}
;
-/*
-extraTerms:
- extraTerms TERM | ;
-*/
-
mrelation:
'='
| '>'
-/* $Id: cqlutil.c,v 1.12 2008-01-06 13:08:09 adam Exp $
+/* $Id: cqlutil.c,v 1.13 2008-01-06 16:22:02 adam Exp $
Copyright (C) 1995-2007, Index Data ApS
Index Data Aps
p->u.st.relation = nmem_strdup(nmem, relation);
p->u.st.relation_uri = 0;
p->u.st.modifiers = 0;
+ p->u.st.extra_terms = 0;
return p;
}
-/* $Id: xcqlutil.c,v 1.8 2007-06-28 07:58:07 adam Exp $
+/* $Id: xcqlutil.c,v 1.9 2008-01-06 16:22:02 adam Exp $
Copyright (C) 1995-2007, Index Data ApS
Index Data Aps
pr_cdata(cn->u.st.term, pr, client_data);
pr_n("</term>\n", pr, client_data, 0);
}
+ if (cn->u.st.extra_terms)
+ {
+ struct cql_node *n = cn->u.st.extra_terms;
+ for (; n; n = n->u.st.extra_terms)
+ {
+ pr_n("<term>", pr, client_data, level+2);
+ pr_cdata(n->u.st.term, pr, client_data);
+ pr_n("</term>\n", pr, client_data, 0);
+ }
+ }
pr_n("</searchClause>\n", pr, client_data, level);
break;
case CQL_NODE_BOOL: