// sattool - visual satellite tracking and prediction tool.
// Copyright 2000 Tom Rothamel <tom-idbg@onegeek.org>
//
// This program 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.
//
// This program 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 this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  

/* The main input file lexer. */

%{
#include "sattool.h"
#include "parser.h"
%}

%option noyywrap

CHAR [-0-9A-Za-z._]
DIGIT [-0-9.]


%x qstr

%%

sgp4sat { return SGP4SAT; }
earthsite { return EARTHSITE; }
pass { return PASS; }

inf { 
	yylval.d = HUGE_VAL; 
	return NUM;
}

-inf { 
	yylval.d = -HUGE_VAL; 
	return NUM;
}

{DIGIT}+ {
	yylval.d = atof(yytext);
	return NUM;
}

{CHAR}+ {
        yylval.s = strdup(yytext);
        return STR;
}

\" { BEGIN(qstr); }
<qstr>\\. { yymore(); }
<qstr>[^\"\\]+ { yymore(); }
<qstr>\" {
        BEGIN(INITIAL);
        yylval.s = strdup(yytext);
        yylval.s[yyleng-1] = 0;
        // DescapeString(yylval.str);
        return STR;
} 

[ \t\n,]+

. { return yytext[0]; }


%%

void lexer_scan_string(char *s) {
	yy_scan_string(s);
}
