X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fccltoken.c;h=758447308cb28145265c9ef437725a71555c9a9b;hb=5c3d2d2ab097e4bb59ba5718a396b020a2d302c0;hp=70bc47dd4165486a40e3eb88a23d9a72f7f9e6b4;hpb=c6e47cbbff56f39f6d81b079ebaeac41d793d4d9;p=yaz-moved-to-github.git diff --git a/src/ccltoken.c b/src/ccltoken.c index 70bc47d..7584473 100644 --- a/src/ccltoken.c +++ b/src/ccltoken.c @@ -41,10 +41,14 @@ * USE OR PERFORMANCE OF THIS SOFTWARE. * */ +/** + * \file ccltoken.c + * \brief Implements CCL lexical analyzer (scanner) + */ /* CCL - lexical analysis * Europagate, 1995 * - * $Id: ccltoken.c,v 1.1 2003-10-27 12:21:30 adam Exp $ + * $Id: ccltoken.c,v 1.5 2004-10-15 00:19:00 adam Exp $ * * Old Europagate Log: * @@ -201,7 +205,7 @@ struct ccl_token *ccl_token_simple (const char *command) struct ccl_token *ccl_parser_tokenize (CCL_parser cclp, const char *command) { const char *aliases; - const char *cp = command; + const unsigned char *cp = (const unsigned char *) command; struct ccl_token *first = NULL; struct ccl_token *last = NULL; @@ -226,7 +230,7 @@ struct ccl_token *ccl_parser_tokenize (CCL_parser cclp, const char *command) last = last->next; } last->next = NULL; - last->name = cp; + last->name = (const char *) cp; last->len = 1; switch (*cp++) { @@ -267,7 +271,7 @@ struct ccl_token *ccl_parser_tokenize (CCL_parser cclp, const char *command) break; case '\"': last->kind = CCL_TOK_TERM; - last->name = cp; + last->name = (const char *) cp; last->len = 0; while (*cp && *cp != '\"') { @@ -317,6 +321,22 @@ struct ccl_token *ccl_parser_tokenize (CCL_parser cclp, const char *command) return first; } +struct ccl_token *ccl_token_add (struct ccl_token *at) +{ + struct ccl_token *n = (struct ccl_token *)xmalloc (sizeof(*n)); + ccl_assert(n); + n->next = at->next; + n->prev = at; + at->next = n; + if (n->next) + n->next->prev = n; + + n->kind = CCL_TOK_TERM; + n->name = 0; + n->len = 0; + return n; +} + struct ccl_token *ccl_tokenize (const char *command) { CCL_parser cclp = ccl_parser_create ();