diff options
author | Michal Krol <[email protected]> | 2005-05-25 14:58:22 +0000 |
---|---|---|
committer | Michal Krol <[email protected]> | 2005-05-25 14:58:22 +0000 |
commit | d1834e8c107bc3242a3f95e096fca408103bcba8 (patch) | |
tree | bb658626adfaa2ff3124162187d1147f67ca352f /src/mesa/shader/slang/library | |
parent | 0432411837d206d8c69973d24bbb6d7d99e9fbe9 (diff) |
a small utility to convert .syn files to its binary forms;
does not require any command line params;
Diffstat (limited to 'src/mesa/shader/slang/library')
-rwxr-xr-x | src/mesa/shader/slang/library/gc_to_bin.c | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/mesa/shader/slang/library/gc_to_bin.c b/src/mesa/shader/slang/library/gc_to_bin.c new file mode 100755 index 00000000000..4bd2114427d --- /dev/null +++ b/src/mesa/shader/slang/library/gc_to_bin.c @@ -0,0 +1,79 @@ +#include "../../grammar/grammar_crt.h"
+#include "../../grammar/grammar_crt.c"
+#include <stdio.h>
+
+static const char *slang_shader_syn =
+#include "slang_shader_syn.h"
+;
+
+static void gc_to_bin (grammar id, const char *in, const char *out)
+{
+ FILE *f;
+ byte *source, *prod;
+ unsigned int size, i, line = 0;
+
+ f = fopen (in, "r");
+ if (f == NULL)
+ return;
+ fseek (f, 0, SEEK_END);
+ size = ftell (f);
+ fseek (f, 0, SEEK_SET);
+ source = (byte *) grammar_alloc_malloc (size + 1);
+ source[fread (source, 1, size, f)] = '\0';
+ fclose (f);
+
+ if (!grammar_fast_check (id, source, &prod, &size, 65536))
+ {
+ grammar_alloc_free (source);
+ return;
+ }
+
+ f = fopen (out, "w");
+ for (i = 0; i < size; i++)
+ {
+ unsigned int a;
+ if (prod[i] < 10)
+ a = 1;
+ else if (prod[i] < 100)
+ a = 2;
+ else
+ a = 3;
+ if (i < size - 1)
+ a++;
+ if (line + a > 100)
+ {
+ fprintf (f, "\n");
+ line = 0;
+ }
+ line += a;
+ fprintf (f, "%d", prod[i]);
+ if (i < size - 1)
+ fprintf (f, ",");
+ }
+ fclose (f);
+ grammar_alloc_free (prod);
+}
+
+int main ()
+{
+ grammar id;
+
+ id = grammar_load_from_text ((const byte *) slang_shader_syn);
+ if (id == 0)
+ return 1;
+
+ grammar_set_reg8 (id, (const byte *) "parsing_builtin", 1);
+
+ grammar_set_reg8 (id, (const byte *) "shader_type", 1);
+ gc_to_bin (id, "slang_core.gc", "slang_core_gc_bin.h");
+ gc_to_bin (id, "slang_common_builtin.gc", "slang_common_builtin_gc_bin.h");
+ gc_to_bin (id, "slang_fragment_builtin.gc", "slang_fragment_builtin_gc_bin.h");
+
+ grammar_set_reg8 (id, (const byte *) "shader_type", 2);
+ gc_to_bin (id, "slang_vertex_builtin.gc", "slang_vertex_builtin_gc_bin.h");
+
+ grammar_destroy (id);
+
+ return 0;
+}
+
|