Add syntax files for expression and directive preprocessor.
authorMichal Krol <mjkrol@gmail.org>
Tue, 26 Sep 2006 11:43:30 +0000 (11:43 +0000)
committerMichal Krol <mjkrol@gmail.org>
Tue, 26 Sep 2006 11:43:30 +0000 (11:43 +0000)
Fix syntax errors in builtin library 1.2 sources.
All derivative files (*_gc.h and *_syn.h) are generated by Makefile.

src/mesa/shader/slang/library/Makefile [new file with mode: 0644]
src/mesa/shader/slang/library/gc_to_bin.c
src/mesa/shader/slang/library/slang_builtin_120_common.gc
src/mesa/shader/slang/library/slang_pp_directives.syn [new file with mode: 0755]
src/mesa/shader/slang/library/slang_pp_directives_syn.h [new file with mode: 0644]
src/mesa/shader/slang/library/slang_pp_expression.syn [new file with mode: 0755]
src/mesa/shader/slang/library/slang_pp_expression_syn.h [new file with mode: 0644]
src/mesa/shader/slang/library/slang_pp_version.syn
src/mesa/shader/slang/library/slang_shader_syn.h

diff --git a/src/mesa/shader/slang/library/Makefile b/src/mesa/shader/slang/library/Makefile
new file mode 100644 (file)
index 0000000..92a313d
--- /dev/null
@@ -0,0 +1,85 @@
+# src/mesa/shader/slang/library/Makefile
+
+TOP = ../../../../..
+
+include $(TOP)/configs/current
+
+INCDIR = $(TOP)/include
+
+LIB_DEP = $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
+
+#
+# targets
+#
+
+.PHONY: default clean
+
+default: syntax builtin
+
+clean:
+       rm -f syn_to_c gc_to_bin *_syn.h *_gc.h
+
+syntax: slang_pp_directives_syn.h slang_pp_expression_syn.h slang_shader_syn.h slang_pp_version_syn.h
+
+builtin: builtin_110 builtin_120 builtin_vec4
+
+#
+# executables
+#
+
+syn_to_c: syn_to_c.c
+       $(CC) syn_to_c.c -o syn_to_c
+       
+gc_to_bin: gc_to_bin.c slang_shader_syn.h
+       $(CC) gc_to_bin.c -o gc_to_bin
+
+#
+# syntax scripts
+#
+
+slang_pp_directives_syn.h: syn_to_c slang_pp_directives.syn
+       ./syn_to_c slang_pp_directives.syn > slang_pp_directives_syn.h
+
+slang_pp_expression_syn.h: syn_to_c slang_pp_expression.syn
+       ./syn_to_c slang_pp_expression.syn > slang_pp_expression_syn.h
+
+slang_shader_syn.h: syn_to_c slang_shader.syn
+       ./syn_to_c slang_shader.syn > slang_shader_syn.h
+
+slang_pp_version_syn.h: syn_to_c slang_pp_version.syn
+       ./syn_to_c slang_pp_version.syn > slang_pp_version_syn.h
+
+#
+# builtin library sources
+#
+
+builtin_110: slang_common_builtin_gc.h slang_core_gc.h slang_fragment_builtin_gc.h slang_vertex_builtin_gc.h
+
+builtin_120: slang_120_core_gc.h slang_builtin_120_common_gc.h slang_builtin_120_fragment_gc.h
+
+builtin_vec4: slang_builtin_vec4_gc.h
+
+slang_120_core_gc.h: gc_to_bin slang_120_core.gc
+       ./gc_to_bin 1 slang_120_core.gc slang_120_core_gc.h
+
+slang_builtin_120_common_gc.h: gc_to_bin slang_builtin_120_common.gc
+       ./gc_to_bin 1 slang_builtin_120_common.gc slang_builtin_120_common_gc.h
+
+slang_builtin_120_fragment_gc.h: gc_to_bin slang_builtin_120_fragment.gc
+       ./gc_to_bin 1 slang_builtin_120_fragment.gc slang_builtin_120_fragment_gc.h
+
+slang_builtin_vec4_gc.h: gc_to_bin slang_builtin_vec4.gc
+       ./gc_to_bin 1 slang_builtin_vec4.gc slang_builtin_vec4_gc.h
+
+slang_common_builtin_gc.h: gc_to_bin slang_common_builtin.gc
+       ./gc_to_bin 1 slang_common_builtin.gc slang_common_builtin_gc.h
+
+slang_core_gc.h: gc_to_bin slang_core.gc
+       ./gc_to_bin 1 slang_core.gc slang_core_gc.h
+
+slang_fragment_builtin_gc.h: gc_to_bin slang_fragment_builtin.gc
+       ./gc_to_bin 1 slang_fragment_builtin.gc slang_fragment_builtin_gc.h
+
+slang_vertex_builtin_gc.h: gc_to_bin slang_vertex_builtin.gc
+       ./gc_to_bin 2 slang_vertex_builtin.gc slang_vertex_builtin_gc.h
+
index 69895d84bfd8e6cb38596702dcdebaf842eb17a1..ce9a6541acc630a210813bc499e57d18965b6325 100755 (executable)
@@ -1,12 +1,13 @@
 #include "../../grammar/grammar_crt.h"
 #include "../../grammar/grammar_crt.c"
+#include <stdlib.h>
 #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)
+static int gc_to_bin (grammar id, const char *in, const char *out)
 {
        FILE *f;
        byte *source, *prod;
@@ -16,7 +17,7 @@ static void gc_to_bin (grammar id, const char *in, const char *out)
 
        f = fopen (in, "r");
        if (f == NULL)
-               return;
+               return 1;
        fseek (f, 0, SEEK_END);
        size = ftell (f);
        fseek (f, 0, SEEK_SET);
@@ -27,7 +28,7 @@ static void gc_to_bin (grammar id, const char *in, const char *out)
        if (!grammar_fast_check (id, source, &prod, &size, 65536))
        {
                grammar_alloc_free (source);
-               return;
+               return 1;
        }
 
        f = fopen (out, "w");
@@ -59,29 +60,23 @@ static void gc_to_bin (grammar id, const char *in, const char *out)
        fprintf (f, "\n");
        fclose (f);
        grammar_alloc_free (prod);
+   return 0;
 }
 
-int main ()
+int main (int argc, char *argv[])
 {
-       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.h");
-       gc_to_bin (id, "slang_common_builtin.gc", "slang_common_builtin_gc.h");
-       gc_to_bin (id, "slang_fragment_builtin.gc", "slang_fragment_builtin_gc.h");
-   gc_to_bin (id, "slang_builtin_vec4.gc", "slang_builtin_vec4_gc.h");
-
-       grammar_set_reg8 (id, (const byte *) "shader_type", 2);
-       gc_to_bin (id, "slang_vertex_builtin.gc", "slang_vertex_builtin_gc.h");
-
-       grammar_destroy (id);
+   grammar id;
 
-       return 0;
+   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", atoi (argv[1]));
+   if (gc_to_bin (id, argv[2], argv[3])) {
+      grammar_destroy (id);
+      return 1;
+   }
+   grammar_destroy (id);
+   return 0;
 }
 
index 7e81c83415e5a93d522b2e47e64c4a90fccae2f6..c6264c3b4710876666e5f65484ef1221bde65ce4 100755 (executable)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.5
+ * Version:  6.6
  *
  * Copyright (C) 2006  Brian Paul   All Rights Reserved.
  *
