YAZ 5.35.1
cclp.h
Go to the documentation of this file.
1/* This file is part of the YAZ toolkit.
2 * Copyright (C) Index Data.
3 * All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are met:
6 *
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of Index Data nor the names of its contributors
13 * may be used to endorse or promote products derived from this
14 * software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
32#include <yaz/ccl.h>
33
34#define CCL_TOK_EOL 0
35#define CCL_TOK_TERM 1
36#define CCL_TOK_REL 2
37#define CCL_TOK_EQ 3
38#define CCL_TOK_PROX 4
39#define CCL_TOK_LP 5
40#define CCL_TOK_RP 6
41#define CCL_TOK_COMMA 7
42#define CCL_TOK_AND 8
43#define CCL_TOK_OR 9
44#define CCL_TOK_NOT 10
45#define CCL_TOK_SET 11
46
48
50struct ccl_token {
51 char kind;
52 size_t len; /* length of name below */
53 const char *name; /* string / name of token */
54 struct ccl_token *next;
55 struct ccl_token *prev;
56 const char *ws_prefix_buf; /* leading white space buf */
57 size_t ws_prefix_len; /* leading white space len */
58};
59
61struct ccl_parser {
64
68 const char *start_pos;
70 const char *error_pos;
71
74
76 const char **ccl_token_and;
78 const char **ccl_token_or;
80 const char **ccl_token_not;
82 const char **ccl_token_set;
85};
86
91YAZ_EXPORT
92struct ccl_token *ccl_parser_tokenize (CCL_parser cclp, const char *command);
93
97YAZ_EXPORT
98void ccl_token_del (struct ccl_token *list);
99
103YAZ_EXPORT
104struct ccl_token *ccl_token_add (struct ccl_token *at);
105
106
107YAZ_EXPORT
109 struct ccl_token *list);
110
111
112YAZ_EXPORT
114 size_t name_len, int seq);
115
116YAZ_EXPORT
118
119YAZ_EXPORT
121
122/*
123 * Local variables:
124 * c-basic-offset: 4
125 * c-file-style: "Stroustrup"
126 * indent-tabs-mode: nil
127 * End:
128 * vim: shiftwidth=4 tabstop=8 expandtab
129 */
130
Header with public definitions for CCL.
ccl_qualifier_t ccl_qual_search(CCL_parser cclp, const char *name, size_t name_len, int seq)
Definition cclqual.c:338
struct ccl_rpn_attr * ccl_qual_get_attr(ccl_qualifier_t q)
Definition cclqual.c:382
struct ccl_token * ccl_token_add(struct ccl_token *at)
Definition ccltoken.c:188
void ccl_token_del(struct ccl_token *list)
Definition ccltoken.c:209
struct ccl_rpn_node * ccl_parser_find_token(CCL_parser cclp, struct ccl_token *list)
Definition cclfind.c:1280
const char * ccl_qual_get_name(ccl_qualifier_t q)
Definition cclqual.c:396
struct ccl_qualifier * ccl_qualifier_t
Definition cclp.h:47
struct ccl_token * ccl_parser_tokenize(CCL_parser cclp, const char *command)
Definition ccltoken.c:58
char * name
Definition initopt.c:18
const char * start_pos
Definition cclp.h:68
CCL_bibset bibset
Definition cclp.h:73
const char ** ccl_token_not
Definition cclp.h:80
const char ** ccl_token_set
Definition cclp.h:82
int error_code
Definition cclp.h:66
const char ** ccl_token_or
Definition cclp.h:78
int ccl_case_sensitive
Definition cclp.h:84
const char * error_pos
Definition cclp.h:70
const char ** ccl_token_and
Definition cclp.h:76
struct ccl_token * look_token
Definition cclp.h:63
attribute node (type, value) pair as used in RPN
Definition ccl.h:98
RPN tree structure node.
Definition ccl.h:128
size_t len
Definition cclp.h:52
char kind
Definition cclp.h:51
const char * name
Definition cclp.h:53
struct ccl_token * prev
Definition cclp.h:55
struct ccl_token * next
Definition cclp.h:54
size_t ws_prefix_len
Definition cclp.h:57
const char * ws_prefix_buf
Definition cclp.h:56