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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
%{
/*
$Revision
*/
#include "lex.h"
struct klist {
char *keyword;
enum keyword keyvalue;
} klist[] = {
"exec", K_EXEC,
"maxexec", K_MAXEXEC,
"vmaxexec", K_VMAXEXEC,
"pfactor", K_PFACTOR,
"maxqueue", K_MAXQUEUE,
"supervisor", K_SUPERVISOR,
"mail", K_MAIL,
"host", K_HOST,
"mailsupervisor", K_MAILSUPERVISOR,
"console", K_CONSOLE,
"nice", K_NICE,
"restart", K_RESTART,
"timestop", K_TIMESTOP,
"timesched", K_TIMESCHED,
"day", K_DAY,
"off", K_OFF,
"drain", K_DRAIN,
"on", K_ON,
"loadstop", K_LOADSTOP,
"loadsched", K_LOADSCHED,
"loadcheckpoint", K_LOADCHECKPOINT,
"checkpointmode", K_CHECKPOINTMODE,
"restartmode", K_RESTARTMODE,
"restartflag", K_RESTARTFLAG,
"minfree", K_MINFREE,
"program", K_PROGRAM,
"cpulimit", K_RLIMITCPU, /* historic synonym for rlimitcpu */
"rlimitcpu", K_RLIMITCPU,
"rlimitfsize", K_RLIMITFSIZE,
"rlimitdata", K_RLIMITDATA,
"rlimitstack", K_RLIMITSTACK,
"rlimitcore", K_RLIMITCORE,
"rlimitrss", K_RLIMITRSS,
"rlimitnofile", K_RLIMITNOFILE,
"rlimitvmem", K_RLIMITVMEM,
"rlimitas", K_RLIMITVMEM, /*synonym for vmem*/
0
};
%}
%option yylineno
%%
-?[0-9]+ return (int)K_NUMBER;
[/0-9a-zA-Z_.,-]+ {
register struct klist *kp;
for(kp = klist ; kp->keyword ; kp++)
if(strcmp(kp->keyword, yytext) == 0)
return (int)kp->keyvalue;
return (int)K_VARIABLE;
}
\n return (int)K_LINE;
[ \t] ;
^#.*$ ; /* comment */
. return (int)K_SYNTAX;
%%
lexfile(f)
FILE *f;
{
yyrestart(f);
#if 0
extern struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
extern int *yyfnd, yyprevious;
yylineno = 1;
bzero(yytext, YYLMAX*sizeof yytext[0]);
bzero(yylstate, sizeof yylstate);
yylsp = yyolsp = 0;
bzero(yysbuf, YYLMAX*sizeof yysbuf[0]);
yysptr = yysbuf;
yyfnd = 0;
yyprevious = YYNEWLINE;
yyleng = 0;
yymorfg = 0;
yytchar = 0;
yyin = f;
yyestate = 0;
#endif
}
yywrap()
{
return 1;
}
|