X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fcql.y;h=67e2f761809ea7c6b9ca24053cd28515e831659e;hp=d1d5d1baf687da4eba4fc3620b92c1208930c244;hb=9084e20f4c5ffad9cfea2087396206b75a3a6654;hpb=a0b4e78f94da1ed3915b513593fdd684044bb32b diff --git a/src/cql.y b/src/cql.y index d1d5d1b..67e2f76 100644 --- a/src/cql.y +++ b/src/cql.y @@ -56,7 +56,7 @@ %} %pure_parser -%token PREFIX_NAME SIMPLE_STRING AND OR NOT PROX GE LE NE EXACT SORTBY +%token SIMPLE_STRING AND OR NOT PROX GE LE NE EXACT SORTBY %% @@ -145,12 +145,12 @@ searchClause: $$.cql = $3.cql; } | -searchTerm extraTerms { +searchTerm { 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; } + | index relation modifiers { $$.rel = cql_node_mk_sc(((CQL_parser) parm)->nmem, $1.buf, $2.buf, 0); @@ -161,18 +161,6 @@ searchTerm extraTerms { } ; -extraTerms: -SIMPLE_STRING extraTerms { - struct cql_node *st = cql_node_mk_sc(((CQL_parser) parm)->nmem, - /* index */ 0, /* rel */ 0, $1.buf); - st->u.st.extra_terms = $2.cql; - $$.cql = st; -} -| -{ $$.cql = 0; } -; - - /* unary NOT search SIMPLE_STRING here .. */ boolean: @@ -201,7 +189,7 @@ modifiers '/' searchTerm relation_symbol searchTerm } ; -relation: PREFIX_NAME | relation_symbol; +relation: SIMPLE_STRING | relation_symbol; relation_symbol: '=' @@ -218,7 +206,6 @@ index: searchTerm: SIMPLE_STRING -| PREFIX_NAME | AND | OR | NOT @@ -338,11 +325,8 @@ int yylex(YYSTYPE *lval, void *vp) } else { - int relation_like = 0; while (c != 0 && !strchr(" \n()=<>/", c)) { - if (c == '.') - relation_like = 1; if (c == '\\') { putb(lval, cp, c); @@ -384,14 +368,6 @@ int yylex(YYSTYPE *lval, void *vp) lval->buf = "sortby"; return SORTBY; } - if (!cql_strcmp(lval->buf, "all")) - relation_like = 1; - if (!cql_strcmp(lval->buf, "any")) - relation_like = 1; - if (!cql_strcmp(lval->buf, "adj")) - relation_like = 1; - if (relation_like) - return PREFIX_NAME; } return SIMPLE_STRING; }