summaryrefslogtreecommitdiff
path: root/src/pmlogextract/lex.l
blob: c0de4c7fa1e997e4739c9cd63cc43386fb50687d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*
 * Copyright (c) 1997-2000 Silicon Graphics, Inc.  All Rights Reserved.
 * 
 * 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.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 */


%{
/*
 *  pmlogextract configfile lexer
 */
#include "pmapi.h"
#include "impl.h"
#include "logger.h"

int lineno = 1;

#include "gram.tab.h"

%}

%option noinput
%option nounput

%{
#ifdef FLEX_SCANNER
#ifndef YY_NO_UNPUT
#define YY_NO_UNPUT
#endif
#else
#undef input
#define input() ((yytchar=fgetc(yyin)) == EOF ? 0 : yytchar)
#undef unput
#define unput(c) {yytchar=(c); ungetc(yytchar, yyin);}
#endif
%}

%%
"["			{ return LSQB; }
"]"			{ return RSQB; }
","			{ return COMMA; }

[A-Za-z][A-Za-z0-9_.]*	{ yylval.str = yytext; return NAME; }

\"[^\"\n][^\"\n]*\"	{ yylval.str = yytext; return STRING; }

[0-9]+			{ yylval.lval = atol(yytext); return NUMBER; }

\#.*			{ }

[ \t\r]+		{ }

\n			{ lineno++; }
.			{ 
			    sprintf(emess, "Unexpected character '%c'",
				yytext[0]);
			    yyerror(emess);
			}
%%

int
yywrap(void)
{
    return(1);
}