7 void yyerror(gpointer node, char const *s);
8 static GList *code = NULL;
9 static GList *data = NULL;
12 %parse-param {gpointer root};
13 %token START END DATA OUT
16 input : all | all input ;
18 all : data | code | print ;
22 data = g_list_prepend(data, g_strdup_printf(
23 "static char data%d[] = \"%s\";\n",
24 i, g_strescape($1, "")));
25 code = g_list_prepend(code, g_strdup_printf(
26 "fwrite(data%d, sizeof(data%d)-1, 1, stdout);\n",
31 code : START DATA END {
32 code = g_list_prepend(code, g_strdup_printf("%s\n", $2));
35 print : START OUT DATA END {
36 code = g_list_prepend(code, g_strdup_printf("printf(%s);\n", $3));
40 gpointer parse(FILE *input, GList **_data, GList **_code) {
47 void yyerror(gpointer root, char const *s) {