8 void yyerror(gpointer node, char const *s);
9 static const char *name = NULL;
10 static GList *code = NULL;
11 static GList *data = NULL;
14 %parse-param {gpointer root};
15 %token START END DATA OUT FMT
18 input : all | all input ;
20 all : data | code | out | fmt ;
24 data = g_list_prepend(data, g_strdup_printf(
25 "static char data%d[] = \"%s\";\n",
26 i, g_strescape($1, "")));
27 code = g_list_prepend(code, g_strdup_printf(
28 "fwrite(data%d, sizeof(data%d)-1, 1, stdout);\n",
33 code : START DATA END {
34 code = g_list_prepend(code, g_strdup_printf("#line %d \"%s\"\n", yylineno, name));
35 code = g_list_prepend(code, g_strdup_printf("%s\n", $2));
38 out : START OUT DATA END {
39 code = g_list_prepend(code, g_strdup_printf("printf(\"%%s\", %s);\n", $3));
42 fmt : START FMT DATA END {
43 code = g_list_prepend(code, g_strdup_printf("printf(%s);\n", $3));
47 gpointer parse(const char *_name, FILE *_input,
48 GList **_data, GList **_code)
57 void yyerror(gpointer root, char const *s)