diff options
Diffstat (limited to 'src/libicalss/icalsslexer.l')
-rw-r--r-- | src/libicalss/icalsslexer.l | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/src/libicalss/icalsslexer.l b/src/libicalss/icalsslexer.l new file mode 100644 index 0000000..a044051 --- /dev/null +++ b/src/libicalss/icalsslexer.l @@ -0,0 +1,134 @@ +%{ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalsslexer.l + CREATOR: eric 8 Aug 2000 + + DESCRIPTION: + + $Id: icalsslexer.l,v 1.10 2008-01-02 20:07:42 dothebart Exp $ + $Locker: $ + +(C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + ======================================================================*/ + +#include "icalssyacc.h" +#include "icalgaugeimpl.h" +#include "assert.h" + +#include <string.h> /* For strdup() */ + +const char* input_buffer; +const char* input_buffer_p; + +#define min(a,b) ((a) < (b) ? (a) : (b)) + +int icalss_input(char* buf, int max_size) +{ + int n = min(max_size,strlen(input_buffer_p)); + + if (n > 0){ + memcpy(buf, input_buffer_p, n); + input_buffer_p += n; + return n; + } else { + return 0; + } +} + +#undef YY_INPUT +#define YY_INPUT(b,r,ms) ( r= icalss_input(b,ms)) + +#undef SS_FATAL_ERROR +#define SS_FATAL_ERROR(msg) sserror(msg) + +%} + +crlf \x0D?\x0A +space [ ] +qsafechar [^\x00-\x1F\"] +safechar [^\x00-\x1F\"\:\;\,] +tsafechar [\x20-\x21\x23-\x2B\x2D-\x39\x3C-\x5B\x5D-\x7E] +valuechar [^\x00-\x08\x10-\x1F] +xname X-[a-zA-Z0-9\-]+ +xname2 [a-zA-Z0-9\-\ ] +paramtext {safechar}+ +value {valuechar}+ +quotedstring \"{qsafechar}+\" +digit [0-9] + +%array /* Make yytext an array. Slow, but handy. HACK */ + +%option caseless + +%s sql string_value + + + +%% + +%{ +%} + + +SELECT { return SELECT; } +FROM { return FROM; } +WHERE { return WHERE; } +, { return COMMA; } +"=" { return EQUALS; } +"==" { return EQUALS; } +"!=" { return NOTEQUALS; } +"<" { return LESS; } +">" { return GREATER; } +"<=" { return LESSEQUALS; } +">=" { return GREATEREQUALS; } +AND { return AND; } +OR { return OR; } +IS { return IS; } +NOT { return NOT; } +NULL { return SQLNULL; } +\' { return QUOTE; } +[ \t\n\r]+ ; +; { return EOL; } + +\'[\@\*A-Za-z0-9\-\.\:\ ]+\' { + int c = input(); + unput(c); + if(c!='\''){ + sslval.v_string= icalmemory_tmp_copy(yytext); + return STRING; + } else { + /*ssmore();*/ + } +} + +[\@\*A-Za-z0-9\-\.]+ { + sslval.v_string= icalmemory_tmp_copy(yytext); + return STRING; +} + + +. { return yytext[0]; } + +%% + +int yywrap() +{ + return 1; +} + |