Fix Windows newlines.
authorMichal Krol <mjkrol@gmail.org>
Tue, 26 Sep 2006 12:10:33 +0000 (12:10 +0000)
committerMichal Krol <mjkrol@gmail.org>
Tue, 26 Sep 2006 12:10:33 +0000 (12:10 +0000)
src/mesa/shader/slang/library/slang_pp_directives.syn
src/mesa/shader/slang/library/slang_pp_directives_syn.h
src/mesa/shader/slang/library/slang_pp_expression.syn
src/mesa/shader/slang/library/slang_pp_expression_syn.h

index 5cbd15fd33d6072d41fc4d33748f0dabdb896bea..d4a321034d1693b8e16725b5ba266415c71c86ef 100755 (executable)
-/*\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
+/*
+ * 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 '_';
+
index 71c08ca824037e5af08185211e0ad33308b868aa..35e7bc276165d6dd3fb39dccd65f287871d901fc 100644 (file)
 
 /* 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"
+".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"
 ""
index 73d2a05f0a4b82f1a1ba38535497812ba777bcb1..bfdb220bf5c1bd083e34604a666bb6acc7022468 100755 (executable)
-/*\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
+/*
+ * 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;
+
index 0fa9c439443730da7b5fe89cc6da80feae06d8da..f3e9ef6b2295de558ca5643ca4e2ada6788c9e71 100644 (file)
 
 /* 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"
+".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"
 ""