
/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE .syn FILE */

".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"
""
