-/*
- * Copyright (c) 1995, the EUROPAGATE consortium (see below).
- *
- * The EUROPAGATE consortium members are:
- *
- * University College Dublin
- * Danmarks Teknologiske Videnscenter
- * An Chomhairle Leabharlanna
- * Consejo Superior de Investigaciones Cientificas
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation, in whole or in part, for any purpose, is hereby granted,
- * provided that:
- *
- * 1. This copyright and permission notice appear in all copies of the
- * software and its documentation. Notices of copyright or attribution
- * which appear at the beginning of any file must remain unchanged.
- *
- * 2. The names of EUROPAGATE or the project partners may not be used to
- * endorse or promote products derived from this software without specific
- * prior written permission.
- *
- * 3. Users of this software (implementors and gateway operators) agree to
- * inform the EUROPAGATE consortium of their use of the software. This
- * information will be used to evaluate the EUROPAGATE project and the
- * software, and to plan further developments. The consortium may use
- * the information in later publications.
- *
- * 4. Users of this software agree to make their best efforts, when
- * documenting their use of the software, to acknowledge the EUROPAGATE
- * consortium, and the role played by the software in their work.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- * IN NO EVENT SHALL THE EUROPAGATE CONSORTIUM OR ITS MEMBERS BE LIABLE
- * FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF
- * ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
- * OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND
- * ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
- * USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* CCL shell.
- * Europagate 1995
- *
- * $Id: cclsh.c,v 1.5 2007-01-08 10:48:08 adam Exp $
- *
- * Old Europagate Log:
- *
- * Revision 1.11 1995/05/16 09:39:27 adam
- * LICENSE.
- *
- * Revision 1.10 1995/05/11 14:03:57 adam
- * Changes in the reading of qualifier(s). New function: ccl_qual_fitem.
- * New variable ccl_case_sensitive, which controls whether reserved
- * words and field names are case sensitive or not.
- *
- * Revision 1.9 1995/02/23 08:32:00 adam
- * Changed header.
- *
- * Revision 1.7 1995/02/15 17:42:16 adam
- * Minor changes of the api of this module. FILE* argument added
- * to ccl_pr_tree.
- *
- * Revision 1.6 1995/02/14 19:55:13 adam
- * Header files ccl.h/cclp.h are gone! They have been merged an
- * moved to ../include/ccl.h.
- * Node kind(s) in ccl_rpn_node have changed names.
- *
- * Revision 1.5 1995/02/14 16:20:57 adam
- * Qualifiers are read from a file now.
- *
- * Revision 1.4 1995/02/14 14:12:42 adam
- * Ranges for ordered qualfiers implemented (e.g. pd=1980-1990).
- *
- * Revision 1.3 1995/02/14 10:25:57 adam
- * The constructions 'qualifier rel term ...' implemented.
- *
- * Revision 1.2 1995/02/13 15:15:07 adam
- * Added handling of qualifiers. Not finished yet.
- *
- * Revision 1.1 1995/02/13 12:35:21 adam
- * First version of CCL. Qualifiers aren't handled yet.
+/* This file is part of the YAZ toolkit.
+ * Copyright (C) 1995-2009 Index Data
+ * See the file LICENSE for details.
*/
#include <stdio.h>
void usage(const char *prog)
{
- fprintf (stderr, "%s: [-d] [-b configfile] [-x xmlconfig]\n", prog);
- exit (1);
+ fprintf(stderr, "%s: [-d] [-b configfile] [-x xmlconfig]\n", prog);
+ exit(1);
}
-int main (int argc, char **argv)
+int main(int argc, char **argv)
{
CCL_bibset bibset;
FILE *bib_inf;
WRBUF q_wrbuf = 0;
prog = *argv;
- bibset = ccl_qual_mk ();
+ bibset = ccl_qual_mk();
while ((ret = options("db:x:", argv, argc, &arg)) != -2)
{
break;
case 'b':
bib_fname = arg;
- bib_inf = fopen (bib_fname, "r");
+ bib_inf = fopen(bib_fname, "r");
if (!bib_inf)
{
- fprintf (stderr, "%s: cannot open %s\n", prog,
+ fprintf(stderr, "%s: cannot open %s\n", prog,
bib_fname);
- exit (1);
+ exit(1);
}
- ccl_qual_file (bibset, bib_inf);
- fclose (bib_inf);
+ ccl_qual_file(bibset, bib_inf);
+ fclose(bib_inf);
break;
#if YAZ_HAVE_XML2
case 'x':
}
if (q_wrbuf)
{
- CCL_parser cclp = ccl_parser_create ();
- struct ccl_token *list;
+ CCL_parser cclp = ccl_parser_create(bibset);
int error;
struct ccl_rpn_node *rpn;
- cclp->bibset = bibset;
+ rpn = ccl_parser_find_str(cclp, wrbuf_cstr(q_wrbuf));
- list = ccl_parser_tokenize (cclp, wrbuf_cstr(q_wrbuf));
- rpn = ccl_parser_find (cclp, list);
-
- error = cclp->error_code;
+ error = ccl_parser_get_error(cclp, 0);
if (error)
{
- printf ("%s\n", ccl_err_msg (error));
+ printf("%s\n", ccl_err_msg(error));
}
else
{
if (rpn)
{
- ccl_pr_tree (rpn, stdout);
- printf ("\n");
+ ccl_pr_tree(rpn, stdout);
+ printf("\n");
}
}
- if (debug)
- {
- struct ccl_token *lp;
- for (lp = list; lp; lp = lp->next)
- printf ("%d %.*s\n", lp->kind, (int) (lp->len), lp->name);
- }
- ccl_token_del (list);
- ccl_parser_destroy (cclp);
+ ccl_parser_destroy(cclp);
if (rpn)
ccl_rpn_delete(rpn);
wrbuf_destroy(q_wrbuf);
while (1)
{
char buf[1000];
- int i, error, pos;
+ int i, error;
struct ccl_rpn_node *rpn;
#if HAVE_READLINE_READLINE_H
break;
}
strcpy(buf,line_in);
- free (line_in);
+ free(line_in);
#else
- printf ("CCLSH>"); fflush (stdout);
- if (!fgets (buf, 999, stdin))
+ printf("CCLSH>"); fflush(stdout);
+ if (!fgets(buf, 999, stdin))
break;
#endif
for (i = 0; i<1; i++)
{
- CCL_parser cclp = ccl_parser_create ();
- struct ccl_token *list;
-
- cclp->bibset = bibset;
+ CCL_parser cclp = ccl_parser_create(bibset);
+ int pos;
- list = ccl_parser_tokenize (cclp, buf);
- rpn = ccl_parser_find (cclp, list);
+ rpn = ccl_parser_find_str(cclp, buf);
- error = cclp->error_code;
- if (error)
- pos = cclp->error_pos - buf;
+ error = ccl_parser_get_error(cclp, &pos);
if (error)
{
- printf ("%*s^ - ", 6+pos, " ");
- printf ("%s\n", ccl_err_msg (error));
+ printf("%*s^ - ", 6+pos, " ");
+ printf("%s\n", ccl_err_msg(error));
}
else
{
if (rpn && i == 0)
{
- ccl_pr_tree (rpn, stdout);
- printf ("\n");
+ ccl_stop_words_t csw = ccl_stop_words_create();
+ int idx = 0;
+ printf("First:\n");
+ ccl_pr_tree(rpn, stdout);
+ if (ccl_stop_words_tree(csw, bibset, &rpn))
+ {
+ printf("Second:\n");
+ ccl_pr_tree(rpn, stdout);
+ printf("\n");
+
+ for (idx = 0; ; idx++)
+ {
+ const char *qname;
+ const char *term;
+ if (!ccl_stop_words_info(csw, idx,
+ &qname, &term))
+ break;
+ printf("Removed from %s: %s\n",
+ qname ? qname : "none", term);
+ }
+ }
+ ccl_stop_words_destroy(csw);
}
}
- if (debug)
- {
- struct ccl_token *lp;
- for (lp = list; lp; lp = lp->next)
- printf ("%d %.*s\n", lp->kind, (int) (lp->len), lp->name);
- }
- ccl_token_del (list);
- ccl_parser_destroy (cclp);
+ ccl_parser_destroy(cclp);
if (rpn)
ccl_rpn_delete(rpn);
}
}
- printf ("\n");
+ printf("\n");
+ ccl_qual_rm(&bibset);
return 0;
}
/*
* Local variables:
* c-basic-offset: 4
+ * c-file-style: "Stroustrup"
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab