11
void add_argument(const char*);
12
int gpparser_execute_command(const char*,GList*);
13
extern void gpparser_reinit_parser(void);
18
%token WORD INT_NUMBER COMMAND_SEPERATOR
24
| statement statements
28
command arguments COMMAND_SEPERATOR
29
{ gpparser_execute_command(command,args); gpparser_reinit_parser(); }
31
{ gpparser_execute_command(command,args); gpparser_reinit_parser(); }
36
{ if(debug)printf("parse: command\n"); strncpy(command,yytext,1024); }
38
{ if(debug)printf("parse: command\n"); strncpy(command,"help",1024); }
39
| { command[0] = '\0'; }
44
| argument ',' arguments
50
{ if(debug)printf("parse: word\n"); add_argument(yytext); }
52
{ if(debug)printf("parse: number\n"); add_argument(yytext); }
59
printf("parser error: %s\n",s);
62
void init_parser(void)
64
args = g_list_alloc();
67
void arg_reaper(gpointer data, gpointer nothing)
72
void cleanup_parser(void)
74
g_list_foreach(args,arg_reaper,NULL);
78
void add_argument(const char*arg)
80
char *s = g_strdup(arg);
81
g_list_append(args,s);