From 359df19713f854ff2e95bd20b0aef72af88f544b Mon Sep 17 00:00:00 2001 From: parsons Date: Mon, 27 Jul 2009 14:50:25 +0000 Subject: ChangeLogTag: Mon Jul 27 14:46:05 UTC 2009 Jeff Parsons --- modules/TAO/ChangeLog | 31 +- modules/TAO/TAO_IDL/ast/ast_extended_port.cpp | 4 +- modules/TAO/TAO_IDL/fe/fe_utils.cpp | 46 +- modules/TAO/TAO_IDL/fe/idl.yy | 193 +++- modules/TAO/TAO_IDL/fe/y.tab.cpp | 1222 +++++++++++++---------- modules/TAO/TAO_IDL/fe/y.tab.h | 1 + modules/TAO/TAO_IDL/include/ast_component.h | 4 +- modules/TAO/TAO_IDL/include/ast_extended_port.h | 2 +- modules/TAO/TAO_IDL/include/fe_utils.h | 29 +- modules/TAO/TAO_IDL/include/idl_global.h | 1 + modules/TAO/TAO_IDL/include/utl_err.h | 1 + modules/TAO/TAO_IDL/include/utl_scope.h | 6 + modules/TAO/TAO_IDL/util/utl_err.cpp | 4 + modules/TAO/TAO_IDL/util/utl_scope.cpp | 28 +- 14 files changed, 980 insertions(+), 592 deletions(-) diff --git a/modules/TAO/ChangeLog b/modules/TAO/ChangeLog index 5e48bd2b82d..eedb948419a 100644 --- a/modules/TAO/ChangeLog +++ b/modules/TAO/ChangeLog @@ -1,16 +1,39 @@ +Mon Jul 27 14:46:05 UTC 2009 Jeff Parsons + + * TAO_IDL/ast/ast_extended_port.cpp: + * TAO_IDL/fe/fe_utils.cpp: + * TAO_IDL/fe/idl.yy: + * TAO_IDL/fe/y.tab.h: + * TAO_IDL/fe/y.tab.cpp: + * TAO_IDL/include/ast_component.h: + * TAO_IDL/include/ast_extended_port.h: + * TAO_IDL/include/fe_utils.h: + * TAO_IDL/include/idl_global.h: + * TAO_IDL/include/utl_err.h: + * TAO_IDL/include/utl_scope.h: + * TAO_IDL/util/utl_err.cpp: + * TAO_IDL/util/utl_scope.cpp: + + - Added production rules and semantic actions for extended + ports and mirror ports, as they appear in a component + (the connector versions, since connectors may be + parameterized, will be slightly different). + + - Removed spaces in blank lines in several files. + Fri Jul 24 19:08:55 UTC 2009 Jeff Parsons * TAO_IDL/ast/ast_mirror_port.cpp: * TAO_IDL/include/ast_mirror_port.h: * TAO_IDL/be/be_mirror_port.cpp: * TAO_IDL/be_include/be_mirror_port.h: - + New files, defining a mirror port, which is found in a component, and is an instantiation of a porttype declaration, similar to an extended port, but with all the 'uses' and 'provides' keywords interchanged. - + * TAO_IDL/ast/ast_redef.cpp: * TAO_IDL/ast/ast_component.cpp: * TAO_IDL/ast/ast_generator.cpp: @@ -28,7 +51,7 @@ Fri Jul 24 19:08:55 UTC 2009 Jeff Parsons Fri Jul 24 17:49:30 UTC 2009 Jeff Parsons - * TAO_IDL/ast/ast_consumes.cpp: + * TAO_IDL/ast/ast_extended_port.cpp: * TAO_IDL/include/ast_extended_port.h: * TAO_IDL/be/be_extended_port.cpp: * TAO_IDL/be_include/be_extended_port.h: @@ -37,7 +60,7 @@ Fri Jul 24 17:49:30 UTC 2009 Jeff Parsons is found in a component, and is an instantiation of a porttype declaration. - * TAO_IDL/ast/ast_extended_port.cpp: + * TAO_IDL/ast/ast_consumes.cpp: * TAO_IDL/ast/ast_porttype.cpp: * TAO_IDL/ast/ast_redef.cpp: * TAO_IDL/be/be_porttype.cpp: diff --git a/modules/TAO/TAO_IDL/ast/ast_extended_port.cpp b/modules/TAO/TAO_IDL/ast/ast_extended_port.cpp index 003d9a7e6ed..3f48634400b 100644 --- a/modules/TAO/TAO_IDL/ast/ast_extended_port.cpp +++ b/modules/TAO/TAO_IDL/ast/ast_extended_port.cpp @@ -53,7 +53,7 @@ AST_Extended_Port::destroy (void) delete this->template_args_; this->template_args_ = 0; } - + this->AST_Field::destroy (); } @@ -63,7 +63,7 @@ AST_Extended_Port::dump (ACE_OSTREAM_TYPE &o) this->dump_i (o, "port "); this->local_name ()->dump (o); - + // TODO - template args } diff --git a/modules/TAO/TAO_IDL/fe/fe_utils.cpp b/modules/TAO/TAO_IDL/fe/fe_utils.cpp index e25bc64ce02..ebd338096b3 100644 --- a/modules/TAO/TAO_IDL/fe/fe_utils.cpp +++ b/modules/TAO/TAO_IDL/fe/fe_utils.cpp @@ -4,6 +4,7 @@ #include "utl_scoped_name.h" #include "utl_strlist.h" +#include "utl_namelist.h" #include "utl_identifier.h" FE_Utils::T_Ref_Info::T_Ref_Info (void) @@ -36,41 +37,20 @@ FE_Utils::T_Ref_Info::destroy (void) params_ = 0; } } - -FE_Utils::Ext_Port_Description::Ext_Port_Description (void) - : port_kind_ (PROVIDES), - port_name_ (0), - obj_ref_ (0), - is_multiple_ (false) -{ -} - -FE_Utils::Ext_Port_Description::Ext_Port_Description ( - Port_Kind port_kind, - Identifier *port_name, - T_Ref_Info *obj_ref, - bool is_multiple) - : port_kind_ (port_kind), - port_name_ (port_name), - obj_ref_ (obj_ref), - is_multiple_ (is_multiple) + +FE_Utils::T_Inst_Info::T_Inst_Info (UTL_ScopedName *n, + UTL_NameList *args) + : name_ (n), + args_ (args) { } void -FE_Utils::Ext_Port_Description::destroy (void) +FE_Utils::T_Inst_Info::destroy (void) { - if (port_name_ != 0) - { - port_name_->destroy (); - delete port_name_; - port_name_ = 0; - } - - if (obj_ref_ != 0) - { - obj_ref_->destroy (); - delete obj_ref_; - obj_ref_ = 0; - } -} + // The template args are owned by the AST type. + + this->name_->destroy (); + delete this->name_; + this->name_ = 0; +} \ No newline at end of file diff --git a/modules/TAO/TAO_IDL/fe/idl.yy b/modules/TAO/TAO_IDL/fe/idl.yy index 21a7b86d37f..dc41f94e0a9 100644 --- a/modules/TAO/TAO_IDL/fe/idl.yy +++ b/modules/TAO/TAO_IDL/fe/idl.yy @@ -179,6 +179,7 @@ AST_Decl *tao_enum_constant_decl = 0; FE_Utils::T_PARAMLIST_INFO *plval; /* List of template params */ FE_Utils::T_Ref_Info *trval; /* Template interface info */ FE_Utils::T_REFLIST_INFO *rlval; /* List of above structs */ + FE_Utils::T_Inst_Info *tival; /* Template instantiation */ } /* @@ -353,6 +354,8 @@ AST_Decl *tao_enum_constant_decl = 0; %type template_inheritance_spec %type template_interface_header + +%type template_inst %% /* @@ -6322,10 +6325,194 @@ extended_port_decl : IDL_PORT template_inst IDENTIFIER { // extended_port_decl : IDL_PORT template_inst IDENTIFIER + idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen); + UTL_Scope *s = idl_global->scopes ().top_non_null (); + AST_Decl *d = s->lookup_by_name ($2->name_, true); + AST_PortType *pt = 0; + bool so_far_so_good = true; + + if (d == 0) + { + idl_global->err ()->lookup_error ($2->name_); + so_far_so_good = false; + } + else + { + pt = AST_PortType::narrow_from_decl (d); + + if (pt == 0) + { + idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED, + d); + so_far_so_good = false; + } + } + + if (so_far_so_good) + { + Identifier id ($3); + ACE::strdelete ($3); + $3 = 0; + + UTL_ScopedName sn (&id, + 0); + + AST_Extended_Port *ep = + idl_global->gen ()->create_extended_port ( + &sn, + pt, + $2->args_); + + (void) s->fe_add_extended_port (ep); + } + + $2->destroy (); + delete $2; + $2 = 0; } | IDL_PORT scoped_name IDENTIFIER { -// | IDL_PORT scoped_name IDENTIFIER +// extended_port_decl : IDL_PORT scoped_name IDENTIFIER + idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen); + UTL_Scope *s = idl_global->scopes ().top_non_null (); + AST_Decl *d = s->lookup_by_name ($2, true); + AST_PortType *pt = 0; + bool so_far_so_good = true; + + if (d == 0) + { + idl_global->err ()->lookup_error ($2); + so_far_so_good = false; + } + else + { + pt = AST_PortType::narrow_from_decl (d); + + if (pt == 0) + { + idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED, + d); + so_far_so_good = false; + } + } + + if (so_far_so_good) + { + Identifier id ($3); + ACE::strdelete ($3); + $3 = 0; + + UTL_ScopedName sn (&id, + 0); + + AST_Extended_Port *ep = + idl_global->gen ()->create_extended_port ( + &sn, + pt, + 0); + + (void) s->fe_add_extended_port (ep); + } + + $2->destroy (); + delete $2; + $2 = 0; + } + | IDL_MIRRORPORT template_inst IDENTIFIER + { +// | IDL_MIRRORPORT template_inst IDENTIFIER + idl_global->set_parse_state (IDL_GlobalData::PS_MirrorPortDeclSeen); + UTL_Scope *s = idl_global->scopes ().top_non_null (); + AST_Decl *d = s->lookup_by_name ($2->name_, true); + AST_PortType *pt = 0; + bool so_far_so_good = true; + + if (d == 0) + { + idl_global->err ()->lookup_error ($2->name_); + so_far_so_good = false; + } + else + { + pt = AST_PortType::narrow_from_decl (d); + + if (pt == 0) + { + idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED, + d); + so_far_so_good = false; + } + } + + if (so_far_so_good) + { + Identifier id ($3); + ACE::strdelete ($3); + $3 = 0; + + UTL_ScopedName sn (&id, + 0); + + AST_Mirror_Port *mp = + idl_global->gen ()->create_mirror_port ( + &sn, + pt, + $2->args_); + + (void) s->fe_add_mirror_port (mp); + } + + $2->destroy (); + delete $2; + $2 = 0; + } + | IDL_MIRRORPORT scoped_name IDENTIFIER + { +// | IDL_MIRRORPORT scoped_name IDENTIFIER + idl_global->set_parse_state (IDL_GlobalData::PS_MirrorPortDeclSeen); + UTL_Scope *s = idl_global->scopes ().top_non_null (); + AST_Decl *d = s->lookup_by_name ($2, true); + AST_PortType *pt = 0; + bool so_far_so_good = true; + + if (d == 0) + { + idl_global->err ()->lookup_error ($2); + so_far_so_good = false; + } + else + { + pt = AST_PortType::narrow_from_decl (d); + + if (pt == 0) + { + idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED, + d); + so_far_so_good = false; + } + } + + if (so_far_so_good) + { + Identifier id ($3); + ACE::strdelete ($3); + $3 = 0; + + UTL_ScopedName sn (&id, + 0); + + AST_Mirror_Port *mp = + idl_global->gen ()->create_mirror_port ( + &sn, + pt, + 0); + + (void) s->fe_add_mirror_port (mp); + } + + $2->destroy (); + delete $2; + $2 = 0; } ; @@ -6333,6 +6520,10 @@ template_inst : scoped_name '<' at_least_one_scoped_name '>' { // template_inst : scoped_name '<' at_least_one_scoped_name '>' + ACE_NEW_RETURN ($$, + FE_Utils::T_Inst_Info ($1, + $3), + 1); } ; diff --git a/modules/TAO/TAO_IDL/fe/y.tab.cpp b/modules/TAO/TAO_IDL/fe/y.tab.cpp index 62f5a7c9aab..3c4b0aafbef 100644 --- a/modules/TAO/TAO_IDL/fe/y.tab.cpp +++ b/modules/TAO/TAO_IDL/fe/y.tab.cpp @@ -368,6 +368,7 @@ typedef union TAO_YYSTYPE FE_Utils::T_PARAMLIST_INFO *plval; /* List of template params */ FE_Utils::T_Ref_Info *trval; /* Template interface info */ FE_Utils::T_REFLIST_INFO *rlval; /* List of above structs */ + FE_Utils::T_Inst_Info *tival; /* Template instantiation */ } /* Line 187 of yacc.c. */ @@ -598,16 +599,16 @@ union tao_yyalloc /* TAO_YYFINAL -- State number of the termination state. */ #define TAO_YYFINAL 3 /* TAO_YYLAST -- Last index in TAO_YYTABLE. */ -#define TAO_YYLAST 1280 +#define TAO_YYLAST 1249 /* TAO_YYNTOKENS -- Number of terminals. */ #define TAO_YYNTOKENS 107 /* TAO_YYNNTS -- Number of nonterminals. */ #define TAO_YYNNTS 359 /* TAO_YYNRULES -- Number of rules. */ -#define TAO_YYNRULES 534 +#define TAO_YYNRULES 536 /* TAO_YYNRULES -- Number of states. */ -#define TAO_YYNSTATES 764 +#define TAO_YYNSTATES 769 /* TAO_YYTRANSLATE(TAO_YYLEX) -- Bison symbol number corresponding to TAO_YYLEX. */ #define TAO_YYUNDEFTOK 2 @@ -714,7 +715,7 @@ static const tao_yytype_uint16 tao_yyprhs[] = 1258, 1263, 1264, 1267, 1270, 1271, 1274, 1278, 1279, 1284, 1287, 1291, 1292, 1294, 1295, 1296, 1297, 1298, 1299, 1311, 1313, 1314, 1317, 1320, 1321, 1322, 1326, 1327, 1331, 1333, - 1337, 1339, 1343, 1347, 1351 + 1337, 1339, 1343, 1347, 1351, 1355, 1359 }; /* TAO_YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -855,66 +856,67 @@ static const tao_yytype_int16 tao_yyrhs[] = -1, -1, 462, 460, 86, -1, -1, 463, 461, 86, -1, 380, -1, 60, 446, 3, -1, 382, -1, 383, 446, 3, -1, 69, 465, 3, -1, 69, 174, 3, - -1, 174, 104, 171, 103, -1 + -1, 70, 465, 3, -1, 70, 174, 3, -1, 174, + 104, 171, 103, -1 }; /* TAO_YYRLINE[TAO_YYN] -- source line where rule number TAO_YYN was defined. */ static const tao_yytype_uint16 tao_yyrline[] = { - 0, 361, 361, 364, 365, 370, 369, 380, 379, 390, - 389, 400, 399, 410, 409, 420, 419, 430, 429, 440, - 439, 450, 449, 460, 459, 470, 469, 480, 479, 490, - 489, 500, 499, 513, 518, 544, 549, 512, 565, 566, - 571, 610, 615, 570, 633, 632, 646, 684, 715, 749, - 748, 760, 767, 768, 769, 770, 774, 785, 790, 834, - 839, 789, 868, 907, 912, 866, 931, 929, 969, 968, - 982, 988, 995, 1002, 1009, 1035, 1062, 1127, 1128, 1132, - 1133, 1134, 1139, 1145, 1154, 1155, 1160, 1159, 1170, 1169, - 1180, 1179, 1190, 1189, 1200, 1199, 1210, 1209, 1220, 1219, - 1230, 1229, 1243, 1256, 1254, 1284, 1291, 1302, 1301, 1329, - 1327, 1354, 1366, 1412, 1440, 1471, 1476, 1481, 1486, 1470, - 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1557, 1562, 1637, - 1639, 1641, 1642, 1656, 1657, 1671, 1672, 1685, 1686, 1696, - 1709, 1710, 1720, 1733, 1734, 1744, 1754, 1767, 1768, 1778, - 1788, 1801, 1836, 1837, 1846, 1851, 1858, 1866, 1871, 1876, - 1882, 1887, 1892, 1900, 1972, 1971, 1981, 1986, 1991, 1996, - 2023, 2032, 2031, 2102, 2103, 2107, 2115, 2116, 2144, 2145, - 2146, 2147, 2148, 2149, 2150, 2151, 2155, 2156, 2157, 2161, - 2162, 2163, 2167, 2168, 2172, 2185, 2183, 2213, 2220, 2221, - 2225, 2238, 2236, 2266, 2273, 2290, 2309, 2310, 2314, 2319, - 2324, 2332, 2337, 2342, 2350, 2355, 2360, 2368, 2382, 2387, - 2395, 2403, 2411, 2419, 2428, 2427, 2443, 2477, 2482, 2442, - 2501, 2504, 2505, 2509, 2509, 2519, 2524, 2518, 2587, 2586, - 2601, 2600, 2615, 2620, 2625, 2630, 2677, 2682, 2614, 2706, - 2714, 2728, 2738, 2746, 2747, 2855, 2858, 2859, 2864, 2869, - 2863, 2905, 2904, 2918, 2929, 2951, 2959, 2958, 2974, 2979, - 2973, 2996, 2995, 3048, 3072, 3097, 3102, 3135, 3140, 3096, - 3166, 3171, 3169, 3176, 3180, 3217, 3222, 3215, 3289, 3344, - 3354, 3343, 3369, 3374, 3367, 3415, 3441, 3451, 3456, 3449, - 3486, 3511, 3520, 3519, 3555, 3566, 3588, 3596, 3601, 3595, - 3638, 3639, 3644, 3649, 3654, 3659, 3643, 3728, 3733, 3738, - 3743, 3727, 3821, 3826, 3856, 3861, 3820, 3879, 3884, 3937, - 3942, 3877, 3979, 3985, 3992, 3999, 4000, 4012, 4018, 4060, - 4011, 4082, 4081, 4092, 4091, 4104, 4109, 4107, 4114, 4119, - 4124, 4118, 4165, 4164, 4175, 4174, 4187, 4192, 4190, 4197, - 4202, 4207, 4201, 4254, 4262, 4263, 4264, 4352, 4357, 4362, - 4371, 4376, 4370, 4388, 4396, 4401, 4395, 4413, 4421, 4426, - 4420, 4438, 4446, 4451, 4445, 4463, 4470, 4483, 4481, 4509, - 4516, 4545, 4583, 4584, 4588, 4618, 4658, 4663, 4617, 4682, - 4687, 4680, 4729, 4728, 4739, 4746, 4747, 4752, 4751, 4762, - 4761, 4772, 4771, 4782, 4781, 4792, 4791, 4802, 4801, 4812, - 4811, 4823, 4882, 4889, 4913, 4987, 4997, 5003, 5009, 5056, - 5103, 5152, 5151, 5201, 5206, 5211, 5216, 5221, 5226, 5200, - 5280, 5279, 5290, 5297, 5304, 5312, 5317, 5311, 5329, 5330, - 5334, 5336, 5335, 5346, 5345, 5360, 5396, 5358, 5430, 5466, - 5428, 5498, 5499, 5500, 5504, 5505, 5509, 5537, 5568, 5613, - 5618, 5566, 5635, 5645, 5664, 5676, 5675, 5715, 5765, 5770, - 5713, 5787, 5792, 5800, 5805, 5810, 5815, 5820, 5833, 5838, - 5843, 5852, 5874, 5879, 5851, 5896, 5914, 5919, 5913, 5942, - 5941, 5963, 5970, 5984, 5990, 5997, 6016, 6033, 6040, 6050, - 6061, 6085, 6092, 6103, 6108, 6113, 6134, 6139, 6102, 6154, - 6160, 6167, 6174, 6179, 6186, 6185, 6194, 6193, 6204, 6209, - 6263, 6268, 6322, 6326, 6333 + 0, 364, 364, 367, 368, 373, 372, 383, 382, 393, + 392, 403, 402, 413, 412, 423, 422, 433, 432, 443, + 442, 453, 452, 463, 462, 473, 472, 483, 482, 493, + 492, 503, 502, 516, 521, 547, 552, 515, 568, 569, + 574, 613, 618, 573, 636, 635, 649, 687, 718, 752, + 751, 763, 770, 771, 772, 773, 777, 788, 793, 837, + 842, 792, 871, 910, 915, 869, 934, 932, 972, 971, + 985, 991, 998, 1005, 1012, 1038, 1065, 1130, 1131, 1135, + 1136, 1137, 1142, 1148, 1157, 1158, 1163, 1162, 1173, 1172, + 1183, 1182, 1193, 1192, 1203, 1202, 1213, 1212, 1223, 1222, + 1233, 1232, 1246, 1259, 1257, 1287, 1294, 1305, 1304, 1332, + 1330, 1357, 1369, 1415, 1443, 1474, 1479, 1484, 1489, 1473, + 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1560, 1565, 1640, + 1642, 1644, 1645, 1659, 1660, 1674, 1675, 1688, 1689, 1699, + 1712, 1713, 1723, 1736, 1737, 1747, 1757, 1770, 1771, 1781, + 1791, 1804, 1839, 1840, 1849, 1854, 1861, 1869, 1874, 1879, + 1885, 1890, 1895, 1903, 1975, 1974, 1984, 1989, 1994, 1999, + 2026, 2035, 2034, 2105, 2106, 2110, 2118, 2119, 2147, 2148, + 2149, 2150, 2151, 2152, 2153, 2154, 2158, 2159, 2160, 2164, + 2165, 2166, 2170, 2171, 2175, 2188, 2186, 2216, 2223, 2224, + 2228, 2241, 2239, 2269, 2276, 2293, 2312, 2313, 2317, 2322, + 2327, 2335, 2340, 2345, 2353, 2358, 2363, 2371, 2385, 2390, + 2398, 2406, 2414, 2422, 2431, 2430, 2446, 2480, 2485, 2445, + 2504, 2507, 2508, 2512, 2512, 2522, 2527, 2521, 2590, 2589, + 2604, 2603, 2618, 2623, 2628, 2633, 2680, 2685, 2617, 2709, + 2717, 2731, 2741, 2749, 2750, 2858, 2861, 2862, 2867, 2872, + 2866, 2908, 2907, 2921, 2932, 2954, 2962, 2961, 2977, 2982, + 2976, 2999, 2998, 3051, 3075, 3100, 3105, 3138, 3143, 3099, + 3169, 3174, 3172, 3179, 3183, 3220, 3225, 3218, 3292, 3347, + 3357, 3346, 3372, 3377, 3370, 3418, 3444, 3454, 3459, 3452, + 3489, 3514, 3523, 3522, 3558, 3569, 3591, 3599, 3604, 3598, + 3641, 3642, 3647, 3652, 3657, 3662, 3646, 3731, 3736, 3741, + 3746, 3730, 3824, 3829, 3859, 3864, 3823, 3882, 3887, 3940, + 3945, 3880, 3982, 3988, 3995, 4002, 4003, 4015, 4021, 4063, + 4014, 4085, 4084, 4095, 4094, 4107, 4112, 4110, 4117, 4122, + 4127, 4121, 4168, 4167, 4178, 4177, 4190, 4195, 4193, 4200, + 4205, 4210, 4204, 4257, 4265, 4266, 4267, 4355, 4360, 4365, + 4374, 4379, 4373, 4391, 4399, 4404, 4398, 4416, 4424, 4429, + 4423, 4441, 4449, 4454, 4448, 4466, 4473, 4486, 4484, 4512, + 4519, 4548, 4586, 4587, 4591, 4621, 4661, 4666, 4620, 4685, + 4690, 4683, 4732, 4731, 4742, 4749, 4750, 4755, 4754, 4765, + 4764, 4775, 4774, 4785, 4784, 4795, 4794, 4805, 4804, 4815, + 4814, 4826, 4885, 4892, 4916, 4990, 5000, 5006, 5012, 5059, + 5106, 5155, 5154, 5204, 5209, 5214, 5219, 5224, 5229, 5203, + 5283, 5282, 5293, 5300, 5307, 5315, 5320, 5314, 5332, 5333, + 5337, 5339, 5338, 5349, 5348, 5363, 5399, 5361, 5433, 5469, + 5431, 5501, 5502, 5503, 5507, 5508, 5512, 5540, 5571, 5616, + 5621, 5569, 5638, 5648, 5667, 5679, 5678, 5718, 5768, 5773, + 5716, 5790, 5795, 5803, 5808, 5813, 5818, 5823, 5836, 5841, + 5846, 5855, 5877, 5882, 5854, 5899, 5917, 5922, 5916, 5945, + 5944, 5966, 5973, 5987, 5993, 6000, 6019, 6036, 6043, 6053, + 6064, 6088, 6095, 6106, 6111, 6116, 6137, 6142, 6105, 6157, + 6163, 6170, 6177, 6182, 6189, 6188, 6197, 6196, 6207, 6212, + 6266, 6271, 6325, 6373, 6421, 6469, 6520 }; #endif @@ -1094,7 +1096,7 @@ static const tao_yytype_uint16 tao_yyr1[] = 440, 440, 442, 443, 443, 444, 445, 445, 446, 447, 448, 448, 449, 451, 452, 453, 454, 455, 450, 456, 456, 457, 458, 458, 460, 459, 461, 459, 462, 462, - 463, 463, 464, 464, 465 + 463, 463, 464, 464, 464, 464, 465 }; /* TAO_YYR2[TAO_YYN] -- Number of symbols composing right hand side of rule TAO_YYN. */ @@ -1153,7 +1155,7 @@ static const tao_yytype_uint8 tao_yyr2[] = 4, 0, 2, 2, 0, 2, 3, 0, 4, 2, 3, 0, 1, 0, 0, 0, 0, 0, 11, 1, 0, 2, 2, 0, 0, 3, 0, 3, 1, 3, - 1, 3, 3, 3, 4 + 1, 3, 3, 3, 3, 3, 4 }; /* TAO_YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -1203,41 +1205,41 @@ static const tao_yytype_uint16 tao_yydefact[] = 80, 0, 291, 148, 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 233, 238, 235, 234, 208, 254, 249, 250, 251, - 252, 244, 253, 0, 0, 0, 0, 427, 0, 417, - 0, 405, 407, 409, 0, 411, 413, 415, 419, 0, - 0, 450, 0, 448, 451, 453, 0, 0, 0, 118, - 0, 307, 303, 306, 195, 284, 278, 283, 233, 0, - 441, 436, 516, 103, 0, 498, 508, 509, 506, 0, - 0, 0, 43, 0, 0, 0, 0, 0, 336, 366, - 363, 364, 365, 327, 335, 0, 0, 0, 83, 82, - 61, 81, 153, 132, 134, 136, 138, 139, 141, 142, - 144, 145, 146, 287, 294, 299, 229, 231, 0, 0, - 0, 0, 0, 423, 422, 0, 0, 426, 425, 0, - 0, 0, 398, 0, 0, 0, 0, 0, 0, 0, - 455, 458, 447, 0, 0, 0, 0, 494, 0, 0, - 0, 304, 0, 0, 280, 0, 65, 0, 0, 0, - 500, 0, 101, 313, 318, 93, 87, 97, 95, 99, - 0, 89, 91, 338, 239, 236, 245, 430, 428, 421, - 429, 533, 0, 532, 418, 408, 410, 424, 412, 414, - 416, 420, 0, 0, 452, 454, 471, 480, 119, 129, - 37, 308, 305, 196, 279, 281, 326, 437, 0, 528, - 530, 0, 517, 523, 524, 526, 104, 510, 0, 0, - 328, 0, 0, 0, 0, 341, 456, 459, 0, 0, - 0, 422, 0, 0, 0, 521, 0, 0, 314, 319, - 203, 0, 339, 237, 246, 534, 0, 0, 373, 373, - 309, 282, 438, 529, 531, 518, 522, 525, 527, 0, - 377, 200, 354, 329, 373, 0, 342, 349, 0, 348, - 370, 457, 460, 444, 315, 374, 320, 201, 0, 0, - 373, 340, 261, 268, 266, 247, 257, 258, 265, 0, - 344, 345, 0, 0, 439, 373, 0, 381, 0, 353, - 367, 368, 369, 0, 359, 360, 330, 0, 0, 0, - 0, 0, 0, 263, 350, 346, 371, 443, 316, 375, - 378, 321, 202, 355, 356, 0, 385, 262, 269, 267, - 248, 256, 271, 259, 264, 0, 0, 0, 0, 0, - 357, 361, 382, 331, 0, 0, 0, 351, 347, 0, - 0, 379, 0, 0, 0, 270, 272, 260, 372, 376, - 0, 358, 362, 383, 0, 0, 380, 389, 0, 386, - 384, 387, 0, 388 + 252, 244, 253, 0, 0, 0, 0, 427, 0, 0, + 417, 0, 405, 407, 409, 0, 411, 413, 415, 419, + 0, 0, 450, 0, 448, 451, 453, 0, 0, 0, + 118, 0, 307, 303, 306, 195, 284, 278, 283, 233, + 0, 441, 436, 516, 103, 0, 498, 508, 509, 506, + 0, 0, 0, 43, 0, 0, 0, 0, 0, 336, + 366, 363, 364, 365, 327, 335, 0, 0, 0, 83, + 82, 61, 81, 153, 132, 134, 136, 138, 139, 141, + 142, 144, 145, 146, 287, 294, 299, 229, 231, 0, + 0, 0, 0, 0, 423, 422, 0, 0, 426, 425, + 0, 0, 0, 0, 0, 398, 0, 0, 0, 0, + 0, 0, 0, 455, 458, 447, 0, 0, 0, 0, + 494, 0, 0, 0, 304, 0, 0, 280, 0, 65, + 0, 0, 0, 500, 0, 101, 313, 318, 93, 87, + 97, 95, 99, 0, 89, 91, 338, 239, 236, 245, + 430, 428, 421, 429, 533, 0, 532, 535, 534, 418, + 408, 410, 424, 412, 414, 416, 420, 0, 0, 452, + 454, 471, 480, 119, 129, 37, 308, 305, 196, 279, + 281, 326, 437, 0, 528, 530, 0, 517, 523, 524, + 526, 104, 510, 0, 0, 328, 0, 0, 0, 0, + 341, 456, 459, 0, 0, 0, 422, 0, 0, 0, + 521, 0, 0, 314, 319, 203, 0, 339, 237, 246, + 536, 0, 0, 373, 373, 309, 282, 438, 529, 531, + 518, 522, 525, 527, 0, 377, 200, 354, 329, 373, + 0, 342, 349, 0, 348, 370, 457, 460, 444, 315, + 374, 320, 201, 0, 0, 373, 340, 261, 268, 266, + 247, 257, 258, 265, 0, 344, 345, 0, 0, 439, + 373, 0, 381, 0, 353, 367, 368, 369, 0, 359, + 360, 330, 0, 0, 0, 0, 0, 0, 263, 350, + 346, 371, 443, 316, 375, 378, 321, 202, 355, 356, + 0, 385, 262, 269, 267, 248, 256, 271, 259, 264, + 0, 0, 0, 0, 0, 357, 361, 382, 331, 0, + 0, 0, 351, 347, 0, 0, 379, 0, 0, 0, + 270, 272, 260, 372, 376, 0, 358, 362, 383, 0, + 0, 380, 389, 0, 386, 384, 387, 0, 388 }; /* TAO_YYDEFGOTO[NTERM-NUM]. */ @@ -1245,165 +1247,165 @@ static const tao_yytype_int16 tao_yydefgoto[] = { -1, 1, 2, 24, 153, 157, 158, 152, 156, 101, 167, 100, 107, 159, 161, 163, 169, 71, 25, 73, - 242, 349, 539, 26, 27, 106, 267, 372, 28, 74, + 242, 349, 542, 26, 27, 106, 267, 372, 28, 74, 29, 124, 253, 30, 31, 32, 108, 268, 387, 33, - 192, 294, 459, 34, 217, 35, 91, 205, 272, 36, - 37, 309, 388, 389, 308, 373, 474, 485, 486, 473, - 476, 475, 477, 469, 302, 360, 549, 325, 197, 251, - 97, 38, 374, 72, 241, 348, 538, 172, 588, 326, + 192, 294, 460, 34, 217, 35, 91, 205, 272, 36, + 37, 309, 388, 389, 308, 373, 475, 486, 487, 474, + 477, 476, 478, 470, 302, 360, 552, 325, 197, 251, + 97, 38, 374, 72, 241, 348, 541, 172, 593, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 375, 75, 183, 243, 413, 127, 128, 129, 130, 41, - 287, 351, 542, 288, 629, 651, 688, 289, 290, 131, + 287, 351, 545, 288, 634, 656, 693, 289, 290, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 42, - 76, 43, 154, 276, 410, 339, 411, 507, 341, 414, - 509, 612, 508, 44, 77, 45, 225, 342, 510, 613, - 655, 700, 421, 675, 701, 676, 702, 736, 697, 677, - 703, 678, 699, 698, 734, 723, 735, 46, 47, 48, - 78, 244, 352, 543, 456, 544, 619, 457, 146, 273, + 76, 43, 154, 276, 410, 339, 411, 508, 341, 414, + 510, 617, 509, 44, 77, 45, 225, 342, 511, 618, + 660, 705, 421, 680, 706, 681, 707, 741, 702, 682, + 708, 683, 704, 703, 739, 728, 740, 46, 47, 48, + 78, 244, 352, 546, 457, 547, 624, 458, 146, 273, 407, 147, 216, 310, 148, 274, 408, 149, 150, 275, - 409, 151, 291, 350, 452, 541, 453, 540, 618, 376, - 377, 470, 608, 649, 685, 378, 471, 609, 650, 687, - 379, 79, 245, 353, 545, 380, 560, 631, 670, 716, - 381, 483, 391, 487, 611, 654, 616, 636, 637, 658, - 681, 726, 659, 679, 725, 653, 668, 669, 693, 714, - 742, 694, 715, 743, 484, 695, 661, 682, 727, 666, - 686, 728, 711, 729, 750, 733, 744, 755, 758, 759, - 762, 382, 383, 52, 53, 54, 160, 278, 430, 55, - 195, 296, 248, 295, 343, 431, 523, 524, 526, 527, - 528, 521, 529, 599, 515, 600, 601, 518, 435, 436, - 437, 56, 162, 57, 94, 249, 358, 547, 620, 663, - 298, 357, 684, 233, 279, 442, 344, 443, 533, 534, - 444, 582, 638, 445, 583, 639, 58, 59, 60, 61, - 62, 236, 345, 535, 63, 64, 65, 165, 235, 66, - 237, 346, 536, 67, 262, 68, 168, 283, 448, 69, - 105, 206, 362, 305, 464, 263, 208, 265, 307, 266, - 364, 467, 365, 70, 99, 252, 359, 548, 624, 301, - 602, 625, 603, 626, 627, 604, 605, 438, 520 + 409, 151, 291, 350, 453, 544, 454, 543, 623, 376, + 377, 471, 613, 654, 690, 378, 472, 614, 655, 692, + 379, 79, 245, 353, 548, 380, 563, 636, 675, 721, + 381, 484, 391, 488, 616, 659, 621, 641, 642, 663, + 686, 731, 664, 684, 730, 658, 673, 674, 698, 719, + 747, 699, 720, 748, 485, 700, 666, 687, 732, 671, + 691, 733, 716, 734, 755, 738, 749, 760, 763, 764, + 767, 382, 383, 52, 53, 54, 160, 278, 431, 55, + 195, 296, 248, 295, 343, 432, 526, 527, 529, 530, + 531, 524, 532, 604, 516, 605, 606, 519, 436, 437, + 438, 56, 162, 57, 94, 249, 358, 550, 625, 668, + 298, 357, 689, 233, 279, 443, 344, 444, 536, 537, + 445, 587, 643, 446, 588, 644, 58, 59, 60, 61, + 62, 236, 345, 538, 63, 64, 65, 165, 235, 66, + 237, 346, 539, 67, 262, 68, 168, 283, 449, 69, + 105, 206, 362, 305, 465, 263, 208, 265, 307, 266, + 364, 468, 365, 70, 99, 252, 359, 551, 629, 301, + 607, 630, 608, 631, 632, 609, 610, 439, 521 }; /* TAO_YYPACT[STATE-NUM] -- Index in TAO_YYTABLE of the portion describing STATE-NUM. */ -#define TAO_YYPACT_NINF -595 +#define TAO_YYPACT_NINF -550 static const tao_yytype_int16 tao_yypact[] = { - -595, 62, 1209, -595, -595, -595, -595, -595, -595, -595, - -595, -595, -595, 43, 92, 31, -1, -595, 43, 43, - -595, 37, 37, -595, -595, -595, -595, -595, 87, -595, - -595, -595, -595, -595, -595, 91, -595, -595, -595, -595, - -595, -595, -4, -595, 110, -595, -595, -595, -595, -595, - -595, -595, -595, -595, -595, -595, -595, -595, -595, -595, - -595, -595, -595, 67, -595, -595, -595, 67, -595, -595, - -595, 82, 192, 163, 43, 1182, 43, 43, 43, 43, - -595, -595, -595, 7, 43, 76, -595, 103, 43, -595, - 67, 43, 112, 126, 43, -595, -40, -595, -38, 191, - 141, 150, 148, -595, -595, 162, 152, 178, 179, 202, - -595, 80, -595, -595, -595, -595, -595, -595, -595, -595, - -595, -595, -595, -595, -595, 184, -595, -595, -595, -595, - -595, -595, -595, -595, -595, -595, -595, -595, -595, -595, - -595, -595, -595, 110, -595, -595, -595, -11, -595, 164, - -595, 165, 181, 186, 183, -595, 188, 189, 193, 194, - 190, 195, 196, 198, -595, -595, -595, 199, 200, 203, - -595, 184, -595, -595, -595, -595, -595, -595, -595, -595, - -595, -595, -595, -595, -595, -595, -595, -595, -595, -595, - 204, -595, 201, -595, -595, 197, -595, 43, -595, -595, - -595, -595, -595, -595, -595, -595, 173, 37, -595, -595, - -595, -595, -595, -595, 270, -595, 208, 235, -595, -595, - -595, -595, -595, -595, -595, 206, -595, -595, -595, -595, - -595, -595, -595, -595, -595, 235, 210, 211, -595, -595, - -595, 43, 212, 43, 213, 214, -595, -595, -595, 215, - -595, 43, 221, 37, -595, -595, -595, -595, -595, -595, - -595, -595, 299, -595, -7, -595, -595, -595, -595, -595, - -595, 37, -595, 46, 46, 46, -595, -595, -595, -595, - -595, -595, -595, -595, -595, -595, 209, -595, -595, -595, - -595, -595, -595, -595, -595, 37, 235, -595, -595, -595, - -595, -595, -595, 184, -595, 216, 300, 218, 971, 725, - 368, -595, -595, -595, -595, -595, -595, -595, -595, -595, - -595, 74, 74, 74, 46, 184, -595, 225, 226, 232, - 55, 86, 117, -595, -595, -595, -595, -595, -595, -595, - -595, 546, 234, 109, 889, -595, -595, 1006, 237, -595, - 224, 240, 302, -595, 1088, 184, -595, 37, 235, 244, - 242, -595, 230, -595, 231, -595, 37, -595, -595, -595, - -595, -595, 247, -595, -595, -595, -595, -595, -595, -595, - -595, 632, -595, -595, -595, 546, 546, 248, -595, -595, - -595, 251, -595, -595, -595, -595, 238, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 236, 239, 241, - 253, 255, -595, -595, -595, 337, 184, -595, -595, -595, - -595, -595, -595, 37, 37, 54, 37, 288, 37, -595, - 260, -595, -595, -595, 54, -595, -595, -595, -595, 43, - 43, -595, 261, -595, -595, -595, 1123, 807, 262, -595, - 430, -595, -595, -595, -595, -595, -595, -595, 263, 264, - 184, -595, -595, -595, 173, -595, -595, 266, -595, 267, - 328, 525, -595, 284, 286, 287, 289, 303, -595, 184, - -595, -595, -595, -595, -595, 304, 309, 371, -595, -595, - -595, -595, -595, 226, 232, 55, 86, 86, 117, 117, - -595, -595, -595, -595, -595, -595, -595, -595, 310, 43, - 295, 52, 52, -595, 184, 43, 52, -595, -595, 32, - 385, 312, -595, 313, 314, 43, 315, 316, 317, 324, - -595, -595, -595, 326, 327, 329, 330, -595, 46, 331, - 46, 224, 43, 332, 333, 334, -595, 348, 25, 37, - -595, 300, -595, -595, -595, -595, -595, -595, -595, -595, - 413, -595, -595, -595, -595, -595, -595, -595, -595, -595, - -595, -595, 37, -595, -595, -595, -595, -595, -595, -595, - -595, -595, 320, 320, -595, -595, -595, -595, -595, -595, - -595, -595, -595, -595, -595, -595, -595, -595, 54, -595, - -595, 54, -595, -595, -595, -595, 184, -595, 525, 43, - -595, 320, 338, 341, 322, 394, -595, -595, 335, 302, - 37, -7, 427, 429, 345, 25, 352, 353, -595, -595, - -595, 339, -595, -595, -595, -595, 340, 408, 406, 406, - -595, -595, 184, -595, -595, -595, -595, -595, -595, 43, - 390, 356, 346, -595, 406, 58, -595, -595, 354, -595, - -595, -595, -595, 388, -595, -595, -595, -595, 357, 108, - 406, -595, -595, -595, -595, -595, -595, -595, -595, 525, - -595, 364, 359, 37, -595, 406, 361, 393, 43, -595, - -595, -595, -595, 372, -595, -595, -595, 380, 46, 369, - 387, 41, 1182, 158, -595, -595, -595, 184, -595, -595, - -595, -595, -595, -595, 386, 525, 438, -595, -595, -595, - -595, -595, -595, -595, -595, 43, 408, 37, 37, 377, - -595, -595, -595, -595, 392, 43, 396, -595, -595, 382, - 383, -595, 108, 43, 389, -595, -595, -595, -595, -595, - 37, -595, -595, -595, 395, 412, -595, -595, 398, 399, - -595, -595, 415, -595 + -550, 104, 1178, -550, -550, -550, -550, -550, -550, -550, + -550, -550, -550, 40, 77, 31, 52, -550, 40, 40, + -550, 35, 35, -550, -550, -550, -550, -550, -4, -550, + -550, -550, -550, -550, -550, 368, -550, -550, -550, -550, + -550, -550, 23, -550, 110, -550, -550, -550, -550, -550, + -550, -550, -550, -550, -550, -550, -550, -550, -550, -550, + -550, -550, -550, 85, -550, -550, -550, 85, -550, -550, + -550, 103, 233, 160, 40, 552, 40, 40, 40, 40, + -550, -550, -550, -27, 40, 22, -550, 44, 40, -550, + 85, 40, 128, 134, 40, -550, -36, -550, -2, 218, + 136, 139, 178, -550, -550, 140, 144, 146, 153, 123, + -550, 133, -550, -550, -550, -550, -550, -550, -550, -550, + -550, -550, -550, -550, -550, 152, -550, -550, -550, -550, + -550, -550, -550, -550, -550, -550, -550, -550, -550, -550, + -550, -550, -550, 110, -550, -550, -550, -14, -550, 147, + -550, 149, 168, 169, 170, -550, 174, 175, 176, 179, + 177, 180, 184, 186, -550, -550, -550, 187, 190, 188, + -550, 152, -550, -550, -550, -550, -550, -550, -550, -550, + -550, -550, -550, -550, -550, -550, -550, -550, -550, -550, + 192, -550, 193, -550, -550, 194, -550, 40, -550, -550, + -550, -550, -550, -550, -550, -550, 156, 35, -550, -550, + -550, -550, -550, -550, 271, -550, 181, 234, -550, -550, + -550, -550, -550, -550, -550, 183, -550, -550, -550, -550, + -550, -550, -550, -550, -550, 234, 199, 200, -550, -550, + -550, 40, 201, 40, 207, 213, -550, -550, -550, 212, + -550, 40, 198, 35, -550, -550, -550, -550, -550, -550, + -550, -550, 279, -550, -32, -550, -550, -550, -550, -550, + -550, 35, -550, 43, 43, 43, -550, -550, -550, -550, + -550, -550, -550, -550, -550, -550, 204, -550, -550, -550, + -550, -550, -550, -550, -550, 35, 234, -550, -550, -550, + -550, -550, -550, 152, -550, 214, 302, 216, 976, 730, + 182, -550, -550, -550, -550, -550, -550, -550, -550, -550, + -550, 74, 74, 74, 43, 152, -550, 220, 222, 224, + 78, 91, 48, -550, -550, -550, -550, -550, -550, -550, + -550, 421, 83, 238, 894, -550, -550, 1011, 228, -550, + 221, 239, 325, -550, 1093, 152, -550, 35, 234, 243, + 241, -550, 229, -550, 230, -550, 35, -550, -550, -550, + -550, -550, 246, -550, -550, -550, -550, -550, -550, -550, + -550, 770, -550, -550, -550, 421, 421, 247, -550, -550, + -550, 250, -550, -550, -550, -550, 235, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 236, 237, 240, + 253, 254, -550, -550, -550, 336, 152, -550, -550, -550, + -550, -550, -550, 35, 35, 54, 35, 287, 35, 35, + -550, 258, -550, -550, -550, 54, -550, -550, -550, -550, + 40, 40, -550, 260, -550, -550, -550, 1128, 812, 261, + -550, 471, -550, -550, -550, -550, -550, -550, -550, 262, + 263, 152, -550, -550, -550, 156, -550, -550, 266, -550, + 267, 321, 852, -550, 273, 284, 286, 288, 289, -550, + 152, -550, -550, -550, -550, -550, 304, 309, 370, -550, + -550, -550, -550, -550, 222, 224, 78, 91, 91, 48, + 48, -550, -550, -550, -550, -550, -550, -550, -550, 310, + 40, 295, 45, 45, -550, 152, 40, 45, -550, -550, + 32, 395, 33, 397, 315, -550, 316, 317, 40, 327, + 328, 329, 331, -550, -550, -550, 332, 333, 323, 335, + -550, 43, 337, 43, 221, 40, 338, 330, 355, -550, + 382, 42, 35, -550, 302, -550, -550, -550, -550, -550, + -550, -550, -550, 418, -550, -550, -550, -550, -550, -550, + -550, -550, -550, -550, -550, 35, -550, -550, -550, -550, + -550, -550, -550, -550, -550, -550, -550, 349, 349, -550, + -550, -550, -550, -550, -550, -550, -550, -550, -550, -550, + -550, -550, -550, 54, -550, -550, 54, -550, -550, -550, + -550, 152, -550, 852, 40, -550, 349, 365, 369, 352, + 417, -550, -550, 353, 325, 35, -32, 457, 458, 375, + 42, 379, 381, -550, -550, -550, 372, -550, -550, -550, + -550, 367, 435, 433, 433, -550, -550, 152, -550, -550, + -550, -550, -550, -550, 40, 419, 389, 378, -550, 433, + 59, -550, -550, 383, -550, -550, -550, -550, 422, -550, + -550, -550, -550, 384, 130, 433, -550, -550, -550, -550, + -550, -550, -550, -550, 852, -550, 394, 386, 35, -550, + 433, 387, 427, 40, -550, -550, -550, -550, 388, -550, + -550, -550, 407, 43, 406, 408, 41, 552, 141, -550, + -550, -550, 152, -550, -550, -550, -550, -550, -550, 411, + 852, 467, -550, -550, -550, -550, -550, -550, -550, -550, + 40, 435, 35, 35, 409, -550, -550, -550, -550, 420, + 40, 430, -550, -550, 405, 415, -550, 130, 40, 424, + -550, -550, -550, -550, -550, 35, -550, -550, -550, 416, + 432, -550, -550, 426, 429, -550, -550, 446, -550 }; /* TAO_YYPGOTO[NTERM-NUM]. */ static const tao_yytype_int16 tao_yypgoto[] = { - -595, -595, 143, -595, -595, -595, -595, -595, -595, -595, - -595, -595, -595, -595, -595, -595, -595, -595, -595, -595, - -595, -595, -595, -595, -595, -595, -595, -595, 205, -595, - -595, 100, -595, -595, -595, 479, -595, -595, -595, -595, - -595, -595, -595, 489, -595, 217, -595, -595, -201, -595, - -595, 159, -595, -595, -211, -276, -595, -595, -595, -595, - -595, -595, -595, -595, -263, -595, -595, -19, -595, -595, - -13, -595, 11, -595, -595, -595, -595, -595, -595, -307, - -595, 111, 113, 107, -155, -143, -181, -68, -595, -244, - 13, -595, -595, -595, -24, 207, -352, -595, -595, -595, - -2, -595, -595, -514, -140, -595, -595, -12, -595, -50, - -595, -595, 441, 442, -49, -48, -47, -595, -595, -28, - -595, -25, -595, -595, -595, -595, 157, 243, -595, -123, - -595, -595, -595, -21, -595, -17, -595, -595, -595, -595, - -595, -595, -595, -595, -595, -186, -595, -595, -595, -595, - -595, -187, -595, -595, -595, -595, -595, -595, -595, -31, - -595, -595, -595, -595, -595, -595, -595, -99, -595, -595, - -595, -595, -595, -595, -63, -595, -595, -595, -60, -595, - -595, -595, -595, -595, -595, -595, -20, -595, -595, 180, - -595, -595, -595, -595, -595, -595, -595, -595, -595, -595, - 17, -595, -595, -595, -595, -595, -595, -595, -595, -595, - -595, -595, -595, -595, -595, -595, -544, -595, -595, -595, - -595, -595, -204, -595, -595, -595, -595, -595, -595, -595, - -595, -218, -595, -595, -444, -595, -594, -595, -595, -595, - -595, -595, -595, -595, -595, -595, -595, -595, -595, -595, - -595, 18, 19, -595, -595, -595, -595, -595, -595, -595, - -595, -595, -595, -595, -595, -595, -595, -595, -595, -595, - -595, -595, -595, 182, -402, 233, 245, -595, -595, -595, - -595, -595, -595, -595, -595, -595, -595, -595, -595, -595, - -595, -595, -595, -595, -595, -595, -595, -595, -595, -595, - -595, -595, -595, -595, -595, -595, -595, -595, -595, -595, - -595, -595, -595, -595, -595, -595, -595, 459, -595, -595, - -595, -595, -595, -595, -595, -595, -595, -595, -595, -595, - 275, -595, -595, -595, -595, 68, -595, -595, -595, -340, - -595, -595, -5, -595, -595, -595, -595, -595, -595, -595, - -595, -595, -94, -595, -595, -595, -595, -595, -595 + -550, -550, 191, -550, -550, -550, -550, -550, -550, -550, + -550, -550, -550, -550, -550, -550, -550, -550, -550, -550, + -550, -550, -550, -550, -550, -550, -550, -550, 189, -550, + -550, 27, -550, -550, -550, 507, -550, -550, -550, -550, + -550, -550, -550, 511, -550, 195, -550, -550, -201, -550, + -550, 185, -550, -550, -242, -276, -550, -550, -550, -550, + -550, -550, -550, -550, -250, -550, -550, -19, -550, -550, + -13, -550, 7, -550, -550, -550, -550, -550, -550, -304, + -550, 132, 138, 131, -188, -187, -227, -140, -550, -246, + 11, -550, -550, -550, -24, 227, -357, -550, -550, -550, + 28, -550, -550, -513, -115, -550, -550, -12, -550, -50, + -550, -550, 469, 472, -49, -47, -46, -550, -550, -28, + -550, -25, -550, -550, -550, -550, 197, 269, -550, -167, + -550, -550, -550, -21, -550, -17, -550, -550, -550, -550, + -550, -550, -550, -550, -550, -163, -550, -550, -550, -550, + -550, -162, -550, -550, -550, -550, -550, -550, -550, -31, + -550, -550, -550, -550, -550, -550, -550, -77, -550, -550, + -550, -550, -550, -550, -64, -550, -550, -550, -60, -550, + -550, -550, -550, -550, -550, -550, 4, -550, -550, 208, + -550, -550, -550, -550, -550, -550, -550, -550, -550, -550, + 13, -550, -550, -550, -550, -550, -550, -550, -550, -550, + -550, -550, -550, -550, -550, -550, -549, -550, -550, -550, + -550, -550, -179, -550, -550, -550, -550, -550, -550, -550, + -550, -193, -550, -550, -445, -550, -519, -550, -550, -550, + -550, -550, -550, -550, -550, -550, -550, -550, -550, -550, + -550, 15, 17, -550, -550, -550, -550, -550, -550, -550, + -550, -550, -550, -550, -550, -550, -550, -550, -550, -550, + -550, -550, -550, 215, -404, 231, 242, -550, -550, -550, + -550, -550, -550, -550, -550, -550, -550, -550, -550, -550, + -550, -550, -550, -550, -550, -550, -550, -550, -550, -550, + -550, -550, -550, -550, -550, -550, -550, -550, -550, -550, + -550, -550, -550, -550, -550, -550, -550, 490, -550, -550, + -550, -550, -550, -550, -550, -550, -550, -550, -550, -550, + 334, -550, -550, -550, -550, 114, -550, -550, -550, -336, + -550, -550, 26, -550, -550, -550, -550, -550, -550, -550, + -550, -550, -48, -550, -550, -550, -550, -550, 154 }; /* TAO_YYTABLE[TAO_YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1413,268 +1415,260 @@ static const tao_yytype_int16 tao_yypgoto[] = #define TAO_YYTABLE_NINF -494 static const tao_yytype_int16 tao_yytable[] = { - 81, 82, 96, 98, 145, 92, 93, 141, 311, 179, - 142, 126, 180, 39, 143, 40, 125, 396, 144, 49, - 50, 51, 173, 176, 177, 178, 468, 554, 593, 480, - 337, 338, 525, 390, 280, 571, 198, 7, 200, 617, - 80, 199, 672, 199, 145, 662, 80, 141, 17, 80, - 142, 184, 88, 171, 143, 80, 125, 80, 144, 672, - 671, 182, 3, 185, 186, 187, 188, 632, 441, 673, - 674, 190, 347, 513, 199, 193, 696, 80, 194, 218, - 17, 196, -273, 354, 84, 598, 673, 674, 214, 215, - 427, 708, 219, -113, 80, 356, 102, 306, 7, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 9, 10, 199, 11, 121, 122, 123, 95, 480, - 312, 313, 314, 315, 316, 317, 318, 95, 104, -255, - 319, 320, 155, 199, 446, 95, 572, 400, 401, 368, - 369, 321, 322, 690, 691, 692, 323, 324, 312, 313, - 314, 315, 316, 317, 318, 95, 102, 461, 319, 320, - 423, 424, -114, 164, 628, 102, 181, 164, 170, 425, - 426, 390, 95, -112, 427, 324, 102, -75, 428, 254, - 102, 402, 403, 189, 250, 191, 673, 674, 264, -74, - 255, 103, 102, 256, 201, 80, 204, 257, -394, 525, + 81, 82, 96, 98, 145, 92, 93, 141, 179, 39, + 142, 126, 180, 40, 143, 49, 125, 50, 144, 51, + 396, 311, 173, 176, 481, 177, 178, 557, 337, 338, + 469, 528, 598, 390, 280, 574, 577, 7, 80, 622, + 198, 347, 677, 80, 145, 199, 80, 141, 80, 199, + 142, 184, 354, 171, 143, 104, 125, 80, 144, -113, + 677, 182, 102, 185, 186, 187, 188, 637, 442, 678, + 679, 190, 306, 514, 200, 193, 218, 80, 194, 199, + 17, 196, -112, 7, 84, 102, 80, 678, 679, 219, + 164, 415, 110, 111, 164, 356, 114, 115, 116, 117, + 103, 17, 603, 447, 3, 88, 11, 427, -114, -273, + 189, 102, 191, 199, 199, 481, 95, 312, 313, 314, + 315, 316, 317, 318, 95, 667, 199, 319, 320, -255, + -74, 212, 155, 102, 213, 95, 575, 575, 321, 322, + 676, 214, 215, 323, 324, 404, 405, 406, 312, 313, + 314, 315, 316, 317, 318, 95, 701, 462, 319, 320, + 400, 401, 254, 181, 95, 695, 696, 697, 633, 678, + 679, 713, 390, 255, 102, 324, 256, 501, 502, 503, + 257, 393, 394, 395, 250, 80, 402, 403, 264, 170, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 212, 737, -466, 213, 404, 405, 406, 122, 123, 83, - 85, 746, 258, 500, 501, 502, 259, 202, 284, 752, - 286, 589, 87, 90, 303, 704, 203, 80, 299, 209, - 260, 261, 415, 110, 111, 496, 497, 114, 115, 116, - 117, 207, 303, 393, 394, 395, 480, 11, 622, 498, - 499, 623, 488, 489, 210, 199, 211, 222, 220, 221, - 224, 731, 223, 95, 226, 227, 355, 230, 269, 228, - 229, 231, 271, 232, 234, 238, 247, 239, 246, 240, - -467, 125, 417, 418, 419, 420, 591, 281, 282, 285, - 292, 293, 304, 363, 297, 455, 361, 277, 366, 614, - 145, 422, 270, 141, -302, 95, 142, 397, 481, 398, - 143, 482, 125, 416, 144, 103, 399, 480, 449, 451, - 454, 462, 463, 465, 466, 472, 490, 491, 460, 503, - 492, 506, 504, -230, 505, 212, 517, 264, 522, 532, - 537, -325, 546, 552, 145, 145, 551, 141, 141, 553, - 142, 142, 479, 480, 143, 143, 125, 125, 144, 144, - 555, 80, 556, 557, 563, 558, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 573, 559, - 561, 718, 121, 122, 123, 562, 564, 566, 574, 575, - 576, 578, 579, 580, 511, 512, 514, 516, 481, 519, - 581, 482, 584, 585, 597, 514, 610, 586, 587, 590, - 594, 615, 596, 595, 633, 635, 530, 531, 634, -343, - 643, 4, 644, 645, 5, 6, 7, 8, 647, 648, - 652, 640, 656, 657, 660, 665, 667, 683, -352, 95, - 9, 10, 479, 11, 705, 710, 680, 12, 719, 689, - 706, 39, 709, 40, 739, 740, 717, 49, 50, 51, - 13, 14, 15, 16, 713, 720, 730, 732, 741, 17, - 18, 745, 747, 19, 748, 749, 20, 754, 757, 761, - 753, 763, 450, 21, 22, 89, 286, 756, 567, 568, - 760, 23, 569, 570, 86, 447, 495, 565, 493, 664, - 458, 494, 577, 174, 175, 721, 724, 392, -36, 340, - 641, 592, 738, 429, 751, 432, 166, 300, 80, 286, - 606, 646, 550, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 481, 607, 412, 482, 80, - 122, 123, 0, 303, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 9, 10, 0, 11, - 121, 122, 123, 0, 0, 0, 433, 0, 0, 621, - 0, 0, 621, 0, 0, 0, 0, 0, 434, 479, - 0, 0, 0, 0, 0, 0, 81, 630, 0, 0, - 0, 642, 0, 0, 0, 0, 95, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 481, 0, 0, 482, - 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, - 0, 0, 0, 0, 0, 80, 81, 630, 0, 0, + 119, 120, 528, 83, 85, 258, 121, 122, 123, 259, + 87, 90, 497, 498, -394, 499, 500, 742, 489, 490, + -466, 201, 202, 260, 261, 203, 204, 751, 284, 207, + 286, 209, 210, 199, 303, 757, 80, 594, 299, 709, + 211, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 220, 303, 221, 222, 223, 481, 224, 122, 123, + 226, 227, 228, 95, 230, 229, 231, 627, 368, 369, + 628, 232, 234, 238, 240, 736, 355, 239, -467, 269, + 246, 271, 304, 247, 277, 270, 281, 282, 285, 423, + 424, 125, 417, 418, 292, 419, 420, 596, 425, 426, + 293, 297, 103, 427, 361, 363, 366, 428, 429, -302, + 145, 422, 397, 141, 95, 398, 142, 482, 399, 450, + 143, 483, 125, 416, 144, 619, 452, 481, 456, 455, + 463, 464, 466, 467, 473, 491, 492, 493, 461, 504, + 505, 507, -230, 506, 212, 518, 525, 264, 535, 540, + -325, 549, 556, 555, 145, 145, 554, 141, 141, 558, + 142, 142, 480, 481, 143, 143, 125, 125, 144, 144, + 559, 80, 560, 566, 561, 562, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 9, 10, + 564, 11, 121, 122, 123, 565, 567, 569, 576, 723, + 578, 579, 580, 581, 512, 513, 515, 517, 482, 520, + 522, 591, 483, 583, 584, 585, 515, 586, 589, 590, + 600, 615, 412, 592, 80, 595, 599, 533, 534, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 9, 10, 601, 11, 121, 122, 123, 602, 95, + 620, 638, -343, 480, -75, 640, 639, 102, 39, 645, + 648, 649, 40, 650, 49, 652, 50, 653, 51, 661, + 662, 665, 4, 657, 670, 5, 6, 7, 8, 672, + -352, 688, 744, 745, 710, 685, 694, 711, 714, 715, + 718, 9, 10, 722, 11, 724, 725, 286, 12, 570, + 571, 735, 95, 572, 573, 759, 737, 753, 762, 750, + 746, 13, 14, 15, 16, 582, 752, 754, 761, 766, + 17, 18, 768, 89, 19, 758, 86, 20, 765, 494, + 496, 448, 286, 611, 21, 22, 495, 392, 568, 669, + 451, 174, 23, 726, 175, 340, 729, 646, 597, 482, + 459, 430, 743, 483, 756, 80, 303, 166, 433, -36, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 481, 0, 0, 482, 0, 122, 123, 0, - 479, 0, 0, 0, 707, 0, 478, 0, 0, 0, - 0, 145, 0, 0, 141, 81, 712, 142, 722, 0, - 0, 143, 0, 125, 0, 144, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 479, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 303, 303, - 0, 0, 286, 95, 0, 0, 0, 0, 0, 0, - 0, 0, 286, 0, 0, 0, 367, 0, -334, 5, - 286, 303, 8, -334, -334, -334, -334, -334, -334, -334, - -334, -334, -334, -334, -334, 9, 10, 0, 11, 0, - -334, -334, 12, 0, 0, 368, 369, 370, 371, -334, - 0, 0, 0, 0, 0, 13, 0, 0, 0, 384, - 385, 386, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 22, + 119, 120, 9, 10, 434, 11, 121, 122, 123, 553, + 612, 0, 651, 523, 626, 435, 300, 626, 0, 0, + 0, 0, 0, 0, 480, 0, 0, 0, 0, 0, + 0, 81, 635, 0, 0, 0, 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -334, 0, 367, 0, - -334, 5, 0, -60, 8, -334, -334, -334, -334, -334, - -334, -334, -334, -334, -334, -334, -334, 9, 10, 0, - 11, 0, -334, -334, 12, 0, 0, 368, 369, 370, - 371, -334, 0, 0, 0, 0, 0, 13, 0, 0, - 0, 384, 385, 386, 0, 0, 0, 0, 0, 0, + 482, 0, 0, 0, 483, 0, 0, 0, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, + 0, 81, 635, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 482, 0, 0, 0, + 483, 0, 0, 0, 0, 480, 0, 0, 0, 712, + 0, 0, 0, 0, 0, 0, 145, 0, 0, 141, + 81, 717, 142, 727, 0, 0, 143, 0, 125, 0, + 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 480, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 303, 303, 0, 0, 286, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 286, 0, 0, + 0, 367, 0, -334, 5, 286, 303, 8, -334, -334, + -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, + 9, 10, 0, 11, 0, -334, -334, 12, 0, 0, + 368, 369, 370, 371, -334, 0, 0, 0, 0, 0, + 13, 0, 0, 80, 384, 385, 386, 0, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 0, 0, 0, 21, 22, 122, 123, 0, 0, 0, + 0, 0, 0, 0, 479, 0, 0, 0, 0, 0, + 0, -334, 0, 367, 0, -334, 5, 0, -60, 8, + -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, + -334, -334, 9, 10, 0, 11, 0, -334, -334, 12, + 0, 0, 368, 369, 370, 371, -334, 0, 0, 0, + 0, 95, 13, 0, 0, 80, 384, 385, 386, 0, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 0, 0, 0, 21, 22, 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -334, 0, - 367, 0, -334, 5, 0, -479, 8, -334, -334, -334, - -334, -334, -334, -334, -334, -334, -334, -334, -334, 9, - 10, 0, 11, 0, -334, -334, 12, 0, 0, 368, - 369, 370, 371, -334, 0, 0, 0, 0, 0, 13, - 0, 0, 0, 439, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 440, 0, 0, 0, 0, 0, 0, - 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -334, 0, 367, 0, -334, 5, 0, + -479, 8, -334, -334, -334, -334, -334, -334, -334, -334, + -334, -334, -334, -334, 9, 10, 0, 11, 0, -334, + -334, 12, 0, 0, 368, 369, 370, 371, -334, 0, + 0, 0, 0, 95, 13, 0, 0, 0, 440, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 441, 0, + 0, 0, 0, 0, 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -334, 0, 367, 0, -334, 5, 0, -446, 8, -334, - -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, - -334, 9, 10, 0, 11, 0, -334, -334, 12, 0, - 0, 368, 369, 370, 371, -334, 0, 367, 0, -334, - 5, 13, 0, 8, -334, -334, -334, -334, -334, -334, + 0, 0, 0, 0, 0, -334, 0, 367, 0, -334, + 5, 0, -446, 8, -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, 9, 10, 0, 11, - 0, -334, -334, 12, 21, 22, 368, 369, 370, 371, - -334, 0, 0, 0, 0, 0, 13, 0, 0, 0, - 0, 0, -334, 0, 0, 0, 0, 0, 0, -42, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, - 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -334, 0, 367, - 0, -334, 5, 0, -493, 8, -334, -334, -334, -334, - -334, -334, -334, -334, -334, -334, -334, -334, 9, 10, - 0, 11, 0, -334, -334, 12, 0, 0, 368, 369, - 370, 371, -334, 0, 367, 0, -334, 5, 13, 0, + 0, -334, -334, 12, 0, 0, 368, 369, 370, 371, + -334, 0, 367, 0, -334, 5, 13, 0, 8, -334, + -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, + -334, 9, 10, 0, 11, 0, -334, -334, 12, 21, + 22, 368, 369, 370, 371, -334, 0, 0, 0, 0, + 0, 13, 0, 0, 0, 0, 0, -334, 0, 0, + 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -334, 0, 367, 0, -334, 5, 0, -493, 8, -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, 9, 10, 0, 11, 0, -334, -334, - 12, 21, 22, 368, 369, 370, 371, -334, 0, 0, - 0, 0, 0, 13, 0, 0, 0, 0, 0, -334, - 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, - 0, 0, 0, 0, 0, 80, 21, 22, 0, 0, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 9, 10, -334, 11, 121, 122, 123, -2, - 4, -470, 0, 5, 6, 7, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 10, 0, 11, 0, 0, 0, 12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, - 14, 15, 16, 0, 0, 0, 0, 0, 17, 18, - 0, 0, 19, 95, 0, 20, 0, 0, 0, 0, - 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, - 23 + 12, 0, 0, 368, 369, 370, 371, -334, 0, 367, + 0, -334, 5, 13, 0, 8, -334, -334, -334, -334, + -334, -334, -334, -334, -334, -334, -334, -334, 9, 10, + 0, 11, 0, -334, -334, 12, 21, 22, 368, 369, + 370, 371, -334, 0, 0, 0, 0, 0, 13, 0, + 0, 0, 0, 0, -334, 0, 0, 0, -2, 4, + 0, -64, 5, 6, 7, 8, 0, 0, 0, 0, + 0, 21, 22, 0, 0, 0, 0, 0, 9, 10, + 0, 11, 0, 0, 0, 12, 0, 0, 0, -334, + 0, 0, 0, 0, 0, 0, -470, 0, 13, 14, + 15, 16, 0, 0, 0, 0, 0, 17, 18, 0, + 0, 19, 0, 0, 20, 0, 0, 0, 0, 0, + 0, 21, 22, 0, 0, 0, 0, 0, 0, 23 }; static const tao_yytype_int16 tao_yycheck[] = { - 13, 13, 21, 22, 35, 18, 19, 35, 271, 72, - 35, 35, 72, 2, 35, 2, 35, 324, 35, 2, - 2, 2, 72, 72, 72, 72, 366, 471, 542, 381, - 274, 275, 434, 309, 235, 3, 76, 6, 76, 583, - 3, 81, 1, 81, 75, 639, 3, 75, 49, 3, - 75, 75, 53, 72, 75, 3, 75, 3, 75, 1, - 654, 74, 0, 76, 77, 78, 79, 611, 344, 28, - 29, 84, 283, 19, 81, 88, 670, 3, 91, 90, - 49, 94, 86, 294, 53, 60, 28, 29, 8, 9, - 65, 685, 103, 86, 3, 296, 89, 104, 6, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 81, 23, 24, 25, 26, 81, 471, - 74, 75, 76, 77, 78, 79, 80, 81, 28, 88, - 84, 85, 22, 81, 345, 81, 104, 82, 83, 30, - 31, 95, 96, 35, 36, 37, 100, 101, 74, 75, - 76, 77, 78, 79, 80, 81, 89, 358, 84, 85, - 51, 52, 86, 63, 608, 89, 3, 67, 86, 60, - 61, 447, 81, 86, 65, 101, 89, 86, 69, 6, - 89, 95, 96, 83, 197, 85, 28, 29, 207, 86, - 17, 104, 89, 20, 3, 3, 48, 24, 86, 601, + 13, 13, 21, 22, 35, 18, 19, 35, 72, 2, + 35, 35, 72, 2, 35, 2, 35, 2, 35, 2, + 324, 271, 72, 72, 381, 72, 72, 472, 274, 275, + 366, 435, 545, 309, 235, 3, 3, 6, 3, 588, + 76, 283, 1, 3, 75, 81, 3, 75, 3, 81, + 75, 75, 294, 72, 75, 28, 75, 3, 75, 86, + 1, 74, 89, 76, 77, 78, 79, 616, 344, 28, + 29, 84, 104, 19, 76, 88, 90, 3, 91, 81, + 49, 94, 86, 6, 53, 89, 3, 28, 29, 103, + 63, 8, 9, 10, 67, 296, 13, 14, 15, 16, + 104, 49, 60, 345, 0, 53, 23, 65, 86, 86, + 83, 89, 85, 81, 81, 472, 81, 74, 75, 76, + 77, 78, 79, 80, 81, 644, 81, 84, 85, 88, + 86, 8, 22, 89, 11, 81, 104, 104, 95, 96, + 659, 8, 9, 100, 101, 97, 98, 99, 74, 75, + 76, 77, 78, 79, 80, 81, 675, 358, 84, 85, + 82, 83, 6, 3, 81, 35, 36, 37, 613, 28, + 29, 690, 448, 17, 89, 101, 20, 404, 405, 406, + 24, 321, 322, 323, 197, 3, 95, 96, 207, 86, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 8, 725, 86, 11, 97, 98, 99, 25, 26, 14, - 15, 735, 49, 404, 405, 406, 53, 86, 241, 743, - 243, 538, 15, 16, 253, 679, 86, 3, 251, 87, - 67, 68, 8, 9, 10, 400, 401, 13, 14, 15, - 16, 89, 271, 321, 322, 323, 608, 23, 598, 402, - 403, 601, 385, 386, 86, 81, 87, 86, 104, 104, - 87, 715, 86, 81, 86, 86, 295, 87, 8, 86, - 86, 86, 47, 87, 86, 86, 89, 87, 87, 86, - 86, 310, 342, 342, 342, 342, 540, 87, 87, 87, - 87, 87, 3, 3, 89, 3, 90, 101, 90, 572, - 341, 342, 104, 341, 105, 81, 341, 92, 381, 93, - 341, 381, 341, 342, 341, 104, 94, 679, 91, 105, - 90, 87, 90, 103, 103, 88, 88, 86, 357, 103, - 102, 88, 103, 88, 103, 8, 58, 366, 88, 88, - 88, 88, 88, 86, 385, 386, 90, 385, 386, 31, - 385, 386, 381, 715, 385, 386, 385, 386, 385, 386, - 86, 3, 86, 86, 3, 86, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 3, 86, - 86, 698, 24, 25, 26, 86, 86, 102, 86, 86, - 86, 86, 86, 86, 423, 424, 425, 426, 471, 428, - 86, 471, 86, 86, 66, 434, 3, 88, 88, 88, - 88, 101, 88, 90, 86, 103, 439, 440, 87, 35, - 3, 1, 3, 88, 4, 5, 6, 7, 86, 86, - 101, 106, 102, 35, 38, 55, 90, 59, 102, 81, - 20, 21, 471, 23, 90, 62, 102, 27, 89, 102, - 101, 450, 101, 450, 727, 728, 86, 450, 450, 450, - 40, 41, 42, 43, 102, 88, 90, 39, 101, 49, - 50, 89, 86, 53, 102, 102, 56, 750, 76, 90, - 101, 76, 349, 63, 64, 16, 509, 102, 511, 512, - 102, 71, 515, 516, 15, 346, 399, 509, 397, 649, - 353, 398, 525, 72, 72, 701, 703, 310, 88, 276, - 619, 541, 726, 343, 742, 343, 67, 252, 3, 542, - 549, 625, 464, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 608, 551, 1, 608, 3, - 25, 26, -1, 572, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, -1, 23, - 24, 25, 26, -1, -1, -1, 343, -1, -1, 598, - -1, -1, 601, -1, -1, -1, -1, -1, 343, 608, - -1, -1, -1, -1, -1, -1, 609, 609, -1, -1, - -1, 620, -1, -1, -1, -1, 81, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 679, -1, -1, 679, - -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, - -1, -1, -1, -1, -1, 3, 649, 649, -1, -1, + 18, 19, 606, 14, 15, 49, 24, 25, 26, 53, + 15, 16, 400, 401, 86, 402, 403, 730, 385, 386, + 86, 3, 86, 67, 68, 86, 48, 740, 241, 89, + 243, 87, 86, 81, 253, 748, 3, 541, 251, 684, + 87, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 104, 271, 104, 86, 86, 613, 87, 25, 26, + 86, 86, 86, 81, 87, 86, 86, 603, 30, 31, + 606, 87, 86, 86, 86, 720, 295, 87, 86, 8, + 87, 47, 3, 89, 101, 104, 87, 87, 87, 51, + 52, 310, 342, 342, 87, 342, 342, 543, 60, 61, + 87, 89, 104, 65, 90, 3, 90, 69, 70, 105, + 341, 342, 92, 341, 81, 93, 341, 381, 94, 91, + 341, 381, 341, 342, 341, 575, 105, 684, 3, 90, + 87, 90, 103, 103, 88, 88, 86, 102, 357, 103, + 103, 88, 88, 103, 8, 58, 88, 366, 88, 88, + 88, 88, 31, 86, 385, 386, 90, 385, 386, 86, + 385, 386, 381, 720, 385, 386, 385, 386, 385, 386, + 86, 3, 86, 3, 86, 86, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 86, 23, 24, 25, 26, 86, 86, 102, 3, 703, + 3, 86, 86, 86, 423, 424, 425, 426, 472, 428, + 429, 88, 472, 86, 86, 86, 435, 86, 86, 86, + 90, 3, 1, 88, 3, 88, 88, 440, 441, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 88, 23, 24, 25, 26, 66, 81, + 101, 86, 35, 472, 86, 103, 87, 89, 451, 106, + 3, 3, 451, 88, 451, 86, 451, 86, 451, 102, + 35, 38, 1, 101, 55, 4, 5, 6, 7, 90, + 102, 59, 732, 733, 90, 102, 102, 101, 101, 62, + 102, 20, 21, 86, 23, 89, 88, 510, 27, 512, + 513, 90, 81, 516, 517, 755, 39, 102, 76, 89, + 101, 40, 41, 42, 43, 528, 86, 102, 102, 90, + 49, 50, 76, 16, 53, 101, 15, 56, 102, 397, + 399, 346, 545, 552, 63, 64, 398, 310, 510, 654, + 349, 72, 71, 706, 72, 276, 708, 624, 544, 613, + 353, 343, 731, 613, 747, 3, 575, 67, 343, 88, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 715, -1, -1, 715, -1, 25, 26, -1, - 679, -1, -1, -1, 683, -1, 34, -1, -1, -1, - -1, 702, -1, -1, 702, 688, 688, 702, 702, -1, - -1, 702, -1, 702, -1, 702, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 715, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 727, 728, - -1, -1, 725, 81, -1, -1, -1, -1, -1, -1, - -1, -1, 735, -1, -1, -1, 1, -1, 3, 4, - 743, 750, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, -1, 23, -1, - 25, 26, 27, -1, -1, 30, 31, 32, 33, 34, - -1, -1, -1, -1, -1, 40, -1, -1, -1, 44, - 45, 46, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, + 18, 19, 20, 21, 343, 23, 24, 25, 26, 465, + 554, -1, 630, 429, 603, 343, 252, 606, -1, -1, + -1, -1, -1, -1, 613, -1, -1, -1, -1, -1, + -1, 614, 614, -1, -1, -1, 625, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 81, -1, 1, -1, - 3, 4, -1, 88, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, -1, - 23, -1, 25, 26, 27, -1, -1, 30, 31, 32, - 33, 34, -1, -1, -1, -1, -1, 40, -1, -1, - -1, 44, 45, 46, -1, -1, -1, -1, -1, -1, + 684, -1, -1, -1, 684, -1, -1, -1, -1, -1, + -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, + -1, 654, 654, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 720, -1, -1, -1, + 720, -1, -1, -1, -1, 684, -1, -1, -1, 688, + -1, -1, -1, -1, -1, -1, 707, -1, -1, 707, + 693, 693, 707, 707, -1, -1, 707, -1, 707, -1, + 707, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 720, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 732, 733, -1, -1, 730, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 740, -1, -1, + -1, 1, -1, 3, 4, 748, 755, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, -1, 23, -1, 25, 26, 27, -1, -1, + 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, + 40, -1, -1, 3, 44, 45, 46, -1, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + -1, -1, -1, 63, 64, 25, 26, -1, -1, -1, + -1, -1, -1, -1, 34, -1, -1, -1, -1, -1, + -1, 81, -1, 1, -1, 3, 4, -1, 88, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, -1, 23, -1, 25, 26, 27, + -1, -1, 30, 31, 32, 33, 34, -1, -1, -1, + -1, 81, 40, -1, -1, 3, 44, 45, 46, -1, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, -1, -1, -1, 63, 64, 25, 26, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, - 1, -1, 3, 4, -1, 88, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, -1, 23, -1, 25, 26, 27, -1, -1, 30, - 31, 32, 33, 34, -1, -1, -1, -1, -1, 40, - -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, - -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 81, -1, 1, -1, 3, 4, -1, + 88, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, -1, 23, -1, 25, + 26, 27, -1, -1, 30, 31, 32, 33, 34, -1, + -1, -1, -1, 81, 40, -1, -1, -1, 44, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 54, -1, + -1, -1, -1, -1, -1, -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 81, -1, 1, -1, 3, 4, -1, 88, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, -1, 23, -1, 25, 26, 27, -1, - -1, 30, 31, 32, 33, 34, -1, 1, -1, 3, - 4, 40, -1, 7, 8, 9, 10, 11, 12, 13, + -1, -1, -1, -1, -1, 81, -1, 1, -1, 3, + 4, -1, 88, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, -1, 23, - -1, 25, 26, 27, 63, 64, 30, 31, 32, 33, - 34, -1, -1, -1, -1, -1, 40, -1, -1, -1, - -1, -1, 81, -1, -1, -1, -1, -1, -1, 88, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, - 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 81, -1, 1, - -1, 3, 4, -1, 88, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - -1, 23, -1, 25, 26, 27, -1, -1, 30, 31, - 32, 33, 34, -1, 1, -1, 3, 4, 40, -1, + -1, 25, 26, 27, -1, -1, 30, 31, 32, 33, + 34, -1, 1, -1, 3, 4, 40, -1, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, -1, 23, -1, 25, 26, 27, 63, + 64, 30, 31, 32, 33, 34, -1, -1, -1, -1, + -1, 40, -1, -1, -1, -1, -1, 81, -1, -1, + -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 63, 64, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 81, -1, 1, -1, 3, 4, -1, 88, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, -1, 23, -1, 25, 26, - 27, 63, 64, 30, 31, 32, 33, 34, -1, -1, - -1, -1, -1, 40, -1, -1, -1, -1, -1, 81, - -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, - -1, -1, -1, -1, -1, 3, 63, 64, -1, -1, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 81, 23, 24, 25, 26, 0, - 1, 88, -1, 4, 5, 6, 7, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, - 21, -1, 23, -1, -1, -1, 27, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, - 41, 42, 43, -1, -1, -1, -1, -1, 49, 50, - -1, -1, 53, 81, -1, 56, -1, -1, -1, -1, - -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, - 71 + 27, -1, -1, 30, 31, 32, 33, 34, -1, 1, + -1, 3, 4, 40, -1, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + -1, 23, -1, 25, 26, 27, 63, 64, 30, 31, + 32, 33, 34, -1, -1, -1, -1, -1, 40, -1, + -1, -1, -1, -1, 81, -1, -1, -1, 0, 1, + -1, 88, 4, 5, 6, 7, -1, -1, -1, -1, + -1, 63, 64, -1, -1, -1, -1, -1, 20, 21, + -1, 23, -1, -1, -1, 27, -1, -1, -1, 81, + -1, -1, -1, -1, -1, -1, 88, -1, 40, 41, + 42, 43, -1, -1, -1, -1, -1, 49, 50, -1, + -1, 53, -1, -1, 56, -1, -1, -1, -1, -1, + -1, 63, 64, -1, -1, -1, -1, -1, -1, 71 }; /* TAO_YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1723,41 +1717,41 @@ static const tao_yytype_uint16 tao_yystos[] = 162, 319, 202, 194, 194, 194, 186, 92, 93, 94, 82, 83, 95, 96, 97, 98, 99, 277, 283, 287, 231, 233, 1, 201, 236, 8, 174, 216, 221, 222, - 223, 249, 266, 51, 52, 60, 61, 65, 69, 296, - 365, 372, 380, 382, 383, 385, 386, 387, 464, 44, - 54, 162, 402, 404, 407, 410, 161, 158, 435, 91, - 109, 105, 291, 293, 90, 3, 271, 274, 233, 149, - 174, 155, 87, 90, 441, 103, 103, 448, 446, 170, - 298, 303, 88, 166, 163, 168, 167, 169, 34, 174, - 203, 281, 285, 318, 341, 164, 165, 320, 236, 236, - 88, 86, 102, 188, 189, 190, 191, 191, 192, 192, - 193, 193, 193, 103, 103, 103, 88, 234, 239, 237, - 245, 174, 174, 19, 174, 381, 174, 58, 384, 174, - 465, 378, 88, 373, 374, 381, 375, 376, 377, 379, - 177, 177, 88, 405, 406, 420, 429, 88, 183, 129, - 294, 292, 209, 270, 272, 311, 88, 394, 454, 173, - 442, 90, 86, 31, 341, 86, 86, 86, 86, 86, - 313, 86, 86, 3, 86, 207, 102, 177, 177, 177, - 177, 3, 104, 3, 86, 86, 86, 177, 86, 86, - 86, 86, 408, 411, 86, 86, 88, 88, 185, 186, - 88, 196, 293, 210, 88, 90, 88, 66, 60, 380, - 382, 383, 457, 459, 462, 463, 174, 449, 299, 304, - 3, 321, 238, 246, 171, 101, 323, 323, 295, 273, - 395, 174, 446, 446, 455, 458, 460, 461, 341, 211, - 214, 314, 323, 86, 87, 103, 324, 325, 409, 412, - 106, 274, 174, 3, 3, 88, 459, 86, 86, 300, - 305, 212, 101, 332, 322, 247, 102, 35, 326, 329, - 38, 343, 343, 396, 211, 55, 346, 90, 333, 334, - 315, 343, 1, 28, 29, 250, 252, 256, 258, 330, - 102, 327, 344, 59, 399, 301, 347, 306, 213, 102, - 35, 36, 37, 335, 338, 342, 343, 255, 260, 259, - 248, 251, 253, 257, 341, 90, 101, 174, 343, 101, - 62, 349, 214, 102, 336, 339, 316, 86, 186, 89, - 88, 252, 201, 262, 258, 331, 328, 345, 348, 350, - 90, 341, 39, 352, 261, 263, 254, 210, 329, 171, - 171, 101, 337, 340, 353, 89, 210, 86, 102, 102, - 351, 338, 210, 101, 171, 354, 102, 76, 355, 356, - 102, 90, 357, 76 + 223, 249, 266, 51, 52, 60, 61, 65, 69, 70, + 296, 365, 372, 380, 382, 383, 385, 386, 387, 464, + 44, 54, 162, 402, 404, 407, 410, 161, 158, 435, + 91, 109, 105, 291, 293, 90, 3, 271, 274, 233, + 149, 174, 155, 87, 90, 441, 103, 103, 448, 446, + 170, 298, 303, 88, 166, 163, 168, 167, 169, 34, + 174, 203, 281, 285, 318, 341, 164, 165, 320, 236, + 236, 88, 86, 102, 188, 189, 190, 191, 191, 192, + 192, 193, 193, 193, 103, 103, 103, 88, 234, 239, + 237, 245, 174, 174, 19, 174, 381, 174, 58, 384, + 174, 465, 174, 465, 378, 88, 373, 374, 381, 375, + 376, 377, 379, 177, 177, 88, 405, 406, 420, 429, + 88, 183, 129, 294, 292, 209, 270, 272, 311, 88, + 394, 454, 173, 442, 90, 86, 31, 341, 86, 86, + 86, 86, 86, 313, 86, 86, 3, 86, 207, 102, + 177, 177, 177, 177, 3, 104, 3, 3, 3, 86, + 86, 86, 177, 86, 86, 86, 86, 408, 411, 86, + 86, 88, 88, 185, 186, 88, 196, 293, 210, 88, + 90, 88, 66, 60, 380, 382, 383, 457, 459, 462, + 463, 174, 449, 299, 304, 3, 321, 238, 246, 171, + 101, 323, 323, 295, 273, 395, 174, 446, 446, 455, + 458, 460, 461, 341, 211, 214, 314, 323, 86, 87, + 103, 324, 325, 409, 412, 106, 274, 174, 3, 3, + 88, 459, 86, 86, 300, 305, 212, 101, 332, 322, + 247, 102, 35, 326, 329, 38, 343, 343, 396, 211, + 55, 346, 90, 333, 334, 315, 343, 1, 28, 29, + 250, 252, 256, 258, 330, 102, 327, 344, 59, 399, + 301, 347, 306, 213, 102, 35, 36, 37, 335, 338, + 342, 343, 255, 260, 259, 248, 251, 253, 257, 341, + 90, 101, 174, 343, 101, 62, 349, 214, 102, 336, + 339, 316, 86, 186, 89, 88, 252, 201, 262, 258, + 331, 328, 345, 348, 350, 90, 341, 39, 352, 261, + 263, 254, 210, 329, 171, 171, 101, 337, 340, 353, + 89, 210, 86, 102, 102, 351, 338, 210, 101, 171, + 354, 102, 76, 355, 356, 102, 90, 357, 76 }; #define tao_yyerrok (tao_yyerrstatus = 0) @@ -9191,20 +9185,214 @@ tao_yyreduce: { // extended_port_decl : IDL_PORT template_inst IDENTIFIER + idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen); + UTL_Scope *s = idl_global->scopes ().top_non_null (); + AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].tival)->name_, true); + AST_PortType *pt = 0; + bool so_far_so_good = true; + + if (d == 0) + { + idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].tival)->name_); + so_far_so_good = false; + } + else + { + pt = AST_PortType::narrow_from_decl (d); + + if (pt == 0) + { + idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED, + d); + so_far_so_good = false; + } + } + + if (so_far_so_good) + { + Identifier id ((tao_yyvsp[(3) - (3)].strval)); + ACE::strdelete ((tao_yyvsp[(3) - (3)].strval)); + (tao_yyvsp[(3) - (3)].strval) = 0; + + UTL_ScopedName sn (&id, + 0); + + AST_Extended_Port *ep = + idl_global->gen ()->create_extended_port ( + &sn, + pt, + (tao_yyvsp[(2) - (3)].tival)->args_); + + (void) s->fe_add_extended_port (ep); + } + + (tao_yyvsp[(2) - (3)].tival)->destroy (); + delete (tao_yyvsp[(2) - (3)].tival); + (tao_yyvsp[(2) - (3)].tival) = 0; } break; case 533: { -// | IDL_PORT scoped_name IDENTIFIER +// extended_port_decl : IDL_PORT scoped_name IDENTIFIER + idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen); + UTL_Scope *s = idl_global->scopes ().top_non_null (); + AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].idlist), true); + AST_PortType *pt = 0; + bool so_far_so_good = true; + + if (d == 0) + { + idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].idlist)); + so_far_so_good = false; + } + else + { + pt = AST_PortType::narrow_from_decl (d); + + if (pt == 0) + { + idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED, + d); + so_far_so_good = false; + } + } + + if (so_far_so_good) + { + Identifier id ((tao_yyvsp[(3) - (3)].strval)); + ACE::strdelete ((tao_yyvsp[(3) - (3)].strval)); + (tao_yyvsp[(3) - (3)].strval) = 0; + + UTL_ScopedName sn (&id, + 0); + + AST_Extended_Port *ep = + idl_global->gen ()->create_extended_port ( + &sn, + pt, + 0); + + (void) s->fe_add_extended_port (ep); + } + + (tao_yyvsp[(2) - (3)].idlist)->destroy (); + delete (tao_yyvsp[(2) - (3)].idlist); + (tao_yyvsp[(2) - (3)].idlist) = 0; } break; case 534: + { +// | IDL_MIRRORPORT template_inst IDENTIFIER + idl_global->set_parse_state (IDL_GlobalData::PS_MirrorPortDeclSeen); + UTL_Scope *s = idl_global->scopes ().top_non_null (); + AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].tival)->name_, true); + AST_PortType *pt = 0; + bool so_far_so_good = true; + + if (d == 0) + { + idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].tival)->name_); + so_far_so_good = false; + } + else + { + pt = AST_PortType::narrow_from_decl (d); + + if (pt == 0) + { + idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED, + d); + so_far_so_good = false; + } + } + + if (so_far_so_good) + { + Identifier id ((tao_yyvsp[(3) - (3)].strval)); + ACE::strdelete ((tao_yyvsp[(3) - (3)].strval)); + (tao_yyvsp[(3) - (3)].strval) = 0; + + UTL_ScopedName sn (&id, + 0); + + AST_Mirror_Port *mp = + idl_global->gen ()->create_mirror_port ( + &sn, + pt, + (tao_yyvsp[(2) - (3)].tival)->args_); + + (void) s->fe_add_mirror_port (mp); + } + + (tao_yyvsp[(2) - (3)].tival)->destroy (); + delete (tao_yyvsp[(2) - (3)].tival); + (tao_yyvsp[(2) - (3)].tival) = 0; + } + break; + + case 535: + + { +// | IDL_MIRRORPORT scoped_name IDENTIFIER + idl_global->set_parse_state (IDL_GlobalData::PS_MirrorPortDeclSeen); + UTL_Scope *s = idl_global->scopes ().top_non_null (); + AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].idlist), true); + AST_PortType *pt = 0; + bool so_far_so_good = true; + + if (d == 0) + { + idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].idlist)); + so_far_so_good = false; + } + else + { + pt = AST_PortType::narrow_from_decl (d); + + if (pt == 0) + { + idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED, + d); + so_far_so_good = false; + } + } + + if (so_far_so_good) + { + Identifier id ((tao_yyvsp[(3) - (3)].strval)); + ACE::strdelete ((tao_yyvsp[(3) - (3)].strval)); + (tao_yyvsp[(3) - (3)].strval) = 0; + + UTL_ScopedName sn (&id, + 0); + + AST_Mirror_Port *mp = + idl_global->gen ()->create_mirror_port ( + &sn, + pt, + 0); + + (void) s->fe_add_mirror_port (mp); + } + + (tao_yyvsp[(2) - (3)].idlist)->destroy (); + delete (tao_yyvsp[(2) - (3)].idlist); + (tao_yyvsp[(2) - (3)].idlist) = 0; + } + break; + + case 536: + { // template_inst : scoped_name '<' at_least_one_scoped_name '>' + ACE_NEW_RETURN ((tao_yyval.tival), + FE_Utils::T_Inst_Info ((tao_yyvsp[(1) - (4)].idlist), + (tao_yyvsp[(3) - (4)].nlval)), + 1); } break; diff --git a/modules/TAO/TAO_IDL/fe/y.tab.h b/modules/TAO/TAO_IDL/fe/y.tab.h index 819244451ae..0a760a660ff 100644 --- a/modules/TAO/TAO_IDL/fe/y.tab.h +++ b/modules/TAO/TAO_IDL/fe/y.tab.h @@ -254,6 +254,7 @@ typedef union TAO_YYSTYPE FE_Utils::T_PARAMLIST_INFO *plval; /* List of template params */ FE_Utils::T_Ref_Info *trval; /* Template interface info */ FE_Utils::T_REFLIST_INFO *rlval; /* List of above structs */ + FE_Utils::T_Inst_Info *tival; /* Template instantiation */ } /* Line 1489 of yacc.c. */ diff --git a/modules/TAO/TAO_IDL/include/ast_component.h b/modules/TAO/TAO_IDL/include/ast_component.h index 8ae95daca01..808a1823fc6 100644 --- a/modules/TAO/TAO_IDL/include/ast_component.h +++ b/modules/TAO/TAO_IDL/include/ast_component.h @@ -62,7 +62,7 @@ public: // Visiting. virtual int ast_accept (ast_visitor *visitor); - + protected: virtual AST_Provides *fe_add_provides (AST_Provides *p); @@ -73,7 +73,7 @@ protected: virtual AST_Emits *fe_add_emits (AST_Emits *p); virtual AST_Consumes *fe_add_consumes (AST_Consumes *p); - + virtual AST_Extended_Port *fe_add_extended_port (AST_Extended_Port *p); virtual AST_Mirror_Port *fe_add_mirror_port (AST_Mirror_Port *p); diff --git a/modules/TAO/TAO_IDL/include/ast_extended_port.h b/modules/TAO/TAO_IDL/include/ast_extended_port.h index 1c677e91261..8d239f7be4b 100644 --- a/modules/TAO/TAO_IDL/include/ast_extended_port.h +++ b/modules/TAO/TAO_IDL/include/ast_extended_port.h @@ -19,7 +19,7 @@ public: UTL_NameList *template_args); virtual ~AST_Extended_Port (void); - + AST_PortType *port_type (void) const; UTL_NameList *template_args (void) const; diff --git a/modules/TAO/TAO_IDL/include/fe_utils.h b/modules/TAO/TAO_IDL/include/fe_utils.h index 39c4e66c480..3de5df8cdc7 100644 --- a/modules/TAO/TAO_IDL/include/fe_utils.h +++ b/modules/TAO/TAO_IDL/include/fe_utils.h @@ -10,6 +10,7 @@ class UTL_StrList; class UTL_IdList; typedef UTL_IdList UTL_ScopedName; +class UTL_NameList; struct TAO_IDL_FE_Export FE_Utils { @@ -34,35 +35,15 @@ struct TAO_IDL_FE_Export FE_Utils typedef ACE_Unbounded_Queue T_REFLIST_INFO; - enum Port_Kind + struct T_Inst_Info { - PROVIDES, - USES, - PUBLISHES, - CONSUMES, - EMITS, - EXT_PROVIDES, - EXT_USES, - EXT_PORT - }; - - struct Ext_Port_Description - { - Port_Kind port_kind_; - Identifier *port_name_; - T_Ref_Info *obj_ref_; - bool is_multiple_; + UTL_ScopedName *name_; + UTL_NameList *args_; - Ext_Port_Description (void); - Ext_Port_Description (Port_Kind port_kind, - Identifier *port_name, - T_Ref_Info *obj_ref, - bool is_multiple = false); + T_Inst_Info (UTL_ScopedName *n, UTL_NameList *args); void destroy (void); }; - - typedef ACE_Unbounded_Queue EXT_PORTLIST_INFO; }; #endif /* FE_UTILS_H */ \ No newline at end of file diff --git a/modules/TAO/TAO_IDL/include/idl_global.h b/modules/TAO/TAO_IDL/include/idl_global.h index 7247f8d7f7d..3be0a487e0a 100644 --- a/modules/TAO/TAO_IDL/include/idl_global.h +++ b/modules/TAO/TAO_IDL/include/idl_global.h @@ -124,6 +124,7 @@ public: , PS_FinderDeclSeen // Seen complete finder declaration , PS_ConsumesDeclSeen // Seen complete subscribes declaration , PS_ExtendedPortDeclSeen // Seen extended port + , PS_MirrorPortDeclSeen // Seen mirror port , PS_ModuleSeen // Seen a MODULE keyword , PS_ModuleIDSeen // Seen the module ID , PS_ModuleSqSeen // '{' seen for module diff --git a/modules/TAO/TAO_IDL/include/utl_err.h b/modules/TAO/TAO_IDL/include/utl_err.h index 83392aa3fa5..a47fd06062a 100644 --- a/modules/TAO/TAO_IDL/include/utl_err.h +++ b/modules/TAO/TAO_IDL/include/utl_err.h @@ -118,6 +118,7 @@ public: EIDL_ABSTRACT_EXPECTED, // We got something else.. EIDL_EVENTTYPE_EXPECTED, // We got something else.. EIDL_TMPL_IFACE_EXPECTED, // We got something else.. + EIDL_PORTTYPE_EXPECTED, // We got something else.. EIDL_NAME_CASE_ERROR, // Identifier spellings differ only in case EIDL_NAME_CASE_WARNING, // Same as above, but only a warning EIDL_KEYWORD_ERROR, // Case-insensitive clash with IDL keyword diff --git a/modules/TAO/TAO_IDL/include/utl_scope.h b/modules/TAO/TAO_IDL/include/utl_scope.h index 1c9f9defbb8..a606c65fe8d 100644 --- a/modules/TAO/TAO_IDL/include/utl_scope.h +++ b/modules/TAO/TAO_IDL/include/utl_scope.h @@ -125,6 +125,8 @@ class AST_Uses; class AST_Publishes; class AST_Emits; class AST_Consumes; +class AST_Extended_Port; +class AST_Mirror_Port; class UTL_StrList; class UTL_NameList; @@ -453,6 +455,10 @@ private: virtual AST_Emits *fe_add_emits (AST_Emits *p); virtual AST_Consumes *fe_add_consumes (AST_Consumes *p); + + virtual AST_Extended_Port *fe_add_extended_port (AST_Extended_Port *ep); + + virtual AST_Mirror_Port *fe_add_mirror_port (AST_Mirror_Port *mp); }; // Active iterator for a UTL_Scope node diff --git a/modules/TAO/TAO_IDL/util/utl_err.cpp b/modules/TAO/TAO_IDL/util/utl_err.cpp index 493d37bc795..a9ecddc5511 100644 --- a/modules/TAO/TAO_IDL/util/utl_err.cpp +++ b/modules/TAO/TAO_IDL/util/utl_err.cpp @@ -167,6 +167,8 @@ error_string (UTL_Error::ErrorCode c) return "event type expected: "; case UTL_Error::EIDL_TMPL_IFACE_EXPECTED: return "template interface expected: "; + case UTL_Error::EIDL_PORTTYPE_EXPECTED: + return "porttype expected: "; case UTL_Error::EIDL_EVAL_ERROR: return "expression evaluation error: "; case UTL_Error::EIDL_INCOMPATIBLE_TYPE: @@ -338,6 +340,8 @@ parse_state_to_error_message (IDL_GlobalData::ParseState ps) return "Malformed consumes declaration"; case IDL_GlobalData::PS_ExtendedPortDeclSeen: return "Malformed extended port declaration"; + case IDL_GlobalData::PS_MirrorPortDeclSeen: + return "Malformed mirror port declaration"; case IDL_GlobalData::PS_FactoryDeclSeen: return "Malformed factory declaration"; case IDL_GlobalData::PS_FinderDeclSeen: diff --git a/modules/TAO/TAO_IDL/util/utl_scope.cpp b/modules/TAO/TAO_IDL/util/utl_scope.cpp index e9fe4cd8ebd..f6dc776430b 100644 --- a/modules/TAO/TAO_IDL/util/utl_scope.cpp +++ b/modules/TAO/TAO_IDL/util/utl_scope.cpp @@ -1269,6 +1269,18 @@ UTL_Scope::fe_add_consumes (AST_Consumes *) return 0; } +AST_Extended_Port * +UTL_Scope::fe_add_extended_port (AST_Extended_Port *) +{ + return 0; +} + +AST_Mirror_Port * +UTL_Scope::fe_add_mirror_port (AST_Mirror_Port *) +{ + return 0; +} + // This is the second pass of the front end // It calls the public add protocol on everything in scope. // It calls the add_xx functions of the most derived AST_Node. @@ -1715,12 +1727,12 @@ UTL_Scope::lookup_by_name_local (Identifier *e, } t = (0 == d ? 0 : AST_Type::narrow_from_decl (d)); - + if (0 != t && full_def_only && !t->is_defined ()) { continue; } - + return d; } else @@ -1746,12 +1758,12 @@ UTL_Scope::lookup_by_name_local (Identifier *e, AST_Module *m = AST_Module::narrow_from_decl (last_chance); d = m->look_in_previous (e); t = (0 == d ? 0 : AST_Type::narrow_from_decl (d)); - + if (0 != t && full_def_only && !t->is_defined ()) { return 0; } - + return d; } else @@ -1836,13 +1848,13 @@ UTL_Scope::lookup_by_name (UTL_ScopedName *e, { // A no-op unless d can inherit. d = look_in_inherited (e, treat_as_ref); - + if (0 == d) { // A no-op unless d can support interfaces. d = look_in_supported (e, treat_as_ref); } - + if ((0 == d) && in_parent) { if (full_def_only && (0 != first_one_found)) @@ -1973,7 +1985,7 @@ UTL_Scope::lookup_by_name (UTL_ScopedName *e, } } } - + // OK, now return whatever we found. return d; } @@ -2571,7 +2583,7 @@ UTL_Scope::destroy (void) this->pd_decls = 0; this->pd_decls_used = 0; this->pd_locals_used = 0; - + for (long i = this->pd_name_referenced_used; i > 0; --i) { Identifier *id = this->pd_name_referenced[i - 1]; -- cgit v1.2.1