Add yaz_parse_facet_list with helper functions
[yaz-moved-to-github.git] / src / cql2.0.y
1 /* This file is part of the YAZ toolkit.
2  * Copyright (C) 1995-2010 Index Data
3  * See the file LICENSE for details.
4  */
5 /*
6   YACC CQL grammar taken verbatim from the 2.0 draft (June 2010).
7  */
8 %term PREFIX_NAME QUOTED_URI_STRING QUOTED_STRING AND OR NOT PROX SORTBY SIMPLE_STRING
9
10 %%
11 cql_query : query | query sort_spec;
12
13 query : prefix_assignment search_clause_group | search_clause_group ;
14
15 search_clause_group: search_clause_group boolean_modified subquery | subquery;
16
17 subquery : '(' query ')' | search_clause;
18
19 search_clause: index relation_modified search_term | search_term;
20
21 search_term : SIMPLE_STRING | QUOTED_STRING;
22
23 sort_spec : sort_by index_modified_list;
24
25 sort_by: SORTBY;
26
27 index_modified_list: index_modified_list index_modified | index_modified;
28
29 prefix_assignment: '>' prefix '=' uri | '>' uri;
30
31 prefix: SIMPLE_STRING;
32
33 uri : QUOTED_URI_STRING;
34
35 index_modified: index modifier_list | index;
36
37 index : simple_name | PREFIX_NAME;
38
39 relation_modified : relation modifier_list | relation;
40
41 relation : relation_name | relation_symbol;
42
43 relation_name: simple_name | PREFIX_NAME;
44
45 relation_symbol : '=' | '>' | '<' ;
46
47 boolean_modified : boolean modifier_list | boolean;
48
49 boolean : AND | OR | NOT | PROX;
50
51 modifier_list : modifier_list modifier | modifier;
52
53 modifier : '/' modifier_name modifier_relation | '/' modifier_name;
54
55 modifier_name: simple_name;
56
57 modifier_relation : relation_symbol modifier_value;
58
59 modifier_value : SIMPLE_STRING | QUOTED_STRING;
60
61 simple_name: SIMPLE_STRING;
62
63 %%