7 void yyerror(gpointer node, char const *s);
9 static const char *name;
14 %parse-param {gpointer root};
15 %token START END DATA FMT OUT
18 input : all | all input ;
20 all : data | code | print ;
24 data = g_list_prepend(data, g_strdup_printf(
26 "static char data%d[] = \"%s\";\n",
27 yylineno, name, i, g_strescape($1, "")));
28 code = g_list_prepend(code, g_strdup_printf(
30 "fwrite(data%d, sizeof(data%d)-1, 1, stdout);\n",
31 yylineno, name, i, i));
35 code : START DATA END {
36 code = g_list_prepend(code, g_strdup_printf("%s\n", $2));
39 print : START FMT DATA END {
40 code = g_list_prepend(code, g_strdup_printf("printf(%s);\n", $3));
43 print : START OUT DATA END {
44 code = g_list_prepend(code, g_strdup_printf("printf(\"%%s\", %s);\n", $3));
48 gpointer parse(FILE *input, const char *_name,
49 GList **_data, GList **_code)
58 void yyerror(gpointer root, char const *s)