%option noyywrap %option nounput %{ /* lib/calib_lex.l code for parsing calibration file, generated by flex Copyright (C) 2003 Frank Mori Hess #include "libinternal.h" #include "calib_yacc.h" %} %x COMMENT %x STRING %% %{ calib_llocp->first_line = 1; %} \n { calib_llocp->first_line++; } "#" { BEGIN(COMMENT); } \n { calib_llocp->first_line++; BEGIN(INITIAL); } . \" { BEGIN(STRING); } [^\"]*\" { if( strlen( calib_yytext ) > 0 ) calib_yytext[ strlen( calib_yytext ) - 1 ] = 0; calib_lvalp->sval = calib_yytext; BEGIN(INITIAL); return ( T_STRING ); } driver_name { return ( T_DRIVER_NAME ); } board_name { return ( T_BOARD_NAME ); } calibrations { return ( T_CALIBRATIONS ); } subdevice { return ( T_SUBDEVICE); } channels { return (T_CHANNELS); } ranges { return ( T_RANGES ); } arefs { return ( T_AREFS ); } caldacs { return ( T_CALDACS ); } channel { return ( T_CHANNEL ); } value { return ( T_VALUE ); } => { return ( T_ASSIGN ); }; (0[xX])?(00)?[0-9a-fA-F]+ { calib_lvalp->ival = strtol( calib_yytext, NULL, 0 ); return( T_NUMBER ); } [ \t] . { return( calib_yytext[0] ); } %%