80 lines
1.7 KiB
Plaintext
80 lines
1.7 KiB
Plaintext
name [a-zA-Z0-9_\-:\.\[\]<>;]
|
|
notquote [^\"]
|
|
escapequote \\\"
|
|
string {notquote}|{escapequote}
|
|
|
|
|
|
%{
|
|
#undef YY_INPUT
|
|
#define YY_INPUT(b,r,ms) (r=(*db_yyinput)(b,ms))
|
|
|
|
static int yyreset(void)
|
|
{
|
|
BEGIN INITIAL;
|
|
return(0);
|
|
}
|
|
|
|
%}
|
|
|
|
%%
|
|
|
|
"include" {return(tokenINCLUDE);}
|
|
"path" {return(tokenPATH);}
|
|
"addpath" {return(tokenADDPATH);}
|
|
"menu" {return(tokenMENU);}
|
|
"choice" {return(tokenCHOICE);}
|
|
"recordtype" {return(tokenRECORDTYPE);}
|
|
"field" {return(tokenFIELD);}
|
|
"device" {return(tokenDEVICE);}
|
|
"driver" {return(tokenDRIVER);}
|
|
"breaktable" {return(tokenBREAKTABLE);}
|
|
"record" {return(tokenRECORD);}
|
|
"grecord" {return(tokenGRECORD);}
|
|
|
|
[0-9]+ { /*integer number*/
|
|
yylval.Str = (char *)dbmfMalloc(strlen(yytext)+1);
|
|
strcpy(yylval.Str,yytext);
|
|
return(tokenSTRING);
|
|
}
|
|
|
|
-?(([0-9]+)|([0-9]*\.[0-9]+)([eE][-+]?[0-9]+)?) { /*real number*/
|
|
yylval.Str = (char *)dbmfMalloc(strlen(yytext)+1);
|
|
strcpy(yylval.Str,yytext);
|
|
return(tokenSTRING);
|
|
}
|
|
|
|
|
|
{name}+ { /*unquoted string*/
|
|
yylval.Str = (char *)dbmfMalloc(strlen(yytext)+1);
|
|
strcpy(yylval.Str,yytext);
|
|
return(tokenSTRING);
|
|
}
|
|
|
|
\"{string}*\" { /*quoted string*/
|
|
yylval.Str = (char *)dbmfMalloc(strlen(yytext)+1);
|
|
strcpy(yylval.Str,yytext+1);
|
|
yylval.Str[strlen(yylval.Str)-1] = '\0';
|
|
return(tokenSTRING);
|
|
}
|
|
|
|
"{" { return(yytext[0]); }
|
|
"}" { return(yytext[0]); }
|
|
"(" { return(yytext[0]); }
|
|
")" { return(yytext[0]); }
|
|
"," { return(yytext[0]); }
|
|
#.* { ;}
|
|
[ \t\r] ;
|
|
\n { ;}
|
|
. {
|
|
char message[20];
|
|
YY_BUFFER_STATE *dummy=0;
|
|
|
|
sprintf(message,"invalid character '%c'",yytext[0]);
|
|
yyerror(message);
|
|
/*The following suppresses compiler warning messages*/
|
|
if(FALSE) yyunput('c',message);
|
|
if(FALSE) yy_switch_to_buffer(*dummy);
|
|
}
|
|
|
|
%%
|