Files
pcas/src/dbStatic/dbLex.l
1998-11-18 16:20:12 +00:00

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);
}
%%