#!/usr/local/bin/perl $NUMBER=0x01; $UPPER=0x02; $LOWER=0x04; $EOF=0x08; $WS=0x10; $ESC=0x20; $QUOTE=0x40; $COMMENT=0x80; $UNDER=0x100; foreach (0 .. 127) { $v=0; $c=sprintf("%c",$_); $v|=$NUMBER if ($c =~ /[0-9]/); $v|=$UPPER if ($c =~ /[A-Z]/); $v|=$LOWER if ($c =~ /[a-z]/); $v|=$UNDER if ($c =~ /_/); $v|=$WS if ($c =~ / \t\r\n/); $v|=$ESC if ($c =~ /\\/); $v|=$QUOTE if ($c =~ /['`"]/); $v|=$COMMENT if ($c =~ /\#/); $v|=$EOF if ($c =~ /\0/); push(@V,$v); } print <<"EOF"; #define CONF_NUMBER $NUMBER #define CONF_UPPER $UPPER #define CONF_LOWER $LOWER #define CONF_EOF $EOF #define CONF_WS $WS #define CONF_ESC $ESC #define CONF_QUOTE $QUOTE #define CONF_COMMENT $COMMENT #define CONF_ALPHA (CONF_UPPER|CONF_LOWER) #define CONF_ALPHA_NUMERIC (CONF_ALPHA|CONF_NUMBER|CONF_UNDER) #define CONF_UNDER $UNDER #define IS_COMMENT(a) (CONF_COMMENT&(CONF_type[(a)&0x7f])) #define IS_EOF(a) ((a) == '\\0') #define IS_ESC(a) ((a) == '\\\\') #define IS_NUMER(a) (CONF_type[(a)&0x7f]&CONF_NUMBER) #define IS_WS(a) (CONF_type[(a)&0x7f]&CONF_WS) #define IS_ALPHA_NUMERIC(a) (CONF_type[(a)&0x7f]&CONF_ALPHA_NUMERIC) #define IS_QUOTE(a) (CONF_type[(a)&0x7f]&CONF_QUOTE) EOF print "static unsigned short CONF_type[128]={"; for ($i=0; $i<128; $i++) { print "\n\t" if ($i % 8) == 0; printf "0x%03X,",$V[$i]; } print "\n\t};\n";