glsl: rewrite sqrt(x) intrinsic to handle x=0
[mesa.git] / src / mesa / shader / slang / library / slang_pp_directives_syn.h
index 71c08ca824037e5af08185211e0ad33308b868aa..430f8d8217cc6a53d8ec9687ef5cadb7f895ef4e 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"
+".emtcode PRAGMA_NO_PARAM 0\n"
+".emtcode PRAGMA_PARAM 1\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_pragma .emit TOKEN_PRAGMA .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"
+"dir_pragma\n"
+" optional_space .and '#' .and optional_space .and \"pragma\" .and symbol .and opt_pragma_param;\n"
+"opt_pragma_param\n"
+" pragma_param .or .true .emit PRAGMA_NO_PARAM;\n"
+"pragma_param\n"
+" optional_space .and '(' .emit PRAGMA_PARAM .and optional_space .and symbol_no_space .and optional_space .and ')';\n"
+"symbol_no_space\n"
+" symbol_character .emit * .and .loop symbol_character2 .emit * .and .true .emit '\\0';\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"
 ""