/****************************************************************************
 * This file was derived from the CNCL library by the Pablo research group.
 *
 * The complete CNCL library is available at:
 *       http://www.comnets.rwth-aachen.de/doc/cncl.html
 *
 * The CNCL copyright notice is included here:
 *
 * |_|_|_  |_|_    |_    |_|_|_  |_               C O M M U N I C A T I O N
 *|_       |_  |_  |_  |_        |_                         N E T W O R K S
 *|_       |_  |_  |_  |_        |_                               C L A S S
 * |_|_|_  |_    |_|_    |_|_|_  |_|_|_|_                     L I B R A R Y
 *
 *
 *
 * Copyright (C) 1992-1998   Communication Networks
 *                           Aachen University of Technology
 *                           D-52056 Aachen
 *                           Germany
 *                           Email: cncl-adm@comnets.rwth-aachen.de
 *
 *
 * This library is free  software; you can  redistribute it and/or modify
 * it  under   the terms  of the GNU   Library  General Public License as
 * published by the  Free Software Foundation;  either  version 2 of  the
 * License, or  (at  your option)  any  later  version.  This  library 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 Library General Public
 * Library General Public License along with  this library; if not, write
 * to the Free Software Foundation,  675  Mass Ave, Cambridge, MA  02139,
 * USA.
 ****************************************************************************/

/* -*-text-*-
 *
 * Fuzzy Rules Compiler
 *
 * $Id: fuzzylex.l,v 1.2 1999/07/01 13:32:52 aydt Exp $
 *
 * fuzzylex.l - fuzzy rules lexical scanner (GNU flex)
 */

/* C definitions */
%{
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include "fuzzyparse.h"


int lexline = 1;
%}

NUMERIC ([0-9])
ALPHA   ([A-Za-z_])
ALNUM   ({ALPHA}|{NUMERIC})

/* Patterns */
%%
"rulebase"	return(Krulebase);
"set"		return(Kset);
"trapez"	return(Ktrapez);
"triangle"	return(Ktriangle);
"var"		return(Kvar);
"if"		return(Kif);
"and"		return(Kand);
"&&"		return(Kand);
"is"		return(Kis);
"="		return(Kis);
"=="		return(Kis);
"certainty"	return(Kcertainty);

{ALPHA}{ALNUM}*	{
			yylval.id = yytext;
			return(Identifier);
		}

-?{NUMERIC}+(\.{NUMERIC}*)? |
-?\.{NUMERIC}+	{
			yylval.num = strtod(yytext, NULL);
			return(Number);
		}

[ \t]+		;

\/\/.*		;

\n		lexline++;

.		return(yytext[0]);

%%

/* user code */
