From 66e1cc29bc5d8ca98a4c9466e24ff839dd3c3ef9 Mon Sep 17 00:00:00 2001 From: Daniel Zaoui Date: Fri, 14 Mar 2014 13:04:33 +0200 Subject: [PATCH] Eolian/Lexer: support of @own tag on parameter and return values. This tag indicates that the ownership of the parameter/return value changes. It is needed by generators (C++/LUA...) to determine if it has to be freed or not, if it can be used as is or need to be copied... --- src/lib/eolian/Eolian.h | 25 + src/lib/eolian/eo_definitions.c | 8 +- src/lib/eolian/eo_definitions.h | 6 +- src/lib/eolian/eo_lexer.c | 2523 +++++++++++++++++++------------------- src/lib/eolian/eo_lexer.rl | 146 ++- src/lib/eolian/eolian_database.c | 46 + src/lib/eolian/eolian_database.h | 5 + 7 files changed, 1435 insertions(+), 1324 deletions(-) diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h index b98c340..212002a 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -441,6 +441,16 @@ EAPI Eina_Bool eolian_parameter_get_const_attribute_get(Eolian_Function_Paramete EAPI Eina_Bool eolian_parameter_is_nonull(Eolian_Function_Parameter param_desc); /* + * @brief Indicates if the ownership of tha parameter passes to the caller/callee.. + * + * @param[in] param_desc parameter handle + * @return EINA_TRUE if cannot be NULL, EINA_FALSE otherwise + * + * @ingroup Eolian + */ +EAPI Eina_Bool eolian_parameter_is_own(Eolian_Function_Parameter param_desc); + +/* * @brief Get the return type of a function. * * @param[in] function_id id of the function @@ -484,6 +494,21 @@ eolian_function_return_comment_get(Eolian_Function foo_id, Eolian_Function_Type EAPI Eina_Bool eolian_function_return_is_warn_unused(Eolian_Function foo_id, Eolian_Function_Type ftype); /* + * @brief returns the own flag of a function + * + * @param[in] function_id id of the function + * @param[in] ftype type of the function + * @return the own flag. + * + * The type of the function is needed because a given function can represent a + * property, that can be set and get functions. + * + * @ingroup Eolian + */ +EAPI Eina_Bool +eolian_function_return_own_get(Eolian_Function foo_id, Eolian_Function_Type ftype); + +/* * @brief Indicates if a function object is const. * * @param[in] function_id id of the function diff --git a/src/lib/eolian/eo_definitions.c b/src/lib/eolian/eo_definitions.c index 6d1996a..aec0ab5 100644 --- a/src/lib/eolian/eo_definitions.c +++ b/src/lib/eolian/eo_definitions.c @@ -8,7 +8,7 @@ eo_definitions_ret_free(Eo_Ret_Def *ret) { if (ret->type) eina_stringshare_del(ret->type); if (ret->comment) eina_stringshare_del(ret->comment); - /* do not free */ + free(ret); } static void @@ -41,7 +41,8 @@ eo_definitions_accessor_free(Eo_Accessor_Def *accessor) EINA_LIST_FREE(accessor->params, param) eo_definitions_accessor_param_free(param); - eo_definitions_ret_free(&accessor->ret); + if (accessor->ret) + eo_definitions_ret_free(accessor->ret); free(accessor); } @@ -72,7 +73,8 @@ eo_definitions_method_def_free(Eo_Method_Def *meth) { Eo_Param_Def *param; - eo_definitions_ret_free(&meth->ret); + if (meth->ret) + eo_definitions_ret_free(meth->ret); if (meth->name) eina_stringshare_del(meth->name); diff --git a/src/lib/eolian/eo_definitions.h b/src/lib/eolian/eo_definitions.h index f101679..1e8f2a3 100644 --- a/src/lib/eolian/eo_definitions.h +++ b/src/lib/eolian/eo_definitions.h @@ -11,6 +11,7 @@ typedef struct _eo_ret_def const char *type; const char *comment; Eina_Bool warn_unused:1; + Eina_Bool own:1; } Eo_Ret_Def; /* PARAM */ @@ -30,6 +31,7 @@ typedef struct _eo_param_def const char *name; const char *comment; Eina_Bool nonull:1; + Eina_Bool own:1; } Eo_Param_Def; /* ACCESSOR */ @@ -50,7 +52,7 @@ typedef struct _eo_accessor_param typedef struct _eo_accessor_def { Eo_Accessor_Type type; - Eo_Ret_Def ret; + Eo_Ret_Def *ret; const char *comment; const char* legacy; Eina_List *params; /* List of Eo_Accessor_Param */ @@ -77,7 +79,7 @@ typedef enum _eo_method_type { typedef struct _eo_method_def { - Eo_Ret_Def ret; + Eo_Ret_Def *ret; Eo_Method_Type type; const char *name; const char *comment; diff --git a/src/lib/eolian/eo_lexer.c b/src/lib/eolian/eo_lexer.c index 27a9893..af94f1b 100644 --- a/src/lib/eolian/eo_lexer.c +++ b/src/lib/eolian/eo_lexer.c @@ -181,22 +181,30 @@ _eo_tokenizer_param_get(Eo_Tokenizer *toknz, char *p) Eo_Param_Def *param = calloc(1, sizeof(Eo_Param_Def)); if (param == NULL) ABORT(toknz, "calloc Eo_Param_Def failure"); - /* If @nonull is found, we set s as the end of the string and - update the boolean. Otherwise we set the end as the character - before the ';'. - We need to modify temporarily p because we want strstr to stop - at the ';' maximum. p represents the end of the string to search - inside. + /* The next code part tries to identify the different tags of the + parameter. + First, we set the ';' to '\0', to search only inside this section. + We then strstr the different tags and if found, we update the internal + flag and clear the zone of the text. In this way, during the + determination of the type/variable, we will not be disturbed by the + flags. + We have to put back the ';' at the end. */ *p = '\0'; s = strstr(toknz->saved.tok, "@nonull"); - *p = ';'; if (s) { param->nonull = EINA_TRUE; - p = s; + memset(s, ' ', 7); + } + s = strstr(toknz->saved.tok, "@own"); + if (s) + { + param->own = EINA_TRUE; + memset(s, ' ', 4); } - s = p - 1; /* Don't look at the current character (';' or '@') */ + *p = ';'; + s = p - 1; /* Don't look at the character ';' */ /* Remove any space between the param name and ';'/@nonull * This loop fixes the case where "char *name ;" becomes the type of the param. */ @@ -236,6 +244,43 @@ _eo_tokenizer_param_get(Eo_Tokenizer *toknz, char *p) return param; } +static Eo_Ret_Def* +_eo_tokenizer_return_get(Eo_Tokenizer *toknz, char *p) +{ + char *s; + + Eo_Ret_Def *ret = calloc(1, sizeof(Eo_Ret_Def)); + if (ret == NULL) ABORT(toknz, "calloc Eo_Ret_Def failure"); + + *p = '\0'; + s = strstr(toknz->saved.tok, "@warn_unused"); + if (s) + { + ret->warn_unused = EINA_TRUE; + memset(s, ' ', 12); + } + s = strstr(toknz->saved.tok, "@own"); + if (s) + { + ret->own = EINA_TRUE; + memset(s, ' ', 4); + } + *p = ';'; + s = p - 1; /* Don't look at the character ';' */ + /* Remove any space between the param name and ';' + * This loop fixes the case where "char *name ;" becomes the type of the param. + */ + while (*s == ' ') s--; + + if (s == toknz->saved.tok) + ABORT(toknz, "wrong parameter: %s", _eo_tokenizer_token_get(toknz, p)); + s++; + + ret->type = _eo_tokenizer_token_get(toknz, s); + + return ret; +} + static Eo_Accessor_Param* _eo_tokenizer_accessor_param_get(Eo_Tokenizer *toknz, char *p) { @@ -284,21 +329,21 @@ _eo_tokenizer_implement_get(Eo_Tokenizer *toknz, char *p) } -#line 358 "lib/eolian/eo_lexer.rl" +#line 403 "lib/eolian/eo_lexer.rl" -#line 292 "lib/eolian/eo_lexer.c" +#line 337 "lib/eolian/eo_lexer.c" static const char _eo_tokenizer_actions[] = { - 0, 1, 0, 1, 2, 1, 3, 1, - 7, 1, 11, 1, 12, 1, 17, 1, + 0, 1, 0, 1, 2, 1, 6, 1, + 10, 1, 15, 1, 16, 1, 17, 1, 18, 1, 19, 1, 20, 1, 21, 1, 22, 1, 23, 1, 24, 1, 25, 1, 26, 1, 27, 1, 28, 1, 29, 1, 30, 1, 31, 1, 32, 1, 33, 1, 34, 1, 35, 1, 36, 1, 37, 1, - 38, 1, 39, 1, 40, 1, 41, 1, - 42, 1, 45, 1, 46, 1, 47, 1, + 38, 1, 39, 1, 40, 1, 43, 1, + 44, 1, 45, 1, 46, 1, 47, 1, 48, 1, 49, 1, 50, 1, 51, 1, 52, 1, 53, 1, 54, 1, 55, 1, 56, 1, 57, 1, 58, 1, 59, 1, @@ -307,7 +352,7 @@ static const char _eo_tokenizer_actions[] = { 68, 1, 69, 1, 70, 1, 71, 1, 72, 1, 73, 1, 74, 1, 75, 1, 76, 1, 77, 1, 78, 1, 79, 1, - 80, 1, 81, 1, 82, 1, 83, 1, + 80, 1, 81, 1, 84, 1, 85, 1, 86, 1, 87, 1, 88, 1, 89, 1, 90, 1, 91, 1, 92, 1, 93, 1, 94, 1, 95, 1, 96, 1, 97, 1, @@ -317,23 +362,22 @@ static const char _eo_tokenizer_actions[] = { 110, 1, 111, 1, 112, 1, 113, 1, 114, 1, 115, 1, 116, 1, 117, 1, 118, 1, 119, 1, 120, 1, 121, 1, - 122, 1, 123, 1, 124, 1, 125, 1, - 126, 2, 0, 42, 2, 0, 53, 2, - 0, 62, 2, 0, 73, 2, 0, 82, - 2, 0, 94, 2, 0, 103, 2, 0, - 121, 2, 4, 48, 2, 6, 43, 2, - 7, 2, 2, 8, 44, 2, 9, 57, - 2, 11, 0, 2, 11, 74, 2, 13, - 89, 2, 15, 84, 2, 16, 85, 2, - 17, 0, 2, 17, 95, 2, 18, 0, - 2, 19, 0, 2, 19, 122, 2, 20, - 0, 2, 21, 0, 2, 21, 2, 2, - 25, 0, 2, 26, 0, 2, 26, 2, - 2, 27, 0, 2, 29, 0, 2, 30, - 0, 2, 30, 2, 2, 37, 0, 2, - 37, 122, 2, 40, 1, 2, 40, 2, - 2, 40, 3, 2, 40, 5, 2, 40, - 10, 2, 40, 12, 2, 40, 14 + 122, 1, 123, 1, 124, 2, 0, 40, + 2, 0, 51, 2, 0, 60, 2, 0, + 71, 2, 0, 80, 2, 0, 92, 2, + 0, 101, 2, 0, 119, 2, 4, 46, + 2, 5, 41, 2, 6, 2, 2, 7, + 42, 2, 8, 55, 2, 10, 0, 2, + 10, 72, 2, 12, 87, 2, 13, 82, + 2, 14, 83, 2, 15, 0, 2, 15, + 93, 2, 16, 0, 2, 17, 0, 2, + 17, 120, 2, 18, 0, 2, 19, 0, + 2, 19, 2, 2, 23, 0, 2, 24, + 0, 2, 24, 2, 2, 25, 0, 2, + 27, 0, 2, 28, 0, 2, 28, 2, + 2, 35, 0, 2, 35, 120, 2, 38, + 1, 2, 38, 2, 2, 38, 3, 2, + 38, 9, 2, 38, 11 }; static const short _eo_tokenizer_key_offsets[] = { @@ -345,48 +389,45 @@ static const short _eo_tokenizer_key_offsets[] = { 126, 137, 139, 142, 143, 154, 158, 165, 172, 184, 196, 208, 220, 232, 243, 251, 258, 266, 278, 290, 302, 314, 325, 333, - 344, 357, 361, 362, 363, 373, 375, 378, - 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 392, 395, 396, 408, - 412, 413, 414, 424, 426, 429, 431, 434, - 435, 436, 440, 441, 442, 446, 447, 451, - 452, 453, 454, 455, 459, 461, 464, 465, - 476, 480, 483, 485, 488, 499, 501, 504, - 505, 506, 507, 508, 509, 510, 511, 512, - 513, 516, 523, 530, 538, 539, 540, 541, - 542, 546, 547, 548, 549, 550, 553, 560, - 571, 584, 588, 589, 590, 600, 602, 605, - 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 619, 622, 623, 634, - 638, 641, 643, 646, 657, 659, 662, 663, - 664, 665, 666, 667, 668, 669, 670, 671, - 672, 673, 677, 678, 679, 683, 690, 697, - 705, 706, 707, 708, 709, 710, 711, 712, - 713, 714, 718, 719, 720, 721, 722, 723, - 724, 725, 729, 736, 743, 751, 752, 753, - 754, 755, 759, 767, 775, 787, 791, 803, - 804, 805, 815, 817, 820, 828, 829, 830, - 831, 832, 833, 834, 835, 836, 840, 848, - 856, 869, 874, 878, 879, 880, 881, 882, - 883, 895, 900, 904, 913, 917, 918, 919, - 920, 921, 922, 926, 935, 942, 949, 960, - 964, 978, 988, 995, 1007, 1012, 1018, 1023, - 1024, 1025, 1026, 1027, 1028, 1031, 1038, 1045, - 1053, 1054, 1058, 1065, 1073, 1077, 1082, 1083, - 1084, 1094, 1096, 1099, 1109, 1121, 1128, 1140, - 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, - 1149, 1150, 1151, 1152, 1156, 1163, 1170, 1178, - 1179, 1180, 1181, 1182, 1183, 1187, 1188, 1189, - 1190, 1191, 1192, 1193, 1194, 1195, 1199, 1207, - 1210, 1212, 1213, 1214, 1215, 1216, 1227, 1230, - 1232, 1239, 1247, 1255, 1259, 1259, 1260, 1269, - 1272, 1274, 1285, 1289, 1289, 1290, 1299, 1302, - 1304, 1305, 1306, 1307, 1308, 1309, 1318, 1321, - 1323, 1330, 1331, 1340, 1343, 1345, 1346, 1347, - 1348, 1349, 1353, 1353, 1354, 1363, 1366, 1368, - 1375, 1376, 1388, 1391, 1393, 1394, 1396, 1399, - 1401, 1404, 1405, 1406, 1407, 1408, 1411, 1412, - 1413 + 344, 356, 360, 361, 362, 372, 374, 377, + 379, 382, 383, 395, 399, 400, 401, 411, + 413, 416, 418, 421, 422, 423, 427, 428, + 429, 433, 434, 438, 439, 440, 441, 442, + 446, 448, 451, 452, 463, 467, 470, 472, + 475, 486, 488, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 503, 510, 517, + 525, 526, 527, 528, 529, 533, 534, 535, + 536, 537, 540, 547, 558, 570, 574, 575, + 576, 586, 588, 591, 593, 596, 597, 608, + 612, 615, 617, 620, 631, 633, 636, 637, + 638, 639, 640, 641, 642, 643, 644, 645, + 646, 647, 651, 652, 653, 657, 664, 671, + 679, 680, 681, 682, 683, 684, 685, 686, + 687, 688, 692, 693, 694, 695, 696, 697, + 698, 699, 703, 710, 717, 725, 726, 727, + 728, 729, 733, 741, 749, 761, 765, 777, + 778, 779, 789, 791, 794, 802, 803, 804, + 805, 806, 807, 808, 809, 810, 814, 822, + 830, 843, 848, 852, 853, 854, 855, 856, + 857, 869, 874, 878, 887, 891, 892, 893, + 894, 895, 896, 900, 909, 916, 923, 934, + 938, 952, 962, 969, 981, 986, 992, 997, + 998, 999, 1000, 1001, 1002, 1005, 1012, 1019, + 1027, 1028, 1032, 1039, 1047, 1051, 1056, 1057, + 1058, 1068, 1070, 1073, 1083, 1095, 1102, 1114, + 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, + 1123, 1124, 1125, 1126, 1130, 1137, 1144, 1152, + 1153, 1154, 1155, 1156, 1157, 1161, 1162, 1163, + 1164, 1165, 1166, 1167, 1168, 1169, 1173, 1181, + 1184, 1186, 1187, 1188, 1189, 1190, 1201, 1204, + 1206, 1213, 1221, 1229, 1233, 1233, 1234, 1243, + 1246, 1248, 1259, 1263, 1263, 1264, 1273, 1276, + 1278, 1279, 1280, 1281, 1282, 1283, 1292, 1295, + 1297, 1304, 1305, 1314, 1317, 1319, 1320, 1321, + 1322, 1323, 1327, 1327, 1328, 1337, 1340, 1342, + 1349, 1350, 1362, 1365, 1367, 1368, 1370, 1373, + 1375, 1378, 1379, 1380, 1381, 1382, 1385, 1386, + 1387 }; static const char _eo_tokenizer_trans_keys[] = { @@ -432,141 +473,138 @@ static const char _eo_tokenizer_trans_keys[] = { 97, 122, 9, 13, 32, 58, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 58, 65, 90, 97, 122, 9, 13, 32, - 42, 95, 48, 57, 65, 90, 97, 122, - 9, 13, 32, 42, 59, 64, 95, 48, - 57, 65, 90, 97, 122, 9, 13, 32, - 47, 42, 64, 10, 95, 0, 32, 48, - 57, 64, 90, 97, 122, 10, 42, 10, - 42, 47, 119, 97, 114, 110, 95, 117, - 110, 117, 115, 101, 100, 59, 10, 42, - 10, 42, 47, 10, 9, 13, 32, 42, - 59, 95, 48, 57, 64, 90, 97, 122, - 9, 13, 32, 47, 42, 64, 10, 95, - 0, 32, 48, 57, 64, 90, 97, 122, - 10, 42, 10, 42, 47, 10, 42, 10, - 42, 47, 10, 116, 10, 123, 0, 32, - 121, 115, 10, 123, 0, 32, 116, 10, - 123, 0, 32, 108, 117, 101, 115, 10, - 123, 0, 32, 10, 42, 10, 42, 47, - 10, 10, 95, 123, 0, 32, 48, 57, - 65, 90, 97, 122, 10, 123, 0, 32, - 10, 42, 64, 10, 42, 10, 42, 47, - 10, 42, 95, 0, 32, 48, 57, 64, + 42, 95, 48, 57, 64, 90, 97, 122, + 9, 13, 32, 42, 59, 95, 48, 57, + 64, 90, 97, 122, 9, 13, 32, 47, + 42, 64, 10, 95, 0, 32, 48, 57, + 64, 90, 97, 122, 10, 42, 10, 42, + 47, 10, 42, 10, 42, 47, 10, 9, + 13, 32, 42, 59, 95, 48, 57, 64, + 90, 97, 122, 9, 13, 32, 47, 42, + 64, 10, 95, 0, 32, 48, 57, 64, 90, 97, 122, 10, 42, 10, 42, 47, - 10, 110, 115, 116, 59, 103, 97, 99, - 121, 9, 13, 32, 9, 13, 32, 65, - 90, 97, 122, 95, 48, 57, 65, 90, - 97, 122, 59, 95, 48, 57, 65, 90, - 97, 122, 114, 97, 109, 115, 10, 123, - 0, 32, 116, 117, 114, 110, 9, 13, - 32, 9, 13, 32, 65, 90, 97, 122, - 9, 13, 32, 42, 95, 48, 57, 65, - 90, 97, 122, 9, 13, 32, 42, 59, - 64, 95, 48, 57, 65, 90, 97, 122, - 9, 13, 32, 47, 42, 64, 10, 95, - 0, 32, 48, 57, 64, 90, 97, 122, - 10, 42, 10, 42, 47, 119, 97, 114, - 110, 95, 117, 110, 117, 115, 101, 100, - 59, 10, 42, 10, 42, 47, 10, 10, - 95, 123, 0, 32, 48, 57, 65, 90, - 97, 122, 10, 123, 0, 32, 10, 42, - 64, 10, 42, 10, 42, 47, 10, 42, - 95, 0, 32, 48, 57, 64, 90, 97, - 122, 10, 42, 10, 42, 47, 10, 110, - 115, 116, 114, 117, 99, 116, 111, 114, - 115, 10, 123, 0, 32, 116, 97, 10, - 58, 0, 32, 10, 0, 32, 65, 90, - 97, 122, 95, 48, 57, 65, 90, 97, - 122, 59, 95, 48, 57, 65, 90, 97, - 122, 115, 116, 114, 117, 99, 116, 111, - 114, 115, 10, 123, 0, 32, 95, 112, - 114, 101, 102, 105, 120, 10, 58, 0, - 32, 10, 0, 32, 65, 90, 97, 122, - 95, 48, 57, 65, 90, 97, 122, 59, - 95, 48, 57, 65, 90, 97, 122, 101, - 110, 116, 115, 10, 123, 0, 32, 10, - 125, 0, 32, 65, 90, 97, 122, 44, - 95, 48, 57, 65, 90, 97, 122, 10, - 44, 59, 95, 0, 32, 48, 57, 65, - 90, 97, 122, 10, 59, 0, 32, 9, - 10, 13, 32, 47, 125, 0, 31, 65, - 90, 97, 122, 42, 64, 10, 95, 0, - 32, 48, 57, 64, 90, 97, 122, 10, - 42, 10, 42, 47, 10, 125, 0, 32, - 65, 90, 97, 122, 112, 108, 101, 109, - 101, 110, 116, 115, 10, 123, 0, 32, - 10, 125, 0, 32, 65, 90, 97, 122, - 58, 95, 48, 57, 65, 90, 97, 122, - 10, 58, 59, 95, 123, 0, 32, 48, - 57, 65, 90, 97, 122, 10, 59, 123, - 0, 32, 10, 108, 0, 32, 101, 103, - 97, 99, 121, 9, 10, 13, 32, 59, - 123, 0, 31, 65, 90, 97, 122, 10, - 59, 123, 0, 32, 10, 125, 0, 32, - 10, 59, 125, 0, 32, 65, 90, 97, - 122, 10, 112, 0, 32, 97, 114, 97, - 109, 115, 10, 123, 0, 32, 10, 58, - 59, 0, 32, 65, 90, 97, 122, 9, + 10, 42, 10, 42, 47, 10, 116, 10, + 123, 0, 32, 121, 115, 10, 123, 0, + 32, 116, 10, 123, 0, 32, 108, 117, + 101, 115, 10, 123, 0, 32, 10, 42, + 10, 42, 47, 10, 10, 95, 123, 0, + 32, 48, 57, 65, 90, 97, 122, 10, + 123, 0, 32, 10, 42, 64, 10, 42, + 10, 42, 47, 10, 42, 95, 0, 32, + 48, 57, 64, 90, 97, 122, 10, 42, + 10, 42, 47, 10, 110, 115, 116, 59, + 103, 97, 99, 121, 9, 13, 32, 9, 13, 32, 65, 90, 97, 122, 95, 48, - 57, 65, 90, 97, 122, 10, 59, 95, + 57, 65, 90, 97, 122, 59, 95, 48, + 57, 65, 90, 97, 122, 114, 97, 109, + 115, 10, 123, 0, 32, 116, 117, 114, + 110, 9, 13, 32, 9, 13, 32, 65, + 90, 97, 122, 9, 13, 32, 42, 95, + 48, 57, 64, 90, 97, 122, 9, 13, + 32, 42, 59, 95, 48, 57, 64, 90, + 97, 122, 9, 13, 32, 47, 42, 64, + 10, 95, 0, 32, 48, 57, 64, 90, + 97, 122, 10, 42, 10, 42, 47, 10, + 42, 10, 42, 47, 10, 10, 95, 123, 0, 32, 48, 57, 65, 90, 97, 122, - 10, 59, 0, 32, 9, 10, 13, 32, - 47, 58, 59, 125, 0, 31, 65, 90, - 97, 122, 10, 58, 59, 125, 0, 32, + 10, 123, 0, 32, 10, 42, 64, 10, + 42, 10, 42, 47, 10, 42, 95, 0, + 32, 48, 57, 64, 90, 97, 122, 10, + 42, 10, 42, 47, 10, 110, 115, 116, + 114, 117, 99, 116, 111, 114, 115, 10, + 123, 0, 32, 116, 97, 10, 58, 0, + 32, 10, 0, 32, 65, 90, 97, 122, + 95, 48, 57, 65, 90, 97, 122, 59, + 95, 48, 57, 65, 90, 97, 122, 115, + 116, 114, 117, 99, 116, 111, 114, 115, + 10, 123, 0, 32, 95, 112, 114, 101, + 102, 105, 120, 10, 58, 0, 32, 10, + 0, 32, 65, 90, 97, 122, 95, 48, + 57, 65, 90, 97, 122, 59, 95, 48, + 57, 65, 90, 97, 122, 101, 110, 116, + 115, 10, 123, 0, 32, 10, 125, 0, + 32, 65, 90, 97, 122, 44, 95, 48, + 57, 65, 90, 97, 122, 10, 44, 59, + 95, 0, 32, 48, 57, 65, 90, 97, + 122, 10, 59, 0, 32, 9, 10, 13, + 32, 47, 125, 0, 31, 65, 90, 97, + 122, 42, 64, 10, 95, 0, 32, 48, + 57, 64, 90, 97, 122, 10, 42, 10, + 42, 47, 10, 125, 0, 32, 65, 90, + 97, 122, 112, 108, 101, 109, 101, 110, + 116, 115, 10, 123, 0, 32, 10, 125, + 0, 32, 65, 90, 97, 122, 58, 95, + 48, 57, 65, 90, 97, 122, 10, 58, + 59, 95, 123, 0, 32, 48, 57, 65, + 90, 97, 122, 10, 59, 123, 0, 32, + 10, 108, 0, 32, 101, 103, 97, 99, + 121, 9, 10, 13, 32, 59, 123, 0, + 31, 65, 90, 97, 122, 10, 59, 123, + 0, 32, 10, 125, 0, 32, 10, 59, + 125, 0, 32, 65, 90, 97, 122, 10, + 112, 0, 32, 97, 114, 97, 109, 115, + 10, 123, 0, 32, 10, 58, 59, 0, + 32, 65, 90, 97, 122, 9, 13, 32, 65, 90, 97, 122, 95, 48, 57, 65, - 90, 97, 122, 9, 13, 32, 58, 59, - 95, 48, 57, 65, 90, 97, 122, 9, - 13, 32, 58, 59, 10, 59, 114, 125, - 0, 32, 10, 114, 125, 0, 32, 101, - 116, 117, 114, 110, 9, 13, 32, 9, - 13, 32, 65, 90, 97, 122, 95, 48, - 57, 65, 90, 97, 122, 58, 95, 48, - 57, 65, 90, 97, 122, 58, 65, 90, + 90, 97, 122, 10, 59, 95, 0, 32, + 48, 57, 65, 90, 97, 122, 10, 59, + 0, 32, 9, 10, 13, 32, 47, 58, + 59, 125, 0, 31, 65, 90, 97, 122, + 10, 58, 59, 125, 0, 32, 65, 90, 97, 122, 95, 48, 57, 65, 90, 97, - 122, 59, 95, 48, 57, 65, 90, 97, - 122, 10, 125, 0, 32, 10, 59, 125, - 0, 32, 42, 64, 10, 95, 0, 32, - 48, 57, 64, 90, 97, 122, 10, 42, - 10, 42, 47, 10, 58, 59, 125, 0, - 32, 65, 90, 97, 122, 9, 10, 13, - 32, 59, 123, 0, 31, 65, 90, 97, + 122, 9, 13, 32, 58, 59, 95, 48, + 57, 65, 90, 97, 122, 9, 13, 32, + 58, 59, 10, 59, 114, 125, 0, 32, + 10, 114, 125, 0, 32, 101, 116, 117, + 114, 110, 9, 13, 32, 9, 13, 32, + 65, 90, 97, 122, 95, 48, 57, 65, + 90, 97, 122, 58, 95, 48, 57, 65, + 90, 97, 122, 58, 65, 90, 97, 122, + 95, 48, 57, 65, 90, 97, 122, 59, + 95, 48, 57, 65, 90, 97, 122, 10, + 125, 0, 32, 10, 59, 125, 0, 32, + 42, 64, 10, 95, 0, 32, 48, 57, + 64, 90, 97, 122, 10, 42, 10, 42, + 47, 10, 58, 59, 125, 0, 32, 65, + 90, 97, 122, 9, 10, 13, 32, 59, + 123, 0, 31, 65, 90, 97, 122, 95, + 48, 57, 65, 90, 97, 122, 10, 59, + 95, 123, 0, 32, 48, 57, 65, 90, + 97, 122, 58, 103, 97, 99, 121, 95, + 112, 114, 101, 102, 105, 120, 10, 58, + 0, 32, 10, 0, 32, 65, 90, 97, 122, 95, 48, 57, 65, 90, 97, 122, - 10, 59, 95, 123, 0, 32, 48, 57, - 65, 90, 97, 122, 58, 103, 97, 99, - 121, 95, 112, 114, 101, 102, 105, 120, - 10, 58, 0, 32, 10, 0, 32, 65, - 90, 97, 122, 95, 48, 57, 65, 90, - 97, 122, 59, 95, 48, 57, 65, 90, - 97, 122, 116, 104, 111, 100, 115, 10, - 123, 0, 32, 111, 112, 101, 114, 116, - 105, 101, 115, 10, 123, 0, 32, 10, - 47, 97, 99, 105, 109, 0, 32, 10, - 0, 32, 42, 47, 98, 108, 110, 105, - 10, 47, 108, 114, 125, 0, 32, 65, - 90, 97, 122, 10, 0, 32, 42, 47, - 95, 48, 57, 65, 90, 97, 122, 95, - 101, 48, 57, 65, 90, 97, 122, 95, - 101, 48, 57, 65, 90, 97, 122, 9, - 13, 32, 47, 59, 10, 47, 125, 0, - 32, 64, 90, 97, 122, 10, 0, 32, - 42, 47, 9, 13, 32, 42, 95, 48, - 57, 64, 90, 97, 122, 9, 13, 32, - 47, 59, 10, 47, 103, 107, 115, 118, - 125, 0, 32, 10, 0, 32, 42, 47, - 101, 101, 101, 97, 59, 10, 47, 125, - 0, 32, 65, 90, 97, 122, 10, 0, - 32, 42, 47, 95, 48, 57, 65, 90, - 97, 122, 59, 10, 47, 99, 108, 112, - 114, 125, 0, 32, 10, 0, 32, 42, - 47, 111, 101, 97, 101, 9, 13, 32, - 47, 59, 10, 47, 125, 0, 32, 65, + 59, 95, 48, 57, 65, 90, 97, 122, + 116, 104, 111, 100, 115, 10, 123, 0, + 32, 111, 112, 101, 114, 116, 105, 101, + 115, 10, 123, 0, 32, 10, 47, 97, + 99, 105, 109, 0, 32, 10, 0, 32, + 42, 47, 98, 108, 110, 105, 10, 47, + 108, 114, 125, 0, 32, 65, 90, 97, + 122, 10, 0, 32, 42, 47, 95, 48, + 57, 65, 90, 97, 122, 95, 101, 48, + 57, 65, 90, 97, 122, 95, 101, 48, + 57, 65, 90, 97, 122, 9, 13, 32, + 47, 59, 10, 47, 125, 0, 32, 64, 90, 97, 122, 10, 0, 32, 42, 47, - 95, 48, 57, 65, 90, 97, 122, 59, - 10, 47, 99, 100, 101, 105, 108, 109, - 112, 125, 0, 32, 10, 0, 32, 42, - 47, 111, 97, 101, 10, 0, 32, 111, - 118, 10, 0, 32, 59, 109, 59, 101, - 10, 0, 32, 101, 114, 59, 0 + 9, 13, 32, 42, 95, 48, 57, 64, + 90, 97, 122, 9, 13, 32, 47, 59, + 10, 47, 103, 107, 115, 118, 125, 0, + 32, 10, 0, 32, 42, 47, 101, 101, + 101, 97, 59, 10, 47, 125, 0, 32, + 65, 90, 97, 122, 10, 0, 32, 42, + 47, 95, 48, 57, 65, 90, 97, 122, + 59, 10, 47, 99, 108, 112, 114, 125, + 0, 32, 10, 0, 32, 42, 47, 111, + 101, 97, 101, 9, 13, 32, 47, 59, + 10, 47, 125, 0, 32, 65, 90, 97, + 122, 10, 0, 32, 42, 47, 95, 48, + 57, 65, 90, 97, 122, 59, 10, 47, + 99, 100, 101, 105, 108, 109, 112, 125, + 0, 32, 10, 0, 32, 42, 47, 111, + 97, 101, 10, 0, 32, 111, 118, 10, + 0, 32, 59, 109, 59, 101, 10, 0, + 32, 101, 114, 59, 0 }; static const char _eo_tokenizer_single_lengths[] = { @@ -578,19 +616,16 @@ static const char _eo_tokenizer_single_lengths[] = { 3, 2, 3, 1, 5, 4, 3, 3, 6, 6, 6, 6, 6, 5, 4, 1, 2, 6, 6, 6, 6, 5, 4, 5, - 7, 4, 1, 1, 2, 2, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 3, 1, 6, 4, - 1, 1, 2, 2, 3, 2, 3, 1, - 1, 2, 1, 1, 2, 1, 2, 1, - 1, 1, 1, 2, 2, 3, 1, 3, - 2, 3, 2, 3, 3, 2, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 3, 3, 1, 2, 1, 1, 1, 1, - 2, 1, 1, 1, 1, 3, 3, 5, - 7, 4, 1, 1, 2, 2, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 3, 1, 3, 2, + 6, 4, 1, 1, 2, 2, 3, 2, + 3, 1, 6, 4, 1, 1, 2, 2, + 3, 2, 3, 1, 1, 2, 1, 1, + 2, 1, 2, 1, 1, 1, 1, 2, + 2, 3, 1, 3, 2, 3, 2, 3, + 3, 2, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 3, 1, 2, + 1, 1, 1, 1, 2, 1, 1, 1, + 1, 3, 3, 5, 6, 4, 1, 1, + 2, 2, 3, 2, 3, 1, 3, 2, 3, 2, 3, 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 2, @@ -632,18 +667,15 @@ static const char _eo_tokenizer_range_lengths[] = { 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3, 0, - 0, 0, 4, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 4, - 1, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2, 3, 3, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 2, 3, - 3, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4, 1, + 0, 0, 3, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 1, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 1, + 0, 0, 0, 4, 1, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 3, 3, + 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 2, 3, 3, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 3, 3, 3, @@ -684,48 +716,45 @@ static const short _eo_tokenizer_index_offsets[] = { 141, 149, 152, 156, 158, 167, 172, 178, 184, 194, 204, 214, 224, 234, 243, 250, 255, 261, 271, 281, 291, 301, 310, 317, - 326, 337, 342, 344, 346, 353, 356, 360, - 362, 364, 366, 368, 370, 372, 374, 376, - 378, 380, 382, 384, 387, 391, 393, 403, - 408, 410, 412, 419, 422, 426, 429, 433, - 435, 437, 441, 443, 445, 449, 451, 455, - 457, 459, 461, 463, 467, 470, 474, 476, - 484, 488, 492, 495, 499, 507, 510, 514, - 516, 518, 520, 522, 524, 526, 528, 530, - 532, 536, 542, 547, 553, 555, 557, 559, - 561, 565, 567, 569, 571, 573, 577, 583, - 592, 603, 608, 610, 612, 619, 622, 626, - 628, 630, 632, 634, 636, 638, 640, 642, - 644, 646, 648, 650, 653, 657, 659, 667, - 671, 675, 678, 682, 690, 693, 697, 699, - 701, 703, 705, 707, 709, 711, 713, 715, - 717, 719, 723, 725, 727, 731, 736, 741, - 747, 749, 751, 753, 755, 757, 759, 761, - 763, 765, 769, 771, 773, 775, 777, 779, - 781, 783, 787, 792, 797, 803, 805, 807, - 809, 811, 815, 821, 827, 836, 840, 850, - 852, 854, 861, 864, 868, 874, 876, 878, - 880, 882, 884, 886, 888, 890, 894, 900, - 906, 916, 921, 925, 927, 929, 931, 933, - 935, 945, 950, 954, 961, 965, 967, 969, - 971, 973, 975, 979, 986, 992, 997, 1005, - 1009, 1021, 1029, 1034, 1044, 1050, 1056, 1061, - 1063, 1065, 1067, 1069, 1071, 1075, 1081, 1086, - 1092, 1094, 1097, 1102, 1108, 1112, 1117, 1119, - 1121, 1128, 1131, 1135, 1143, 1153, 1158, 1167, - 1169, 1171, 1173, 1175, 1177, 1179, 1181, 1183, - 1185, 1187, 1189, 1191, 1195, 1200, 1205, 1211, - 1213, 1215, 1217, 1219, 1221, 1225, 1227, 1229, - 1231, 1233, 1235, 1237, 1239, 1241, 1245, 1253, - 1256, 1259, 1261, 1263, 1265, 1267, 1276, 1279, - 1282, 1287, 1293, 1299, 1304, 1305, 1307, 1314, - 1317, 1320, 1329, 1334, 1335, 1337, 1346, 1349, - 1352, 1354, 1356, 1358, 1360, 1362, 1369, 1372, - 1375, 1380, 1382, 1391, 1394, 1397, 1399, 1401, - 1403, 1405, 1410, 1411, 1413, 1420, 1423, 1426, - 1431, 1433, 1445, 1448, 1451, 1453, 1456, 1459, - 1462, 1465, 1467, 1469, 1471, 1473, 1476, 1478, - 1480 + 326, 336, 341, 343, 345, 352, 355, 359, + 362, 366, 368, 378, 383, 385, 387, 394, + 397, 401, 404, 408, 410, 412, 416, 418, + 420, 424, 426, 430, 432, 434, 436, 438, + 442, 445, 449, 451, 459, 463, 467, 470, + 474, 482, 485, 489, 491, 493, 495, 497, + 499, 501, 503, 505, 507, 511, 517, 522, + 528, 530, 532, 534, 536, 540, 542, 544, + 546, 548, 552, 558, 567, 577, 582, 584, + 586, 593, 596, 600, 603, 607, 609, 617, + 621, 625, 628, 632, 640, 643, 647, 649, + 651, 653, 655, 657, 659, 661, 663, 665, + 667, 669, 673, 675, 677, 681, 686, 691, + 697, 699, 701, 703, 705, 707, 709, 711, + 713, 715, 719, 721, 723, 725, 727, 729, + 731, 733, 737, 742, 747, 753, 755, 757, + 759, 761, 765, 771, 777, 786, 790, 800, + 802, 804, 811, 814, 818, 824, 826, 828, + 830, 832, 834, 836, 838, 840, 844, 850, + 856, 866, 871, 875, 877, 879, 881, 883, + 885, 895, 900, 904, 911, 915, 917, 919, + 921, 923, 925, 929, 936, 942, 947, 955, + 959, 971, 979, 984, 994, 1000, 1006, 1011, + 1013, 1015, 1017, 1019, 1021, 1025, 1031, 1036, + 1042, 1044, 1047, 1052, 1058, 1062, 1067, 1069, + 1071, 1078, 1081, 1085, 1093, 1103, 1108, 1117, + 1119, 1121, 1123, 1125, 1127, 1129, 1131, 1133, + 1135, 1137, 1139, 1141, 1145, 1150, 1155, 1161, + 1163, 1165, 1167, 1169, 1171, 1175, 1177, 1179, + 1181, 1183, 1185, 1187, 1189, 1191, 1195, 1203, + 1206, 1209, 1211, 1213, 1215, 1217, 1226, 1229, + 1232, 1237, 1243, 1249, 1254, 1255, 1257, 1264, + 1267, 1270, 1279, 1284, 1285, 1287, 1296, 1299, + 1302, 1304, 1306, 1308, 1310, 1312, 1319, 1322, + 1325, 1330, 1332, 1341, 1344, 1347, 1349, 1351, + 1353, 1355, 1360, 1361, 1363, 1370, 1373, 1376, + 1381, 1383, 1395, 1398, 1401, 1403, 1406, 1409, + 1412, 1415, 1417, 1419, 1421, 1423, 1426, 1428, + 1430 }; static const short _eo_tokenizer_indicies[] = { @@ -770,315 +799,301 @@ static const short _eo_tokenizer_indicies[] = { 73, 72, 72, 72, 72, 57, 92, 92, 92, 73, 93, 93, 57, 94, 94, 94, 94, 94, 94, 94, 94, 57, 94, 94, - 94, 94, 95, 96, 94, 94, 94, 94, - 57, 98, 98, 98, 99, 97, 100, 97, - 101, 97, 102, 103, 101, 103, 103, 103, - 97, 105, 106, 104, 105, 106, 107, 104, - 108, 57, 109, 57, 110, 57, 111, 57, - 112, 57, 113, 57, 114, 57, 115, 57, - 116, 57, 117, 57, 118, 57, 119, 57, - 122, 123, 121, 122, 123, 124, 121, 126, - 125, 127, 127, 127, 127, 128, 127, 127, - 127, 127, 120, 130, 130, 130, 131, 129, - 132, 129, 133, 129, 134, 135, 133, 135, - 135, 135, 129, 137, 138, 136, 137, 138, - 139, 136, 142, 143, 141, 142, 143, 144, - 141, 146, 145, 147, 140, 148, 149, 147, - 140, 150, 140, 151, 140, 152, 153, 151, - 140, 154, 140, 155, 156, 154, 140, 157, - 140, 158, 140, 159, 140, 160, 140, 161, - 162, 160, 140, 165, 166, 164, 165, 166, - 167, 164, 169, 168, 171, 172, 173, 170, - 172, 172, 172, 163, 175, 176, 174, 163, - 179, 180, 181, 178, 179, 180, 178, 179, - 180, 182, 178, 183, 180, 184, 181, 184, - 184, 184, 178, 186, 187, 185, 186, 187, - 188, 185, 190, 189, 191, 177, 192, 177, - 193, 177, 194, 177, 195, 177, 196, 177, - 197, 177, 198, 177, 199, 199, 199, 177, - 199, 199, 199, 200, 200, 177, 201, 201, - 201, 201, 177, 202, 201, 201, 201, 201, - 177, 203, 177, 204, 177, 205, 177, 206, - 177, 207, 208, 206, 177, 209, 177, 210, - 177, 211, 177, 212, 177, 213, 213, 213, - 177, 213, 213, 213, 214, 214, 177, 215, - 215, 215, 215, 215, 215, 215, 215, 177, - 215, 215, 215, 215, 216, 217, 215, 215, - 215, 215, 177, 219, 219, 219, 220, 218, - 221, 218, 222, 218, 223, 224, 222, 224, - 224, 224, 218, 226, 227, 225, 226, 227, - 228, 225, 229, 177, 230, 177, 231, 177, - 232, 177, 233, 177, 234, 177, 235, 177, - 236, 177, 237, 177, 238, 177, 239, 177, - 240, 177, 243, 244, 242, 243, 244, 245, - 242, 247, 246, 249, 250, 251, 248, 250, - 250, 250, 241, 253, 254, 252, 241, 257, - 258, 259, 256, 257, 258, 256, 257, 258, - 260, 256, 261, 258, 262, 259, 262, 262, - 262, 256, 264, 265, 263, 264, 265, 266, - 263, 268, 267, 269, 255, 270, 255, 271, - 255, 272, 255, 273, 255, 274, 255, 275, - 255, 276, 255, 277, 255, 278, 255, 279, - 280, 278, 255, 281, 255, 282, 255, 283, - 284, 282, 255, 285, 284, 286, 286, 255, - 287, 287, 287, 287, 255, 288, 287, 287, - 287, 287, 255, 289, 255, 290, 255, 291, - 255, 292, 255, 293, 255, 294, 255, 295, - 255, 296, 255, 297, 255, 298, 299, 297, - 255, 300, 255, 301, 255, 302, 255, 303, - 255, 304, 255, 305, 255, 306, 255, 307, - 308, 306, 255, 309, 308, 310, 310, 255, - 311, 311, 311, 311, 255, 312, 311, 311, - 311, 311, 255, 313, 255, 314, 255, 315, - 255, 316, 255, 317, 318, 316, 255, 319, - 321, 318, 320, 320, 255, 322, 322, 322, - 322, 322, 255, 324, 322, 325, 322, 323, - 322, 322, 322, 255, 327, 328, 326, 255, - 328, 319, 328, 328, 329, 321, 318, 320, - 320, 255, 330, 255, 331, 255, 332, 333, - 331, 333, 333, 333, 255, 335, 336, 334, - 335, 336, 337, 334, 339, 341, 338, 340, - 340, 255, 342, 255, 343, 255, 344, 255, - 345, 255, 346, 255, 347, 255, 348, 255, - 349, 255, 350, 351, 349, 255, 352, 354, - 351, 353, 353, 255, 356, 355, 355, 355, - 355, 255, 358, 356, 359, 355, 360, 357, - 355, 355, 355, 255, 362, 351, 363, 361, - 255, 364, 365, 363, 255, 366, 255, 367, - 255, 368, 255, 369, 255, 370, 255, 372, - 373, 372, 372, 374, 376, 371, 375, 375, - 255, 378, 379, 380, 377, 255, 381, 382, - 379, 255, 352, 351, 354, 351, 353, 353, - 255, 383, 384, 380, 255, 385, 255, 386, - 255, 387, 255, 388, 255, 389, 255, 390, - 391, 389, 255, 392, 393, 394, 391, 395, - 395, 255, 393, 393, 393, 396, 396, 255, - 397, 397, 397, 397, 255, 399, 400, 397, - 398, 397, 397, 397, 255, 402, 394, 401, - 255, 394, 404, 394, 394, 405, 393, 394, - 406, 403, 395, 395, 255, 404, 393, 394, - 406, 403, 395, 395, 255, 407, 407, 407, - 407, 255, 408, 408, 408, 409, 410, 407, - 407, 407, 407, 255, 411, 411, 411, 393, - 394, 255, 413, 412, 414, 415, 412, 255, - 413, 414, 415, 412, 255, 416, 255, 417, - 255, 418, 255, 419, 255, 420, 255, 421, - 421, 421, 255, 421, 421, 421, 422, 422, - 255, 423, 423, 423, 423, 255, 424, 423, - 423, 423, 423, 255, 425, 255, 426, 426, - 255, 427, 427, 427, 427, 255, 428, 427, - 427, 427, 427, 255, 430, 415, 429, 255, - 381, 379, 382, 379, 255, 431, 255, 432, - 255, 433, 434, 432, 434, 434, 434, 255, - 436, 437, 435, 436, 437, 438, 435, 440, - 441, 442, 444, 439, 443, 443, 255, 445, - 378, 445, 445, 379, 380, 377, 446, 446, - 255, 447, 447, 447, 447, 255, 449, 450, - 447, 451, 448, 447, 447, 447, 255, 355, - 255, 452, 255, 453, 255, 454, 255, 455, - 255, 456, 255, 457, 255, 458, 255, 459, - 255, 460, 255, 461, 255, 462, 255, 463, - 464, 462, 255, 465, 464, 466, 466, 255, - 467, 467, 467, 467, 255, 468, 467, 467, - 467, 467, 255, 469, 255, 470, 255, 471, - 255, 472, 255, 473, 255, 474, 475, 473, - 255, 476, 255, 477, 255, 478, 255, 479, - 255, 480, 255, 481, 255, 482, 255, 483, - 255, 484, 485, 483, 255, 488, 489, 490, - 491, 492, 493, 487, 486, 488, 487, 494, - 1, 5, 495, 496, 495, 497, 495, 498, - 495, 499, 495, 502, 503, 505, 506, 507, - 501, 504, 504, 500, 502, 501, 508, 510, - 69, 509, 72, 72, 72, 72, 509, 72, - 511, 72, 72, 72, 509, 72, 512, 72, - 72, 72, 509, 98, 98, 98, 99, 513, - 514, 516, 515, 519, 520, 522, 518, 521, - 521, 517, 519, 518, 523, 121, 125, 524, - 127, 127, 127, 127, 127, 127, 127, 127, - 524, 130, 130, 130, 131, 525, 526, 528, - 527, 531, 532, 533, 534, 535, 536, 537, - 530, 529, 531, 530, 538, 141, 145, 539, - 540, 539, 541, 539, 542, 539, 543, 539, - 545, 544, 548, 549, 551, 547, 550, 550, - 546, 548, 547, 552, 164, 168, 553, 172, - 172, 172, 172, 553, 555, 554, 558, 559, - 560, 561, 562, 563, 564, 557, 556, 558, - 557, 565, 567, 189, 566, 568, 566, 569, - 566, 570, 566, 571, 566, 219, 219, 219, - 220, 572, 573, 575, 574, 578, 579, 581, - 577, 580, 580, 576, 578, 577, 582, 242, - 246, 583, 250, 250, 250, 250, 583, 585, - 584, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 587, 586, 588, 587, 598, - 600, 267, 599, 601, 599, 602, 603, 599, - 606, 605, 604, 607, 608, 599, 611, 610, - 609, 613, 612, 614, 599, 616, 615, 617, - 599, 620, 619, 618, 621, 599, 622, 599, - 624, 623, 0 + 94, 94, 95, 94, 94, 94, 94, 57, + 97, 97, 97, 98, 96, 99, 96, 100, + 96, 101, 102, 100, 102, 102, 102, 96, + 104, 105, 103, 104, 105, 106, 103, 109, + 110, 108, 109, 110, 111, 108, 113, 112, + 114, 114, 114, 114, 115, 114, 114, 114, + 114, 107, 117, 117, 117, 118, 116, 119, + 116, 120, 116, 121, 122, 120, 122, 122, + 122, 116, 124, 125, 123, 124, 125, 126, + 123, 129, 130, 128, 129, 130, 131, 128, + 133, 132, 134, 127, 135, 136, 134, 127, + 137, 127, 138, 127, 139, 140, 138, 127, + 141, 127, 142, 143, 141, 127, 144, 127, + 145, 127, 146, 127, 147, 127, 148, 149, + 147, 127, 152, 153, 151, 152, 153, 154, + 151, 156, 155, 158, 159, 160, 157, 159, + 159, 159, 150, 162, 163, 161, 150, 166, + 167, 168, 165, 166, 167, 165, 166, 167, + 169, 165, 170, 167, 171, 168, 171, 171, + 171, 165, 173, 174, 172, 173, 174, 175, + 172, 177, 176, 178, 164, 179, 164, 180, + 164, 181, 164, 182, 164, 183, 164, 184, + 164, 185, 164, 186, 186, 186, 164, 186, + 186, 186, 187, 187, 164, 188, 188, 188, + 188, 164, 189, 188, 188, 188, 188, 164, + 190, 164, 191, 164, 192, 164, 193, 164, + 194, 195, 193, 164, 196, 164, 197, 164, + 198, 164, 199, 164, 200, 200, 200, 164, + 200, 200, 200, 201, 201, 164, 202, 202, + 202, 202, 202, 202, 202, 202, 164, 202, + 202, 202, 202, 203, 202, 202, 202, 202, + 164, 205, 205, 205, 206, 204, 207, 204, + 208, 204, 209, 210, 208, 210, 210, 210, + 204, 212, 213, 211, 212, 213, 214, 211, + 217, 218, 216, 217, 218, 219, 216, 221, + 220, 223, 224, 225, 222, 224, 224, 224, + 215, 227, 228, 226, 215, 231, 232, 233, + 230, 231, 232, 230, 231, 232, 234, 230, + 235, 232, 236, 233, 236, 236, 236, 230, + 238, 239, 237, 238, 239, 240, 237, 242, + 241, 243, 229, 244, 229, 245, 229, 246, + 229, 247, 229, 248, 229, 249, 229, 250, + 229, 251, 229, 252, 229, 253, 254, 252, + 229, 255, 229, 256, 229, 257, 258, 256, + 229, 259, 258, 260, 260, 229, 261, 261, + 261, 261, 229, 262, 261, 261, 261, 261, + 229, 263, 229, 264, 229, 265, 229, 266, + 229, 267, 229, 268, 229, 269, 229, 270, + 229, 271, 229, 272, 273, 271, 229, 274, + 229, 275, 229, 276, 229, 277, 229, 278, + 229, 279, 229, 280, 229, 281, 282, 280, + 229, 283, 282, 284, 284, 229, 285, 285, + 285, 285, 229, 286, 285, 285, 285, 285, + 229, 287, 229, 288, 229, 289, 229, 290, + 229, 291, 292, 290, 229, 293, 295, 292, + 294, 294, 229, 296, 296, 296, 296, 296, + 229, 298, 296, 299, 296, 297, 296, 296, + 296, 229, 301, 302, 300, 229, 302, 293, + 302, 302, 303, 295, 292, 294, 294, 229, + 304, 229, 305, 229, 306, 307, 305, 307, + 307, 307, 229, 309, 310, 308, 309, 310, + 311, 308, 313, 315, 312, 314, 314, 229, + 316, 229, 317, 229, 318, 229, 319, 229, + 320, 229, 321, 229, 322, 229, 323, 229, + 324, 325, 323, 229, 326, 328, 325, 327, + 327, 229, 330, 329, 329, 329, 329, 229, + 332, 330, 333, 329, 334, 331, 329, 329, + 329, 229, 336, 325, 337, 335, 229, 338, + 339, 337, 229, 340, 229, 341, 229, 342, + 229, 343, 229, 344, 229, 346, 347, 346, + 346, 348, 350, 345, 349, 349, 229, 352, + 353, 354, 351, 229, 355, 356, 353, 229, + 326, 325, 328, 325, 327, 327, 229, 357, + 358, 354, 229, 359, 229, 360, 229, 361, + 229, 362, 229, 363, 229, 364, 365, 363, + 229, 366, 367, 368, 365, 369, 369, 229, + 367, 367, 367, 370, 370, 229, 371, 371, + 371, 371, 229, 373, 374, 371, 372, 371, + 371, 371, 229, 376, 368, 375, 229, 368, + 378, 368, 368, 379, 367, 368, 380, 377, + 369, 369, 229, 378, 367, 368, 380, 377, + 369, 369, 229, 381, 381, 381, 381, 229, + 382, 382, 382, 383, 384, 381, 381, 381, + 381, 229, 385, 385, 385, 367, 368, 229, + 387, 386, 388, 389, 386, 229, 387, 388, + 389, 386, 229, 390, 229, 391, 229, 392, + 229, 393, 229, 394, 229, 395, 395, 395, + 229, 395, 395, 395, 396, 396, 229, 397, + 397, 397, 397, 229, 398, 397, 397, 397, + 397, 229, 399, 229, 400, 400, 229, 401, + 401, 401, 401, 229, 402, 401, 401, 401, + 401, 229, 404, 389, 403, 229, 355, 353, + 356, 353, 229, 405, 229, 406, 229, 407, + 408, 406, 408, 408, 408, 229, 410, 411, + 409, 410, 411, 412, 409, 414, 415, 416, + 418, 413, 417, 417, 229, 419, 352, 419, + 419, 353, 354, 351, 420, 420, 229, 421, + 421, 421, 421, 229, 423, 424, 421, 425, + 422, 421, 421, 421, 229, 329, 229, 426, + 229, 427, 229, 428, 229, 429, 229, 430, + 229, 431, 229, 432, 229, 433, 229, 434, + 229, 435, 229, 436, 229, 437, 438, 436, + 229, 439, 438, 440, 440, 229, 441, 441, + 441, 441, 229, 442, 441, 441, 441, 441, + 229, 443, 229, 444, 229, 445, 229, 446, + 229, 447, 229, 448, 449, 447, 229, 450, + 229, 451, 229, 452, 229, 453, 229, 454, + 229, 455, 229, 456, 229, 457, 229, 458, + 459, 457, 229, 462, 463, 464, 465, 466, + 467, 461, 460, 462, 461, 468, 1, 5, + 469, 470, 469, 471, 469, 472, 469, 473, + 469, 476, 477, 479, 480, 481, 475, 478, + 478, 474, 476, 475, 482, 484, 69, 483, + 72, 72, 72, 72, 483, 72, 485, 72, + 72, 72, 483, 72, 486, 72, 72, 72, + 483, 97, 97, 97, 98, 487, 488, 490, + 489, 493, 494, 496, 492, 495, 495, 491, + 493, 492, 497, 108, 112, 498, 114, 114, + 114, 114, 114, 114, 114, 114, 498, 117, + 117, 117, 118, 499, 500, 502, 501, 505, + 506, 507, 508, 509, 510, 511, 504, 503, + 505, 504, 512, 128, 132, 513, 514, 513, + 515, 513, 516, 513, 517, 513, 519, 518, + 522, 523, 525, 521, 524, 524, 520, 522, + 521, 526, 151, 155, 527, 159, 159, 159, + 159, 527, 529, 528, 532, 533, 534, 535, + 536, 537, 538, 531, 530, 532, 531, 539, + 541, 176, 540, 542, 540, 543, 540, 544, + 540, 545, 540, 205, 205, 205, 206, 546, + 547, 549, 548, 552, 553, 555, 551, 554, + 554, 550, 552, 551, 556, 216, 220, 557, + 224, 224, 224, 224, 557, 559, 558, 562, + 563, 564, 565, 566, 567, 568, 569, 570, + 571, 561, 560, 562, 561, 572, 574, 241, + 573, 575, 573, 576, 577, 573, 580, 579, + 578, 581, 582, 573, 585, 584, 583, 587, + 586, 588, 573, 590, 589, 591, 573, 594, + 593, 592, 595, 573, 596, 573, 598, 597, + 0 }; static const short _eo_tokenizer_trans_targs[] = { - 326, 0, 0, 1, 326, 2, 326, 4, + 302, 0, 0, 1, 302, 2, 302, 4, 5, 6, 7, 8, 9, 10, 10, 11, - 12, 13, 14, 13, 15, 326, 13, 13, - 326, 14, 15, 16, 17, 13, 13, 326, + 12, 13, 14, 13, 15, 302, 13, 13, + 302, 14, 15, 16, 17, 13, 13, 302, 18, 19, 19, 16, 20, 19, 19, 20, 20, 22, 23, 24, 10, 26, 27, 28, 29, 30, 31, 32, 10, 34, 35, 36, - 10, 333, 38, 38, 39, 40, 333, 40, - 41, 41, 41, 42, 333, 43, 333, 45, - 44, 46, 47, 48, 47, 48, 48, 333, - 50, 51, 52, 53, 54, 55, 56, 333, - 58, 59, 60, 61, 62, 63, 64, 339, - 71, 333, 65, 66, 67, 68, 68, 69, - 69, 69, 70, 340, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 339, - 342, 83, 83, 84, 342, 85, 342, 86, - 346, 342, 87, 88, 89, 90, 90, 91, - 91, 91, 92, 347, 349, 93, 93, 94, - 349, 95, 349, 97, 97, 349, 99, 100, - 100, 349, 102, 102, 349, 104, 105, 106, - 107, 107, 349, 357, 108, 108, 109, 357, - 110, 357, 112, 112, 111, 357, 112, 112, - 357, 362, 114, 114, 115, 116, 362, 116, - 117, 117, 117, 118, 362, 119, 362, 121, - 122, 123, 362, 125, 126, 127, 128, 129, - 130, 131, 362, 133, 134, 135, 136, 136, - 362, 138, 139, 140, 141, 142, 143, 144, - 369, 151, 362, 145, 146, 147, 148, 148, - 149, 149, 149, 150, 370, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, - 369, 372, 163, 163, 164, 372, 165, 372, - 167, 167, 166, 372, 167, 167, 372, 377, - 169, 169, 170, 171, 377, 171, 172, 172, - 172, 173, 377, 174, 377, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 185, - 377, 187, 188, 188, 189, 189, 190, 191, - 382, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 201, 377, 203, 204, 205, 206, - 207, 208, 209, 209, 210, 210, 211, 212, - 384, 214, 215, 216, 217, 217, 218, 218, - 219, 385, 220, 221, 221, 222, 221, 221, - 222, 223, 224, 225, 225, 226, 226, 226, - 227, 228, 218, 218, 219, 385, 230, 231, - 232, 233, 234, 235, 236, 237, 237, 238, - 238, 239, 387, 240, 295, 241, 241, 238, - 242, 241, 241, 242, 242, 243, 244, 245, - 246, 247, 248, 249, 292, 249, 250, 293, - 252, 249, 249, 250, 252, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 258, 259, - 259, 260, 264, 266, 261, 262, 263, 263, - 264, 263, 263, 265, 265, 286, 269, 267, - 268, 260, 264, 268, 270, 270, 271, 285, - 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 284, 284, 287, - 288, 288, 289, 289, 289, 290, 291, 265, - 265, 260, 264, 266, 269, 292, 293, 294, - 249, 249, 250, 252, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 307, - 308, 308, 309, 310, 389, 312, 313, 314, - 315, 316, 316, 377, 318, 319, 320, 321, - 322, 323, 324, 325, 325, 377, 326, 327, - 327, 328, 329, 330, 331, 332, 326, 326, - 3, 21, 25, 33, 333, 334, 334, 335, - 336, 337, 338, 341, 333, 333, 37, 49, - 57, 333, 333, 333, 333, 342, 343, 343, - 344, 345, 348, 342, 342, 342, 342, 342, - 342, 349, 350, 350, 351, 352, 353, 354, - 355, 356, 349, 349, 96, 98, 101, 103, - 349, 349, 357, 358, 358, 359, 360, 361, - 357, 357, 357, 357, 362, 363, 363, 364, - 365, 366, 367, 368, 371, 362, 362, 113, - 120, 124, 132, 137, 362, 362, 362, 362, - 372, 373, 373, 374, 375, 376, 372, 372, - 372, 372, 377, 378, 378, 379, 380, 381, - 383, 386, 388, 390, 391, 392, 377, 377, - 168, 175, 186, 192, 377, 382, 382, 202, - 213, 377, 384, 384, 377, 377, 229, 377, - 377, 296, 377, 389, 389, 311, 317, 377, - 377 + 10, 309, 38, 38, 39, 40, 309, 40, + 41, 41, 41, 42, 309, 43, 309, 45, + 44, 46, 47, 48, 47, 48, 48, 309, + 50, 51, 52, 53, 54, 55, 56, 309, + 58, 59, 60, 61, 62, 63, 64, 315, + 309, 65, 66, 67, 68, 68, 69, 69, + 69, 70, 316, 318, 71, 71, 72, 318, + 73, 318, 74, 322, 318, 75, 76, 77, + 78, 78, 79, 79, 79, 80, 323, 325, + 81, 81, 82, 325, 83, 325, 85, 85, + 325, 87, 88, 88, 325, 90, 90, 325, + 92, 93, 94, 95, 95, 325, 333, 96, + 96, 97, 333, 98, 333, 100, 100, 99, + 333, 100, 100, 333, 338, 102, 102, 103, + 104, 338, 104, 105, 105, 105, 106, 338, + 107, 338, 109, 110, 111, 338, 113, 114, + 115, 116, 117, 118, 119, 338, 121, 122, + 123, 124, 124, 338, 126, 127, 128, 129, + 130, 131, 132, 345, 338, 133, 134, 135, + 136, 136, 137, 137, 137, 138, 346, 348, + 139, 139, 140, 348, 141, 348, 143, 143, + 142, 348, 143, 143, 348, 353, 145, 145, + 146, 147, 353, 147, 148, 148, 148, 149, + 353, 150, 353, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 161, 353, 163, + 164, 164, 165, 165, 166, 167, 358, 169, + 170, 171, 172, 173, 174, 175, 176, 177, + 177, 353, 179, 180, 181, 182, 183, 184, + 185, 185, 186, 186, 187, 188, 360, 190, + 191, 192, 193, 193, 194, 194, 195, 361, + 196, 197, 197, 198, 197, 197, 198, 199, + 200, 201, 201, 202, 202, 202, 203, 204, + 194, 194, 195, 361, 206, 207, 208, 209, + 210, 211, 212, 213, 213, 214, 214, 215, + 363, 216, 271, 217, 217, 214, 218, 217, + 217, 218, 218, 219, 220, 221, 222, 223, + 224, 225, 268, 225, 226, 269, 228, 225, + 225, 226, 228, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 234, 235, 235, 236, + 240, 242, 237, 238, 239, 239, 240, 239, + 239, 241, 241, 262, 245, 243, 244, 236, + 240, 244, 246, 246, 247, 261, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 260, 260, 263, 264, 264, + 265, 265, 265, 266, 267, 241, 241, 236, + 240, 242, 245, 268, 269, 270, 225, 225, + 226, 228, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 283, 284, 284, + 285, 286, 365, 288, 289, 290, 291, 292, + 292, 353, 294, 295, 296, 297, 298, 299, + 300, 301, 301, 353, 302, 303, 303, 304, + 305, 306, 307, 308, 302, 302, 3, 21, + 25, 33, 309, 310, 310, 311, 312, 313, + 314, 317, 309, 309, 37, 49, 57, 309, + 309, 309, 309, 318, 319, 319, 320, 321, + 324, 318, 318, 318, 318, 318, 318, 325, + 326, 326, 327, 328, 329, 330, 331, 332, + 325, 325, 84, 86, 89, 91, 325, 325, + 333, 334, 334, 335, 336, 337, 333, 333, + 333, 333, 338, 339, 339, 340, 341, 342, + 343, 344, 347, 338, 338, 101, 108, 112, + 120, 125, 338, 338, 338, 338, 348, 349, + 349, 350, 351, 352, 348, 348, 348, 348, + 353, 354, 354, 355, 356, 357, 359, 362, + 364, 366, 367, 368, 353, 353, 144, 151, + 162, 168, 353, 358, 358, 178, 189, 353, + 360, 360, 353, 353, 205, 353, 353, 272, + 353, 365, 365, 287, 293, 353, 353 }; static const short _eo_tokenizer_trans_actions[] = { - 223, 0, 1, 0, 213, 0, 246, 0, - 0, 0, 0, 0, 0, 47, 0, 3, - 0, 53, 53, 324, 53, 327, 0, 1, - 215, 0, 0, 0, 3, 17, 288, 291, - 0, 15, 285, 15, 15, 0, 1, 0, - 1, 0, 0, 0, 45, 0, 0, 0, - 0, 0, 0, 0, 51, 0, 0, 0, - 49, 79, 0, 1, 0, 0, 63, 1, - 3, 0, 1, 0, 61, 0, 225, 0, - 0, 0, 7, 255, 0, 3, 0, 258, - 0, 0, 0, 0, 0, 3, 0, 252, - 0, 0, 0, 0, 0, 3, 0, 336, - 5, 77, 0, 0, 0, 0, 1, 3, - 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 339, - 97, 0, 1, 0, 81, 0, 228, 0, - 342, 95, 0, 0, 0, 0, 1, 3, - 0, 1, 0, 0, 119, 0, 1, 0, - 99, 0, 231, 0, 1, 101, 0, 0, - 1, 105, 0, 1, 103, 0, 0, 0, - 0, 1, 107, 135, 0, 1, 0, 121, - 0, 234, 9, 264, 0, 267, 0, 1, - 123, 157, 0, 1, 0, 0, 139, 1, - 3, 0, 1, 0, 137, 0, 237, 0, - 0, 0, 276, 0, 0, 0, 0, 0, - 3, 0, 273, 0, 0, 0, 0, 1, - 141, 0, 0, 0, 0, 0, 3, 0, - 345, 11, 155, 0, 0, 0, 0, 1, - 3, 0, 1, 0, 0, 0, 0, 0, + 219, 0, 1, 0, 209, 0, 242, 0, + 0, 0, 0, 0, 0, 43, 0, 3, + 0, 49, 49, 320, 49, 323, 0, 1, + 211, 0, 0, 0, 3, 13, 284, 287, + 0, 11, 281, 11, 11, 0, 1, 0, + 1, 0, 0, 0, 41, 0, 0, 0, + 0, 0, 0, 0, 47, 0, 0, 0, + 45, 75, 0, 1, 0, 0, 59, 1, + 3, 0, 1, 0, 57, 0, 221, 0, + 0, 0, 5, 251, 0, 3, 0, 254, + 0, 0, 0, 0, 0, 3, 0, 248, + 0, 0, 0, 0, 0, 3, 0, 332, + 73, 0, 0, 0, 0, 1, 3, 0, + 1, 0, 0, 93, 0, 1, 0, 77, + 0, 224, 0, 335, 91, 0, 0, 0, + 0, 1, 3, 0, 1, 0, 0, 115, + 0, 1, 0, 95, 0, 227, 0, 1, + 97, 0, 0, 1, 101, 0, 1, 99, + 0, 0, 0, 0, 1, 103, 131, 0, + 1, 0, 117, 0, 230, 7, 260, 0, + 263, 0, 1, 119, 153, 0, 1, 0, + 0, 135, 1, 3, 0, 1, 0, 133, + 0, 233, 0, 0, 0, 272, 0, 0, + 0, 0, 0, 3, 0, 269, 0, 0, + 0, 0, 1, 137, 0, 0, 0, 0, + 0, 3, 0, 338, 151, 0, 0, 0, + 0, 1, 3, 0, 1, 0, 0, 169, + 0, 1, 0, 155, 0, 236, 9, 275, + 0, 278, 0, 1, 157, 207, 0, 1, + 0, 0, 173, 1, 3, 0, 1, 0, + 171, 0, 239, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 179, 0, + 0, 1, 0, 1, 3, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 348, 173, 0, 1, 0, 159, 0, 240, - 13, 279, 0, 282, 0, 1, 161, 211, - 0, 1, 0, 0, 177, 1, 3, 0, - 1, 0, 175, 0, 243, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, - 183, 0, 0, 1, 0, 1, 3, 0, - 27, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 185, 0, 0, 0, 0, + 1, 181, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 3, 0, 21, 0, 0, 0, 0, 1, 0, 1, 3, 0, - 25, 0, 0, 0, 0, 1, 0, 1, - 3, 0, 0, 19, 294, 19, 0, 1, - 0, 0, 0, 0, 1, 3, 0, 1, - 0, 0, 21, 297, 300, 21, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, - 1, 3, 0, 0, 0, 29, 303, 29, - 29, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 31, 31, 306, 31, 309, - 31, 0, 1, 0, 0, 1, 0, 1, - 0, 0, 0, 0, 0, 0, 1, 0, - 1, 0, 0, 3, 3, 0, 37, 315, - 37, 0, 1, 0, 1, 0, 0, 0, - 35, 35, 35, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 3, 0, - 41, 0, 3, 0, 43, 0, 1, 0, - 0, 1, 3, 0, 1, 0, 0, 39, - 318, 39, 39, 321, 39, 0, 3, 0, - 33, 312, 33, 33, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, - 0, 1, 3, 0, 23, 0, 0, 0, - 0, 0, 1, 189, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 187, 217, 0, - 1, 330, 59, 59, 59, 59, 219, 221, - 0, 0, 0, 0, 67, 0, 1, 330, - 333, 333, 333, 0, 69, 75, 0, 0, - 0, 71, 249, 73, 65, 85, 0, 1, - 330, 333, 0, 87, 93, 89, 261, 91, - 83, 111, 0, 1, 330, 59, 59, 59, - 59, 0, 113, 117, 0, 0, 0, 0, - 115, 109, 127, 0, 1, 330, 333, 0, - 129, 133, 131, 125, 145, 0, 1, 330, - 59, 59, 59, 59, 0, 147, 153, 0, - 0, 0, 0, 0, 149, 270, 151, 143, - 165, 0, 1, 330, 333, 0, 167, 171, - 169, 163, 193, 0, 1, 330, 59, 59, - 59, 59, 59, 59, 59, 0, 195, 209, - 0, 0, 0, 0, 201, 0, 1, 0, - 0, 199, 0, 1, 205, 181, 0, 203, - 179, 0, 197, 0, 1, 0, 0, 207, - 191 + 0, 15, 290, 15, 0, 1, 0, 0, + 0, 0, 1, 3, 0, 1, 0, 0, + 17, 293, 296, 17, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 3, + 0, 0, 0, 25, 299, 25, 25, 0, + 1, 0, 1, 0, 0, 0, 0, 0, + 0, 27, 27, 302, 27, 305, 27, 0, + 1, 0, 0, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, + 0, 3, 3, 0, 33, 311, 33, 0, + 1, 0, 1, 0, 0, 0, 31, 31, + 31, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 37, 0, + 3, 0, 39, 0, 1, 0, 0, 1, + 3, 0, 1, 0, 0, 35, 314, 35, + 35, 317, 35, 0, 3, 0, 29, 308, + 29, 29, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 1, + 3, 0, 19, 0, 0, 0, 0, 0, + 1, 185, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 183, 213, 0, 1, 326, + 55, 55, 55, 55, 215, 217, 0, 0, + 0, 0, 63, 0, 1, 326, 329, 329, + 329, 0, 65, 71, 0, 0, 0, 67, + 245, 69, 61, 81, 0, 1, 326, 329, + 0, 83, 89, 85, 257, 87, 79, 107, + 0, 1, 326, 55, 55, 55, 55, 0, + 109, 113, 0, 0, 0, 0, 111, 105, + 123, 0, 1, 326, 329, 0, 125, 129, + 127, 121, 141, 0, 1, 326, 55, 55, + 55, 55, 0, 143, 149, 0, 0, 0, + 0, 0, 145, 266, 147, 139, 161, 0, + 1, 326, 329, 0, 163, 167, 165, 159, + 189, 0, 1, 326, 55, 55, 55, 55, + 55, 55, 55, 0, 191, 205, 0, 0, + 0, 0, 197, 0, 1, 0, 0, 195, + 0, 1, 201, 177, 0, 199, 175, 0, + 193, 0, 1, 0, 0, 203, 187 }; static const short _eo_tokenizer_to_state_actions[] = { @@ -1119,17 +1134,14 @@ static const short _eo_tokenizer_to_state_actions[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 55, 0, - 0, 0, 0, 0, 0, 55, 0, 0, - 0, 0, 0, 0, 0, 0, 55, 0, - 0, 0, 0, 0, 0, 55, 0, 0, - 0, 0, 0, 0, 0, 55, 0, 0, - 0, 0, 55, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 55, 0, 0, 0, - 0, 55, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 0, + 0, 0, 0, 0, 0, 51, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 0, + 0, 0, 0, 0, 0, 51, 0, 0, + 0, 0, 0, 0, 0, 51, 0, 0, + 0, 0, 51, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 0, 0, 0, + 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -1172,17 +1184,14 @@ static const short _eo_tokenizer_from_state_actions[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 57, 0, - 0, 0, 0, 0, 0, 57, 0, 0, - 0, 0, 0, 0, 0, 0, 57, 0, - 0, 0, 0, 0, 0, 57, 0, 0, - 0, 0, 0, 0, 0, 57, 0, 0, - 0, 0, 57, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 57, 0, 0, 0, - 0, 57, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 53, 0, + 0, 0, 0, 0, 0, 53, 0, 0, + 0, 0, 0, 0, 0, 0, 53, 0, + 0, 0, 0, 0, 0, 53, 0, 0, + 0, 0, 0, 0, 0, 53, 0, 0, + 0, 0, 53, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 53, 0, 0, 0, + 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -1196,65 +1205,62 @@ static const short _eo_tokenizer_eof_trans[] = { 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 98, 98, 98, 98, 98, 98, 58, - 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 121, 121, 121, 121, 130, - 130, 130, 130, 130, 130, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 164, 164, 164, 164, - 164, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, - 178, 219, 219, 219, 219, 219, 219, 178, - 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 242, 242, 242, 242, 242, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 0, 495, - 496, 496, 496, 496, 496, 0, 509, 510, - 510, 510, 510, 514, 515, 516, 0, 524, - 525, 525, 526, 527, 528, 0, 539, 540, - 540, 540, 540, 540, 545, 0, 553, 554, - 554, 555, 0, 566, 567, 567, 567, 567, - 567, 573, 574, 575, 0, 583, 584, 584, - 585, 0, 599, 600, 600, 600, 605, 600, - 610, 613, 600, 616, 600, 619, 600, 600, - 624 + 58, 97, 97, 97, 97, 97, 97, 108, + 108, 108, 108, 117, 117, 117, 117, 117, + 117, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 151, 151, 151, 151, 151, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 205, 205, 205, + 205, 205, 205, 216, 216, 216, 216, 216, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 0, 469, + 470, 470, 470, 470, 470, 0, 483, 484, + 484, 484, 484, 488, 489, 490, 0, 498, + 499, 499, 500, 501, 502, 0, 513, 514, + 514, 514, 514, 514, 519, 0, 527, 528, + 528, 529, 0, 540, 541, 541, 541, 541, + 541, 547, 548, 549, 0, 557, 558, 558, + 559, 0, 573, 574, 574, 574, 579, 574, + 584, 587, 574, 590, 574, 593, 574, 574, + 598 }; -static const int eo_tokenizer_start = 326; -static const int eo_tokenizer_first_final = 326; +static const int eo_tokenizer_start = 302; +static const int eo_tokenizer_first_final = 302; static const int eo_tokenizer_error = -1; -static const int eo_tokenizer_en_tokenize_accessor = 333; -static const int eo_tokenizer_en_tokenize_params = 342; -static const int eo_tokenizer_en_tokenize_property = 349; -static const int eo_tokenizer_en_tokenize_properties = 357; -static const int eo_tokenizer_en_tokenize_method = 362; -static const int eo_tokenizer_en_tokenize_methods = 372; -static const int eo_tokenizer_en_tokenize_class = 377; -static const int eo_tokenizer_en_main = 326; +static const int eo_tokenizer_en_tokenize_accessor = 309; +static const int eo_tokenizer_en_tokenize_params = 318; +static const int eo_tokenizer_en_tokenize_property = 325; +static const int eo_tokenizer_en_tokenize_properties = 333; +static const int eo_tokenizer_en_tokenize_method = 338; +static const int eo_tokenizer_en_tokenize_methods = 348; +static const int eo_tokenizer_en_tokenize_class = 353; +static const int eo_tokenizer_en_main = 302; -#line 966 "lib/eolian/eo_lexer.rl" +#line 997 "lib/eolian/eo_lexer.rl" Eina_Bool @@ -1278,7 +1284,7 @@ eo_tokenizer_walk(Eo_Tokenizer *toknz, const char *source) } -#line 1282 "lib/eolian/eo_lexer.c" +#line 1288 "lib/eolian/eo_lexer.c" { toknz->cs = eo_tokenizer_start; toknz->ts = 0; @@ -1286,7 +1292,7 @@ eo_tokenizer_walk(Eo_Tokenizer *toknz, const char *source) toknz->act = 0; } -#line 989 "lib/eolian/eo_lexer.rl" +#line 1020 "lib/eolian/eo_lexer.rl" while (!done) { @@ -1313,7 +1319,7 @@ eo_tokenizer_walk(Eo_Tokenizer *toknz, const char *source) } -#line 1317 "lib/eolian/eo_lexer.c" +#line 1323 "lib/eolian/eo_lexer.c" { int _klen; unsigned int _trans; @@ -1328,11 +1334,11 @@ _resume: _nacts = (unsigned int) *_acts++; while ( _nacts-- > 0 ) { switch ( *_acts++ ) { - case 39: + case 37: #line 1 "NONE" { toknz->ts = ( toknz->p);} break; -#line 1336 "lib/eolian/eo_lexer.c" +#line 1342 "lib/eolian/eo_lexer.c" } } @@ -1399,69 +1405,61 @@ _eof_trans: switch ( *_acts++ ) { case 0: -#line 292 "lib/eolian/eo_lexer.rl" +#line 337 "lib/eolian/eo_lexer.rl" { toknz->current_line += 1; DBG("inc[%d] %d", toknz->cs, toknz->current_line); } break; case 1: -#line 297 "lib/eolian/eo_lexer.rl" +#line 342 "lib/eolian/eo_lexer.rl" { toknz->saved.line = toknz->current_line; DBG("save line[%d] %d", toknz->cs, toknz->current_line); } break; case 2: -#line 302 "lib/eolian/eo_lexer.rl" +#line 347 "lib/eolian/eo_lexer.rl" { toknz->saved.tok = ( toknz->p); DBG("save token[%d] %p %c", toknz->cs, ( toknz->p), *( toknz->p)); } break; case 3: -#line 376 "lib/eolian/eo_lexer.rl" +#line 421 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); - if (toknz->tmp.accessor->ret.type != NULL) + if (toknz->tmp.accessor->ret != NULL) ABORT(toknz, "accessor has already a return type"); - toknz->tmp.accessor->ret.type = _eo_tokenizer_token_get(toknz, ( toknz->p)); - INF(" %s", toknz->tmp.accessor->ret.type); + toknz->tmp.accessor->ret = _eo_tokenizer_return_get(toknz, ( toknz->p)); } break; case 4: -#line 384 "lib/eolian/eo_lexer.rl" +#line 428 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); - if (toknz->tmp.accessor->ret.comment != NULL) + if (!toknz->tmp.accessor->ret) ABORT(toknz, "No ret!!!"); + if (toknz->tmp.accessor->ret->comment != NULL) ABORT(toknz, "accessor return type has already a comment"); - toknz->tmp.accessor->ret.comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2); - INF(" %s", toknz->tmp.accessor->ret.comment); + toknz->tmp.accessor->ret->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2); + INF(" %s", toknz->tmp.accessor->ret->comment); } break; case 5: -#line 392 "lib/eolian/eo_lexer.rl" - { - if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); - toknz->tmp.accessor->ret.warn_unused = EINA_TRUE; - INF(" WARN_UNUSED"); - } - break; - case 6: -#line 398 "lib/eolian/eo_lexer.rl" +#line 437 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); toknz->tmp.accessor->legacy = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 7: -#line 412 "lib/eolian/eo_lexer.rl" + case 6: +#line 451 "lib/eolian/eo_lexer.rl" { toknz->tmp.accessor_param = _eo_tokenizer_accessor_param_get(toknz, ( toknz->p)); } break; - case 8: -#line 416 "lib/eolian/eo_lexer.rl" + case 7: +#line 455 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.accessor_param) ABORT(toknz, "No accessor param!!!"); @@ -1471,8 +1469,8 @@ _eof_trans: toknz->tmp.accessor_param = NULL; } break; - case 9: -#line 446 "lib/eolian/eo_lexer.rl" + case 8: +#line 484 "lib/eolian/eo_lexer.rl" { const char *c = _eo_tokenizer_token_get(toknz, ( toknz->p)-2); if (toknz->tmp.param == NULL) @@ -1481,8 +1479,8 @@ _eof_trans: toknz->tmp.param = NULL; } break; - case 10: -#line 454 "lib/eolian/eo_lexer.rl" + case 9: +#line 492 "lib/eolian/eo_lexer.rl" { toknz->tmp.param = _eo_tokenizer_param_get(toknz, ( toknz->p)); if (toknz->tmp.params) @@ -1492,90 +1490,82 @@ _eof_trans: INF(" %s : %s", toknz->tmp.param->name, toknz->tmp.param->type); } break; - case 11: -#line 554 "lib/eolian/eo_lexer.rl" + case 10: +#line 592 "lib/eolian/eo_lexer.rl" { if (toknz->tmp.prop != NULL) ABORT(toknz, "there is a pending property definition %s", toknz->tmp.prop->name); toknz->tmp.prop = _eo_tokenizer_property_get(toknz, ( toknz->p)); } break; - case 12: -#line 594 "lib/eolian/eo_lexer.rl" + case 11: +#line 632 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); - if (toknz->tmp.meth->ret.type != NULL) + if (toknz->tmp.meth->ret != NULL) ABORT(toknz, "method '%s' has already a return type", toknz->tmp.meth->name); - toknz->tmp.meth->ret.type = _eo_tokenizer_token_get(toknz, ( toknz->p)); - INF(" %s", toknz->tmp.meth->ret.type); + toknz->tmp.meth->ret = _eo_tokenizer_return_get(toknz, ( toknz->p)); } break; - case 13: -#line 602 "lib/eolian/eo_lexer.rl" + case 12: +#line 639 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); - if (toknz->tmp.meth->ret.comment != NULL) + if (toknz->tmp.meth->ret != NULL) ABORT(toknz, "No ret!!!"); + if (toknz->tmp.meth->ret->comment != NULL) ABORT(toknz, "method '%s' return type has already a comment", toknz->tmp.meth->name); - toknz->tmp.meth->ret.comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2); - INF(" %s", toknz->tmp.meth->ret.comment); + toknz->tmp.meth->ret->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2); + INF(" %s", toknz->tmp.meth->ret->comment); } break; - case 14: -#line 610 "lib/eolian/eo_lexer.rl" - { - if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); - toknz->tmp.meth->ret.warn_unused = EINA_TRUE; - INF(" WARN_UNUSED"); - } - break; - case 15: -#line 616 "lib/eolian/eo_lexer.rl" + case 13: +#line 648 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); toknz->tmp.meth->legacy = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 16: -#line 621 "lib/eolian/eo_lexer.rl" + case 14: +#line 653 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); toknz->tmp.meth->obj_const = EINA_TRUE; INF(" obj const"); } break; - case 17: -#line 684 "lib/eolian/eo_lexer.rl" + case 15: +#line 715 "lib/eolian/eo_lexer.rl" { if (toknz->tmp.meth != NULL) ABORT(toknz, "there is a pending method definition %s", toknz->tmp.meth->name); toknz->tmp.meth = _eo_tokenizer_method_get(toknz, ( toknz->p)); } break; - case 18: -#line 716 "lib/eolian/eo_lexer.rl" + case 16: +#line 747 "lib/eolian/eo_lexer.rl" { const char *base = _eo_tokenizer_token_get(toknz, ( toknz->p)); toknz->tmp.str_items = eina_list_append(toknz->tmp.str_items, base); } break; - case 19: -#line 721 "lib/eolian/eo_lexer.rl" + case 17: +#line 752 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); toknz->tmp.kls->inherits = toknz->tmp.str_items; toknz->tmp.str_items = NULL; } break; - case 20: -#line 769 "lib/eolian/eo_lexer.rl" + case 18: +#line 800 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); toknz->tmp.event = _eo_tokenizer_event_get(toknz, ( toknz->p)); toknz->tmp.kls->events = eina_list_append(toknz->tmp.kls->events, toknz->tmp.event); } break; - case 21: -#line 775 "lib/eolian/eo_lexer.rl" + case 19: +#line 806 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.event) ABORT(toknz, "No event!!!"); if (toknz->tmp.event->comment != NULL) @@ -1584,8 +1574,8 @@ _eof_trans: toknz->tmp.event = NULL; } break; - case 22: -#line 783 "lib/eolian/eo_lexer.rl" + case 20: +#line 814 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); if (toknz->tmp.kls->legacy_prefix != NULL) @@ -1593,8 +1583,8 @@ _eof_trans: toknz->tmp.kls->legacy_prefix = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 23: -#line 792 "lib/eolian/eo_lexer.rl" + case 21: +#line 823 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); if (toknz->tmp.kls->eo_prefix != NULL) @@ -1602,8 +1592,8 @@ _eof_trans: toknz->tmp.kls->eo_prefix = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 24: -#line 801 "lib/eolian/eo_lexer.rl" + case 22: +#line 832 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); if (toknz->tmp.kls->data_type != NULL) @@ -1611,16 +1601,16 @@ _eof_trans: toknz->tmp.kls->data_type = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 25: -#line 814 "lib/eolian/eo_lexer.rl" + case 23: +#line 845 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); toknz->tmp.impl = _eo_tokenizer_implement_get(toknz, ( toknz->p)); toknz->tmp.kls->implements = eina_list_append(toknz->tmp.kls->implements, toknz->tmp.impl); } break; - case 26: -#line 820 "lib/eolian/eo_lexer.rl" + case 24: +#line 851 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!"); if (toknz->tmp.impl->legacy) @@ -1628,8 +1618,8 @@ _eof_trans: toknz->tmp.impl->legacy = calloc(1, sizeof(Eo_Implement_Legacy_Def)); } break; - case 27: -#line 827 "lib/eolian/eo_lexer.rl" + case 25: +#line 858 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!"); if (!toknz->tmp.impl->legacy) @@ -1637,8 +1627,8 @@ _eof_trans: toknz->tmp.impl->legacy->function_name = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 28: -#line 834 "lib/eolian/eo_lexer.rl" + case 26: +#line 865 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!"); toknz->tmp.impl_leg_param = calloc(1, sizeof(Eo_Implement_Legacy_Param_Def)); @@ -1648,24 +1638,24 @@ _eof_trans: toknz->tmp.impl_leg_param->eo_name = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 29: -#line 843 "lib/eolian/eo_lexer.rl" + case 27: +#line 874 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.impl_leg_param) ABORT(toknz, "No implement legacy param!!!"); toknz->tmp.impl_leg_param->legacy_name = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 30: -#line 849 "lib/eolian/eo_lexer.rl" + case 28: +#line 880 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.impl_leg_param) ABORT(toknz, "No implement legacy param!!!"); toknz->tmp.impl_leg_param->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2); } break; - case 31: -#line 855 "lib/eolian/eo_lexer.rl" + case 29: +#line 886 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!"); if (!toknz->tmp.impl->legacy) @@ -1673,8 +1663,8 @@ _eof_trans: toknz->tmp.impl->legacy->ret_type= _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 32: -#line 862 "lib/eolian/eo_lexer.rl" + case 30: +#line 893 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!"); if (!toknz->tmp.impl->legacy) @@ -1682,32 +1672,32 @@ _eof_trans: toknz->tmp.impl->legacy->ret_value = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 33: -#line 932 "lib/eolian/eo_lexer.rl" + case 31: +#line 963 "lib/eolian/eo_lexer.rl" { toknz->tmp.kls_type = EOLIAN_CLASS_REGULAR; } break; - case 34: -#line 935 "lib/eolian/eo_lexer.rl" + case 32: +#line 966 "lib/eolian/eo_lexer.rl" { toknz->tmp.kls_type = EOLIAN_CLASS_ABSTRACT; } break; - case 35: -#line 938 "lib/eolian/eo_lexer.rl" + case 33: +#line 969 "lib/eolian/eo_lexer.rl" { toknz->tmp.kls_type = EOLIAN_CLASS_MIXIN; } break; - case 36: -#line 941 "lib/eolian/eo_lexer.rl" + case 34: +#line 972 "lib/eolian/eo_lexer.rl" { toknz->tmp.kls_type = EOLIAN_CLASS_INTERFACE; } break; - case 37: -#line 945 "lib/eolian/eo_lexer.rl" + case 35: +#line 976 "lib/eolian/eo_lexer.rl" { if (toknz->tmp.kls != NULL) ABORT(toknz, "there is a pending class definition %s", toknz->tmp.kls->name); @@ -1715,12 +1705,12 @@ _eof_trans: toknz->tmp.kls->type = toknz->tmp.kls_type; } break; - case 40: + case 38: #line 1 "NONE" { toknz->te = ( toknz->p)+1;} break; - case 41: -#line 368 "lib/eolian/eo_lexer.rl" + case 39: +#line 413 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); if (toknz->tmp.accessor->comment != NULL) @@ -1729,34 +1719,34 @@ _eof_trans: INF(" %s", toknz->tmp.accessor->comment); }} break; - case 42: -#line 307 "lib/eolian/eo_lexer.rl" + case 40: +#line 352 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("comment[%d] line%03d:%03d", toknz->cs, toknz->saved.line, toknz->current_line); }} break; - case 43: -#line 438 "lib/eolian/eo_lexer.rl" + case 41: +#line 476 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;} break; - case 44: -#line 439 "lib/eolian/eo_lexer.rl" + case 42: +#line 477 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;} break; - case 45: -#line 403 "lib/eolian/eo_lexer.rl" + case 43: +#line 442 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" }"); if (!toknz->tmp.prop) ABORT(toknz, "No prop!!!"); toknz->tmp.prop->accessors = eina_list_append(toknz->tmp.prop->accessors, toknz->tmp.accessor); toknz->tmp.accessor = NULL; toknz->current_nesting--; - { toknz->cs = 349; goto _again;} + { toknz->cs = 325; goto _again;} }} break; - case 46: -#line 316 "lib/eolian/eo_lexer.rl" + case 44: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -1774,27 +1764,27 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 47: -#line 434 "lib/eolian/eo_lexer.rl" + case 45: +#line 472 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 48: -#line 437 "lib/eolian/eo_lexer.rl" + case 46: +#line 475 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 49: -#line 403 "lib/eolian/eo_lexer.rl" + case 47: +#line 442 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ INF(" }"); if (!toknz->tmp.prop) ABORT(toknz, "No prop!!!"); toknz->tmp.prop->accessors = eina_list_append(toknz->tmp.prop->accessors, toknz->tmp.accessor); toknz->tmp.accessor = NULL; toknz->current_nesting--; - { toknz->cs = 349; goto _again;} + { toknz->cs = 325; goto _again;} }} break; - case 50: -#line 316 "lib/eolian/eo_lexer.rl" + case 48: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -1812,12 +1802,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 51: -#line 437 "lib/eolian/eo_lexer.rl" + case 49: +#line 475 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}} break; - case 52: -#line 316 "lib/eolian/eo_lexer.rl" + case 50: +#line 361 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -1835,29 +1825,29 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 53: -#line 307 "lib/eolian/eo_lexer.rl" + case 51: +#line 352 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("comment[%d] line%03d:%03d", toknz->cs, toknz->saved.line, toknz->current_line); }} break; - case 54: -#line 463 "lib/eolian/eo_lexer.rl" + case 52: +#line 501 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" }"); toknz->tmp.param = NULL; toknz->current_nesting--; if (toknz->tmp.prop) - { toknz->cs = 349; goto _again;} + { toknz->cs = 325; goto _again;} else if (toknz->tmp.meth) - { toknz->cs = 362; goto _again;} + { toknz->cs = 338; goto _again;} else ABORT(toknz, "leaving tokenize_params but there is no property nor method pending"); }} break; - case 55: -#line 316 "lib/eolian/eo_lexer.rl" + case 53: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -1875,30 +1865,30 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 56: -#line 479 "lib/eolian/eo_lexer.rl" + case 54: +#line 517 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 57: -#line 481 "lib/eolian/eo_lexer.rl" + case 55: +#line 519 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 58: -#line 463 "lib/eolian/eo_lexer.rl" + case 56: +#line 501 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ INF(" }"); toknz->tmp.param = NULL; toknz->current_nesting--; if (toknz->tmp.prop) - { toknz->cs = 349; goto _again;} + { toknz->cs = 325; goto _again;} else if (toknz->tmp.meth) - { toknz->cs = 362; goto _again;} + { toknz->cs = 338; goto _again;} else ABORT(toknz, "leaving tokenize_params but there is no property nor method pending"); }} break; - case 59: -#line 316 "lib/eolian/eo_lexer.rl" + case 57: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -1916,12 +1906,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 60: -#line 481 "lib/eolian/eo_lexer.rl" + case 58: +#line 519 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}} break; - case 61: -#line 316 "lib/eolian/eo_lexer.rl" + case 59: +#line 361 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -1939,51 +1929,51 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 62: -#line 307 "lib/eolian/eo_lexer.rl" + case 60: +#line 352 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("comment[%d] line%03d:%03d", toknz->cs, toknz->saved.line, toknz->current_line); }} break; - case 63: -#line 488 "lib/eolian/eo_lexer.rl" + case 61: +#line 526 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" get {"); toknz->tmp.accessor = _eo_tokenizer_accessor_get(toknz, GETTER); toknz->current_nesting++; - { toknz->cs = 333; goto _again;} + { toknz->cs = 309; goto _again;} }} break; - case 64: -#line 495 "lib/eolian/eo_lexer.rl" + case 62: +#line 533 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" set {"); toknz->tmp.accessor = _eo_tokenizer_accessor_get(toknz, SETTER); toknz->current_nesting++; - { toknz->cs = 333; goto _again;} + { toknz->cs = 309; goto _again;} }} break; - case 65: -#line 502 "lib/eolian/eo_lexer.rl" + case 63: +#line 540 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" keys {"); toknz->current_nesting++; toknz->tmp.params = &(toknz->tmp.prop->keys); - { toknz->cs = 342; goto _again;} + { toknz->cs = 318; goto _again;} }} break; - case 66: -#line 509 "lib/eolian/eo_lexer.rl" + case 64: +#line 547 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" values {"); toknz->current_nesting++; toknz->tmp.params = &(toknz->tmp.prop->values); - { toknz->cs = 342; goto _again;} + { toknz->cs = 318; goto _again;} }} break; - case 67: -#line 516 "lib/eolian/eo_lexer.rl" + case 65: +#line 554 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.prop) ABORT(toknz, "No property!!!"); if (eina_list_count(toknz->tmp.prop->values) == 0) @@ -1994,11 +1984,11 @@ _eof_trans: toknz->tmp.kls->properties = eina_list_append(toknz->tmp.kls->properties, toknz->tmp.prop); toknz->tmp.prop = NULL; toknz->current_nesting--; - { toknz->cs = 357; goto _again;} + { toknz->cs = 333; goto _again;} }} break; - case 68: -#line 316 "lib/eolian/eo_lexer.rl" + case 66: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2016,12 +2006,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 69: -#line 535 "lib/eolian/eo_lexer.rl" + case 67: +#line 573 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 70: -#line 516 "lib/eolian/eo_lexer.rl" + case 68: +#line 554 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ if (!toknz->tmp.prop) ABORT(toknz, "No property!!!"); if (eina_list_count(toknz->tmp.prop->values) == 0) @@ -2032,11 +2022,11 @@ _eof_trans: toknz->tmp.kls->properties = eina_list_append(toknz->tmp.kls->properties, toknz->tmp.prop); toknz->tmp.prop = NULL; toknz->current_nesting--; - { toknz->cs = 357; goto _again;} + { toknz->cs = 333; goto _again;} }} break; - case 71: -#line 316 "lib/eolian/eo_lexer.rl" + case 69: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2054,8 +2044,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 72: -#line 316 "lib/eolian/eo_lexer.rl" + case 70: +#line 361 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2073,32 +2063,32 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 73: -#line 307 "lib/eolian/eo_lexer.rl" + case 71: +#line 352 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("comment[%d] line%03d:%03d", toknz->cs, toknz->saved.line, toknz->current_line); }} break; - case 74: -#line 547 "lib/eolian/eo_lexer.rl" + case 72: +#line 585 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.prop) ABORT(toknz, "No property!!!"); INF(" %s {", toknz->tmp.prop->name); toknz->current_nesting++; - { toknz->cs = 349; goto _again;} + { toknz->cs = 325; goto _again;} }} break; - case 75: -#line 560 "lib/eolian/eo_lexer.rl" + case 73: +#line 598 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" }"); toknz->current_nesting--; - { toknz->cs = 377; goto _again;} + { toknz->cs = 353; goto _again;} }} break; - case 76: -#line 316 "lib/eolian/eo_lexer.rl" + case 74: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2116,20 +2106,20 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 77: -#line 569 "lib/eolian/eo_lexer.rl" + case 75: +#line 607 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 78: -#line 560 "lib/eolian/eo_lexer.rl" + case 76: +#line 598 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ INF(" }"); toknz->current_nesting--; - { toknz->cs = 377; goto _again;} + { toknz->cs = 353; goto _again;} }} break; - case 79: -#line 316 "lib/eolian/eo_lexer.rl" + case 77: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2147,8 +2137,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 80: -#line 316 "lib/eolian/eo_lexer.rl" + case 78: +#line 361 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2166,8 +2156,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 81: -#line 578 "lib/eolian/eo_lexer.rl" + case 79: +#line 616 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); if (toknz->tmp.meth->comment != NULL) @@ -2176,33 +2166,33 @@ _eof_trans: INF(" %s", toknz->tmp.meth->comment); }} break; - case 82: -#line 307 "lib/eolian/eo_lexer.rl" + case 80: +#line 352 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("comment[%d] line%03d:%03d", toknz->cs, toknz->saved.line, toknz->current_line); }} break; - case 83: -#line 586 "lib/eolian/eo_lexer.rl" + case 81: +#line 624 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); INF(" params {"); toknz->current_nesting++; toknz->tmp.params = &(toknz->tmp.meth->params); - { toknz->cs = 342; goto _again;} + { toknz->cs = 318; goto _again;} }} break; - case 84: -#line 669 "lib/eolian/eo_lexer.rl" + case 82: +#line 700 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;} break; - case 85: -#line 670 "lib/eolian/eo_lexer.rl" + case 83: +#line 701 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;} break; - case 86: -#line 627 "lib/eolian/eo_lexer.rl" + case 84: +#line 659 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ Eina_List **l = NULL; if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); @@ -2226,11 +2216,11 @@ _eof_trans: *l = eina_list_append(*l, toknz->tmp.meth); toknz->tmp.meth = NULL; toknz->current_nesting--; - { toknz->cs = 372; goto _again;} + { toknz->cs = 348; goto _again;} }} break; - case 87: -#line 316 "lib/eolian/eo_lexer.rl" + case 85: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2248,16 +2238,16 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 88: -#line 664 "lib/eolian/eo_lexer.rl" + case 86: +#line 695 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 89: -#line 668 "lib/eolian/eo_lexer.rl" + case 87: +#line 699 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 90: -#line 627 "lib/eolian/eo_lexer.rl" + case 88: +#line 659 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ Eina_List **l = NULL; if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); @@ -2281,11 +2271,11 @@ _eof_trans: *l = eina_list_append(*l, toknz->tmp.meth); toknz->tmp.meth = NULL; toknz->current_nesting--; - { toknz->cs = 372; goto _again;} + { toknz->cs = 348; goto _again;} }} break; - case 91: -#line 316 "lib/eolian/eo_lexer.rl" + case 89: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2303,12 +2293,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 92: -#line 668 "lib/eolian/eo_lexer.rl" + case 90: +#line 699 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}} break; - case 93: -#line 316 "lib/eolian/eo_lexer.rl" + case 91: +#line 361 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2326,33 +2316,33 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 94: -#line 307 "lib/eolian/eo_lexer.rl" + case 92: +#line 352 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("comment[%d] line%03d:%03d", toknz->cs, toknz->saved.line, toknz->current_line); }} break; - case 95: -#line 677 "lib/eolian/eo_lexer.rl" + case 93: +#line 708 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); INF(" %s {", toknz->tmp.meth->name); toknz->current_nesting++; - { toknz->cs = 362; goto _again;} + { toknz->cs = 338; goto _again;} }} break; - case 96: -#line 690 "lib/eolian/eo_lexer.rl" + case 94: +#line 721 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" }"); toknz->current_methods_type = METH_TYPE_LAST; toknz->current_nesting--; - { toknz->cs = 377; goto _again;} + { toknz->cs = 353; goto _again;} }} break; - case 97: -#line 316 "lib/eolian/eo_lexer.rl" + case 95: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2370,21 +2360,21 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 98: -#line 700 "lib/eolian/eo_lexer.rl" + case 96: +#line 731 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 99: -#line 690 "lib/eolian/eo_lexer.rl" + case 97: +#line 721 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ INF(" }"); toknz->current_methods_type = METH_TYPE_LAST; toknz->current_nesting--; - { toknz->cs = 377; goto _again;} + { toknz->cs = 353; goto _again;} }} break; - case 100: -#line 316 "lib/eolian/eo_lexer.rl" + case 98: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2402,8 +2392,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 101: -#line 316 "lib/eolian/eo_lexer.rl" + case 99: +#line 361 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2421,8 +2411,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 102: -#line 709 "lib/eolian/eo_lexer.rl" + case 100: +#line 740 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); if (toknz->tmp.kls->comment != NULL) @@ -2430,71 +2420,71 @@ _eof_trans: toknz->tmp.kls->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-1); }} break; - case 103: -#line 307 "lib/eolian/eo_lexer.rl" + case 101: +#line 352 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("comment[%d] line%03d:%03d", toknz->cs, toknz->saved.line, toknz->current_line); }} break; - case 104: -#line 727 "lib/eolian/eo_lexer.rl" + case 102: +#line 758 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ }} break; - case 105: -#line 730 "lib/eolian/eo_lexer.rl" + case 103: +#line 761 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ }} break; - case 106: -#line 733 "lib/eolian/eo_lexer.rl" + case 104: +#line 764 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" constructors {"); toknz->current_methods_type = METH_CONSTRUCTOR; toknz->current_nesting++; - { toknz->cs = 372; goto _again;} + { toknz->cs = 348; goto _again;} }} break; - case 107: -#line 740 "lib/eolian/eo_lexer.rl" + case 105: +#line 771 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" destructors {"); toknz->current_methods_type = METH_DESTRUCTOR; toknz->current_nesting++; - { toknz->cs = 372; goto _again;} + { toknz->cs = 348; goto _again;} }} break; - case 108: -#line 747 "lib/eolian/eo_lexer.rl" + case 106: +#line 778 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" properties {"); toknz->current_nesting++; - { toknz->cs = 357; goto _again;} + { toknz->cs = 333; goto _again;} }} break; - case 109: -#line 753 "lib/eolian/eo_lexer.rl" + case 107: +#line 784 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" begin methods"); toknz->current_methods_type = METH_REGULAR; toknz->current_nesting++; - { toknz->cs = 372; goto _again;} + { toknz->cs = 348; goto _again;} }} break; - case 110: -#line 760 "lib/eolian/eo_lexer.rl" + case 108: +#line 791 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); INF("end class: %s", toknz->tmp.kls->name); toknz->classes = eina_list_append(toknz->classes, toknz->tmp.kls); toknz->tmp.kls = NULL; toknz->current_nesting--; - { toknz->cs = 326; goto _again;} + { toknz->cs = 302; goto _again;} }} break; - case 111: -#line 316 "lib/eolian/eo_lexer.rl" + case 109: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2512,45 +2502,45 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 112: -#line 907 "lib/eolian/eo_lexer.rl" + case 110: +#line 938 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 113: -#line 910 "lib/eolian/eo_lexer.rl" + case 111: +#line 941 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 114: -#line 911 "lib/eolian/eo_lexer.rl" + case 112: +#line 942 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 115: -#line 912 "lib/eolian/eo_lexer.rl" + case 113: +#line 943 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 116: -#line 727 "lib/eolian/eo_lexer.rl" + case 114: +#line 758 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ }} break; - case 117: -#line 730 "lib/eolian/eo_lexer.rl" + case 115: +#line 761 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ }} break; - case 118: -#line 760 "lib/eolian/eo_lexer.rl" + case 116: +#line 791 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); INF("end class: %s", toknz->tmp.kls->name); toknz->classes = eina_list_append(toknz->classes, toknz->tmp.kls); toknz->tmp.kls = NULL; toknz->current_nesting--; - { toknz->cs = 326; goto _again;} + { toknz->cs = 302; goto _again;} }} break; - case 119: -#line 316 "lib/eolian/eo_lexer.rl" + case 117: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2568,8 +2558,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 120: -#line 316 "lib/eolian/eo_lexer.rl" + case 118: +#line 361 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2587,24 +2577,24 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 121: -#line 307 "lib/eolian/eo_lexer.rl" + case 119: +#line 352 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("comment[%d] line%03d:%03d", toknz->cs, toknz->saved.line, toknz->current_line); }} break; - case 122: -#line 925 "lib/eolian/eo_lexer.rl" + case 120: +#line 956 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); INF("begin class: %s", toknz->tmp.kls->name); toknz->current_nesting++; - { toknz->cs = 377; goto _again;} + { toknz->cs = 353; goto _again;} }} break; - case 123: -#line 316 "lib/eolian/eo_lexer.rl" + case 121: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2622,12 +2612,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 124: -#line 960 "lib/eolian/eo_lexer.rl" + case 122: +#line 991 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 125: -#line 316 "lib/eolian/eo_lexer.rl" + case 123: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2645,8 +2635,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 126: -#line 316 "lib/eolian/eo_lexer.rl" + case 124: +#line 361 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2664,7 +2654,7 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; -#line 2668 "lib/eolian/eo_lexer.c" +#line 2658 "lib/eolian/eo_lexer.c" } } @@ -2673,11 +2663,11 @@ _again: _nacts = (unsigned int) *_acts++; while ( _nacts-- > 0 ) { switch ( *_acts++ ) { - case 38: + case 36: #line 1 "NONE" { toknz->ts = 0;} break; -#line 2681 "lib/eolian/eo_lexer.c" +#line 2671 "lib/eolian/eo_lexer.c" } } @@ -2695,12 +2685,12 @@ _again: _out: {} } -#line 1015 "lib/eolian/eo_lexer.rl" +#line 1046 "lib/eolian/eo_lexer.rl" if ( toknz->cs == -#line 2702 "lib/eolian/eo_lexer.c" +#line 2692 "lib/eolian/eo_lexer.c" -1 -#line 1016 "lib/eolian/eo_lexer.rl" +#line 1047 "lib/eolian/eo_lexer.rl" ) { ERR("%s: wrong termination", source); @@ -2746,7 +2736,7 @@ eo_tokenizer_mem_walk(Eo_Tokenizer *toknz, const char *source, char *buffer, uns Eina_Bool ret = EINA_TRUE; -#line 2750 "lib/eolian/eo_lexer.c" +#line 2740 "lib/eolian/eo_lexer.c" { toknz->cs = eo_tokenizer_start; toknz->ts = 0; @@ -2754,7 +2744,7 @@ eo_tokenizer_mem_walk(Eo_Tokenizer *toknz, const char *source, char *buffer, uns toknz->act = 0; } -#line 1061 "lib/eolian/eo_lexer.rl" +#line 1092 "lib/eolian/eo_lexer.rl" toknz->p = buffer; @@ -2763,7 +2753,7 @@ eo_tokenizer_mem_walk(Eo_Tokenizer *toknz, const char *source, char *buffer, uns toknz->eof = toknz->pe; -#line 2767 "lib/eolian/eo_lexer.c" +#line 2757 "lib/eolian/eo_lexer.c" { int _klen; unsigned int _trans; @@ -2778,11 +2768,11 @@ _resume: _nacts = (unsigned int) *_acts++; while ( _nacts-- > 0 ) { switch ( *_acts++ ) { - case 39: + case 37: #line 1 "NONE" { toknz->ts = ( toknz->p);} break; -#line 2786 "lib/eolian/eo_lexer.c" +#line 2776 "lib/eolian/eo_lexer.c" } } @@ -2849,69 +2839,61 @@ _eof_trans: switch ( *_acts++ ) { case 0: -#line 292 "lib/eolian/eo_lexer.rl" +#line 337 "lib/eolian/eo_lexer.rl" { toknz->current_line += 1; DBG("inc[%d] %d", toknz->cs, toknz->current_line); } break; case 1: -#line 297 "lib/eolian/eo_lexer.rl" +#line 342 "lib/eolian/eo_lexer.rl" { toknz->saved.line = toknz->current_line; DBG("save line[%d] %d", toknz->cs, toknz->current_line); } break; case 2: -#line 302 "lib/eolian/eo_lexer.rl" +#line 347 "lib/eolian/eo_lexer.rl" { toknz->saved.tok = ( toknz->p); DBG("save token[%d] %p %c", toknz->cs, ( toknz->p), *( toknz->p)); } break; case 3: -#line 376 "lib/eolian/eo_lexer.rl" +#line 421 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); - if (toknz->tmp.accessor->ret.type != NULL) + if (toknz->tmp.accessor->ret != NULL) ABORT(toknz, "accessor has already a return type"); - toknz->tmp.accessor->ret.type = _eo_tokenizer_token_get(toknz, ( toknz->p)); - INF(" %s", toknz->tmp.accessor->ret.type); + toknz->tmp.accessor->ret = _eo_tokenizer_return_get(toknz, ( toknz->p)); } break; case 4: -#line 384 "lib/eolian/eo_lexer.rl" +#line 428 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); - if (toknz->tmp.accessor->ret.comment != NULL) + if (!toknz->tmp.accessor->ret) ABORT(toknz, "No ret!!!"); + if (toknz->tmp.accessor->ret->comment != NULL) ABORT(toknz, "accessor return type has already a comment"); - toknz->tmp.accessor->ret.comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2); - INF(" %s", toknz->tmp.accessor->ret.comment); + toknz->tmp.accessor->ret->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2); + INF(" %s", toknz->tmp.accessor->ret->comment); } break; case 5: -#line 392 "lib/eolian/eo_lexer.rl" - { - if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); - toknz->tmp.accessor->ret.warn_unused = EINA_TRUE; - INF(" WARN_UNUSED"); - } - break; - case 6: -#line 398 "lib/eolian/eo_lexer.rl" +#line 437 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); toknz->tmp.accessor->legacy = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 7: -#line 412 "lib/eolian/eo_lexer.rl" + case 6: +#line 451 "lib/eolian/eo_lexer.rl" { toknz->tmp.accessor_param = _eo_tokenizer_accessor_param_get(toknz, ( toknz->p)); } break; - case 8: -#line 416 "lib/eolian/eo_lexer.rl" + case 7: +#line 455 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.accessor_param) ABORT(toknz, "No accessor param!!!"); @@ -2921,8 +2903,8 @@ _eof_trans: toknz->tmp.accessor_param = NULL; } break; - case 9: -#line 446 "lib/eolian/eo_lexer.rl" + case 8: +#line 484 "lib/eolian/eo_lexer.rl" { const char *c = _eo_tokenizer_token_get(toknz, ( toknz->p)-2); if (toknz->tmp.param == NULL) @@ -2931,8 +2913,8 @@ _eof_trans: toknz->tmp.param = NULL; } break; - case 10: -#line 454 "lib/eolian/eo_lexer.rl" + case 9: +#line 492 "lib/eolian/eo_lexer.rl" { toknz->tmp.param = _eo_tokenizer_param_get(toknz, ( toknz->p)); if (toknz->tmp.params) @@ -2942,90 +2924,82 @@ _eof_trans: INF(" %s : %s", toknz->tmp.param->name, toknz->tmp.param->type); } break; - case 11: -#line 554 "lib/eolian/eo_lexer.rl" + case 10: +#line 592 "lib/eolian/eo_lexer.rl" { if (toknz->tmp.prop != NULL) ABORT(toknz, "there is a pending property definition %s", toknz->tmp.prop->name); toknz->tmp.prop = _eo_tokenizer_property_get(toknz, ( toknz->p)); } break; - case 12: -#line 594 "lib/eolian/eo_lexer.rl" + case 11: +#line 632 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); - if (toknz->tmp.meth->ret.type != NULL) + if (toknz->tmp.meth->ret != NULL) ABORT(toknz, "method '%s' has already a return type", toknz->tmp.meth->name); - toknz->tmp.meth->ret.type = _eo_tokenizer_token_get(toknz, ( toknz->p)); - INF(" %s", toknz->tmp.meth->ret.type); - } - break; - case 13: -#line 602 "lib/eolian/eo_lexer.rl" - { - if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); - if (toknz->tmp.meth->ret.comment != NULL) - ABORT(toknz, "method '%s' return type has already a comment", toknz->tmp.meth->name); - toknz->tmp.meth->ret.comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2); - INF(" %s", toknz->tmp.meth->ret.comment); + toknz->tmp.meth->ret = _eo_tokenizer_return_get(toknz, ( toknz->p)); } break; - case 14: -#line 610 "lib/eolian/eo_lexer.rl" + case 12: +#line 639 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); - toknz->tmp.meth->ret.warn_unused = EINA_TRUE; - INF(" WARN_UNUSED"); + if (toknz->tmp.meth->ret != NULL) ABORT(toknz, "No ret!!!"); + if (toknz->tmp.meth->ret->comment != NULL) + ABORT(toknz, "method '%s' return type has already a comment", toknz->tmp.meth->name); + toknz->tmp.meth->ret->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2); + INF(" %s", toknz->tmp.meth->ret->comment); } break; - case 15: -#line 616 "lib/eolian/eo_lexer.rl" + case 13: +#line 648 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); toknz->tmp.meth->legacy = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 16: -#line 621 "lib/eolian/eo_lexer.rl" + case 14: +#line 653 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); toknz->tmp.meth->obj_const = EINA_TRUE; INF(" obj const"); } break; - case 17: -#line 684 "lib/eolian/eo_lexer.rl" + case 15: +#line 715 "lib/eolian/eo_lexer.rl" { if (toknz->tmp.meth != NULL) ABORT(toknz, "there is a pending method definition %s", toknz->tmp.meth->name); toknz->tmp.meth = _eo_tokenizer_method_get(toknz, ( toknz->p)); } break; - case 18: -#line 716 "lib/eolian/eo_lexer.rl" + case 16: +#line 747 "lib/eolian/eo_lexer.rl" { const char *base = _eo_tokenizer_token_get(toknz, ( toknz->p)); toknz->tmp.str_items = eina_list_append(toknz->tmp.str_items, base); } break; - case 19: -#line 721 "lib/eolian/eo_lexer.rl" + case 17: +#line 752 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); toknz->tmp.kls->inherits = toknz->tmp.str_items; toknz->tmp.str_items = NULL; } break; - case 20: -#line 769 "lib/eolian/eo_lexer.rl" + case 18: +#line 800 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); toknz->tmp.event = _eo_tokenizer_event_get(toknz, ( toknz->p)); toknz->tmp.kls->events = eina_list_append(toknz->tmp.kls->events, toknz->tmp.event); } break; - case 21: -#line 775 "lib/eolian/eo_lexer.rl" + case 19: +#line 806 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.event) ABORT(toknz, "No event!!!"); if (toknz->tmp.event->comment != NULL) @@ -3034,8 +3008,8 @@ _eof_trans: toknz->tmp.event = NULL; } break; - case 22: -#line 783 "lib/eolian/eo_lexer.rl" + case 20: +#line 814 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); if (toknz->tmp.kls->legacy_prefix != NULL) @@ -3043,8 +3017,8 @@ _eof_trans: toknz->tmp.kls->legacy_prefix = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 23: -#line 792 "lib/eolian/eo_lexer.rl" + case 21: +#line 823 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); if (toknz->tmp.kls->eo_prefix != NULL) @@ -3052,8 +3026,8 @@ _eof_trans: toknz->tmp.kls->eo_prefix = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 24: -#line 801 "lib/eolian/eo_lexer.rl" + case 22: +#line 832 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); if (toknz->tmp.kls->data_type != NULL) @@ -3061,16 +3035,16 @@ _eof_trans: toknz->tmp.kls->data_type = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 25: -#line 814 "lib/eolian/eo_lexer.rl" + case 23: +#line 845 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); toknz->tmp.impl = _eo_tokenizer_implement_get(toknz, ( toknz->p)); toknz->tmp.kls->implements = eina_list_append(toknz->tmp.kls->implements, toknz->tmp.impl); } break; - case 26: -#line 820 "lib/eolian/eo_lexer.rl" + case 24: +#line 851 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!"); if (toknz->tmp.impl->legacy) @@ -3078,8 +3052,8 @@ _eof_trans: toknz->tmp.impl->legacy = calloc(1, sizeof(Eo_Implement_Legacy_Def)); } break; - case 27: -#line 827 "lib/eolian/eo_lexer.rl" + case 25: +#line 858 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!"); if (!toknz->tmp.impl->legacy) @@ -3087,8 +3061,8 @@ _eof_trans: toknz->tmp.impl->legacy->function_name = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 28: -#line 834 "lib/eolian/eo_lexer.rl" + case 26: +#line 865 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!"); toknz->tmp.impl_leg_param = calloc(1, sizeof(Eo_Implement_Legacy_Param_Def)); @@ -3098,24 +3072,24 @@ _eof_trans: toknz->tmp.impl_leg_param->eo_name = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 29: -#line 843 "lib/eolian/eo_lexer.rl" + case 27: +#line 874 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.impl_leg_param) ABORT(toknz, "No implement legacy param!!!"); toknz->tmp.impl_leg_param->legacy_name = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 30: -#line 849 "lib/eolian/eo_lexer.rl" + case 28: +#line 880 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.impl_leg_param) ABORT(toknz, "No implement legacy param!!!"); toknz->tmp.impl_leg_param->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2); } break; - case 31: -#line 855 "lib/eolian/eo_lexer.rl" + case 29: +#line 886 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!"); if (!toknz->tmp.impl->legacy) @@ -3123,8 +3097,8 @@ _eof_trans: toknz->tmp.impl->legacy->ret_type= _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 32: -#line 862 "lib/eolian/eo_lexer.rl" + case 30: +#line 893 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!"); if (!toknz->tmp.impl->legacy) @@ -3132,32 +3106,32 @@ _eof_trans: toknz->tmp.impl->legacy->ret_value = _eo_tokenizer_token_get(toknz, ( toknz->p)); } break; - case 33: -#line 932 "lib/eolian/eo_lexer.rl" + case 31: +#line 963 "lib/eolian/eo_lexer.rl" { toknz->tmp.kls_type = EOLIAN_CLASS_REGULAR; } break; - case 34: -#line 935 "lib/eolian/eo_lexer.rl" + case 32: +#line 966 "lib/eolian/eo_lexer.rl" { toknz->tmp.kls_type = EOLIAN_CLASS_ABSTRACT; } break; - case 35: -#line 938 "lib/eolian/eo_lexer.rl" + case 33: +#line 969 "lib/eolian/eo_lexer.rl" { toknz->tmp.kls_type = EOLIAN_CLASS_MIXIN; } break; - case 36: -#line 941 "lib/eolian/eo_lexer.rl" + case 34: +#line 972 "lib/eolian/eo_lexer.rl" { toknz->tmp.kls_type = EOLIAN_CLASS_INTERFACE; } break; - case 37: -#line 945 "lib/eolian/eo_lexer.rl" + case 35: +#line 976 "lib/eolian/eo_lexer.rl" { if (toknz->tmp.kls != NULL) ABORT(toknz, "there is a pending class definition %s", toknz->tmp.kls->name); @@ -3165,12 +3139,12 @@ _eof_trans: toknz->tmp.kls->type = toknz->tmp.kls_type; } break; - case 40: + case 38: #line 1 "NONE" { toknz->te = ( toknz->p)+1;} break; - case 41: -#line 368 "lib/eolian/eo_lexer.rl" + case 39: +#line 413 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); if (toknz->tmp.accessor->comment != NULL) @@ -3179,34 +3153,34 @@ _eof_trans: INF(" %s", toknz->tmp.accessor->comment); }} break; - case 42: -#line 307 "lib/eolian/eo_lexer.rl" + case 40: +#line 352 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("comment[%d] line%03d:%03d", toknz->cs, toknz->saved.line, toknz->current_line); }} break; - case 43: -#line 438 "lib/eolian/eo_lexer.rl" + case 41: +#line 476 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;} break; - case 44: -#line 439 "lib/eolian/eo_lexer.rl" + case 42: +#line 477 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;} break; - case 45: -#line 403 "lib/eolian/eo_lexer.rl" + case 43: +#line 442 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" }"); if (!toknz->tmp.prop) ABORT(toknz, "No prop!!!"); toknz->tmp.prop->accessors = eina_list_append(toknz->tmp.prop->accessors, toknz->tmp.accessor); toknz->tmp.accessor = NULL; toknz->current_nesting--; - { toknz->cs = 349; goto _again;} + { toknz->cs = 325; goto _again;} }} break; - case 46: -#line 316 "lib/eolian/eo_lexer.rl" + case 44: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3224,27 +3198,27 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 47: -#line 434 "lib/eolian/eo_lexer.rl" + case 45: +#line 472 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 48: -#line 437 "lib/eolian/eo_lexer.rl" + case 46: +#line 475 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 49: -#line 403 "lib/eolian/eo_lexer.rl" + case 47: +#line 442 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ INF(" }"); if (!toknz->tmp.prop) ABORT(toknz, "No prop!!!"); toknz->tmp.prop->accessors = eina_list_append(toknz->tmp.prop->accessors, toknz->tmp.accessor); toknz->tmp.accessor = NULL; toknz->current_nesting--; - { toknz->cs = 349; goto _again;} + { toknz->cs = 325; goto _again;} }} break; - case 50: -#line 316 "lib/eolian/eo_lexer.rl" + case 48: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3262,12 +3236,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 51: -#line 437 "lib/eolian/eo_lexer.rl" + case 49: +#line 475 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}} break; - case 52: -#line 316 "lib/eolian/eo_lexer.rl" + case 50: +#line 361 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3285,29 +3259,29 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 53: -#line 307 "lib/eolian/eo_lexer.rl" + case 51: +#line 352 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("comment[%d] line%03d:%03d", toknz->cs, toknz->saved.line, toknz->current_line); }} break; - case 54: -#line 463 "lib/eolian/eo_lexer.rl" + case 52: +#line 501 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" }"); toknz->tmp.param = NULL; toknz->current_nesting--; if (toknz->tmp.prop) - { toknz->cs = 349; goto _again;} + { toknz->cs = 325; goto _again;} else if (toknz->tmp.meth) - { toknz->cs = 362; goto _again;} + { toknz->cs = 338; goto _again;} else ABORT(toknz, "leaving tokenize_params but there is no property nor method pending"); }} break; - case 55: -#line 316 "lib/eolian/eo_lexer.rl" + case 53: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3325,30 +3299,30 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 56: -#line 479 "lib/eolian/eo_lexer.rl" + case 54: +#line 517 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 57: -#line 481 "lib/eolian/eo_lexer.rl" + case 55: +#line 519 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 58: -#line 463 "lib/eolian/eo_lexer.rl" + case 56: +#line 501 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ INF(" }"); toknz->tmp.param = NULL; toknz->current_nesting--; if (toknz->tmp.prop) - { toknz->cs = 349; goto _again;} + { toknz->cs = 325; goto _again;} else if (toknz->tmp.meth) - { toknz->cs = 362; goto _again;} + { toknz->cs = 338; goto _again;} else ABORT(toknz, "leaving tokenize_params but there is no property nor method pending"); }} break; - case 59: -#line 316 "lib/eolian/eo_lexer.rl" + case 57: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3366,12 +3340,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 60: -#line 481 "lib/eolian/eo_lexer.rl" + case 58: +#line 519 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}} break; - case 61: -#line 316 "lib/eolian/eo_lexer.rl" + case 59: +#line 361 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3389,51 +3363,51 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 62: -#line 307 "lib/eolian/eo_lexer.rl" + case 60: +#line 352 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("comment[%d] line%03d:%03d", toknz->cs, toknz->saved.line, toknz->current_line); }} break; - case 63: -#line 488 "lib/eolian/eo_lexer.rl" + case 61: +#line 526 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" get {"); toknz->tmp.accessor = _eo_tokenizer_accessor_get(toknz, GETTER); toknz->current_nesting++; - { toknz->cs = 333; goto _again;} + { toknz->cs = 309; goto _again;} }} break; - case 64: -#line 495 "lib/eolian/eo_lexer.rl" + case 62: +#line 533 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" set {"); toknz->tmp.accessor = _eo_tokenizer_accessor_get(toknz, SETTER); toknz->current_nesting++; - { toknz->cs = 333; goto _again;} + { toknz->cs = 309; goto _again;} }} break; - case 65: -#line 502 "lib/eolian/eo_lexer.rl" + case 63: +#line 540 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" keys {"); toknz->current_nesting++; toknz->tmp.params = &(toknz->tmp.prop->keys); - { toknz->cs = 342; goto _again;} + { toknz->cs = 318; goto _again;} }} break; - case 66: -#line 509 "lib/eolian/eo_lexer.rl" + case 64: +#line 547 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" values {"); toknz->current_nesting++; toknz->tmp.params = &(toknz->tmp.prop->values); - { toknz->cs = 342; goto _again;} + { toknz->cs = 318; goto _again;} }} break; - case 67: -#line 516 "lib/eolian/eo_lexer.rl" + case 65: +#line 554 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.prop) ABORT(toknz, "No property!!!"); if (eina_list_count(toknz->tmp.prop->values) == 0) @@ -3444,11 +3418,11 @@ _eof_trans: toknz->tmp.kls->properties = eina_list_append(toknz->tmp.kls->properties, toknz->tmp.prop); toknz->tmp.prop = NULL; toknz->current_nesting--; - { toknz->cs = 357; goto _again;} + { toknz->cs = 333; goto _again;} }} break; - case 68: -#line 316 "lib/eolian/eo_lexer.rl" + case 66: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3466,12 +3440,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 69: -#line 535 "lib/eolian/eo_lexer.rl" + case 67: +#line 573 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 70: -#line 516 "lib/eolian/eo_lexer.rl" + case 68: +#line 554 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ if (!toknz->tmp.prop) ABORT(toknz, "No property!!!"); if (eina_list_count(toknz->tmp.prop->values) == 0) @@ -3482,11 +3456,11 @@ _eof_trans: toknz->tmp.kls->properties = eina_list_append(toknz->tmp.kls->properties, toknz->tmp.prop); toknz->tmp.prop = NULL; toknz->current_nesting--; - { toknz->cs = 357; goto _again;} + { toknz->cs = 333; goto _again;} }} break; - case 71: -#line 316 "lib/eolian/eo_lexer.rl" + case 69: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3504,8 +3478,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 72: -#line 316 "lib/eolian/eo_lexer.rl" + case 70: +#line 361 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3523,32 +3497,32 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 73: -#line 307 "lib/eolian/eo_lexer.rl" + case 71: +#line 352 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("comment[%d] line%03d:%03d", toknz->cs, toknz->saved.line, toknz->current_line); }} break; - case 74: -#line 547 "lib/eolian/eo_lexer.rl" + case 72: +#line 585 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.prop) ABORT(toknz, "No property!!!"); INF(" %s {", toknz->tmp.prop->name); toknz->current_nesting++; - { toknz->cs = 349; goto _again;} + { toknz->cs = 325; goto _again;} }} break; - case 75: -#line 560 "lib/eolian/eo_lexer.rl" + case 73: +#line 598 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" }"); toknz->current_nesting--; - { toknz->cs = 377; goto _again;} + { toknz->cs = 353; goto _again;} }} break; - case 76: -#line 316 "lib/eolian/eo_lexer.rl" + case 74: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3566,20 +3540,20 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 77: -#line 569 "lib/eolian/eo_lexer.rl" + case 75: +#line 607 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 78: -#line 560 "lib/eolian/eo_lexer.rl" + case 76: +#line 598 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ INF(" }"); toknz->current_nesting--; - { toknz->cs = 377; goto _again;} + { toknz->cs = 353; goto _again;} }} break; - case 79: -#line 316 "lib/eolian/eo_lexer.rl" + case 77: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3597,8 +3571,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 80: -#line 316 "lib/eolian/eo_lexer.rl" + case 78: +#line 361 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3616,8 +3590,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 81: -#line 578 "lib/eolian/eo_lexer.rl" + case 79: +#line 616 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); if (toknz->tmp.meth->comment != NULL) @@ -3626,33 +3600,33 @@ _eof_trans: INF(" %s", toknz->tmp.meth->comment); }} break; - case 82: -#line 307 "lib/eolian/eo_lexer.rl" + case 80: +#line 352 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("comment[%d] line%03d:%03d", toknz->cs, toknz->saved.line, toknz->current_line); }} break; - case 83: -#line 586 "lib/eolian/eo_lexer.rl" + case 81: +#line 624 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); INF(" params {"); toknz->current_nesting++; toknz->tmp.params = &(toknz->tmp.meth->params); - { toknz->cs = 342; goto _again;} + { toknz->cs = 318; goto _again;} }} break; - case 84: -#line 669 "lib/eolian/eo_lexer.rl" + case 82: +#line 700 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;} break; - case 85: -#line 670 "lib/eolian/eo_lexer.rl" + case 83: +#line 701 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;} break; - case 86: -#line 627 "lib/eolian/eo_lexer.rl" + case 84: +#line 659 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ Eina_List **l = NULL; if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); @@ -3676,11 +3650,11 @@ _eof_trans: *l = eina_list_append(*l, toknz->tmp.meth); toknz->tmp.meth = NULL; toknz->current_nesting--; - { toknz->cs = 372; goto _again;} + { toknz->cs = 348; goto _again;} }} break; - case 87: -#line 316 "lib/eolian/eo_lexer.rl" + case 85: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3698,16 +3672,16 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 88: -#line 664 "lib/eolian/eo_lexer.rl" + case 86: +#line 695 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 89: -#line 668 "lib/eolian/eo_lexer.rl" + case 87: +#line 699 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 90: -#line 627 "lib/eolian/eo_lexer.rl" + case 88: +#line 659 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ Eina_List **l = NULL; if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); @@ -3731,11 +3705,11 @@ _eof_trans: *l = eina_list_append(*l, toknz->tmp.meth); toknz->tmp.meth = NULL; toknz->current_nesting--; - { toknz->cs = 372; goto _again;} + { toknz->cs = 348; goto _again;} }} break; - case 91: -#line 316 "lib/eolian/eo_lexer.rl" + case 89: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3753,12 +3727,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 92: -#line 668 "lib/eolian/eo_lexer.rl" + case 90: +#line 699 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}} break; - case 93: -#line 316 "lib/eolian/eo_lexer.rl" + case 91: +#line 361 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3776,33 +3750,33 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 94: -#line 307 "lib/eolian/eo_lexer.rl" + case 92: +#line 352 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("comment[%d] line%03d:%03d", toknz->cs, toknz->saved.line, toknz->current_line); }} break; - case 95: -#line 677 "lib/eolian/eo_lexer.rl" + case 93: +#line 708 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); INF(" %s {", toknz->tmp.meth->name); toknz->current_nesting++; - { toknz->cs = 362; goto _again;} + { toknz->cs = 338; goto _again;} }} break; - case 96: -#line 690 "lib/eolian/eo_lexer.rl" + case 94: +#line 721 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" }"); toknz->current_methods_type = METH_TYPE_LAST; toknz->current_nesting--; - { toknz->cs = 377; goto _again;} + { toknz->cs = 353; goto _again;} }} break; - case 97: -#line 316 "lib/eolian/eo_lexer.rl" + case 95: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3820,21 +3794,21 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 98: -#line 700 "lib/eolian/eo_lexer.rl" + case 96: +#line 731 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 99: -#line 690 "lib/eolian/eo_lexer.rl" + case 97: +#line 721 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ INF(" }"); toknz->current_methods_type = METH_TYPE_LAST; toknz->current_nesting--; - { toknz->cs = 377; goto _again;} + { toknz->cs = 353; goto _again;} }} break; - case 100: -#line 316 "lib/eolian/eo_lexer.rl" + case 98: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3852,8 +3826,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 101: -#line 316 "lib/eolian/eo_lexer.rl" + case 99: +#line 361 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3871,8 +3845,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 102: -#line 709 "lib/eolian/eo_lexer.rl" + case 100: +#line 740 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); if (toknz->tmp.kls->comment != NULL) @@ -3880,71 +3854,71 @@ _eof_trans: toknz->tmp.kls->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-1); }} break; - case 103: -#line 307 "lib/eolian/eo_lexer.rl" + case 101: +#line 352 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("comment[%d] line%03d:%03d", toknz->cs, toknz->saved.line, toknz->current_line); }} break; - case 104: -#line 727 "lib/eolian/eo_lexer.rl" + case 102: +#line 758 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ }} break; - case 105: -#line 730 "lib/eolian/eo_lexer.rl" + case 103: +#line 761 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ }} break; - case 106: -#line 733 "lib/eolian/eo_lexer.rl" + case 104: +#line 764 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" constructors {"); toknz->current_methods_type = METH_CONSTRUCTOR; toknz->current_nesting++; - { toknz->cs = 372; goto _again;} + { toknz->cs = 348; goto _again;} }} break; - case 107: -#line 740 "lib/eolian/eo_lexer.rl" + case 105: +#line 771 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" destructors {"); toknz->current_methods_type = METH_DESTRUCTOR; toknz->current_nesting++; - { toknz->cs = 372; goto _again;} + { toknz->cs = 348; goto _again;} }} break; - case 108: -#line 747 "lib/eolian/eo_lexer.rl" + case 106: +#line 778 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" properties {"); toknz->current_nesting++; - { toknz->cs = 357; goto _again;} + { toknz->cs = 333; goto _again;} }} break; - case 109: -#line 753 "lib/eolian/eo_lexer.rl" + case 107: +#line 784 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" begin methods"); toknz->current_methods_type = METH_REGULAR; toknz->current_nesting++; - { toknz->cs = 372; goto _again;} + { toknz->cs = 348; goto _again;} }} break; - case 110: -#line 760 "lib/eolian/eo_lexer.rl" + case 108: +#line 791 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); INF("end class: %s", toknz->tmp.kls->name); toknz->classes = eina_list_append(toknz->classes, toknz->tmp.kls); toknz->tmp.kls = NULL; toknz->current_nesting--; - { toknz->cs = 326; goto _again;} + { toknz->cs = 302; goto _again;} }} break; - case 111: -#line 316 "lib/eolian/eo_lexer.rl" + case 109: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3962,45 +3936,45 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 112: -#line 907 "lib/eolian/eo_lexer.rl" + case 110: +#line 938 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 113: -#line 910 "lib/eolian/eo_lexer.rl" + case 111: +#line 941 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 114: -#line 911 "lib/eolian/eo_lexer.rl" + case 112: +#line 942 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 115: -#line 912 "lib/eolian/eo_lexer.rl" + case 113: +#line 943 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 116: -#line 727 "lib/eolian/eo_lexer.rl" + case 114: +#line 758 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ }} break; - case 117: -#line 730 "lib/eolian/eo_lexer.rl" + case 115: +#line 761 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ }} break; - case 118: -#line 760 "lib/eolian/eo_lexer.rl" + case 116: +#line 791 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); INF("end class: %s", toknz->tmp.kls->name); toknz->classes = eina_list_append(toknz->classes, toknz->tmp.kls); toknz->tmp.kls = NULL; toknz->current_nesting--; - { toknz->cs = 326; goto _again;} + { toknz->cs = 302; goto _again;} }} break; - case 119: -#line 316 "lib/eolian/eo_lexer.rl" + case 117: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -4018,8 +3992,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 120: -#line 316 "lib/eolian/eo_lexer.rl" + case 118: +#line 361 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -4037,24 +4011,24 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 121: -#line 307 "lib/eolian/eo_lexer.rl" + case 119: +#line 352 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("comment[%d] line%03d:%03d", toknz->cs, toknz->saved.line, toknz->current_line); }} break; - case 122: -#line 925 "lib/eolian/eo_lexer.rl" + case 120: +#line 956 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); INF("begin class: %s", toknz->tmp.kls->name); toknz->current_nesting++; - { toknz->cs = 377; goto _again;} + { toknz->cs = 353; goto _again;} }} break; - case 123: -#line 316 "lib/eolian/eo_lexer.rl" + case 121: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -4072,12 +4046,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 124: -#line 960 "lib/eolian/eo_lexer.rl" + case 122: +#line 991 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 125: -#line 316 "lib/eolian/eo_lexer.rl" + case 123: +#line 361 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -4095,8 +4069,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 126: -#line 316 "lib/eolian/eo_lexer.rl" + case 124: +#line 361 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -4114,7 +4088,7 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; -#line 4118 "lib/eolian/eo_lexer.c" +#line 4092 "lib/eolian/eo_lexer.c" } } @@ -4123,11 +4097,11 @@ _again: _nacts = (unsigned int) *_acts++; while ( _nacts-- > 0 ) { switch ( *_acts++ ) { - case 38: + case 36: #line 1 "NONE" { toknz->ts = 0;} break; -#line 4131 "lib/eolian/eo_lexer.c" +#line 4105 "lib/eolian/eo_lexer.c" } } @@ -4145,12 +4119,12 @@ _again: _out: {} } -#line 1069 "lib/eolian/eo_lexer.rl" +#line 1100 "lib/eolian/eo_lexer.rl" if ( toknz->cs == -#line 4152 "lib/eolian/eo_lexer.c" +#line 4126 "lib/eolian/eo_lexer.c" -1 -#line 1070 "lib/eolian/eo_lexer.rl" +#line 1101 "lib/eolian/eo_lexer.rl" ) { ERR("%s: wrong termination", source); @@ -4217,7 +4191,8 @@ eo_tokenizer_dump(Eo_Tokenizer *toknz) EINA_LIST_FOREACH(kls->constructors, l, meth) { printf(" constructors: %s\n", meth->name); - printf(" return: %s (%s)\n", meth->ret.type, meth->ret.comment); + if (meth->ret) + printf(" return: %s (%s)\n", meth->ret->type, meth->ret->comment); printf(" legacy : %s\n", meth->legacy); EINA_LIST_FOREACH(meth->params, m, param) { @@ -4230,7 +4205,8 @@ eo_tokenizer_dump(Eo_Tokenizer *toknz) EINA_LIST_FOREACH(kls->destructors, l, meth) { printf(" destructors: %s\n", meth->name); - printf(" return: %s (%s)\n", meth->ret.type, meth->ret.comment); + if (meth->ret) + printf(" return: %s (%s)\n", meth->ret->type, meth->ret->comment); printf(" legacy : %s\n", meth->legacy); EINA_LIST_FOREACH(meth->params, m, param) { @@ -4256,7 +4232,8 @@ eo_tokenizer_dump(Eo_Tokenizer *toknz) EINA_LIST_FOREACH(prop->accessors, m, accessor) { printf(" accessor: %s : %s (%s)\n", - accessor->ret.type, _accessor_type_str[accessor->type], + (accessor->ret?accessor->ret->type:""), + _accessor_type_str[accessor->type], accessor->comment); printf(" legacy : %s\n", accessor->legacy); } @@ -4265,7 +4242,8 @@ eo_tokenizer_dump(Eo_Tokenizer *toknz) EINA_LIST_FOREACH(kls->methods, l, meth) { printf(" method: %s\n", meth->name); - printf(" return: %s (%s)\n", meth->ret.type, meth->ret.comment); + if (meth->ret) + printf(" return: %s (%s)\n", meth->ret->type, meth->ret->comment); printf(" legacy : %s\n", meth->legacy); printf(" obj_const : %s\n", meth->obj_const?"true":"false"); EINA_LIST_FOREACH(meth->params, m, param) @@ -4364,7 +4342,7 @@ eo_tokenizer_database_fill(const char *filename) { Eolian_Function foo_id = database_function_new(meth->name, CONSTRUCTOR); database_class_function_add(kls->name, foo_id); - database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret.comment); + if (meth->ret) database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret->comment); database_function_data_set(foo_id, EOLIAN_LEGACY, meth->legacy); EINA_LIST_FOREACH(meth->params, m, param) { @@ -4376,7 +4354,7 @@ eo_tokenizer_database_fill(const char *filename) { Eolian_Function foo_id = database_function_new(meth->name, DESTRUCTOR); database_class_function_add(kls->name, foo_id); - database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret.comment); + if (meth->ret) database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret->comment); database_function_data_set(foo_id, EOLIAN_LEGACY, meth->legacy); EINA_LIST_FOREACH(meth->params, m, param) { @@ -4392,25 +4370,29 @@ eo_tokenizer_database_fill(const char *filename) Eolian_Function_Parameter p = database_property_key_add( foo_id, param->type, param->name, param->comment); database_parameter_nonull_set(p, param->nonull); + database_parameter_own_set(p, param->own); } EINA_LIST_FOREACH(prop->values, m, param) { Eolian_Function_Parameter p = database_property_value_add( foo_id, param->type, param->name, param->comment); database_parameter_nonull_set(p, param->nonull); + database_parameter_own_set(p, param->own); } EINA_LIST_FOREACH(prop->accessors, m, accessor) { database_function_type_set(foo_id, (accessor->type == SETTER?SET:GET)); - if (accessor->ret.type) + if (accessor->ret && accessor->ret->type) { database_function_return_type_set(foo_id, - accessor->type == SETTER?SET:GET, accessor->ret.type); + accessor->type == SETTER?SET:GET, accessor->ret->type); database_function_data_set(foo_id, (accessor->type == SETTER?EOLIAN_PROP_SET_RETURN_COMMENT:EOLIAN_PROP_GET_RETURN_COMMENT), - accessor->ret.comment); + accessor->ret->comment); database_function_return_flag_set_as_warn_unused(foo_id, - accessor->type == SETTER?SET:GET, accessor->ret.warn_unused); + accessor->type == SETTER?SET:GET, accessor->ret->warn_unused); + database_function_return_flag_set_own(foo_id, + accessor->type == SETTER?SET:GET, accessor->ret->own); } if (accessor->legacy) { @@ -4448,9 +4430,13 @@ eo_tokenizer_database_fill(const char *filename) { Eolian_Function foo_id = database_function_new(meth->name, METHOD_FUNC); database_class_function_add(kls->name, foo_id); - database_function_data_set(foo_id, EOLIAN_METHOD_RETURN_TYPE, meth->ret.type); - database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret.comment); - database_function_return_flag_set_as_warn_unused(foo_id, METHOD_FUNC, meth->ret.warn_unused); + if (meth->ret) + { + database_function_data_set(foo_id, EOLIAN_METHOD_RETURN_TYPE, meth->ret->type); + database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret->comment); + database_function_return_flag_set_as_warn_unused(foo_id, METHOD_FUNC, meth->ret->warn_unused); + database_function_return_flag_set_own(foo_id, METHOD_FUNC, meth->ret->own); + } database_function_description_set(foo_id, EOLIAN_COMMENT, meth->comment); database_function_data_set(foo_id, EOLIAN_LEGACY, meth->legacy); database_function_object_set_as_const(foo_id, meth->obj_const); @@ -4459,6 +4445,7 @@ eo_tokenizer_database_fill(const char *filename) Eolian_Function_Parameter p = database_method_parameter_add(foo_id, (Eolian_Parameter_Dir)param->way, param->type, param->name, param->comment); database_parameter_nonull_set(p, param->nonull); + database_parameter_own_set(p, param->own); } } diff --git a/src/lib/eolian/eo_lexer.rl b/src/lib/eolian/eo_lexer.rl index a62b39b..68e21a8 100644 --- a/src/lib/eolian/eo_lexer.rl +++ b/src/lib/eolian/eo_lexer.rl @@ -179,22 +179,30 @@ _eo_tokenizer_param_get(Eo_Tokenizer *toknz, char *p) Eo_Param_Def *param = calloc(1, sizeof(Eo_Param_Def)); if (param == NULL) ABORT(toknz, "calloc Eo_Param_Def failure"); - /* If @nonull is found, we set s as the end of the string and - update the boolean. Otherwise we set the end as the character - before the ';'. - We need to modify temporarily p because we want strstr to stop - at the ';' maximum. p represents the end of the string to search - inside. + /* The next code part tries to identify the different tags of the + parameter. + First, we set the ';' to '\0', to search only inside this section. + We then strstr the different tags and if found, we update the internal + flag and clear the zone of the text. In this way, during the + determination of the type/variable, we will not be disturbed by the + flags. + We have to put back the ';' at the end. */ *p = '\0'; s = strstr(toknz->saved.tok, "@nonull"); - *p = ';'; if (s) { param->nonull = EINA_TRUE; - p = s; + memset(s, ' ', 7); } - s = p - 1; /* Don't look at the current character (';' or '@') */ + s = strstr(toknz->saved.tok, "@own"); + if (s) + { + param->own = EINA_TRUE; + memset(s, ' ', 4); + } + *p = ';'; + s = p - 1; /* Don't look at the character ';' */ /* Remove any space between the param name and ';'/@nonull * This loop fixes the case where "char *name ;" becomes the type of the param. */ @@ -234,6 +242,43 @@ _eo_tokenizer_param_get(Eo_Tokenizer *toknz, char *p) return param; } +static Eo_Ret_Def* +_eo_tokenizer_return_get(Eo_Tokenizer *toknz, char *p) +{ + char *s; + + Eo_Ret_Def *ret = calloc(1, sizeof(Eo_Ret_Def)); + if (ret == NULL) ABORT(toknz, "calloc Eo_Ret_Def failure"); + + *p = '\0'; + s = strstr(toknz->saved.tok, "@warn_unused"); + if (s) + { + ret->warn_unused = EINA_TRUE; + memset(s, ' ', 12); + } + s = strstr(toknz->saved.tok, "@own"); + if (s) + { + ret->own = EINA_TRUE; + memset(s, ' ', 4); + } + *p = ';'; + s = p - 1; /* Don't look at the character ';' */ + /* Remove any space between the param name and ';' + * This loop fixes the case where "char *name ;" becomes the type of the param. + */ + while (*s == ' ') s--; + + if (s == toknz->saved.tok) + ABORT(toknz, "wrong parameter: %s", _eo_tokenizer_token_get(toknz, p)); + s++; + + ret->type = _eo_tokenizer_token_get(toknz, s); + + return ret; +} + static Eo_Accessor_Param* _eo_tokenizer_accessor_param_get(Eo_Tokenizer *toknz, char *p) { @@ -373,26 +418,20 @@ _eo_tokenizer_implement_get(Eo_Tokenizer *toknz, char *p) INF(" %s", toknz->tmp.accessor->comment); } - action end_accessor_rettype { + action end_accessor_return { if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); - if (toknz->tmp.accessor->ret.type != NULL) + if (toknz->tmp.accessor->ret != NULL) ABORT(toknz, "accessor has already a return type"); - toknz->tmp.accessor->ret.type = _eo_tokenizer_token_get(toknz, fpc); - INF(" %s", toknz->tmp.accessor->ret.type); + toknz->tmp.accessor->ret = _eo_tokenizer_return_get(toknz, fpc); } action end_accessor_rettype_comment { if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); - if (toknz->tmp.accessor->ret.comment != NULL) + if (!toknz->tmp.accessor->ret) ABORT(toknz, "No ret!!!"); + if (toknz->tmp.accessor->ret->comment != NULL) ABORT(toknz, "accessor return type has already a comment"); - toknz->tmp.accessor->ret.comment = _eo_tokenizer_token_get(toknz, fpc-2); - INF(" %s", toknz->tmp.accessor->ret.comment); - } - - action end_accessor_rettype_unused_flag { - if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); - toknz->tmp.accessor->ret.warn_unused = EINA_TRUE; - INF(" WARN_UNUSED"); + toknz->tmp.accessor->ret->comment = _eo_tokenizer_token_get(toknz, fpc-2); + INF(" %s", toknz->tmp.accessor->ret->comment); } action end_accessor_legacy { @@ -422,9 +461,8 @@ _eo_tokenizer_implement_get(Eo_Tokenizer *toknz, char *p) toknz->tmp.accessor_param = NULL; } - rettype_flag = "@warn_unused" %end_accessor_rettype_unused_flag; rettype_comment = ws* eo_comment %end_accessor_rettype_comment; - rettype = 'return' ws+ alpha+ >save_fpc (alnum_u | '*' | ws )+ %end_accessor_rettype rettype_flag? end_statement rettype_comment?; + rettype = 'return' ws+ alpha+ >save_fpc (alnum_u | '*' | ws | '@')+ %end_accessor_return end_statement rettype_comment?; legacy = 'legacy' ws+ ident %end_accessor_legacy end_statement; @@ -593,24 +631,18 @@ _eo_tokenizer_implement_get(Eo_Tokenizer *toknz, char *p) action end_method_rettype { if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); - if (toknz->tmp.meth->ret.type != NULL) + if (toknz->tmp.meth->ret != NULL) ABORT(toknz, "method '%s' has already a return type", toknz->tmp.meth->name); - toknz->tmp.meth->ret.type = _eo_tokenizer_token_get(toknz, fpc); - INF(" %s", toknz->tmp.meth->ret.type); + toknz->tmp.meth->ret = _eo_tokenizer_return_get(toknz, fpc); } action end_method_rettype_comment { if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); - if (toknz->tmp.meth->ret.comment != NULL) + if (toknz->tmp.meth->ret != NULL) ABORT(toknz, "No ret!!!"); + if (toknz->tmp.meth->ret->comment != NULL) ABORT(toknz, "method '%s' return type has already a comment", toknz->tmp.meth->name); - toknz->tmp.meth->ret.comment = _eo_tokenizer_token_get(toknz, fpc-2); - INF(" %s", toknz->tmp.meth->ret.comment); - } - - action end_method_rettype_unused_flag{ - if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); - toknz->tmp.meth->ret.warn_unused = EINA_TRUE; - INF(" WARN_UNUSED"); + toknz->tmp.meth->ret->comment = _eo_tokenizer_token_get(toknz, fpc-2); + INF(" %s", toknz->tmp.meth->ret->comment); } action end_method_legacy { @@ -654,9 +686,8 @@ _eo_tokenizer_implement_get(Eo_Tokenizer *toknz, char *p) meth_params = 'params' ignore* begin_def; meth_legacy = 'legacy' ws+ ident %end_method_legacy end_statement; - meth_rettype_flag = "@warn_unused" %end_method_rettype_unused_flag; meth_rettype_comment = ws* eo_comment %end_method_rettype_comment; - meth_rettype = 'return' ws+ alpha+ >save_fpc (alnum_u | '*' | ws )+ %end_method_rettype meth_rettype_flag? end_statement meth_rettype_comment?; + meth_rettype = 'return' ws+ alpha+ >save_fpc (alnum_u | '*' | ws | '@')+ %end_method_rettype end_statement meth_rettype_comment?; meth_obj_const = 'const' %end_method_obj_const end_statement; @@ -1133,7 +1164,8 @@ eo_tokenizer_dump(Eo_Tokenizer *toknz) EINA_LIST_FOREACH(kls->constructors, l, meth) { printf(" constructors: %s\n", meth->name); - printf(" return: %s (%s)\n", meth->ret.type, meth->ret.comment); + if (meth->ret) + printf(" return: %s (%s)\n", meth->ret->type, meth->ret->comment); printf(" legacy : %s\n", meth->legacy); EINA_LIST_FOREACH(meth->params, m, param) { @@ -1146,7 +1178,8 @@ eo_tokenizer_dump(Eo_Tokenizer *toknz) EINA_LIST_FOREACH(kls->destructors, l, meth) { printf(" destructors: %s\n", meth->name); - printf(" return: %s (%s)\n", meth->ret.type, meth->ret.comment); + if (meth->ret) + printf(" return: %s (%s)\n", meth->ret->type, meth->ret->comment); printf(" legacy : %s\n", meth->legacy); EINA_LIST_FOREACH(meth->params, m, param) { @@ -1172,7 +1205,8 @@ eo_tokenizer_dump(Eo_Tokenizer *toknz) EINA_LIST_FOREACH(prop->accessors, m, accessor) { printf(" accessor: %s : %s (%s)\n", - accessor->ret.type, _accessor_type_str[accessor->type], + (accessor->ret?accessor->ret->type:""), + _accessor_type_str[accessor->type], accessor->comment); printf(" legacy : %s\n", accessor->legacy); } @@ -1181,7 +1215,8 @@ eo_tokenizer_dump(Eo_Tokenizer *toknz) EINA_LIST_FOREACH(kls->methods, l, meth) { printf(" method: %s\n", meth->name); - printf(" return: %s (%s)\n", meth->ret.type, meth->ret.comment); + if (meth->ret) + printf(" return: %s (%s)\n", meth->ret->type, meth->ret->comment); printf(" legacy : %s\n", meth->legacy); printf(" obj_const : %s\n", meth->obj_const?"true":"false"); EINA_LIST_FOREACH(meth->params, m, param) @@ -1280,7 +1315,7 @@ eo_tokenizer_database_fill(const char *filename) { Eolian_Function foo_id = database_function_new(meth->name, CONSTRUCTOR); database_class_function_add(kls->name, foo_id); - database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret.comment); + if (meth->ret) database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret->comment); database_function_data_set(foo_id, EOLIAN_LEGACY, meth->legacy); EINA_LIST_FOREACH(meth->params, m, param) { @@ -1292,7 +1327,7 @@ eo_tokenizer_database_fill(const char *filename) { Eolian_Function foo_id = database_function_new(meth->name, DESTRUCTOR); database_class_function_add(kls->name, foo_id); - database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret.comment); + if (meth->ret) database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret->comment); database_function_data_set(foo_id, EOLIAN_LEGACY, meth->legacy); EINA_LIST_FOREACH(meth->params, m, param) { @@ -1308,25 +1343,29 @@ eo_tokenizer_database_fill(const char *filename) Eolian_Function_Parameter p = database_property_key_add( foo_id, param->type, param->name, param->comment); database_parameter_nonull_set(p, param->nonull); + database_parameter_own_set(p, param->own); } EINA_LIST_FOREACH(prop->values, m, param) { Eolian_Function_Parameter p = database_property_value_add( foo_id, param->type, param->name, param->comment); database_parameter_nonull_set(p, param->nonull); + database_parameter_own_set(p, param->own); } EINA_LIST_FOREACH(prop->accessors, m, accessor) { database_function_type_set(foo_id, (accessor->type == SETTER?SET:GET)); - if (accessor->ret.type) + if (accessor->ret && accessor->ret->type) { database_function_return_type_set(foo_id, - accessor->type == SETTER?SET:GET, accessor->ret.type); + accessor->type == SETTER?SET:GET, accessor->ret->type); database_function_data_set(foo_id, (accessor->type == SETTER?EOLIAN_PROP_SET_RETURN_COMMENT:EOLIAN_PROP_GET_RETURN_COMMENT), - accessor->ret.comment); + accessor->ret->comment); database_function_return_flag_set_as_warn_unused(foo_id, - accessor->type == SETTER?SET:GET, accessor->ret.warn_unused); + accessor->type == SETTER?SET:GET, accessor->ret->warn_unused); + database_function_return_flag_set_own(foo_id, + accessor->type == SETTER?SET:GET, accessor->ret->own); } if (accessor->legacy) { @@ -1364,9 +1403,13 @@ eo_tokenizer_database_fill(const char *filename) { Eolian_Function foo_id = database_function_new(meth->name, METHOD_FUNC); database_class_function_add(kls->name, foo_id); - database_function_data_set(foo_id, EOLIAN_METHOD_RETURN_TYPE, meth->ret.type); - database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret.comment); - database_function_return_flag_set_as_warn_unused(foo_id, METHOD_FUNC, meth->ret.warn_unused); + if (meth->ret) + { + database_function_data_set(foo_id, EOLIAN_METHOD_RETURN_TYPE, meth->ret->type); + database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret->comment); + database_function_return_flag_set_as_warn_unused(foo_id, METHOD_FUNC, meth->ret->warn_unused); + database_function_return_flag_set_own(foo_id, METHOD_FUNC, meth->ret->own); + } database_function_description_set(foo_id, EOLIAN_COMMENT, meth->comment); database_function_data_set(foo_id, EOLIAN_LEGACY, meth->legacy); database_function_object_set_as_const(foo_id, meth->obj_const); @@ -1375,6 +1418,7 @@ eo_tokenizer_database_fill(const char *filename) Eolian_Function_Parameter p = database_method_parameter_add(foo_id, (Eolian_Parameter_Dir)param->way, param->type, param->name, param->comment); database_parameter_nonull_set(p, param->nonull); + database_parameter_own_set(p, param->own); } } diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c index a8850de..3194d49 100644 --- a/src/lib/eolian/eolian_database.c +++ b/src/lib/eolian/eolian_database.c @@ -37,6 +37,8 @@ typedef struct Eina_Bool virtual_pure :1; Eina_Bool get_return_warn_unused :1; /* also used for methods */ Eina_Bool set_return_warn_unused :1; + Eina_Bool get_return_own :1; /* also used for methods */ + Eina_Bool set_return_own :1; } _Function_Id; typedef struct @@ -47,6 +49,7 @@ typedef struct Eolian_Parameter_Dir param_dir; Eina_Bool is_const :1; /* True if const in this function (e.g get) but not const in the opposite one (e.g set) */ Eina_Bool nonull :1; /* True if this argument cannot be NULL */ + Eina_Bool own :1; /* True if the ownership of this argument passes to the caller/callee */ } _Parameter_Desc; typedef struct @@ -803,6 +806,22 @@ eolian_parameter_is_nonull(Eolian_Function_Parameter param_desc) return param->nonull; } +void +database_parameter_own_set(Eolian_Function_Parameter param_desc, Eina_Bool own) +{ + _Parameter_Desc *param = (_Parameter_Desc *)param_desc; + EINA_SAFETY_ON_NULL_RETURN(param); + param->own = own; +} + +EAPI Eina_Bool +eolian_parameter_is_own(Eolian_Function_Parameter param_desc) +{ + _Parameter_Desc *param = (_Parameter_Desc *)param_desc; + EINA_SAFETY_ON_NULL_RETURN_VAL(param, EINA_FALSE); + return param->own; +} + void database_function_return_type_set(Eolian_Function foo_id, Eolian_Function_Type ftype, const char *ret_type) { const char *key = NULL; @@ -873,6 +892,33 @@ eolian_function_return_is_warn_unused(Eolian_Function foo_id, } } +void database_function_return_flag_set_own(Eolian_Function foo_id, + Eolian_Function_Type ftype, Eina_Bool own) +{ + _Function_Id *fid = (_Function_Id *)foo_id; + EINA_SAFETY_ON_NULL_RETURN(fid); + switch (ftype) + { + case METHOD_FUNC: case GET: fid->get_return_own = own; break; + case SET: fid->set_return_own = own; break; + default: return; + } +} + +EAPI Eina_Bool +eolian_function_return_own_get(Eolian_Function foo_id, + Eolian_Function_Type ftype) +{ + _Function_Id *fid = (_Function_Id *)foo_id; + EINA_SAFETY_ON_NULL_RETURN_VAL(fid, EINA_FALSE); + switch (ftype) + { + case METHOD_FUNC: case GET: return fid->get_return_own; + case SET: return fid->set_return_own; + default: return EINA_FALSE; + } +} + void database_function_object_set_as_const(Eolian_Function foo_id, Eina_Bool is_const) { diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h index a858518..da57bfc 100644 --- a/src/lib/eolian/eolian_database.h +++ b/src/lib/eolian/eolian_database.h @@ -90,11 +90,16 @@ void database_parameter_get_const_attribute_set(Eolian_Function_Parameter param_ void database_parameter_nonull_set(Eolian_Function_Parameter, Eina_Bool nonull); +void database_parameter_own_set(Eolian_Function_Parameter, Eina_Bool own); + void database_function_return_type_set(Eolian_Function foo_id, Eolian_Function_Type ftype, const char *ret_type); void database_function_return_flag_set_as_warn_unused(Eolian_Function foo_id, Eolian_Function_Type ftype, Eina_Bool warn_unused); +void database_function_return_flag_set_own(Eolian_Function foo_id, + Eolian_Function_Type ftype, Eina_Bool own); + void database_function_object_set_as_const(Eolian_Function foo_id, Eina_Bool is_const); Eina_Bool -- 2.7.4