/* ---- This file is part of SECONDO. Copyright (C) 2004, University in Hagen, Department of Computer Science, Database Systems for New Applications. SECONDO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. SECONDO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with SECONDO; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---- */ %{ /* 1 The Scannerfile */ #include "RegExParser.y.h" extern int cregexlex_destroy(); void lexDestroy(){ yy_delete_buffer(YY_CURRENT_BUFFER); cregexlex_destroy(); } %} %option prefix="cregex" %option noyywrap %x SET whitespace [ \n\r\t\a\b\f\t\v] stars "*"("*"|whitespace)* %% {whitespace} { ; } "\\\\" { cregexlval.numval = (int) '\\'; return CHAR; } "\\(" { cregexlval.numval = (int)'('; return CHAR; } "\\)" { cregexlval.numval = (int)')'; return CHAR;} "\\|" { cregexlval.numval = (int)'|'; return CHAR;} "\\*" { cregexlval.numval = (int)'*'; return CHAR;} "\\." { cregexlval.numval = (int)'.'; return CHAR;} "\\+" { cregexlval.numval = (int)'+'; return CHAR;} "\\?" { cregexlval.numval = (int)'?'; return CHAR;} "\\[" { cregexlval.numval = (int)'['; return CHAR;} "\\n" { cregexlval.numval = (int)'\n'; return CHAR;} "\\t" { cregexlval.numval = (int)'\t'; return CHAR;} "\\r" { cregexlval.numval = (int)'\r'; return CHAR;} "\\a" { cregexlval.numval = (int)'\a'; return CHAR;} "\\b" { cregexlval.numval = (int)'\b'; return CHAR;} "\\f" { cregexlval.numval = (int)'\f'; return CHAR;} "\\v" { cregexlval.numval = (int)'\v'; return CHAR;} "\\ " { cregexlval.numval = (int)' '; return CHAR;} "(" { return OPEN; } ")" { return CLOSE; } {stars} { return STARS; } "|" { return OR; } "+" { return PLUS; } "." { return ANY; } "?" { return OPTION; } "[" { BEGIN(SET); return OPENSET; } "[^" { BEGIN(SET); return OPENINVERSESET; } . { cregexlval.numval = (int)(unsigned char)yytext[0]; return CHAR; } "\\-" { cregexlval.numval = (int)'-'; return CHAR;} "-" { return TO; } "\\\\" { cregexlval.numval = (int)'\\'; return CHAR;} "\\]" { cregexlval.numval = (int)']'; return CHAR; } "]" { BEGIN(INITIAL); return CLOSESET; } "\\n" { cregexlval.numval = (int)'\n'; return CHAR;} "\\t" { cregexlval.numval = (int)'\t'; return CHAR;} "\\r" { cregexlval.numval = (int)'\r'; return CHAR;} "\\a" { cregexlval.numval = (int)'\a'; return CHAR;} "\\b" { cregexlval.numval = (int)'\b'; return CHAR;} "\\f" { cregexlval.numval = (int)'\f'; return CHAR;} "\\v" { cregexlval.numval = (int)'\v'; return CHAR;} . { cregexlval.numval = (int)(unsigned char)yytext[0]; return CHAR; } %%