@@ -80,7 +80,7 @@ mat4 outerProduct (vec4 c, vec4 r) {
 
 mat2x3 outerProduct (vec3 c, vec2 r) {
     return mat2x3 (
-        c.x * r.x, c.y * r.x, c.z * r.x
+        c.x * r.x, c.y * r.x, c.z * r.x,
         c.x * r.y, c.y * r.y, c.z * r.y
     );
 }
@@ -105,7 +105,7 @@ mat4x2 outerProduct (vec2 c, vec4 r) {
         c.x * r.x, c.y * r.x,
         c.x * r.y, c.y * r.y,
         c.x * r.z, c.y * r.z,
-        c.x * r.w, c.y * r.w,
+        c.x * r.w, c.y * r.w
     );
 }
 
diff --git a/src/mesa/shader/slang/library/slang_pp_directives.syn b/src/mesa/shader/slang/library/slang_pp_directives.syn
new file mode 100755 (executable)
index 0000000..5cbd15f
--- /dev/null
@@ -0,0 +1,385 @@
+/*\r
+ * Mesa 3-D graphics library\r
+ * Version:  6.6\r
+ *\r
+ * Copyright (C) 2006  Brian Paul   All Rights Reserved.\r
+ *\r
+ * Permission is hereby granted, free of charge, to any person obtaining a\r
+ * copy of this software and associated documentation files (the "Software"),\r
+ * to deal in the Software without restriction, including without limitation\r
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
+ * and/or sell copies of the Software, and to permit persons to whom the\r
+ * Software is furnished to do so, subject to the following conditions:\r
+ *\r
+ * The above copyright notice and this permission notice shall be included\r
+ * in all copies or substantial portions of the Software.\r
+ *\r
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL\r
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN\r
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
+ */\r
+\r
+/**\r
+ * \file slang_pp_directives.syn\r
+ * slang preprocessor directives parser\r
+ * \author Michal Krol\r
+ */\r
+\r
+.syntax source;\r
+\r
+/*\r
+ * This syntax script preprocesses a GLSL shader.\r
+ * It is assumed, that the #version directive has been parsed. Separate pass for parsing\r
+ * version gives better control on behavior depending on the version number given.\r
+ *\r
+ * The output is a source string with comments and directives removed. White spaces and comments\r
+ * are replaced with on or more spaces. All new-lines are preserved and converted to Linux format.\r
+ * Directives are escaped with a null character. The end of the source string is marked by\r
+ * two consecutive null characters. The consumer is responsible for executing the escaped\r
+ * directives, removing dead portions of code and expanding macros.\r
+ */\r
+\r
+.emtcode ESCAPE_TOKEN 0\r
+\r
+/*\r
+ * The TOKEN_* symbols follow the ESCAPE_TOKEN.\r
+ *\r
+ * NOTE:\r
+ * There is no TOKEN_IFDEF and neither is TOKEN_IFNDEF. They are handled with TOKEN_IF and\r
+ * operator defined.\r
+ * The "#ifdef SYMBOL" is replaced with "#if defined SYMBOL"\r
+ * The "#ifndef SYMBOL" is replaced with "#if !defined SYMBOL"\r
+ */\r
+.emtcode TOKEN_END       0\r
+.emtcode TOKEN_DEFINE    1\r
+.emtcode TOKEN_UNDEF     2\r
+.emtcode TOKEN_IF        3\r
+.emtcode TOKEN_ELSE      4\r
+.emtcode TOKEN_ELIF      5\r
+.emtcode TOKEN_ENDIF     6\r
+.emtcode TOKEN_ERROR     7\r
+.emtcode TOKEN_PRAGMA    8\r
+.emtcode TOKEN_EXTENSION 9\r
+.emtcode TOKEN_LINE      10\r
+\r
+/*\r
+ * The PARAM_* symbols follow the TOKEN_DEFINE.\r
+ */\r
+.emtcode PARAM_END       0\r
+.emtcode PARAM_PARAMETER 1\r
+\r
+/*\r
+ * The BEHAVIOR_* symbols follow the TOKEN_EXTENSION.\r
+ */\r
+.emtcode BEHAVIOR_REQUIRE 1\r
+.emtcode BEHAVIOR_ENABLE  2\r
+.emtcode BEHAVIOR_WARN    3\r
+.emtcode BEHAVIOR_DISABLE 4\r
+\r
+source\r
+   optional_directive .and .loop source_element .and '\0' .emit ESCAPE_TOKEN .emit TOKEN_END;\r
+\r
+source_element\r
+   c_style_comment_block .or cpp_style_comment_block .or new_line_directive .or source_token;\r
+\r
+c_style_comment_block\r
+   '/' .and '*' .and c_style_comment_rest .and .true .emit ' ';\r
+\r
+c_style_comment_rest\r
+   .loop c_style_comment_body .and c_style_comment_end;\r
+\r
+c_style_comment_body\r
+   c_style_comment_char_nostar .or c_style_comment_char_star_noslashstar;\r
+\r
+c_style_comment_char_nostar\r
+   new_line .or '\x2B'-'\xFF' .or '\x01'-'\x29';\r
+\r
+c_style_comment_char_star_noslashstar\r
+   '*' .and c_style_comment_char_star_noslashstar_1;\r
+c_style_comment_char_star_noslashstar_1\r
+   c_style_comment_char_noslashstar .or c_style_comment_char_star_noslashstar;\r
+\r
+c_style_comment_char_noslashstar\r
+   new_line .or '\x30'-'\xFF' .or '\x01'-'\x29' .or '\x2B'-'\x2E';\r
+\r
+c_style_comment_end\r
+   '*' .and .loop c_style_comment_char_star .and '/';\r
+\r
+c_style_comment_char_star\r
+   '*';\r
+\r
+cpp_style_comment_block\r
+   '/' .and '/' .and cpp_style_comment_block_1;\r
+cpp_style_comment_block_1\r
+   cpp_style_comment_block_2 .or cpp_style_comment_block_3;\r
+cpp_style_comment_block_2\r
+   .loop cpp_style_comment_char .and new_line_directive;\r
+cpp_style_comment_block_3\r
+   .loop cpp_style_comment_char;\r
+\r
+cpp_style_comment_char\r
+   '\x0E'-'\xFF' .or '\x01'-'\x09' .or '\x0B'-'\x0C';\r
+\r
+new_line_directive\r
+   new_line .and optional_directive;\r
+\r
+new_line\r
+   generic_new_line .emit '\n';\r
+\r
+generic_new_line\r
+   carriage_return_line_feed .or line_feed_carriage_return .or '\n' .or '\r';\r
+\r
+carriage_return_line_feed\r
+   '\r' .and '\n';\r
+\r
+line_feed_carriage_return\r
+   '\n' .and '\r';\r
+\r
+optional_directive\r
+   directive .emit ESCAPE_TOKEN .or .true;\r
+\r
+directive\r
+   dir_define .emit TOKEN_DEFINE .or\r
+   dir_undef .emit TOKEN_UNDEF .or\r
+   dir_if .emit TOKEN_IF .or\r
+   dir_ifdef .emit TOKEN_IF .emit 'd' .emit 'e' .emit 'f' .emit 'i' .emit 'n' .emit 'e' .emit 'd'\r
+             .emit ' ' .or\r
+   dir_ifndef .emit TOKEN_IF .emit '!' .emit 'd' .emit 'e' .emit 'f' .emit 'i' .emit 'n' .emit 'e'\r
+              .emit 'd' .emit ' ' .or\r
+   dir_else .emit TOKEN_ELSE .or\r
+   dir_elif .emit TOKEN_ELIF .or\r
+   dir_endif .emit TOKEN_ENDIF .or\r
+   dir_ext .emit TOKEN_EXTENSION .or\r
+   dir_line .emit TOKEN_LINE;\r
+\r
+dir_define\r
+   optional_space .and '#' .and optional_space .and "define" .and symbol .and opt_parameters .and\r
+   definition;\r
+\r
+dir_undef\r
+   optional_space .and '#' .and optional_space .and "undef" .and symbol;\r
+\r
+dir_if\r
+   optional_space .and '#' .and optional_space .and "if" .and expression;\r
+\r
+dir_ifdef\r
+   optional_space .and '#' .and optional_space .and "ifdef" .and symbol;\r
+\r
+dir_ifndef\r
+   optional_space .and '#' .and optional_space .and "ifndef" .and symbol;\r
+\r
+dir_else\r
+   optional_space .and '#' .and optional_space .and "else";\r
+\r
+dir_elif\r
+   optional_space .and '#' .and optional_space .and "elif" .and expression;\r
+\r
+dir_endif\r
+   optional_space .and '#' .and optional_space .and "endif";\r
+\r
+dir_ext\r
+   optional_space .and '#' .and optional_space .and "extension" .and space .and extension_name .and\r
+   optional_space .and ':' .and optional_space .and extension_behavior;\r
+\r
+dir_line\r
+   optional_space .and '#' .and optional_space .and "line" .and expression;\r
+\r
+symbol\r
+   space .and symbol_character .emit * .and .loop symbol_character2 .emit * .and .true .emit '\0';\r
+\r
+opt_parameters\r
+   parameters .or .true .emit PARAM_END;\r
+\r
+parameters\r
+   '(' .and parameters_1 .and optional_space .and ')' .emit PARAM_END;\r
+parameters_1\r
+   parameters_2 .or .true;\r
+parameters_2\r
+   parameter .emit PARAM_PARAMETER .and .loop parameters_3;\r
+parameters_3\r
+   optional_space .and ',' .and parameter .emit PARAM_PARAMETER;\r
+\r
+parameter\r
+   optional_space .and symbol_character .emit * .and .loop symbol_character2 .emit * .and\r
+   .true .emit '\0';\r
+\r
+definition\r
+   .loop definition_character .emit * .and .true .emit '\0';\r
+\r
+definition_character\r
+   '\x0E'-'\xFF' .or '\x01'-'\x09' .or '\x0B'-'\x0C';\r
+\r
+expression\r
+   expression_element .and .loop expression_element .and .true .emit '\0';\r
+\r
+expression_element\r
+   expression_character .emit *;\r
+\r
+expression_character\r
+   '\x0E'-'\xFF' .or '\x01'-'\x09' .or '\x0B'-'\x0C';\r
+\r
+extension_name\r
+   symbol_character .emit * .and .loop symbol_character2 .emit * .and .true .emit '\0';\r
+\r
+extension_behavior\r
+   "require" .emit BEHAVIOR_REQUIRE .or\r
+   "enable" .emit BEHAVIOR_ENABLE .or\r
+   "warn" .emit BEHAVIOR_WARN .or\r
+   "disable" .emit BEHAVIOR_DISABLE;\r
+\r
+optional_space\r
+   .loop single_space;\r
+\r
+space\r
+   single_space .and .loop single_space;\r
+\r
+single_space\r
+   ' ' .or '\t';\r
+\r
+source_token\r
+   space .emit ' ' .or complex_token .or source_token_1;\r
+source_token_1\r
+   simple_token .emit ' ' .and .true .emit ' ';\r
+\r
+/*\r
+ * All possible tokens.\r
+ */\r
+\r
+complex_token\r
+   identifier .or number;\r
+\r
+simple_token\r
+   increment .or decrement .or lequal .or gequal .or equal .or nequal .or and .or xor .or or .or\r
+   addto .or subtractfrom .or multiplyto .or divideto .or other;\r
+\r
+identifier\r
+   identifier_char1 .emit * .and .loop identifier_char2 .emit *;\r
+identifier_char1\r
+   'a'-'z' .or 'A'-'Z' .or '_';\r
+identifier_char2\r
+   'a'-'z' .or 'A'-'Z' .or '0'-'9' .or '_';\r
+\r
+number\r
+   float .or integer;\r
+\r
+digit_oct\r
+   '0'-'7';\r
+\r
+digit_dec\r
+   '0'-'9';\r
+\r
+digit_hex\r
+   '0'-'9' .or 'A'-'F' .or 'a'-'f';\r
+\r
+float\r
+   float_1 .or float_2;\r
+float_1\r
+   float_fractional_constant .and float_optional_exponent_part;\r
+float_2\r
+   float_digit_sequence .and float_exponent_part;\r
+\r
+float_fractional_constant\r
+   float_fractional_constant_1 .or float_fractional_constant_2 .or float_fractional_constant_3;\r
+float_fractional_constant_1\r
+   float_digit_sequence .and '.' .emit '.' .and float_digit_sequence;\r
+float_fractional_constant_2\r
+   float_digit_sequence .and '.' .emit '.';\r
+float_fractional_constant_3\r
+   '.' .emit '.' .and float_digit_sequence;\r
+\r
+float_optional_exponent_part\r
+   float_exponent_part .or .true;\r
+\r
+float_digit_sequence\r
+   digit_dec .emit * .and .loop digit_dec .emit *;\r
+\r
+float_exponent_part\r
+   float_exponent_part_1 .or float_exponent_part_2;\r
+float_exponent_part_1\r
+   'e' .emit 'e' .and float_optional_sign .and float_digit_sequence;\r
+float_exponent_part_2\r
+   'E' .emit 'E' .and float_optional_sign .and float_digit_sequence;\r
+\r
+float_optional_sign\r
+   '+' .emit '+' .or '-' .emit '-' .or .true;\r
+\r
+integer\r
+   integer_hex .or integer_oct .or integer_dec;\r
+\r
+integer_hex\r
+   '0' .emit '0' .and integer_hex_1 .emit * .and digit_hex .emit * .and\r
+   .loop digit_hex .emit *;\r
+integer_hex_1\r
+   'x' .or 'X';\r
+\r
+integer_oct\r
+   '0' .emit '0' .and .loop digit_oct .emit *;\r
+\r
+integer_dec\r
+   digit_dec .emit * .and .loop digit_dec .emit *;\r
+\r
+increment\r
+   '+' .emit * .and '+' .emit *;\r
+\r
+decrement\r
+   '-' .emit * .and '-' .emit *;\r
+\r
+lequal\r
+   '<' .emit * .and '=' .emit *;\r
+\r
+gequal\r
+   '>' .emit * .and '=' .emit *;\r
+\r
+equal\r
+   '=' .emit * .and '=' .emit *;\r
+\r
+nequal\r
+   '!' .emit * .and '=' .emit *;\r
+\r
+and\r
+   '&' .emit * .and '&' .emit *;\r
+\r
+xor\r
+   '^' .emit * .and '^' .emit *;\r
+\r
+or\r
+   '|' .emit * .and '|' .emit *;\r
+\r
+addto\r
+   '+' .emit * .and '=' .emit *;\r
+\r
+subtractfrom\r
+   '-' .emit * .and '=' .emit *;\r
+\r
+multiplyto\r
+   '*' .emit * .and '=' .emit *;\r
+\r
+divideto\r
+   '/' .emit * .and '=' .emit *;\r
+\r
+/*\r
+ * All characters except '\0' and '#'.\r
+ */\r
+other\r
+   '\x24'-'\xFF' .emit * .or '\x01'-'\x22' .emit *;\r
+\r
+symbol_character\r
+   'A'-'Z' .or 'a'-'z' .or '_';\r
+\r
+symbol_character2\r
+   'A'-'Z' .or 'a'-'z' .or '0'-'9' .or '_';\r
+\r
+.string string_lexer;\r
+\r
+string_lexer\r
+   lex_first_identifier_character .and .loop lex_next_identifier_character;\r
+\r
+lex_first_identifier_character\r
+   'a'-'z' .or 'A'-'Z' .or '_';\r
+\r
+lex_next_identifier_character\r
+   'a'-'z' .or 'A'-'Z' .or '0'-'9' .or '_';\r
+\r
diff --git a/src/mesa/shader/slang/library/slang_pp_directives_syn.h b/src/mesa/shader/slang/library/slang_pp_directives_syn.h
new file mode 100644 (file)
index 0000000..71c08ca
--- /dev/null
@@ -0,0 +1,337 @@
+
+/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE .syn FILE */
+
+"\r\n"
+"\r\n"
+"\r\n"
+"\r\n"
+".syntax source;\r\n"
+"\r\n"
+"\r\n"
+"\r\n"
+".emtcode ESCAPE_TOKEN 0\r\n"
+"\r\n"
+"\r\n"
+".emtcode TOKEN_END 0\r\n"
+".emtcode TOKEN_DEFINE 1\r\n"
+".emtcode TOKEN_UNDEF 2\r\n"
+".emtcode TOKEN_IF 3\r\n"
+".emtcode TOKEN_ELSE 4\r\n"
+".emtcode TOKEN_ELIF 5\r\n"
+".emtcode TOKEN_ENDIF 6\r\n"
+".emtcode TOKEN_ERROR 7\r\n"
+".emtcode TOKEN_PRAGMA 8\r\n"
+".emtcode TOKEN_EXTENSION 9\r\n"
+".emtcode TOKEN_LINE 10\r\n"
+"\r\n"
+"\r\n"
+".emtcode PARAM_END 0\r\n"
+".emtcode PARAM_PARAMETER 1\r\n"
+"\r\n"
+"\r\n"
+".emtcode BEHAVIOR_REQUIRE 1\r\n"
+".emtcode BEHAVIOR_ENABLE 2\r\n"
+".emtcode BEHAVIOR_WARN 3\r\n"
+".emtcode BEHAVIOR_DISABLE 4\r\n"
+"\r\n"
+"source\r\n"
+" optional_directive .and .loop source_element .and '\\0' .emit ESCAPE_TOKEN .emit TOKEN_END;\r\n"
+"\r\n"
+"source_element\r\n"
+" c_style_comment_block .or cpp_style_comment_block .or new_line_directive .or source_token;\r\n"
+"\r\n"
+"c_style_comment_block\r\n"
+" '/' .and '*' .and c_style_comment_rest .and .true .emit ' ';\r\n"
+"\r\n"
+"c_style_comment_rest\r\n"
+" .loop c_style_comment_body .and c_style_comment_end;\r\n"
+"\r\n"
+"c_style_comment_body\r\n"
+" c_style_comment_char_nostar .or c_style_comment_char_star_noslashstar;\r\n"
+"\r\n"
+"c_style_comment_char_nostar\r\n"
+" new_line .or '\\x2B'-'\\xFF' .or '\\x01'-'\\x29';\r\n"
+"\r\n"
+"c_style_comment_char_star_noslashstar\r\n"
+" '*' .and c_style_comment_char_star_noslashstar_1;\r\n"
+"c_style_comment_char_star_noslashstar_1\r\n"
+" c_style_comment_char_noslashstar .or c_style_comment_char_star_noslashstar;\r\n"
+"\r\n"
+"c_style_comment_char_noslashstar\r\n"
+" new_line .or '\\x30'-'\\xFF' .or '\\x01'-'\\x29' .or '\\x2B'-'\\x2E';\r\n"
+"\r\n"
+"c_style_comment_end\r\n"
+" '*' .and .loop c_style_comment_char_star .and '/';\r\n"
+"\r\n"
+"c_style_comment_char_star\r\n"
+" '*';\r\n"
+"\r\n"
+"cpp_style_comment_block\r\n"
+" '/' .and '/' .and cpp_style_comment_block_1;\r\n"
+"cpp_style_comment_block_1\r\n"
+" cpp_style_comment_block_2 .or cpp_style_comment_block_3;\r\n"
+"cpp_style_comment_block_2\r\n"
+" .loop cpp_style_comment_char .and new_line_directive;\r\n"
+"cpp_style_comment_block_3\r\n"
+" .loop cpp_style_comment_char;\r\n"
+"\r\n"
+"cpp_style_comment_char\r\n"
+" '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';\r\n"
+"\r\n"
+"new_line_directive\r\n"
+" new_line .and optional_directive;\r\n"
+"\r\n"
+"new_line\r\n"
+" generic_new_line .emit '\\n';\r\n"
+"\r\n"
+"generic_new_line\r\n"
+" carriage_return_line_feed .or line_feed_carriage_return .or '\\n' .or '\\r';\r\n"
+"\r\n"
+"carriage_return_line_feed\r\n"
+" '\\r' .and '\\n';\r\n"
+"\r\n"
+"line_feed_carriage_return\r\n"
+" '\\n' .and '\\r';\r\n"
+"\r\n"
+"optional_directive\r\n"
+" directive .emit ESCAPE_TOKEN .or .true;\r\n"
+"\r\n"
+"directive\r\n"
+" dir_define .emit TOKEN_DEFINE .or\r\n"
+" dir_undef .emit TOKEN_UNDEF .or\r\n"
+" dir_if .emit TOKEN_IF .or\r\n"
+" dir_ifdef .emit TOKEN_IF .emit 'd' .emit 'e' .emit 'f' .emit 'i' .emit 'n' .emit 'e' .emit 'd'\r\n"
+" .emit ' ' .or\r\n"
+" dir_ifndef .emit TOKEN_IF .emit '!' .emit 'd' .emit 'e' .emit 'f' .emit 'i' .emit 'n' .emit 'e'\r\n"
+" .emit 'd' .emit ' ' .or\r\n"
+" dir_else .emit TOKEN_ELSE .or\r\n"
+" dir_elif .emit TOKEN_ELIF .or\r\n"
+" dir_endif .emit TOKEN_ENDIF .or\r\n"
+" dir_ext .emit TOKEN_EXTENSION .or\r\n"
+" dir_line .emit TOKEN_LINE;\r\n"
+"\r\n"
+"dir_define\r\n"
+" optional_space .and '#' .and optional_space .and \"define\" .and symbol .and opt_parameters .and\r\n"
+" definition;\r\n"
+"\r\n"
+"dir_undef\r\n"
+" optional_space .and '#' .and optional_space .and \"undef\" .and symbol;\r\n"
+"\r\n"
+"dir_if\r\n"
+" optional_space .and '#' .and optional_space .and \"if\" .and expression;\r\n"
+"\r\n"
+"dir_ifdef\r\n"
+" optional_space .and '#' .and optional_space .and \"ifdef\" .and symbol;\r\n"
+"\r\n"
+"dir_ifndef\r\n"
+" optional_space .and '#' .and optional_space .and \"ifndef\" .and symbol;\r\n"
+"\r\n"
+"dir_else\r\n"
+" optional_space .and '#' .and optional_space .and \"else\";\r\n"
+"\r\n"
+"dir_elif\r\n"
+" optional_space .and '#' .and optional_space .and \"elif\" .and expression;\r\n"
+"\r\n"
+"dir_endif\r\n"
+" optional_space .and '#' .and optional_space .and \"endif\";\r\n"
+"\r\n"
+"dir_ext\r\n"
+" optional_space .and '#' .and optional_space .and \"extension\" .and space .and extension_name .and\r\n"
+" optional_space .and ':' .and optional_space .and extension_behavior;\r\n"
+"\r\n"
+"dir_line\r\n"
+" optional_space .and '#' .and optional_space .and \"line\" .and expression;\r\n"
+"\r\n"
+"symbol\r\n"
+" space .and symbol_character .emit * .and .loop symbol_character2 .emit * .and .true .emit '\\0';\r\n"
+"\r\n"
+"opt_parameters\r\n"
+" parameters .or .true .emit PARAM_END;\r\n"
+"\r\n"
+"parameters\r\n"
+" '(' .and parameters_1 .and optional_space .and ')' .emit PARAM_END;\r\n"
+"parameters_1\r\n"
+" parameters_2 .or .true;\r\n"
+"parameters_2\r\n"
+" parameter .emit PARAM_PARAMETER .and .loop parameters_3;\r\n"
+"parameters_3\r\n"
+" optional_space .and ',' .and parameter .emit PARAM_PARAMETER;\r\n"
+"\r\n"
+"parameter\r\n"
+" optional_space .and symbol_character .emit * .and .loop symbol_character2 .emit * .and\r\n"
+" .true .emit '\\0';\r\n"
+"\r\n"
+"definition\r\n"
+" .loop definition_character .emit * .and .true .emit '\\0';\r\n"
+"\r\n"
+"definition_character\r\n"
+" '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';\r\n"
+"\r\n"
+"expression\r\n"
+" expression_element .and .loop expression_element .and .true .emit '\\0';\r\n"
+"\r\n"
+"expression_element\r\n"
+" expression_character .emit *;\r\n"
+"\r\n"
+"expression_character\r\n"
+" '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';\r\n"
+"\r\n"
+"extension_name\r\n"
+" symbol_character .emit * .and .loop symbol_character2 .emit * .and .true .emit '\\0';\r\n"
+"\r\n"
+"extension_behavior\r\n"
+" \"require\" .emit BEHAVIOR_REQUIRE .or\r\n"
+" \"enable\" .emit BEHAVIOR_ENABLE .or\r\n"
+" \"warn\" .emit BEHAVIOR_WARN .or\r\n"
+" \"disable\" .emit BEHAVIOR_DISABLE;\r\n"
+"\r\n"
+"optional_space\r\n"
+" .loop single_space;\r\n"
+"\r\n"
+"space\r\n"
+" single_space .and .loop single_space;\r\n"
+"\r\n"
+"single_space\r\n"
+" ' ' .or '\\t';\r\n"
+"\r\n"
+"source_token\r\n"
+" space .emit ' ' .or complex_token .or source_token_1;\r\n"
+"source_token_1\r\n"
+" simple_token .emit ' ' .and .true .emit ' ';\r\n"
+"\r\n"
+"\r\n"
+"\r\n"
+"complex_token\r\n"
+" identifier .or number;\r\n"
+"\r\n"
+"simple_token\r\n"
+" increment .or decrement .or lequal .or gequal .or equal .or nequal .or and .or xor .or or .or\r\n"
+" addto .or subtractfrom .or multiplyto .or divideto .or other;\r\n"
+"\r\n"
+"identifier\r\n"
+" identifier_char1 .emit * .and .loop identifier_char2 .emit *;\r\n"
+"identifier_char1\r\n"
+" 'a'-'z' .or 'A'-'Z' .or '_';\r\n"
+"identifier_char2\r\n"
+" 'a'-'z' .or 'A'-'Z' .or '0'-'9' .or '_';\r\n"
+"\r\n"
+"number\r\n"
+" float .or integer;\r\n"
+"\r\n"
+"digit_oct\r\n"
+" '0'-'7';\r\n"
+"\r\n"
+"digit_dec\r\n"
+" '0'-'9';\r\n"
+"\r\n"
+"digit_hex\r\n"
+" '0'-'9' .or 'A'-'F' .or 'a'-'f';\r\n"
+"\r\n"
+"float\r\n"
+" float_1 .or float_2;\r\n"
+"float_1\r\n"
+" float_fractional_constant .and float_optional_exponent_part;\r\n"
+"float_2\r\n"
+" float_digit_sequence .and float_exponent_part;\r\n"
+"\r\n"
+"float_fractional_constant\r\n"
+" float_fractional_constant_1 .or float_fractional_constant_2 .or float_fractional_constant_3;\r\n"
+"float_fractional_constant_1\r\n"
+" float_digit_sequence .and '.' .emit '.' .and float_digit_sequence;\r\n"
+"float_fractional_constant_2\r\n"
+" float_digit_sequence .and '.' .emit '.';\r\n"
+"float_fractional_constant_3\r\n"
+" '.' .emit '.' .and float_digit_sequence;\r\n"
+"\r\n"
+"float_optional_exponent_part\r\n"
+" float_exponent_part .or .true;\r\n"
+"\r\n"
+"float_digit_sequence\r\n"
+" digit_dec .emit * .and .loop digit_dec .emit *;\r\n"
+"\r\n"
+"float_exponent_part\r\n"
+" float_exponent_part_1 .or float_exponent_part_2;\r\n"
+"float_exponent_part_1\r\n"
+" 'e' .emit 'e' .and float_optional_sign .and float_digit_sequence;\r\n"
+"float_exponent_part_2\r\n"
+" 'E' .emit 'E' .and float_optional_sign .and float_digit_sequence;\r\n"
+"\r\n"
+"float_optional_sign\r\n"
+" '+' .emit '+' .or '-' .emit '-' .or .true;\r\n"
+"\r\n"
+"integer\r\n"
+" integer_hex .or integer_oct .or integer_dec;\r\n"
+"\r\n"
+"integer_hex\r\n"
+" '0' .emit '0' .and integer_hex_1 .emit * .and digit_hex .emit * .and\r\n"
+" .loop digit_hex .emit *;\r\n"
+"integer_hex_1\r\n"
+" 'x' .or 'X';\r\n"
+"\r\n"
+"integer_oct\r\n"
+" '0' .emit '0' .and .loop digit_oct .emit *;\r\n"
+"\r\n"
+"integer_dec\r\n"
+" digit_dec .emit * .and .loop digit_dec .emit *;\r\n"
+"\r\n"
+"increment\r\n"
+" '+' .emit * .and '+' .emit *;\r\n"
+"\r\n"
+"decrement\r\n"
+" '-' .emit * .and '-' .emit *;\r\n"
+"\r\n"
+"lequal\r\n"
+" '<' .emit * .and '=' .emit *;\r\n"
+"\r\n"
+"gequal\r\n"
+" '>' .emit * .and '=' .emit *;\r\n"
+"\r\n"
+"equal\r\n"
+" '=' .emit * .and '=' .emit *;\r\n"
+"\r\n"
+"nequal\r\n"
+" '!' .emit * .and '=' .emit *;\r\n"
+"\r\n"
+"and\r\n"
+" '&' .emit * .and '&' .emit *;\r\n"
+"\r\n"
+"xor\r\n"
+" '^' .emit * .and '^' .emit *;\r\n"
+"\r\n"
+"or\r\n"
+" '|' .emit * .and '|' .emit *;\r\n"
+"\r\n"
+"addto\r\n"
+" '+' .emit * .and '=' .emit *;\r\n"
+"\r\n"
+"subtractfrom\r\n"
+" '-' .emit * .and '=' .emit *;\r\n"
+"\r\n"
+"multiplyto\r\n"
+" '*' .emit * .and '=' .emit *;\r\n"
+"\r\n"
+"divideto\r\n"
+" '/' .emit * .and '=' .emit *;\r\n"
+"\r\n"
+"\r\n"
+"other\r\n"
+" '\\x24'-'\\xFF' .emit * .or '\\x01'-'\\x22' .emit *;\r\n"
+"\r\n"
+"symbol_character\r\n"
+" 'A'-'Z' .or 'a'-'z' .or '_';\r\n"
+"\r\n"
+"symbol_character2\r\n"
+" 'A'-'Z' .or 'a'-'z' .or '0'-'9' .or '_';\r\n"
+"\r\n"
+".string string_lexer;\r\n"
+"\r\n"
+"string_lexer\r\n"
+" lex_first_identifier_character .and .loop lex_next_identifier_character;\r\n"
+"\r\n"
+"lex_first_identifier_character\r\n"
+" 'a'-'z' .or 'A'-'Z' .or '_';\r\n"
+"\r\n"
+"lex_next_identifier_character\r\n"
+" 'a'-'z' .or 'A'-'Z' .or '0'-'9' .or '_';\r\n"
+"\r\n"
+""
diff --git a/src/mesa/shader/slang/library/slang_pp_expression.syn b/src/mesa/shader/slang/library/slang_pp_expression.syn
new file mode 100755 (executable)
index 0000000..73d2a05
--- /dev/null
@@ -0,0 +1,265 @@
+/*\r
+ * Mesa 3-D graphics library\r
+ * Version:  6.6\r
+ *\r
+ * Copyright (C) 2006  Brian Paul   All Rights Reserved.\r
+ *\r
+ * Permission is hereby granted, free of charge, to any person obtaining a\r
+ * copy of this software and associated documentation files (the "Software"),\r
+ * to deal in the Software without restriction, including without limitation\r
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
+ * and/or sell copies of the Software, and to permit persons to whom the\r
+ * Software is furnished to do so, subject to the following conditions:\r
+ *\r
+ * The above copyright notice and this permission notice shall be included\r
+ * in all copies or substantial portions of the Software.\r
+ *\r
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL\r
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN\r
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
+ */\r
+\r
+/**\r
+ * \file slang_pp_expression.syn\r
+ * slang preprocessor expression parser\r
+ * \author Michal Krol\r
+ */\r
+\r
+/*\r
+ * Parses one or two (optional) expressions on literal integer constants. Those expressions come\r
+ * from #if #elif and #line directives. The preprocessor already parsed those directives and\r
+ * expanded the expression (expressions). All occurences of the operator "defined" are already\r
+ * replaced with either "0" or "1" literals.\r
+ */\r
+\r
+.syntax expression;\r
+\r
+/*\r
+ * Those separate individual expressions.\r
+ * For #if/#elif case it is: EXP_EXPRESSION ... EXP_END\r
+ * For #line case it may be: EXP_EXPRESSION ... EXP_EXPRESSION ... EXP_END\r
+ */\r
+.emtcode EXP_END        0\r
+.emtcode EXP_EXPRESSION 1\r
+\r
+.emtcode OP_END          0\r
+.emtcode OP_PUSHINT      1\r
+.emtcode OP_LOGICALOR    2\r
+.emtcode OP_LOGICALAND   3\r
+.emtcode OP_OR           4\r
+.emtcode OP_XOR          5\r
+.emtcode OP_AND          6\r
+.emtcode OP_EQUAL        7\r
+.emtcode OP_NOTEQUAL     8\r
+.emtcode OP_LESSEQUAL    9\r
+.emtcode OP_GREATEREQUAL 10\r
+.emtcode OP_LESS         11\r
+.emtcode OP_GREATER      12\r
+.emtcode OP_LEFTSHIFT    13\r
+.emtcode OP_RIGHTSHIFT   14\r
+.emtcode OP_ADD          15\r
+.emtcode OP_SUBTRACT     16\r
+.emtcode OP_MULTIPLY     17\r
+.emtcode OP_DIVIDE       18\r
+.emtcode OP_MODULUS      19\r
+.emtcode OP_PLUS         20\r
+.emtcode OP_MINUS        21\r
+.emtcode OP_NEGATE       22\r
+.emtcode OP_COMPLEMENT   23\r
+\r
+expression\r
+   first_expression .and optional_second_expression .and optional_space .and '\0' .emit EXP_END;\r
+\r
+first_expression\r
+   optional_space .and logical_or_expression .emit EXP_EXPRESSION .and .true .emit OP_END;\r
+\r
+optional_second_expression\r
+   second_expression .or .true;\r
+\r
+second_expression\r
+   space .and logical_or_expression .emit EXP_EXPRESSION .and .true .emit OP_END;\r
+\r
+logical_or_expression\r
+   logical_and_expression .and .loop logical_or_expression_1;\r
+logical_or_expression_1\r
+   barbar .and logical_and_expression .and .true .emit OP_LOGICALOR;\r
+\r
+logical_and_expression\r
+   or_expression .and .loop logical_and_expression_1;\r
+logical_and_expression_1\r
+   ampersandampersand .and or_expression .and .true .emit OP_LOGICALAND;\r
+\r
+or_expression\r
+   xor_expression .and .loop or_expression_1;\r
+or_expression_1\r
+   bar .and xor_expression .and .true .emit OP_OR;\r
+\r
+xor_expression\r
+    and_expression .and .loop xor_expression_1;\r
+xor_expression_1\r
+    caret .and and_expression .and .true .emit OP_XOR;\r
+\r
+and_expression\r
+    equality_expression .and .loop and_expression_1;\r
+and_expression_1\r
+    ampersand .and equality_expression .and .true .emit OP_AND;\r
+\r
+equality_expression\r
+    relational_expression .and .loop equality_expression_1;\r
+equality_expression_1\r
+    equality_expression_2 .or equality_expression_3;\r
+equality_expression_2\r
+    equalsequals .and relational_expression .and .true .emit OP_EQUAL;\r
+equality_expression_3\r
+    bangequals .and relational_expression .and .true .emit OP_NOTEQUAL;\r
+\r
+relational_expression\r
+    shift_expression .and .loop relational_expression_1;\r
+relational_expression_1\r
+    relational_expression_2 .or relational_expression_3 .or relational_expression_4 .or\r
+    relational_expression_5;\r
+relational_expression_2\r
+    lessequals .and shift_expression .and .true .emit OP_LESSEQUAL;\r
+relational_expression_3\r
+    greaterequals .and shift_expression .and .true .emit OP_GREATEREQUAL;\r
+relational_expression_4\r
+    less .and shift_expression .and .true .emit OP_LESS;\r
+relational_expression_5\r
+    greater .and shift_expression .and .true .emit OP_GREATER;\r
+\r
+shift_expression\r
+    additive_expression .and .loop shift_expression_1;\r
+shift_expression_1\r
+    shift_expression_2 .or shift_expression_3;\r
+shift_expression_2\r
+    lessless .and additive_expression .and .true .emit OP_LEFTSHIFT;\r
+shift_expression_3\r
+    greatergreater .and additive_expression .and .true .emit OP_RIGHTSHIFT;\r
+\r
+additive_expression\r
+    multiplicative_expression .and .loop additive_expression_1;\r
+additive_expression_1\r
+    additive_expression_2 .or additive_expression_3;\r
+additive_expression_2\r
+    plus .and multiplicative_expression .and .true .emit OP_ADD;\r
+additive_expression_3\r
+    dash .and multiplicative_expression .and .true .emit OP_SUBTRACT;\r
+\r
+multiplicative_expression\r
+    unary_expression .and .loop multiplicative_expression_1;\r
+multiplicative_expression_1\r
+    multiplicative_expression_2 .or multiplicative_expression_3 .or multiplicative_expression_4;\r
+multiplicative_expression_2\r
+    star .and unary_expression .and .true .emit OP_MULTIPLY;\r
+multiplicative_expression_3\r
+    slash .and unary_expression .and .true .emit OP_DIVIDE;\r
+multiplicative_expression_4\r
+    percent .and unary_expression .and .true .emit OP_MODULUS;\r
+\r
+unary_expression\r
+    primary_expression .or unary_expression_1 .or unary_expression_2 .or unary_expression_3 .or\r
+    unary_expression_4;\r
+unary_expression_1\r
+    plus .and unary_expression .and .true .emit OP_PLUS;\r
+unary_expression_2\r
+    dash .and unary_expression .and .true .emit OP_MINUS;\r
+unary_expression_3\r
+    bang .and unary_expression .and .true .emit OP_NEGATE;\r
+unary_expression_4\r
+    tilda .and unary_expression .and .true .emit OP_COMPLEMENT;\r
+\r
+primary_expression\r
+   intconstant .or primary_expression_1;\r
+primary_expression_1\r
+   lparen .and logical_or_expression .and rparen;\r
+\r
+intconstant\r
+   integer .emit OP_PUSHINT;\r
+\r
+integer\r
+   integer_dec;\r
+\r
+integer_dec\r
+   digit_dec .emit 10 .emit * .and .loop digit_dec .emit * .and .true .emit '\0';\r
+\r
+digit_dec\r
+   '0'-'9';\r
+\r
+optional_space\r
+   .loop single_space;\r
+\r
+space\r
+   single_space .and .loop single_space;\r
+\r
+single_space\r
+   ' ' .or '\t';\r
+\r
+ampersand\r
+   optional_space .and '&' .and optional_space;\r
+\r
+ampersandampersand\r
+   optional_space .and '&' .and '&' .and optional_space;\r
+\r
+bang\r
+   optional_space .and '!' .and optional_space;\r
+\r
+bangequals\r
+   optional_space .and '!' .and '=' .and optional_space;\r
+\r
+bar\r
+   optional_space .and '|' .and optional_space;\r
+\r
+barbar\r
+   optional_space .and '|' .and '|' .and optional_space;\r
+\r
+caret\r
+   optional_space .and '^' .and optional_space;\r
+\r
+dash\r
+   optional_space .and '-' .and optional_space;\r
+\r
+equalsequals\r
+   optional_space .and '=' .and '=' .and optional_space;\r
+\r
+greater\r
+   optional_space .and '>' .and optional_space;\r
+\r
+greaterequals\r
+   optional_space .and '>' .and '=' .and optional_space;\r
+\r
+greatergreater\r
+   optional_space .and '>' .and '>' .and optional_space;\r
+\r
+less\r
+   optional_space .and '<' .and optional_space;\r
+\r
+lessequals\r
+   optional_space .and '<' .and '=' .and optional_space;\r
+\r
+lessless\r
+   optional_space .and '<' .and '<' .and optional_space;\r
+\r
+lparen\r
+   optional_space .and '(' .and optional_space;\r
+\r
+percent\r
+   optional_space .and '%' .and optional_space;\r
+\r
+plus\r
+   optional_space .and '+' .and optional_space;\r
+\r
+rparen\r
+   optional_space .and ')' .and optional_space;\r
+\r
+slash\r
+   optional_space .and '/' .and optional_space;\r
+\r
+star\r
+   optional_space .and '*' .and optional_space;\r
+\r
+tilda\r
+   optional_space .and '~' .and optional_space;\r
+\r
diff --git a/src/mesa/shader/slang/library/slang_pp_expression_syn.h b/src/mesa/shader/slang/library/slang_pp_expression_syn.h
new file mode 100644 (file)
index 0000000..0fa9c43
--- /dev/null
@@ -0,0 +1,234 @@
+
+/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE .syn FILE */
+
+"\r\n"
+"\r\n"
+"\r\n"
+"\r\n"
+"\r\n"
+"\r\n"
+".syntax expression;\r\n"
+"\r\n"
+"\r\n"
+".emtcode EXP_END 0\r\n"
+".emtcode EXP_EXPRESSION 1\r\n"
+"\r\n"
+".emtcode OP_END 0\r\n"
+".emtcode OP_PUSHINT 1\r\n"
+".emtcode OP_LOGICALOR 2\r\n"
+".emtcode OP_LOGICALAND 3\r\n"
+".emtcode OP_OR 4\r\n"
+".emtcode OP_XOR 5\r\n"
+".emtcode OP_AND 6\r\n"
+".emtcode OP_EQUAL 7\r\n"
+".emtcode OP_NOTEQUAL 8\r\n"
+".emtcode OP_LESSEQUAL 9\r\n"
+".emtcode OP_GREATEREQUAL 10\r\n"
+".emtcode OP_LESS 11\r\n"
+".emtcode OP_GREATER 12\r\n"
+".emtcode OP_LEFTSHIFT 13\r\n"
+".emtcode OP_RIGHTSHIFT 14\r\n"
+".emtcode OP_ADD 15\r\n"
+".emtcode OP_SUBTRACT 16\r\n"
+".emtcode OP_MULTIPLY 17\r\n"
+".emtcode OP_DIVIDE 18\r\n"
+".emtcode OP_MODULUS 19\r\n"
+".emtcode OP_PLUS 20\r\n"
+".emtcode OP_MINUS 21\r\n"
+".emtcode OP_NEGATE 22\r\n"
+".emtcode OP_COMPLEMENT 23\r\n"
+"\r\n"
+"expression\r\n"
+" first_expression .and optional_second_expression .and optional_space .and '\\0' .emit EXP_END;\r\n"
+"\r\n"
+"first_expression\r\n"
+" optional_space .and logical_or_expression .emit EXP_EXPRESSION .and .true .emit OP_END;\r\n"
+"\r\n"
+"optional_second_expression\r\n"
+" second_expression .or .true;\r\n"
+"\r\n"
+"second_expression\r\n"
+" space .and logical_or_expression .emit EXP_EXPRESSION .and .true .emit OP_END;\r\n"
+"\r\n"
+"logical_or_expression\r\n"
+" logical_and_expression .and .loop logical_or_expression_1;\r\n"
+"logical_or_expression_1\r\n"
+" barbar .and logical_and_expression .and .true .emit OP_LOGICALOR;\r\n"
+"\r\n"
+"logical_and_expression\r\n"
+" or_expression .and .loop logical_and_expression_1;\r\n"
+"logical_and_expression_1\r\n"
+" ampersandampersand .and or_expression .and .true .emit OP_LOGICALAND;\r\n"
+"\r\n"
+"or_expression\r\n"
+" xor_expression .and .loop or_expression_1;\r\n"
+"or_expression_1\r\n"
+" bar .and xor_expression .and .true .emit OP_OR;\r\n"
+"\r\n"
+"xor_expression\r\n"
+" and_expression .and .loop xor_expression_1;\r\n"
+"xor_expression_1\r\n"
+" caret .and and_expression .and .true .emit OP_XOR;\r\n"
+"\r\n"
+"and_expression\r\n"
+" equality_expression .and .loop and_expression_1;\r\n"
+"and_expression_1\r\n"
+" ampersand .and equality_expression .and .true .emit OP_AND;\r\n"
+"\r\n"
+"equality_expression\r\n"
+" relational_expression .and .loop equality_expression_1;\r\n"
+"equality_expression_1\r\n"
+" equality_expression_2 .or equality_expression_3;\r\n"
+"equality_expression_2\r\n"
+" equalsequals .and relational_expression .and .true .emit OP_EQUAL;\r\n"
+"equality_expression_3\r\n"
+" bangequals .and relational_expression .and .true .emit OP_NOTEQUAL;\r\n"
+"\r\n"
+"relational_expression\r\n"
+" shift_expression .and .loop relational_expression_1;\r\n"
+"relational_expression_1\r\n"
+" relational_expression_2 .or relational_expression_3 .or relational_expression_4 .or\r\n"
+" relational_expression_5;\r\n"
+"relational_expression_2\r\n"
+" lessequals .and shift_expression .and .true .emit OP_LESSEQUAL;\r\n"
+"relational_expression_3\r\n"
+" greaterequals .and shift_expression .and .true .emit OP_GREATEREQUAL;\r\n"
+"relational_expression_4\r\n"
+" less .and shift_expression .and .true .emit OP_LESS;\r\n"
+"relational_expression_5\r\n"
+" greater .and shift_expression .and .true .emit OP_GREATER;\r\n"
+"\r\n"
+"shift_expression\r\n"
+" additive_expression .and .loop shift_expression_1;\r\n"
+"shift_expression_1\r\n"
+" shift_expression_2 .or shift_expression_3;\r\n"
+"shift_expression_2\r\n"
+" lessless .and additive_expression .and .true .emit OP_LEFTSHIFT;\r\n"
+"shift_expression_3\r\n"
+" greatergreater .and additive_expression .and .true .emit OP_RIGHTSHIFT;\r\n"
+"\r\n"
+"additive_expression\r\n"
+" multiplicative_expression .and .loop additive_expression_1;\r\n"
+"additive_expression_1\r\n"
+" additive_expression_2 .or additive_expression_3;\r\n"
+"additive_expression_2\r\n"
+" plus .and multiplicative_expression .and .true .emit OP_ADD;\r\n"
+"additive_expression_3\r\n"
+" dash .and multiplicative_expression .and .true .emit OP_SUBTRACT;\r\n"
+"\r\n"
+"multiplicative_expression\r\n"
+" unary_expression .and .loop multiplicative_expression_1;\r\n"
+"multiplicative_expression_1\r\n"
+" multiplicative_expression_2 .or multiplicative_expression_3 .or multiplicative_expression_4;\r\n"
+"multiplicative_expression_2\r\n"
+" star .and unary_expression .and .true .emit OP_MULTIPLY;\r\n"
+"multiplicative_expression_3\r\n"
+" slash .and unary_expression .and .true .emit OP_DIVIDE;\r\n"
+"multiplicative_expression_4\r\n"
+" percent .and unary_expression .and .true .emit OP_MODULUS;\r\n"
+"\r\n"
+"unary_expression\r\n"
+" primary_expression .or unary_expression_1 .or unary_expression_2 .or unary_expression_3 .or\r\n"
+" unary_expression_4;\r\n"
+"unary_expression_1\r\n"
+" plus .and unary_expression .and .true .emit OP_PLUS;\r\n"
+"unary_expression_2\r\n"
+" dash .and unary_expression .and .true .emit OP_MINUS;\r\n"
+"unary_expression_3\r\n"
+" bang .and unary_expression .and .true .emit OP_NEGATE;\r\n"
+"unary_expression_4\r\n"
+" tilda .and unary_expression .and .true .emit OP_COMPLEMENT;\r\n"
+"\r\n"
+"primary_expression\r\n"
+" intconstant .or primary_expression_1;\r\n"
+"primary_expression_1\r\n"
+" lparen .and logical_or_expression .and rparen;\r\n"
+"\r\n"
+"intconstant\r\n"
+" integer .emit OP_PUSHINT;\r\n"
+"\r\n"
+"integer\r\n"
+" integer_dec;\r\n"
+"\r\n"
+"integer_dec\r\n"
+" digit_dec .emit 10 .emit * .and .loop digit_dec .emit * .and .true .emit '\\0';\r\n"
+"\r\n"
+"digit_dec\r\n"
+" '0'-'9';\r\n"
+"\r\n"
+"optional_space\r\n"
+" .loop single_space;\r\n"
+"\r\n"
+"space\r\n"
+" single_space .and .loop single_space;\r\n"
+"\r\n"
+"single_space\r\n"
+" ' ' .or '\\t';\r\n"
+"\r\n"
+"ampersand\r\n"
+" optional_space .and '&' .and optional_space;\r\n"
+"\r\n"
+"ampersandampersand\r\n"
+" optional_space .and '&' .and '&' .and optional_space;\r\n"
+"\r\n"
+"bang\r\n"
+" optional_space .and '!' .and optional_space;\r\n"
+"\r\n"
+"bangequals\r\n"
+" optional_space .and '!' .and '=' .and optional_space;\r\n"
+"\r\n"
+"bar\r\n"
+" optional_space .and '|' .and optional_space;\r\n"
+"\r\n"
+"barbar\r\n"
+" optional_space .and '|' .and '|' .and optional_space;\r\n"
+"\r\n"
+"caret\r\n"
+" optional_space .and '^' .and optional_space;\r\n"
+"\r\n"
+"dash\r\n"
+" optional_space .and '-' .and optional_space;\r\n"
+"\r\n"
+"equalsequals\r\n"
+" optional_space .and '=' .and '=' .and optional_space;\r\n"
+"\r\n"
+"greater\r\n"
+" optional_space .and '>' .and optional_space;\r\n"
+"\r\n"
+"greaterequals\r\n"
+" optional_space .and '>' .and '=' .and optional_space;\r\n"
+"\r\n"
+"greatergreater\r\n"
+" optional_space .and '>' .and '>' .and optional_space;\r\n"
+"\r\n"
+"less\r\n"
+" optional_space .and '<' .and optional_space;\r\n"
+"\r\n"
+"lessequals\r\n"
+" optional_space .and '<' .and '=' .and optional_space;\r\n"
+"\r\n"
+"lessless\r\n"
+" optional_space .and '<' .and '<' .and optional_space;\r\n"
+"\r\n"
+"lparen\r\n"
+" optional_space .and '(' .and optional_space;\r\n"
+"\r\n"
+"percent\r\n"
+" optional_space .and '%' .and optional_space;\r\n"
+"\r\n"
+"plus\r\n"
+" optional_space .and '+' .and optional_space;\r\n"
+"\r\n"
+"rparen\r\n"
+" optional_space .and ')' .and optional_space;\r\n"
+"\r\n"
+"slash\r\n"
+" optional_space .and '/' .and optional_space;\r\n"
+"\r\n"
+"star\r\n"
+" optional_space .and '*' .and optional_space;\r\n"
+"\r\n"
+"tilda\r\n"
+" optional_space .and '~' .and optional_space;\r\n"
+"\r\n"
+""
index f48f3ddf0baa5ac843bed4722b514e641d4b127c..d5e9317b5d402903402b24c19c2116ed728cb30c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.5
+ * Version:  6.6
  *
  * Copyright (C) 2005-2006  Brian Paul   All Rights Reserved.
  *
@@ -23,7 +23,7 @@
  */
 
 /**
- * \file slang_version.syn
+ * \file slang_pp_version.syn
  * slang #version directive syntax
  * \author Michal Krol
  */
index f08c329303ca70b63ad227ecfa6bcfad77a45078..ad89472ba3b3a9a21755dd0dcc77145a9d2cadfc 100644 (file)
@@ -1,3 +1,6 @@
+
+/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE .syn FILE */
+
 ".syntax translation_unit;\n"
 ".emtcode REVISION 3\n"
 ".emtcode EXTERNAL_NULL 0\n"