From 6027bfada148bf220c93495ece3173a5f011a958 Mon Sep 17 00:00:00 2001 From: LinZhihao-723 Date: Mon, 25 Aug 2025 22:00:41 -0400 Subject: [PATCH 1/8] Update serialization methods. --- src/spider/tdl/parser/SourceLocation.hpp | 7 + .../tdl/parser/ast/node_impl/Function.cpp | 14 +- .../tdl/parser/ast/node_impl/Identifier.cpp | 7 +- .../tdl/parser/ast/node_impl/NamedVar.cpp | 3 +- .../tdl/parser/ast/node_impl/Namespace.cpp | 7 +- .../tdl/parser/ast/node_impl/StructSpec.cpp | 7 +- .../parser/ast/node_impl/TranslationUnit.cpp | 3 +- .../parser/ast/node_impl/type_impl/Struct.cpp | 3 +- .../type_impl/container_impl/List.cpp | 3 +- .../type_impl/container_impl/Map.cpp | 3 +- .../type_impl/container_impl/Tuple.cpp | 10 +- .../type_impl/primitive_impl/Bool.cpp | 6 +- .../type_impl/primitive_impl/Float.cpp | 3 +- .../type_impl/primitive_impl/Int.cpp | 3 +- tests/tdl/test-parser-ast.cpp | 258 ++++++++++-------- tests/tdl/test-parser.cpp | 217 ++++++++------- 16 files changed, 318 insertions(+), 236 deletions(-) diff --git a/src/spider/tdl/parser/SourceLocation.hpp b/src/spider/tdl/parser/SourceLocation.hpp index e029a876..7307998c 100644 --- a/src/spider/tdl/parser/SourceLocation.hpp +++ b/src/spider/tdl/parser/SourceLocation.hpp @@ -2,6 +2,9 @@ #define SPIDER_TDL_PARSER_SOURCELOCATION_HPP #include +#include + +#include namespace spider::tdl::parser { class SourceLocation { @@ -14,6 +17,10 @@ class SourceLocation { [[nodiscard]] auto get_column() const noexcept -> size_t { return m_column; } + [[nodiscard]] auto serialize_to_str() const -> std::string { + return fmt::format("({}:{})", m_line, m_column); + } + [[nodiscard]] auto operator==(SourceLocation const& other) const noexcept -> bool { return m_line == other.m_line && m_column == other.m_column; } diff --git a/src/spider/tdl/parser/ast/node_impl/Function.cpp b/src/spider/tdl/parser/ast/node_impl/Function.cpp index 50a585f9..705cc505 100644 --- a/src/spider/tdl/parser/ast/node_impl/Function.cpp +++ b/src/spider/tdl/parser/ast/node_impl/Function.cpp @@ -102,10 +102,13 @@ auto Function::serialize_to_str(size_t indentation_level) const if (false == serialized_params.empty()) { return fmt::format( - "{}[Function]:\n{}Name:{}\n{}Return:\n{}\n{}", + "{}[Function]{}:\n{}Name:\n{}\n{}Return:\n{}\n{}", create_indentation(indentation_level), + get_source_location().serialize_to_str(), create_indentation(indentation_level + 1), - get_name(), + YSTDLIB_ERROR_HANDLING_TRYX( + get_child_unsafe(0)->serialize_to_str(indentation_level + 2) + ), create_indentation(indentation_level + 1), serialized_return_type, fmt::join(serialized_params, "\n") @@ -113,10 +116,13 @@ auto Function::serialize_to_str(size_t indentation_level) const } return fmt::format( - "{}[Function]:\n{}Name:{}\n{}Return:\n{}\n{}No Params", + "{}[Function]{}:\n{}Name:\n{}\n{}Return:\n{}\n{}No Params", create_indentation(indentation_level), + get_source_location().serialize_to_str(), create_indentation(indentation_level + 1), - get_name(), + YSTDLIB_ERROR_HANDLING_TRYX( + get_child_unsafe(0)->serialize_to_str(indentation_level + 2) + ), create_indentation(indentation_level + 1), serialized_return_type, create_indentation(indentation_level + 1) diff --git a/src/spider/tdl/parser/ast/node_impl/Identifier.cpp b/src/spider/tdl/parser/ast/node_impl/Identifier.cpp index b3e4ad9c..0b9743b5 100644 --- a/src/spider/tdl/parser/ast/node_impl/Identifier.cpp +++ b/src/spider/tdl/parser/ast/node_impl/Identifier.cpp @@ -11,6 +11,11 @@ namespace spider::tdl::parser::ast::node_impl { auto Identifier::serialize_to_str(size_t indentation_level) const -> ystdlib::error_handling::Result { - return fmt::format("{}[Identifier]:{}", create_indentation(indentation_level), m_name); + return fmt::format( + "{}[Identifier]{}:{}", + create_indentation(indentation_level), + get_source_location().serialize_to_str(), + m_name + ); } } // namespace spider::tdl::parser::ast::node_impl diff --git a/src/spider/tdl/parser/ast/node_impl/NamedVar.cpp b/src/spider/tdl/parser/ast/node_impl/NamedVar.cpp index 8a11d957..418be3ef 100644 --- a/src/spider/tdl/parser/ast/node_impl/NamedVar.cpp +++ b/src/spider/tdl/parser/ast/node_impl/NamedVar.cpp @@ -32,8 +32,9 @@ auto NamedVar::create( auto NamedVar::serialize_to_str(size_t indentation_level) const -> ystdlib::error_handling::Result { return fmt::format( - "{}[NamedVar]:\n{}Id:\n{}\n{}Type:\n{}", + "{}[NamedVar]{}:\n{}Id:\n{}\n{}Type:\n{}", create_indentation(indentation_level), + get_source_location().serialize_to_str(), create_indentation(indentation_level + 1), YSTDLIB_ERROR_HANDLING_TRYX(get_id()->serialize_to_str(indentation_level + 2)), create_indentation(indentation_level + 1), diff --git a/src/spider/tdl/parser/ast/node_impl/Namespace.cpp b/src/spider/tdl/parser/ast/node_impl/Namespace.cpp index 9c75e9e8..8fb58da9 100644 --- a/src/spider/tdl/parser/ast/node_impl/Namespace.cpp +++ b/src/spider/tdl/parser/ast/node_impl/Namespace.cpp @@ -91,10 +91,13 @@ auto Namespace::serialize_to_str(size_t indentation_level) const ); return fmt::format( - "{}[Namespace]:\n{}Name:{}\n{}", + "{}[Namespace]{}:\n{}Name:\n{}\n{}", create_indentation(indentation_level), + get_source_location().serialize_to_str(), create_indentation(indentation_level + 1), - get_name(), + YSTDLIB_ERROR_HANDLING_TRYX( + get_child_unsafe(0)->serialize_to_str(indentation_level + 2) + ), fmt::join(serialized_funcs, "\n") ); } diff --git a/src/spider/tdl/parser/ast/node_impl/StructSpec.cpp b/src/spider/tdl/parser/ast/node_impl/StructSpec.cpp index 62a33d14..445f17e8 100644 --- a/src/spider/tdl/parser/ast/node_impl/StructSpec.cpp +++ b/src/spider/tdl/parser/ast/node_impl/StructSpec.cpp @@ -91,10 +91,13 @@ auto StructSpec::serialize_to_str(size_t indentation_level) const }) ); return fmt::format( - "{}[StructSpec]:\n{}Name:{}\n{}", + "{}[StructSpec]{}:\n{}Name:\n{}\n{}", create_indentation(indentation_level), + get_source_location().serialize_to_str(), create_indentation(indentation_level + 1), - get_name(), + YSTDLIB_ERROR_HANDLING_TRYX( + get_child_unsafe(0)->serialize_to_str(indentation_level + 2) + ), fmt::join(serialized_fields, "\n") ); } diff --git a/src/spider/tdl/parser/ast/node_impl/TranslationUnit.cpp b/src/spider/tdl/parser/ast/node_impl/TranslationUnit.cpp index 09981cde..658de72d 100644 --- a/src/spider/tdl/parser/ast/node_impl/TranslationUnit.cpp +++ b/src/spider/tdl/parser/ast/node_impl/TranslationUnit.cpp @@ -71,8 +71,9 @@ auto TranslationUnit::serialize_to_str(size_t indentation_level) const ); return fmt::format( - "{}[TranslationUnit]:\n{}StructSpecs:\n{}\n{}Namespaces:\n{}", + "{}[TranslationUnit]{}:\n{}StructSpecs:\n{}\n{}Namespaces:\n{}", create_indentation(indentation_level), + get_source_location().serialize_to_str(), create_indentation(indentation_level + 1), fmt::join(serialized_struct_specs, "\n"), create_indentation(indentation_level + 1), diff --git a/src/spider/tdl/parser/ast/node_impl/type_impl/Struct.cpp b/src/spider/tdl/parser/ast/node_impl/type_impl/Struct.cpp index 3bf488d5..8f6f263c 100644 --- a/src/spider/tdl/parser/ast/node_impl/type_impl/Struct.cpp +++ b/src/spider/tdl/parser/ast/node_impl/type_impl/Struct.cpp @@ -50,8 +50,9 @@ auto Struct::create(std::unique_ptr name, SourceLocation source_location) auto Struct::serialize_to_str(size_t indentation_level) const -> ystdlib::error_handling::Result { return fmt::format( - "{}[Type[Struct]]:\n{}Name:\n{}", + "{}[Type[Struct]]{}:\n{}Name:\n{}", create_indentation(indentation_level), + get_source_location().serialize_to_str(), create_indentation(indentation_level + 1), YSTDLIB_ERROR_HANDLING_TRYX( // The factory function ensures that the first child is of type `Identifier`. diff --git a/src/spider/tdl/parser/ast/node_impl/type_impl/container_impl/List.cpp b/src/spider/tdl/parser/ast/node_impl/type_impl/container_impl/List.cpp index dd77f4cf..ba6c0a7e 100644 --- a/src/spider/tdl/parser/ast/node_impl/type_impl/container_impl/List.cpp +++ b/src/spider/tdl/parser/ast/node_impl/type_impl/container_impl/List.cpp @@ -26,8 +26,9 @@ auto List::create(std::unique_ptr element_type, SourceLocation source_loca auto List::serialize_to_str(size_t indentation_level) const -> ystdlib::error_handling::Result { return fmt::format( - "{}[Type[Container[List]]]:\n{}ElementType:\n{}", + "{}[Type[Container[List]]]{}:\n{}ElementType:\n{}", create_indentation(indentation_level), + get_source_location().serialize_to_str(), create_indentation(indentation_level + 1), YSTDLIB_ERROR_HANDLING_TRYX(get_element_type()->serialize_to_str(indentation_level + 2)) ); diff --git a/src/spider/tdl/parser/ast/node_impl/type_impl/container_impl/Map.cpp b/src/spider/tdl/parser/ast/node_impl/type_impl/container_impl/Map.cpp index 5f13b542..174e04ed 100644 --- a/src/spider/tdl/parser/ast/node_impl/type_impl/container_impl/Map.cpp +++ b/src/spider/tdl/parser/ast/node_impl/type_impl/container_impl/Map.cpp @@ -90,8 +90,9 @@ auto Map::create( auto Map::serialize_to_str(size_t indentation_level) const -> ystdlib::error_handling::Result { return fmt::format( - "{}[Type[Container[Map]]]:\n{}KeyType:\n{}\n{}ValueType:\n{}", + "{}[Type[Container[Map]]]{}:\n{}KeyType:\n{}\n{}ValueType:\n{}", create_indentation(indentation_level), + get_source_location().serialize_to_str(), create_indentation(indentation_level + 1), YSTDLIB_ERROR_HANDLING_TRYX(get_key_type()->serialize_to_str(indentation_level + 2)), create_indentation(indentation_level + 1), diff --git a/src/spider/tdl/parser/ast/node_impl/type_impl/container_impl/Tuple.cpp b/src/spider/tdl/parser/ast/node_impl/type_impl/container_impl/Tuple.cpp index aa59e896..22cc3449 100644 --- a/src/spider/tdl/parser/ast/node_impl/type_impl/container_impl/Tuple.cpp +++ b/src/spider/tdl/parser/ast/node_impl/type_impl/container_impl/Tuple.cpp @@ -35,7 +35,12 @@ auto Tuple::serialize_to_str(size_t indentation_level) const constexpr std::string_view cTypeTag{"[Type[Container[Tuple]]]"}; if (is_empty()) { - return fmt::format("{}{}:Empty", create_indentation(indentation_level), cTypeTag); + return fmt::format( + "{}{}{}:Empty", + create_indentation(indentation_level), + cTypeTag, + get_source_location().serialize_to_str() + ); } std::vector serialized_children; @@ -55,9 +60,10 @@ auto Tuple::serialize_to_str(size_t indentation_level) const }) ); return fmt::format( - "{}{}:\n{}", + "{}{}{}:\n{}", create_indentation(indentation_level), cTypeTag, + get_source_location().serialize_to_str(), fmt::join(serialized_children, "\n") ); } diff --git a/src/spider/tdl/parser/ast/node_impl/type_impl/primitive_impl/Bool.cpp b/src/spider/tdl/parser/ast/node_impl/type_impl/primitive_impl/Bool.cpp index d19a1def..930a2964 100644 --- a/src/spider/tdl/parser/ast/node_impl/type_impl/primitive_impl/Bool.cpp +++ b/src/spider/tdl/parser/ast/node_impl/type_impl/primitive_impl/Bool.cpp @@ -11,6 +11,10 @@ namespace spider::tdl::parser::ast::node_impl::type_impl::primitive_impl { auto Bool::serialize_to_str(size_t indentation_level) const -> ystdlib::error_handling::Result { - return fmt::format("{}[Type[Primitive[Bool]]]", create_indentation(indentation_level)); + return fmt::format( + "{}[Type[Primitive[Bool]]]{}", + create_indentation(indentation_level), + get_source_location().serialize_to_str() + ); } } // namespace spider::tdl::parser::ast::node_impl::type_impl::primitive_impl diff --git a/src/spider/tdl/parser/ast/node_impl/type_impl/primitive_impl/Float.cpp b/src/spider/tdl/parser/ast/node_impl/type_impl/primitive_impl/Float.cpp index d433aa4e..1be267bc 100644 --- a/src/spider/tdl/parser/ast/node_impl/type_impl/primitive_impl/Float.cpp +++ b/src/spider/tdl/parser/ast/node_impl/type_impl/primitive_impl/Float.cpp @@ -12,8 +12,9 @@ namespace spider::tdl::parser::ast::node_impl::type_impl::primitive_impl { auto Float::serialize_to_str(size_t indentation_level) const -> ystdlib::error_handling::Result { return fmt::format( - "{}[Type[Primitive[Float]]]:{}", + "{}[Type[Primitive[Float]]]{}:{}", create_indentation(indentation_level), + get_source_location().serialize_to_str(), YSTDLIB_ERROR_HANDLING_TRYX(serialize_float_spec(m_spec)) ); } diff --git a/src/spider/tdl/parser/ast/node_impl/type_impl/primitive_impl/Int.cpp b/src/spider/tdl/parser/ast/node_impl/type_impl/primitive_impl/Int.cpp index 26aa853c..a7695cd9 100644 --- a/src/spider/tdl/parser/ast/node_impl/type_impl/primitive_impl/Int.cpp +++ b/src/spider/tdl/parser/ast/node_impl/type_impl/primitive_impl/Int.cpp @@ -12,8 +12,9 @@ namespace spider::tdl::parser::ast::node_impl::type_impl::primitive_impl { auto Int::serialize_to_str(size_t indentation_level) const -> ystdlib::error_handling::Result { return fmt::format( - "{}[Type[Primitive[Int]]]:{}", + "{}[Type[Primitive[Int]]]{}:{}", create_indentation(indentation_level), + get_source_location().serialize_to_str(), YSTDLIB_ERROR_HANDLING_TRYX(serialize_int_spec(m_spec)) ); } diff --git a/tests/tdl/test-parser-ast.cpp b/tests/tdl/test-parser-ast.cpp index d8c0e931..bd07006e 100644 --- a/tests/tdl/test-parser-ast.cpp +++ b/tests/tdl/test-parser-ast.cpp @@ -181,7 +181,7 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { SECTION("Identifier") { constexpr std::string_view cTestName{"test_name"}; - constexpr std::string_view cSerializedIdentifier{"[Identifier]:test_name"}; + constexpr std::string_view cSerializedIdentifier{"[Identifier](0:0):test_name"}; auto const node{Identifier::create(std::string{cTestName}, create_source_location())}; auto const* identifier{dynamic_cast(node.get())}; @@ -197,10 +197,19 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { SECTION("Type Int") { auto const [int_spec, expected_serialized_result] = GENERATE( - std::make_pair(IntSpec::Int8, std::string_view{"[Type[Primitive[Int]]]:int8"}), - std::make_pair(IntSpec::Int16, std::string_view{"[Type[Primitive[Int]]]:int16"}), - std::make_pair(IntSpec::Int32, std::string_view{"[Type[Primitive[Int]]]:int32"}), - std::make_pair(IntSpec::Int64, std::string_view{"[Type[Primitive[Int]]]:int64"}) + std::make_pair(IntSpec::Int8, std::string_view{"[Type[Primitive[Int]]](0:0):int8"}), + std::make_pair( + IntSpec::Int16, + std::string_view{"[Type[Primitive[Int]]](0:0):int16"} + ), + std::make_pair( + IntSpec::Int32, + std::string_view{"[Type[Primitive[Int]]](0:0):int32"} + ), + std::make_pair( + IntSpec::Int64, + std::string_view{"[Type[Primitive[Int]]](0:0):int64"} + ) ); auto const node{Int::create(int_spec, create_source_location())}; @@ -219,11 +228,11 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { auto const [float_spec, expected_serialized_result] = GENERATE( std::make_pair( FloatSpec::Float, - std::string_view{"[Type[Primitive[Float]]]:float"} + std::string_view{"[Type[Primitive[Float]]](0:0):float"} ), std::make_pair( FloatSpec::Double, - std::string_view{"[Type[Primitive[Float]]]:double"} + std::string_view{"[Type[Primitive[Float]]](0:0):double"} ) ); @@ -246,7 +255,7 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { REQUIRE(bool_node->get_num_children() == 0); - constexpr std::string_view cExpectedSerializedResult{"[Type[Primitive[Bool]]]"}; + constexpr std::string_view cExpectedSerializedResult{"[Type[Primitive[Bool]]](0:0)"}; auto const serialized_result{bool_node->serialize_to_str(0)}; REQUIRE_FALSE(serialized_result.has_error()); REQUIRE(serialized_result.value() == cExpectedSerializedResult); @@ -267,13 +276,13 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { REQUIRE(list_node->get_num_children() == 1); constexpr std::string_view cExpectedSerializedResult{ - "[Type[Container[List]]]:\n" + "[Type[Container[List]]](0:0):\n" " ElementType:\n" - " [Type[Container[Map]]]:\n" + " [Type[Container[Map]]](0:0):\n" " KeyType:\n" - " [Type[Primitive[Int]]]:int64\n" + " [Type[Primitive[Int]]](0:0):int64\n" " ValueType:\n" - " [Type[Primitive[Float]]]:double" + " [Type[Primitive[Float]]](0:0):double" }; auto const serialized_result{list_node->serialize_to_str(0)}; REQUIRE_FALSE(serialized_result.has_error()); @@ -303,15 +312,15 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { REQUIRE(map_node->get_num_children() == 2); constexpr std::string_view cExpectedSerializedResult{ - "[Type[Container[Map]]]:\n" + "[Type[Container[Map]]](0:0):\n" " KeyType:\n" - " [Type[Container[List]]]:\n" + " [Type[Container[List]]](0:0):\n" " ElementType:\n" - " [Type[Primitive[Int]]]:int8\n" + " [Type[Primitive[Int]]](0:0):int8\n" " ValueType:\n" - " [Type[Container[List]]]:\n" + " [Type[Container[List]]](0:0):\n" " ElementType:\n" - " [Type[Primitive[Float]]]:float" + " [Type[Primitive[Float]]](0:0):float" }; auto const serialized_result{map_node->serialize_to_str(0)}; REQUIRE_FALSE(serialized_result.has_error()); @@ -394,15 +403,15 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { REQUIRE(named_var_node->get_num_children() == 2); constexpr std::string_view cExpectedSerializedResult{ - "[NamedVar]:\n" + "[NamedVar](0:0):\n" " Id:\n" - " [Identifier]:TestId\n" + " [Identifier](0:0):TestId\n" " Type:\n" - " [Type[Container[Map]]]:\n" + " [Type[Container[Map]]](0:0):\n" " KeyType:\n" - " [Type[Primitive[Int]]]:int64\n" + " [Type[Primitive[Int]]](0:0):int64\n" " ValueType:\n" - " [Type[Primitive[Float]]]:double" + " [Type[Primitive[Float]]](0:0):double" }; auto const serialized_result{named_var_node->serialize_to_str(0)}; REQUIRE_FALSE(serialized_result.has_error()); @@ -418,7 +427,9 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { REQUIRE(tuple_node->get_num_children() == 0); - constexpr std::string_view cExpectedSerializedResult{"[Type[Container[Tuple]]]:Empty"}; + constexpr std::string_view cExpectedSerializedResult{ + "[Type[Container[Tuple]]](0:0):Empty" + }; auto const serialized_result{tuple_node->serialize_to_str(0)}; REQUIRE_FALSE(serialized_result.has_error()); REQUIRE(serialized_result.value() == cExpectedSerializedResult); @@ -445,17 +456,17 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { REQUIRE(tuple_node->get_num_children() == 3); constexpr std::string_view cExpectedSerializedResult{ - "[Type[Container[Tuple]]]:\n" + "[Type[Container[Tuple]]](0:0):\n" " Element[0]:\n" - " [Type[Primitive[Int]]]:int64\n" + " [Type[Primitive[Int]]](0:0):int64\n" " Element[1]:\n" - " [Type[Primitive[Float]]]:double\n" + " [Type[Primitive[Float]]](0:0):double\n" " Element[2]:\n" - " [Type[Container[Map]]]:\n" + " [Type[Container[Map]]](0:0):\n" " KeyType:\n" - " [Type[Primitive[Int]]]:int64\n" + " [Type[Primitive[Int]]](0:0):int64\n" " ValueType:\n" - " [Type[Primitive[Float]]]:double" + " [Type[Primitive[Float]]](0:0):double" }; auto const serialized_result{tuple_node->serialize_to_str(0)}; REQUIRE_FALSE(serialized_result.has_error()); @@ -511,30 +522,31 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { REQUIRE(struct_spec_node->get_name() == cTestStructName); constexpr std::string_view cExpectedSerializedResult{ - "[StructSpec]:\n" - " Name:TestStruct\n" + "[StructSpec](0:0):\n" + " Name:\n" + " [Identifier](0:0):TestStruct\n" " Fields[0]:\n" - " [NamedVar]:\n" + " [NamedVar](0:0):\n" " Id:\n" - " [Identifier]:m_int\n" + " [Identifier](0:0):m_int\n" " Type:\n" - " [Type[Primitive[Int]]]:int64\n" + " [Type[Primitive[Int]]](0:0):int64\n" " Fields[1]:\n" - " [NamedVar]:\n" + " [NamedVar](0:0):\n" " Id:\n" - " [Identifier]:m_float\n" + " [Identifier](0:0):m_float\n" " Type:\n" - " [Type[Primitive[Float]]]:double\n" + " [Type[Primitive[Float]]](0:0):double\n" " Fields[2]:\n" - " [NamedVar]:\n" + " [NamedVar](0:0):\n" " Id:\n" - " [Identifier]:m_map\n" + " [Identifier](0:0):m_map\n" " Type:\n" - " [Type[Container[Map]]]:\n" + " [Type[Container[Map]]](0:0):\n" " KeyType:\n" - " [Type[Primitive[Int]]]:int64\n" + " [Type[Primitive[Int]]](0:0):int64\n" " ValueType:\n" - " [Type[Primitive[Float]]]:double" + " [Type[Primitive[Float]]](0:0):double" }; auto const serialized_result{struct_spec_node->serialize_to_str(0)}; REQUIRE_FALSE(serialized_result.has_error()); @@ -609,9 +621,11 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { REQUIRE(cTestStructName == struct_node->get_name()); REQUIRE(nullptr == struct_node->get_spec()); - constexpr std::string_view cExpectedSerializedResult{"[Type[Struct]]:\n" - " Name:\n" - " [Identifier]:TestStruct"}; + constexpr std::string_view cExpectedSerializedResult{ + "[Type[Struct]](0:0):\n" + " Name:\n" + " [Identifier](0:0):TestStruct" + }; auto const serialized_result{struct_node->serialize_to_str(0)}; REQUIRE_FALSE(serialized_result.has_error()); REQUIRE(serialized_result.value() == cExpectedSerializedResult); @@ -690,32 +704,33 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { REQUIRE(nullptr != func_node->get_return_type()); constexpr std::string_view cExpectedSerializedResult{ - "[Function]:\n" - " Name:test_function\n" + "[Function](0:0):\n" + " Name:\n" + " [Identifier](0:0):test_function\n" " Return:\n" - " [Type[Container[Tuple]]]:\n" + " [Type[Container[Tuple]]](0:0):\n" " Element[0]:\n" - " [Type[Primitive[Int]]]:int64\n" + " [Type[Primitive[Int]]](0:0):int64\n" " Element[1]:\n" - " [Type[Struct]]:\n" + " [Type[Struct]](0:0):\n" " Name:\n" - " [Identifier]:TestStruct\n" + " [Identifier](0:0):TestStruct\n" " Element[2]:\n" - " [Type[Primitive[Bool]]]\n" + " [Type[Primitive[Bool]]](0:0)\n" " Params[0]:\n" - " [NamedVar]:\n" + " [NamedVar](0:0):\n" " Id:\n" - " [Identifier]:param_0\n" + " [Identifier](0:0):param_0\n" " Type:\n" - " [Type[Primitive[Int]]]:int64\n" + " [Type[Primitive[Int]]](0:0):int64\n" " Params[1]:\n" - " [NamedVar]:\n" + " [NamedVar](0:0):\n" " Id:\n" - " [Identifier]:param_1\n" + " [Identifier](0:0):param_1\n" " Type:\n" - " [Type[Struct]]:\n" + " [Type[Struct]](0:0):\n" " Name:\n" - " [Identifier]:TestStruct" + " [Identifier](0:0):TestStruct" }; auto const serialized_result{func_node->serialize_to_str(0)}; REQUIRE_FALSE(serialized_result.has_error()); @@ -745,24 +760,25 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { REQUIRE(nullptr == func_node->get_return_type()); constexpr std::string_view cExpectedSerializedResult{ - "[Function]:\n" - " Name:test_function\n" + "[Function](0:0):\n" + " Name:\n" + " [Identifier](0:0):test_function\n" " Return:\n" " void\n" " Params[0]:\n" - " [NamedVar]:\n" + " [NamedVar](0:0):\n" " Id:\n" - " [Identifier]:param_0\n" + " [Identifier](0:0):param_0\n" " Type:\n" - " [Type[Primitive[Int]]]:int64\n" + " [Type[Primitive[Int]]](0:0):int64\n" " Params[1]:\n" - " [NamedVar]:\n" + " [NamedVar](0:0):\n" " Id:\n" - " [Identifier]:param_1\n" + " [Identifier](0:0):param_1\n" " Type:\n" - " [Type[Struct]]:\n" + " [Type[Struct]](0:0):\n" " Name:\n" - " [Identifier]:TestStruct" + " [Identifier](0:0):TestStruct" }; auto const serialized_result{func_node->serialize_to_str(0)}; REQUIRE_FALSE(serialized_result.has_error()); @@ -791,18 +807,19 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { REQUIRE(nullptr != func_node->get_return_type()); constexpr std::string_view cExpectedSerializedResult{ - "[Function]:\n" - " Name:test_function\n" + "[Function](0:0):\n" + " Name:\n" + " [Identifier](0:0):test_function\n" " Return:\n" - " [Type[Container[Tuple]]]:\n" + " [Type[Container[Tuple]]](0:0):\n" " Element[0]:\n" - " [Type[Primitive[Int]]]:int64\n" + " [Type[Primitive[Int]]](0:0):int64\n" " Element[1]:\n" - " [Type[Struct]]:\n" + " [Type[Struct]](0:0):\n" " Name:\n" - " [Identifier]:TestStruct\n" + " [Identifier](0:0):TestStruct\n" " Element[2]:\n" - " [Type[Primitive[Bool]]]\n" + " [Type[Primitive[Bool]]](0:0)\n" " No Params" }; auto const serialized_result{func_node->serialize_to_str(0)}; @@ -827,11 +844,14 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { REQUIRE(func_node->get_name() == cTestFuncName); REQUIRE(nullptr == func_node->get_return_type()); - constexpr std::string_view cExpectedSerializedResult{"[Function]:\n" - " Name:test_function\n" - " Return:\n" - " void\n" - " No Params"}; + constexpr std::string_view cExpectedSerializedResult{ + "[Function](0:0):\n" + " Name:\n" + " [Identifier](0:0):test_function\n" + " Return:\n" + " void\n" + " No Params" + }; auto const serialized_result{func_node->serialize_to_str(0)}; REQUIRE_FALSE(serialized_result.has_error()); REQUIRE(serialized_result.value() == cExpectedSerializedResult); @@ -881,19 +901,22 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { REQUIRE(namespace_node->get_num_children() == 3); constexpr std::string_view cExpectedSerializedResult{ - "[Namespace]:\n" - " Name:TestNamespace\n" + "[Namespace](0:0):\n" + " Name:\n" + " [Identifier](0:0):TestNamespace\n" " Func[0]:\n" - " [Function]:\n" - " Name:func_0\n" + " [Function](0:0):\n" + " Name:\n" + " [Identifier](0:0):func_0\n" " Return:\n" - " [Type[Container[Tuple]]]:Empty\n" + " [Type[Container[Tuple]]](0:0):Empty\n" " No Params\n" " Func[1]:\n" - " [Function]:\n" - " Name:func_1\n" + " [Function](0:0):\n" + " Name:\n" + " [Identifier](0:0):func_1\n" " Return:\n" - " [Type[Container[Tuple]]]:Empty\n" + " [Type[Container[Tuple]]](0:0):Empty\n" " No Params" }; auto const serialized_result{namespace_node->serialize_to_str(0)}; @@ -941,48 +964,55 @@ TEST_CASE("test-ast-node", "[tdl][ast][Node]") { SECTION("Serialization") { constexpr std::string_view cExpectedSerializedResult{ - "[TranslationUnit]:\n" + "[TranslationUnit](0:0):\n" " StructSpecs:\n" - " [StructSpec]:\n" - " Name:Struct0\n" + " [StructSpec](0:0):\n" + " Name:\n" + " [Identifier](0:0):Struct0\n" " Fields[0]:\n" - " [NamedVar]:\n" + " [NamedVar](0:0):\n" " Id:\n" - " [Identifier]:member_0\n" + " [Identifier](0:0):member_0\n" " Type:\n" - " [Type[Primitive[Int]]]:int32\n" - " [StructSpec]:\n" - " Name:Struct1\n" + " [Type[Primitive[Int]]](0:0):int32\n" + " [StructSpec](0:0):\n" + " Name:\n" + " [Identifier](0:0):Struct1\n" " Fields[0]:\n" - " [NamedVar]:\n" + " [NamedVar](0:0):\n" " Id:\n" - " [Identifier]:member_0\n" + " [Identifier](0:0):member_0\n" " Type:\n" - " [Type[Primitive[Int]]]:int32\n" - " [StructSpec]:\n" - " Name:Struct2\n" + " [Type[Primitive[Int]]](0:0):int32\n" + " [StructSpec](0:0):\n" + " Name:\n" + " [Identifier](0:0):Struct2\n" " Fields[0]:\n" - " [NamedVar]:\n" + " [NamedVar](0:0):\n" " Id:\n" - " [Identifier]:member_0\n" + " [Identifier](0:0):member_0\n" " Type:\n" - " [Type[Primitive[Int]]]:int32\n" + " [Type[Primitive[Int]]](0:0):int32\n" " Namespaces:\n" - " [Namespace]:\n" - " Name:ns0\n" + " [Namespace](0:0):\n" + " Name:\n" + " [Identifier](0:0):ns0\n" " Func[0]:\n" - " [Function]:\n" - " Name:func_0\n" + " [Function](0:0):\n" + " Name:\n" + " [Identifier](0:0):func_0\n" " Return:\n" - " [Type[Container[Tuple]]]:Empty\n" + " [Type[Container[Tuple]]](0:0):Empty\n" " No Params\n" - " [Namespace]:\n" - " Name:ns1\n" + " [Namespace](0:0):\n" + " Name:\n" + " [Identifier](0:0):ns1\n" " Func[0]:\n" - " [Function]:\n" - " Name:func_0\n" + " [Function](0:0):\n" + " Name:\n" + " [Identifier](0:0):func_0\n" " Return:\n" - " [Type[Container[Tuple]]]:Empty\n" + " [Type[Container[Tuple]]](0:0):Empty\n" " No Params" }; auto const serialized_result{translation_unit->serialize_to_str(0)}; diff --git a/tests/tdl/test-parser.cpp b/tests/tdl/test-parser.cpp index 45731c03..62f2ea2b 100644 --- a/tests/tdl/test-parser.cpp +++ b/tests/tdl/test-parser.cpp @@ -13,7 +13,7 @@ namespace { using spider::tdl::parser::parse_translation_unit_from_istream; using spider::tdl::parser::SourceLocation; -constexpr std::string_view cTestInput1{R"( +constexpr std::string_view cTestInput1{R"(// Start of a TDL file. This is line#1. namespace test1 { // Function with no parameters and no return type fn empty_func(); @@ -61,201 +61,212 @@ TEST_CASE("Parsing `cTestInput1`", "[tdl][parser]") { auto const& translation_unit{parse_result.value()}; constexpr std::string_view cExpectedSerializedAst{ - "[TranslationUnit]:\n" + "[TranslationUnit](2:0):\n" " StructSpecs:\n" - " [StructSpec]:\n" - " Name:Input\n" + " [StructSpec](19:0):\n" + " Name:\n" + " [Identifier](19:7):Input\n" " Fields[0]:\n" - " [NamedVar]:\n" + " [NamedVar](20:4):\n" " Id:\n" - " [Identifier]:field_0\n" + " [Identifier](20:4):field_0\n" " Type:\n" - " [Type[Primitive[Int]]]:int8\n" + " [Type[Primitive[Int]]](20:13):int8\n" " Fields[1]:\n" - " [NamedVar]:\n" + " [NamedVar](21:4):\n" " Id:\n" - " [Identifier]:field_1\n" + " [Identifier](21:4):field_1\n" " Type:\n" - " [Type[Primitive[Int]]]:int16\n" + " [Type[Primitive[Int]]](21:13):int16\n" " Fields[2]:\n" - " [NamedVar]:\n" + " [NamedVar](22:4):\n" " Id:\n" - " [Identifier]:field_2\n" + " [Identifier](22:4):field_2\n" " Type:\n" - " [Type[Primitive[Int]]]:int32\n" + " [Type[Primitive[Int]]](22:13):int32\n" " Fields[3]:\n" - " [NamedVar]:\n" + " [NamedVar](23:4):\n" " Id:\n" - " [Identifier]:field_3\n" + " [Identifier](23:4):field_3\n" " Type:\n" - " [Type[Primitive[Int]]]:int64\n" + " [Type[Primitive[Int]]](23:13):int64\n" " Fields[4]:\n" - " [NamedVar]:\n" + " [NamedVar](24:4):\n" " Id:\n" - " [Identifier]:field_4\n" + " [Identifier](24:4):field_4\n" " Type:\n" - " [Type[Primitive[Float]]]:float\n" + " [Type[Primitive[Float]]](24:13):float\n" " Fields[5]:\n" - " [NamedVar]:\n" + " [NamedVar](25:4):\n" " Id:\n" - " [Identifier]:field_5\n" + " [Identifier](25:4):field_5\n" " Type:\n" - " [Type[Primitive[Float]]]:double\n" + " [Type[Primitive[Float]]](25:13):double\n" " Fields[6]:\n" - " [NamedVar]:\n" + " [NamedVar](26:4):\n" " Id:\n" - " [Identifier]:field_6\n" + " [Identifier](26:4):field_6\n" " Type:\n" - " [Type[Primitive[Bool]]]\n" + " [Type[Primitive[Bool]]](26:13)\n" " Fields[7]:\n" - " [NamedVar]:\n" + " [NamedVar](27:4):\n" " Id:\n" - " [Identifier]:field_7\n" + " [Identifier](27:4):field_7\n" " Type:\n" - " [Type[Container[List]]]:\n" + " [Type[Container[List]]](27:13):\n" " ElementType:\n" - " [Type[Primitive[Int]]]:int8\n" + " [Type[Primitive[Int]]](27:18):int8\n" " Fields[8]:\n" - " [NamedVar]:\n" + " [NamedVar](28:4):\n" " Id:\n" - " [Identifier]:field_8\n" + " [Identifier](28:4):field_8\n" " Type:\n" - " [Type[Container[Map]]]:\n" + " [Type[Container[Map]]](28:13):\n" " KeyType:\n" - " [Type[Container[List]]]:\n" + " [Type[Container[List]]](28:17):\n" " ElementType:\n" - " [Type[Primitive[Int]]]:int8\n" + " [Type[Primitive[Int]]](28:22):int8\n" " ValueType:\n" - " [Type[Primitive[Float]]]:double\n" - " [StructSpec]:\n" - " Name:Output\n" + " [Type[Primitive[Float]]](28:29):double\n" + " [StructSpec](31:0):\n" + " Name:\n" + " [Identifier](31:7):Output\n" " Fields[0]:\n" - " [NamedVar]:\n" + " [NamedVar](33:4):\n" " Id:\n" - " [Identifier]:processed_input\n" + " [Identifier](33:4):processed_input\n" " Type:\n" - " [Type[Container[Map]]]:\n" + " [Type[Container[Map]]](33:21):\n" " KeyType:\n" - " [Type[Primitive[Int]]]:int64\n" + " [Type[Primitive[Int]]](33:25):int64\n" " ValueType:\n" - " [Type[Struct]]:\n" + " [Type[Struct]](33:32):\n" " Name:\n" - " [Identifier]:Input\n" + " [Identifier](33:32):Input\n" " Namespaces:\n" - " [Namespace]:\n" - " Name:test1\n" + " [Namespace](2:0):\n" + " Name:\n" + " [Identifier](2:10):test1\n" " Func[0]:\n" - " [Function]:\n" - " Name:empty_func\n" + " [Function](4:4):\n" + " Name:\n" + " [Identifier](4:7):empty_func\n" " Return:\n" " void\n" " No Params\n" " Func[1]:\n" - " [Function]:\n" - " Name:add\n" + " [Function](7:4):\n" + " Name:\n" + " [Identifier](7:7):add\n" " Return:\n" - " [Type[Primitive[Int]]]:int64\n" + " [Type[Primitive[Int]]](7:34):int64\n" " Params[0]:\n" - " [NamedVar]:\n" + " [NamedVar](7:11):\n" " Id:\n" - " [Identifier]:a\n" + " [Identifier](7:11):a\n" " Type:\n" - " [Type[Primitive[Int]]]:int32\n" + " [Type[Primitive[Int]]](7:14):int32\n" " Params[1]:\n" - " [NamedVar]:\n" + " [NamedVar](7:21):\n" " Id:\n" - " [Identifier]:b\n" + " [Identifier](7:21):b\n" " Type:\n" - " [Type[Primitive[Int]]]:int32\n" + " [Type[Primitive[Int]]](7:24):int32\n" " Func[2]:\n" - " [Function]:\n" - " Name:return_empty_tuple\n" + " [Function](10:4):\n" + " Name:\n" + " [Identifier](10:7):return_empty_tuple\n" " Return:\n" - " [Type[Container[Tuple]]]:Empty\n" + " [Type[Container[Tuple]]](10:31):Empty\n" " No Params\n" " Func[3]:\n" - " [Function]:\n" - " Name:return_singleton_tuple\n" + " [Function](13:4):\n" + " Name:\n" + " [Identifier](13:7):return_singleton_tuple\n" " Return:\n" - " [Type[Container[Tuple]]]:\n" + " [Type[Container[Tuple]]](13:43):\n" " Element[0]:\n" - " [Type[Primitive[Int]]]:int32\n" + " [Type[Primitive[Int]]](13:49):int32\n" " Params[0]:\n" - " [NamedVar]:\n" + " [NamedVar](13:30):\n" " Id:\n" - " [Identifier]:a\n" + " [Identifier](13:30):a\n" " Type:\n" - " [Type[Primitive[Int]]]:int64\n" + " [Type[Primitive[Int]]](13:33):int64\n" " Func[4]:\n" - " [Function]:\n" - " Name:return_tuple_of_containers\n" + " [Function](16:4):\n" + " Name:\n" + " [Identifier](16:7):return_tuple_of_containers\n" " Return:\n" - " [Type[Container[Tuple]]]:\n" + " [Type[Container[Tuple]]](16:39):\n" " Element[0]:\n" - " [Type[Container[List]]]:\n" + " [Type[Container[List]]](16:45):\n" " ElementType:\n" - " [Type[Primitive[Int]]]:int8\n" + " [Type[Primitive[Int]]](16:50):int8\n" " Element[1]:\n" - " [Type[Container[Map]]]:\n" + " [Type[Container[Map]]](16:57):\n" " KeyType:\n" - " [Type[Container[List]]]:\n" + " [Type[Container[List]]](16:61):\n" " ElementType:\n" - " [Type[Primitive[Int]]]:int8\n" + " [Type[Primitive[Int]]](16:66):int8\n" " ValueType:\n" - " [Type[Container[Map]]]:\n" + " [Type[Container[Map]]](16:73):\n" " KeyType:\n" - " [Type[Primitive[Int]]]:int64\n" + " [Type[Primitive[Int]]](16:77):int64\n" " ValueType:\n" - " [Type[Container[List]]]:\n" + " [Type[Container[List]]](16:84):\n" " ElementType:\n" - " [Type[Primitive[Int]]]:int8\n" + " [Type[Primitive[Int]]](16:89):int8\n" " No Params\n" - " [Namespace]:\n" - " Name:test2\n" + " [Namespace](36:0):\n" + " Name:\n" + " [Identifier](36:10):test2\n" " Func[0]:\n" - " [Function]:\n" - " Name:process_input\n" + " [Function](37:4):\n" + " Name:\n" + " [Identifier](37:7):process_input\n" " Return:\n" - " [Type[Struct]]:\n" + " [Type[Struct]](37:54):\n" " Name:\n" - " [Identifier]:Output\n" + " [Identifier](37:54):Output\n" " Params[0]:\n" - " [NamedVar]:\n" + " [NamedVar](37:21):\n" " Id:\n" - " [Identifier]:input\n" + " [Identifier](37:21):input\n" " Type:\n" - " [Type[Struct]]:\n" + " [Type[Struct]](37:28):\n" " Name:\n" - " [Identifier]:Input\n" + " [Identifier](37:28):Input\n" " Params[1]:\n" - " [NamedVar]:\n" + " [NamedVar](37:35):\n" " Id:\n" - " [Identifier]:task_id\n" + " [Identifier](37:35):task_id\n" " Type:\n" - " [Type[Primitive[Int]]]:int64\n" + " [Type[Primitive[Int]]](37:44):int64\n" " Func[1]:\n" - " [Function]:\n" - " Name:process_inputs\n" + " [Function](38:4):\n" + " Name:\n" + " [Identifier](38:7):process_inputs\n" " Return:\n" - " [Type[Struct]]:\n" + " [Type[Struct]](38:62):\n" " Name:\n" - " [Identifier]:Output\n" + " [Identifier](38:62):Output\n" " Params[0]:\n" - " [NamedVar]:\n" + " [NamedVar](38:22):\n" " Id:\n" - " [Identifier]:inputs\n" + " [Identifier](38:22):inputs\n" " Type:\n" - " [Type[Container[List]]]:\n" + " [Type[Container[List]]](38:30):\n" " ElementType:\n" - " [Type[Struct]]:\n" + " [Type[Struct]](38:35):\n" " Name:\n" - " [Identifier]:Input\n" + " [Identifier](38:35):Input\n" " Params[1]:\n" - " [NamedVar]:\n" + " [NamedVar](38:43):\n" " Id:\n" - " [Identifier]:task_id\n" + " [Identifier](38:43):task_id\n" " Type:\n" - " [Type[Primitive[Int]]]:int64" + " [Type[Primitive[Int]]](38:52):int64" }; auto const serialize_result{translation_unit->serialize_to_str(0)}; REQUIRE_FALSE(serialize_result.has_error()); From 8ef26e5b1e304eeb77d44485efb7cb85d1f620e2 Mon Sep 17 00:00:00 2001 From: LinZhihao-723 Date: Mon, 25 Aug 2025 22:31:51 -0400 Subject: [PATCH 2/8] Add reserved words. --- src/spider/tdl/parser/TaskDefLang.g4 | 103 ++++++- .../antlr_generated/TaskDefLangLexer.cpp | 277 ++++++++++++++---- .../parser/antlr_generated/TaskDefLangLexer.h | 4 +- .../antlr_generated/TaskDefLangParser.cpp | 8 +- .../antlr_generated/TaskDefLangParser.h | 4 +- tests/tdl/test-parser.cpp | 15 + 6 files changed, 350 insertions(+), 61 deletions(-) diff --git a/src/spider/tdl/parser/TaskDefLang.g4 b/src/spider/tdl/parser/TaskDefLang.g4 index 54de9500..25e7f2c8 100644 --- a/src/spider/tdl/parser/TaskDefLang.g4 +++ b/src/spider/tdl/parser/TaskDefLang.g4 @@ -278,6 +278,107 @@ builtinType returns [std::unique_ptr retval] } ; -ID: [a-zA-Z_][a-zA-Z0-9_]* ; SPACE: [ \t\r\n] -> skip ; COMMENT: '//' (~[\r\n])* -> skip; + +RESERVED_CONTROL_FLOW_WORDS +: 'if' +| 'else' +| 'switch' +| 'case' +| 'while' +| 'for' +| 'loop' +| 'do' +| 'break' +| 'continue' +| 'return' +| 'goto' +| 'pass' +| 'yield' +; + +RESERVED_DEF_WORDS +: 'class' +| 'struct' +| 'enum' +| 'union' +| 'interface' +| 'namespace' +| 'using' +| 'typedef' +| 'def' +| 'let' +| 'module' +| 'import' +; + +RESERVED_TYPE_AND_STORAGE_WORDS +: 'int' +| 'long' +| 'short' +| 'byte' +| 'signed' +| 'unsigned' +| 'char' +| 'string' +| 'str' +| 'void' +| 'const' +| 'static' +| 'volatile' +| 'register' +| 'final' +| 'abstract' +| 'this' +| 'self' +| 'new' +| 'delete' +| 'null' +| 'nullptr' +| 'true' +| 'false' +| 'True' +| 'False' +; + +RESERVED_ERROR_HANDLING_WORDS +: 'try' +| 'catch' +| 'throw' +| 'throws' +| 'raise' +| 'finally' +| 'assert' +| 'except' +; + +RESERVED_ACCESS_CONTROL_WORDS +: 'public' +| 'private' +| 'protected' +| 'internal' +| 'friend' +; + +RESERVED_OTHER_WORDS +: 'operator' +| 'inline' +| 'virtual' +| 'override' +| 'extern' +| 'sizeof' +| 'await' +| 'async' +| 'with' +| 'global' +| 'nonlocal' +| 'and' +| 'or' +| 'not' +| 'in' +| 'is' +| 'del' +; + +ID: [a-zA-Z_][a-zA-Z0-9_]* ; diff --git a/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp b/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp index 3466b740..66df1f22 100644 --- a/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp +++ b/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp @@ -71,8 +71,10 @@ void taskdeflanglexerLexerInitialize() { std::vector{ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16", - "T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "ID", "SPACE", - "COMMENT" + "T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "SPACE", "COMMENT", + "RESERVED_CONTROL_FLOW_WORDS", "RESERVED_DEF_WORDS", "RESERVED_TYPE_AND_STORAGE_WORDS", + "RESERVED_ERROR_HANDLING_WORDS", "RESERVED_ACCESS_CONTROL_WORDS", + "RESERVED_OTHER_WORDS", "ID" }, std::vector{ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" @@ -88,64 +90,229 @@ void taskdeflanglexerLexerInitialize() { }, std::vector{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "ID", "SPACE", "COMMENT" + "", "", "", "", "", "", "", "SPACE", "COMMENT", "RESERVED_CONTROL_FLOW_WORDS", + "RESERVED_DEF_WORDS", "RESERVED_TYPE_AND_STORAGE_WORDS", "RESERVED_ERROR_HANDLING_WORDS", + "RESERVED_ACCESS_CONTROL_WORDS", "RESERVED_OTHER_WORDS", "ID" } ); static const int32_t serializedATNSegment[] = { - 4,0,26,172,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, + 4,0,32,622,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, 6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14, 7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21, - 7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,1,0,1,0,1,0,1,0,1,0,1,0, - 1,0,1,0,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1, - 7,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11, - 1,11,1,11,1,11,1,12,1,12,1,13,1,13,1,14,1,14,1,14,1,14,1,15,1,15,1,15, - 1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17, - 1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20, - 1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22, - 1,22,1,22,1,23,1,23,5,23,153,8,23,10,23,12,23,156,9,23,1,24,1,24,1,24, - 1,24,1,25,1,25,1,25,1,25,5,25,166,8,25,10,25,12,25,169,9,25,1,25,1,25, - 0,0,26,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13, - 27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49, - 25,51,26,1,0,4,3,0,65,90,95,95,97,122,4,0,48,57,65,90,95,95,97,122,3, - 0,9,10,13,13,32,32,2,0,10,10,13,13,173,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1, - 0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0, - 0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27, - 1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0, - 0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0, - 0,49,1,0,0,0,0,51,1,0,0,0,1,53,1,0,0,0,3,63,1,0,0,0,5,65,1,0,0,0,7,67, - 1,0,0,0,9,70,1,0,0,0,11,72,1,0,0,0,13,74,1,0,0,0,15,76,1,0,0,0,17,79, - 1,0,0,0,19,81,1,0,0,0,21,83,1,0,0,0,23,90,1,0,0,0,25,95,1,0,0,0,27,97, - 1,0,0,0,29,99,1,0,0,0,31,103,1,0,0,0,33,109,1,0,0,0,35,114,1,0,0,0,37, - 120,1,0,0,0,39,126,1,0,0,0,41,132,1,0,0,0,43,138,1,0,0,0,45,145,1,0,0, - 0,47,150,1,0,0,0,49,157,1,0,0,0,51,161,1,0,0,0,53,54,5,110,0,0,54,55, - 5,97,0,0,55,56,5,109,0,0,56,57,5,101,0,0,57,58,5,115,0,0,58,59,5,112, - 0,0,59,60,5,97,0,0,60,61,5,99,0,0,61,62,5,101,0,0,62,2,1,0,0,0,63,64, - 5,123,0,0,64,4,1,0,0,0,65,66,5,125,0,0,66,6,1,0,0,0,67,68,5,102,0,0,68, - 69,5,110,0,0,69,8,1,0,0,0,70,71,5,40,0,0,71,10,1,0,0,0,72,73,5,41,0,0, - 73,12,1,0,0,0,74,75,5,59,0,0,75,14,1,0,0,0,76,77,5,45,0,0,77,78,5,62, - 0,0,78,16,1,0,0,0,79,80,5,58,0,0,80,18,1,0,0,0,81,82,5,44,0,0,82,20,1, - 0,0,0,83,84,5,115,0,0,84,85,5,116,0,0,85,86,5,114,0,0,86,87,5,117,0,0, - 87,88,5,99,0,0,88,89,5,116,0,0,89,22,1,0,0,0,90,91,5,76,0,0,91,92,5,105, - 0,0,92,93,5,115,0,0,93,94,5,116,0,0,94,24,1,0,0,0,95,96,5,60,0,0,96,26, - 1,0,0,0,97,98,5,62,0,0,98,28,1,0,0,0,99,100,5,77,0,0,100,101,5,97,0,0, - 101,102,5,112,0,0,102,30,1,0,0,0,103,104,5,84,0,0,104,105,5,117,0,0,105, - 106,5,112,0,0,106,107,5,108,0,0,107,108,5,101,0,0,108,32,1,0,0,0,109, - 110,5,105,0,0,110,111,5,110,0,0,111,112,5,116,0,0,112,113,5,56,0,0,113, - 34,1,0,0,0,114,115,5,105,0,0,115,116,5,110,0,0,116,117,5,116,0,0,117, - 118,5,49,0,0,118,119,5,54,0,0,119,36,1,0,0,0,120,121,5,105,0,0,121,122, - 5,110,0,0,122,123,5,116,0,0,123,124,5,51,0,0,124,125,5,50,0,0,125,38, - 1,0,0,0,126,127,5,105,0,0,127,128,5,110,0,0,128,129,5,116,0,0,129,130, - 5,54,0,0,130,131,5,52,0,0,131,40,1,0,0,0,132,133,5,102,0,0,133,134,5, - 108,0,0,134,135,5,111,0,0,135,136,5,97,0,0,136,137,5,116,0,0,137,42,1, - 0,0,0,138,139,5,100,0,0,139,140,5,111,0,0,140,141,5,117,0,0,141,142,5, - 98,0,0,142,143,5,108,0,0,143,144,5,101,0,0,144,44,1,0,0,0,145,146,5,98, - 0,0,146,147,5,111,0,0,147,148,5,111,0,0,148,149,5,108,0,0,149,46,1,0, - 0,0,150,154,7,0,0,0,151,153,7,1,0,0,152,151,1,0,0,0,153,156,1,0,0,0,154, - 152,1,0,0,0,154,155,1,0,0,0,155,48,1,0,0,0,156,154,1,0,0,0,157,158,7, - 2,0,0,158,159,1,0,0,0,159,160,6,24,0,0,160,50,1,0,0,0,161,162,5,47,0, - 0,162,163,5,47,0,0,163,167,1,0,0,0,164,166,8,3,0,0,165,164,1,0,0,0,166, - 169,1,0,0,0,167,165,1,0,0,0,167,168,1,0,0,0,168,170,1,0,0,0,169,167,1, - 0,0,0,170,171,6,25,0,0,171,52,1,0,0,0,3,0,154,167,1,6,0,0 + 7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28, + 7,28,2,29,7,29,2,30,7,30,2,31,7,31,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,1,7, + 1,8,1,8,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11, + 1,11,1,12,1,12,1,13,1,13,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15, + 1,15,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18, + 1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20, + 1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22, + 1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,5,24,171,8,24,10,24,12,24,174, + 9,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, + 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, + 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, + 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, + 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,3,25,240,8,25,1,26,1,26, + 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, + 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, + 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, + 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, + 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,3,26,310,8,26,1,27, + 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, + 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, + 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, + 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, + 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, + 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, + 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, + 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, + 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, + 1,27,1,27,1,27,1,27,1,27,1,27,3,27,445,8,27,1,28,1,28,1,28,1,28,1,28, + 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28, + 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28, + 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,490,8,28,1,29, + 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29, + 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29, + 1,29,1,29,1,29,1,29,1,29,1,29,1,29,3,29,528,8,29,1,30,1,30,1,30,1,30, + 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, + 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, + 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, + 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, + 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, + 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,3,30,614,8,30,1,31, + 1,31,5,31,618,8,31,10,31,12,31,621,9,31,0,0,32,1,1,3,2,5,3,7,4,9,5,11, + 6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18, + 37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59, + 30,61,31,63,32,1,0,4,3,0,9,10,13,13,32,32,2,0,10,10,13,13,3,0,65,90,95, + 95,97,122,4,0,48,57,65,90,95,95,97,122,699,0,1,1,0,0,0,0,3,1,0,0,0,0, + 5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0, + 0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0, + 0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37, + 1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0, + 0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0, + 0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,1,65,1,0,0,0,3,75,1,0,0,0,5,77, + 1,0,0,0,7,79,1,0,0,0,9,82,1,0,0,0,11,84,1,0,0,0,13,86,1,0,0,0,15,88,1, + 0,0,0,17,91,1,0,0,0,19,93,1,0,0,0,21,95,1,0,0,0,23,102,1,0,0,0,25,107, + 1,0,0,0,27,109,1,0,0,0,29,111,1,0,0,0,31,115,1,0,0,0,33,121,1,0,0,0,35, + 126,1,0,0,0,37,132,1,0,0,0,39,138,1,0,0,0,41,144,1,0,0,0,43,150,1,0,0, + 0,45,157,1,0,0,0,47,162,1,0,0,0,49,166,1,0,0,0,51,239,1,0,0,0,53,309, + 1,0,0,0,55,444,1,0,0,0,57,489,1,0,0,0,59,527,1,0,0,0,61,613,1,0,0,0,63, + 615,1,0,0,0,65,66,5,110,0,0,66,67,5,97,0,0,67,68,5,109,0,0,68,69,5,101, + 0,0,69,70,5,115,0,0,70,71,5,112,0,0,71,72,5,97,0,0,72,73,5,99,0,0,73, + 74,5,101,0,0,74,2,1,0,0,0,75,76,5,123,0,0,76,4,1,0,0,0,77,78,5,125,0, + 0,78,6,1,0,0,0,79,80,5,102,0,0,80,81,5,110,0,0,81,8,1,0,0,0,82,83,5,40, + 0,0,83,10,1,0,0,0,84,85,5,41,0,0,85,12,1,0,0,0,86,87,5,59,0,0,87,14,1, + 0,0,0,88,89,5,45,0,0,89,90,5,62,0,0,90,16,1,0,0,0,91,92,5,58,0,0,92,18, + 1,0,0,0,93,94,5,44,0,0,94,20,1,0,0,0,95,96,5,115,0,0,96,97,5,116,0,0, + 97,98,5,114,0,0,98,99,5,117,0,0,99,100,5,99,0,0,100,101,5,116,0,0,101, + 22,1,0,0,0,102,103,5,76,0,0,103,104,5,105,0,0,104,105,5,115,0,0,105,106, + 5,116,0,0,106,24,1,0,0,0,107,108,5,60,0,0,108,26,1,0,0,0,109,110,5,62, + 0,0,110,28,1,0,0,0,111,112,5,77,0,0,112,113,5,97,0,0,113,114,5,112,0, + 0,114,30,1,0,0,0,115,116,5,84,0,0,116,117,5,117,0,0,117,118,5,112,0,0, + 118,119,5,108,0,0,119,120,5,101,0,0,120,32,1,0,0,0,121,122,5,105,0,0, + 122,123,5,110,0,0,123,124,5,116,0,0,124,125,5,56,0,0,125,34,1,0,0,0,126, + 127,5,105,0,0,127,128,5,110,0,0,128,129,5,116,0,0,129,130,5,49,0,0,130, + 131,5,54,0,0,131,36,1,0,0,0,132,133,5,105,0,0,133,134,5,110,0,0,134,135, + 5,116,0,0,135,136,5,51,0,0,136,137,5,50,0,0,137,38,1,0,0,0,138,139,5, + 105,0,0,139,140,5,110,0,0,140,141,5,116,0,0,141,142,5,54,0,0,142,143, + 5,52,0,0,143,40,1,0,0,0,144,145,5,102,0,0,145,146,5,108,0,0,146,147,5, + 111,0,0,147,148,5,97,0,0,148,149,5,116,0,0,149,42,1,0,0,0,150,151,5,100, + 0,0,151,152,5,111,0,0,152,153,5,117,0,0,153,154,5,98,0,0,154,155,5,108, + 0,0,155,156,5,101,0,0,156,44,1,0,0,0,157,158,5,98,0,0,158,159,5,111,0, + 0,159,160,5,111,0,0,160,161,5,108,0,0,161,46,1,0,0,0,162,163,7,0,0,0, + 163,164,1,0,0,0,164,165,6,23,0,0,165,48,1,0,0,0,166,167,5,47,0,0,167, + 168,5,47,0,0,168,172,1,0,0,0,169,171,8,1,0,0,170,169,1,0,0,0,171,174, + 1,0,0,0,172,170,1,0,0,0,172,173,1,0,0,0,173,175,1,0,0,0,174,172,1,0,0, + 0,175,176,6,24,0,0,176,50,1,0,0,0,177,178,5,105,0,0,178,240,5,102,0,0, + 179,180,5,101,0,0,180,181,5,108,0,0,181,182,5,115,0,0,182,240,5,101,0, + 0,183,184,5,115,0,0,184,185,5,119,0,0,185,186,5,105,0,0,186,187,5,116, + 0,0,187,188,5,99,0,0,188,240,5,104,0,0,189,190,5,99,0,0,190,191,5,97, + 0,0,191,192,5,115,0,0,192,240,5,101,0,0,193,194,5,119,0,0,194,195,5,104, + 0,0,195,196,5,105,0,0,196,197,5,108,0,0,197,240,5,101,0,0,198,199,5,102, + 0,0,199,200,5,111,0,0,200,240,5,114,0,0,201,202,5,108,0,0,202,203,5,111, + 0,0,203,204,5,111,0,0,204,240,5,112,0,0,205,206,5,100,0,0,206,240,5,111, + 0,0,207,208,5,98,0,0,208,209,5,114,0,0,209,210,5,101,0,0,210,211,5,97, + 0,0,211,240,5,107,0,0,212,213,5,99,0,0,213,214,5,111,0,0,214,215,5,110, + 0,0,215,216,5,116,0,0,216,217,5,105,0,0,217,218,5,110,0,0,218,219,5,117, + 0,0,219,240,5,101,0,0,220,221,5,114,0,0,221,222,5,101,0,0,222,223,5,116, + 0,0,223,224,5,117,0,0,224,225,5,114,0,0,225,240,5,110,0,0,226,227,5,103, + 0,0,227,228,5,111,0,0,228,229,5,116,0,0,229,240,5,111,0,0,230,231,5,112, + 0,0,231,232,5,97,0,0,232,233,5,115,0,0,233,240,5,115,0,0,234,235,5,121, + 0,0,235,236,5,105,0,0,236,237,5,101,0,0,237,238,5,108,0,0,238,240,5,100, + 0,0,239,177,1,0,0,0,239,179,1,0,0,0,239,183,1,0,0,0,239,189,1,0,0,0,239, + 193,1,0,0,0,239,198,1,0,0,0,239,201,1,0,0,0,239,205,1,0,0,0,239,207,1, + 0,0,0,239,212,1,0,0,0,239,220,1,0,0,0,239,226,1,0,0,0,239,230,1,0,0,0, + 239,234,1,0,0,0,240,52,1,0,0,0,241,242,5,99,0,0,242,243,5,108,0,0,243, + 244,5,97,0,0,244,245,5,115,0,0,245,310,5,115,0,0,246,247,5,115,0,0,247, + 248,5,116,0,0,248,249,5,114,0,0,249,250,5,117,0,0,250,251,5,99,0,0,251, + 310,5,116,0,0,252,253,5,101,0,0,253,254,5,110,0,0,254,255,5,117,0,0,255, + 310,5,109,0,0,256,257,5,117,0,0,257,258,5,110,0,0,258,259,5,105,0,0,259, + 260,5,111,0,0,260,310,5,110,0,0,261,262,5,105,0,0,262,263,5,110,0,0,263, + 264,5,116,0,0,264,265,5,101,0,0,265,266,5,114,0,0,266,267,5,102,0,0,267, + 268,5,97,0,0,268,269,5,99,0,0,269,310,5,101,0,0,270,271,5,110,0,0,271, + 272,5,97,0,0,272,273,5,109,0,0,273,274,5,101,0,0,274,275,5,115,0,0,275, + 276,5,112,0,0,276,277,5,97,0,0,277,278,5,99,0,0,278,310,5,101,0,0,279, + 280,5,117,0,0,280,281,5,115,0,0,281,282,5,105,0,0,282,283,5,110,0,0,283, + 310,5,103,0,0,284,285,5,116,0,0,285,286,5,121,0,0,286,287,5,112,0,0,287, + 288,5,101,0,0,288,289,5,100,0,0,289,290,5,101,0,0,290,310,5,102,0,0,291, + 292,5,100,0,0,292,293,5,101,0,0,293,310,5,102,0,0,294,295,5,108,0,0,295, + 296,5,101,0,0,296,310,5,116,0,0,297,298,5,109,0,0,298,299,5,111,0,0,299, + 300,5,100,0,0,300,301,5,117,0,0,301,302,5,108,0,0,302,310,5,101,0,0,303, + 304,5,105,0,0,304,305,5,109,0,0,305,306,5,112,0,0,306,307,5,111,0,0,307, + 308,5,114,0,0,308,310,5,116,0,0,309,241,1,0,0,0,309,246,1,0,0,0,309,252, + 1,0,0,0,309,256,1,0,0,0,309,261,1,0,0,0,309,270,1,0,0,0,309,279,1,0,0, + 0,309,284,1,0,0,0,309,291,1,0,0,0,309,294,1,0,0,0,309,297,1,0,0,0,309, + 303,1,0,0,0,310,54,1,0,0,0,311,312,5,105,0,0,312,313,5,110,0,0,313,445, + 5,116,0,0,314,315,5,108,0,0,315,316,5,111,0,0,316,317,5,110,0,0,317,445, + 5,103,0,0,318,319,5,115,0,0,319,320,5,104,0,0,320,321,5,111,0,0,321,322, + 5,114,0,0,322,445,5,116,0,0,323,324,5,98,0,0,324,325,5,121,0,0,325,326, + 5,116,0,0,326,445,5,101,0,0,327,328,5,115,0,0,328,329,5,105,0,0,329,330, + 5,103,0,0,330,331,5,110,0,0,331,332,5,101,0,0,332,445,5,100,0,0,333,334, + 5,117,0,0,334,335,5,110,0,0,335,336,5,115,0,0,336,337,5,105,0,0,337,338, + 5,103,0,0,338,339,5,110,0,0,339,340,5,101,0,0,340,445,5,100,0,0,341,342, + 5,99,0,0,342,343,5,104,0,0,343,344,5,97,0,0,344,445,5,114,0,0,345,346, + 5,115,0,0,346,347,5,116,0,0,347,348,5,114,0,0,348,349,5,105,0,0,349,350, + 5,110,0,0,350,445,5,103,0,0,351,352,5,115,0,0,352,353,5,116,0,0,353,445, + 5,114,0,0,354,355,5,118,0,0,355,356,5,111,0,0,356,357,5,105,0,0,357,445, + 5,100,0,0,358,359,5,99,0,0,359,360,5,111,0,0,360,361,5,110,0,0,361,362, + 5,115,0,0,362,445,5,116,0,0,363,364,5,115,0,0,364,365,5,116,0,0,365,366, + 5,97,0,0,366,367,5,116,0,0,367,368,5,105,0,0,368,445,5,99,0,0,369,370, + 5,118,0,0,370,371,5,111,0,0,371,372,5,108,0,0,372,373,5,97,0,0,373,374, + 5,116,0,0,374,375,5,105,0,0,375,376,5,108,0,0,376,445,5,101,0,0,377,378, + 5,114,0,0,378,379,5,101,0,0,379,380,5,103,0,0,380,381,5,105,0,0,381,382, + 5,115,0,0,382,383,5,116,0,0,383,384,5,101,0,0,384,445,5,114,0,0,385,386, + 5,102,0,0,386,387,5,105,0,0,387,388,5,110,0,0,388,389,5,97,0,0,389,445, + 5,108,0,0,390,391,5,97,0,0,391,392,5,98,0,0,392,393,5,115,0,0,393,394, + 5,116,0,0,394,395,5,114,0,0,395,396,5,97,0,0,396,397,5,99,0,0,397,445, + 5,116,0,0,398,399,5,116,0,0,399,400,5,104,0,0,400,401,5,105,0,0,401,445, + 5,115,0,0,402,403,5,115,0,0,403,404,5,101,0,0,404,405,5,108,0,0,405,445, + 5,102,0,0,406,407,5,110,0,0,407,408,5,101,0,0,408,445,5,119,0,0,409,410, + 5,100,0,0,410,411,5,101,0,0,411,412,5,108,0,0,412,413,5,101,0,0,413,414, + 5,116,0,0,414,445,5,101,0,0,415,416,5,110,0,0,416,417,5,117,0,0,417,418, + 5,108,0,0,418,445,5,108,0,0,419,420,5,110,0,0,420,421,5,117,0,0,421,422, + 5,108,0,0,422,423,5,108,0,0,423,424,5,112,0,0,424,425,5,116,0,0,425,445, + 5,114,0,0,426,427,5,116,0,0,427,428,5,114,0,0,428,429,5,117,0,0,429,445, + 5,101,0,0,430,431,5,102,0,0,431,432,5,97,0,0,432,433,5,108,0,0,433,434, + 5,115,0,0,434,445,5,101,0,0,435,436,5,84,0,0,436,437,5,114,0,0,437,438, + 5,117,0,0,438,445,5,101,0,0,439,440,5,70,0,0,440,441,5,97,0,0,441,442, + 5,108,0,0,442,443,5,115,0,0,443,445,5,101,0,0,444,311,1,0,0,0,444,314, + 1,0,0,0,444,318,1,0,0,0,444,323,1,0,0,0,444,327,1,0,0,0,444,333,1,0,0, + 0,444,341,1,0,0,0,444,345,1,0,0,0,444,351,1,0,0,0,444,354,1,0,0,0,444, + 358,1,0,0,0,444,363,1,0,0,0,444,369,1,0,0,0,444,377,1,0,0,0,444,385,1, + 0,0,0,444,390,1,0,0,0,444,398,1,0,0,0,444,402,1,0,0,0,444,406,1,0,0,0, + 444,409,1,0,0,0,444,415,1,0,0,0,444,419,1,0,0,0,444,426,1,0,0,0,444,430, + 1,0,0,0,444,435,1,0,0,0,444,439,1,0,0,0,445,56,1,0,0,0,446,447,5,116, + 0,0,447,448,5,114,0,0,448,490,5,121,0,0,449,450,5,99,0,0,450,451,5,97, + 0,0,451,452,5,116,0,0,452,453,5,99,0,0,453,490,5,104,0,0,454,455,5,116, + 0,0,455,456,5,104,0,0,456,457,5,114,0,0,457,458,5,111,0,0,458,490,5,119, + 0,0,459,460,5,116,0,0,460,461,5,104,0,0,461,462,5,114,0,0,462,463,5,111, + 0,0,463,464,5,119,0,0,464,490,5,115,0,0,465,466,5,114,0,0,466,467,5,97, + 0,0,467,468,5,105,0,0,468,469,5,115,0,0,469,490,5,101,0,0,470,471,5,102, + 0,0,471,472,5,105,0,0,472,473,5,110,0,0,473,474,5,97,0,0,474,475,5,108, + 0,0,475,476,5,108,0,0,476,490,5,121,0,0,477,478,5,97,0,0,478,479,5,115, + 0,0,479,480,5,115,0,0,480,481,5,101,0,0,481,482,5,114,0,0,482,490,5,116, + 0,0,483,484,5,101,0,0,484,485,5,120,0,0,485,486,5,99,0,0,486,487,5,101, + 0,0,487,488,5,112,0,0,488,490,5,116,0,0,489,446,1,0,0,0,489,449,1,0,0, + 0,489,454,1,0,0,0,489,459,1,0,0,0,489,465,1,0,0,0,489,470,1,0,0,0,489, + 477,1,0,0,0,489,483,1,0,0,0,490,58,1,0,0,0,491,492,5,112,0,0,492,493, + 5,117,0,0,493,494,5,98,0,0,494,495,5,108,0,0,495,496,5,105,0,0,496,528, + 5,99,0,0,497,498,5,112,0,0,498,499,5,114,0,0,499,500,5,105,0,0,500,501, + 5,118,0,0,501,502,5,97,0,0,502,503,5,116,0,0,503,528,5,101,0,0,504,505, + 5,112,0,0,505,506,5,114,0,0,506,507,5,111,0,0,507,508,5,116,0,0,508,509, + 5,101,0,0,509,510,5,99,0,0,510,511,5,116,0,0,511,512,5,101,0,0,512,528, + 5,100,0,0,513,514,5,105,0,0,514,515,5,110,0,0,515,516,5,116,0,0,516,517, + 5,101,0,0,517,518,5,114,0,0,518,519,5,110,0,0,519,520,5,97,0,0,520,528, + 5,108,0,0,521,522,5,102,0,0,522,523,5,114,0,0,523,524,5,105,0,0,524,525, + 5,101,0,0,525,526,5,110,0,0,526,528,5,100,0,0,527,491,1,0,0,0,527,497, + 1,0,0,0,527,504,1,0,0,0,527,513,1,0,0,0,527,521,1,0,0,0,528,60,1,0,0, + 0,529,530,5,111,0,0,530,531,5,112,0,0,531,532,5,101,0,0,532,533,5,114, + 0,0,533,534,5,97,0,0,534,535,5,116,0,0,535,536,5,111,0,0,536,614,5,114, + 0,0,537,538,5,105,0,0,538,539,5,110,0,0,539,540,5,108,0,0,540,541,5,105, + 0,0,541,542,5,110,0,0,542,614,5,101,0,0,543,544,5,118,0,0,544,545,5,105, + 0,0,545,546,5,114,0,0,546,547,5,116,0,0,547,548,5,117,0,0,548,549,5,97, + 0,0,549,614,5,108,0,0,550,551,5,111,0,0,551,552,5,118,0,0,552,553,5,101, + 0,0,553,554,5,114,0,0,554,555,5,114,0,0,555,556,5,105,0,0,556,557,5,100, + 0,0,557,614,5,101,0,0,558,559,5,101,0,0,559,560,5,120,0,0,560,561,5,116, + 0,0,561,562,5,101,0,0,562,563,5,114,0,0,563,614,5,110,0,0,564,565,5,115, + 0,0,565,566,5,105,0,0,566,567,5,122,0,0,567,568,5,101,0,0,568,569,5,111, + 0,0,569,614,5,102,0,0,570,571,5,97,0,0,571,572,5,119,0,0,572,573,5,97, + 0,0,573,574,5,105,0,0,574,614,5,116,0,0,575,576,5,97,0,0,576,577,5,115, + 0,0,577,578,5,121,0,0,578,579,5,110,0,0,579,614,5,99,0,0,580,581,5,119, + 0,0,581,582,5,105,0,0,582,583,5,116,0,0,583,614,5,104,0,0,584,585,5,103, + 0,0,585,586,5,108,0,0,586,587,5,111,0,0,587,588,5,98,0,0,588,589,5,97, + 0,0,589,614,5,108,0,0,590,591,5,110,0,0,591,592,5,111,0,0,592,593,5,110, + 0,0,593,594,5,108,0,0,594,595,5,111,0,0,595,596,5,99,0,0,596,597,5,97, + 0,0,597,614,5,108,0,0,598,599,5,97,0,0,599,600,5,110,0,0,600,614,5,100, + 0,0,601,602,5,111,0,0,602,614,5,114,0,0,603,604,5,110,0,0,604,605,5,111, + 0,0,605,614,5,116,0,0,606,607,5,105,0,0,607,614,5,110,0,0,608,609,5,105, + 0,0,609,614,5,115,0,0,610,611,5,100,0,0,611,612,5,101,0,0,612,614,5,108, + 0,0,613,529,1,0,0,0,613,537,1,0,0,0,613,543,1,0,0,0,613,550,1,0,0,0,613, + 558,1,0,0,0,613,564,1,0,0,0,613,570,1,0,0,0,613,575,1,0,0,0,613,580,1, + 0,0,0,613,584,1,0,0,0,613,590,1,0,0,0,613,598,1,0,0,0,613,601,1,0,0,0, + 613,603,1,0,0,0,613,606,1,0,0,0,613,608,1,0,0,0,613,610,1,0,0,0,614,62, + 1,0,0,0,615,619,7,2,0,0,616,618,7,3,0,0,617,616,1,0,0,0,618,621,1,0,0, + 0,619,617,1,0,0,0,619,620,1,0,0,0,620,64,1,0,0,0,621,619,1,0,0,0,9,0, + 172,239,309,444,489,527,613,619,1,6,0,0 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); diff --git a/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.h b/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.h index b8809c65..65df8a7c 100644 --- a/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.h +++ b/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.h @@ -27,7 +27,9 @@ class TaskDefLangLexer : public antlr4::Lexer { T__0 = 1, T__1 = 2, T__2 = 3, T__3 = 4, T__4 = 5, T__5 = 6, T__6 = 7, T__7 = 8, T__8 = 9, T__9 = 10, T__10 = 11, T__11 = 12, T__12 = 13, T__13 = 14, T__14 = 15, T__15 = 16, T__16 = 17, T__17 = 18, T__18 = 19, T__19 = 20, - T__20 = 21, T__21 = 22, T__22 = 23, ID = 24, SPACE = 25, COMMENT = 26 + T__20 = 21, T__21 = 22, T__22 = 23, SPACE = 24, COMMENT = 25, RESERVED_CONTROL_FLOW_WORDS = 26, + RESERVED_DEF_WORDS = 27, RESERVED_TYPE_AND_STORAGE_WORDS = 28, RESERVED_ERROR_HANDLING_WORDS = 29, + RESERVED_ACCESS_CONTROL_WORDS = 30, RESERVED_OTHER_WORDS = 31, ID = 32 }; explicit TaskDefLangLexer(antlr4::CharStream *input); diff --git a/src/spider/tdl/parser/antlr_generated/TaskDefLangParser.cpp b/src/spider/tdl/parser/antlr_generated/TaskDefLangParser.cpp index 8a2e2cec..d3bf30b4 100644 --- a/src/spider/tdl/parser/antlr_generated/TaskDefLangParser.cpp +++ b/src/spider/tdl/parser/antlr_generated/TaskDefLangParser.cpp @@ -76,11 +76,13 @@ void taskdeflangParserInitialize() { }, std::vector{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "ID", "SPACE", "COMMENT" + "", "", "", "", "", "", "", "SPACE", "COMMENT", "RESERVED_CONTROL_FLOW_WORDS", + "RESERVED_DEF_WORDS", "RESERVED_TYPE_AND_STORAGE_WORDS", "RESERVED_ERROR_HANDLING_WORDS", + "RESERVED_ACCESS_CONTROL_WORDS", "RESERVED_OTHER_WORDS", "ID" } ); static const int32_t serializedATNSegment[] = { - 4,1,26,186,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2, + 4,1,32,186,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2, 7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7, 14,2,15,7,15,2,16,7,16,1,0,1,0,1,0,1,0,1,0,1,0,5,0,41,8,0,10,0,12,0,44, 9,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,2,1,2,4,2,58,8,2,11,2,12, @@ -114,7 +116,7 @@ void taskdeflangParserInitialize() { 96,94,1,0,0,0,96,97,1,0,0,0,97,15,1,0,0,0,98,96,1,0,0,0,99,100,5,11,0, 0,100,101,3,18,9,0,101,102,5,2,0,0,102,104,3,14,7,0,103,105,5,10,0,0, 104,103,1,0,0,0,104,105,1,0,0,0,105,106,1,0,0,0,106,107,5,3,0,0,107,108, - 5,7,0,0,108,109,6,8,-1,0,109,17,1,0,0,0,110,111,5,24,0,0,111,112,6,9, + 5,7,0,0,108,109,6,8,-1,0,109,17,1,0,0,0,110,111,5,32,0,0,111,112,6,9, -1,0,112,19,1,0,0,0,113,114,3,32,16,0,114,115,6,10,-1,0,115,120,1,0,0, 0,116,117,3,18,9,0,117,118,6,10,-1,0,118,120,1,0,0,0,119,113,1,0,0,0, 119,116,1,0,0,0,120,21,1,0,0,0,121,122,3,20,10,0,122,123,6,11,-1,0,123, diff --git a/src/spider/tdl/parser/antlr_generated/TaskDefLangParser.h b/src/spider/tdl/parser/antlr_generated/TaskDefLangParser.h index 45c4b155..25357900 100644 --- a/src/spider/tdl/parser/antlr_generated/TaskDefLangParser.h +++ b/src/spider/tdl/parser/antlr_generated/TaskDefLangParser.h @@ -27,7 +27,9 @@ class TaskDefLangParser : public antlr4::Parser { T__0 = 1, T__1 = 2, T__2 = 3, T__3 = 4, T__4 = 5, T__5 = 6, T__6 = 7, T__7 = 8, T__8 = 9, T__9 = 10, T__10 = 11, T__11 = 12, T__12 = 13, T__13 = 14, T__14 = 15, T__15 = 16, T__16 = 17, T__17 = 18, T__18 = 19, T__19 = 20, - T__20 = 21, T__21 = 22, T__22 = 23, ID = 24, SPACE = 25, COMMENT = 26 + T__20 = 21, T__21 = 22, T__22 = 23, SPACE = 24, COMMENT = 25, RESERVED_CONTROL_FLOW_WORDS = 26, + RESERVED_DEF_WORDS = 27, RESERVED_TYPE_AND_STORAGE_WORDS = 28, RESERVED_ERROR_HANDLING_WORDS = 29, + RESERVED_ACCESS_CONTROL_WORDS = 30, RESERVED_OTHER_WORDS = 31, ID = 32 }; enum { diff --git a/tests/tdl/test-parser.cpp b/tests/tdl/test-parser.cpp index 62f2ea2b..c9a616b1 100644 --- a/tests/tdl/test-parser.cpp +++ b/tests/tdl/test-parser.cpp @@ -327,6 +327,21 @@ TEST_CASE("Parser errors", "[tdl][parser]") { REQUIRE(optional_error_code.value() == Namespace::ErrorCode{Namespace::ErrorCodeEnum::DuplicatedFunctionName}); } + + SECTION("Using reserved words") { + constexpr std::string_view cNamespaceWithReservedWord{" namespace if { fn empty(); }"}; + std::istringstream input_stream{std::string{cNamespaceWithReservedWord}}; + auto const parse_result{parse_translation_unit_from_istream(input_stream)}; + REQUIRE(parse_result.has_error()); + auto const& error{parse_result.error()}; + + constexpr std::string_view cExpectedErrorMessage{ + "Parser: mismatched input 'if' expecting ID" + }; + constexpr SourceLocation cExpectedSourceLocation{1, 11}; + REQUIRE(error.get_message() == cExpectedErrorMessage); + REQUIRE(error.get_source_location() == cExpectedSourceLocation); + } } } // namespace From 6071e167d032ec6c885e25083bcd51d2f98ff805 Mon Sep 17 00:00:00 2001 From: LinZhihao-723 Date: Mon, 25 Aug 2025 22:33:50 -0400 Subject: [PATCH 3/8] Adding fn. --- src/spider/tdl/parser/TaskDefLang.g4 | 1 + .../antlr_generated/TaskDefLangLexer.cpp | 363 +++++++++--------- 2 files changed, 183 insertions(+), 181 deletions(-) diff --git a/src/spider/tdl/parser/TaskDefLang.g4 b/src/spider/tdl/parser/TaskDefLang.g4 index 25e7f2c8..e4d4c9f9 100644 --- a/src/spider/tdl/parser/TaskDefLang.g4 +++ b/src/spider/tdl/parser/TaskDefLang.g4 @@ -308,6 +308,7 @@ RESERVED_DEF_WORDS | 'using' | 'typedef' | 'def' +| 'fn' | 'let' | 'module' | 'import' diff --git a/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp b/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp index 66df1f22..90f58585 100644 --- a/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp +++ b/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp @@ -96,7 +96,7 @@ void taskdeflanglexerLexerInitialize() { } ); static const int32_t serializedATNSegment[] = { - 4,0,32,622,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, + 4,0,32,624,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, 6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14, 7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21, 7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28, @@ -117,7 +117,8 @@ void taskdeflanglexerLexerInitialize() { 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, - 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,3,26,310,8,26,1,27, + 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,3,26,312, + 8,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, @@ -126,193 +127,193 @@ void taskdeflanglexerLexerInitialize() { 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, - 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, - 1,27,1,27,1,27,1,27,1,27,1,27,3,27,445,8,27,1,28,1,28,1,28,1,28,1,28, + 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,3,27,447,8,27,1,28,1,28,1,28, 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28, 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28, - 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,490,8,28,1,29, - 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29, + 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,492, + 8,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29, 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29, - 1,29,1,29,1,29,1,29,1,29,1,29,1,29,3,29,528,8,29,1,30,1,30,1,30,1,30, + 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,3,29,530,8,29,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, - 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,3,30,614,8,30,1,31, - 1,31,5,31,618,8,31,10,31,12,31,621,9,31,0,0,32,1,1,3,2,5,3,7,4,9,5,11, - 6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18, - 37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59, - 30,61,31,63,32,1,0,4,3,0,9,10,13,13,32,32,2,0,10,10,13,13,3,0,65,90,95, - 95,97,122,4,0,48,57,65,90,95,95,97,122,699,0,1,1,0,0,0,0,3,1,0,0,0,0, - 5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0, - 0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0, - 0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37, - 1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0, - 0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0, - 0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,1,65,1,0,0,0,3,75,1,0,0,0,5,77, - 1,0,0,0,7,79,1,0,0,0,9,82,1,0,0,0,11,84,1,0,0,0,13,86,1,0,0,0,15,88,1, - 0,0,0,17,91,1,0,0,0,19,93,1,0,0,0,21,95,1,0,0,0,23,102,1,0,0,0,25,107, - 1,0,0,0,27,109,1,0,0,0,29,111,1,0,0,0,31,115,1,0,0,0,33,121,1,0,0,0,35, - 126,1,0,0,0,37,132,1,0,0,0,39,138,1,0,0,0,41,144,1,0,0,0,43,150,1,0,0, - 0,45,157,1,0,0,0,47,162,1,0,0,0,49,166,1,0,0,0,51,239,1,0,0,0,53,309, - 1,0,0,0,55,444,1,0,0,0,57,489,1,0,0,0,59,527,1,0,0,0,61,613,1,0,0,0,63, - 615,1,0,0,0,65,66,5,110,0,0,66,67,5,97,0,0,67,68,5,109,0,0,68,69,5,101, - 0,0,69,70,5,115,0,0,70,71,5,112,0,0,71,72,5,97,0,0,72,73,5,99,0,0,73, - 74,5,101,0,0,74,2,1,0,0,0,75,76,5,123,0,0,76,4,1,0,0,0,77,78,5,125,0, - 0,78,6,1,0,0,0,79,80,5,102,0,0,80,81,5,110,0,0,81,8,1,0,0,0,82,83,5,40, - 0,0,83,10,1,0,0,0,84,85,5,41,0,0,85,12,1,0,0,0,86,87,5,59,0,0,87,14,1, - 0,0,0,88,89,5,45,0,0,89,90,5,62,0,0,90,16,1,0,0,0,91,92,5,58,0,0,92,18, - 1,0,0,0,93,94,5,44,0,0,94,20,1,0,0,0,95,96,5,115,0,0,96,97,5,116,0,0, - 97,98,5,114,0,0,98,99,5,117,0,0,99,100,5,99,0,0,100,101,5,116,0,0,101, - 22,1,0,0,0,102,103,5,76,0,0,103,104,5,105,0,0,104,105,5,115,0,0,105,106, - 5,116,0,0,106,24,1,0,0,0,107,108,5,60,0,0,108,26,1,0,0,0,109,110,5,62, - 0,0,110,28,1,0,0,0,111,112,5,77,0,0,112,113,5,97,0,0,113,114,5,112,0, - 0,114,30,1,0,0,0,115,116,5,84,0,0,116,117,5,117,0,0,117,118,5,112,0,0, - 118,119,5,108,0,0,119,120,5,101,0,0,120,32,1,0,0,0,121,122,5,105,0,0, - 122,123,5,110,0,0,123,124,5,116,0,0,124,125,5,56,0,0,125,34,1,0,0,0,126, - 127,5,105,0,0,127,128,5,110,0,0,128,129,5,116,0,0,129,130,5,49,0,0,130, - 131,5,54,0,0,131,36,1,0,0,0,132,133,5,105,0,0,133,134,5,110,0,0,134,135, - 5,116,0,0,135,136,5,51,0,0,136,137,5,50,0,0,137,38,1,0,0,0,138,139,5, - 105,0,0,139,140,5,110,0,0,140,141,5,116,0,0,141,142,5,54,0,0,142,143, - 5,52,0,0,143,40,1,0,0,0,144,145,5,102,0,0,145,146,5,108,0,0,146,147,5, - 111,0,0,147,148,5,97,0,0,148,149,5,116,0,0,149,42,1,0,0,0,150,151,5,100, - 0,0,151,152,5,111,0,0,152,153,5,117,0,0,153,154,5,98,0,0,154,155,5,108, - 0,0,155,156,5,101,0,0,156,44,1,0,0,0,157,158,5,98,0,0,158,159,5,111,0, - 0,159,160,5,111,0,0,160,161,5,108,0,0,161,46,1,0,0,0,162,163,7,0,0,0, - 163,164,1,0,0,0,164,165,6,23,0,0,165,48,1,0,0,0,166,167,5,47,0,0,167, - 168,5,47,0,0,168,172,1,0,0,0,169,171,8,1,0,0,170,169,1,0,0,0,171,174, - 1,0,0,0,172,170,1,0,0,0,172,173,1,0,0,0,173,175,1,0,0,0,174,172,1,0,0, - 0,175,176,6,24,0,0,176,50,1,0,0,0,177,178,5,105,0,0,178,240,5,102,0,0, - 179,180,5,101,0,0,180,181,5,108,0,0,181,182,5,115,0,0,182,240,5,101,0, - 0,183,184,5,115,0,0,184,185,5,119,0,0,185,186,5,105,0,0,186,187,5,116, - 0,0,187,188,5,99,0,0,188,240,5,104,0,0,189,190,5,99,0,0,190,191,5,97, - 0,0,191,192,5,115,0,0,192,240,5,101,0,0,193,194,5,119,0,0,194,195,5,104, - 0,0,195,196,5,105,0,0,196,197,5,108,0,0,197,240,5,101,0,0,198,199,5,102, - 0,0,199,200,5,111,0,0,200,240,5,114,0,0,201,202,5,108,0,0,202,203,5,111, - 0,0,203,204,5,111,0,0,204,240,5,112,0,0,205,206,5,100,0,0,206,240,5,111, - 0,0,207,208,5,98,0,0,208,209,5,114,0,0,209,210,5,101,0,0,210,211,5,97, - 0,0,211,240,5,107,0,0,212,213,5,99,0,0,213,214,5,111,0,0,214,215,5,110, - 0,0,215,216,5,116,0,0,216,217,5,105,0,0,217,218,5,110,0,0,218,219,5,117, - 0,0,219,240,5,101,0,0,220,221,5,114,0,0,221,222,5,101,0,0,222,223,5,116, - 0,0,223,224,5,117,0,0,224,225,5,114,0,0,225,240,5,110,0,0,226,227,5,103, - 0,0,227,228,5,111,0,0,228,229,5,116,0,0,229,240,5,111,0,0,230,231,5,112, - 0,0,231,232,5,97,0,0,232,233,5,115,0,0,233,240,5,115,0,0,234,235,5,121, - 0,0,235,236,5,105,0,0,236,237,5,101,0,0,237,238,5,108,0,0,238,240,5,100, - 0,0,239,177,1,0,0,0,239,179,1,0,0,0,239,183,1,0,0,0,239,189,1,0,0,0,239, - 193,1,0,0,0,239,198,1,0,0,0,239,201,1,0,0,0,239,205,1,0,0,0,239,207,1, - 0,0,0,239,212,1,0,0,0,239,220,1,0,0,0,239,226,1,0,0,0,239,230,1,0,0,0, - 239,234,1,0,0,0,240,52,1,0,0,0,241,242,5,99,0,0,242,243,5,108,0,0,243, - 244,5,97,0,0,244,245,5,115,0,0,245,310,5,115,0,0,246,247,5,115,0,0,247, - 248,5,116,0,0,248,249,5,114,0,0,249,250,5,117,0,0,250,251,5,99,0,0,251, - 310,5,116,0,0,252,253,5,101,0,0,253,254,5,110,0,0,254,255,5,117,0,0,255, - 310,5,109,0,0,256,257,5,117,0,0,257,258,5,110,0,0,258,259,5,105,0,0,259, - 260,5,111,0,0,260,310,5,110,0,0,261,262,5,105,0,0,262,263,5,110,0,0,263, - 264,5,116,0,0,264,265,5,101,0,0,265,266,5,114,0,0,266,267,5,102,0,0,267, - 268,5,97,0,0,268,269,5,99,0,0,269,310,5,101,0,0,270,271,5,110,0,0,271, - 272,5,97,0,0,272,273,5,109,0,0,273,274,5,101,0,0,274,275,5,115,0,0,275, - 276,5,112,0,0,276,277,5,97,0,0,277,278,5,99,0,0,278,310,5,101,0,0,279, - 280,5,117,0,0,280,281,5,115,0,0,281,282,5,105,0,0,282,283,5,110,0,0,283, - 310,5,103,0,0,284,285,5,116,0,0,285,286,5,121,0,0,286,287,5,112,0,0,287, - 288,5,101,0,0,288,289,5,100,0,0,289,290,5,101,0,0,290,310,5,102,0,0,291, - 292,5,100,0,0,292,293,5,101,0,0,293,310,5,102,0,0,294,295,5,108,0,0,295, - 296,5,101,0,0,296,310,5,116,0,0,297,298,5,109,0,0,298,299,5,111,0,0,299, - 300,5,100,0,0,300,301,5,117,0,0,301,302,5,108,0,0,302,310,5,101,0,0,303, - 304,5,105,0,0,304,305,5,109,0,0,305,306,5,112,0,0,306,307,5,111,0,0,307, - 308,5,114,0,0,308,310,5,116,0,0,309,241,1,0,0,0,309,246,1,0,0,0,309,252, - 1,0,0,0,309,256,1,0,0,0,309,261,1,0,0,0,309,270,1,0,0,0,309,279,1,0,0, - 0,309,284,1,0,0,0,309,291,1,0,0,0,309,294,1,0,0,0,309,297,1,0,0,0,309, - 303,1,0,0,0,310,54,1,0,0,0,311,312,5,105,0,0,312,313,5,110,0,0,313,445, - 5,116,0,0,314,315,5,108,0,0,315,316,5,111,0,0,316,317,5,110,0,0,317,445, - 5,103,0,0,318,319,5,115,0,0,319,320,5,104,0,0,320,321,5,111,0,0,321,322, - 5,114,0,0,322,445,5,116,0,0,323,324,5,98,0,0,324,325,5,121,0,0,325,326, - 5,116,0,0,326,445,5,101,0,0,327,328,5,115,0,0,328,329,5,105,0,0,329,330, - 5,103,0,0,330,331,5,110,0,0,331,332,5,101,0,0,332,445,5,100,0,0,333,334, - 5,117,0,0,334,335,5,110,0,0,335,336,5,115,0,0,336,337,5,105,0,0,337,338, - 5,103,0,0,338,339,5,110,0,0,339,340,5,101,0,0,340,445,5,100,0,0,341,342, - 5,99,0,0,342,343,5,104,0,0,343,344,5,97,0,0,344,445,5,114,0,0,345,346, - 5,115,0,0,346,347,5,116,0,0,347,348,5,114,0,0,348,349,5,105,0,0,349,350, - 5,110,0,0,350,445,5,103,0,0,351,352,5,115,0,0,352,353,5,116,0,0,353,445, - 5,114,0,0,354,355,5,118,0,0,355,356,5,111,0,0,356,357,5,105,0,0,357,445, - 5,100,0,0,358,359,5,99,0,0,359,360,5,111,0,0,360,361,5,110,0,0,361,362, - 5,115,0,0,362,445,5,116,0,0,363,364,5,115,0,0,364,365,5,116,0,0,365,366, - 5,97,0,0,366,367,5,116,0,0,367,368,5,105,0,0,368,445,5,99,0,0,369,370, - 5,118,0,0,370,371,5,111,0,0,371,372,5,108,0,0,372,373,5,97,0,0,373,374, - 5,116,0,0,374,375,5,105,0,0,375,376,5,108,0,0,376,445,5,101,0,0,377,378, - 5,114,0,0,378,379,5,101,0,0,379,380,5,103,0,0,380,381,5,105,0,0,381,382, - 5,115,0,0,382,383,5,116,0,0,383,384,5,101,0,0,384,445,5,114,0,0,385,386, - 5,102,0,0,386,387,5,105,0,0,387,388,5,110,0,0,388,389,5,97,0,0,389,445, - 5,108,0,0,390,391,5,97,0,0,391,392,5,98,0,0,392,393,5,115,0,0,393,394, - 5,116,0,0,394,395,5,114,0,0,395,396,5,97,0,0,396,397,5,99,0,0,397,445, - 5,116,0,0,398,399,5,116,0,0,399,400,5,104,0,0,400,401,5,105,0,0,401,445, - 5,115,0,0,402,403,5,115,0,0,403,404,5,101,0,0,404,405,5,108,0,0,405,445, - 5,102,0,0,406,407,5,110,0,0,407,408,5,101,0,0,408,445,5,119,0,0,409,410, - 5,100,0,0,410,411,5,101,0,0,411,412,5,108,0,0,412,413,5,101,0,0,413,414, - 5,116,0,0,414,445,5,101,0,0,415,416,5,110,0,0,416,417,5,117,0,0,417,418, - 5,108,0,0,418,445,5,108,0,0,419,420,5,110,0,0,420,421,5,117,0,0,421,422, - 5,108,0,0,422,423,5,108,0,0,423,424,5,112,0,0,424,425,5,116,0,0,425,445, - 5,114,0,0,426,427,5,116,0,0,427,428,5,114,0,0,428,429,5,117,0,0,429,445, - 5,101,0,0,430,431,5,102,0,0,431,432,5,97,0,0,432,433,5,108,0,0,433,434, - 5,115,0,0,434,445,5,101,0,0,435,436,5,84,0,0,436,437,5,114,0,0,437,438, - 5,117,0,0,438,445,5,101,0,0,439,440,5,70,0,0,440,441,5,97,0,0,441,442, - 5,108,0,0,442,443,5,115,0,0,443,445,5,101,0,0,444,311,1,0,0,0,444,314, - 1,0,0,0,444,318,1,0,0,0,444,323,1,0,0,0,444,327,1,0,0,0,444,333,1,0,0, - 0,444,341,1,0,0,0,444,345,1,0,0,0,444,351,1,0,0,0,444,354,1,0,0,0,444, - 358,1,0,0,0,444,363,1,0,0,0,444,369,1,0,0,0,444,377,1,0,0,0,444,385,1, - 0,0,0,444,390,1,0,0,0,444,398,1,0,0,0,444,402,1,0,0,0,444,406,1,0,0,0, - 444,409,1,0,0,0,444,415,1,0,0,0,444,419,1,0,0,0,444,426,1,0,0,0,444,430, - 1,0,0,0,444,435,1,0,0,0,444,439,1,0,0,0,445,56,1,0,0,0,446,447,5,116, - 0,0,447,448,5,114,0,0,448,490,5,121,0,0,449,450,5,99,0,0,450,451,5,97, - 0,0,451,452,5,116,0,0,452,453,5,99,0,0,453,490,5,104,0,0,454,455,5,116, - 0,0,455,456,5,104,0,0,456,457,5,114,0,0,457,458,5,111,0,0,458,490,5,119, - 0,0,459,460,5,116,0,0,460,461,5,104,0,0,461,462,5,114,0,0,462,463,5,111, - 0,0,463,464,5,119,0,0,464,490,5,115,0,0,465,466,5,114,0,0,466,467,5,97, - 0,0,467,468,5,105,0,0,468,469,5,115,0,0,469,490,5,101,0,0,470,471,5,102, - 0,0,471,472,5,105,0,0,472,473,5,110,0,0,473,474,5,97,0,0,474,475,5,108, - 0,0,475,476,5,108,0,0,476,490,5,121,0,0,477,478,5,97,0,0,478,479,5,115, - 0,0,479,480,5,115,0,0,480,481,5,101,0,0,481,482,5,114,0,0,482,490,5,116, - 0,0,483,484,5,101,0,0,484,485,5,120,0,0,485,486,5,99,0,0,486,487,5,101, - 0,0,487,488,5,112,0,0,488,490,5,116,0,0,489,446,1,0,0,0,489,449,1,0,0, - 0,489,454,1,0,0,0,489,459,1,0,0,0,489,465,1,0,0,0,489,470,1,0,0,0,489, - 477,1,0,0,0,489,483,1,0,0,0,490,58,1,0,0,0,491,492,5,112,0,0,492,493, - 5,117,0,0,493,494,5,98,0,0,494,495,5,108,0,0,495,496,5,105,0,0,496,528, - 5,99,0,0,497,498,5,112,0,0,498,499,5,114,0,0,499,500,5,105,0,0,500,501, - 5,118,0,0,501,502,5,97,0,0,502,503,5,116,0,0,503,528,5,101,0,0,504,505, - 5,112,0,0,505,506,5,114,0,0,506,507,5,111,0,0,507,508,5,116,0,0,508,509, - 5,101,0,0,509,510,5,99,0,0,510,511,5,116,0,0,511,512,5,101,0,0,512,528, - 5,100,0,0,513,514,5,105,0,0,514,515,5,110,0,0,515,516,5,116,0,0,516,517, - 5,101,0,0,517,518,5,114,0,0,518,519,5,110,0,0,519,520,5,97,0,0,520,528, - 5,108,0,0,521,522,5,102,0,0,522,523,5,114,0,0,523,524,5,105,0,0,524,525, - 5,101,0,0,525,526,5,110,0,0,526,528,5,100,0,0,527,491,1,0,0,0,527,497, - 1,0,0,0,527,504,1,0,0,0,527,513,1,0,0,0,527,521,1,0,0,0,528,60,1,0,0, - 0,529,530,5,111,0,0,530,531,5,112,0,0,531,532,5,101,0,0,532,533,5,114, - 0,0,533,534,5,97,0,0,534,535,5,116,0,0,535,536,5,111,0,0,536,614,5,114, - 0,0,537,538,5,105,0,0,538,539,5,110,0,0,539,540,5,108,0,0,540,541,5,105, - 0,0,541,542,5,110,0,0,542,614,5,101,0,0,543,544,5,118,0,0,544,545,5,105, - 0,0,545,546,5,114,0,0,546,547,5,116,0,0,547,548,5,117,0,0,548,549,5,97, - 0,0,549,614,5,108,0,0,550,551,5,111,0,0,551,552,5,118,0,0,552,553,5,101, - 0,0,553,554,5,114,0,0,554,555,5,114,0,0,555,556,5,105,0,0,556,557,5,100, - 0,0,557,614,5,101,0,0,558,559,5,101,0,0,559,560,5,120,0,0,560,561,5,116, - 0,0,561,562,5,101,0,0,562,563,5,114,0,0,563,614,5,110,0,0,564,565,5,115, - 0,0,565,566,5,105,0,0,566,567,5,122,0,0,567,568,5,101,0,0,568,569,5,111, - 0,0,569,614,5,102,0,0,570,571,5,97,0,0,571,572,5,119,0,0,572,573,5,97, - 0,0,573,574,5,105,0,0,574,614,5,116,0,0,575,576,5,97,0,0,576,577,5,115, - 0,0,577,578,5,121,0,0,578,579,5,110,0,0,579,614,5,99,0,0,580,581,5,119, - 0,0,581,582,5,105,0,0,582,583,5,116,0,0,583,614,5,104,0,0,584,585,5,103, - 0,0,585,586,5,108,0,0,586,587,5,111,0,0,587,588,5,98,0,0,588,589,5,97, - 0,0,589,614,5,108,0,0,590,591,5,110,0,0,591,592,5,111,0,0,592,593,5,110, - 0,0,593,594,5,108,0,0,594,595,5,111,0,0,595,596,5,99,0,0,596,597,5,97, - 0,0,597,614,5,108,0,0,598,599,5,97,0,0,599,600,5,110,0,0,600,614,5,100, - 0,0,601,602,5,111,0,0,602,614,5,114,0,0,603,604,5,110,0,0,604,605,5,111, - 0,0,605,614,5,116,0,0,606,607,5,105,0,0,607,614,5,110,0,0,608,609,5,105, - 0,0,609,614,5,115,0,0,610,611,5,100,0,0,611,612,5,101,0,0,612,614,5,108, - 0,0,613,529,1,0,0,0,613,537,1,0,0,0,613,543,1,0,0,0,613,550,1,0,0,0,613, - 558,1,0,0,0,613,564,1,0,0,0,613,570,1,0,0,0,613,575,1,0,0,0,613,580,1, - 0,0,0,613,584,1,0,0,0,613,590,1,0,0,0,613,598,1,0,0,0,613,601,1,0,0,0, - 613,603,1,0,0,0,613,606,1,0,0,0,613,608,1,0,0,0,613,610,1,0,0,0,614,62, - 1,0,0,0,615,619,7,2,0,0,616,618,7,3,0,0,617,616,1,0,0,0,618,621,1,0,0, - 0,619,617,1,0,0,0,619,620,1,0,0,0,620,64,1,0,0,0,621,619,1,0,0,0,9,0, - 172,239,309,444,489,527,613,619,1,6,0,0 + 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,3,30,616, + 8,30,1,31,1,31,5,31,620,8,31,10,31,12,31,623,9,31,0,0,32,1,1,3,2,5,3, + 7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16, + 33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55, + 28,57,29,59,30,61,31,63,32,1,0,4,3,0,9,10,13,13,32,32,2,0,10,10,13,13, + 3,0,65,90,95,95,97,122,4,0,48,57,65,90,95,95,97,122,702,0,1,1,0,0,0,0, + 3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0, + 0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0, + 25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1, + 0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0, + 0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0, + 57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,1,65,1,0,0,0,3,75,1, + 0,0,0,5,77,1,0,0,0,7,79,1,0,0,0,9,82,1,0,0,0,11,84,1,0,0,0,13,86,1,0, + 0,0,15,88,1,0,0,0,17,91,1,0,0,0,19,93,1,0,0,0,21,95,1,0,0,0,23,102,1, + 0,0,0,25,107,1,0,0,0,27,109,1,0,0,0,29,111,1,0,0,0,31,115,1,0,0,0,33, + 121,1,0,0,0,35,126,1,0,0,0,37,132,1,0,0,0,39,138,1,0,0,0,41,144,1,0,0, + 0,43,150,1,0,0,0,45,157,1,0,0,0,47,162,1,0,0,0,49,166,1,0,0,0,51,239, + 1,0,0,0,53,311,1,0,0,0,55,446,1,0,0,0,57,491,1,0,0,0,59,529,1,0,0,0,61, + 615,1,0,0,0,63,617,1,0,0,0,65,66,5,110,0,0,66,67,5,97,0,0,67,68,5,109, + 0,0,68,69,5,101,0,0,69,70,5,115,0,0,70,71,5,112,0,0,71,72,5,97,0,0,72, + 73,5,99,0,0,73,74,5,101,0,0,74,2,1,0,0,0,75,76,5,123,0,0,76,4,1,0,0,0, + 77,78,5,125,0,0,78,6,1,0,0,0,79,80,5,102,0,0,80,81,5,110,0,0,81,8,1,0, + 0,0,82,83,5,40,0,0,83,10,1,0,0,0,84,85,5,41,0,0,85,12,1,0,0,0,86,87,5, + 59,0,0,87,14,1,0,0,0,88,89,5,45,0,0,89,90,5,62,0,0,90,16,1,0,0,0,91,92, + 5,58,0,0,92,18,1,0,0,0,93,94,5,44,0,0,94,20,1,0,0,0,95,96,5,115,0,0,96, + 97,5,116,0,0,97,98,5,114,0,0,98,99,5,117,0,0,99,100,5,99,0,0,100,101, + 5,116,0,0,101,22,1,0,0,0,102,103,5,76,0,0,103,104,5,105,0,0,104,105,5, + 115,0,0,105,106,5,116,0,0,106,24,1,0,0,0,107,108,5,60,0,0,108,26,1,0, + 0,0,109,110,5,62,0,0,110,28,1,0,0,0,111,112,5,77,0,0,112,113,5,97,0,0, + 113,114,5,112,0,0,114,30,1,0,0,0,115,116,5,84,0,0,116,117,5,117,0,0,117, + 118,5,112,0,0,118,119,5,108,0,0,119,120,5,101,0,0,120,32,1,0,0,0,121, + 122,5,105,0,0,122,123,5,110,0,0,123,124,5,116,0,0,124,125,5,56,0,0,125, + 34,1,0,0,0,126,127,5,105,0,0,127,128,5,110,0,0,128,129,5,116,0,0,129, + 130,5,49,0,0,130,131,5,54,0,0,131,36,1,0,0,0,132,133,5,105,0,0,133,134, + 5,110,0,0,134,135,5,116,0,0,135,136,5,51,0,0,136,137,5,50,0,0,137,38, + 1,0,0,0,138,139,5,105,0,0,139,140,5,110,0,0,140,141,5,116,0,0,141,142, + 5,54,0,0,142,143,5,52,0,0,143,40,1,0,0,0,144,145,5,102,0,0,145,146,5, + 108,0,0,146,147,5,111,0,0,147,148,5,97,0,0,148,149,5,116,0,0,149,42,1, + 0,0,0,150,151,5,100,0,0,151,152,5,111,0,0,152,153,5,117,0,0,153,154,5, + 98,0,0,154,155,5,108,0,0,155,156,5,101,0,0,156,44,1,0,0,0,157,158,5,98, + 0,0,158,159,5,111,0,0,159,160,5,111,0,0,160,161,5,108,0,0,161,46,1,0, + 0,0,162,163,7,0,0,0,163,164,1,0,0,0,164,165,6,23,0,0,165,48,1,0,0,0,166, + 167,5,47,0,0,167,168,5,47,0,0,168,172,1,0,0,0,169,171,8,1,0,0,170,169, + 1,0,0,0,171,174,1,0,0,0,172,170,1,0,0,0,172,173,1,0,0,0,173,175,1,0,0, + 0,174,172,1,0,0,0,175,176,6,24,0,0,176,50,1,0,0,0,177,178,5,105,0,0,178, + 240,5,102,0,0,179,180,5,101,0,0,180,181,5,108,0,0,181,182,5,115,0,0,182, + 240,5,101,0,0,183,184,5,115,0,0,184,185,5,119,0,0,185,186,5,105,0,0,186, + 187,5,116,0,0,187,188,5,99,0,0,188,240,5,104,0,0,189,190,5,99,0,0,190, + 191,5,97,0,0,191,192,5,115,0,0,192,240,5,101,0,0,193,194,5,119,0,0,194, + 195,5,104,0,0,195,196,5,105,0,0,196,197,5,108,0,0,197,240,5,101,0,0,198, + 199,5,102,0,0,199,200,5,111,0,0,200,240,5,114,0,0,201,202,5,108,0,0,202, + 203,5,111,0,0,203,204,5,111,0,0,204,240,5,112,0,0,205,206,5,100,0,0,206, + 240,5,111,0,0,207,208,5,98,0,0,208,209,5,114,0,0,209,210,5,101,0,0,210, + 211,5,97,0,0,211,240,5,107,0,0,212,213,5,99,0,0,213,214,5,111,0,0,214, + 215,5,110,0,0,215,216,5,116,0,0,216,217,5,105,0,0,217,218,5,110,0,0,218, + 219,5,117,0,0,219,240,5,101,0,0,220,221,5,114,0,0,221,222,5,101,0,0,222, + 223,5,116,0,0,223,224,5,117,0,0,224,225,5,114,0,0,225,240,5,110,0,0,226, + 227,5,103,0,0,227,228,5,111,0,0,228,229,5,116,0,0,229,240,5,111,0,0,230, + 231,5,112,0,0,231,232,5,97,0,0,232,233,5,115,0,0,233,240,5,115,0,0,234, + 235,5,121,0,0,235,236,5,105,0,0,236,237,5,101,0,0,237,238,5,108,0,0,238, + 240,5,100,0,0,239,177,1,0,0,0,239,179,1,0,0,0,239,183,1,0,0,0,239,189, + 1,0,0,0,239,193,1,0,0,0,239,198,1,0,0,0,239,201,1,0,0,0,239,205,1,0,0, + 0,239,207,1,0,0,0,239,212,1,0,0,0,239,220,1,0,0,0,239,226,1,0,0,0,239, + 230,1,0,0,0,239,234,1,0,0,0,240,52,1,0,0,0,241,242,5,99,0,0,242,243,5, + 108,0,0,243,244,5,97,0,0,244,245,5,115,0,0,245,312,5,115,0,0,246,247, + 5,115,0,0,247,248,5,116,0,0,248,249,5,114,0,0,249,250,5,117,0,0,250,251, + 5,99,0,0,251,312,5,116,0,0,252,253,5,101,0,0,253,254,5,110,0,0,254,255, + 5,117,0,0,255,312,5,109,0,0,256,257,5,117,0,0,257,258,5,110,0,0,258,259, + 5,105,0,0,259,260,5,111,0,0,260,312,5,110,0,0,261,262,5,105,0,0,262,263, + 5,110,0,0,263,264,5,116,0,0,264,265,5,101,0,0,265,266,5,114,0,0,266,267, + 5,102,0,0,267,268,5,97,0,0,268,269,5,99,0,0,269,312,5,101,0,0,270,271, + 5,110,0,0,271,272,5,97,0,0,272,273,5,109,0,0,273,274,5,101,0,0,274,275, + 5,115,0,0,275,276,5,112,0,0,276,277,5,97,0,0,277,278,5,99,0,0,278,312, + 5,101,0,0,279,280,5,117,0,0,280,281,5,115,0,0,281,282,5,105,0,0,282,283, + 5,110,0,0,283,312,5,103,0,0,284,285,5,116,0,0,285,286,5,121,0,0,286,287, + 5,112,0,0,287,288,5,101,0,0,288,289,5,100,0,0,289,290,5,101,0,0,290,312, + 5,102,0,0,291,292,5,100,0,0,292,293,5,101,0,0,293,312,5,102,0,0,294,295, + 5,102,0,0,295,312,5,110,0,0,296,297,5,108,0,0,297,298,5,101,0,0,298,312, + 5,116,0,0,299,300,5,109,0,0,300,301,5,111,0,0,301,302,5,100,0,0,302,303, + 5,117,0,0,303,304,5,108,0,0,304,312,5,101,0,0,305,306,5,105,0,0,306,307, + 5,109,0,0,307,308,5,112,0,0,308,309,5,111,0,0,309,310,5,114,0,0,310,312, + 5,116,0,0,311,241,1,0,0,0,311,246,1,0,0,0,311,252,1,0,0,0,311,256,1,0, + 0,0,311,261,1,0,0,0,311,270,1,0,0,0,311,279,1,0,0,0,311,284,1,0,0,0,311, + 291,1,0,0,0,311,294,1,0,0,0,311,296,1,0,0,0,311,299,1,0,0,0,311,305,1, + 0,0,0,312,54,1,0,0,0,313,314,5,105,0,0,314,315,5,110,0,0,315,447,5,116, + 0,0,316,317,5,108,0,0,317,318,5,111,0,0,318,319,5,110,0,0,319,447,5,103, + 0,0,320,321,5,115,0,0,321,322,5,104,0,0,322,323,5,111,0,0,323,324,5,114, + 0,0,324,447,5,116,0,0,325,326,5,98,0,0,326,327,5,121,0,0,327,328,5,116, + 0,0,328,447,5,101,0,0,329,330,5,115,0,0,330,331,5,105,0,0,331,332,5,103, + 0,0,332,333,5,110,0,0,333,334,5,101,0,0,334,447,5,100,0,0,335,336,5,117, + 0,0,336,337,5,110,0,0,337,338,5,115,0,0,338,339,5,105,0,0,339,340,5,103, + 0,0,340,341,5,110,0,0,341,342,5,101,0,0,342,447,5,100,0,0,343,344,5,99, + 0,0,344,345,5,104,0,0,345,346,5,97,0,0,346,447,5,114,0,0,347,348,5,115, + 0,0,348,349,5,116,0,0,349,350,5,114,0,0,350,351,5,105,0,0,351,352,5,110, + 0,0,352,447,5,103,0,0,353,354,5,115,0,0,354,355,5,116,0,0,355,447,5,114, + 0,0,356,357,5,118,0,0,357,358,5,111,0,0,358,359,5,105,0,0,359,447,5,100, + 0,0,360,361,5,99,0,0,361,362,5,111,0,0,362,363,5,110,0,0,363,364,5,115, + 0,0,364,447,5,116,0,0,365,366,5,115,0,0,366,367,5,116,0,0,367,368,5,97, + 0,0,368,369,5,116,0,0,369,370,5,105,0,0,370,447,5,99,0,0,371,372,5,118, + 0,0,372,373,5,111,0,0,373,374,5,108,0,0,374,375,5,97,0,0,375,376,5,116, + 0,0,376,377,5,105,0,0,377,378,5,108,0,0,378,447,5,101,0,0,379,380,5,114, + 0,0,380,381,5,101,0,0,381,382,5,103,0,0,382,383,5,105,0,0,383,384,5,115, + 0,0,384,385,5,116,0,0,385,386,5,101,0,0,386,447,5,114,0,0,387,388,5,102, + 0,0,388,389,5,105,0,0,389,390,5,110,0,0,390,391,5,97,0,0,391,447,5,108, + 0,0,392,393,5,97,0,0,393,394,5,98,0,0,394,395,5,115,0,0,395,396,5,116, + 0,0,396,397,5,114,0,0,397,398,5,97,0,0,398,399,5,99,0,0,399,447,5,116, + 0,0,400,401,5,116,0,0,401,402,5,104,0,0,402,403,5,105,0,0,403,447,5,115, + 0,0,404,405,5,115,0,0,405,406,5,101,0,0,406,407,5,108,0,0,407,447,5,102, + 0,0,408,409,5,110,0,0,409,410,5,101,0,0,410,447,5,119,0,0,411,412,5,100, + 0,0,412,413,5,101,0,0,413,414,5,108,0,0,414,415,5,101,0,0,415,416,5,116, + 0,0,416,447,5,101,0,0,417,418,5,110,0,0,418,419,5,117,0,0,419,420,5,108, + 0,0,420,447,5,108,0,0,421,422,5,110,0,0,422,423,5,117,0,0,423,424,5,108, + 0,0,424,425,5,108,0,0,425,426,5,112,0,0,426,427,5,116,0,0,427,447,5,114, + 0,0,428,429,5,116,0,0,429,430,5,114,0,0,430,431,5,117,0,0,431,447,5,101, + 0,0,432,433,5,102,0,0,433,434,5,97,0,0,434,435,5,108,0,0,435,436,5,115, + 0,0,436,447,5,101,0,0,437,438,5,84,0,0,438,439,5,114,0,0,439,440,5,117, + 0,0,440,447,5,101,0,0,441,442,5,70,0,0,442,443,5,97,0,0,443,444,5,108, + 0,0,444,445,5,115,0,0,445,447,5,101,0,0,446,313,1,0,0,0,446,316,1,0,0, + 0,446,320,1,0,0,0,446,325,1,0,0,0,446,329,1,0,0,0,446,335,1,0,0,0,446, + 343,1,0,0,0,446,347,1,0,0,0,446,353,1,0,0,0,446,356,1,0,0,0,446,360,1, + 0,0,0,446,365,1,0,0,0,446,371,1,0,0,0,446,379,1,0,0,0,446,387,1,0,0,0, + 446,392,1,0,0,0,446,400,1,0,0,0,446,404,1,0,0,0,446,408,1,0,0,0,446,411, + 1,0,0,0,446,417,1,0,0,0,446,421,1,0,0,0,446,428,1,0,0,0,446,432,1,0,0, + 0,446,437,1,0,0,0,446,441,1,0,0,0,447,56,1,0,0,0,448,449,5,116,0,0,449, + 450,5,114,0,0,450,492,5,121,0,0,451,452,5,99,0,0,452,453,5,97,0,0,453, + 454,5,116,0,0,454,455,5,99,0,0,455,492,5,104,0,0,456,457,5,116,0,0,457, + 458,5,104,0,0,458,459,5,114,0,0,459,460,5,111,0,0,460,492,5,119,0,0,461, + 462,5,116,0,0,462,463,5,104,0,0,463,464,5,114,0,0,464,465,5,111,0,0,465, + 466,5,119,0,0,466,492,5,115,0,0,467,468,5,114,0,0,468,469,5,97,0,0,469, + 470,5,105,0,0,470,471,5,115,0,0,471,492,5,101,0,0,472,473,5,102,0,0,473, + 474,5,105,0,0,474,475,5,110,0,0,475,476,5,97,0,0,476,477,5,108,0,0,477, + 478,5,108,0,0,478,492,5,121,0,0,479,480,5,97,0,0,480,481,5,115,0,0,481, + 482,5,115,0,0,482,483,5,101,0,0,483,484,5,114,0,0,484,492,5,116,0,0,485, + 486,5,101,0,0,486,487,5,120,0,0,487,488,5,99,0,0,488,489,5,101,0,0,489, + 490,5,112,0,0,490,492,5,116,0,0,491,448,1,0,0,0,491,451,1,0,0,0,491,456, + 1,0,0,0,491,461,1,0,0,0,491,467,1,0,0,0,491,472,1,0,0,0,491,479,1,0,0, + 0,491,485,1,0,0,0,492,58,1,0,0,0,493,494,5,112,0,0,494,495,5,117,0,0, + 495,496,5,98,0,0,496,497,5,108,0,0,497,498,5,105,0,0,498,530,5,99,0,0, + 499,500,5,112,0,0,500,501,5,114,0,0,501,502,5,105,0,0,502,503,5,118,0, + 0,503,504,5,97,0,0,504,505,5,116,0,0,505,530,5,101,0,0,506,507,5,112, + 0,0,507,508,5,114,0,0,508,509,5,111,0,0,509,510,5,116,0,0,510,511,5,101, + 0,0,511,512,5,99,0,0,512,513,5,116,0,0,513,514,5,101,0,0,514,530,5,100, + 0,0,515,516,5,105,0,0,516,517,5,110,0,0,517,518,5,116,0,0,518,519,5,101, + 0,0,519,520,5,114,0,0,520,521,5,110,0,0,521,522,5,97,0,0,522,530,5,108, + 0,0,523,524,5,102,0,0,524,525,5,114,0,0,525,526,5,105,0,0,526,527,5,101, + 0,0,527,528,5,110,0,0,528,530,5,100,0,0,529,493,1,0,0,0,529,499,1,0,0, + 0,529,506,1,0,0,0,529,515,1,0,0,0,529,523,1,0,0,0,530,60,1,0,0,0,531, + 532,5,111,0,0,532,533,5,112,0,0,533,534,5,101,0,0,534,535,5,114,0,0,535, + 536,5,97,0,0,536,537,5,116,0,0,537,538,5,111,0,0,538,616,5,114,0,0,539, + 540,5,105,0,0,540,541,5,110,0,0,541,542,5,108,0,0,542,543,5,105,0,0,543, + 544,5,110,0,0,544,616,5,101,0,0,545,546,5,118,0,0,546,547,5,105,0,0,547, + 548,5,114,0,0,548,549,5,116,0,0,549,550,5,117,0,0,550,551,5,97,0,0,551, + 616,5,108,0,0,552,553,5,111,0,0,553,554,5,118,0,0,554,555,5,101,0,0,555, + 556,5,114,0,0,556,557,5,114,0,0,557,558,5,105,0,0,558,559,5,100,0,0,559, + 616,5,101,0,0,560,561,5,101,0,0,561,562,5,120,0,0,562,563,5,116,0,0,563, + 564,5,101,0,0,564,565,5,114,0,0,565,616,5,110,0,0,566,567,5,115,0,0,567, + 568,5,105,0,0,568,569,5,122,0,0,569,570,5,101,0,0,570,571,5,111,0,0,571, + 616,5,102,0,0,572,573,5,97,0,0,573,574,5,119,0,0,574,575,5,97,0,0,575, + 576,5,105,0,0,576,616,5,116,0,0,577,578,5,97,0,0,578,579,5,115,0,0,579, + 580,5,121,0,0,580,581,5,110,0,0,581,616,5,99,0,0,582,583,5,119,0,0,583, + 584,5,105,0,0,584,585,5,116,0,0,585,616,5,104,0,0,586,587,5,103,0,0,587, + 588,5,108,0,0,588,589,5,111,0,0,589,590,5,98,0,0,590,591,5,97,0,0,591, + 616,5,108,0,0,592,593,5,110,0,0,593,594,5,111,0,0,594,595,5,110,0,0,595, + 596,5,108,0,0,596,597,5,111,0,0,597,598,5,99,0,0,598,599,5,97,0,0,599, + 616,5,108,0,0,600,601,5,97,0,0,601,602,5,110,0,0,602,616,5,100,0,0,603, + 604,5,111,0,0,604,616,5,114,0,0,605,606,5,110,0,0,606,607,5,111,0,0,607, + 616,5,116,0,0,608,609,5,105,0,0,609,616,5,110,0,0,610,611,5,105,0,0,611, + 616,5,115,0,0,612,613,5,100,0,0,613,614,5,101,0,0,614,616,5,108,0,0,615, + 531,1,0,0,0,615,539,1,0,0,0,615,545,1,0,0,0,615,552,1,0,0,0,615,560,1, + 0,0,0,615,566,1,0,0,0,615,572,1,0,0,0,615,577,1,0,0,0,615,582,1,0,0,0, + 615,586,1,0,0,0,615,592,1,0,0,0,615,600,1,0,0,0,615,603,1,0,0,0,615,605, + 1,0,0,0,615,608,1,0,0,0,615,610,1,0,0,0,615,612,1,0,0,0,616,62,1,0,0, + 0,617,621,7,2,0,0,618,620,7,3,0,0,619,618,1,0,0,0,620,623,1,0,0,0,621, + 619,1,0,0,0,621,622,1,0,0,0,622,64,1,0,0,0,623,621,1,0,0,0,9,0,172,239, + 311,446,491,529,615,621,1,6,0,0 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); From 690b7f230f76ad61f7393c4b1d3a1145c39778f7 Mon Sep 17 00:00:00 2001 From: LinZhihao-723 Date: Mon, 25 Aug 2025 22:36:34 -0400 Subject: [PATCH 4/8] Add comment. --- src/spider/tdl/parser/TaskDefLang.g4 | 1 + 1 file changed, 1 insertion(+) diff --git a/src/spider/tdl/parser/TaskDefLang.g4 b/src/spider/tdl/parser/TaskDefLang.g4 index e4d4c9f9..8d78a8c6 100644 --- a/src/spider/tdl/parser/TaskDefLang.g4 +++ b/src/spider/tdl/parser/TaskDefLang.g4 @@ -382,4 +382,5 @@ RESERVED_OTHER_WORDS | 'del' ; +// ID must be defined after RESERVED_* so that the reserved words get higher precedence. ID: [a-zA-Z_][a-zA-Z0-9_]* ; From 368fb79d7bc11bc7168debbd3a33d3147e8d461b Mon Sep 17 00:00:00 2001 From: LinZhihao-723 Date: Mon, 25 Aug 2025 22:39:32 -0400 Subject: [PATCH 5/8] Add 'elif'. --- src/spider/tdl/parser/TaskDefLang.g4 | 1 + .../antlr_generated/TaskDefLangLexer.cpp | 367 +++++++++--------- 2 files changed, 185 insertions(+), 183 deletions(-) diff --git a/src/spider/tdl/parser/TaskDefLang.g4 b/src/spider/tdl/parser/TaskDefLang.g4 index 8d78a8c6..1ecdad90 100644 --- a/src/spider/tdl/parser/TaskDefLang.g4 +++ b/src/spider/tdl/parser/TaskDefLang.g4 @@ -284,6 +284,7 @@ COMMENT: '//' (~[\r\n])* -> skip; RESERVED_CONTROL_FLOW_WORDS : 'if' | 'else' +| 'elif' | 'switch' | 'case' | 'while' diff --git a/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp b/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp index 90f58585..19fb0c86 100644 --- a/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp +++ b/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp @@ -96,7 +96,7 @@ void taskdeflanglexerLexerInitialize() { } ); static const int32_t serializedATNSegment[] = { - 4,0,32,624,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, + 4,0,32,628,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, 6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14, 7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21, 7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28, @@ -112,13 +112,13 @@ void taskdeflanglexerLexerInitialize() { 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, - 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,3,25,240,8,25,1,26,1,26, + 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,3,25, + 244,8,25,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, - 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,3,26,312, - 8,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, + 1,26,1,26,3,26,316,8,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, @@ -127,193 +127,194 @@ void taskdeflanglexerLexerInitialize() { 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, - 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,3,27,447,8,27,1,28,1,28,1,28, + 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,3,27,451, + 8,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28, 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28, 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28, - 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,492, - 8,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29, + 1,28,1,28,3,28,496,8,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29, 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29, - 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,3,29,530,8,29,1,30,1,30, + 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,3,29, + 534,8,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, - 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,3,30,616, - 8,30,1,31,1,31,5,31,620,8,31,10,31,12,31,623,9,31,0,0,32,1,1,3,2,5,3, - 7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16, - 33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55, - 28,57,29,59,30,61,31,63,32,1,0,4,3,0,9,10,13,13,32,32,2,0,10,10,13,13, - 3,0,65,90,95,95,97,122,4,0,48,57,65,90,95,95,97,122,702,0,1,1,0,0,0,0, - 3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0, - 0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0, - 25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1, - 0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0, - 0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0, - 57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,1,65,1,0,0,0,3,75,1, - 0,0,0,5,77,1,0,0,0,7,79,1,0,0,0,9,82,1,0,0,0,11,84,1,0,0,0,13,86,1,0, - 0,0,15,88,1,0,0,0,17,91,1,0,0,0,19,93,1,0,0,0,21,95,1,0,0,0,23,102,1, - 0,0,0,25,107,1,0,0,0,27,109,1,0,0,0,29,111,1,0,0,0,31,115,1,0,0,0,33, - 121,1,0,0,0,35,126,1,0,0,0,37,132,1,0,0,0,39,138,1,0,0,0,41,144,1,0,0, - 0,43,150,1,0,0,0,45,157,1,0,0,0,47,162,1,0,0,0,49,166,1,0,0,0,51,239, - 1,0,0,0,53,311,1,0,0,0,55,446,1,0,0,0,57,491,1,0,0,0,59,529,1,0,0,0,61, - 615,1,0,0,0,63,617,1,0,0,0,65,66,5,110,0,0,66,67,5,97,0,0,67,68,5,109, - 0,0,68,69,5,101,0,0,69,70,5,115,0,0,70,71,5,112,0,0,71,72,5,97,0,0,72, - 73,5,99,0,0,73,74,5,101,0,0,74,2,1,0,0,0,75,76,5,123,0,0,76,4,1,0,0,0, - 77,78,5,125,0,0,78,6,1,0,0,0,79,80,5,102,0,0,80,81,5,110,0,0,81,8,1,0, - 0,0,82,83,5,40,0,0,83,10,1,0,0,0,84,85,5,41,0,0,85,12,1,0,0,0,86,87,5, - 59,0,0,87,14,1,0,0,0,88,89,5,45,0,0,89,90,5,62,0,0,90,16,1,0,0,0,91,92, - 5,58,0,0,92,18,1,0,0,0,93,94,5,44,0,0,94,20,1,0,0,0,95,96,5,115,0,0,96, - 97,5,116,0,0,97,98,5,114,0,0,98,99,5,117,0,0,99,100,5,99,0,0,100,101, - 5,116,0,0,101,22,1,0,0,0,102,103,5,76,0,0,103,104,5,105,0,0,104,105,5, - 115,0,0,105,106,5,116,0,0,106,24,1,0,0,0,107,108,5,60,0,0,108,26,1,0, - 0,0,109,110,5,62,0,0,110,28,1,0,0,0,111,112,5,77,0,0,112,113,5,97,0,0, - 113,114,5,112,0,0,114,30,1,0,0,0,115,116,5,84,0,0,116,117,5,117,0,0,117, - 118,5,112,0,0,118,119,5,108,0,0,119,120,5,101,0,0,120,32,1,0,0,0,121, - 122,5,105,0,0,122,123,5,110,0,0,123,124,5,116,0,0,124,125,5,56,0,0,125, - 34,1,0,0,0,126,127,5,105,0,0,127,128,5,110,0,0,128,129,5,116,0,0,129, - 130,5,49,0,0,130,131,5,54,0,0,131,36,1,0,0,0,132,133,5,105,0,0,133,134, - 5,110,0,0,134,135,5,116,0,0,135,136,5,51,0,0,136,137,5,50,0,0,137,38, - 1,0,0,0,138,139,5,105,0,0,139,140,5,110,0,0,140,141,5,116,0,0,141,142, - 5,54,0,0,142,143,5,52,0,0,143,40,1,0,0,0,144,145,5,102,0,0,145,146,5, - 108,0,0,146,147,5,111,0,0,147,148,5,97,0,0,148,149,5,116,0,0,149,42,1, - 0,0,0,150,151,5,100,0,0,151,152,5,111,0,0,152,153,5,117,0,0,153,154,5, - 98,0,0,154,155,5,108,0,0,155,156,5,101,0,0,156,44,1,0,0,0,157,158,5,98, - 0,0,158,159,5,111,0,0,159,160,5,111,0,0,160,161,5,108,0,0,161,46,1,0, - 0,0,162,163,7,0,0,0,163,164,1,0,0,0,164,165,6,23,0,0,165,48,1,0,0,0,166, - 167,5,47,0,0,167,168,5,47,0,0,168,172,1,0,0,0,169,171,8,1,0,0,170,169, - 1,0,0,0,171,174,1,0,0,0,172,170,1,0,0,0,172,173,1,0,0,0,173,175,1,0,0, - 0,174,172,1,0,0,0,175,176,6,24,0,0,176,50,1,0,0,0,177,178,5,105,0,0,178, - 240,5,102,0,0,179,180,5,101,0,0,180,181,5,108,0,0,181,182,5,115,0,0,182, - 240,5,101,0,0,183,184,5,115,0,0,184,185,5,119,0,0,185,186,5,105,0,0,186, - 187,5,116,0,0,187,188,5,99,0,0,188,240,5,104,0,0,189,190,5,99,0,0,190, - 191,5,97,0,0,191,192,5,115,0,0,192,240,5,101,0,0,193,194,5,119,0,0,194, - 195,5,104,0,0,195,196,5,105,0,0,196,197,5,108,0,0,197,240,5,101,0,0,198, - 199,5,102,0,0,199,200,5,111,0,0,200,240,5,114,0,0,201,202,5,108,0,0,202, - 203,5,111,0,0,203,204,5,111,0,0,204,240,5,112,0,0,205,206,5,100,0,0,206, - 240,5,111,0,0,207,208,5,98,0,0,208,209,5,114,0,0,209,210,5,101,0,0,210, - 211,5,97,0,0,211,240,5,107,0,0,212,213,5,99,0,0,213,214,5,111,0,0,214, - 215,5,110,0,0,215,216,5,116,0,0,216,217,5,105,0,0,217,218,5,110,0,0,218, - 219,5,117,0,0,219,240,5,101,0,0,220,221,5,114,0,0,221,222,5,101,0,0,222, - 223,5,116,0,0,223,224,5,117,0,0,224,225,5,114,0,0,225,240,5,110,0,0,226, - 227,5,103,0,0,227,228,5,111,0,0,228,229,5,116,0,0,229,240,5,111,0,0,230, - 231,5,112,0,0,231,232,5,97,0,0,232,233,5,115,0,0,233,240,5,115,0,0,234, - 235,5,121,0,0,235,236,5,105,0,0,236,237,5,101,0,0,237,238,5,108,0,0,238, - 240,5,100,0,0,239,177,1,0,0,0,239,179,1,0,0,0,239,183,1,0,0,0,239,189, - 1,0,0,0,239,193,1,0,0,0,239,198,1,0,0,0,239,201,1,0,0,0,239,205,1,0,0, - 0,239,207,1,0,0,0,239,212,1,0,0,0,239,220,1,0,0,0,239,226,1,0,0,0,239, - 230,1,0,0,0,239,234,1,0,0,0,240,52,1,0,0,0,241,242,5,99,0,0,242,243,5, - 108,0,0,243,244,5,97,0,0,244,245,5,115,0,0,245,312,5,115,0,0,246,247, - 5,115,0,0,247,248,5,116,0,0,248,249,5,114,0,0,249,250,5,117,0,0,250,251, - 5,99,0,0,251,312,5,116,0,0,252,253,5,101,0,0,253,254,5,110,0,0,254,255, - 5,117,0,0,255,312,5,109,0,0,256,257,5,117,0,0,257,258,5,110,0,0,258,259, - 5,105,0,0,259,260,5,111,0,0,260,312,5,110,0,0,261,262,5,105,0,0,262,263, - 5,110,0,0,263,264,5,116,0,0,264,265,5,101,0,0,265,266,5,114,0,0,266,267, - 5,102,0,0,267,268,5,97,0,0,268,269,5,99,0,0,269,312,5,101,0,0,270,271, - 5,110,0,0,271,272,5,97,0,0,272,273,5,109,0,0,273,274,5,101,0,0,274,275, - 5,115,0,0,275,276,5,112,0,0,276,277,5,97,0,0,277,278,5,99,0,0,278,312, - 5,101,0,0,279,280,5,117,0,0,280,281,5,115,0,0,281,282,5,105,0,0,282,283, - 5,110,0,0,283,312,5,103,0,0,284,285,5,116,0,0,285,286,5,121,0,0,286,287, - 5,112,0,0,287,288,5,101,0,0,288,289,5,100,0,0,289,290,5,101,0,0,290,312, - 5,102,0,0,291,292,5,100,0,0,292,293,5,101,0,0,293,312,5,102,0,0,294,295, - 5,102,0,0,295,312,5,110,0,0,296,297,5,108,0,0,297,298,5,101,0,0,298,312, - 5,116,0,0,299,300,5,109,0,0,300,301,5,111,0,0,301,302,5,100,0,0,302,303, - 5,117,0,0,303,304,5,108,0,0,304,312,5,101,0,0,305,306,5,105,0,0,306,307, - 5,109,0,0,307,308,5,112,0,0,308,309,5,111,0,0,309,310,5,114,0,0,310,312, - 5,116,0,0,311,241,1,0,0,0,311,246,1,0,0,0,311,252,1,0,0,0,311,256,1,0, - 0,0,311,261,1,0,0,0,311,270,1,0,0,0,311,279,1,0,0,0,311,284,1,0,0,0,311, - 291,1,0,0,0,311,294,1,0,0,0,311,296,1,0,0,0,311,299,1,0,0,0,311,305,1, - 0,0,0,312,54,1,0,0,0,313,314,5,105,0,0,314,315,5,110,0,0,315,447,5,116, - 0,0,316,317,5,108,0,0,317,318,5,111,0,0,318,319,5,110,0,0,319,447,5,103, - 0,0,320,321,5,115,0,0,321,322,5,104,0,0,322,323,5,111,0,0,323,324,5,114, - 0,0,324,447,5,116,0,0,325,326,5,98,0,0,326,327,5,121,0,0,327,328,5,116, - 0,0,328,447,5,101,0,0,329,330,5,115,0,0,330,331,5,105,0,0,331,332,5,103, - 0,0,332,333,5,110,0,0,333,334,5,101,0,0,334,447,5,100,0,0,335,336,5,117, - 0,0,336,337,5,110,0,0,337,338,5,115,0,0,338,339,5,105,0,0,339,340,5,103, - 0,0,340,341,5,110,0,0,341,342,5,101,0,0,342,447,5,100,0,0,343,344,5,99, - 0,0,344,345,5,104,0,0,345,346,5,97,0,0,346,447,5,114,0,0,347,348,5,115, - 0,0,348,349,5,116,0,0,349,350,5,114,0,0,350,351,5,105,0,0,351,352,5,110, - 0,0,352,447,5,103,0,0,353,354,5,115,0,0,354,355,5,116,0,0,355,447,5,114, - 0,0,356,357,5,118,0,0,357,358,5,111,0,0,358,359,5,105,0,0,359,447,5,100, - 0,0,360,361,5,99,0,0,361,362,5,111,0,0,362,363,5,110,0,0,363,364,5,115, - 0,0,364,447,5,116,0,0,365,366,5,115,0,0,366,367,5,116,0,0,367,368,5,97, - 0,0,368,369,5,116,0,0,369,370,5,105,0,0,370,447,5,99,0,0,371,372,5,118, - 0,0,372,373,5,111,0,0,373,374,5,108,0,0,374,375,5,97,0,0,375,376,5,116, - 0,0,376,377,5,105,0,0,377,378,5,108,0,0,378,447,5,101,0,0,379,380,5,114, - 0,0,380,381,5,101,0,0,381,382,5,103,0,0,382,383,5,105,0,0,383,384,5,115, - 0,0,384,385,5,116,0,0,385,386,5,101,0,0,386,447,5,114,0,0,387,388,5,102, - 0,0,388,389,5,105,0,0,389,390,5,110,0,0,390,391,5,97,0,0,391,447,5,108, - 0,0,392,393,5,97,0,0,393,394,5,98,0,0,394,395,5,115,0,0,395,396,5,116, - 0,0,396,397,5,114,0,0,397,398,5,97,0,0,398,399,5,99,0,0,399,447,5,116, - 0,0,400,401,5,116,0,0,401,402,5,104,0,0,402,403,5,105,0,0,403,447,5,115, - 0,0,404,405,5,115,0,0,405,406,5,101,0,0,406,407,5,108,0,0,407,447,5,102, - 0,0,408,409,5,110,0,0,409,410,5,101,0,0,410,447,5,119,0,0,411,412,5,100, - 0,0,412,413,5,101,0,0,413,414,5,108,0,0,414,415,5,101,0,0,415,416,5,116, - 0,0,416,447,5,101,0,0,417,418,5,110,0,0,418,419,5,117,0,0,419,420,5,108, - 0,0,420,447,5,108,0,0,421,422,5,110,0,0,422,423,5,117,0,0,423,424,5,108, - 0,0,424,425,5,108,0,0,425,426,5,112,0,0,426,427,5,116,0,0,427,447,5,114, - 0,0,428,429,5,116,0,0,429,430,5,114,0,0,430,431,5,117,0,0,431,447,5,101, - 0,0,432,433,5,102,0,0,433,434,5,97,0,0,434,435,5,108,0,0,435,436,5,115, - 0,0,436,447,5,101,0,0,437,438,5,84,0,0,438,439,5,114,0,0,439,440,5,117, - 0,0,440,447,5,101,0,0,441,442,5,70,0,0,442,443,5,97,0,0,443,444,5,108, - 0,0,444,445,5,115,0,0,445,447,5,101,0,0,446,313,1,0,0,0,446,316,1,0,0, - 0,446,320,1,0,0,0,446,325,1,0,0,0,446,329,1,0,0,0,446,335,1,0,0,0,446, - 343,1,0,0,0,446,347,1,0,0,0,446,353,1,0,0,0,446,356,1,0,0,0,446,360,1, - 0,0,0,446,365,1,0,0,0,446,371,1,0,0,0,446,379,1,0,0,0,446,387,1,0,0,0, - 446,392,1,0,0,0,446,400,1,0,0,0,446,404,1,0,0,0,446,408,1,0,0,0,446,411, - 1,0,0,0,446,417,1,0,0,0,446,421,1,0,0,0,446,428,1,0,0,0,446,432,1,0,0, - 0,446,437,1,0,0,0,446,441,1,0,0,0,447,56,1,0,0,0,448,449,5,116,0,0,449, - 450,5,114,0,0,450,492,5,121,0,0,451,452,5,99,0,0,452,453,5,97,0,0,453, - 454,5,116,0,0,454,455,5,99,0,0,455,492,5,104,0,0,456,457,5,116,0,0,457, - 458,5,104,0,0,458,459,5,114,0,0,459,460,5,111,0,0,460,492,5,119,0,0,461, - 462,5,116,0,0,462,463,5,104,0,0,463,464,5,114,0,0,464,465,5,111,0,0,465, - 466,5,119,0,0,466,492,5,115,0,0,467,468,5,114,0,0,468,469,5,97,0,0,469, - 470,5,105,0,0,470,471,5,115,0,0,471,492,5,101,0,0,472,473,5,102,0,0,473, - 474,5,105,0,0,474,475,5,110,0,0,475,476,5,97,0,0,476,477,5,108,0,0,477, - 478,5,108,0,0,478,492,5,121,0,0,479,480,5,97,0,0,480,481,5,115,0,0,481, - 482,5,115,0,0,482,483,5,101,0,0,483,484,5,114,0,0,484,492,5,116,0,0,485, - 486,5,101,0,0,486,487,5,120,0,0,487,488,5,99,0,0,488,489,5,101,0,0,489, - 490,5,112,0,0,490,492,5,116,0,0,491,448,1,0,0,0,491,451,1,0,0,0,491,456, - 1,0,0,0,491,461,1,0,0,0,491,467,1,0,0,0,491,472,1,0,0,0,491,479,1,0,0, - 0,491,485,1,0,0,0,492,58,1,0,0,0,493,494,5,112,0,0,494,495,5,117,0,0, - 495,496,5,98,0,0,496,497,5,108,0,0,497,498,5,105,0,0,498,530,5,99,0,0, - 499,500,5,112,0,0,500,501,5,114,0,0,501,502,5,105,0,0,502,503,5,118,0, - 0,503,504,5,97,0,0,504,505,5,116,0,0,505,530,5,101,0,0,506,507,5,112, - 0,0,507,508,5,114,0,0,508,509,5,111,0,0,509,510,5,116,0,0,510,511,5,101, - 0,0,511,512,5,99,0,0,512,513,5,116,0,0,513,514,5,101,0,0,514,530,5,100, - 0,0,515,516,5,105,0,0,516,517,5,110,0,0,517,518,5,116,0,0,518,519,5,101, - 0,0,519,520,5,114,0,0,520,521,5,110,0,0,521,522,5,97,0,0,522,530,5,108, - 0,0,523,524,5,102,0,0,524,525,5,114,0,0,525,526,5,105,0,0,526,527,5,101, - 0,0,527,528,5,110,0,0,528,530,5,100,0,0,529,493,1,0,0,0,529,499,1,0,0, - 0,529,506,1,0,0,0,529,515,1,0,0,0,529,523,1,0,0,0,530,60,1,0,0,0,531, - 532,5,111,0,0,532,533,5,112,0,0,533,534,5,101,0,0,534,535,5,114,0,0,535, - 536,5,97,0,0,536,537,5,116,0,0,537,538,5,111,0,0,538,616,5,114,0,0,539, - 540,5,105,0,0,540,541,5,110,0,0,541,542,5,108,0,0,542,543,5,105,0,0,543, - 544,5,110,0,0,544,616,5,101,0,0,545,546,5,118,0,0,546,547,5,105,0,0,547, - 548,5,114,0,0,548,549,5,116,0,0,549,550,5,117,0,0,550,551,5,97,0,0,551, - 616,5,108,0,0,552,553,5,111,0,0,553,554,5,118,0,0,554,555,5,101,0,0,555, - 556,5,114,0,0,556,557,5,114,0,0,557,558,5,105,0,0,558,559,5,100,0,0,559, - 616,5,101,0,0,560,561,5,101,0,0,561,562,5,120,0,0,562,563,5,116,0,0,563, - 564,5,101,0,0,564,565,5,114,0,0,565,616,5,110,0,0,566,567,5,115,0,0,567, - 568,5,105,0,0,568,569,5,122,0,0,569,570,5,101,0,0,570,571,5,111,0,0,571, - 616,5,102,0,0,572,573,5,97,0,0,573,574,5,119,0,0,574,575,5,97,0,0,575, - 576,5,105,0,0,576,616,5,116,0,0,577,578,5,97,0,0,578,579,5,115,0,0,579, - 580,5,121,0,0,580,581,5,110,0,0,581,616,5,99,0,0,582,583,5,119,0,0,583, - 584,5,105,0,0,584,585,5,116,0,0,585,616,5,104,0,0,586,587,5,103,0,0,587, - 588,5,108,0,0,588,589,5,111,0,0,589,590,5,98,0,0,590,591,5,97,0,0,591, - 616,5,108,0,0,592,593,5,110,0,0,593,594,5,111,0,0,594,595,5,110,0,0,595, - 596,5,108,0,0,596,597,5,111,0,0,597,598,5,99,0,0,598,599,5,97,0,0,599, - 616,5,108,0,0,600,601,5,97,0,0,601,602,5,110,0,0,602,616,5,100,0,0,603, - 604,5,111,0,0,604,616,5,114,0,0,605,606,5,110,0,0,606,607,5,111,0,0,607, - 616,5,116,0,0,608,609,5,105,0,0,609,616,5,110,0,0,610,611,5,105,0,0,611, - 616,5,115,0,0,612,613,5,100,0,0,613,614,5,101,0,0,614,616,5,108,0,0,615, - 531,1,0,0,0,615,539,1,0,0,0,615,545,1,0,0,0,615,552,1,0,0,0,615,560,1, - 0,0,0,615,566,1,0,0,0,615,572,1,0,0,0,615,577,1,0,0,0,615,582,1,0,0,0, - 615,586,1,0,0,0,615,592,1,0,0,0,615,600,1,0,0,0,615,603,1,0,0,0,615,605, - 1,0,0,0,615,608,1,0,0,0,615,610,1,0,0,0,615,612,1,0,0,0,616,62,1,0,0, - 0,617,621,7,2,0,0,618,620,7,3,0,0,619,618,1,0,0,0,620,623,1,0,0,0,621, - 619,1,0,0,0,621,622,1,0,0,0,622,64,1,0,0,0,623,621,1,0,0,0,9,0,172,239, - 311,446,491,529,615,621,1,6,0,0 + 1,30,1,30,3,30,620,8,30,1,31,1,31,5,31,624,8,31,10,31,12,31,627,9,31, + 0,0,32,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13, + 27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49, + 25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,1,0,4,3,0,9,10,13,13,32, + 32,2,0,10,10,13,13,3,0,65,90,95,95,97,122,4,0,48,57,65,90,95,95,97,122, + 707,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11, + 1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0, + 0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0, + 0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43, + 1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0, + 0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0, + 1,65,1,0,0,0,3,75,1,0,0,0,5,77,1,0,0,0,7,79,1,0,0,0,9,82,1,0,0,0,11,84, + 1,0,0,0,13,86,1,0,0,0,15,88,1,0,0,0,17,91,1,0,0,0,19,93,1,0,0,0,21,95, + 1,0,0,0,23,102,1,0,0,0,25,107,1,0,0,0,27,109,1,0,0,0,29,111,1,0,0,0,31, + 115,1,0,0,0,33,121,1,0,0,0,35,126,1,0,0,0,37,132,1,0,0,0,39,138,1,0,0, + 0,41,144,1,0,0,0,43,150,1,0,0,0,45,157,1,0,0,0,47,162,1,0,0,0,49,166, + 1,0,0,0,51,243,1,0,0,0,53,315,1,0,0,0,55,450,1,0,0,0,57,495,1,0,0,0,59, + 533,1,0,0,0,61,619,1,0,0,0,63,621,1,0,0,0,65,66,5,110,0,0,66,67,5,97, + 0,0,67,68,5,109,0,0,68,69,5,101,0,0,69,70,5,115,0,0,70,71,5,112,0,0,71, + 72,5,97,0,0,72,73,5,99,0,0,73,74,5,101,0,0,74,2,1,0,0,0,75,76,5,123,0, + 0,76,4,1,0,0,0,77,78,5,125,0,0,78,6,1,0,0,0,79,80,5,102,0,0,80,81,5,110, + 0,0,81,8,1,0,0,0,82,83,5,40,0,0,83,10,1,0,0,0,84,85,5,41,0,0,85,12,1, + 0,0,0,86,87,5,59,0,0,87,14,1,0,0,0,88,89,5,45,0,0,89,90,5,62,0,0,90,16, + 1,0,0,0,91,92,5,58,0,0,92,18,1,0,0,0,93,94,5,44,0,0,94,20,1,0,0,0,95, + 96,5,115,0,0,96,97,5,116,0,0,97,98,5,114,0,0,98,99,5,117,0,0,99,100,5, + 99,0,0,100,101,5,116,0,0,101,22,1,0,0,0,102,103,5,76,0,0,103,104,5,105, + 0,0,104,105,5,115,0,0,105,106,5,116,0,0,106,24,1,0,0,0,107,108,5,60,0, + 0,108,26,1,0,0,0,109,110,5,62,0,0,110,28,1,0,0,0,111,112,5,77,0,0,112, + 113,5,97,0,0,113,114,5,112,0,0,114,30,1,0,0,0,115,116,5,84,0,0,116,117, + 5,117,0,0,117,118,5,112,0,0,118,119,5,108,0,0,119,120,5,101,0,0,120,32, + 1,0,0,0,121,122,5,105,0,0,122,123,5,110,0,0,123,124,5,116,0,0,124,125, + 5,56,0,0,125,34,1,0,0,0,126,127,5,105,0,0,127,128,5,110,0,0,128,129,5, + 116,0,0,129,130,5,49,0,0,130,131,5,54,0,0,131,36,1,0,0,0,132,133,5,105, + 0,0,133,134,5,110,0,0,134,135,5,116,0,0,135,136,5,51,0,0,136,137,5,50, + 0,0,137,38,1,0,0,0,138,139,5,105,0,0,139,140,5,110,0,0,140,141,5,116, + 0,0,141,142,5,54,0,0,142,143,5,52,0,0,143,40,1,0,0,0,144,145,5,102,0, + 0,145,146,5,108,0,0,146,147,5,111,0,0,147,148,5,97,0,0,148,149,5,116, + 0,0,149,42,1,0,0,0,150,151,5,100,0,0,151,152,5,111,0,0,152,153,5,117, + 0,0,153,154,5,98,0,0,154,155,5,108,0,0,155,156,5,101,0,0,156,44,1,0,0, + 0,157,158,5,98,0,0,158,159,5,111,0,0,159,160,5,111,0,0,160,161,5,108, + 0,0,161,46,1,0,0,0,162,163,7,0,0,0,163,164,1,0,0,0,164,165,6,23,0,0,165, + 48,1,0,0,0,166,167,5,47,0,0,167,168,5,47,0,0,168,172,1,0,0,0,169,171, + 8,1,0,0,170,169,1,0,0,0,171,174,1,0,0,0,172,170,1,0,0,0,172,173,1,0,0, + 0,173,175,1,0,0,0,174,172,1,0,0,0,175,176,6,24,0,0,176,50,1,0,0,0,177, + 178,5,105,0,0,178,244,5,102,0,0,179,180,5,101,0,0,180,181,5,108,0,0,181, + 182,5,115,0,0,182,244,5,101,0,0,183,184,5,101,0,0,184,185,5,108,0,0,185, + 186,5,105,0,0,186,244,5,102,0,0,187,188,5,115,0,0,188,189,5,119,0,0,189, + 190,5,105,0,0,190,191,5,116,0,0,191,192,5,99,0,0,192,244,5,104,0,0,193, + 194,5,99,0,0,194,195,5,97,0,0,195,196,5,115,0,0,196,244,5,101,0,0,197, + 198,5,119,0,0,198,199,5,104,0,0,199,200,5,105,0,0,200,201,5,108,0,0,201, + 244,5,101,0,0,202,203,5,102,0,0,203,204,5,111,0,0,204,244,5,114,0,0,205, + 206,5,108,0,0,206,207,5,111,0,0,207,208,5,111,0,0,208,244,5,112,0,0,209, + 210,5,100,0,0,210,244,5,111,0,0,211,212,5,98,0,0,212,213,5,114,0,0,213, + 214,5,101,0,0,214,215,5,97,0,0,215,244,5,107,0,0,216,217,5,99,0,0,217, + 218,5,111,0,0,218,219,5,110,0,0,219,220,5,116,0,0,220,221,5,105,0,0,221, + 222,5,110,0,0,222,223,5,117,0,0,223,244,5,101,0,0,224,225,5,114,0,0,225, + 226,5,101,0,0,226,227,5,116,0,0,227,228,5,117,0,0,228,229,5,114,0,0,229, + 244,5,110,0,0,230,231,5,103,0,0,231,232,5,111,0,0,232,233,5,116,0,0,233, + 244,5,111,0,0,234,235,5,112,0,0,235,236,5,97,0,0,236,237,5,115,0,0,237, + 244,5,115,0,0,238,239,5,121,0,0,239,240,5,105,0,0,240,241,5,101,0,0,241, + 242,5,108,0,0,242,244,5,100,0,0,243,177,1,0,0,0,243,179,1,0,0,0,243,183, + 1,0,0,0,243,187,1,0,0,0,243,193,1,0,0,0,243,197,1,0,0,0,243,202,1,0,0, + 0,243,205,1,0,0,0,243,209,1,0,0,0,243,211,1,0,0,0,243,216,1,0,0,0,243, + 224,1,0,0,0,243,230,1,0,0,0,243,234,1,0,0,0,243,238,1,0,0,0,244,52,1, + 0,0,0,245,246,5,99,0,0,246,247,5,108,0,0,247,248,5,97,0,0,248,249,5,115, + 0,0,249,316,5,115,0,0,250,251,5,115,0,0,251,252,5,116,0,0,252,253,5,114, + 0,0,253,254,5,117,0,0,254,255,5,99,0,0,255,316,5,116,0,0,256,257,5,101, + 0,0,257,258,5,110,0,0,258,259,5,117,0,0,259,316,5,109,0,0,260,261,5,117, + 0,0,261,262,5,110,0,0,262,263,5,105,0,0,263,264,5,111,0,0,264,316,5,110, + 0,0,265,266,5,105,0,0,266,267,5,110,0,0,267,268,5,116,0,0,268,269,5,101, + 0,0,269,270,5,114,0,0,270,271,5,102,0,0,271,272,5,97,0,0,272,273,5,99, + 0,0,273,316,5,101,0,0,274,275,5,110,0,0,275,276,5,97,0,0,276,277,5,109, + 0,0,277,278,5,101,0,0,278,279,5,115,0,0,279,280,5,112,0,0,280,281,5,97, + 0,0,281,282,5,99,0,0,282,316,5,101,0,0,283,284,5,117,0,0,284,285,5,115, + 0,0,285,286,5,105,0,0,286,287,5,110,0,0,287,316,5,103,0,0,288,289,5,116, + 0,0,289,290,5,121,0,0,290,291,5,112,0,0,291,292,5,101,0,0,292,293,5,100, + 0,0,293,294,5,101,0,0,294,316,5,102,0,0,295,296,5,100,0,0,296,297,5,101, + 0,0,297,316,5,102,0,0,298,299,5,102,0,0,299,316,5,110,0,0,300,301,5,108, + 0,0,301,302,5,101,0,0,302,316,5,116,0,0,303,304,5,109,0,0,304,305,5,111, + 0,0,305,306,5,100,0,0,306,307,5,117,0,0,307,308,5,108,0,0,308,316,5,101, + 0,0,309,310,5,105,0,0,310,311,5,109,0,0,311,312,5,112,0,0,312,313,5,111, + 0,0,313,314,5,114,0,0,314,316,5,116,0,0,315,245,1,0,0,0,315,250,1,0,0, + 0,315,256,1,0,0,0,315,260,1,0,0,0,315,265,1,0,0,0,315,274,1,0,0,0,315, + 283,1,0,0,0,315,288,1,0,0,0,315,295,1,0,0,0,315,298,1,0,0,0,315,300,1, + 0,0,0,315,303,1,0,0,0,315,309,1,0,0,0,316,54,1,0,0,0,317,318,5,105,0, + 0,318,319,5,110,0,0,319,451,5,116,0,0,320,321,5,108,0,0,321,322,5,111, + 0,0,322,323,5,110,0,0,323,451,5,103,0,0,324,325,5,115,0,0,325,326,5,104, + 0,0,326,327,5,111,0,0,327,328,5,114,0,0,328,451,5,116,0,0,329,330,5,98, + 0,0,330,331,5,121,0,0,331,332,5,116,0,0,332,451,5,101,0,0,333,334,5,115, + 0,0,334,335,5,105,0,0,335,336,5,103,0,0,336,337,5,110,0,0,337,338,5,101, + 0,0,338,451,5,100,0,0,339,340,5,117,0,0,340,341,5,110,0,0,341,342,5,115, + 0,0,342,343,5,105,0,0,343,344,5,103,0,0,344,345,5,110,0,0,345,346,5,101, + 0,0,346,451,5,100,0,0,347,348,5,99,0,0,348,349,5,104,0,0,349,350,5,97, + 0,0,350,451,5,114,0,0,351,352,5,115,0,0,352,353,5,116,0,0,353,354,5,114, + 0,0,354,355,5,105,0,0,355,356,5,110,0,0,356,451,5,103,0,0,357,358,5,115, + 0,0,358,359,5,116,0,0,359,451,5,114,0,0,360,361,5,118,0,0,361,362,5,111, + 0,0,362,363,5,105,0,0,363,451,5,100,0,0,364,365,5,99,0,0,365,366,5,111, + 0,0,366,367,5,110,0,0,367,368,5,115,0,0,368,451,5,116,0,0,369,370,5,115, + 0,0,370,371,5,116,0,0,371,372,5,97,0,0,372,373,5,116,0,0,373,374,5,105, + 0,0,374,451,5,99,0,0,375,376,5,118,0,0,376,377,5,111,0,0,377,378,5,108, + 0,0,378,379,5,97,0,0,379,380,5,116,0,0,380,381,5,105,0,0,381,382,5,108, + 0,0,382,451,5,101,0,0,383,384,5,114,0,0,384,385,5,101,0,0,385,386,5,103, + 0,0,386,387,5,105,0,0,387,388,5,115,0,0,388,389,5,116,0,0,389,390,5,101, + 0,0,390,451,5,114,0,0,391,392,5,102,0,0,392,393,5,105,0,0,393,394,5,110, + 0,0,394,395,5,97,0,0,395,451,5,108,0,0,396,397,5,97,0,0,397,398,5,98, + 0,0,398,399,5,115,0,0,399,400,5,116,0,0,400,401,5,114,0,0,401,402,5,97, + 0,0,402,403,5,99,0,0,403,451,5,116,0,0,404,405,5,116,0,0,405,406,5,104, + 0,0,406,407,5,105,0,0,407,451,5,115,0,0,408,409,5,115,0,0,409,410,5,101, + 0,0,410,411,5,108,0,0,411,451,5,102,0,0,412,413,5,110,0,0,413,414,5,101, + 0,0,414,451,5,119,0,0,415,416,5,100,0,0,416,417,5,101,0,0,417,418,5,108, + 0,0,418,419,5,101,0,0,419,420,5,116,0,0,420,451,5,101,0,0,421,422,5,110, + 0,0,422,423,5,117,0,0,423,424,5,108,0,0,424,451,5,108,0,0,425,426,5,110, + 0,0,426,427,5,117,0,0,427,428,5,108,0,0,428,429,5,108,0,0,429,430,5,112, + 0,0,430,431,5,116,0,0,431,451,5,114,0,0,432,433,5,116,0,0,433,434,5,114, + 0,0,434,435,5,117,0,0,435,451,5,101,0,0,436,437,5,102,0,0,437,438,5,97, + 0,0,438,439,5,108,0,0,439,440,5,115,0,0,440,451,5,101,0,0,441,442,5,84, + 0,0,442,443,5,114,0,0,443,444,5,117,0,0,444,451,5,101,0,0,445,446,5,70, + 0,0,446,447,5,97,0,0,447,448,5,108,0,0,448,449,5,115,0,0,449,451,5,101, + 0,0,450,317,1,0,0,0,450,320,1,0,0,0,450,324,1,0,0,0,450,329,1,0,0,0,450, + 333,1,0,0,0,450,339,1,0,0,0,450,347,1,0,0,0,450,351,1,0,0,0,450,357,1, + 0,0,0,450,360,1,0,0,0,450,364,1,0,0,0,450,369,1,0,0,0,450,375,1,0,0,0, + 450,383,1,0,0,0,450,391,1,0,0,0,450,396,1,0,0,0,450,404,1,0,0,0,450,408, + 1,0,0,0,450,412,1,0,0,0,450,415,1,0,0,0,450,421,1,0,0,0,450,425,1,0,0, + 0,450,432,1,0,0,0,450,436,1,0,0,0,450,441,1,0,0,0,450,445,1,0,0,0,451, + 56,1,0,0,0,452,453,5,116,0,0,453,454,5,114,0,0,454,496,5,121,0,0,455, + 456,5,99,0,0,456,457,5,97,0,0,457,458,5,116,0,0,458,459,5,99,0,0,459, + 496,5,104,0,0,460,461,5,116,0,0,461,462,5,104,0,0,462,463,5,114,0,0,463, + 464,5,111,0,0,464,496,5,119,0,0,465,466,5,116,0,0,466,467,5,104,0,0,467, + 468,5,114,0,0,468,469,5,111,0,0,469,470,5,119,0,0,470,496,5,115,0,0,471, + 472,5,114,0,0,472,473,5,97,0,0,473,474,5,105,0,0,474,475,5,115,0,0,475, + 496,5,101,0,0,476,477,5,102,0,0,477,478,5,105,0,0,478,479,5,110,0,0,479, + 480,5,97,0,0,480,481,5,108,0,0,481,482,5,108,0,0,482,496,5,121,0,0,483, + 484,5,97,0,0,484,485,5,115,0,0,485,486,5,115,0,0,486,487,5,101,0,0,487, + 488,5,114,0,0,488,496,5,116,0,0,489,490,5,101,0,0,490,491,5,120,0,0,491, + 492,5,99,0,0,492,493,5,101,0,0,493,494,5,112,0,0,494,496,5,116,0,0,495, + 452,1,0,0,0,495,455,1,0,0,0,495,460,1,0,0,0,495,465,1,0,0,0,495,471,1, + 0,0,0,495,476,1,0,0,0,495,483,1,0,0,0,495,489,1,0,0,0,496,58,1,0,0,0, + 497,498,5,112,0,0,498,499,5,117,0,0,499,500,5,98,0,0,500,501,5,108,0, + 0,501,502,5,105,0,0,502,534,5,99,0,0,503,504,5,112,0,0,504,505,5,114, + 0,0,505,506,5,105,0,0,506,507,5,118,0,0,507,508,5,97,0,0,508,509,5,116, + 0,0,509,534,5,101,0,0,510,511,5,112,0,0,511,512,5,114,0,0,512,513,5,111, + 0,0,513,514,5,116,0,0,514,515,5,101,0,0,515,516,5,99,0,0,516,517,5,116, + 0,0,517,518,5,101,0,0,518,534,5,100,0,0,519,520,5,105,0,0,520,521,5,110, + 0,0,521,522,5,116,0,0,522,523,5,101,0,0,523,524,5,114,0,0,524,525,5,110, + 0,0,525,526,5,97,0,0,526,534,5,108,0,0,527,528,5,102,0,0,528,529,5,114, + 0,0,529,530,5,105,0,0,530,531,5,101,0,0,531,532,5,110,0,0,532,534,5,100, + 0,0,533,497,1,0,0,0,533,503,1,0,0,0,533,510,1,0,0,0,533,519,1,0,0,0,533, + 527,1,0,0,0,534,60,1,0,0,0,535,536,5,111,0,0,536,537,5,112,0,0,537,538, + 5,101,0,0,538,539,5,114,0,0,539,540,5,97,0,0,540,541,5,116,0,0,541,542, + 5,111,0,0,542,620,5,114,0,0,543,544,5,105,0,0,544,545,5,110,0,0,545,546, + 5,108,0,0,546,547,5,105,0,0,547,548,5,110,0,0,548,620,5,101,0,0,549,550, + 5,118,0,0,550,551,5,105,0,0,551,552,5,114,0,0,552,553,5,116,0,0,553,554, + 5,117,0,0,554,555,5,97,0,0,555,620,5,108,0,0,556,557,5,111,0,0,557,558, + 5,118,0,0,558,559,5,101,0,0,559,560,5,114,0,0,560,561,5,114,0,0,561,562, + 5,105,0,0,562,563,5,100,0,0,563,620,5,101,0,0,564,565,5,101,0,0,565,566, + 5,120,0,0,566,567,5,116,0,0,567,568,5,101,0,0,568,569,5,114,0,0,569,620, + 5,110,0,0,570,571,5,115,0,0,571,572,5,105,0,0,572,573,5,122,0,0,573,574, + 5,101,0,0,574,575,5,111,0,0,575,620,5,102,0,0,576,577,5,97,0,0,577,578, + 5,119,0,0,578,579,5,97,0,0,579,580,5,105,0,0,580,620,5,116,0,0,581,582, + 5,97,0,0,582,583,5,115,0,0,583,584,5,121,0,0,584,585,5,110,0,0,585,620, + 5,99,0,0,586,587,5,119,0,0,587,588,5,105,0,0,588,589,5,116,0,0,589,620, + 5,104,0,0,590,591,5,103,0,0,591,592,5,108,0,0,592,593,5,111,0,0,593,594, + 5,98,0,0,594,595,5,97,0,0,595,620,5,108,0,0,596,597,5,110,0,0,597,598, + 5,111,0,0,598,599,5,110,0,0,599,600,5,108,0,0,600,601,5,111,0,0,601,602, + 5,99,0,0,602,603,5,97,0,0,603,620,5,108,0,0,604,605,5,97,0,0,605,606, + 5,110,0,0,606,620,5,100,0,0,607,608,5,111,0,0,608,620,5,114,0,0,609,610, + 5,110,0,0,610,611,5,111,0,0,611,620,5,116,0,0,612,613,5,105,0,0,613,620, + 5,110,0,0,614,615,5,105,0,0,615,620,5,115,0,0,616,617,5,100,0,0,617,618, + 5,101,0,0,618,620,5,108,0,0,619,535,1,0,0,0,619,543,1,0,0,0,619,549,1, + 0,0,0,619,556,1,0,0,0,619,564,1,0,0,0,619,570,1,0,0,0,619,576,1,0,0,0, + 619,581,1,0,0,0,619,586,1,0,0,0,619,590,1,0,0,0,619,596,1,0,0,0,619,604, + 1,0,0,0,619,607,1,0,0,0,619,609,1,0,0,0,619,612,1,0,0,0,619,614,1,0,0, + 0,619,616,1,0,0,0,620,62,1,0,0,0,621,625,7,2,0,0,622,624,7,3,0,0,623, + 622,1,0,0,0,624,627,1,0,0,0,625,623,1,0,0,0,625,626,1,0,0,0,626,64,1, + 0,0,0,627,625,1,0,0,0,9,0,172,243,315,450,495,533,619,625,1,6,0,0 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); From 2274d2e3c75d58ac9c2f6cd6bcf4d54124a141c8 Mon Sep 17 00:00:00 2001 From: LinZhihao-723 Date: Mon, 25 Aug 2025 22:50:40 -0400 Subject: [PATCH 6/8] Adding more C++ reserved keywords. --- src/spider/tdl/parser/TaskDefLang.g4 | 3 + .../antlr_generated/TaskDefLangLexer.cpp | 372 +++++++++--------- 2 files changed, 193 insertions(+), 182 deletions(-) diff --git a/src/spider/tdl/parser/TaskDefLang.g4 b/src/spider/tdl/parser/TaskDefLang.g4 index 1ecdad90..31ccbc47 100644 --- a/src/spider/tdl/parser/TaskDefLang.g4 +++ b/src/spider/tdl/parser/TaskDefLang.g4 @@ -313,6 +313,8 @@ RESERVED_DEF_WORDS | 'let' | 'module' | 'import' +| 'template' +| 'requires' ; RESERVED_TYPE_AND_STORAGE_WORDS @@ -328,6 +330,7 @@ RESERVED_TYPE_AND_STORAGE_WORDS | 'void' | 'const' | 'static' +| 'auto' | 'volatile' | 'register' | 'final' diff --git a/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp b/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp index 19fb0c86..43fdb6a3 100644 --- a/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp +++ b/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp @@ -96,7 +96,7 @@ void taskdeflanglexerLexerInitialize() { } ); static const int32_t serializedATNSegment[] = { - 4,0,32,628,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, + 4,0,32,648,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, 6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14, 7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21, 7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28, @@ -118,7 +118,9 @@ void taskdeflanglexerLexerInitialize() { 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, - 1,26,1,26,3,26,316,8,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, + 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, + 1,26,1,26,1,26,1,26,3,26,332,8,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27, + 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, @@ -127,194 +129,200 @@ void taskdeflanglexerLexerInitialize() { 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, - 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,3,27,451, - 8,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28, + 1,27,1,27,1,27,1,27,3,27,471,8,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28, 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28, 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28, - 1,28,1,28,3,28,496,8,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29, + 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,516,8,28,1,29,1,29,1,29, + 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29, 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29, - 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,3,29, - 534,8,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, + 1,29,1,29,1,29,1,29,1,29,3,29,554,8,29,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, - 1,30,1,30,3,30,620,8,30,1,31,1,31,5,31,624,8,31,10,31,12,31,627,9,31, - 0,0,32,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13, - 27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49, - 25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,1,0,4,3,0,9,10,13,13,32, - 32,2,0,10,10,13,13,3,0,65,90,95,95,97,122,4,0,48,57,65,90,95,95,97,122, - 707,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11, - 1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0, - 0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0, - 0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43, - 1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0, - 0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0, - 1,65,1,0,0,0,3,75,1,0,0,0,5,77,1,0,0,0,7,79,1,0,0,0,9,82,1,0,0,0,11,84, - 1,0,0,0,13,86,1,0,0,0,15,88,1,0,0,0,17,91,1,0,0,0,19,93,1,0,0,0,21,95, - 1,0,0,0,23,102,1,0,0,0,25,107,1,0,0,0,27,109,1,0,0,0,29,111,1,0,0,0,31, - 115,1,0,0,0,33,121,1,0,0,0,35,126,1,0,0,0,37,132,1,0,0,0,39,138,1,0,0, - 0,41,144,1,0,0,0,43,150,1,0,0,0,45,157,1,0,0,0,47,162,1,0,0,0,49,166, - 1,0,0,0,51,243,1,0,0,0,53,315,1,0,0,0,55,450,1,0,0,0,57,495,1,0,0,0,59, - 533,1,0,0,0,61,619,1,0,0,0,63,621,1,0,0,0,65,66,5,110,0,0,66,67,5,97, - 0,0,67,68,5,109,0,0,68,69,5,101,0,0,69,70,5,115,0,0,70,71,5,112,0,0,71, - 72,5,97,0,0,72,73,5,99,0,0,73,74,5,101,0,0,74,2,1,0,0,0,75,76,5,123,0, - 0,76,4,1,0,0,0,77,78,5,125,0,0,78,6,1,0,0,0,79,80,5,102,0,0,80,81,5,110, - 0,0,81,8,1,0,0,0,82,83,5,40,0,0,83,10,1,0,0,0,84,85,5,41,0,0,85,12,1, - 0,0,0,86,87,5,59,0,0,87,14,1,0,0,0,88,89,5,45,0,0,89,90,5,62,0,0,90,16, - 1,0,0,0,91,92,5,58,0,0,92,18,1,0,0,0,93,94,5,44,0,0,94,20,1,0,0,0,95, - 96,5,115,0,0,96,97,5,116,0,0,97,98,5,114,0,0,98,99,5,117,0,0,99,100,5, - 99,0,0,100,101,5,116,0,0,101,22,1,0,0,0,102,103,5,76,0,0,103,104,5,105, - 0,0,104,105,5,115,0,0,105,106,5,116,0,0,106,24,1,0,0,0,107,108,5,60,0, - 0,108,26,1,0,0,0,109,110,5,62,0,0,110,28,1,0,0,0,111,112,5,77,0,0,112, - 113,5,97,0,0,113,114,5,112,0,0,114,30,1,0,0,0,115,116,5,84,0,0,116,117, - 5,117,0,0,117,118,5,112,0,0,118,119,5,108,0,0,119,120,5,101,0,0,120,32, - 1,0,0,0,121,122,5,105,0,0,122,123,5,110,0,0,123,124,5,116,0,0,124,125, - 5,56,0,0,125,34,1,0,0,0,126,127,5,105,0,0,127,128,5,110,0,0,128,129,5, - 116,0,0,129,130,5,49,0,0,130,131,5,54,0,0,131,36,1,0,0,0,132,133,5,105, - 0,0,133,134,5,110,0,0,134,135,5,116,0,0,135,136,5,51,0,0,136,137,5,50, - 0,0,137,38,1,0,0,0,138,139,5,105,0,0,139,140,5,110,0,0,140,141,5,116, - 0,0,141,142,5,54,0,0,142,143,5,52,0,0,143,40,1,0,0,0,144,145,5,102,0, - 0,145,146,5,108,0,0,146,147,5,111,0,0,147,148,5,97,0,0,148,149,5,116, - 0,0,149,42,1,0,0,0,150,151,5,100,0,0,151,152,5,111,0,0,152,153,5,117, - 0,0,153,154,5,98,0,0,154,155,5,108,0,0,155,156,5,101,0,0,156,44,1,0,0, - 0,157,158,5,98,0,0,158,159,5,111,0,0,159,160,5,111,0,0,160,161,5,108, - 0,0,161,46,1,0,0,0,162,163,7,0,0,0,163,164,1,0,0,0,164,165,6,23,0,0,165, - 48,1,0,0,0,166,167,5,47,0,0,167,168,5,47,0,0,168,172,1,0,0,0,169,171, - 8,1,0,0,170,169,1,0,0,0,171,174,1,0,0,0,172,170,1,0,0,0,172,173,1,0,0, - 0,173,175,1,0,0,0,174,172,1,0,0,0,175,176,6,24,0,0,176,50,1,0,0,0,177, - 178,5,105,0,0,178,244,5,102,0,0,179,180,5,101,0,0,180,181,5,108,0,0,181, - 182,5,115,0,0,182,244,5,101,0,0,183,184,5,101,0,0,184,185,5,108,0,0,185, - 186,5,105,0,0,186,244,5,102,0,0,187,188,5,115,0,0,188,189,5,119,0,0,189, - 190,5,105,0,0,190,191,5,116,0,0,191,192,5,99,0,0,192,244,5,104,0,0,193, - 194,5,99,0,0,194,195,5,97,0,0,195,196,5,115,0,0,196,244,5,101,0,0,197, - 198,5,119,0,0,198,199,5,104,0,0,199,200,5,105,0,0,200,201,5,108,0,0,201, - 244,5,101,0,0,202,203,5,102,0,0,203,204,5,111,0,0,204,244,5,114,0,0,205, - 206,5,108,0,0,206,207,5,111,0,0,207,208,5,111,0,0,208,244,5,112,0,0,209, - 210,5,100,0,0,210,244,5,111,0,0,211,212,5,98,0,0,212,213,5,114,0,0,213, - 214,5,101,0,0,214,215,5,97,0,0,215,244,5,107,0,0,216,217,5,99,0,0,217, - 218,5,111,0,0,218,219,5,110,0,0,219,220,5,116,0,0,220,221,5,105,0,0,221, - 222,5,110,0,0,222,223,5,117,0,0,223,244,5,101,0,0,224,225,5,114,0,0,225, - 226,5,101,0,0,226,227,5,116,0,0,227,228,5,117,0,0,228,229,5,114,0,0,229, - 244,5,110,0,0,230,231,5,103,0,0,231,232,5,111,0,0,232,233,5,116,0,0,233, - 244,5,111,0,0,234,235,5,112,0,0,235,236,5,97,0,0,236,237,5,115,0,0,237, - 244,5,115,0,0,238,239,5,121,0,0,239,240,5,105,0,0,240,241,5,101,0,0,241, - 242,5,108,0,0,242,244,5,100,0,0,243,177,1,0,0,0,243,179,1,0,0,0,243,183, - 1,0,0,0,243,187,1,0,0,0,243,193,1,0,0,0,243,197,1,0,0,0,243,202,1,0,0, - 0,243,205,1,0,0,0,243,209,1,0,0,0,243,211,1,0,0,0,243,216,1,0,0,0,243, - 224,1,0,0,0,243,230,1,0,0,0,243,234,1,0,0,0,243,238,1,0,0,0,244,52,1, - 0,0,0,245,246,5,99,0,0,246,247,5,108,0,0,247,248,5,97,0,0,248,249,5,115, - 0,0,249,316,5,115,0,0,250,251,5,115,0,0,251,252,5,116,0,0,252,253,5,114, - 0,0,253,254,5,117,0,0,254,255,5,99,0,0,255,316,5,116,0,0,256,257,5,101, - 0,0,257,258,5,110,0,0,258,259,5,117,0,0,259,316,5,109,0,0,260,261,5,117, - 0,0,261,262,5,110,0,0,262,263,5,105,0,0,263,264,5,111,0,0,264,316,5,110, - 0,0,265,266,5,105,0,0,266,267,5,110,0,0,267,268,5,116,0,0,268,269,5,101, - 0,0,269,270,5,114,0,0,270,271,5,102,0,0,271,272,5,97,0,0,272,273,5,99, - 0,0,273,316,5,101,0,0,274,275,5,110,0,0,275,276,5,97,0,0,276,277,5,109, - 0,0,277,278,5,101,0,0,278,279,5,115,0,0,279,280,5,112,0,0,280,281,5,97, - 0,0,281,282,5,99,0,0,282,316,5,101,0,0,283,284,5,117,0,0,284,285,5,115, - 0,0,285,286,5,105,0,0,286,287,5,110,0,0,287,316,5,103,0,0,288,289,5,116, - 0,0,289,290,5,121,0,0,290,291,5,112,0,0,291,292,5,101,0,0,292,293,5,100, - 0,0,293,294,5,101,0,0,294,316,5,102,0,0,295,296,5,100,0,0,296,297,5,101, - 0,0,297,316,5,102,0,0,298,299,5,102,0,0,299,316,5,110,0,0,300,301,5,108, - 0,0,301,302,5,101,0,0,302,316,5,116,0,0,303,304,5,109,0,0,304,305,5,111, - 0,0,305,306,5,100,0,0,306,307,5,117,0,0,307,308,5,108,0,0,308,316,5,101, - 0,0,309,310,5,105,0,0,310,311,5,109,0,0,311,312,5,112,0,0,312,313,5,111, - 0,0,313,314,5,114,0,0,314,316,5,116,0,0,315,245,1,0,0,0,315,250,1,0,0, - 0,315,256,1,0,0,0,315,260,1,0,0,0,315,265,1,0,0,0,315,274,1,0,0,0,315, - 283,1,0,0,0,315,288,1,0,0,0,315,295,1,0,0,0,315,298,1,0,0,0,315,300,1, - 0,0,0,315,303,1,0,0,0,315,309,1,0,0,0,316,54,1,0,0,0,317,318,5,105,0, - 0,318,319,5,110,0,0,319,451,5,116,0,0,320,321,5,108,0,0,321,322,5,111, - 0,0,322,323,5,110,0,0,323,451,5,103,0,0,324,325,5,115,0,0,325,326,5,104, - 0,0,326,327,5,111,0,0,327,328,5,114,0,0,328,451,5,116,0,0,329,330,5,98, - 0,0,330,331,5,121,0,0,331,332,5,116,0,0,332,451,5,101,0,0,333,334,5,115, - 0,0,334,335,5,105,0,0,335,336,5,103,0,0,336,337,5,110,0,0,337,338,5,101, - 0,0,338,451,5,100,0,0,339,340,5,117,0,0,340,341,5,110,0,0,341,342,5,115, - 0,0,342,343,5,105,0,0,343,344,5,103,0,0,344,345,5,110,0,0,345,346,5,101, - 0,0,346,451,5,100,0,0,347,348,5,99,0,0,348,349,5,104,0,0,349,350,5,97, - 0,0,350,451,5,114,0,0,351,352,5,115,0,0,352,353,5,116,0,0,353,354,5,114, - 0,0,354,355,5,105,0,0,355,356,5,110,0,0,356,451,5,103,0,0,357,358,5,115, - 0,0,358,359,5,116,0,0,359,451,5,114,0,0,360,361,5,118,0,0,361,362,5,111, - 0,0,362,363,5,105,0,0,363,451,5,100,0,0,364,365,5,99,0,0,365,366,5,111, - 0,0,366,367,5,110,0,0,367,368,5,115,0,0,368,451,5,116,0,0,369,370,5,115, - 0,0,370,371,5,116,0,0,371,372,5,97,0,0,372,373,5,116,0,0,373,374,5,105, - 0,0,374,451,5,99,0,0,375,376,5,118,0,0,376,377,5,111,0,0,377,378,5,108, - 0,0,378,379,5,97,0,0,379,380,5,116,0,0,380,381,5,105,0,0,381,382,5,108, - 0,0,382,451,5,101,0,0,383,384,5,114,0,0,384,385,5,101,0,0,385,386,5,103, - 0,0,386,387,5,105,0,0,387,388,5,115,0,0,388,389,5,116,0,0,389,390,5,101, - 0,0,390,451,5,114,0,0,391,392,5,102,0,0,392,393,5,105,0,0,393,394,5,110, - 0,0,394,395,5,97,0,0,395,451,5,108,0,0,396,397,5,97,0,0,397,398,5,98, - 0,0,398,399,5,115,0,0,399,400,5,116,0,0,400,401,5,114,0,0,401,402,5,97, - 0,0,402,403,5,99,0,0,403,451,5,116,0,0,404,405,5,116,0,0,405,406,5,104, - 0,0,406,407,5,105,0,0,407,451,5,115,0,0,408,409,5,115,0,0,409,410,5,101, - 0,0,410,411,5,108,0,0,411,451,5,102,0,0,412,413,5,110,0,0,413,414,5,101, - 0,0,414,451,5,119,0,0,415,416,5,100,0,0,416,417,5,101,0,0,417,418,5,108, - 0,0,418,419,5,101,0,0,419,420,5,116,0,0,420,451,5,101,0,0,421,422,5,110, - 0,0,422,423,5,117,0,0,423,424,5,108,0,0,424,451,5,108,0,0,425,426,5,110, - 0,0,426,427,5,117,0,0,427,428,5,108,0,0,428,429,5,108,0,0,429,430,5,112, - 0,0,430,431,5,116,0,0,431,451,5,114,0,0,432,433,5,116,0,0,433,434,5,114, - 0,0,434,435,5,117,0,0,435,451,5,101,0,0,436,437,5,102,0,0,437,438,5,97, - 0,0,438,439,5,108,0,0,439,440,5,115,0,0,440,451,5,101,0,0,441,442,5,84, - 0,0,442,443,5,114,0,0,443,444,5,117,0,0,444,451,5,101,0,0,445,446,5,70, - 0,0,446,447,5,97,0,0,447,448,5,108,0,0,448,449,5,115,0,0,449,451,5,101, - 0,0,450,317,1,0,0,0,450,320,1,0,0,0,450,324,1,0,0,0,450,329,1,0,0,0,450, - 333,1,0,0,0,450,339,1,0,0,0,450,347,1,0,0,0,450,351,1,0,0,0,450,357,1, - 0,0,0,450,360,1,0,0,0,450,364,1,0,0,0,450,369,1,0,0,0,450,375,1,0,0,0, - 450,383,1,0,0,0,450,391,1,0,0,0,450,396,1,0,0,0,450,404,1,0,0,0,450,408, - 1,0,0,0,450,412,1,0,0,0,450,415,1,0,0,0,450,421,1,0,0,0,450,425,1,0,0, - 0,450,432,1,0,0,0,450,436,1,0,0,0,450,441,1,0,0,0,450,445,1,0,0,0,451, - 56,1,0,0,0,452,453,5,116,0,0,453,454,5,114,0,0,454,496,5,121,0,0,455, - 456,5,99,0,0,456,457,5,97,0,0,457,458,5,116,0,0,458,459,5,99,0,0,459, - 496,5,104,0,0,460,461,5,116,0,0,461,462,5,104,0,0,462,463,5,114,0,0,463, - 464,5,111,0,0,464,496,5,119,0,0,465,466,5,116,0,0,466,467,5,104,0,0,467, - 468,5,114,0,0,468,469,5,111,0,0,469,470,5,119,0,0,470,496,5,115,0,0,471, - 472,5,114,0,0,472,473,5,97,0,0,473,474,5,105,0,0,474,475,5,115,0,0,475, - 496,5,101,0,0,476,477,5,102,0,0,477,478,5,105,0,0,478,479,5,110,0,0,479, - 480,5,97,0,0,480,481,5,108,0,0,481,482,5,108,0,0,482,496,5,121,0,0,483, - 484,5,97,0,0,484,485,5,115,0,0,485,486,5,115,0,0,486,487,5,101,0,0,487, - 488,5,114,0,0,488,496,5,116,0,0,489,490,5,101,0,0,490,491,5,120,0,0,491, - 492,5,99,0,0,492,493,5,101,0,0,493,494,5,112,0,0,494,496,5,116,0,0,495, - 452,1,0,0,0,495,455,1,0,0,0,495,460,1,0,0,0,495,465,1,0,0,0,495,471,1, - 0,0,0,495,476,1,0,0,0,495,483,1,0,0,0,495,489,1,0,0,0,496,58,1,0,0,0, - 497,498,5,112,0,0,498,499,5,117,0,0,499,500,5,98,0,0,500,501,5,108,0, - 0,501,502,5,105,0,0,502,534,5,99,0,0,503,504,5,112,0,0,504,505,5,114, - 0,0,505,506,5,105,0,0,506,507,5,118,0,0,507,508,5,97,0,0,508,509,5,116, - 0,0,509,534,5,101,0,0,510,511,5,112,0,0,511,512,5,114,0,0,512,513,5,111, - 0,0,513,514,5,116,0,0,514,515,5,101,0,0,515,516,5,99,0,0,516,517,5,116, - 0,0,517,518,5,101,0,0,518,534,5,100,0,0,519,520,5,105,0,0,520,521,5,110, - 0,0,521,522,5,116,0,0,522,523,5,101,0,0,523,524,5,114,0,0,524,525,5,110, - 0,0,525,526,5,97,0,0,526,534,5,108,0,0,527,528,5,102,0,0,528,529,5,114, - 0,0,529,530,5,105,0,0,530,531,5,101,0,0,531,532,5,110,0,0,532,534,5,100, - 0,0,533,497,1,0,0,0,533,503,1,0,0,0,533,510,1,0,0,0,533,519,1,0,0,0,533, - 527,1,0,0,0,534,60,1,0,0,0,535,536,5,111,0,0,536,537,5,112,0,0,537,538, - 5,101,0,0,538,539,5,114,0,0,539,540,5,97,0,0,540,541,5,116,0,0,541,542, - 5,111,0,0,542,620,5,114,0,0,543,544,5,105,0,0,544,545,5,110,0,0,545,546, - 5,108,0,0,546,547,5,105,0,0,547,548,5,110,0,0,548,620,5,101,0,0,549,550, - 5,118,0,0,550,551,5,105,0,0,551,552,5,114,0,0,552,553,5,116,0,0,553,554, - 5,117,0,0,554,555,5,97,0,0,555,620,5,108,0,0,556,557,5,111,0,0,557,558, - 5,118,0,0,558,559,5,101,0,0,559,560,5,114,0,0,560,561,5,114,0,0,561,562, - 5,105,0,0,562,563,5,100,0,0,563,620,5,101,0,0,564,565,5,101,0,0,565,566, - 5,120,0,0,566,567,5,116,0,0,567,568,5,101,0,0,568,569,5,114,0,0,569,620, - 5,110,0,0,570,571,5,115,0,0,571,572,5,105,0,0,572,573,5,122,0,0,573,574, - 5,101,0,0,574,575,5,111,0,0,575,620,5,102,0,0,576,577,5,97,0,0,577,578, - 5,119,0,0,578,579,5,97,0,0,579,580,5,105,0,0,580,620,5,116,0,0,581,582, - 5,97,0,0,582,583,5,115,0,0,583,584,5,121,0,0,584,585,5,110,0,0,585,620, - 5,99,0,0,586,587,5,119,0,0,587,588,5,105,0,0,588,589,5,116,0,0,589,620, - 5,104,0,0,590,591,5,103,0,0,591,592,5,108,0,0,592,593,5,111,0,0,593,594, - 5,98,0,0,594,595,5,97,0,0,595,620,5,108,0,0,596,597,5,110,0,0,597,598, - 5,111,0,0,598,599,5,110,0,0,599,600,5,108,0,0,600,601,5,111,0,0,601,602, - 5,99,0,0,602,603,5,97,0,0,603,620,5,108,0,0,604,605,5,97,0,0,605,606, - 5,110,0,0,606,620,5,100,0,0,607,608,5,111,0,0,608,620,5,114,0,0,609,610, - 5,110,0,0,610,611,5,111,0,0,611,620,5,116,0,0,612,613,5,105,0,0,613,620, - 5,110,0,0,614,615,5,105,0,0,615,620,5,115,0,0,616,617,5,100,0,0,617,618, - 5,101,0,0,618,620,5,108,0,0,619,535,1,0,0,0,619,543,1,0,0,0,619,549,1, - 0,0,0,619,556,1,0,0,0,619,564,1,0,0,0,619,570,1,0,0,0,619,576,1,0,0,0, - 619,581,1,0,0,0,619,586,1,0,0,0,619,590,1,0,0,0,619,596,1,0,0,0,619,604, - 1,0,0,0,619,607,1,0,0,0,619,609,1,0,0,0,619,612,1,0,0,0,619,614,1,0,0, - 0,619,616,1,0,0,0,620,62,1,0,0,0,621,625,7,2,0,0,622,624,7,3,0,0,623, - 622,1,0,0,0,624,627,1,0,0,0,625,623,1,0,0,0,625,626,1,0,0,0,626,64,1, - 0,0,0,627,625,1,0,0,0,9,0,172,243,315,450,495,533,619,625,1,6,0,0 + 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,3,30,640,8,30,1,31,1,31,5,31, + 644,8,31,10,31,12,31,647,9,31,0,0,32,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15, + 8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39, + 20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31, + 63,32,1,0,4,3,0,9,10,13,13,32,32,2,0,10,10,13,13,3,0,65,90,95,95,97,122, + 4,0,48,57,65,90,95,95,97,122,730,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0, + 0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1, + 0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0, + 0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0, + 39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1, + 0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0, + 0,0,61,1,0,0,0,0,63,1,0,0,0,1,65,1,0,0,0,3,75,1,0,0,0,5,77,1,0,0,0,7, + 79,1,0,0,0,9,82,1,0,0,0,11,84,1,0,0,0,13,86,1,0,0,0,15,88,1,0,0,0,17, + 91,1,0,0,0,19,93,1,0,0,0,21,95,1,0,0,0,23,102,1,0,0,0,25,107,1,0,0,0, + 27,109,1,0,0,0,29,111,1,0,0,0,31,115,1,0,0,0,33,121,1,0,0,0,35,126,1, + 0,0,0,37,132,1,0,0,0,39,138,1,0,0,0,41,144,1,0,0,0,43,150,1,0,0,0,45, + 157,1,0,0,0,47,162,1,0,0,0,49,166,1,0,0,0,51,243,1,0,0,0,53,331,1,0,0, + 0,55,470,1,0,0,0,57,515,1,0,0,0,59,553,1,0,0,0,61,639,1,0,0,0,63,641, + 1,0,0,0,65,66,5,110,0,0,66,67,5,97,0,0,67,68,5,109,0,0,68,69,5,101,0, + 0,69,70,5,115,0,0,70,71,5,112,0,0,71,72,5,97,0,0,72,73,5,99,0,0,73,74, + 5,101,0,0,74,2,1,0,0,0,75,76,5,123,0,0,76,4,1,0,0,0,77,78,5,125,0,0,78, + 6,1,0,0,0,79,80,5,102,0,0,80,81,5,110,0,0,81,8,1,0,0,0,82,83,5,40,0,0, + 83,10,1,0,0,0,84,85,5,41,0,0,85,12,1,0,0,0,86,87,5,59,0,0,87,14,1,0,0, + 0,88,89,5,45,0,0,89,90,5,62,0,0,90,16,1,0,0,0,91,92,5,58,0,0,92,18,1, + 0,0,0,93,94,5,44,0,0,94,20,1,0,0,0,95,96,5,115,0,0,96,97,5,116,0,0,97, + 98,5,114,0,0,98,99,5,117,0,0,99,100,5,99,0,0,100,101,5,116,0,0,101,22, + 1,0,0,0,102,103,5,76,0,0,103,104,5,105,0,0,104,105,5,115,0,0,105,106, + 5,116,0,0,106,24,1,0,0,0,107,108,5,60,0,0,108,26,1,0,0,0,109,110,5,62, + 0,0,110,28,1,0,0,0,111,112,5,77,0,0,112,113,5,97,0,0,113,114,5,112,0, + 0,114,30,1,0,0,0,115,116,5,84,0,0,116,117,5,117,0,0,117,118,5,112,0,0, + 118,119,5,108,0,0,119,120,5,101,0,0,120,32,1,0,0,0,121,122,5,105,0,0, + 122,123,5,110,0,0,123,124,5,116,0,0,124,125,5,56,0,0,125,34,1,0,0,0,126, + 127,5,105,0,0,127,128,5,110,0,0,128,129,5,116,0,0,129,130,5,49,0,0,130, + 131,5,54,0,0,131,36,1,0,0,0,132,133,5,105,0,0,133,134,5,110,0,0,134,135, + 5,116,0,0,135,136,5,51,0,0,136,137,5,50,0,0,137,38,1,0,0,0,138,139,5, + 105,0,0,139,140,5,110,0,0,140,141,5,116,0,0,141,142,5,54,0,0,142,143, + 5,52,0,0,143,40,1,0,0,0,144,145,5,102,0,0,145,146,5,108,0,0,146,147,5, + 111,0,0,147,148,5,97,0,0,148,149,5,116,0,0,149,42,1,0,0,0,150,151,5,100, + 0,0,151,152,5,111,0,0,152,153,5,117,0,0,153,154,5,98,0,0,154,155,5,108, + 0,0,155,156,5,101,0,0,156,44,1,0,0,0,157,158,5,98,0,0,158,159,5,111,0, + 0,159,160,5,111,0,0,160,161,5,108,0,0,161,46,1,0,0,0,162,163,7,0,0,0, + 163,164,1,0,0,0,164,165,6,23,0,0,165,48,1,0,0,0,166,167,5,47,0,0,167, + 168,5,47,0,0,168,172,1,0,0,0,169,171,8,1,0,0,170,169,1,0,0,0,171,174, + 1,0,0,0,172,170,1,0,0,0,172,173,1,0,0,0,173,175,1,0,0,0,174,172,1,0,0, + 0,175,176,6,24,0,0,176,50,1,0,0,0,177,178,5,105,0,0,178,244,5,102,0,0, + 179,180,5,101,0,0,180,181,5,108,0,0,181,182,5,115,0,0,182,244,5,101,0, + 0,183,184,5,101,0,0,184,185,5,108,0,0,185,186,5,105,0,0,186,244,5,102, + 0,0,187,188,5,115,0,0,188,189,5,119,0,0,189,190,5,105,0,0,190,191,5,116, + 0,0,191,192,5,99,0,0,192,244,5,104,0,0,193,194,5,99,0,0,194,195,5,97, + 0,0,195,196,5,115,0,0,196,244,5,101,0,0,197,198,5,119,0,0,198,199,5,104, + 0,0,199,200,5,105,0,0,200,201,5,108,0,0,201,244,5,101,0,0,202,203,5,102, + 0,0,203,204,5,111,0,0,204,244,5,114,0,0,205,206,5,108,0,0,206,207,5,111, + 0,0,207,208,5,111,0,0,208,244,5,112,0,0,209,210,5,100,0,0,210,244,5,111, + 0,0,211,212,5,98,0,0,212,213,5,114,0,0,213,214,5,101,0,0,214,215,5,97, + 0,0,215,244,5,107,0,0,216,217,5,99,0,0,217,218,5,111,0,0,218,219,5,110, + 0,0,219,220,5,116,0,0,220,221,5,105,0,0,221,222,5,110,0,0,222,223,5,117, + 0,0,223,244,5,101,0,0,224,225,5,114,0,0,225,226,5,101,0,0,226,227,5,116, + 0,0,227,228,5,117,0,0,228,229,5,114,0,0,229,244,5,110,0,0,230,231,5,103, + 0,0,231,232,5,111,0,0,232,233,5,116,0,0,233,244,5,111,0,0,234,235,5,112, + 0,0,235,236,5,97,0,0,236,237,5,115,0,0,237,244,5,115,0,0,238,239,5,121, + 0,0,239,240,5,105,0,0,240,241,5,101,0,0,241,242,5,108,0,0,242,244,5,100, + 0,0,243,177,1,0,0,0,243,179,1,0,0,0,243,183,1,0,0,0,243,187,1,0,0,0,243, + 193,1,0,0,0,243,197,1,0,0,0,243,202,1,0,0,0,243,205,1,0,0,0,243,209,1, + 0,0,0,243,211,1,0,0,0,243,216,1,0,0,0,243,224,1,0,0,0,243,230,1,0,0,0, + 243,234,1,0,0,0,243,238,1,0,0,0,244,52,1,0,0,0,245,246,5,99,0,0,246,247, + 5,108,0,0,247,248,5,97,0,0,248,249,5,115,0,0,249,332,5,115,0,0,250,251, + 5,115,0,0,251,252,5,116,0,0,252,253,5,114,0,0,253,254,5,117,0,0,254,255, + 5,99,0,0,255,332,5,116,0,0,256,257,5,101,0,0,257,258,5,110,0,0,258,259, + 5,117,0,0,259,332,5,109,0,0,260,261,5,117,0,0,261,262,5,110,0,0,262,263, + 5,105,0,0,263,264,5,111,0,0,264,332,5,110,0,0,265,266,5,105,0,0,266,267, + 5,110,0,0,267,268,5,116,0,0,268,269,5,101,0,0,269,270,5,114,0,0,270,271, + 5,102,0,0,271,272,5,97,0,0,272,273,5,99,0,0,273,332,5,101,0,0,274,275, + 5,110,0,0,275,276,5,97,0,0,276,277,5,109,0,0,277,278,5,101,0,0,278,279, + 5,115,0,0,279,280,5,112,0,0,280,281,5,97,0,0,281,282,5,99,0,0,282,332, + 5,101,0,0,283,284,5,117,0,0,284,285,5,115,0,0,285,286,5,105,0,0,286,287, + 5,110,0,0,287,332,5,103,0,0,288,289,5,116,0,0,289,290,5,121,0,0,290,291, + 5,112,0,0,291,292,5,101,0,0,292,293,5,100,0,0,293,294,5,101,0,0,294,332, + 5,102,0,0,295,296,5,100,0,0,296,297,5,101,0,0,297,332,5,102,0,0,298,299, + 5,102,0,0,299,332,5,110,0,0,300,301,5,108,0,0,301,302,5,101,0,0,302,332, + 5,116,0,0,303,304,5,109,0,0,304,305,5,111,0,0,305,306,5,100,0,0,306,307, + 5,117,0,0,307,308,5,108,0,0,308,332,5,101,0,0,309,310,5,105,0,0,310,311, + 5,109,0,0,311,312,5,112,0,0,312,313,5,111,0,0,313,314,5,114,0,0,314,332, + 5,116,0,0,315,316,5,116,0,0,316,317,5,101,0,0,317,318,5,109,0,0,318,319, + 5,112,0,0,319,320,5,108,0,0,320,321,5,97,0,0,321,322,5,116,0,0,322,332, + 5,101,0,0,323,324,5,114,0,0,324,325,5,101,0,0,325,326,5,113,0,0,326,327, + 5,117,0,0,327,328,5,105,0,0,328,329,5,114,0,0,329,330,5,101,0,0,330,332, + 5,115,0,0,331,245,1,0,0,0,331,250,1,0,0,0,331,256,1,0,0,0,331,260,1,0, + 0,0,331,265,1,0,0,0,331,274,1,0,0,0,331,283,1,0,0,0,331,288,1,0,0,0,331, + 295,1,0,0,0,331,298,1,0,0,0,331,300,1,0,0,0,331,303,1,0,0,0,331,309,1, + 0,0,0,331,315,1,0,0,0,331,323,1,0,0,0,332,54,1,0,0,0,333,334,5,105,0, + 0,334,335,5,110,0,0,335,471,5,116,0,0,336,337,5,108,0,0,337,338,5,111, + 0,0,338,339,5,110,0,0,339,471,5,103,0,0,340,341,5,115,0,0,341,342,5,104, + 0,0,342,343,5,111,0,0,343,344,5,114,0,0,344,471,5,116,0,0,345,346,5,98, + 0,0,346,347,5,121,0,0,347,348,5,116,0,0,348,471,5,101,0,0,349,350,5,115, + 0,0,350,351,5,105,0,0,351,352,5,103,0,0,352,353,5,110,0,0,353,354,5,101, + 0,0,354,471,5,100,0,0,355,356,5,117,0,0,356,357,5,110,0,0,357,358,5,115, + 0,0,358,359,5,105,0,0,359,360,5,103,0,0,360,361,5,110,0,0,361,362,5,101, + 0,0,362,471,5,100,0,0,363,364,5,99,0,0,364,365,5,104,0,0,365,366,5,97, + 0,0,366,471,5,114,0,0,367,368,5,115,0,0,368,369,5,116,0,0,369,370,5,114, + 0,0,370,371,5,105,0,0,371,372,5,110,0,0,372,471,5,103,0,0,373,374,5,115, + 0,0,374,375,5,116,0,0,375,471,5,114,0,0,376,377,5,118,0,0,377,378,5,111, + 0,0,378,379,5,105,0,0,379,471,5,100,0,0,380,381,5,99,0,0,381,382,5,111, + 0,0,382,383,5,110,0,0,383,384,5,115,0,0,384,471,5,116,0,0,385,386,5,115, + 0,0,386,387,5,116,0,0,387,388,5,97,0,0,388,389,5,116,0,0,389,390,5,105, + 0,0,390,471,5,99,0,0,391,392,5,97,0,0,392,393,5,117,0,0,393,394,5,116, + 0,0,394,471,5,111,0,0,395,396,5,118,0,0,396,397,5,111,0,0,397,398,5,108, + 0,0,398,399,5,97,0,0,399,400,5,116,0,0,400,401,5,105,0,0,401,402,5,108, + 0,0,402,471,5,101,0,0,403,404,5,114,0,0,404,405,5,101,0,0,405,406,5,103, + 0,0,406,407,5,105,0,0,407,408,5,115,0,0,408,409,5,116,0,0,409,410,5,101, + 0,0,410,471,5,114,0,0,411,412,5,102,0,0,412,413,5,105,0,0,413,414,5,110, + 0,0,414,415,5,97,0,0,415,471,5,108,0,0,416,417,5,97,0,0,417,418,5,98, + 0,0,418,419,5,115,0,0,419,420,5,116,0,0,420,421,5,114,0,0,421,422,5,97, + 0,0,422,423,5,99,0,0,423,471,5,116,0,0,424,425,5,116,0,0,425,426,5,104, + 0,0,426,427,5,105,0,0,427,471,5,115,0,0,428,429,5,115,0,0,429,430,5,101, + 0,0,430,431,5,108,0,0,431,471,5,102,0,0,432,433,5,110,0,0,433,434,5,101, + 0,0,434,471,5,119,0,0,435,436,5,100,0,0,436,437,5,101,0,0,437,438,5,108, + 0,0,438,439,5,101,0,0,439,440,5,116,0,0,440,471,5,101,0,0,441,442,5,110, + 0,0,442,443,5,117,0,0,443,444,5,108,0,0,444,471,5,108,0,0,445,446,5,110, + 0,0,446,447,5,117,0,0,447,448,5,108,0,0,448,449,5,108,0,0,449,450,5,112, + 0,0,450,451,5,116,0,0,451,471,5,114,0,0,452,453,5,116,0,0,453,454,5,114, + 0,0,454,455,5,117,0,0,455,471,5,101,0,0,456,457,5,102,0,0,457,458,5,97, + 0,0,458,459,5,108,0,0,459,460,5,115,0,0,460,471,5,101,0,0,461,462,5,84, + 0,0,462,463,5,114,0,0,463,464,5,117,0,0,464,471,5,101,0,0,465,466,5,70, + 0,0,466,467,5,97,0,0,467,468,5,108,0,0,468,469,5,115,0,0,469,471,5,101, + 0,0,470,333,1,0,0,0,470,336,1,0,0,0,470,340,1,0,0,0,470,345,1,0,0,0,470, + 349,1,0,0,0,470,355,1,0,0,0,470,363,1,0,0,0,470,367,1,0,0,0,470,373,1, + 0,0,0,470,376,1,0,0,0,470,380,1,0,0,0,470,385,1,0,0,0,470,391,1,0,0,0, + 470,395,1,0,0,0,470,403,1,0,0,0,470,411,1,0,0,0,470,416,1,0,0,0,470,424, + 1,0,0,0,470,428,1,0,0,0,470,432,1,0,0,0,470,435,1,0,0,0,470,441,1,0,0, + 0,470,445,1,0,0,0,470,452,1,0,0,0,470,456,1,0,0,0,470,461,1,0,0,0,470, + 465,1,0,0,0,471,56,1,0,0,0,472,473,5,116,0,0,473,474,5,114,0,0,474,516, + 5,121,0,0,475,476,5,99,0,0,476,477,5,97,0,0,477,478,5,116,0,0,478,479, + 5,99,0,0,479,516,5,104,0,0,480,481,5,116,0,0,481,482,5,104,0,0,482,483, + 5,114,0,0,483,484,5,111,0,0,484,516,5,119,0,0,485,486,5,116,0,0,486,487, + 5,104,0,0,487,488,5,114,0,0,488,489,5,111,0,0,489,490,5,119,0,0,490,516, + 5,115,0,0,491,492,5,114,0,0,492,493,5,97,0,0,493,494,5,105,0,0,494,495, + 5,115,0,0,495,516,5,101,0,0,496,497,5,102,0,0,497,498,5,105,0,0,498,499, + 5,110,0,0,499,500,5,97,0,0,500,501,5,108,0,0,501,502,5,108,0,0,502,516, + 5,121,0,0,503,504,5,97,0,0,504,505,5,115,0,0,505,506,5,115,0,0,506,507, + 5,101,0,0,507,508,5,114,0,0,508,516,5,116,0,0,509,510,5,101,0,0,510,511, + 5,120,0,0,511,512,5,99,0,0,512,513,5,101,0,0,513,514,5,112,0,0,514,516, + 5,116,0,0,515,472,1,0,0,0,515,475,1,0,0,0,515,480,1,0,0,0,515,485,1,0, + 0,0,515,491,1,0,0,0,515,496,1,0,0,0,515,503,1,0,0,0,515,509,1,0,0,0,516, + 58,1,0,0,0,517,518,5,112,0,0,518,519,5,117,0,0,519,520,5,98,0,0,520,521, + 5,108,0,0,521,522,5,105,0,0,522,554,5,99,0,0,523,524,5,112,0,0,524,525, + 5,114,0,0,525,526,5,105,0,0,526,527,5,118,0,0,527,528,5,97,0,0,528,529, + 5,116,0,0,529,554,5,101,0,0,530,531,5,112,0,0,531,532,5,114,0,0,532,533, + 5,111,0,0,533,534,5,116,0,0,534,535,5,101,0,0,535,536,5,99,0,0,536,537, + 5,116,0,0,537,538,5,101,0,0,538,554,5,100,0,0,539,540,5,105,0,0,540,541, + 5,110,0,0,541,542,5,116,0,0,542,543,5,101,0,0,543,544,5,114,0,0,544,545, + 5,110,0,0,545,546,5,97,0,0,546,554,5,108,0,0,547,548,5,102,0,0,548,549, + 5,114,0,0,549,550,5,105,0,0,550,551,5,101,0,0,551,552,5,110,0,0,552,554, + 5,100,0,0,553,517,1,0,0,0,553,523,1,0,0,0,553,530,1,0,0,0,553,539,1,0, + 0,0,553,547,1,0,0,0,554,60,1,0,0,0,555,556,5,111,0,0,556,557,5,112,0, + 0,557,558,5,101,0,0,558,559,5,114,0,0,559,560,5,97,0,0,560,561,5,116, + 0,0,561,562,5,111,0,0,562,640,5,114,0,0,563,564,5,105,0,0,564,565,5,110, + 0,0,565,566,5,108,0,0,566,567,5,105,0,0,567,568,5,110,0,0,568,640,5,101, + 0,0,569,570,5,118,0,0,570,571,5,105,0,0,571,572,5,114,0,0,572,573,5,116, + 0,0,573,574,5,117,0,0,574,575,5,97,0,0,575,640,5,108,0,0,576,577,5,111, + 0,0,577,578,5,118,0,0,578,579,5,101,0,0,579,580,5,114,0,0,580,581,5,114, + 0,0,581,582,5,105,0,0,582,583,5,100,0,0,583,640,5,101,0,0,584,585,5,101, + 0,0,585,586,5,120,0,0,586,587,5,116,0,0,587,588,5,101,0,0,588,589,5,114, + 0,0,589,640,5,110,0,0,590,591,5,115,0,0,591,592,5,105,0,0,592,593,5,122, + 0,0,593,594,5,101,0,0,594,595,5,111,0,0,595,640,5,102,0,0,596,597,5,97, + 0,0,597,598,5,119,0,0,598,599,5,97,0,0,599,600,5,105,0,0,600,640,5,116, + 0,0,601,602,5,97,0,0,602,603,5,115,0,0,603,604,5,121,0,0,604,605,5,110, + 0,0,605,640,5,99,0,0,606,607,5,119,0,0,607,608,5,105,0,0,608,609,5,116, + 0,0,609,640,5,104,0,0,610,611,5,103,0,0,611,612,5,108,0,0,612,613,5,111, + 0,0,613,614,5,98,0,0,614,615,5,97,0,0,615,640,5,108,0,0,616,617,5,110, + 0,0,617,618,5,111,0,0,618,619,5,110,0,0,619,620,5,108,0,0,620,621,5,111, + 0,0,621,622,5,99,0,0,622,623,5,97,0,0,623,640,5,108,0,0,624,625,5,97, + 0,0,625,626,5,110,0,0,626,640,5,100,0,0,627,628,5,111,0,0,628,640,5,114, + 0,0,629,630,5,110,0,0,630,631,5,111,0,0,631,640,5,116,0,0,632,633,5,105, + 0,0,633,640,5,110,0,0,634,635,5,105,0,0,635,640,5,115,0,0,636,637,5,100, + 0,0,637,638,5,101,0,0,638,640,5,108,0,0,639,555,1,0,0,0,639,563,1,0,0, + 0,639,569,1,0,0,0,639,576,1,0,0,0,639,584,1,0,0,0,639,590,1,0,0,0,639, + 596,1,0,0,0,639,601,1,0,0,0,639,606,1,0,0,0,639,610,1,0,0,0,639,616,1, + 0,0,0,639,624,1,0,0,0,639,627,1,0,0,0,639,629,1,0,0,0,639,632,1,0,0,0, + 639,634,1,0,0,0,639,636,1,0,0,0,640,62,1,0,0,0,641,645,7,2,0,0,642,644, + 7,3,0,0,643,642,1,0,0,0,644,647,1,0,0,0,645,643,1,0,0,0,645,646,1,0,0, + 0,646,64,1,0,0,0,647,645,1,0,0,0,9,0,172,243,331,470,515,553,639,645, + 1,6,0,0 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); From d062d91a59dbd3c714be93498d0219e3289c69d9 Mon Sep 17 00:00:00 2001 From: sitaowang1998 Date: Mon, 25 Aug 2025 23:15:48 -0400 Subject: [PATCH 7/8] Addd more keyworks --- src/spider/tdl/parser/TaskDefLang.g4 | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/spider/tdl/parser/TaskDefLang.g4 b/src/spider/tdl/parser/TaskDefLang.g4 index 31ccbc47..5ef8bf55 100644 --- a/src/spider/tdl/parser/TaskDefLang.g4 +++ b/src/spider/tdl/parser/TaskDefLang.g4 @@ -287,6 +287,8 @@ RESERVED_CONTROL_FLOW_WORDS | 'elif' | 'switch' | 'case' +| 'default' +| 'match' | 'while' | 'for' | 'loop' @@ -308,13 +310,16 @@ RESERVED_DEF_WORDS | 'namespace' | 'using' | 'typedef' +| 'decltype' | 'def' +| 'dataclass' | 'fn' | 'let' | 'module' | 'import' | 'template' | 'requires' +| 'concept' ; RESERVED_TYPE_AND_STORAGE_WORDS @@ -327,6 +332,9 @@ RESERVED_TYPE_AND_STORAGE_WORDS | 'char' | 'string' | 'str' +| 'float' +| 'double' +| 'bool' | 'void' | 'const' | 'static' @@ -341,6 +349,7 @@ RESERVED_TYPE_AND_STORAGE_WORDS | 'delete' | 'null' | 'nullptr' +| 'None' | 'true' | 'false' | 'True' @@ -384,6 +393,12 @@ RESERVED_OTHER_WORDS | 'in' | 'is' | 'del' +| 'lambda' +| 'from' +| 'as' +| 'constexpr' +| 'nodiscard' +| 'noexcept' ; // ID must be defined after RESERVED_* so that the reserved words get higher precedence. From 3d6c535dc08a8a4e86ac44db1cef4ede7688b439 Mon Sep 17 00:00:00 2001 From: sitaowang1998 Date: Mon, 25 Aug 2025 23:18:22 -0400 Subject: [PATCH 8/8] Update generated files --- .../antlr_generated/TaskDefLangLexer.cpp | 411 ++++++++++-------- 1 file changed, 222 insertions(+), 189 deletions(-) diff --git a/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp b/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp index 43fdb6a3..fe7fa2c3 100644 --- a/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp +++ b/src/spider/tdl/parser/antlr_generated/TaskDefLangLexer.cpp @@ -96,7 +96,7 @@ void taskdeflanglexerLexerInitialize() { } ); static const int32_t serializedATNSegment[] = { - 4,0,32,648,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, + 4,0,32,741,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, 6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14, 7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21, 7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28, @@ -112,14 +112,18 @@ void taskdeflanglexerLexerInitialize() { 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, - 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,3,25, - 244,8,25,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, + 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, + 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,3,25,256,8,25, + 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, - 1,26,1,26,1,26,1,26,3,26,332,8,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27, + 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26, + 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,3,26,368, + 8,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, + 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, @@ -129,200 +133,229 @@ void taskdeflanglexerLexerInitialize() { 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, - 1,27,1,27,1,27,1,27,3,27,471,8,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28, + 1,27,1,27,1,27,3,27,526,8,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28, 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28, 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28, - 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,516,8,28,1,29,1,29,1,29, + 1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,571,8,28,1,29,1,29,1,29,1,29, 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29, 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29, - 1,29,1,29,1,29,1,29,1,29,3,29,554,8,29,1,30,1,30,1,30,1,30,1,30,1,30, + 1,29,1,29,1,29,1,29,3,29,609,8,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30, + 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, + 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, + 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, - 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,3,30,640,8,30,1,31,1,31,5,31, - 644,8,31,10,31,12,31,647,9,31,0,0,32,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15, - 8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39, - 20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31, - 63,32,1,0,4,3,0,9,10,13,13,32,32,2,0,10,10,13,13,3,0,65,90,95,95,97,122, - 4,0,48,57,65,90,95,95,97,122,730,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0, - 0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1, - 0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0, - 0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0, - 39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1, - 0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0, - 0,0,61,1,0,0,0,0,63,1,0,0,0,1,65,1,0,0,0,3,75,1,0,0,0,5,77,1,0,0,0,7, - 79,1,0,0,0,9,82,1,0,0,0,11,84,1,0,0,0,13,86,1,0,0,0,15,88,1,0,0,0,17, - 91,1,0,0,0,19,93,1,0,0,0,21,95,1,0,0,0,23,102,1,0,0,0,25,107,1,0,0,0, - 27,109,1,0,0,0,29,111,1,0,0,0,31,115,1,0,0,0,33,121,1,0,0,0,35,126,1, - 0,0,0,37,132,1,0,0,0,39,138,1,0,0,0,41,144,1,0,0,0,43,150,1,0,0,0,45, - 157,1,0,0,0,47,162,1,0,0,0,49,166,1,0,0,0,51,243,1,0,0,0,53,331,1,0,0, - 0,55,470,1,0,0,0,57,515,1,0,0,0,59,553,1,0,0,0,61,639,1,0,0,0,63,641, - 1,0,0,0,65,66,5,110,0,0,66,67,5,97,0,0,67,68,5,109,0,0,68,69,5,101,0, - 0,69,70,5,115,0,0,70,71,5,112,0,0,71,72,5,97,0,0,72,73,5,99,0,0,73,74, - 5,101,0,0,74,2,1,0,0,0,75,76,5,123,0,0,76,4,1,0,0,0,77,78,5,125,0,0,78, - 6,1,0,0,0,79,80,5,102,0,0,80,81,5,110,0,0,81,8,1,0,0,0,82,83,5,40,0,0, - 83,10,1,0,0,0,84,85,5,41,0,0,85,12,1,0,0,0,86,87,5,59,0,0,87,14,1,0,0, - 0,88,89,5,45,0,0,89,90,5,62,0,0,90,16,1,0,0,0,91,92,5,58,0,0,92,18,1, - 0,0,0,93,94,5,44,0,0,94,20,1,0,0,0,95,96,5,115,0,0,96,97,5,116,0,0,97, - 98,5,114,0,0,98,99,5,117,0,0,99,100,5,99,0,0,100,101,5,116,0,0,101,22, - 1,0,0,0,102,103,5,76,0,0,103,104,5,105,0,0,104,105,5,115,0,0,105,106, - 5,116,0,0,106,24,1,0,0,0,107,108,5,60,0,0,108,26,1,0,0,0,109,110,5,62, - 0,0,110,28,1,0,0,0,111,112,5,77,0,0,112,113,5,97,0,0,113,114,5,112,0, - 0,114,30,1,0,0,0,115,116,5,84,0,0,116,117,5,117,0,0,117,118,5,112,0,0, - 118,119,5,108,0,0,119,120,5,101,0,0,120,32,1,0,0,0,121,122,5,105,0,0, - 122,123,5,110,0,0,123,124,5,116,0,0,124,125,5,56,0,0,125,34,1,0,0,0,126, - 127,5,105,0,0,127,128,5,110,0,0,128,129,5,116,0,0,129,130,5,49,0,0,130, - 131,5,54,0,0,131,36,1,0,0,0,132,133,5,105,0,0,133,134,5,110,0,0,134,135, - 5,116,0,0,135,136,5,51,0,0,136,137,5,50,0,0,137,38,1,0,0,0,138,139,5, - 105,0,0,139,140,5,110,0,0,140,141,5,116,0,0,141,142,5,54,0,0,142,143, - 5,52,0,0,143,40,1,0,0,0,144,145,5,102,0,0,145,146,5,108,0,0,146,147,5, - 111,0,0,147,148,5,97,0,0,148,149,5,116,0,0,149,42,1,0,0,0,150,151,5,100, - 0,0,151,152,5,111,0,0,152,153,5,117,0,0,153,154,5,98,0,0,154,155,5,108, - 0,0,155,156,5,101,0,0,156,44,1,0,0,0,157,158,5,98,0,0,158,159,5,111,0, - 0,159,160,5,111,0,0,160,161,5,108,0,0,161,46,1,0,0,0,162,163,7,0,0,0, - 163,164,1,0,0,0,164,165,6,23,0,0,165,48,1,0,0,0,166,167,5,47,0,0,167, - 168,5,47,0,0,168,172,1,0,0,0,169,171,8,1,0,0,170,169,1,0,0,0,171,174, - 1,0,0,0,172,170,1,0,0,0,172,173,1,0,0,0,173,175,1,0,0,0,174,172,1,0,0, - 0,175,176,6,24,0,0,176,50,1,0,0,0,177,178,5,105,0,0,178,244,5,102,0,0, - 179,180,5,101,0,0,180,181,5,108,0,0,181,182,5,115,0,0,182,244,5,101,0, - 0,183,184,5,101,0,0,184,185,5,108,0,0,185,186,5,105,0,0,186,244,5,102, - 0,0,187,188,5,115,0,0,188,189,5,119,0,0,189,190,5,105,0,0,190,191,5,116, - 0,0,191,192,5,99,0,0,192,244,5,104,0,0,193,194,5,99,0,0,194,195,5,97, - 0,0,195,196,5,115,0,0,196,244,5,101,0,0,197,198,5,119,0,0,198,199,5,104, - 0,0,199,200,5,105,0,0,200,201,5,108,0,0,201,244,5,101,0,0,202,203,5,102, - 0,0,203,204,5,111,0,0,204,244,5,114,0,0,205,206,5,108,0,0,206,207,5,111, - 0,0,207,208,5,111,0,0,208,244,5,112,0,0,209,210,5,100,0,0,210,244,5,111, - 0,0,211,212,5,98,0,0,212,213,5,114,0,0,213,214,5,101,0,0,214,215,5,97, - 0,0,215,244,5,107,0,0,216,217,5,99,0,0,217,218,5,111,0,0,218,219,5,110, - 0,0,219,220,5,116,0,0,220,221,5,105,0,0,221,222,5,110,0,0,222,223,5,117, - 0,0,223,244,5,101,0,0,224,225,5,114,0,0,225,226,5,101,0,0,226,227,5,116, - 0,0,227,228,5,117,0,0,228,229,5,114,0,0,229,244,5,110,0,0,230,231,5,103, - 0,0,231,232,5,111,0,0,232,233,5,116,0,0,233,244,5,111,0,0,234,235,5,112, - 0,0,235,236,5,97,0,0,236,237,5,115,0,0,237,244,5,115,0,0,238,239,5,121, - 0,0,239,240,5,105,0,0,240,241,5,101,0,0,241,242,5,108,0,0,242,244,5,100, - 0,0,243,177,1,0,0,0,243,179,1,0,0,0,243,183,1,0,0,0,243,187,1,0,0,0,243, - 193,1,0,0,0,243,197,1,0,0,0,243,202,1,0,0,0,243,205,1,0,0,0,243,209,1, - 0,0,0,243,211,1,0,0,0,243,216,1,0,0,0,243,224,1,0,0,0,243,230,1,0,0,0, - 243,234,1,0,0,0,243,238,1,0,0,0,244,52,1,0,0,0,245,246,5,99,0,0,246,247, - 5,108,0,0,247,248,5,97,0,0,248,249,5,115,0,0,249,332,5,115,0,0,250,251, - 5,115,0,0,251,252,5,116,0,0,252,253,5,114,0,0,253,254,5,117,0,0,254,255, - 5,99,0,0,255,332,5,116,0,0,256,257,5,101,0,0,257,258,5,110,0,0,258,259, - 5,117,0,0,259,332,5,109,0,0,260,261,5,117,0,0,261,262,5,110,0,0,262,263, - 5,105,0,0,263,264,5,111,0,0,264,332,5,110,0,0,265,266,5,105,0,0,266,267, - 5,110,0,0,267,268,5,116,0,0,268,269,5,101,0,0,269,270,5,114,0,0,270,271, - 5,102,0,0,271,272,5,97,0,0,272,273,5,99,0,0,273,332,5,101,0,0,274,275, - 5,110,0,0,275,276,5,97,0,0,276,277,5,109,0,0,277,278,5,101,0,0,278,279, - 5,115,0,0,279,280,5,112,0,0,280,281,5,97,0,0,281,282,5,99,0,0,282,332, - 5,101,0,0,283,284,5,117,0,0,284,285,5,115,0,0,285,286,5,105,0,0,286,287, - 5,110,0,0,287,332,5,103,0,0,288,289,5,116,0,0,289,290,5,121,0,0,290,291, - 5,112,0,0,291,292,5,101,0,0,292,293,5,100,0,0,293,294,5,101,0,0,294,332, - 5,102,0,0,295,296,5,100,0,0,296,297,5,101,0,0,297,332,5,102,0,0,298,299, - 5,102,0,0,299,332,5,110,0,0,300,301,5,108,0,0,301,302,5,101,0,0,302,332, - 5,116,0,0,303,304,5,109,0,0,304,305,5,111,0,0,305,306,5,100,0,0,306,307, - 5,117,0,0,307,308,5,108,0,0,308,332,5,101,0,0,309,310,5,105,0,0,310,311, - 5,109,0,0,311,312,5,112,0,0,312,313,5,111,0,0,313,314,5,114,0,0,314,332, - 5,116,0,0,315,316,5,116,0,0,316,317,5,101,0,0,317,318,5,109,0,0,318,319, - 5,112,0,0,319,320,5,108,0,0,320,321,5,97,0,0,321,322,5,116,0,0,322,332, - 5,101,0,0,323,324,5,114,0,0,324,325,5,101,0,0,325,326,5,113,0,0,326,327, - 5,117,0,0,327,328,5,105,0,0,328,329,5,114,0,0,329,330,5,101,0,0,330,332, - 5,115,0,0,331,245,1,0,0,0,331,250,1,0,0,0,331,256,1,0,0,0,331,260,1,0, - 0,0,331,265,1,0,0,0,331,274,1,0,0,0,331,283,1,0,0,0,331,288,1,0,0,0,331, - 295,1,0,0,0,331,298,1,0,0,0,331,300,1,0,0,0,331,303,1,0,0,0,331,309,1, - 0,0,0,331,315,1,0,0,0,331,323,1,0,0,0,332,54,1,0,0,0,333,334,5,105,0, - 0,334,335,5,110,0,0,335,471,5,116,0,0,336,337,5,108,0,0,337,338,5,111, - 0,0,338,339,5,110,0,0,339,471,5,103,0,0,340,341,5,115,0,0,341,342,5,104, - 0,0,342,343,5,111,0,0,343,344,5,114,0,0,344,471,5,116,0,0,345,346,5,98, - 0,0,346,347,5,121,0,0,347,348,5,116,0,0,348,471,5,101,0,0,349,350,5,115, - 0,0,350,351,5,105,0,0,351,352,5,103,0,0,352,353,5,110,0,0,353,354,5,101, - 0,0,354,471,5,100,0,0,355,356,5,117,0,0,356,357,5,110,0,0,357,358,5,115, - 0,0,358,359,5,105,0,0,359,360,5,103,0,0,360,361,5,110,0,0,361,362,5,101, - 0,0,362,471,5,100,0,0,363,364,5,99,0,0,364,365,5,104,0,0,365,366,5,97, - 0,0,366,471,5,114,0,0,367,368,5,115,0,0,368,369,5,116,0,0,369,370,5,114, - 0,0,370,371,5,105,0,0,371,372,5,110,0,0,372,471,5,103,0,0,373,374,5,115, - 0,0,374,375,5,116,0,0,375,471,5,114,0,0,376,377,5,118,0,0,377,378,5,111, - 0,0,378,379,5,105,0,0,379,471,5,100,0,0,380,381,5,99,0,0,381,382,5,111, - 0,0,382,383,5,110,0,0,383,384,5,115,0,0,384,471,5,116,0,0,385,386,5,115, - 0,0,386,387,5,116,0,0,387,388,5,97,0,0,388,389,5,116,0,0,389,390,5,105, - 0,0,390,471,5,99,0,0,391,392,5,97,0,0,392,393,5,117,0,0,393,394,5,116, - 0,0,394,471,5,111,0,0,395,396,5,118,0,0,396,397,5,111,0,0,397,398,5,108, - 0,0,398,399,5,97,0,0,399,400,5,116,0,0,400,401,5,105,0,0,401,402,5,108, - 0,0,402,471,5,101,0,0,403,404,5,114,0,0,404,405,5,101,0,0,405,406,5,103, - 0,0,406,407,5,105,0,0,407,408,5,115,0,0,408,409,5,116,0,0,409,410,5,101, - 0,0,410,471,5,114,0,0,411,412,5,102,0,0,412,413,5,105,0,0,413,414,5,110, - 0,0,414,415,5,97,0,0,415,471,5,108,0,0,416,417,5,97,0,0,417,418,5,98, - 0,0,418,419,5,115,0,0,419,420,5,116,0,0,420,421,5,114,0,0,421,422,5,97, - 0,0,422,423,5,99,0,0,423,471,5,116,0,0,424,425,5,116,0,0,425,426,5,104, - 0,0,426,427,5,105,0,0,427,471,5,115,0,0,428,429,5,115,0,0,429,430,5,101, - 0,0,430,431,5,108,0,0,431,471,5,102,0,0,432,433,5,110,0,0,433,434,5,101, - 0,0,434,471,5,119,0,0,435,436,5,100,0,0,436,437,5,101,0,0,437,438,5,108, - 0,0,438,439,5,101,0,0,439,440,5,116,0,0,440,471,5,101,0,0,441,442,5,110, - 0,0,442,443,5,117,0,0,443,444,5,108,0,0,444,471,5,108,0,0,445,446,5,110, - 0,0,446,447,5,117,0,0,447,448,5,108,0,0,448,449,5,108,0,0,449,450,5,112, - 0,0,450,451,5,116,0,0,451,471,5,114,0,0,452,453,5,116,0,0,453,454,5,114, - 0,0,454,455,5,117,0,0,455,471,5,101,0,0,456,457,5,102,0,0,457,458,5,97, - 0,0,458,459,5,108,0,0,459,460,5,115,0,0,460,471,5,101,0,0,461,462,5,84, - 0,0,462,463,5,114,0,0,463,464,5,117,0,0,464,471,5,101,0,0,465,466,5,70, - 0,0,466,467,5,97,0,0,467,468,5,108,0,0,468,469,5,115,0,0,469,471,5,101, - 0,0,470,333,1,0,0,0,470,336,1,0,0,0,470,340,1,0,0,0,470,345,1,0,0,0,470, - 349,1,0,0,0,470,355,1,0,0,0,470,363,1,0,0,0,470,367,1,0,0,0,470,373,1, - 0,0,0,470,376,1,0,0,0,470,380,1,0,0,0,470,385,1,0,0,0,470,391,1,0,0,0, - 470,395,1,0,0,0,470,403,1,0,0,0,470,411,1,0,0,0,470,416,1,0,0,0,470,424, - 1,0,0,0,470,428,1,0,0,0,470,432,1,0,0,0,470,435,1,0,0,0,470,441,1,0,0, - 0,470,445,1,0,0,0,470,452,1,0,0,0,470,456,1,0,0,0,470,461,1,0,0,0,470, - 465,1,0,0,0,471,56,1,0,0,0,472,473,5,116,0,0,473,474,5,114,0,0,474,516, - 5,121,0,0,475,476,5,99,0,0,476,477,5,97,0,0,477,478,5,116,0,0,478,479, - 5,99,0,0,479,516,5,104,0,0,480,481,5,116,0,0,481,482,5,104,0,0,482,483, - 5,114,0,0,483,484,5,111,0,0,484,516,5,119,0,0,485,486,5,116,0,0,486,487, - 5,104,0,0,487,488,5,114,0,0,488,489,5,111,0,0,489,490,5,119,0,0,490,516, - 5,115,0,0,491,492,5,114,0,0,492,493,5,97,0,0,493,494,5,105,0,0,494,495, - 5,115,0,0,495,516,5,101,0,0,496,497,5,102,0,0,497,498,5,105,0,0,498,499, - 5,110,0,0,499,500,5,97,0,0,500,501,5,108,0,0,501,502,5,108,0,0,502,516, - 5,121,0,0,503,504,5,97,0,0,504,505,5,115,0,0,505,506,5,115,0,0,506,507, - 5,101,0,0,507,508,5,114,0,0,508,516,5,116,0,0,509,510,5,101,0,0,510,511, - 5,120,0,0,511,512,5,99,0,0,512,513,5,101,0,0,513,514,5,112,0,0,514,516, - 5,116,0,0,515,472,1,0,0,0,515,475,1,0,0,0,515,480,1,0,0,0,515,485,1,0, - 0,0,515,491,1,0,0,0,515,496,1,0,0,0,515,503,1,0,0,0,515,509,1,0,0,0,516, - 58,1,0,0,0,517,518,5,112,0,0,518,519,5,117,0,0,519,520,5,98,0,0,520,521, - 5,108,0,0,521,522,5,105,0,0,522,554,5,99,0,0,523,524,5,112,0,0,524,525, - 5,114,0,0,525,526,5,105,0,0,526,527,5,118,0,0,527,528,5,97,0,0,528,529, - 5,116,0,0,529,554,5,101,0,0,530,531,5,112,0,0,531,532,5,114,0,0,532,533, - 5,111,0,0,533,534,5,116,0,0,534,535,5,101,0,0,535,536,5,99,0,0,536,537, - 5,116,0,0,537,538,5,101,0,0,538,554,5,100,0,0,539,540,5,105,0,0,540,541, - 5,110,0,0,541,542,5,116,0,0,542,543,5,101,0,0,543,544,5,114,0,0,544,545, - 5,110,0,0,545,546,5,97,0,0,546,554,5,108,0,0,547,548,5,102,0,0,548,549, - 5,114,0,0,549,550,5,105,0,0,550,551,5,101,0,0,551,552,5,110,0,0,552,554, - 5,100,0,0,553,517,1,0,0,0,553,523,1,0,0,0,553,530,1,0,0,0,553,539,1,0, - 0,0,553,547,1,0,0,0,554,60,1,0,0,0,555,556,5,111,0,0,556,557,5,112,0, - 0,557,558,5,101,0,0,558,559,5,114,0,0,559,560,5,97,0,0,560,561,5,116, - 0,0,561,562,5,111,0,0,562,640,5,114,0,0,563,564,5,105,0,0,564,565,5,110, - 0,0,565,566,5,108,0,0,566,567,5,105,0,0,567,568,5,110,0,0,568,640,5,101, - 0,0,569,570,5,118,0,0,570,571,5,105,0,0,571,572,5,114,0,0,572,573,5,116, - 0,0,573,574,5,117,0,0,574,575,5,97,0,0,575,640,5,108,0,0,576,577,5,111, - 0,0,577,578,5,118,0,0,578,579,5,101,0,0,579,580,5,114,0,0,580,581,5,114, - 0,0,581,582,5,105,0,0,582,583,5,100,0,0,583,640,5,101,0,0,584,585,5,101, - 0,0,585,586,5,120,0,0,586,587,5,116,0,0,587,588,5,101,0,0,588,589,5,114, - 0,0,589,640,5,110,0,0,590,591,5,115,0,0,591,592,5,105,0,0,592,593,5,122, - 0,0,593,594,5,101,0,0,594,595,5,111,0,0,595,640,5,102,0,0,596,597,5,97, - 0,0,597,598,5,119,0,0,598,599,5,97,0,0,599,600,5,105,0,0,600,640,5,116, - 0,0,601,602,5,97,0,0,602,603,5,115,0,0,603,604,5,121,0,0,604,605,5,110, - 0,0,605,640,5,99,0,0,606,607,5,119,0,0,607,608,5,105,0,0,608,609,5,116, - 0,0,609,640,5,104,0,0,610,611,5,103,0,0,611,612,5,108,0,0,612,613,5,111, - 0,0,613,614,5,98,0,0,614,615,5,97,0,0,615,640,5,108,0,0,616,617,5,110, - 0,0,617,618,5,111,0,0,618,619,5,110,0,0,619,620,5,108,0,0,620,621,5,111, - 0,0,621,622,5,99,0,0,622,623,5,97,0,0,623,640,5,108,0,0,624,625,5,97, - 0,0,625,626,5,110,0,0,626,640,5,100,0,0,627,628,5,111,0,0,628,640,5,114, - 0,0,629,630,5,110,0,0,630,631,5,111,0,0,631,640,5,116,0,0,632,633,5,105, - 0,0,633,640,5,110,0,0,634,635,5,105,0,0,635,640,5,115,0,0,636,637,5,100, - 0,0,637,638,5,101,0,0,638,640,5,108,0,0,639,555,1,0,0,0,639,563,1,0,0, - 0,639,569,1,0,0,0,639,576,1,0,0,0,639,584,1,0,0,0,639,590,1,0,0,0,639, - 596,1,0,0,0,639,601,1,0,0,0,639,606,1,0,0,0,639,610,1,0,0,0,639,616,1, - 0,0,0,639,624,1,0,0,0,639,627,1,0,0,0,639,629,1,0,0,0,639,632,1,0,0,0, - 639,634,1,0,0,0,639,636,1,0,0,0,640,62,1,0,0,0,641,645,7,2,0,0,642,644, - 7,3,0,0,643,642,1,0,0,0,644,647,1,0,0,0,645,643,1,0,0,0,645,646,1,0,0, - 0,646,64,1,0,0,0,647,645,1,0,0,0,9,0,172,243,331,470,515,553,639,645, - 1,6,0,0 + 1,30,1,30,1,30,3,30,733,8,30,1,31,1,31,5,31,737,8,31,10,31,12,31,740, + 9,31,0,0,32,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12, + 25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47, + 24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,1,0,4,3,0,9,10,13, + 13,32,32,2,0,10,10,13,13,3,0,65,90,95,95,97,122,4,0,48,57,65,90,95,95, + 97,122,838,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0, + 0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0, + 21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1, + 0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0, + 0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0, + 53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1, + 0,0,0,1,65,1,0,0,0,3,75,1,0,0,0,5,77,1,0,0,0,7,79,1,0,0,0,9,82,1,0,0, + 0,11,84,1,0,0,0,13,86,1,0,0,0,15,88,1,0,0,0,17,91,1,0,0,0,19,93,1,0,0, + 0,21,95,1,0,0,0,23,102,1,0,0,0,25,107,1,0,0,0,27,109,1,0,0,0,29,111,1, + 0,0,0,31,115,1,0,0,0,33,121,1,0,0,0,35,126,1,0,0,0,37,132,1,0,0,0,39, + 138,1,0,0,0,41,144,1,0,0,0,43,150,1,0,0,0,45,157,1,0,0,0,47,162,1,0,0, + 0,49,166,1,0,0,0,51,255,1,0,0,0,53,367,1,0,0,0,55,525,1,0,0,0,57,570, + 1,0,0,0,59,608,1,0,0,0,61,732,1,0,0,0,63,734,1,0,0,0,65,66,5,110,0,0, + 66,67,5,97,0,0,67,68,5,109,0,0,68,69,5,101,0,0,69,70,5,115,0,0,70,71, + 5,112,0,0,71,72,5,97,0,0,72,73,5,99,0,0,73,74,5,101,0,0,74,2,1,0,0,0, + 75,76,5,123,0,0,76,4,1,0,0,0,77,78,5,125,0,0,78,6,1,0,0,0,79,80,5,102, + 0,0,80,81,5,110,0,0,81,8,1,0,0,0,82,83,5,40,0,0,83,10,1,0,0,0,84,85,5, + 41,0,0,85,12,1,0,0,0,86,87,5,59,0,0,87,14,1,0,0,0,88,89,5,45,0,0,89,90, + 5,62,0,0,90,16,1,0,0,0,91,92,5,58,0,0,92,18,1,0,0,0,93,94,5,44,0,0,94, + 20,1,0,0,0,95,96,5,115,0,0,96,97,5,116,0,0,97,98,5,114,0,0,98,99,5,117, + 0,0,99,100,5,99,0,0,100,101,5,116,0,0,101,22,1,0,0,0,102,103,5,76,0,0, + 103,104,5,105,0,0,104,105,5,115,0,0,105,106,5,116,0,0,106,24,1,0,0,0, + 107,108,5,60,0,0,108,26,1,0,0,0,109,110,5,62,0,0,110,28,1,0,0,0,111,112, + 5,77,0,0,112,113,5,97,0,0,113,114,5,112,0,0,114,30,1,0,0,0,115,116,5, + 84,0,0,116,117,5,117,0,0,117,118,5,112,0,0,118,119,5,108,0,0,119,120, + 5,101,0,0,120,32,1,0,0,0,121,122,5,105,0,0,122,123,5,110,0,0,123,124, + 5,116,0,0,124,125,5,56,0,0,125,34,1,0,0,0,126,127,5,105,0,0,127,128,5, + 110,0,0,128,129,5,116,0,0,129,130,5,49,0,0,130,131,5,54,0,0,131,36,1, + 0,0,0,132,133,5,105,0,0,133,134,5,110,0,0,134,135,5,116,0,0,135,136,5, + 51,0,0,136,137,5,50,0,0,137,38,1,0,0,0,138,139,5,105,0,0,139,140,5,110, + 0,0,140,141,5,116,0,0,141,142,5,54,0,0,142,143,5,52,0,0,143,40,1,0,0, + 0,144,145,5,102,0,0,145,146,5,108,0,0,146,147,5,111,0,0,147,148,5,97, + 0,0,148,149,5,116,0,0,149,42,1,0,0,0,150,151,5,100,0,0,151,152,5,111, + 0,0,152,153,5,117,0,0,153,154,5,98,0,0,154,155,5,108,0,0,155,156,5,101, + 0,0,156,44,1,0,0,0,157,158,5,98,0,0,158,159,5,111,0,0,159,160,5,111,0, + 0,160,161,5,108,0,0,161,46,1,0,0,0,162,163,7,0,0,0,163,164,1,0,0,0,164, + 165,6,23,0,0,165,48,1,0,0,0,166,167,5,47,0,0,167,168,5,47,0,0,168,172, + 1,0,0,0,169,171,8,1,0,0,170,169,1,0,0,0,171,174,1,0,0,0,172,170,1,0,0, + 0,172,173,1,0,0,0,173,175,1,0,0,0,174,172,1,0,0,0,175,176,6,24,0,0,176, + 50,1,0,0,0,177,178,5,105,0,0,178,256,5,102,0,0,179,180,5,101,0,0,180, + 181,5,108,0,0,181,182,5,115,0,0,182,256,5,101,0,0,183,184,5,101,0,0,184, + 185,5,108,0,0,185,186,5,105,0,0,186,256,5,102,0,0,187,188,5,115,0,0,188, + 189,5,119,0,0,189,190,5,105,0,0,190,191,5,116,0,0,191,192,5,99,0,0,192, + 256,5,104,0,0,193,194,5,99,0,0,194,195,5,97,0,0,195,196,5,115,0,0,196, + 256,5,101,0,0,197,198,5,100,0,0,198,199,5,101,0,0,199,200,5,102,0,0,200, + 201,5,97,0,0,201,202,5,117,0,0,202,203,5,108,0,0,203,256,5,116,0,0,204, + 205,5,109,0,0,205,206,5,97,0,0,206,207,5,116,0,0,207,208,5,99,0,0,208, + 256,5,104,0,0,209,210,5,119,0,0,210,211,5,104,0,0,211,212,5,105,0,0,212, + 213,5,108,0,0,213,256,5,101,0,0,214,215,5,102,0,0,215,216,5,111,0,0,216, + 256,5,114,0,0,217,218,5,108,0,0,218,219,5,111,0,0,219,220,5,111,0,0,220, + 256,5,112,0,0,221,222,5,100,0,0,222,256,5,111,0,0,223,224,5,98,0,0,224, + 225,5,114,0,0,225,226,5,101,0,0,226,227,5,97,0,0,227,256,5,107,0,0,228, + 229,5,99,0,0,229,230,5,111,0,0,230,231,5,110,0,0,231,232,5,116,0,0,232, + 233,5,105,0,0,233,234,5,110,0,0,234,235,5,117,0,0,235,256,5,101,0,0,236, + 237,5,114,0,0,237,238,5,101,0,0,238,239,5,116,0,0,239,240,5,117,0,0,240, + 241,5,114,0,0,241,256,5,110,0,0,242,243,5,103,0,0,243,244,5,111,0,0,244, + 245,5,116,0,0,245,256,5,111,0,0,246,247,5,112,0,0,247,248,5,97,0,0,248, + 249,5,115,0,0,249,256,5,115,0,0,250,251,5,121,0,0,251,252,5,105,0,0,252, + 253,5,101,0,0,253,254,5,108,0,0,254,256,5,100,0,0,255,177,1,0,0,0,255, + 179,1,0,0,0,255,183,1,0,0,0,255,187,1,0,0,0,255,193,1,0,0,0,255,197,1, + 0,0,0,255,204,1,0,0,0,255,209,1,0,0,0,255,214,1,0,0,0,255,217,1,0,0,0, + 255,221,1,0,0,0,255,223,1,0,0,0,255,228,1,0,0,0,255,236,1,0,0,0,255,242, + 1,0,0,0,255,246,1,0,0,0,255,250,1,0,0,0,256,52,1,0,0,0,257,258,5,99,0, + 0,258,259,5,108,0,0,259,260,5,97,0,0,260,261,5,115,0,0,261,368,5,115, + 0,0,262,263,5,115,0,0,263,264,5,116,0,0,264,265,5,114,0,0,265,266,5,117, + 0,0,266,267,5,99,0,0,267,368,5,116,0,0,268,269,5,101,0,0,269,270,5,110, + 0,0,270,271,5,117,0,0,271,368,5,109,0,0,272,273,5,117,0,0,273,274,5,110, + 0,0,274,275,5,105,0,0,275,276,5,111,0,0,276,368,5,110,0,0,277,278,5,105, + 0,0,278,279,5,110,0,0,279,280,5,116,0,0,280,281,5,101,0,0,281,282,5,114, + 0,0,282,283,5,102,0,0,283,284,5,97,0,0,284,285,5,99,0,0,285,368,5,101, + 0,0,286,287,5,110,0,0,287,288,5,97,0,0,288,289,5,109,0,0,289,290,5,101, + 0,0,290,291,5,115,0,0,291,292,5,112,0,0,292,293,5,97,0,0,293,294,5,99, + 0,0,294,368,5,101,0,0,295,296,5,117,0,0,296,297,5,115,0,0,297,298,5,105, + 0,0,298,299,5,110,0,0,299,368,5,103,0,0,300,301,5,116,0,0,301,302,5,121, + 0,0,302,303,5,112,0,0,303,304,5,101,0,0,304,305,5,100,0,0,305,306,5,101, + 0,0,306,368,5,102,0,0,307,308,5,100,0,0,308,309,5,101,0,0,309,310,5,99, + 0,0,310,311,5,108,0,0,311,312,5,116,0,0,312,313,5,121,0,0,313,314,5,112, + 0,0,314,368,5,101,0,0,315,316,5,100,0,0,316,317,5,101,0,0,317,368,5,102, + 0,0,318,319,5,100,0,0,319,320,5,97,0,0,320,321,5,116,0,0,321,322,5,97, + 0,0,322,323,5,99,0,0,323,324,5,108,0,0,324,325,5,97,0,0,325,326,5,115, + 0,0,326,368,5,115,0,0,327,328,5,102,0,0,328,368,5,110,0,0,329,330,5,108, + 0,0,330,331,5,101,0,0,331,368,5,116,0,0,332,333,5,109,0,0,333,334,5,111, + 0,0,334,335,5,100,0,0,335,336,5,117,0,0,336,337,5,108,0,0,337,368,5,101, + 0,0,338,339,5,105,0,0,339,340,5,109,0,0,340,341,5,112,0,0,341,342,5,111, + 0,0,342,343,5,114,0,0,343,368,5,116,0,0,344,345,5,116,0,0,345,346,5,101, + 0,0,346,347,5,109,0,0,347,348,5,112,0,0,348,349,5,108,0,0,349,350,5,97, + 0,0,350,351,5,116,0,0,351,368,5,101,0,0,352,353,5,114,0,0,353,354,5,101, + 0,0,354,355,5,113,0,0,355,356,5,117,0,0,356,357,5,105,0,0,357,358,5,114, + 0,0,358,359,5,101,0,0,359,368,5,115,0,0,360,361,5,99,0,0,361,362,5,111, + 0,0,362,363,5,110,0,0,363,364,5,99,0,0,364,365,5,101,0,0,365,366,5,112, + 0,0,366,368,5,116,0,0,367,257,1,0,0,0,367,262,1,0,0,0,367,268,1,0,0,0, + 367,272,1,0,0,0,367,277,1,0,0,0,367,286,1,0,0,0,367,295,1,0,0,0,367,300, + 1,0,0,0,367,307,1,0,0,0,367,315,1,0,0,0,367,318,1,0,0,0,367,327,1,0,0, + 0,367,329,1,0,0,0,367,332,1,0,0,0,367,338,1,0,0,0,367,344,1,0,0,0,367, + 352,1,0,0,0,367,360,1,0,0,0,368,54,1,0,0,0,369,370,5,105,0,0,370,371, + 5,110,0,0,371,526,5,116,0,0,372,373,5,108,0,0,373,374,5,111,0,0,374,375, + 5,110,0,0,375,526,5,103,0,0,376,377,5,115,0,0,377,378,5,104,0,0,378,379, + 5,111,0,0,379,380,5,114,0,0,380,526,5,116,0,0,381,382,5,98,0,0,382,383, + 5,121,0,0,383,384,5,116,0,0,384,526,5,101,0,0,385,386,5,115,0,0,386,387, + 5,105,0,0,387,388,5,103,0,0,388,389,5,110,0,0,389,390,5,101,0,0,390,526, + 5,100,0,0,391,392,5,117,0,0,392,393,5,110,0,0,393,394,5,115,0,0,394,395, + 5,105,0,0,395,396,5,103,0,0,396,397,5,110,0,0,397,398,5,101,0,0,398,526, + 5,100,0,0,399,400,5,99,0,0,400,401,5,104,0,0,401,402,5,97,0,0,402,526, + 5,114,0,0,403,404,5,115,0,0,404,405,5,116,0,0,405,406,5,114,0,0,406,407, + 5,105,0,0,407,408,5,110,0,0,408,526,5,103,0,0,409,410,5,115,0,0,410,411, + 5,116,0,0,411,526,5,114,0,0,412,413,5,102,0,0,413,414,5,108,0,0,414,415, + 5,111,0,0,415,416,5,97,0,0,416,526,5,116,0,0,417,418,5,100,0,0,418,419, + 5,111,0,0,419,420,5,117,0,0,420,421,5,98,0,0,421,422,5,108,0,0,422,526, + 5,101,0,0,423,424,5,98,0,0,424,425,5,111,0,0,425,426,5,111,0,0,426,526, + 5,108,0,0,427,428,5,118,0,0,428,429,5,111,0,0,429,430,5,105,0,0,430,526, + 5,100,0,0,431,432,5,99,0,0,432,433,5,111,0,0,433,434,5,110,0,0,434,435, + 5,115,0,0,435,526,5,116,0,0,436,437,5,115,0,0,437,438,5,116,0,0,438,439, + 5,97,0,0,439,440,5,116,0,0,440,441,5,105,0,0,441,526,5,99,0,0,442,443, + 5,97,0,0,443,444,5,117,0,0,444,445,5,116,0,0,445,526,5,111,0,0,446,447, + 5,118,0,0,447,448,5,111,0,0,448,449,5,108,0,0,449,450,5,97,0,0,450,451, + 5,116,0,0,451,452,5,105,0,0,452,453,5,108,0,0,453,526,5,101,0,0,454,455, + 5,114,0,0,455,456,5,101,0,0,456,457,5,103,0,0,457,458,5,105,0,0,458,459, + 5,115,0,0,459,460,5,116,0,0,460,461,5,101,0,0,461,526,5,114,0,0,462,463, + 5,102,0,0,463,464,5,105,0,0,464,465,5,110,0,0,465,466,5,97,0,0,466,526, + 5,108,0,0,467,468,5,97,0,0,468,469,5,98,0,0,469,470,5,115,0,0,470,471, + 5,116,0,0,471,472,5,114,0,0,472,473,5,97,0,0,473,474,5,99,0,0,474,526, + 5,116,0,0,475,476,5,116,0,0,476,477,5,104,0,0,477,478,5,105,0,0,478,526, + 5,115,0,0,479,480,5,115,0,0,480,481,5,101,0,0,481,482,5,108,0,0,482,526, + 5,102,0,0,483,484,5,110,0,0,484,485,5,101,0,0,485,526,5,119,0,0,486,487, + 5,100,0,0,487,488,5,101,0,0,488,489,5,108,0,0,489,490,5,101,0,0,490,491, + 5,116,0,0,491,526,5,101,0,0,492,493,5,110,0,0,493,494,5,117,0,0,494,495, + 5,108,0,0,495,526,5,108,0,0,496,497,5,110,0,0,497,498,5,117,0,0,498,499, + 5,108,0,0,499,500,5,108,0,0,500,501,5,112,0,0,501,502,5,116,0,0,502,526, + 5,114,0,0,503,504,5,78,0,0,504,505,5,111,0,0,505,506,5,110,0,0,506,526, + 5,101,0,0,507,508,5,116,0,0,508,509,5,114,0,0,509,510,5,117,0,0,510,526, + 5,101,0,0,511,512,5,102,0,0,512,513,5,97,0,0,513,514,5,108,0,0,514,515, + 5,115,0,0,515,526,5,101,0,0,516,517,5,84,0,0,517,518,5,114,0,0,518,519, + 5,117,0,0,519,526,5,101,0,0,520,521,5,70,0,0,521,522,5,97,0,0,522,523, + 5,108,0,0,523,524,5,115,0,0,524,526,5,101,0,0,525,369,1,0,0,0,525,372, + 1,0,0,0,525,376,1,0,0,0,525,381,1,0,0,0,525,385,1,0,0,0,525,391,1,0,0, + 0,525,399,1,0,0,0,525,403,1,0,0,0,525,409,1,0,0,0,525,412,1,0,0,0,525, + 417,1,0,0,0,525,423,1,0,0,0,525,427,1,0,0,0,525,431,1,0,0,0,525,436,1, + 0,0,0,525,442,1,0,0,0,525,446,1,0,0,0,525,454,1,0,0,0,525,462,1,0,0,0, + 525,467,1,0,0,0,525,475,1,0,0,0,525,479,1,0,0,0,525,483,1,0,0,0,525,486, + 1,0,0,0,525,492,1,0,0,0,525,496,1,0,0,0,525,503,1,0,0,0,525,507,1,0,0, + 0,525,511,1,0,0,0,525,516,1,0,0,0,525,520,1,0,0,0,526,56,1,0,0,0,527, + 528,5,116,0,0,528,529,5,114,0,0,529,571,5,121,0,0,530,531,5,99,0,0,531, + 532,5,97,0,0,532,533,5,116,0,0,533,534,5,99,0,0,534,571,5,104,0,0,535, + 536,5,116,0,0,536,537,5,104,0,0,537,538,5,114,0,0,538,539,5,111,0,0,539, + 571,5,119,0,0,540,541,5,116,0,0,541,542,5,104,0,0,542,543,5,114,0,0,543, + 544,5,111,0,0,544,545,5,119,0,0,545,571,5,115,0,0,546,547,5,114,0,0,547, + 548,5,97,0,0,548,549,5,105,0,0,549,550,5,115,0,0,550,571,5,101,0,0,551, + 552,5,102,0,0,552,553,5,105,0,0,553,554,5,110,0,0,554,555,5,97,0,0,555, + 556,5,108,0,0,556,557,5,108,0,0,557,571,5,121,0,0,558,559,5,97,0,0,559, + 560,5,115,0,0,560,561,5,115,0,0,561,562,5,101,0,0,562,563,5,114,0,0,563, + 571,5,116,0,0,564,565,5,101,0,0,565,566,5,120,0,0,566,567,5,99,0,0,567, + 568,5,101,0,0,568,569,5,112,0,0,569,571,5,116,0,0,570,527,1,0,0,0,570, + 530,1,0,0,0,570,535,1,0,0,0,570,540,1,0,0,0,570,546,1,0,0,0,570,551,1, + 0,0,0,570,558,1,0,0,0,570,564,1,0,0,0,571,58,1,0,0,0,572,573,5,112,0, + 0,573,574,5,117,0,0,574,575,5,98,0,0,575,576,5,108,0,0,576,577,5,105, + 0,0,577,609,5,99,0,0,578,579,5,112,0,0,579,580,5,114,0,0,580,581,5,105, + 0,0,581,582,5,118,0,0,582,583,5,97,0,0,583,584,5,116,0,0,584,609,5,101, + 0,0,585,586,5,112,0,0,586,587,5,114,0,0,587,588,5,111,0,0,588,589,5,116, + 0,0,589,590,5,101,0,0,590,591,5,99,0,0,591,592,5,116,0,0,592,593,5,101, + 0,0,593,609,5,100,0,0,594,595,5,105,0,0,595,596,5,110,0,0,596,597,5,116, + 0,0,597,598,5,101,0,0,598,599,5,114,0,0,599,600,5,110,0,0,600,601,5,97, + 0,0,601,609,5,108,0,0,602,603,5,102,0,0,603,604,5,114,0,0,604,605,5,105, + 0,0,605,606,5,101,0,0,606,607,5,110,0,0,607,609,5,100,0,0,608,572,1,0, + 0,0,608,578,1,0,0,0,608,585,1,0,0,0,608,594,1,0,0,0,608,602,1,0,0,0,609, + 60,1,0,0,0,610,611,5,111,0,0,611,612,5,112,0,0,612,613,5,101,0,0,613, + 614,5,114,0,0,614,615,5,97,0,0,615,616,5,116,0,0,616,617,5,111,0,0,617, + 733,5,114,0,0,618,619,5,105,0,0,619,620,5,110,0,0,620,621,5,108,0,0,621, + 622,5,105,0,0,622,623,5,110,0,0,623,733,5,101,0,0,624,625,5,118,0,0,625, + 626,5,105,0,0,626,627,5,114,0,0,627,628,5,116,0,0,628,629,5,117,0,0,629, + 630,5,97,0,0,630,733,5,108,0,0,631,632,5,111,0,0,632,633,5,118,0,0,633, + 634,5,101,0,0,634,635,5,114,0,0,635,636,5,114,0,0,636,637,5,105,0,0,637, + 638,5,100,0,0,638,733,5,101,0,0,639,640,5,101,0,0,640,641,5,120,0,0,641, + 642,5,116,0,0,642,643,5,101,0,0,643,644,5,114,0,0,644,733,5,110,0,0,645, + 646,5,115,0,0,646,647,5,105,0,0,647,648,5,122,0,0,648,649,5,101,0,0,649, + 650,5,111,0,0,650,733,5,102,0,0,651,652,5,97,0,0,652,653,5,119,0,0,653, + 654,5,97,0,0,654,655,5,105,0,0,655,733,5,116,0,0,656,657,5,97,0,0,657, + 658,5,115,0,0,658,659,5,121,0,0,659,660,5,110,0,0,660,733,5,99,0,0,661, + 662,5,119,0,0,662,663,5,105,0,0,663,664,5,116,0,0,664,733,5,104,0,0,665, + 666,5,103,0,0,666,667,5,108,0,0,667,668,5,111,0,0,668,669,5,98,0,0,669, + 670,5,97,0,0,670,733,5,108,0,0,671,672,5,110,0,0,672,673,5,111,0,0,673, + 674,5,110,0,0,674,675,5,108,0,0,675,676,5,111,0,0,676,677,5,99,0,0,677, + 678,5,97,0,0,678,733,5,108,0,0,679,680,5,97,0,0,680,681,5,110,0,0,681, + 733,5,100,0,0,682,683,5,111,0,0,683,733,5,114,0,0,684,685,5,110,0,0,685, + 686,5,111,0,0,686,733,5,116,0,0,687,688,5,105,0,0,688,733,5,110,0,0,689, + 690,5,105,0,0,690,733,5,115,0,0,691,692,5,100,0,0,692,693,5,101,0,0,693, + 733,5,108,0,0,694,695,5,108,0,0,695,696,5,97,0,0,696,697,5,109,0,0,697, + 698,5,98,0,0,698,699,5,100,0,0,699,733,5,97,0,0,700,701,5,102,0,0,701, + 702,5,114,0,0,702,703,5,111,0,0,703,733,5,109,0,0,704,705,5,97,0,0,705, + 733,5,115,0,0,706,707,5,99,0,0,707,708,5,111,0,0,708,709,5,110,0,0,709, + 710,5,115,0,0,710,711,5,116,0,0,711,712,5,101,0,0,712,713,5,120,0,0,713, + 714,5,112,0,0,714,733,5,114,0,0,715,716,5,110,0,0,716,717,5,111,0,0,717, + 718,5,100,0,0,718,719,5,105,0,0,719,720,5,115,0,0,720,721,5,99,0,0,721, + 722,5,97,0,0,722,723,5,114,0,0,723,733,5,100,0,0,724,725,5,110,0,0,725, + 726,5,111,0,0,726,727,5,101,0,0,727,728,5,120,0,0,728,729,5,99,0,0,729, + 730,5,101,0,0,730,731,5,112,0,0,731,733,5,116,0,0,732,610,1,0,0,0,732, + 618,1,0,0,0,732,624,1,0,0,0,732,631,1,0,0,0,732,639,1,0,0,0,732,645,1, + 0,0,0,732,651,1,0,0,0,732,656,1,0,0,0,732,661,1,0,0,0,732,665,1,0,0,0, + 732,671,1,0,0,0,732,679,1,0,0,0,732,682,1,0,0,0,732,684,1,0,0,0,732,687, + 1,0,0,0,732,689,1,0,0,0,732,691,1,0,0,0,732,694,1,0,0,0,732,700,1,0,0, + 0,732,704,1,0,0,0,732,706,1,0,0,0,732,715,1,0,0,0,732,724,1,0,0,0,733, + 62,1,0,0,0,734,738,7,2,0,0,735,737,7,3,0,0,736,735,1,0,0,0,737,740,1, + 0,0,0,738,736,1,0,0,0,738,739,1,0,0,0,739,64,1,0,0,0,740,738,1,0,0,0, + 9,0,172,255,367,525,570,608,732,738,1,6,0,0 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0]));