%{ /* $Id: cscp_cmd.l,v 1.1.1.1 2005/08/12 16:41:17 dodell Exp $ */ /* Copyright 2001 Sun Microsystems, Inc. All rights reserved. */ #include #include #include int cmd_myinput(char *buf, int max_size); #define YY_INPUT(buf,result,max_size) \ { result = cmd_myinput(buf,max_size); } %} %option never-interactive %option prefix="cscp_cmd" WS ([ \t\n\r]) EOW (({WS}+)|({WS}*$)) A ([aA]) B ([bB]) C ([cC]) D ([dD]) E ([eE]) F ([fF]) G ([gG]) H ([hH]) I ([iI]) J ([jJ]) K ([kK]) L ([lL]) M ([mM]) N ([nN]) O ([oO]) P ([pP]) Q ([qQ]) R ([rR]) S ([sS]) T ([tT]) U ([uU]) V ([vV]) W ([wW]) X ([xX]) Y ([yY]) Z ([zZ]) %x PARAM %% {A}{D}{M}{I}{N}{EOW} {BEGIN(PARAM);return TOK_ADMIN;} {A}{U}{T}{H}{EOW} {BEGIN(PARAM);return TOK_AUTH;} {A}{U}{T}{H}{K}{E}{Y}{EOW} {BEGIN(PARAM);return TOK_AUTHKEY;} {B}{A}{D}{D}{A}{T}{A}{EOW} {BEGIN(PARAM);return TOK_BADDATA;} {B}{E}{G}{I}{N}{EOW} {BEGIN(PARAM);return TOK_BEGIN;} {B}{Y}{E}{EOW} {BEGIN(PARAM);return TOK_BYE;} {C}{O}{M}{M}{I}{T}{EOW} {BEGIN(PARAM);return TOK_COMMIT;} {C}{L}{A}{S}{S}{E}{S}{EOW} {BEGIN(PARAM);return TOK_CLASSES;} {C}{R}{E}{A}{T}{E}{EOW} {BEGIN(PARAM);return TOK_CREATE;} {D}{E}{S}{T}{R}{O}{Y}{EOW} {BEGIN(PARAM);return TOK_DESTROY;} {E}{N}{D}{K}{E}{Y}{EOW} {BEGIN(PARAM);return TOK_ENDKEY;} {F}{I}{N}{D}{EOW} {BEGIN(PARAM);return TOK_FIND;} {G}{E}{T}{EOW} {BEGIN(PARAM);return TOK_GET;} {H}{E}{L}{P}{EOW} {BEGIN(PARAM);return TOK_HELP;} {I}{N}{F}{O}{EOW} {BEGIN(PARAM);return TOK_INFO;} {N}{A}{M}{E}{S}{EOW} {BEGIN(PARAM);return TOK_NAMES;} {S}{E}{T}{EOW} {BEGIN(PARAM);return TOK_SET;} {W}{A}{R}{N}{EOW} {BEGIN(PARAM);return TOK_WARN;} {W}{H}{O}{A}{M}{I}{EOW} {BEGIN(PARAM);return TOK_WHOAMI;} {WS}+ {} <> {return TOK_EOF;} . {BEGIN(PARAM);return TOK_ERROR;} [ \n\t\r,]+ {} \"([^\\\"]|(\\.))*\" {return TOK_QUOTEDSTR;} \#[0-9]+\#[A-Za-z0-9+/=]+ {return TOK_BINSTR;} [A-Za-z0-9+_]+ {return TOK_ALPHANUM;} ={1,2} {return TOK_EQUALS;} ~ {return TOK_REGEQUALS;} \( {return TOK_OPENPAREN;} \) {return TOK_CLOSEPAREN;} \/ {return TOK_SLASH;} \. {return TOK_PERIOD;} . {return TOK_ERROR;} %% /* These are global "dummy variables" used to indicate special tokens via g_pointer */ char *cmd_inputptr; int cmd_myinput(char *buf, int max_size) { int i = 0; while (i < max_size) { if (*cmd_inputptr == '\0') break; *buf++ = *cmd_inputptr++; i++; } return i; } void cscp_cmd_setbuffer( char *buf ) { cmd_inputptr = buf; cscp_cmdrestart(NULL); BEGIN(INITIAL); } int yywrap() { return 1; } void cscp_lexer_free() { cscp_cmd_delete_buffer(YY_CURRENT_BUFFER); }