Revert "Bison: use %name-prefix directive rather than -p option"
[yaz-moved-to-github.git] / src / cql.y
index ea828dc..cf85690 100644 (file)
--- a/src/cql.y
+++ b/src/cql.y
@@ -1,5 +1,5 @@
 /* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2013 Index Data
+ * Copyright (C) Index Data
  * See the file LICENSE for details.
  */
 /* bison parser for CQL grammar. */
         int last_pos;
         struct cql_node *top;
         NMEM nmem;
+        int strict;
     };
 
 #define YYSTYPE token
 
-#define YYPARSE_PARAM parm
-#define YYLEX_PARAM parm
+int yylex(YYSTYPE *lval, void *vp);
+int yyerror(void *lval, char *msg);
 
-    int yylex(YYSTYPE *lval, void *vp);
-    int yyerror(char *s);
 %}
 
-%pure_parser
+
+%lex-param {void *parm}
+%parse-param {void *parm}
+%pure-parser
 %token PREFIX_NAME SIMPLE_STRING AND OR NOT PROX GE LE NE EXACT SORTBY
 
 %%
@@ -228,7 +230,7 @@ searchTerm:
 
 %%
 
-int yyerror(char *s)
+int yyerror(void *locp, char *s)
 {
     return 0;
 }
@@ -384,16 +386,14 @@ int yylex(YYSTYPE *lval, void *vp)
            lval->buf = "sortby";
            return SORTBY;
        }
+        if (cp->strict)
+            return PREFIX_NAME;
        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 (!cql_strcmp(lval->buf, "within"))
-           relation_like = 1;
-       if (!cql_strcmp(lval->buf, "encloses"))
-           relation_like = 1;
        if (relation_like)
            return PREFIX_NAME;
     }
@@ -428,6 +428,7 @@ CQL_parser cql_parser_create(void)
     cp->last_error = 0;
     cp->last_pos = 0;
     cp->nmem = nmem_create();
+    cp->strict = 0;
     return cp;
 }
 
@@ -443,6 +444,11 @@ struct cql_node *cql_parser_result(CQL_parser cp)
     return cp->top;
 }
 
+void cql_parser_strict(CQL_parser cp, int mode)
+{
+    cp->strict = mode;
+}
+
 /*
  * Local variables:
  * c-basic-offset: 4