]>
jfr.im git - irc/quakenet/newserv.git/blob - newsearch/parser.c
5 struct yy_buffer_state
;
7 struct yy_buffer_state
*yy_scan_string(const char *);
8 void yy_delete_buffer(struct yy_buffer_state
*);
9 void yy_flush_buffer(struct yy_buffer_state
*);
15 parseFunc
fnfinder(char *name
, void *arg
) {
16 searchCmd
*cmdtree
= arg
;
20 if (!(cmd
=findcommandintree(cmdtree
->searchtree
, name
, 1))) {
21 parseError
= "Unknown command (for valid command list, see help <searchcmd>)";
24 ret
= (parseFunc
)cmd
->handler
;
28 if (!controlpermitted(ret->level, ret->sender)) {
29 parseError = "Access denied (for valid command list, see help <searchcmd>)";
32 return ((parseFunc)cmd->handler)(ctx, j, argvector+1);
38 parsertree
*parse_string(searchCmd
*cmd
, const char *str
) {
40 struct yy_buffer_state
*b
;
43 b
= yy_scan_string(str
);
45 parseStrError
= "string buffer creation error";
49 resetparser(fnfinder
, cmd
, &pt
);
55 if(ret
) /* error occured, parseStrError has it */
58 parseStrError
= "BUG: you shouldn't ever see this";
62 void parse_free(parsertree
*pt
) {
64 expressionlist
*xl
, *nxl
;
66 for(sl
=pt
->strlist
;sl
;sl
=nsl
) {
68 freesstring(sl
->data
);
72 for(xl
=pt
->exprlist
;xl
;xl
=nxl
) {