diff options
-rwxr-xr-x | src/mesa/shader/slang/library/slang_pp_directives.syn | 770 | ||||
-rw-r--r-- | src/mesa/shader/slang/library/slang_pp_directives_syn.h | 568 | ||||
-rwxr-xr-x | src/mesa/shader/slang/library/slang_pp_expression.syn | 530 | ||||
-rw-r--r-- | src/mesa/shader/slang/library/slang_pp_expression_syn.h | 405 |
4 files changed, 1060 insertions, 1213 deletions
diff --git a/src/mesa/shader/slang/library/slang_pp_directives.syn b/src/mesa/shader/slang/library/slang_pp_directives.syn index 5cbd15fd33d..d4a321034d1 100755 --- a/src/mesa/shader/slang/library/slang_pp_directives.syn +++ b/src/mesa/shader/slang/library/slang_pp_directives.syn @@ -1,385 +1,385 @@ -/*
- * Mesa 3-D graphics library
- * Version: 6.6
- *
- * Copyright (C) 2006 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * \file slang_pp_directives.syn
- * slang preprocessor directives parser
- * \author Michal Krol
- */
-
-.syntax source;
-
-/*
- * This syntax script preprocesses a GLSL shader.
- * It is assumed, that the #version directive has been parsed. Separate pass for parsing
- * version gives better control on behavior depending on the version number given.
- *
- * The output is a source string with comments and directives removed. White spaces and comments
- * are replaced with on or more spaces. All new-lines are preserved and converted to Linux format.
- * Directives are escaped with a null character. The end of the source string is marked by
- * two consecutive null characters. The consumer is responsible for executing the escaped
- * directives, removing dead portions of code and expanding macros.
- */
-
-.emtcode ESCAPE_TOKEN 0
-
-/*
- * The TOKEN_* symbols follow the ESCAPE_TOKEN.
- *
- * NOTE:
- * There is no TOKEN_IFDEF and neither is TOKEN_IFNDEF. They are handled with TOKEN_IF and
- * operator defined.
- * The "#ifdef SYMBOL" is replaced with "#if defined SYMBOL"
- * The "#ifndef SYMBOL" is replaced with "#if !defined SYMBOL"
- */
-.emtcode TOKEN_END 0
-.emtcode TOKEN_DEFINE 1
-.emtcode TOKEN_UNDEF 2
-.emtcode TOKEN_IF 3
-.emtcode TOKEN_ELSE 4
-.emtcode TOKEN_ELIF 5
-.emtcode TOKEN_ENDIF 6
-.emtcode TOKEN_ERROR 7
-.emtcode TOKEN_PRAGMA 8
-.emtcode TOKEN_EXTENSION 9
-.emtcode TOKEN_LINE 10
-
-/*
- * The PARAM_* symbols follow the TOKEN_DEFINE.
- */
-.emtcode PARAM_END 0
-.emtcode PARAM_PARAMETER 1
-
-/*
- * The BEHAVIOR_* symbols follow the TOKEN_EXTENSION.
- */
-.emtcode BEHAVIOR_REQUIRE 1
-.emtcode BEHAVIOR_ENABLE 2
-.emtcode BEHAVIOR_WARN 3
-.emtcode BEHAVIOR_DISABLE 4
-
-source
- optional_directive .and .loop source_element .and '\0' .emit ESCAPE_TOKEN .emit TOKEN_END;
-
-source_element
- c_style_comment_block .or cpp_style_comment_block .or new_line_directive .or source_token;
-
-c_style_comment_block
- '/' .and '*' .and c_style_comment_rest .and .true .emit ' ';
-
-c_style_comment_rest
- .loop c_style_comment_body .and c_style_comment_end;
-
-c_style_comment_body
- c_style_comment_char_nostar .or c_style_comment_char_star_noslashstar;
-
-c_style_comment_char_nostar
- new_line .or '\x2B'-'\xFF' .or '\x01'-'\x29';
-
-c_style_comment_char_star_noslashstar
- '*' .and c_style_comment_char_star_noslashstar_1;
-c_style_comment_char_star_noslashstar_1
- c_style_comment_char_noslashstar .or c_style_comment_char_star_noslashstar;
-
-c_style_comment_char_noslashstar
- new_line .or '\x30'-'\xFF' .or '\x01'-'\x29' .or '\x2B'-'\x2E';
-
-c_style_comment_end
- '*' .and .loop c_style_comment_char_star .and '/';
-
-c_style_comment_char_star
- '*';
-
-cpp_style_comment_block
- '/' .and '/' .and cpp_style_comment_block_1;
-cpp_style_comment_block_1
- cpp_style_comment_block_2 .or cpp_style_comment_block_3;
-cpp_style_comment_block_2
- .loop cpp_style_comment_char .and new_line_directive;
-cpp_style_comment_block_3
- .loop cpp_style_comment_char;
-
-cpp_style_comment_char
- '\x0E'-'\xFF' .or '\x01'-'\x09' .or '\x0B'-'\x0C';
-
-new_line_directive
- new_line .and optional_directive;
-
-new_line
- generic_new_line .emit '\n';
-
-generic_new_line
- carriage_return_line_feed .or line_feed_carriage_return .or '\n' .or '\r';
-
-carriage_return_line_feed
- '\r' .and '\n';
-
-line_feed_carriage_return
- '\n' .and '\r';
-
-optional_directive
- directive .emit ESCAPE_TOKEN .or .true;
-
-directive
- dir_define .emit TOKEN_DEFINE .or
- dir_undef .emit TOKEN_UNDEF .or
- dir_if .emit TOKEN_IF .or
- dir_ifdef .emit TOKEN_IF .emit 'd' .emit 'e' .emit 'f' .emit 'i' .emit 'n' .emit 'e' .emit 'd'
- .emit ' ' .or
- dir_ifndef .emit TOKEN_IF .emit '!' .emit 'd' .emit 'e' .emit 'f' .emit 'i' .emit 'n' .emit 'e'
- .emit 'd' .emit ' ' .or
- dir_else .emit TOKEN_ELSE .or
- dir_elif .emit TOKEN_ELIF .or
- dir_endif .emit TOKEN_ENDIF .or
- dir_ext .emit TOKEN_EXTENSION .or
- dir_line .emit TOKEN_LINE;
-
-dir_define
- optional_space .and '#' .and optional_space .and "define" .and symbol .and opt_parameters .and
- definition;
-
-dir_undef
- optional_space .and '#' .and optional_space .and "undef" .and symbol;
-
-dir_if
- optional_space .and '#' .and optional_space .and "if" .and expression;
-
-dir_ifdef
- optional_space .and '#' .and optional_space .and "ifdef" .and symbol;
-
-dir_ifndef
- optional_space .and '#' .and optional_space .and "ifndef" .and symbol;
-
-dir_else
- optional_space .and '#' .and optional_space .and "else";
-
-dir_elif
- optional_space .and '#' .and optional_space .and "elif" .and expression;
-
-dir_endif
- optional_space .and '#' .and optional_space .and "endif";
-
-dir_ext
- optional_space .and '#' .and optional_space .and "extension" .and space .and extension_name .and
- optional_space .and ':' .and optional_space .and extension_behavior;
-
-dir_line
- optional_space .and '#' .and optional_space .and "line" .and expression;
-
-symbol
- space .and symbol_character .emit * .and .loop symbol_character2 .emit * .and .true .emit '\0';
-
-opt_parameters
- parameters .or .true .emit PARAM_END;
-
-parameters
- '(' .and parameters_1 .and optional_space .and ')' .emit PARAM_END;
-parameters_1
- parameters_2 .or .true;
-parameters_2
- parameter .emit PARAM_PARAMETER .and .loop parameters_3;
-parameters_3
- optional_space .and ',' .and parameter .emit PARAM_PARAMETER;
-
-parameter
- optional_space .and symbol_character .emit * .and .loop symbol_character2 .emit * .and
- .true .emit '\0';
-
-definition
- .loop definition_character .emit * .and .true .emit '\0';
-
-definition_character
- '\x0E'-'\xFF' .or '\x01'-'\x09' .or '\x0B'-'\x0C';
-
-expression
- expression_element .and .loop expression_element .and .true .emit '\0';
-
-expression_element
- expression_character .emit *;
-
-expression_character
- '\x0E'-'\xFF' .or '\x01'-'\x09' .or '\x0B'-'\x0C';
-
-extension_name
- symbol_character .emit * .and .loop symbol_character2 .emit * .and .true .emit '\0';
-
-extension_behavior
- "require" .emit BEHAVIOR_REQUIRE .or
- "enable" .emit BEHAVIOR_ENABLE .or
- "warn" .emit BEHAVIOR_WARN .or
- "disable" .emit BEHAVIOR_DISABLE;
-
-optional_space
- .loop single_space;
-
-space
- single_space .and .loop single_space;
-
-single_space
- ' ' .or '\t';
-
-source_token
- space .emit ' ' .or complex_token .or source_token_1;
-source_token_1
- simple_token .emit ' ' .and .true .emit ' ';
-
-/*
- * All possible tokens.
- */
-
-complex_token
- identifier .or number;
-
-simple_token
- increment .or decrement .or lequal .or gequal .or equal .or nequal .or and .or xor .or or .or
- addto .or subtractfrom .or multiplyto .or divideto .or other;
-
-identifier
- identifier_char1 .emit * .and .loop identifier_char2 .emit *;
-identifier_char1
- 'a'-'z' .or 'A'-'Z' .or '_';
-identifier_char2
- 'a'-'z' .or 'A'-'Z' .or '0'-'9' .or '_';
-
-number
- float .or integer;
-
-digit_oct
- '0'-'7';
-
-digit_dec
- '0'-'9';
-
-digit_hex
- '0'-'9' .or 'A'-'F' .or 'a'-'f';
-
-float
- float_1 .or float_2;
-float_1
- float_fractional_constant .and float_optional_exponent_part;
-float_2
- float_digit_sequence .and float_exponent_part;
-
-float_fractional_constant
- float_fractional_constant_1 .or float_fractional_constant_2 .or float_fractional_constant_3;
-float_fractional_constant_1
- float_digit_sequence .and '.' .emit '.' .and float_digit_sequence;
-float_fractional_constant_2
- float_digit_sequence .and '.' .emit '.';
-float_fractional_constant_3
- '.' .emit '.' .and float_digit_sequence;
-
-float_optional_exponent_part
- float_exponent_part .or .true;
-
-float_digit_sequence
- digit_dec .emit * .and .loop digit_dec .emit *;
-
-float_exponent_part
- float_exponent_part_1 .or float_exponent_part_2;
-float_exponent_part_1
- 'e' .emit 'e' .and float_optional_sign .and float_digit_sequence;
-float_exponent_part_2
- 'E' .emit 'E' .and float_optional_sign .and float_digit_sequence;
-
-float_optional_sign
- '+' .emit '+' .or '-' .emit '-' .or .true;
-
-integer
- integer_hex .or integer_oct .or integer_dec;
-
-integer_hex
- '0' .emit '0' .and integer_hex_1 .emit * .and digit_hex .emit * .and
- .loop digit_hex .emit *;
-integer_hex_1
- 'x' .or 'X';
-
-integer_oct
- '0' .emit '0' .and .loop digit_oct .emit *;
-
-integer_dec
- digit_dec .emit * .and .loop digit_dec .emit *;
-
-increment
- '+' .emit * .and '+' .emit *;
-
-decrement
- '-' .emit * .and '-' .emit *;
-
-lequal
- '<' .emit * .and '=' .emit *;
-
-gequal
- '>' .emit * .and '=' .emit *;
-
-equal
- '=' .emit * .and '=' .emit *;
-
-nequal
- '!' .emit * .and '=' .emit *;
-
-and
- '&' .emit * .and '&' .emit *;
-
-xor
- '^' .emit * .and '^' .emit *;
-
-or
- '|' .emit * .and '|' .emit *;
-
-addto
- '+' .emit * .and '=' .emit *;
-
-subtractfrom
- '-' .emit * .and '=' .emit *;
-
-multiplyto
- '*' .emit * .and '=' .emit *;
-
-divideto
- '/' .emit * .and '=' .emit *;
-
-/*
- * All characters except '\0' and '#'.
- */
-other
- '\x24'-'\xFF' .emit * .or '\x01'-'\x22' .emit *;
-
-symbol_character
- 'A'-'Z' .or 'a'-'z' .or '_';
-
-symbol_character2
- 'A'-'Z' .or 'a'-'z' .or '0'-'9' .or '_';
-
-.string string_lexer;
-
-string_lexer
- lex_first_identifier_character .and .loop lex_next_identifier_character;
-
-lex_first_identifier_character
- 'a'-'z' .or 'A'-'Z' .or '_';
-
-lex_next_identifier_character
- 'a'-'z' .or 'A'-'Z' .or '0'-'9' .or '_';
-
+/* + * Mesa 3-D graphics library + * Version: 6.6 + * + * Copyright (C) 2006 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * \file slang_pp_directives.syn + * slang preprocessor directives parser + * \author Michal Krol + */ + +.syntax source; + +/* + * This syntax script preprocesses a GLSL shader. + * It is assumed, that the #version directive has been parsed. Separate pass for parsing + * version gives better control on behavior depending on the version number given. + * + * The output is a source string with comments and directives removed. White spaces and comments + * are replaced with on or more spaces. All new-lines are preserved and converted to Linux format. + * Directives are escaped with a null character. The end of the source string is marked by + * two consecutive null characters. The consumer is responsible for executing the escaped + * directives, removing dead portions of code and expanding macros. + */ + +.emtcode ESCAPE_TOKEN 0 + +/* + * The TOKEN_* symbols follow the ESCAPE_TOKEN. + * + * NOTE: + * There is no TOKEN_IFDEF and neither is TOKEN_IFNDEF. They are handled with TOKEN_IF and + * operator defined. + * The "#ifdef SYMBOL" is replaced with "#if defined SYMBOL" + * The "#ifndef SYMBOL" is replaced with "#if !defined SYMBOL" + */ +.emtcode TOKEN_END 0 +.emtcode TOKEN_DEFINE 1 +.emtcode TOKEN_UNDEF 2 +.emtcode TOKEN_IF 3 +.emtcode TOKEN_ELSE 4 +.emtcode TOKEN_ELIF 5 +.emtcode TOKEN_ENDIF 6 +.emtcode TOKEN_ERROR 7 +.emtcode TOKEN_PRAGMA 8 +.emtcode TOKEN_EXTENSION 9 +.emtcode TOKEN_LINE 10 + +/* + * The PARAM_* symbols follow the TOKEN_DEFINE. + */ +.emtcode PARAM_END 0 +.emtcode PARAM_PARAMETER 1 + +/* + * The BEHAVIOR_* symbols follow the TOKEN_EXTENSION. + */ +.emtcode BEHAVIOR_REQUIRE 1 +.emtcode BEHAVIOR_ENABLE 2 +.emtcode BEHAVIOR_WARN 3 +.emtcode BEHAVIOR_DISABLE 4 + +source + optional_directive .and .loop source_element .and '\0' .emit ESCAPE_TOKEN .emit TOKEN_END; + +source_element + c_style_comment_block .or cpp_style_comment_block .or new_line_directive .or source_token; + +c_style_comment_block + '/' .and '*' .and c_style_comment_rest .and .true .emit ' '; + +c_style_comment_rest + .loop c_style_comment_body .and c_style_comment_end; + +c_style_comment_body + c_style_comment_char_nostar .or c_style_comment_char_star_noslashstar; + +c_style_comment_char_nostar + new_line .or '\x2B'-'\xFF' .or '\x01'-'\x29'; + +c_style_comment_char_star_noslashstar + '*' .and c_style_comment_char_star_noslashstar_1; +c_style_comment_char_star_noslashstar_1 + c_style_comment_char_noslashstar .or c_style_comment_char_star_noslashstar; + +c_style_comment_char_noslashstar + new_line .or '\x30'-'\xFF' .or '\x01'-'\x29' .or '\x2B'-'\x2E'; + +c_style_comment_end + '*' .and .loop c_style_comment_char_star .and '/'; + +c_style_comment_char_star + '*'; + +cpp_style_comment_block + '/' .and '/' .and cpp_style_comment_block_1; +cpp_style_comment_block_1 + cpp_style_comment_block_2 .or cpp_style_comment_block_3; +cpp_style_comment_block_2 + .loop cpp_style_comment_char .and new_line_directive; +cpp_style_comment_block_3 + .loop cpp_style_comment_char; + +cpp_style_comment_char + '\x0E'-'\xFF' .or '\x01'-'\x09' .or '\x0B'-'\x0C'; + +new_line_directive + new_line .and optional_directive; + +new_line + generic_new_line .emit '\n'; + +generic_new_line + carriage_return_line_feed .or line_feed_carriage_return .or '\n' .or '\r'; + +carriage_return_line_feed + '\r' .and '\n'; + +line_feed_carriage_return + '\n' .and '\r'; + +optional_directive + directive .emit ESCAPE_TOKEN .or .true; + +directive + dir_define .emit TOKEN_DEFINE .or + dir_undef .emit TOKEN_UNDEF .or + dir_if .emit TOKEN_IF .or + dir_ifdef .emit TOKEN_IF .emit 'd' .emit 'e' .emit 'f' .emit 'i' .emit 'n' .emit 'e' .emit 'd' + .emit ' ' .or + dir_ifndef .emit TOKEN_IF .emit '!' .emit 'd' .emit 'e' .emit 'f' .emit 'i' .emit 'n' .emit 'e' + .emit 'd' .emit ' ' .or + dir_else .emit TOKEN_ELSE .or + dir_elif .emit TOKEN_ELIF .or + dir_endif .emit TOKEN_ENDIF .or + dir_ext .emit TOKEN_EXTENSION .or + dir_line .emit TOKEN_LINE; + +dir_define + optional_space .and '#' .and optional_space .and "define" .and symbol .and opt_parameters .and + definition; + +dir_undef + optional_space .and '#' .and optional_space .and "undef" .and symbol; + +dir_if + optional_space .and '#' .and optional_space .and "if" .and expression; + +dir_ifdef + optional_space .and '#' .and optional_space .and "ifdef" .and symbol; + +dir_ifndef + optional_space .and '#' .and optional_space .and "ifndef" .and symbol; + +dir_else + optional_space .and '#' .and optional_space .and "else"; + +dir_elif + optional_space .and '#' .and optional_space .and "elif" .and expression; + +dir_endif + optional_space .and '#' .and optional_space .and "endif"; + +dir_ext + optional_space .and '#' .and optional_space .and "extension" .and space .and extension_name .and + optional_space .and ':' .and optional_space .and extension_behavior; + +dir_line + optional_space .and '#' .and optional_space .and "line" .and expression; + +symbol + space .and symbol_character .emit * .and .loop symbol_character2 .emit * .and .true .emit '\0'; + +opt_parameters + parameters .or .true .emit PARAM_END; + +parameters + '(' .and parameters_1 .and optional_space .and ')' .emit PARAM_END; +parameters_1 + parameters_2 .or .true; +parameters_2 + parameter .emit PARAM_PARAMETER .and .loop parameters_3; +parameters_3 + optional_space .and ',' .and parameter .emit PARAM_PARAMETER; + +parameter + optional_space .and symbol_character .emit * .and .loop symbol_character2 .emit * .and + .true .emit '\0'; + +definition + .loop definition_character .emit * .and .true .emit '\0'; + +definition_character + '\x0E'-'\xFF' .or '\x01'-'\x09' .or '\x0B'-'\x0C'; + +expression + expression_element .and .loop expression_element .and .true .emit '\0'; + +expression_element + expression_character .emit *; + +expression_character + '\x0E'-'\xFF' .or '\x01'-'\x09' .or '\x0B'-'\x0C'; + +extension_name + symbol_character .emit * .and .loop symbol_character2 .emit * .and .true .emit '\0'; + +extension_behavior + "require" .emit BEHAVIOR_REQUIRE .or + "enable" .emit BEHAVIOR_ENABLE .or + "warn" .emit BEHAVIOR_WARN .or + "disable" .emit BEHAVIOR_DISABLE; + +optional_space + .loop single_space; + +space + single_space .and .loop single_space; + +single_space + ' ' .or '\t'; + +source_token + space .emit ' ' .or complex_token .or source_token_1; +source_token_1 + simple_token .emit ' ' .and .true .emit ' '; + +/* + * All possible tokens. + */ + +complex_token + identifier .or number; + +simple_token + increment .or decrement .or lequal .or gequal .or equal .or nequal .or and .or xor .or or .or + addto .or subtractfrom .or multiplyto .or divideto .or other; + +identifier + identifier_char1 .emit * .and .loop identifier_char2 .emit *; +identifier_char1 + 'a'-'z' .or 'A'-'Z' .or '_'; +identifier_char2 + 'a'-'z' .or 'A'-'Z' .or '0'-'9' .or '_'; + +number + float .or integer; + +digit_oct + '0'-'7'; + +digit_dec + '0'-'9'; + +digit_hex + '0'-'9' .or 'A'-'F' .or 'a'-'f'; + +float + float_1 .or float_2; +float_1 + float_fractional_constant .and float_optional_exponent_part; +float_2 + float_digit_sequence .and float_exponent_part; + +float_fractional_constant + float_fractional_constant_1 .or float_fractional_constant_2 .or float_fractional_constant_3; +float_fractional_constant_1 + float_digit_sequence .and '.' .emit '.' .and float_digit_sequence; +float_fractional_constant_2 + float_digit_sequence .and '.' .emit '.'; +float_fractional_constant_3 + '.' .emit '.' .and float_digit_sequence; + +float_optional_exponent_part + float_exponent_part .or .true; + +float_digit_sequence + digit_dec .emit * .and .loop digit_dec .emit *; + +float_exponent_part + float_exponent_part_1 .or float_exponent_part_2; +float_exponent_part_1 + 'e' .emit 'e' .and float_optional_sign .and float_digit_sequence; +float_exponent_part_2 + 'E' .emit 'E' .and float_optional_sign .and float_digit_sequence; + +float_optional_sign + '+' .emit '+' .or '-' .emit '-' .or .true; + +integer + integer_hex .or integer_oct .or integer_dec; + +integer_hex + '0' .emit '0' .and integer_hex_1 .emit * .and digit_hex .emit * .and + .loop digit_hex .emit *; +integer_hex_1 + 'x' .or 'X'; + +integer_oct + '0' .emit '0' .and .loop digit_oct .emit *; + +integer_dec + digit_dec .emit * .and .loop digit_dec .emit *; + +increment + '+' .emit * .and '+' .emit *; + +decrement + '-' .emit * .and '-' .emit *; + +lequal + '<' .emit * .and '=' .emit *; + +gequal + '>' .emit * .and '=' .emit *; + +equal + '=' .emit * .and '=' .emit *; + +nequal + '!' .emit * .and '=' .emit *; + +and + '&' .emit * .and '&' .emit *; + +xor + '^' .emit * .and '^' .emit *; + +or + '|' .emit * .and '|' .emit *; + +addto + '+' .emit * .and '=' .emit *; + +subtractfrom + '-' .emit * .and '=' .emit *; + +multiplyto + '*' .emit * .and '=' .emit *; + +divideto + '/' .emit * .and '=' .emit *; + +/* + * All characters except '\0' and '#'. + */ +other + '\x24'-'\xFF' .emit * .or '\x01'-'\x22' .emit *; + +symbol_character + 'A'-'Z' .or 'a'-'z' .or '_'; + +symbol_character2 + 'A'-'Z' .or 'a'-'z' .or '0'-'9' .or '_'; + +.string string_lexer; + +string_lexer + lex_first_identifier_character .and .loop lex_next_identifier_character; + +lex_first_identifier_character + 'a'-'z' .or 'A'-'Z' .or '_'; + +lex_next_identifier_character + 'a'-'z' .or 'A'-'Z' .or '0'-'9' .or '_'; + diff --git a/src/mesa/shader/slang/library/slang_pp_directives_syn.h b/src/mesa/shader/slang/library/slang_pp_directives_syn.h index 71c08ca8240..35e7bc27616 100644 --- a/src/mesa/shader/slang/library/slang_pp_directives_syn.h +++ b/src/mesa/shader/slang/library/slang_pp_directives_syn.h @@ -1,337 +1,239 @@ /* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE .syn FILE */ -"
\n" -"
\n" -"
\n" -"
\n" -".syntax source;
\n" -"
\n" -"
\n" -"
\n" -".emtcode ESCAPE_TOKEN 0
\n" -"
\n" -"
\n" -".emtcode TOKEN_END 0
\n" -".emtcode TOKEN_DEFINE 1
\n" -".emtcode TOKEN_UNDEF 2
\n" -".emtcode TOKEN_IF 3
\n" -".emtcode TOKEN_ELSE 4
\n" -".emtcode TOKEN_ELIF 5
\n" -".emtcode TOKEN_ENDIF 6
\n" -".emtcode TOKEN_ERROR 7
\n" -".emtcode TOKEN_PRAGMA 8
\n" -".emtcode TOKEN_EXTENSION 9
\n" -".emtcode TOKEN_LINE 10
\n" -"
\n" -"
\n" -".emtcode PARAM_END 0
\n" -".emtcode PARAM_PARAMETER 1
\n" -"
\n" -"
\n" -".emtcode BEHAVIOR_REQUIRE 1
\n" -".emtcode BEHAVIOR_ENABLE 2
\n" -".emtcode BEHAVIOR_WARN 3
\n" -".emtcode BEHAVIOR_DISABLE 4
\n" -"
\n" -"source
\n" -" optional_directive .and .loop source_element .and '\\0' .emit ESCAPE_TOKEN .emit TOKEN_END;
\n" -"
\n" -"source_element
\n" -" c_style_comment_block .or cpp_style_comment_block .or new_line_directive .or source_token;
\n" -"
\n" -"c_style_comment_block
\n" -" '/' .and '*' .and c_style_comment_rest .and .true .emit ' ';
\n" -"
\n" -"c_style_comment_rest
\n" -" .loop c_style_comment_body .and c_style_comment_end;
\n" -"
\n" -"c_style_comment_body
\n" -" c_style_comment_char_nostar .or c_style_comment_char_star_noslashstar;
\n" -"
\n" -"c_style_comment_char_nostar
\n" -" new_line .or '\\x2B'-'\\xFF' .or '\\x01'-'\\x29';
\n" -"
\n" -"c_style_comment_char_star_noslashstar
\n" -" '*' .and c_style_comment_char_star_noslashstar_1;
\n" -"c_style_comment_char_star_noslashstar_1
\n" -" c_style_comment_char_noslashstar .or c_style_comment_char_star_noslashstar;
\n" -"
\n" -"c_style_comment_char_noslashstar
\n" -" new_line .or '\\x30'-'\\xFF' .or '\\x01'-'\\x29' .or '\\x2B'-'\\x2E';
\n" -"
\n" -"c_style_comment_end
\n" -" '*' .and .loop c_style_comment_char_star .and '/';
\n" -"
\n" -"c_style_comment_char_star
\n" -" '*';
\n" -"
\n" -"cpp_style_comment_block
\n" -" '/' .and '/' .and cpp_style_comment_block_1;
\n" -"cpp_style_comment_block_1
\n" -" cpp_style_comment_block_2 .or cpp_style_comment_block_3;
\n" -"cpp_style_comment_block_2
\n" -" .loop cpp_style_comment_char .and new_line_directive;
\n" -"cpp_style_comment_block_3
\n" -" .loop cpp_style_comment_char;
\n" -"
\n" -"cpp_style_comment_char
\n" -" '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';
\n" -"
\n" -"new_line_directive
\n" -" new_line .and optional_directive;
\n" -"
\n" -"new_line
\n" -" generic_new_line .emit '\\n';
\n" -"
\n" -"generic_new_line
\n" -" carriage_return_line_feed .or line_feed_carriage_return .or '\\n' .or '\\r';
\n" -"
\n" -"carriage_return_line_feed
\n" -" '\\r' .and '\\n';
\n" -"
\n" -"line_feed_carriage_return
\n" -" '\\n' .and '\\r';
\n" -"
\n" -"optional_directive
\n" -" directive .emit ESCAPE_TOKEN .or .true;
\n" -"
\n" -"directive
\n" -" dir_define .emit TOKEN_DEFINE .or
\n" -" dir_undef .emit TOKEN_UNDEF .or
\n" -" dir_if .emit TOKEN_IF .or
\n" -" dir_ifdef .emit TOKEN_IF .emit 'd' .emit 'e' .emit 'f' .emit 'i' .emit 'n' .emit 'e' .emit 'd'
\n" -" .emit ' ' .or
\n" -" dir_ifndef .emit TOKEN_IF .emit '!' .emit 'd' .emit 'e' .emit 'f' .emit 'i' .emit 'n' .emit 'e'
\n" -" .emit 'd' .emit ' ' .or
\n" -" dir_else .emit TOKEN_ELSE .or
\n" -" dir_elif .emit TOKEN_ELIF .or
\n" -" dir_endif .emit TOKEN_ENDIF .or
\n" -" dir_ext .emit TOKEN_EXTENSION .or
\n" -" dir_line .emit TOKEN_LINE;
\n" -"
\n" -"dir_define
\n" -" optional_space .and '#' .and optional_space .and \"define\" .and symbol .and opt_parameters .and
\n" -" definition;
\n" -"
\n" -"dir_undef
\n" -" optional_space .and '#' .and optional_space .and \"undef\" .and symbol;
\n" -"
\n" -"dir_if
\n" -" optional_space .and '#' .and optional_space .and \"if\" .and expression;
\n" -"
\n" -"dir_ifdef
\n" -" optional_space .and '#' .and optional_space .and \"ifdef\" .and symbol;
\n" -"
\n" -"dir_ifndef
\n" -" optional_space .and '#' .and optional_space .and \"ifndef\" .and symbol;
\n" -"
\n" -"dir_else
\n" -" optional_space .and '#' .and optional_space .and \"else\";
\n" -"
\n" -"dir_elif
\n" -" optional_space .and '#' .and optional_space .and \"elif\" .and expression;
\n" -"
\n" -"dir_endif
\n" -" optional_space .and '#' .and optional_space .and \"endif\";
\n" -"
\n" -"dir_ext
\n" -" optional_space .and '#' .and optional_space .and \"extension\" .and space .and extension_name .and
\n" -" optional_space .and ':' .and optional_space .and extension_behavior;
\n" -"
\n" -"dir_line
\n" -" optional_space .and '#' .and optional_space .and \"line\" .and expression;
\n" -"
\n" -"symbol
\n" -" space .and symbol_character .emit * .and .loop symbol_character2 .emit * .and .true .emit '\\0';
\n" -"
\n" -"opt_parameters
\n" -" parameters .or .true .emit PARAM_END;
\n" -"
\n" -"parameters
\n" -" '(' .and parameters_1 .and optional_space .and ')' .emit PARAM_END;
\n" -"parameters_1
\n" -" parameters_2 .or .true;
\n" -"parameters_2
\n" -" parameter .emit PARAM_PARAMETER .and .loop parameters_3;
\n" -"parameters_3
\n" -" optional_space .and ',' .and parameter .emit PARAM_PARAMETER;
\n" -"
\n" -"parameter
\n" -" optional_space .and symbol_character .emit * .and .loop symbol_character2 .emit * .and
\n" -" .true .emit '\\0';
\n" -"
\n" -"definition
\n" -" .loop definition_character .emit * .and .true .emit '\\0';
\n" -"
\n" -"definition_character
\n" -" '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';
\n" -"
\n" -"expression
\n" -" expression_element .and .loop expression_element .and .true .emit '\\0';
\n" -"
\n" -"expression_element
\n" -" expression_character .emit *;
\n" -"
\n" -"expression_character
\n" -" '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';
\n" -"
\n" -"extension_name
\n" -" symbol_character .emit * .and .loop symbol_character2 .emit * .and .true .emit '\\0';
\n" -"
\n" -"extension_behavior
\n" -" \"require\" .emit BEHAVIOR_REQUIRE .or
\n" -" \"enable\" .emit BEHAVIOR_ENABLE .or
\n" -" \"warn\" .emit BEHAVIOR_WARN .or
\n" -" \"disable\" .emit BEHAVIOR_DISABLE;
\n" -"
\n" -"optional_space
\n" -" .loop single_space;
\n" -"
\n" -"space
\n" -" single_space .and .loop single_space;
\n" -"
\n" -"single_space
\n" -" ' ' .or '\\t';
\n" -"
\n" -"source_token
\n" -" space .emit ' ' .or complex_token .or source_token_1;
\n" -"source_token_1
\n" -" simple_token .emit ' ' .and .true .emit ' ';
\n" -"
\n" -"
\n" -"
\n" -"complex_token
\n" -" identifier .or number;
\n" -"
\n" -"simple_token
\n" -" increment .or decrement .or lequal .or gequal .or equal .or nequal .or and .or xor .or or .or
\n" -" addto .or subtractfrom .or multiplyto .or divideto .or other;
\n" -"
\n" -"identifier
\n" -" identifier_char1 .emit * .and .loop identifier_char2 .emit *;
\n" -"identifier_char1
\n" -" 'a'-'z' .or 'A'-'Z' .or '_';
\n" -"identifier_char2
\n" -" 'a'-'z' .or 'A'-'Z' .or '0'-'9' .or '_';
\n" -"
\n" -"number
\n" -" float .or integer;
\n" -"
\n" -"digit_oct
\n" -" '0'-'7';
\n" -"
\n" -"digit_dec
\n" -" '0'-'9';
\n" -"
\n" -"digit_hex
\n" -" '0'-'9' .or 'A'-'F' .or 'a'-'f';
\n" -"
\n" -"float
\n" -" float_1 .or float_2;
\n" -"float_1
\n" -" float_fractional_constant .and float_optional_exponent_part;
\n" -"float_2
\n" -" float_digit_sequence .and float_exponent_part;
\n" -"
\n" -"float_fractional_constant
\n" -" float_fractional_constant_1 .or float_fractional_constant_2 .or float_fractional_constant_3;
\n" -"float_fractional_constant_1
\n" -" float_digit_sequence .and '.' .emit '.' .and float_digit_sequence;
\n" -"float_fractional_constant_2
\n" -" float_digit_sequence .and '.' .emit '.';
\n" -"float_fractional_constant_3
\n" -" '.' .emit '.' .and float_digit_sequence;
\n" -"
\n" -"float_optional_exponent_part
\n" -" float_exponent_part .or .true;
\n" -"
\n" -"float_digit_sequence
\n" -" digit_dec .emit * .and .loop digit_dec .emit *;
\n" -"
\n" -"float_exponent_part
\n" -" float_exponent_part_1 .or float_exponent_part_2;
\n" -"float_exponent_part_1
\n" -" 'e' .emit 'e' .and float_optional_sign .and float_digit_sequence;
\n" -"float_exponent_part_2
\n" -" 'E' .emit 'E' .and float_optional_sign .and float_digit_sequence;
\n" -"
\n" -"float_optional_sign
\n" -" '+' .emit '+' .or '-' .emit '-' .or .true;
\n" -"
\n" -"integer
\n" -" integer_hex .or integer_oct .or integer_dec;
\n" -"
\n" -"integer_hex
\n" -" '0' .emit '0' .and integer_hex_1 .emit * .and digit_hex .emit * .and
\n" -" .loop digit_hex .emit *;
\n" -"integer_hex_1
\n" -" 'x' .or 'X';
\n" -"
\n" -"integer_oct
\n" -" '0' .emit '0' .and .loop digit_oct .emit *;
\n" -"
\n" -"integer_dec
\n" -" digit_dec .emit * .and .loop digit_dec .emit *;
\n" -"
\n" -"increment
\n" -" '+' .emit * .and '+' .emit *;
\n" -"
\n" -"decrement
\n" -" '-' .emit * .and '-' .emit *;
\n" -"
\n" -"lequal
\n" -" '<' .emit * .and '=' .emit *;
\n" -"
\n" -"gequal
\n" -" '>' .emit * .and '=' .emit *;
\n" -"
\n" -"equal
\n" -" '=' .emit * .and '=' .emit *;
\n" -"
\n" -"nequal
\n" -" '!' .emit * .and '=' .emit *;
\n" -"
\n" -"and
\n" -" '&' .emit * .and '&' .emit *;
\n" -"
\n" -"xor
\n" -" '^' .emit * .and '^' .emit *;
\n" -"
\n" -"or
\n" -" '|' .emit * .and '|' .emit *;
\n" -"
\n" -"addto
\n" -" '+' .emit * .and '=' .emit *;
\n" -"
\n" -"subtractfrom
\n" -" '-' .emit * .and '=' .emit *;
\n" -"
\n" -"multiplyto
\n" -" '*' .emit * .and '=' .emit *;
\n" -"
\n" -"divideto
\n" -" '/' .emit * .and '=' .emit *;
\n" -"
\n" -"
\n" -"other
\n" -" '\\x24'-'\\xFF' .emit * .or '\\x01'-'\\x22' .emit *;
\n" -"
\n" -"symbol_character
\n" -" 'A'-'Z' .or 'a'-'z' .or '_';
\n" -"
\n" -"symbol_character2
\n" -" 'A'-'Z' .or 'a'-'z' .or '0'-'9' .or '_';
\n" -"
\n" -".string string_lexer;
\n" -"
\n" -"string_lexer
\n" -" lex_first_identifier_character .and .loop lex_next_identifier_character;
\n" -"
\n" -"lex_first_identifier_character
\n" -" 'a'-'z' .or 'A'-'Z' .or '_';
\n" -"
\n" -"lex_next_identifier_character
\n" -" 'a'-'z' .or 'A'-'Z' .or '0'-'9' .or '_';
\n" -"
\n" +".syntax source;\n" +".emtcode ESCAPE_TOKEN 0\n" +".emtcode TOKEN_END 0\n" +".emtcode TOKEN_DEFINE 1\n" +".emtcode TOKEN_UNDEF 2\n" +".emtcode TOKEN_IF 3\n" +".emtcode TOKEN_ELSE 4\n" +".emtcode TOKEN_ELIF 5\n" +".emtcode TOKEN_ENDIF 6\n" +".emtcode TOKEN_ERROR 7\n" +".emtcode TOKEN_PRAGMA 8\n" +".emtcode TOKEN_EXTENSION 9\n" +".emtcode TOKEN_LINE 10\n" +".emtcode PARAM_END 0\n" +".emtcode PARAM_PARAMETER 1\n" +".emtcode BEHAVIOR_REQUIRE 1\n" +".emtcode BEHAVIOR_ENABLE 2\n" +".emtcode BEHAVIOR_WARN 3\n" +".emtcode BEHAVIOR_DISABLE 4\n" +"source\n" +" optional_directive .and .loop source_element .and '\\0' .emit ESCAPE_TOKEN .emit TOKEN_END;\n" +"source_element\n" +" c_style_comment_block .or cpp_style_comment_block .or new_line_directive .or source_token;\n" +"c_style_comment_block\n" +" '/' .and '*' .and c_style_comment_rest .and .true .emit ' ';\n" +"c_style_comment_rest\n" +" .loop c_style_comment_body .and c_style_comment_end;\n" +"c_style_comment_body\n" +" c_style_comment_char_nostar .or c_style_comment_char_star_noslashstar;\n" +"c_style_comment_char_nostar\n" +" new_line .or '\\x2B'-'\\xFF' .or '\\x01'-'\\x29';\n" +"c_style_comment_char_star_noslashstar\n" +" '*' .and c_style_comment_char_star_noslashstar_1;\n" +"c_style_comment_char_star_noslashstar_1\n" +" c_style_comment_char_noslashstar .or c_style_comment_char_star_noslashstar;\n" +"c_style_comment_char_noslashstar\n" +" new_line .or '\\x30'-'\\xFF' .or '\\x01'-'\\x29' .or '\\x2B'-'\\x2E';\n" +"c_style_comment_end\n" +" '*' .and .loop c_style_comment_char_star .and '/';\n" +"c_style_comment_char_star\n" +" '*';\n" +"cpp_style_comment_block\n" +" '/' .and '/' .and cpp_style_comment_block_1;\n" +"cpp_style_comment_block_1\n" +" cpp_style_comment_block_2 .or cpp_style_comment_block_3;\n" +"cpp_style_comment_block_2\n" +" .loop cpp_style_comment_char .and new_line_directive;\n" +"cpp_style_comment_block_3\n" +" .loop cpp_style_comment_char;\n" +"cpp_style_comment_char\n" +" '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';\n" +"new_line_directive\n" +" new_line .and optional_directive;\n" +"new_line\n" +" generic_new_line .emit '\\n';\n" +"generic_new_line\n" +" carriage_return_line_feed .or line_feed_carriage_return .or '\\n' .or '\\r';\n" +"carriage_return_line_feed\n" +" '\\r' .and '\\n';\n" +"line_feed_carriage_return\n" +" '\\n' .and '\\r';\n" +"optional_directive\n" +" directive .emit ESCAPE_TOKEN .or .true;\n" +"directive\n" +" dir_define .emit TOKEN_DEFINE .or\n" +" dir_undef .emit TOKEN_UNDEF .or\n" +" dir_if .emit TOKEN_IF .or\n" +" dir_ifdef .emit TOKEN_IF .emit 'd' .emit 'e' .emit 'f' .emit 'i' .emit 'n' .emit 'e' .emit 'd'\n" +" .emit ' ' .or\n" +" dir_ifndef .emit TOKEN_IF .emit '!' .emit 'd' .emit 'e' .emit 'f' .emit 'i' .emit 'n' .emit 'e'\n" +" .emit 'd' .emit ' ' .or\n" +" dir_else .emit TOKEN_ELSE .or\n" +" dir_elif .emit TOKEN_ELIF .or\n" +" dir_endif .emit TOKEN_ENDIF .or\n" +" dir_ext .emit TOKEN_EXTENSION .or\n" +" dir_line .emit TOKEN_LINE;\n" +"dir_define\n" +" optional_space .and '#' .and optional_space .and \"define\" .and symbol .and opt_parameters .and\n" +" definition;\n" +"dir_undef\n" +" optional_space .and '#' .and optional_space .and \"undef\" .and symbol;\n" +"dir_if\n" +" optional_space .and '#' .and optional_space .and \"if\" .and expression;\n" +"dir_ifdef\n" +" optional_space .and '#' .and optional_space .and \"ifdef\" .and symbol;\n" +"dir_ifndef\n" +" optional_space .and '#' .and optional_space .and \"ifndef\" .and symbol;\n" +"dir_else\n" +" optional_space .and '#' .and optional_space .and \"else\";\n" +"dir_elif\n" +" optional_space .and '#' .and optional_space .and \"elif\" .and expression;\n" +"dir_endif\n" +" optional_space .and '#' .and optional_space .and \"endif\";\n" +"dir_ext\n" +" optional_space .and '#' .and optional_space .and \"extension\" .and space .and extension_name .and\n" +" optional_space .and ':' .and optional_space .and extension_behavior;\n" +"dir_line\n" +" optional_space .and '#' .and optional_space .and \"line\" .and expression;\n" +"symbol\n" +" space .and symbol_character .emit * .and .loop symbol_character2 .emit * .and .true .emit '\\0';\n" +"opt_parameters\n" +" parameters .or .true .emit PARAM_END;\n" +"parameters\n" +" '(' .and parameters_1 .and optional_space .and ')' .emit PARAM_END;\n" +"parameters_1\n" +" parameters_2 .or .true;\n" +"parameters_2\n" +" parameter .emit PARAM_PARAMETER .and .loop parameters_3;\n" +"parameters_3\n" +" optional_space .and ',' .and parameter .emit PARAM_PARAMETER;\n" +"parameter\n" +" optional_space .and symbol_character .emit * .and .loop symbol_character2 .emit * .and\n" +" .true .emit '\\0';\n" +"definition\n" +" .loop definition_character .emit * .and .true .emit '\\0';\n" +"definition_character\n" +" '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';\n" +"expression\n" +" expression_element .and .loop expression_element .and .true .emit '\\0';\n" +"expression_element\n" +" expression_character .emit *;\n" +"expression_character\n" +" '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';\n" +"extension_name\n" +" symbol_character .emit * .and .loop symbol_character2 .emit * .and .true .emit '\\0';\n" +"extension_behavior\n" +" \"require\" .emit BEHAVIOR_REQUIRE .or\n" +" \"enable\" .emit BEHAVIOR_ENABLE .or\n" +" \"warn\" .emit BEHAVIOR_WARN .or\n" +" \"disable\" .emit BEHAVIOR_DISABLE;\n" +"optional_space\n" +" .loop single_space;\n" +"space\n" +" single_space .and .loop single_space;\n" +"single_space\n" +" ' ' .or '\\t';\n" +"source_token\n" +" space .emit ' ' .or complex_token .or source_token_1;\n" +"source_token_1\n" +" simple_token .emit ' ' .and .true .emit ' ';\n" +"complex_token\n" +" identifier .or number;\n" +"simple_token\n" +" increment .or decrement .or lequal .or gequal .or equal .or nequal .or and .or xor .or or .or\n" +" addto .or subtractfrom .or multiplyto .or divideto .or other;\n" +"identifier\n" +" identifier_char1 .emit * .and .loop identifier_char2 .emit *;\n" +"identifier_char1\n" +" 'a'-'z' .or 'A'-'Z' .or '_';\n" +"identifier_char2\n" +" 'a'-'z' .or 'A'-'Z' .or '0'-'9' .or '_';\n" +"number\n" +" float .or integer;\n" +"digit_oct\n" +" '0'-'7';\n" +"digit_dec\n" +" '0'-'9';\n" +"digit_hex\n" +" '0'-'9' .or 'A'-'F' .or 'a'-'f';\n" +"float\n" +" float_1 .or float_2;\n" +"float_1\n" +" float_fractional_constant .and float_optional_exponent_part;\n" +"float_2\n" +" float_digit_sequence .and float_exponent_part;\n" +"float_fractional_constant\n" +" float_fractional_constant_1 .or float_fractional_constant_2 .or float_fractional_constant_3;\n" +"float_fractional_constant_1\n" +" float_digit_sequence .and '.' .emit '.' .and float_digit_sequence;\n" +"float_fractional_constant_2\n" +" float_digit_sequence .and '.' .emit '.';\n" +"float_fractional_constant_3\n" +" '.' .emit '.' .and float_digit_sequence;\n" +"float_optional_exponent_part\n" +" float_exponent_part .or .true;\n" +"float_digit_sequence\n" +" digit_dec .emit * .and .loop digit_dec .emit *;\n" +"float_exponent_part\n" +" float_exponent_part_1 .or float_exponent_part_2;\n" +"float_exponent_part_1\n" +" 'e' .emit 'e' .and float_optional_sign .and float_digit_sequence;\n" +"float_exponent_part_2\n" +" 'E' .emit 'E' .and float_optional_sign .and float_digit_sequence;\n" +"float_optional_sign\n" +" '+' .emit '+' .or '-' .emit '-' .or .true;\n" +"integer\n" +" integer_hex .or integer_oct .or integer_dec;\n" +"integer_hex\n" +" '0' .emit '0' .and integer_hex_1 .emit * .and digit_hex .emit * .and\n" +" .loop digit_hex .emit *;\n" +"integer_hex_1\n" +" 'x' .or 'X';\n" +"integer_oct\n" +" '0' .emit '0' .and .loop digit_oct .emit *;\n" +"integer_dec\n" +" digit_dec .emit * .and .loop digit_dec .emit *;\n" +"increment\n" +" '+' .emit * .and '+' .emit *;\n" +"decrement\n" +" '-' .emit * .and '-' .emit *;\n" +"lequal\n" +" '<' .emit * .and '=' .emit *;\n" +"gequal\n" +" '>' .emit * .and '=' .emit *;\n" +"equal\n" +" '=' .emit * .and '=' .emit *;\n" +"nequal\n" +" '!' .emit * .and '=' .emit *;\n" +"and\n" +" '&' .emit * .and '&' .emit *;\n" +"xor\n" +" '^' .emit * .and '^' .emit *;\n" +"or\n" +" '|' .emit * .and '|' .emit *;\n" +"addto\n" +" '+' .emit * .and '=' .emit *;\n" +"subtractfrom\n" +" '-' .emit * .and '=' .emit *;\n" +"multiplyto\n" +" '*' .emit * .and '=' .emit *;\n" +"divideto\n" +" '/' .emit * .and '=' .emit *;\n" +"other\n" +" '\\x24'-'\\xFF' .emit * .or '\\x01'-'\\x22' .emit *;\n" +"symbol_character\n" +" 'A'-'Z' .or 'a'-'z' .or '_';\n" +"symbol_character2\n" +" 'A'-'Z' .or 'a'-'z' .or '0'-'9' .or '_';\n" +".string string_lexer;\n" +"string_lexer\n" +" lex_first_identifier_character .and .loop lex_next_identifier_character;\n" +"lex_first_identifier_character\n" +" 'a'-'z' .or 'A'-'Z' .or '_';\n" +"lex_next_identifier_character\n" +" 'a'-'z' .or 'A'-'Z' .or '0'-'9' .or '_';\n" "" diff --git a/src/mesa/shader/slang/library/slang_pp_expression.syn b/src/mesa/shader/slang/library/slang_pp_expression.syn index 73d2a05f0a4..bfdb220bf5c 100755 --- a/src/mesa/shader/slang/library/slang_pp_expression.syn +++ b/src/mesa/shader/slang/library/slang_pp_expression.syn @@ -1,265 +1,265 @@ -/*
- * Mesa 3-D graphics library
- * Version: 6.6
- *
- * Copyright (C) 2006 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * \file slang_pp_expression.syn
- * slang preprocessor expression parser
- * \author Michal Krol
- */
-
-/*
- * Parses one or two (optional) expressions on literal integer constants. Those expressions come
- * from #if #elif and #line directives. The preprocessor already parsed those directives and
- * expanded the expression (expressions). All occurences of the operator "defined" are already
- * replaced with either "0" or "1" literals.
- */
-
-.syntax expression;
-
-/*
- * Those separate individual expressions.
- * For #if/#elif case it is: EXP_EXPRESSION ... EXP_END
- * For #line case it may be: EXP_EXPRESSION ... EXP_EXPRESSION ... EXP_END
- */
-.emtcode EXP_END 0
-.emtcode EXP_EXPRESSION 1
-
-.emtcode OP_END 0
-.emtcode OP_PUSHINT 1
-.emtcode OP_LOGICALOR 2
-.emtcode OP_LOGICALAND 3
-.emtcode OP_OR 4
-.emtcode OP_XOR 5
-.emtcode OP_AND 6
-.emtcode OP_EQUAL 7
-.emtcode OP_NOTEQUAL 8
-.emtcode OP_LESSEQUAL 9
-.emtcode OP_GREATEREQUAL 10
-.emtcode OP_LESS 11
-.emtcode OP_GREATER 12
-.emtcode OP_LEFTSHIFT 13
-.emtcode OP_RIGHTSHIFT 14
-.emtcode OP_ADD 15
-.emtcode OP_SUBTRACT 16
-.emtcode OP_MULTIPLY 17
-.emtcode OP_DIVIDE 18
-.emtcode OP_MODULUS 19
-.emtcode OP_PLUS 20
-.emtcode OP_MINUS 21
-.emtcode OP_NEGATE 22
-.emtcode OP_COMPLEMENT 23
-
-expression
- first_expression .and optional_second_expression .and optional_space .and '\0' .emit EXP_END;
-
-first_expression
- optional_space .and logical_or_expression .emit EXP_EXPRESSION .and .true .emit OP_END;
-
-optional_second_expression
- second_expression .or .true;
-
-second_expression
- space .and logical_or_expression .emit EXP_EXPRESSION .and .true .emit OP_END;
-
-logical_or_expression
- logical_and_expression .and .loop logical_or_expression_1;
-logical_or_expression_1
- barbar .and logical_and_expression .and .true .emit OP_LOGICALOR;
-
-logical_and_expression
- or_expression .and .loop logical_and_expression_1;
-logical_and_expression_1
- ampersandampersand .and or_expression .and .true .emit OP_LOGICALAND;
-
-or_expression
- xor_expression .and .loop or_expression_1;
-or_expression_1
- bar .and xor_expression .and .true .emit OP_OR;
-
-xor_expression
- and_expression .and .loop xor_expression_1;
-xor_expression_1
- caret .and and_expression .and .true .emit OP_XOR;
-
-and_expression
- equality_expression .and .loop and_expression_1;
-and_expression_1
- ampersand .and equality_expression .and .true .emit OP_AND;
-
-equality_expression
- relational_expression .and .loop equality_expression_1;
-equality_expression_1
- equality_expression_2 .or equality_expression_3;
-equality_expression_2
- equalsequals .and relational_expression .and .true .emit OP_EQUAL;
-equality_expression_3
- bangequals .and relational_expression .and .true .emit OP_NOTEQUAL;
-
-relational_expression
- shift_expression .and .loop relational_expression_1;
-relational_expression_1
- relational_expression_2 .or relational_expression_3 .or relational_expression_4 .or
- relational_expression_5;
-relational_expression_2
- lessequals .and shift_expression .and .true .emit OP_LESSEQUAL;
-relational_expression_3
- greaterequals .and shift_expression .and .true .emit OP_GREATEREQUAL;
-relational_expression_4
- less .and shift_expression .and .true .emit OP_LESS;
-relational_expression_5
- greater .and shift_expression .and .true .emit OP_GREATER;
-
-shift_expression
- additive_expression .and .loop shift_expression_1;
-shift_expression_1
- shift_expression_2 .or shift_expression_3;
-shift_expression_2
- lessless .and additive_expression .and .true .emit OP_LEFTSHIFT;
-shift_expression_3
- greatergreater .and additive_expression .and .true .emit OP_RIGHTSHIFT;
-
-additive_expression
- multiplicative_expression .and .loop additive_expression_1;
-additive_expression_1
- additive_expression_2 .or additive_expression_3;
-additive_expression_2
- plus .and multiplicative_expression .and .true .emit OP_ADD;
-additive_expression_3
- dash .and multiplicative_expression .and .true .emit OP_SUBTRACT;
-
-multiplicative_expression
- unary_expression .and .loop multiplicative_expression_1;
-multiplicative_expression_1
- multiplicative_expression_2 .or multiplicative_expression_3 .or multiplicative_expression_4;
-multiplicative_expression_2
- star .and unary_expression .and .true .emit OP_MULTIPLY;
-multiplicative_expression_3
- slash .and unary_expression .and .true .emit OP_DIVIDE;
-multiplicative_expression_4
- percent .and unary_expression .and .true .emit OP_MODULUS;
-
-unary_expression
- primary_expression .or unary_expression_1 .or unary_expression_2 .or unary_expression_3 .or
- unary_expression_4;
-unary_expression_1
- plus .and unary_expression .and .true .emit OP_PLUS;
-unary_expression_2
- dash .and unary_expression .and .true .emit OP_MINUS;
-unary_expression_3
- bang .and unary_expression .and .true .emit OP_NEGATE;
-unary_expression_4
- tilda .and unary_expression .and .true .emit OP_COMPLEMENT;
-
-primary_expression
- intconstant .or primary_expression_1;
-primary_expression_1
- lparen .and logical_or_expression .and rparen;
-
-intconstant
- integer .emit OP_PUSHINT;
-
-integer
- integer_dec;
-
-integer_dec
- digit_dec .emit 10 .emit * .and .loop digit_dec .emit * .and .true .emit '\0';
-
-digit_dec
- '0'-'9';
-
-optional_space
- .loop single_space;
-
-space
- single_space .and .loop single_space;
-
-single_space
- ' ' .or '\t';
-
-ampersand
- optional_space .and '&' .and optional_space;
-
-ampersandampersand
- optional_space .and '&' .and '&' .and optional_space;
-
-bang
- optional_space .and '!' .and optional_space;
-
-bangequals
- optional_space .and '!' .and '=' .and optional_space;
-
-bar
- optional_space .and '|' .and optional_space;
-
-barbar
- optional_space .and '|' .and '|' .and optional_space;
-
-caret
- optional_space .and '^' .and optional_space;
-
-dash
- optional_space .and '-' .and optional_space;
-
-equalsequals
- optional_space .and '=' .and '=' .and optional_space;
-
-greater
- optional_space .and '>' .and optional_space;
-
-greaterequals
- optional_space .and '>' .and '=' .and optional_space;
-
-greatergreater
- optional_space .and '>' .and '>' .and optional_space;
-
-less
- optional_space .and '<' .and optional_space;
-
-lessequals
- optional_space .and '<' .and '=' .and optional_space;
-
-lessless
- optional_space .and '<' .and '<' .and optional_space;
-
-lparen
- optional_space .and '(' .and optional_space;
-
-percent
- optional_space .and '%' .and optional_space;
-
-plus
- optional_space .and '+' .and optional_space;
-
-rparen
- optional_space .and ')' .and optional_space;
-
-slash
- optional_space .and '/' .and optional_space;
-
-star
- optional_space .and '*' .and optional_space;
-
-tilda
- optional_space .and '~' .and optional_space;
-
+/* + * Mesa 3-D graphics library + * Version: 6.6 + * + * Copyright (C) 2006 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * \file slang_pp_expression.syn + * slang preprocessor expression parser + * \author Michal Krol + */ + +/* + * Parses one or two (optional) expressions on literal integer constants. Those expressions come + * from #if #elif and #line directives. The preprocessor already parsed those directives and + * expanded the expression (expressions). All occurences of the operator "defined" are already + * replaced with either "0" or "1" literals. + */ + +.syntax expression; + +/* + * Those separate individual expressions. + * For #if/#elif case it is: EXP_EXPRESSION ... EXP_END + * For #line case it may be: EXP_EXPRESSION ... EXP_EXPRESSION ... EXP_END + */ +.emtcode EXP_END 0 +.emtcode EXP_EXPRESSION 1 + +.emtcode OP_END 0 +.emtcode OP_PUSHINT 1 +.emtcode OP_LOGICALOR 2 +.emtcode OP_LOGICALAND 3 +.emtcode OP_OR 4 +.emtcode OP_XOR 5 +.emtcode OP_AND 6 +.emtcode OP_EQUAL 7 +.emtcode OP_NOTEQUAL 8 +.emtcode OP_LESSEQUAL 9 +.emtcode OP_GREATEREQUAL 10 +.emtcode OP_LESS 11 +.emtcode OP_GREATER 12 +.emtcode OP_LEFTSHIFT 13 +.emtcode OP_RIGHTSHIFT 14 +.emtcode OP_ADD 15 +.emtcode OP_SUBTRACT 16 +.emtcode OP_MULTIPLY 17 +.emtcode OP_DIVIDE 18 +.emtcode OP_MODULUS 19 +.emtcode OP_PLUS 20 +.emtcode OP_MINUS 21 +.emtcode OP_NEGATE 22 +.emtcode OP_COMPLEMENT 23 + +expression + first_expression .and optional_second_expression .and optional_space .and '\0' .emit EXP_END; + +first_expression + optional_space .and logical_or_expression .emit EXP_EXPRESSION .and .true .emit OP_END; + +optional_second_expression + second_expression .or .true; + +second_expression + space .and logical_or_expression .emit EXP_EXPRESSION .and .true .emit OP_END; + +logical_or_expression + logical_and_expression .and .loop logical_or_expression_1; +logical_or_expression_1 + barbar .and logical_and_expression .and .true .emit OP_LOGICALOR; + +logical_and_expression + or_expression .and .loop logical_and_expression_1; +logical_and_expression_1 + ampersandampersand .and or_expression .and .true .emit OP_LOGICALAND; + +or_expression + xor_expression .and .loop or_expression_1; +or_expression_1 + bar .and xor_expression .and .true .emit OP_OR; + +xor_expression + and_expression .and .loop xor_expression_1; +xor_expression_1 + caret .and and_expression .and .true .emit OP_XOR; + +and_expression + equality_expression .and .loop and_expression_1; +and_expression_1 + ampersand .and equality_expression .and .true .emit OP_AND; + +equality_expression + relational_expression .and .loop equality_expression_1; +equality_expression_1 + equality_expression_2 .or equality_expression_3; +equality_expression_2 + equalsequals .and relational_expression .and .true .emit OP_EQUAL; +equality_expression_3 + bangequals .and relational_expression .and .true .emit OP_NOTEQUAL; + +relational_expression + shift_expression .and .loop relational_expression_1; +relational_expression_1 + relational_expression_2 .or relational_expression_3 .or relational_expression_4 .or + relational_expression_5; +relational_expression_2 + lessequals .and shift_expression .and .true .emit OP_LESSEQUAL; +relational_expression_3 + greaterequals .and shift_expression .and .true .emit OP_GREATEREQUAL; +relational_expression_4 + less .and shift_expression .and .true .emit OP_LESS; +relational_expression_5 + greater .and shift_expression .and .true .emit OP_GREATER; + +shift_expression + additive_expression .and .loop shift_expression_1; +shift_expression_1 + shift_expression_2 .or shift_expression_3; +shift_expression_2 + lessless .and additive_expression .and .true .emit OP_LEFTSHIFT; +shift_expression_3 + greatergreater .and additive_expression .and .true .emit OP_RIGHTSHIFT; + +additive_expression + multiplicative_expression .and .loop additive_expression_1; +additive_expression_1 + additive_expression_2 .or additive_expression_3; +additive_expression_2 + plus .and multiplicative_expression .and .true .emit OP_ADD; +additive_expression_3 + dash .and multiplicative_expression .and .true .emit OP_SUBTRACT; + +multiplicative_expression + unary_expression .and .loop multiplicative_expression_1; +multiplicative_expression_1 + multiplicative_expression_2 .or multiplicative_expression_3 .or multiplicative_expression_4; +multiplicative_expression_2 + star .and unary_expression .and .true .emit OP_MULTIPLY; +multiplicative_expression_3 + slash .and unary_expression .and .true .emit OP_DIVIDE; +multiplicative_expression_4 + percent .and unary_expression .and .true .emit OP_MODULUS; + +unary_expression + primary_expression .or unary_expression_1 .or unary_expression_2 .or unary_expression_3 .or + unary_expression_4; +unary_expression_1 + plus .and unary_expression .and .true .emit OP_PLUS; +unary_expression_2 + dash .and unary_expression .and .true .emit OP_MINUS; +unary_expression_3 + bang .and unary_expression .and .true .emit OP_NEGATE; +unary_expression_4 + tilda .and unary_expression .and .true .emit OP_COMPLEMENT; + +primary_expression + intconstant .or primary_expression_1; +primary_expression_1 + lparen .and logical_or_expression .and rparen; + +intconstant + integer .emit OP_PUSHINT; + +integer + integer_dec; + +integer_dec + digit_dec .emit 10 .emit * .and .loop digit_dec .emit * .and .true .emit '\0'; + +digit_dec + '0'-'9'; + +optional_space + .loop single_space; + +space + single_space .and .loop single_space; + +single_space + ' ' .or '\t'; + +ampersand + optional_space .and '&' .and optional_space; + +ampersandampersand + optional_space .and '&' .and '&' .and optional_space; + +bang + optional_space .and '!' .and optional_space; + +bangequals + optional_space .and '!' .and '=' .and optional_space; + +bar + optional_space .and '|' .and optional_space; + +barbar + optional_space .and '|' .and '|' .and optional_space; + +caret + optional_space .and '^' .and optional_space; + +dash + optional_space .and '-' .and optional_space; + +equalsequals + optional_space .and '=' .and '=' .and optional_space; + +greater + optional_space .and '>' .and optional_space; + +greaterequals + optional_space .and '>' .and '=' .and optional_space; + +greatergreater + optional_space .and '>' .and '>' .and optional_space; + +less + optional_space .and '<' .and optional_space; + +lessequals + optional_space .and '<' .and '=' .and optional_space; + +lessless + optional_space .and '<' .and '<' .and optional_space; + +lparen + optional_space .and '(' .and optional_space; + +percent + optional_space .and '%' .and optional_space; + +plus + optional_space .and '+' .and optional_space; + +rparen + optional_space .and ')' .and optional_space; + +slash + optional_space .and '/' .and optional_space; + +star + optional_space .and '*' .and optional_space; + +tilda + optional_space .and '~' .and optional_space; + diff --git a/src/mesa/shader/slang/library/slang_pp_expression_syn.h b/src/mesa/shader/slang/library/slang_pp_expression_syn.h index 0fa9c439443..f3e9ef6b229 100644 --- a/src/mesa/shader/slang/library/slang_pp_expression_syn.h +++ b/src/mesa/shader/slang/library/slang_pp_expression_syn.h @@ -1,234 +1,179 @@ /* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE .syn FILE */ -"
\n" -"
\n" -"
\n" -"
\n" -"
\n" -"
\n" -".syntax expression;
\n" -"
\n" -"
\n" -".emtcode EXP_END 0
\n" -".emtcode EXP_EXPRESSION 1
\n" -"
\n" -".emtcode OP_END 0
\n" -".emtcode OP_PUSHINT 1
\n" -".emtcode OP_LOGICALOR 2
\n" -".emtcode OP_LOGICALAND 3
\n" -".emtcode OP_OR 4
\n" -".emtcode OP_XOR 5
\n" -".emtcode OP_AND 6
\n" -".emtcode OP_EQUAL 7
\n" -".emtcode OP_NOTEQUAL 8
\n" -".emtcode OP_LESSEQUAL 9
\n" -".emtcode OP_GREATEREQUAL 10
\n" -".emtcode OP_LESS 11
\n" -".emtcode OP_GREATER 12
\n" -".emtcode OP_LEFTSHIFT 13
\n" -".emtcode OP_RIGHTSHIFT 14
\n" -".emtcode OP_ADD 15
\n" -".emtcode OP_SUBTRACT 16
\n" -".emtcode OP_MULTIPLY 17
\n" -".emtcode OP_DIVIDE 18
\n" -".emtcode OP_MODULUS 19
\n" -".emtcode OP_PLUS 20
\n" -".emtcode OP_MINUS 21
\n" -".emtcode OP_NEGATE 22
\n" -".emtcode OP_COMPLEMENT 23
\n" -"
\n" -"expression
\n" -" first_expression .and optional_second_expression .and optional_space .and '\\0' .emit EXP_END;
\n" -"
\n" -"first_expression
\n" -" optional_space .and logical_or_expression .emit EXP_EXPRESSION .and .true .emit OP_END;
\n" -"
\n" -"optional_second_expression
\n" -" second_expression .or .true;
\n" -"
\n" -"second_expression
\n" -" space .and logical_or_expression .emit EXP_EXPRESSION .and .true .emit OP_END;
\n" -"
\n" -"logical_or_expression
\n" -" logical_and_expression .and .loop logical_or_expression_1;
\n" -"logical_or_expression_1
\n" -" barbar .and logical_and_expression .and .true .emit OP_LOGICALOR;
\n" -"
\n" -"logical_and_expression
\n" -" or_expression .and .loop logical_and_expression_1;
\n" -"logical_and_expression_1
\n" -" ampersandampersand .and or_expression .and .true .emit OP_LOGICALAND;
\n" -"
\n" -"or_expression
\n" -" xor_expression .and .loop or_expression_1;
\n" -"or_expression_1
\n" -" bar .and xor_expression .and .true .emit OP_OR;
\n" -"
\n" -"xor_expression
\n" -" and_expression .and .loop xor_expression_1;
\n" -"xor_expression_1
\n" -" caret .and and_expression .and .true .emit OP_XOR;
\n" -"
\n" -"and_expression
\n" -" equality_expression .and .loop and_expression_1;
\n" -"and_expression_1
\n" -" ampersand .and equality_expression .and .true .emit OP_AND;
\n" -"
\n" -"equality_expression
\n" -" relational_expression .and .loop equality_expression_1;
\n" -"equality_expression_1
\n" -" equality_expression_2 .or equality_expression_3;
\n" -"equality_expression_2
\n" -" equalsequals .and relational_expression .and .true .emit OP_EQUAL;
\n" -"equality_expression_3
\n" -" bangequals .and relational_expression .and .true .emit OP_NOTEQUAL;
\n" -"
\n" -"relational_expression
\n" -" shift_expression .and .loop relational_expression_1;
\n" -"relational_expression_1
\n" -" relational_expression_2 .or relational_expression_3 .or relational_expression_4 .or
\n" -" relational_expression_5;
\n" -"relational_expression_2
\n" -" lessequals .and shift_expression .and .true .emit OP_LESSEQUAL;
\n" -"relational_expression_3
\n" -" greaterequals .and shift_expression .and .true .emit OP_GREATEREQUAL;
\n" -"relational_expression_4
\n" -" less .and shift_expression .and .true .emit OP_LESS;
\n" -"relational_expression_5
\n" -" greater .and shift_expression .and .true .emit OP_GREATER;
\n" -"
\n" -"shift_expression
\n" -" additive_expression .and .loop shift_expression_1;
\n" -"shift_expression_1
\n" -" shift_expression_2 .or shift_expression_3;
\n" -"shift_expression_2
\n" -" lessless .and additive_expression .and .true .emit OP_LEFTSHIFT;
\n" -"shift_expression_3
\n" -" greatergreater .and additive_expression .and .true .emit OP_RIGHTSHIFT;
\n" -"
\n" -"additive_expression
\n" -" multiplicative_expression .and .loop additive_expression_1;
\n" -"additive_expression_1
\n" -" additive_expression_2 .or additive_expression_3;
\n" -"additive_expression_2
\n" -" plus .and multiplicative_expression .and .true .emit OP_ADD;
\n" -"additive_expression_3
\n" -" dash .and multiplicative_expression .and .true .emit OP_SUBTRACT;
\n" -"
\n" -"multiplicative_expression
\n" -" unary_expression .and .loop multiplicative_expression_1;
\n" -"multiplicative_expression_1
\n" -" multiplicative_expression_2 .or multiplicative_expression_3 .or multiplicative_expression_4;
\n" -"multiplicative_expression_2
\n" -" star .and unary_expression .and .true .emit OP_MULTIPLY;
\n" -"multiplicative_expression_3
\n" -" slash .and unary_expression .and .true .emit OP_DIVIDE;
\n" -"multiplicative_expression_4
\n" -" percent .and unary_expression .and .true .emit OP_MODULUS;
\n" -"
\n" -"unary_expression
\n" -" primary_expression .or unary_expression_1 .or unary_expression_2 .or unary_expression_3 .or
\n" -" unary_expression_4;
\n" -"unary_expression_1
\n" -" plus .and unary_expression .and .true .emit OP_PLUS;
\n" -"unary_expression_2
\n" -" dash .and unary_expression .and .true .emit OP_MINUS;
\n" -"unary_expression_3
\n" -" bang .and unary_expression .and .true .emit OP_NEGATE;
\n" -"unary_expression_4
\n" -" tilda .and unary_expression .and .true .emit OP_COMPLEMENT;
\n" -"
\n" -"primary_expression
\n" -" intconstant .or primary_expression_1;
\n" -"primary_expression_1
\n" -" lparen .and logical_or_expression .and rparen;
\n" -"
\n" -"intconstant
\n" -" integer .emit OP_PUSHINT;
\n" -"
\n" -"integer
\n" -" integer_dec;
\n" -"
\n" -"integer_dec
\n" -" digit_dec .emit 10 .emit * .and .loop digit_dec .emit * .and .true .emit '\\0';
\n" -"
\n" -"digit_dec
\n" -" '0'-'9';
\n" -"
\n" -"optional_space
\n" -" .loop single_space;
\n" -"
\n" -"space
\n" -" single_space .and .loop single_space;
\n" -"
\n" -"single_space
\n" -" ' ' .or '\\t';
\n" -"
\n" -"ampersand
\n" -" optional_space .and '&' .and optional_space;
\n" -"
\n" -"ampersandampersand
\n" -" optional_space .and '&' .and '&' .and optional_space;
\n" -"
\n" -"bang
\n" -" optional_space .and '!' .and optional_space;
\n" -"
\n" -"bangequals
\n" -" optional_space .and '!' .and '=' .and optional_space;
\n" -"
\n" -"bar
\n" -" optional_space .and '|' .and optional_space;
\n" -"
\n" -"barbar
\n" -" optional_space .and '|' .and '|' .and optional_space;
\n" -"
\n" -"caret
\n" -" optional_space .and '^' .and optional_space;
\n" -"
\n" -"dash
\n" -" optional_space .and '-' .and optional_space;
\n" -"
\n" -"equalsequals
\n" -" optional_space .and '=' .and '=' .and optional_space;
\n" -"
\n" -"greater
\n" -" optional_space .and '>' .and optional_space;
\n" -"
\n" -"greaterequals
\n" -" optional_space .and '>' .and '=' .and optional_space;
\n" -"
\n" -"greatergreater
\n" -" optional_space .and '>' .and '>' .and optional_space;
\n" -"
\n" -"less
\n" -" optional_space .and '<' .and optional_space;
\n" -"
\n" -"lessequals
\n" -" optional_space .and '<' .and '=' .and optional_space;
\n" -"
\n" -"lessless
\n" -" optional_space .and '<' .and '<' .and optional_space;
\n" -"
\n" -"lparen
\n" -" optional_space .and '(' .and optional_space;
\n" -"
\n" -"percent
\n" -" optional_space .and '%' .and optional_space;
\n" -"
\n" -"plus
\n" -" optional_space .and '+' .and optional_space;
\n" -"
\n" -"rparen
\n" -" optional_space .and ')' .and optional_space;
\n" -"
\n" -"slash
\n" -" optional_space .and '/' .and optional_space;
\n" -"
\n" -"star
\n" -" optional_space .and '*' .and optional_space;
\n" -"
\n" -"tilda
\n" -" optional_space .and '~' .and optional_space;
\n" -"
\n" +".syntax expression;\n" +".emtcode EXP_END 0\n" +".emtcode EXP_EXPRESSION 1\n" +".emtcode OP_END 0\n" +".emtcode OP_PUSHINT 1\n" +".emtcode OP_LOGICALOR 2\n" +".emtcode OP_LOGICALAND 3\n" +".emtcode OP_OR 4\n" +".emtcode OP_XOR 5\n" +".emtcode OP_AND 6\n" +".emtcode OP_EQUAL 7\n" +".emtcode OP_NOTEQUAL 8\n" +".emtcode OP_LESSEQUAL 9\n" +".emtcode OP_GREATEREQUAL 10\n" +".emtcode OP_LESS 11\n" +".emtcode OP_GREATER 12\n" +".emtcode OP_LEFTSHIFT 13\n" +".emtcode OP_RIGHTSHIFT 14\n" +".emtcode OP_ADD 15\n" +".emtcode OP_SUBTRACT 16\n" +".emtcode OP_MULTIPLY 17\n" +".emtcode OP_DIVIDE 18\n" +".emtcode OP_MODULUS 19\n" +".emtcode OP_PLUS 20\n" +".emtcode OP_MINUS 21\n" +".emtcode OP_NEGATE 22\n" +".emtcode OP_COMPLEMENT 23\n" +"expression\n" +" first_expression .and optional_second_expression .and optional_space .and '\\0' .emit EXP_END;\n" +"first_expression\n" +" optional_space .and logical_or_expression .emit EXP_EXPRESSION .and .true .emit OP_END;\n" +"optional_second_expression\n" +" second_expression .or .true;\n" +"second_expression\n" +" space .and logical_or_expression .emit EXP_EXPRESSION .and .true .emit OP_END;\n" +"logical_or_expression\n" +" logical_and_expression .and .loop logical_or_expression_1;\n" +"logical_or_expression_1\n" +" barbar .and logical_and_expression .and .true .emit OP_LOGICALOR;\n" +"logical_and_expression\n" +" or_expression .and .loop logical_and_expression_1;\n" +"logical_and_expression_1\n" +" ampersandampersand .and or_expression .and .true .emit OP_LOGICALAND;\n" +"or_expression\n" +" xor_expression .and .loop or_expression_1;\n" +"or_expression_1\n" +" bar .and xor_expression .and .true .emit OP_OR;\n" +"xor_expression\n" +" and_expression .and .loop xor_expression_1;\n" +"xor_expression_1\n" +" caret .and and_expression .and .true .emit OP_XOR;\n" +"and_expression\n" +" equality_expression .and .loop and_expression_1;\n" +"and_expression_1\n" +" ampersand .and equality_expression .and .true .emit OP_AND;\n" +"equality_expression\n" +" relational_expression .and .loop equality_expression_1;\n" +"equality_expression_1\n" +" equality_expression_2 .or equality_expression_3;\n" +"equality_expression_2\n" +" equalsequals .and relational_expression .and .true .emit OP_EQUAL;\n" +"equality_expression_3\n" +" bangequals .and relational_expression .and .true .emit OP_NOTEQUAL;\n" +"relational_expression\n" +" shift_expression .and .loop relational_expression_1;\n" +"relational_expression_1\n" +" relational_expression_2 .or relational_expression_3 .or relational_expression_4 .or\n" +" relational_expression_5;\n" +"relational_expression_2\n" +" lessequals .and shift_expression .and .true .emit OP_LESSEQUAL;\n" +"relational_expression_3\n" +" greaterequals .and shift_expression .and .true .emit OP_GREATEREQUAL;\n" +"relational_expression_4\n" +" less .and shift_expression .and .true .emit OP_LESS;\n" +"relational_expression_5\n" +" greater .and shift_expression .and .true .emit OP_GREATER;\n" +"shift_expression\n" +" additive_expression .and .loop shift_expression_1;\n" +"shift_expression_1\n" +" shift_expression_2 .or shift_expression_3;\n" +"shift_expression_2\n" +" lessless .and additive_expression .and .true .emit OP_LEFTSHIFT;\n" +"shift_expression_3\n" +" greatergreater .and additive_expression .and .true .emit OP_RIGHTSHIFT;\n" +"additive_expression\n" +" multiplicative_expression .and .loop additive_expression_1;\n" +"additive_expression_1\n" +" additive_expression_2 .or additive_expression_3;\n" +"additive_expression_2\n" +" plus .and multiplicative_expression .and .true .emit OP_ADD;\n" +"additive_expression_3\n" +" dash .and multiplicative_expression .and .true .emit OP_SUBTRACT;\n" +"multiplicative_expression\n" +" unary_expression .and .loop multiplicative_expression_1;\n" +"multiplicative_expression_1\n" +" multiplicative_expression_2 .or multiplicative_expression_3 .or multiplicative_expression_4;\n" +"multiplicative_expression_2\n" +" star .and unary_expression .and .true .emit OP_MULTIPLY;\n" +"multiplicative_expression_3\n" +" slash .and unary_expression .and .true .emit OP_DIVIDE;\n" +"multiplicative_expression_4\n" +" percent .and unary_expression .and .true .emit OP_MODULUS;\n" +"unary_expression\n" +" primary_expression .or unary_expression_1 .or unary_expression_2 .or unary_expression_3 .or\n" +" unary_expression_4;\n" +"unary_expression_1\n" +" plus .and unary_expression .and .true .emit OP_PLUS;\n" +"unary_expression_2\n" +" dash .and unary_expression .and .true .emit OP_MINUS;\n" +"unary_expression_3\n" +" bang .and unary_expression .and .true .emit OP_NEGATE;\n" +"unary_expression_4\n" +" tilda .and unary_expression .and .true .emit OP_COMPLEMENT;\n" +"primary_expression\n" +" intconstant .or primary_expression_1;\n" +"primary_expression_1\n" +" lparen .and logical_or_expression .and rparen;\n" +"intconstant\n" +" integer .emit OP_PUSHINT;\n" +"integer\n" +" integer_dec;\n" +"integer_dec\n" +" digit_dec .emit 10 .emit * .and .loop digit_dec .emit * .and .true .emit '\\0';\n" +"digit_dec\n" +" '0'-'9';\n" +"optional_space\n" +" .loop single_space;\n" +"space\n" +" single_space .and .loop single_space;\n" +"single_space\n" +" ' ' .or '\\t';\n" +"ampersand\n" +" optional_space .and '&' .and optional_space;\n" +"ampersandampersand\n" +" optional_space .and '&' .and '&' .and optional_space;\n" +"bang\n" +" optional_space .and '!' .and optional_space;\n" +"bangequals\n" +" optional_space .and '!' .and '=' .and optional_space;\n" +"bar\n" +" optional_space .and '|' .and optional_space;\n" +"barbar\n" +" optional_space .and '|' .and '|' .and optional_space;\n" +"caret\n" +" optional_space .and '^' .and optional_space;\n" +"dash\n" +" optional_space .and '-' .and optional_space;\n" +"equalsequals\n" +" optional_space .and '=' .and '=' .and optional_space;\n" +"greater\n" +" optional_space .and '>' .and optional_space;\n" +"greaterequals\n" +" optional_space .and '>' .and '=' .and optional_space;\n" +"greatergreater\n" +" optional_space .and '>' .and '>' .and optional_space;\n" +"less\n" +" optional_space .and '<' .and optional_space;\n" +"lessequals\n" +" optional_space .and '<' .and '=' .and optional_space;\n" +"lessless\n" +" optional_space .and '<' .and '<' .and optional_space;\n" +"lparen\n" +" optional_space .and '(' .and optional_space;\n" +"percent\n" +" optional_space .and '%' .and optional_space;\n" +"plus\n" +" optional_space .and '+' .and optional_space;\n" +"rparen\n" +" optional_space .and ')' .and optional_space;\n" +"slash\n" +" optional_space .and '/' .and optional_space;\n" +"star\n" +" optional_space .and '*' .and optional_space;\n" +"tilda\n" +" optional_space .and '~' .and optional_space;\n" "" |