diff options
author | Daniel Zaoui <daniel.zaoui@samsung.com> | 2014-04-30 12:03:09 +0300 |
---|---|---|
committer | Daniel Zaoui <daniel.zaoui@samsung.com> | 2014-05-26 08:40:58 +0300 |
commit | 6269502a00c34329d2451631eb4605f98ad52084 (patch) | |
tree | 59f48b66294f4318a3b0d1ec8900142f92e8fce2 | |
parent | 58bdac7977af96f88469c091856921aa2645b945 (diff) | |
download | efl-6269502a00c34329d2451631eb4605f98ad52084.tar.gz |
Eolian: add support for typedefs.
It includes parser updates, database fill and tests on basic and complex
types.
One can define types in this way:
type Evas_Coord: int; /* Simple type definition */
type List_Objects: Eina_List * <Eo *>;
@feature
-rw-r--r-- | src/Makefile_Eolian.am | 3 | ||||
-rw-r--r-- | src/lib/eolian/Eolian.h | 11 | ||||
-rw-r--r-- | src/lib/eolian/eo_definitions.c | 11 | ||||
-rw-r--r-- | src/lib/eolian/eo_definitions.h | 9 | ||||
-rw-r--r-- | src/lib/eolian/eo_lexer.c | 2629 | ||||
-rw-r--r-- | src/lib/eolian/eo_lexer.h | 3 | ||||
-rw-r--r-- | src/lib/eolian/eo_lexer.rl | 39 | ||||
-rw-r--r-- | src/lib/eolian/eolian_database.c | 45 | ||||
-rw-r--r-- | src/lib/eolian/eolian_database.h | 3 | ||||
-rw-r--r-- | src/tests/eolian/data/typedef.eo | 13 | ||||
-rw-r--r-- | src/tests/eolian/eolian_suite.c | 33 |
11 files changed, 1526 insertions, 1273 deletions
diff --git a/src/Makefile_Eolian.am b/src/Makefile_Eolian.am index fa9111a4c0..a9baa38155 100644 --- a/src/Makefile_Eolian.am +++ b/src/Makefile_Eolian.am @@ -83,5 +83,6 @@ tests/eolian/data/base.eo \ tests/eolian/data/class_simple.eo \ tests/eolian/data/scope.eo \ tests/eolian/data/ctor_dtor.eo \ -tests/eolian/data/complex_type.eo +tests/eolian/data/complex_type.eo \ +tests/eolian/data/typedef.eo diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h index 63bfa65d36..8bb777020f 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -638,6 +638,17 @@ EAPI Eina_Bool eolian_class_ctor_enable_get(const char *class_name); */ EAPI Eina_Bool eolian_class_dtor_enable_get(const char *class_name); +/* + * @brief Find the type for a certain alias + * + * @param[in] alias alias of the type definition + * @return real type of the type definition + * + * @ingroup Eolian + */ +EAPI Eolian_Type +eolian_type_find_by_alias(const char *alias); + #endif #ifdef __cplusplus diff --git a/src/lib/eolian/eo_definitions.c b/src/lib/eolian/eo_definitions.c index 2072807b08..a5423b18c0 100644 --- a/src/lib/eolian/eo_definitions.c +++ b/src/lib/eolian/eo_definitions.c @@ -113,6 +113,17 @@ eo_definitions_impl_def_free(Eo_Implement_Def *impl) } void +eo_definitions_type_def_free(Eo_Type_Def *type) +{ + if (type->alias) + eina_stringshare_del(type->alias); + if (type->type) + eina_stringshare_del(type->type); + + free(type); +} + +void eo_definitions_class_def_free(Eo_Class_Def *kls) { const char *s; diff --git a/src/lib/eolian/eo_definitions.h b/src/lib/eolian/eo_definitions.h index c535aa7e04..56f7401a89 100644 --- a/src/lib/eolian/eo_definitions.h +++ b/src/lib/eolian/eo_definitions.h @@ -130,6 +130,15 @@ typedef struct _eo_class_def Eina_List *methods; } Eo_Class_Def; +/* TYPE */ + +typedef struct _eo_type_def +{ + const char *alias; + const char *type; +} Eo_Type_Def; + void eo_definitions_class_def_free(Eo_Class_Def *kls); +void eo_definitions_type_def_free(Eo_Type_Def *type); #endif /* __EO_DEFINITIONS_H__ */ diff --git a/src/lib/eolian/eo_lexer.c b/src/lib/eolian/eo_lexer.c index 56919c34b8..36141dbbf7 100644 --- a/src/lib/eolian/eo_lexer.c +++ b/src/lib/eolian/eo_lexer.c @@ -156,6 +156,17 @@ _eo_tokenizer_class_get(Eo_Tokenizer *toknz, char *p) return kls; } +static Eo_Type_Def* +_eo_tokenizer_type_get(Eo_Tokenizer *toknz, char *p) +{ + Eo_Type_Def *def = calloc(1, sizeof(Eo_Type_Def)); + if (def == NULL) ABORT(toknz, "calloc Eo_Type_Def failure"); + + def->type = _eo_tokenizer_token_get(toknz, p); + + return def; +} + static Eo_Property_Def* _eo_tokenizer_property_get(Eo_Tokenizer *toknz, char *p) { @@ -358,53 +369,53 @@ _eo_tokenizer_implement_get(Eo_Tokenizer *toknz, char *p) } -#line 442 "lib/eolian/eo_lexer.rl" +#line 453 "lib/eolian/eo_lexer.rl" -#line 366 "lib/eolian/eo_lexer.c" +#line 377 "lib/eolian/eo_lexer.c" static const char _eo_tokenizer_actions[] = { 0, 1, 0, 1, 2, 1, 7, 1, 11, 1, 17, 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, 40, 1, 41, 1, 42, 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, 60, 1, 61, 1, 62, 1, - 63, 1, 64, 1, 65, 1, 66, 1, - 67, 1, 68, 1, 69, 1, 70, 1, - 71, 1, 72, 1, 73, 1, 74, 1, - 75, 1, 76, 1, 77, 1, 78, 1, - 81, 1, 82, 1, 83, 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, 98, 1, 99, 1, 100, 1, - 101, 1, 102, 1, 103, 1, 104, 1, - 105, 1, 106, 1, 107, 1, 108, 1, - 109, 1, 110, 1, 111, 1, 112, 1, - 113, 1, 114, 1, 115, 1, 116, 1, - 117, 1, 118, 1, 119, 1, 120, 2, - 0, 37, 2, 0, 48, 2, 0, 57, - 2, 0, 68, 2, 0, 77, 2, 0, - 89, 2, 0, 98, 2, 0, 115, 2, - 5, 43, 2, 6, 38, 2, 7, 2, - 2, 8, 39, 2, 9, 52, 2, 11, - 0, 2, 11, 69, 2, 14, 84, 2, - 15, 79, 2, 16, 80, 2, 17, 0, - 2, 17, 90, 2, 19, 0, 2, 20, - 0, 2, 20, 116, 2, 21, 0, 2, - 22, 0, 2, 23, 0, 2, 23, 2, - 2, 27, 0, 2, 32, 0, 2, 32, - 116, 2, 35, 1, 2, 35, 2, 2, - 35, 4, 2, 35, 10, 2, 35, 13, - 3, 3, 12, 2, 3, 3, 18, 2 - + 33, 1, 35, 1, 36, 1, 37, 1, + 38, 1, 39, 1, 42, 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, + 60, 1, 61, 1, 62, 1, 63, 1, + 64, 1, 65, 1, 66, 1, 67, 1, + 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, 83, 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, + 98, 1, 99, 1, 100, 1, 101, 1, + 102, 1, 103, 1, 104, 1, 105, 1, + 106, 1, 107, 1, 108, 1, 109, 1, + 110, 1, 111, 1, 112, 1, 113, 1, + 114, 1, 115, 1, 116, 1, 117, 1, + 118, 1, 120, 1, 121, 1, 122, 1, + 123, 2, 0, 39, 2, 0, 50, 2, + 0, 59, 2, 0, 70, 2, 0, 79, + 2, 0, 91, 2, 0, 100, 2, 0, + 117, 2, 5, 45, 2, 6, 40, 2, + 7, 2, 2, 8, 41, 2, 9, 54, + 2, 11, 0, 2, 11, 71, 2, 14, + 86, 2, 15, 81, 2, 16, 82, 2, + 17, 0, 2, 17, 92, 2, 19, 0, + 2, 20, 0, 2, 20, 118, 2, 21, + 0, 2, 22, 0, 2, 23, 0, 2, + 23, 2, 2, 27, 0, 2, 32, 0, + 2, 32, 118, 2, 34, 119, 2, 37, + 1, 2, 37, 2, 2, 37, 4, 2, + 37, 10, 2, 37, 13, 3, 3, 12, + 2, 3, 3, 18, 2 }; static const short _eo_tokenizer_key_offsets[] = { @@ -412,48 +423,49 @@ static const short _eo_tokenizer_key_offsets[] = { 11, 12, 15, 22, 37, 41, 49, 54, 58, 70, 75, 82, 83, 84, 85, 88, 89, 90, 91, 92, 93, 94, 95, 98, - 99, 100, 101, 104, 107, 109, 112, 123, - 125, 128, 129, 133, 140, 147, 159, 170, - 182, 194, 206, 218, 229, 237, 245, 257, - 269, 281, 293, 304, 321, 338, 355, 372, - 376, 377, 378, 388, 390, 393, 409, 411, - 414, 415, 429, 433, 434, 435, 445, 447, - 450, 452, 455, 456, 457, 461, 462, 463, - 467, 468, 472, 473, 474, 475, 476, 480, - 482, 485, 486, 490, 501, 511, 523, 535, - 547, 559, 571, 583, 595, 605, 615, 628, - 640, 652, 664, 676, 688, 700, 712, 719, - 731, 743, 755, 767, 779, 791, 803, 815, - 818, 820, 823, 834, 836, 839, 840, 841, - 842, 843, 844, 845, 846, 847, 848, 851, - 858, 866, 867, 868, 869, 870, 874, 875, - 876, 877, 878, 881, 897, 913, 930, 947, - 951, 952, 953, 963, 965, 968, 984, 986, - 989, 990, 994, 1005, 1015, 1027, 1039, 1051, - 1063, 1075, 1087, 1099, 1109, 1119, 1132, 1144, - 1156, 1168, 1180, 1192, 1204, 1216, 1223, 1235, - 1247, 1259, 1271, 1283, 1295, 1307, 1319, 1322, - 1324, 1327, 1338, 1340, 1343, 1344, 1345, 1346, - 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, - 1358, 1359, 1360, 1364, 1371, 1379, 1380, 1381, - 1382, 1383, 1384, 1385, 1386, 1390, 1397, 1405, - 1406, 1407, 1408, 1409, 1413, 1421, 1437, 1441, - 1453, 1454, 1455, 1465, 1467, 1470, 1478, 1486, - 1494, 1506, 1510, 1511, 1512, 1513, 1514, 1515, - 1516, 1517, 1518, 1522, 1530, 1542, 1546, 1547, - 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, - 1556, 1557, 1558, 1562, 1569, 1577, 1578, 1579, - 1580, 1581, 1582, 1586, 1587, 1588, 1589, 1590, - 1591, 1592, 1593, 1594, 1598, 1606, 1609, 1611, - 1612, 1613, 1614, 1615, 1626, 1629, 1631, 1642, - 1654, 1666, 1670, 1670, 1671, 1680, 1683, 1685, - 1698, 1702, 1702, 1703, 1712, 1715, 1717, 1718, - 1719, 1720, 1721, 1722, 1734, 1737, 1739, 1750, - 1763, 1764, 1773, 1776, 1778, 1779, 1780, 1781, - 1782, 1786, 1786, 1787, 1799, 1802, 1804, 1815, - 1828, 1829, 1841, 1844, 1846, 1847, 1848, 1851, - 1853, 1856, 1857, 1858, 1859, 1860, 1863, 1864, - 1865 + 99, 100, 101, 104, 105, 106, 109, 116, + 127, 131, 138, 151, 165, 168, 170, 173, + 184, 186, 189, 190, 194, 201, 208, 220, + 231, 243, 255, 267, 279, 290, 298, 306, + 318, 330, 342, 354, 365, 382, 399, 416, + 433, 437, 438, 439, 449, 451, 454, 470, + 472, 475, 476, 490, 494, 495, 496, 506, + 508, 511, 513, 516, 517, 518, 522, 523, + 524, 528, 529, 533, 534, 535, 536, 537, + 541, 543, 546, 547, 551, 562, 572, 584, + 596, 608, 620, 632, 644, 656, 666, 676, + 689, 701, 713, 725, 737, 749, 761, 773, + 780, 792, 804, 816, 828, 840, 852, 864, + 876, 879, 881, 884, 895, 897, 900, 901, + 902, 903, 904, 905, 906, 907, 908, 909, + 912, 919, 927, 928, 929, 930, 931, 935, + 936, 937, 938, 939, 942, 958, 974, 991, + 1008, 1012, 1013, 1014, 1024, 1026, 1029, 1045, + 1047, 1050, 1051, 1055, 1066, 1076, 1088, 1100, + 1112, 1124, 1136, 1148, 1160, 1170, 1180, 1193, + 1205, 1217, 1229, 1241, 1253, 1265, 1277, 1284, + 1296, 1308, 1320, 1332, 1344, 1356, 1368, 1380, + 1383, 1385, 1388, 1399, 1401, 1404, 1405, 1406, + 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, + 1415, 1419, 1420, 1421, 1425, 1432, 1440, 1441, + 1442, 1443, 1444, 1445, 1446, 1447, 1451, 1458, + 1466, 1467, 1468, 1469, 1470, 1474, 1482, 1498, + 1502, 1514, 1515, 1516, 1526, 1528, 1531, 1539, + 1547, 1555, 1567, 1571, 1572, 1573, 1574, 1575, + 1576, 1577, 1578, 1579, 1583, 1591, 1603, 1607, + 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, + 1616, 1617, 1618, 1619, 1623, 1630, 1638, 1639, + 1640, 1641, 1642, 1643, 1647, 1648, 1649, 1650, + 1651, 1652, 1653, 1654, 1655, 1659, 1668, 1671, + 1673, 1674, 1675, 1676, 1677, 1678, 1689, 1692, + 1694, 1705, 1717, 1729, 1733, 1733, 1734, 1743, + 1746, 1748, 1761, 1765, 1765, 1766, 1775, 1778, + 1780, 1781, 1782, 1783, 1784, 1785, 1797, 1800, + 1802, 1813, 1826, 1827, 1836, 1839, 1841, 1842, + 1843, 1844, 1845, 1849, 1849, 1850, 1862, 1865, + 1867, 1878, 1891, 1892, 1904, 1907, 1909, 1910, + 1911, 1914, 1916, 1919, 1920, 1921, 1922, 1923, + 1926, 1927, 1928 }; static const char _eo_tokenizer_trans_keys[] = { @@ -470,71 +482,64 @@ static const char _eo_tokenizer_trans_keys[] = { 97, 122, 97, 115, 115, 9, 13, 32, 116, 101, 114, 102, 97, 99, 101, 9, 13, 32, 120, 105, 110, 9, 13, 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, 9, 13, 32, 58, 9, 13, 32, - 65, 90, 97, 122, 9, 13, 32, 65, - 90, 97, 122, 9, 13, 32, 44, 59, + 112, 101, 9, 13, 32, 9, 13, 32, + 65, 90, 97, 122, 9, 13, 32, 58, + 95, 48, 57, 65, 90, 97, 122, 9, + 13, 32, 58, 9, 13, 32, 64, 90, + 97, 122, 9, 13, 32, 42, 60, 62, + 95, 48, 57, 64, 90, 97, 122, 9, + 13, 32, 42, 59, 60, 62, 95, 48, + 57, 64, 90, 97, 122, 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, 9, 13, + 32, 58, 9, 13, 32, 65, 90, 97, + 122, 9, 13, 32, 65, 90, 97, 122, + 9, 13, 32, 44, 59, 95, 48, 57, + 65, 90, 97, 122, 9, 13, 32, 58, 95, 48, 57, 65, 90, 97, 122, 9, + 13, 32, 58, 95, 103, 48, 57, 65, + 90, 97, 122, 9, 13, 32, 58, 95, + 97, 48, 57, 65, 90, 98, 122, 9, + 13, 32, 58, 95, 99, 48, 57, 65, + 90, 97, 122, 9, 13, 32, 58, 95, + 121, 48, 57, 65, 90, 97, 122, 9, 13, 32, 58, 95, 48, 57, 65, 90, - 97, 122, 9, 13, 32, 58, 95, 103, + 97, 122, 9, 13, 32, 58, 65, 90, + 97, 122, 59, 95, 48, 57, 65, 90, + 97, 122, 9, 13, 32, 58, 95, 116, 48, 57, 65, 90, 97, 122, 9, 13, - 32, 58, 95, 97, 48, 57, 65, 90, - 98, 122, 9, 13, 32, 58, 95, 99, + 32, 58, 95, 117, 48, 57, 65, 90, + 97, 122, 9, 13, 32, 58, 95, 114, 48, 57, 65, 90, 97, 122, 9, 13, - 32, 58, 95, 121, 48, 57, 65, 90, + 32, 58, 95, 110, 48, 57, 65, 90, 97, 122, 9, 13, 32, 58, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, - 58, 65, 90, 97, 122, 59, 95, 48, - 57, 65, 90, 97, 122, 9, 13, 32, - 58, 95, 116, 48, 57, 65, 90, 97, - 122, 9, 13, 32, 58, 95, 117, 48, - 57, 65, 90, 97, 122, 9, 13, 32, - 58, 95, 114, 48, 57, 65, 90, 97, - 122, 9, 13, 32, 58, 95, 110, 48, - 57, 65, 90, 97, 122, 9, 13, 32, - 58, 95, 48, 57, 65, 90, 97, 122, - 9, 13, 32, 58, 60, 62, 95, 40, - 42, 45, 46, 48, 57, 64, 90, 97, - 122, 9, 13, 32, 58, 60, 62, 95, - 40, 42, 45, 46, 48, 57, 64, 90, - 97, 122, 9, 13, 32, 58, 59, 62, - 95, 40, 42, 45, 46, 48, 60, 64, - 90, 97, 122, 9, 13, 32, 59, 60, - 62, 95, 40, 42, 45, 46, 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, 9, 13, 32, 60, 62, 95, 40, + 58, 60, 62, 95, 40, 42, 45, 46, + 48, 57, 64, 90, 97, 122, 9, 13, + 32, 58, 60, 62, 95, 40, 42, 45, + 46, 48, 57, 64, 90, 97, 122, 9, + 13, 32, 58, 59, 62, 95, 40, 42, + 45, 46, 48, 60, 64, 90, 97, 122, + 9, 13, 32, 59, 60, 62, 95, 40, 42, 45, 46, 48, 57, 64, 90, 97, - 122, 10, 42, 10, 42, 47, 10, 9, - 13, 32, 42, 59, 60, 62, 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, 123, - 0, 32, 10, 95, 123, 0, 32, 48, - 57, 65, 90, 97, 122, 10, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 10, - 95, 111, 123, 0, 32, 48, 57, 65, - 90, 97, 122, 10, 95, 116, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 10, - 95, 101, 123, 0, 32, 48, 57, 65, - 90, 97, 122, 10, 95, 99, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 10, - 95, 116, 123, 0, 32, 48, 57, 65, - 90, 97, 122, 10, 95, 101, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 10, - 95, 100, 123, 0, 32, 48, 57, 65, - 90, 97, 122, 9, 13, 32, 95, 48, - 57, 65, 90, 97, 122, 9, 13, 32, - 112, 48, 57, 65, 90, 97, 122, 10, - 95, 114, 117, 123, 0, 32, 48, 57, + 122, 9, 13, 32, 47, 42, 64, 10, + 95, 0, 32, 48, 57, 64, 90, 97, + 122, 10, 42, 10, 42, 47, 9, 13, + 32, 60, 62, 95, 40, 42, 45, 46, + 48, 57, 64, 90, 97, 122, 10, 42, + 10, 42, 47, 10, 9, 13, 32, 42, + 59, 60, 62, 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, 123, 0, 32, 10, + 95, 123, 0, 32, 48, 57, 65, 90, + 97, 122, 10, 123, 0, 32, 48, 57, 65, 90, 97, 122, 10, 95, 111, 123, 0, 32, 48, 57, 65, 90, 97, 122, 10, 95, 116, 123, 0, 32, 48, 57, @@ -546,58 +551,58 @@ static const char _eo_tokenizer_trans_keys[] = { 10, 95, 101, 123, 0, 32, 48, 57, 65, 90, 97, 122, 10, 95, 100, 123, 0, 32, 48, 57, 65, 90, 97, 122, - 95, 48, 57, 65, 90, 97, 122, 10, - 95, 98, 123, 0, 32, 48, 57, 65, - 90, 97, 122, 10, 95, 108, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 10, - 95, 105, 123, 0, 32, 48, 57, 65, - 90, 97, 122, 10, 95, 99, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 10, - 95, 98, 123, 0, 32, 48, 57, 65, - 90, 97, 122, 10, 95, 108, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 10, - 95, 105, 123, 0, 32, 48, 57, 65, - 90, 97, 122, 10, 95, 99, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 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, 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, 60, 62, 95, 40, - 42, 45, 46, 48, 57, 64, 90, 97, - 122, 9, 13, 32, 60, 62, 95, 40, - 42, 45, 46, 48, 57, 64, 90, 97, - 122, 9, 13, 32, 59, 60, 62, 95, - 40, 42, 45, 46, 48, 57, 64, 90, - 97, 122, 9, 13, 32, 59, 60, 62, - 95, 40, 42, 45, 46, 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, - 9, 13, 32, 60, 62, 95, 40, 42, + 9, 13, 32, 95, 48, 57, 65, 90, + 97, 122, 9, 13, 32, 112, 48, 57, + 65, 90, 97, 122, 10, 95, 114, 117, + 123, 0, 32, 48, 57, 65, 90, 97, + 122, 10, 95, 111, 123, 0, 32, 48, + 57, 65, 90, 97, 122, 10, 95, 116, + 123, 0, 32, 48, 57, 65, 90, 97, + 122, 10, 95, 101, 123, 0, 32, 48, + 57, 65, 90, 97, 122, 10, 95, 99, + 123, 0, 32, 48, 57, 65, 90, 97, + 122, 10, 95, 116, 123, 0, 32, 48, + 57, 65, 90, 97, 122, 10, 95, 101, + 123, 0, 32, 48, 57, 65, 90, 97, + 122, 10, 95, 100, 123, 0, 32, 48, + 57, 65, 90, 97, 122, 95, 48, 57, + 65, 90, 97, 122, 10, 95, 98, 123, + 0, 32, 48, 57, 65, 90, 97, 122, + 10, 95, 108, 123, 0, 32, 48, 57, + 65, 90, 97, 122, 10, 95, 105, 123, + 0, 32, 48, 57, 65, 90, 97, 122, + 10, 95, 99, 123, 0, 32, 48, 57, + 65, 90, 97, 122, 10, 95, 98, 123, + 0, 32, 48, 57, 65, 90, 97, 122, + 10, 95, 108, 123, 0, 32, 48, 57, + 65, 90, 97, 122, 10, 95, 105, 123, + 0, 32, 48, 57, 65, 90, 97, 122, + 10, 95, 99, 123, 0, 32, 48, 57, + 65, 90, 97, 122, 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, 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, 60, 62, 95, 40, 42, 45, 46, + 48, 57, 64, 90, 97, 122, 9, 13, + 32, 60, 62, 95, 40, 42, 45, 46, + 48, 57, 64, 90, 97, 122, 9, 13, + 32, 59, 60, 62, 95, 40, 42, 45, + 46, 48, 57, 64, 90, 97, 122, 9, + 13, 32, 59, 60, 62, 95, 40, 42, 45, 46, 48, 57, 64, 90, 97, 122, - 10, 42, 10, 42, 47, 10, 10, 123, - 0, 32, 10, 95, 123, 0, 32, 48, - 57, 65, 90, 97, 122, 10, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 10, - 95, 111, 123, 0, 32, 48, 57, 65, - 90, 97, 122, 10, 95, 116, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 10, - 95, 101, 123, 0, 32, 48, 57, 65, - 90, 97, 122, 10, 95, 99, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 10, - 95, 116, 123, 0, 32, 48, 57, 65, - 90, 97, 122, 10, 95, 101, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 10, - 95, 100, 123, 0, 32, 48, 57, 65, - 90, 97, 122, 9, 13, 32, 95, 48, - 57, 65, 90, 97, 122, 9, 13, 32, - 112, 48, 57, 65, 90, 97, 122, 10, - 95, 114, 117, 123, 0, 32, 48, 57, + 9, 13, 32, 47, 42, 64, 10, 95, + 0, 32, 48, 57, 64, 90, 97, 122, + 10, 42, 10, 42, 47, 9, 13, 32, + 60, 62, 95, 40, 42, 45, 46, 48, + 57, 64, 90, 97, 122, 10, 42, 10, + 42, 47, 10, 10, 123, 0, 32, 10, + 95, 123, 0, 32, 48, 57, 65, 90, + 97, 122, 10, 123, 0, 32, 48, 57, 65, 90, 97, 122, 10, 95, 111, 123, 0, 32, 48, 57, 65, 90, 97, 122, 10, 95, 116, 123, 0, 32, 48, 57, @@ -609,88 +614,103 @@ static const char _eo_tokenizer_trans_keys[] = { 10, 95, 101, 123, 0, 32, 48, 57, 65, 90, 97, 122, 10, 95, 100, 123, 0, 32, 48, 57, 65, 90, 97, 122, - 95, 48, 57, 65, 90, 97, 122, 10, - 95, 98, 123, 0, 32, 48, 57, 65, - 90, 97, 122, 10, 95, 108, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 10, - 95, 105, 123, 0, 32, 48, 57, 65, - 90, 97, 122, 10, 95, 99, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 10, - 95, 98, 123, 0, 32, 48, 57, 65, - 90, 97, 122, 10, 95, 108, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 10, - 95, 105, 123, 0, 32, 48, 57, 65, - 90, 97, 122, 10, 95, 99, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 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, 59, 95, 48, 57, 65, - 90, 97, 122, 95, 112, 114, 101, 102, - 105, 120, 10, 58, 0, 32, 10, 0, - 32, 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, 9, 10, 13, - 32, 40, 44, 59, 95, 0, 31, 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, 9, 10, - 13, 32, 40, 59, 0, 31, 9, 13, - 32, 95, 65, 90, 97, 122, 9, 13, - 32, 41, 42, 95, 48, 57, 65, 90, - 97, 122, 10, 59, 0, 32, 112, 108, - 101, 109, 101, 110, 116, 115, 10, 123, + 9, 13, 32, 95, 48, 57, 65, 90, + 97, 122, 9, 13, 32, 112, 48, 57, + 65, 90, 97, 122, 10, 95, 114, 117, + 123, 0, 32, 48, 57, 65, 90, 97, + 122, 10, 95, 111, 123, 0, 32, 48, + 57, 65, 90, 97, 122, 10, 95, 116, + 123, 0, 32, 48, 57, 65, 90, 97, + 122, 10, 95, 101, 123, 0, 32, 48, + 57, 65, 90, 97, 122, 10, 95, 99, + 123, 0, 32, 48, 57, 65, 90, 97, + 122, 10, 95, 116, 123, 0, 32, 48, + 57, 65, 90, 97, 122, 10, 95, 101, + 123, 0, 32, 48, 57, 65, 90, 97, + 122, 10, 95, 100, 123, 0, 32, 48, + 57, 65, 90, 97, 122, 95, 48, 57, + 65, 90, 97, 122, 10, 95, 98, 123, + 0, 32, 48, 57, 65, 90, 97, 122, + 10, 95, 108, 123, 0, 32, 48, 57, + 65, 90, 97, 122, 10, 95, 105, 123, + 0, 32, 48, 57, 65, 90, 97, 122, + 10, 95, 99, 123, 0, 32, 48, 57, + 65, 90, 97, 122, 10, 95, 98, 123, + 0, 32, 48, 57, 65, 90, 97, 122, + 10, 95, 108, 123, 0, 32, 48, 57, + 65, 90, 97, 122, 10, 95, 105, 123, + 0, 32, 48, 57, 65, 90, 97, 122, + 10, 95, 99, 123, 0, 32, 48, 57, + 65, 90, 97, 122, 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, + 59, 95, 48, 57, 65, 90, 97, 122, + 95, 112, 114, 101, 102, 105, 120, 10, + 58, 0, 32, 10, 0, 32, 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, 10, 58, 59, 95, 0, 32, - 48, 57, 65, 90, 97, 122, 10, 59, - 0, 32, 58, 103, 97, 99, 121, 95, - 112, 114, 101, 102, 105, 120, 10, 58, - 0, 32, 10, 0, 32, 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, 9, - 13, 32, 58, 95, 48, 57, 65, 90, - 97, 122, 9, 13, 32, 58, 95, 101, - 48, 57, 65, 90, 97, 122, 9, 13, - 32, 58, 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, 60, 62, 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, 112, 125, 0, 32, + 97, 122, 9, 10, 13, 32, 40, 44, + 59, 95, 0, 31, 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, 9, 10, 13, 32, 40, + 59, 0, 31, 9, 13, 32, 95, 65, + 90, 97, 122, 9, 13, 32, 41, 42, + 95, 48, 57, 65, 90, 97, 122, 10, + 59, 0, 32, 112, 108, 101, 109, 101, + 110, 116, 115, 10, 123, 0, 32, 10, + 125, 0, 32, 65, 90, 97, 122, 10, + 58, 59, 95, 0, 32, 48, 57, 65, + 90, 97, 122, 10, 59, 0, 32, 58, + 103, 97, 99, 121, 95, 112, 114, 101, + 102, 105, 120, 10, 58, 0, 32, 10, + 0, 32, 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, 116, 0, 32, 10, 0, 32, 42, + 47, 98, 108, 110, 105, 121, 10, 47, + 108, 114, 125, 0, 32, 65, 90, 97, + 122, 10, 0, 32, 42, 47, 9, 13, + 32, 58, 95, 48, 57, 65, 90, 97, + 122, 9, 13, 32, 58, 95, 101, 48, + 57, 65, 90, 97, 122, 9, 13, 32, + 58, 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, + 60, 62, 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, 112, 125, 0, 32, 48, + 57, 65, 90, 97, 122, 10, 0, 32, + 42, 47, 10, 95, 123, 0, 32, 48, + 57, 65, 90, 97, 122, 10, 95, 114, + 117, 123, 0, 32, 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, 112, 125, 0, 32, 48, 57, 65, 90, 97, 122, 10, 0, 32, 42, 47, 10, 95, 123, 0, 32, 48, 57, 65, 90, 97, 122, 10, 95, 114, 117, 123, 0, 32, 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, 112, 125, 0, - 32, 48, 57, 65, 90, 97, 122, 10, - 0, 32, 42, 47, 10, 95, 123, 0, - 32, 48, 57, 65, 90, 97, 122, 10, - 95, 114, 117, 123, 0, 32, 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, - 10, 0, 32, 111, 118, 10, 0, 32, - 59, 109, 59, 101, 10, 0, 32, 101, - 114, 59, 0 + 90, 97, 122, 59, 10, 47, 99, 100, + 101, 105, 108, 109, 112, 125, 0, 32, + 10, 0, 32, 42, 47, 111, 97, 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[] = { @@ -698,48 +718,49 @@ static const char _eo_tokenizer_single_lengths[] = { 1, 3, 3, 7, 2, 6, 1, 2, 4, 3, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, - 1, 1, 3, 3, 2, 3, 3, 2, - 3, 1, 4, 3, 3, 6, 5, 6, - 6, 6, 6, 5, 4, 2, 6, 6, - 6, 6, 5, 7, 7, 7, 7, 4, - 1, 1, 2, 2, 3, 6, 2, 3, - 1, 8, 4, 1, 1, 2, 2, 3, - 2, 3, 1, 1, 2, 1, 1, 2, - 1, 2, 1, 1, 1, 1, 2, 2, + 1, 1, 3, 1, 1, 3, 3, 5, + 4, 3, 7, 8, 3, 2, 3, 3, + 2, 3, 1, 4, 3, 3, 6, 5, + 6, 6, 6, 6, 5, 4, 2, 6, + 6, 6, 6, 5, 7, 7, 7, 7, + 4, 1, 1, 2, 2, 3, 6, 2, + 3, 1, 8, 4, 1, 1, 2, 2, + 3, 2, 3, 1, 1, 2, 1, 1, + 2, 1, 2, 1, 1, 1, 1, 2, + 2, 3, 1, 2, 3, 2, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 5, + 4, 4, 4, 4, 4, 4, 4, 1, + 4, 4, 4, 4, 4, 4, 4, 4, + 3, 2, 3, 3, 2, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 3, + 3, 2, 1, 1, 1, 1, 2, 1, + 1, 1, 1, 3, 6, 6, 7, 7, + 4, 1, 1, 2, 2, 3, 6, 2, 3, 1, 2, 3, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 3, 2, 3, 3, 2, 3, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 3, - 2, 1, 1, 1, 1, 2, 1, 1, - 1, 1, 3, 6, 6, 7, 7, 4, - 1, 1, 2, 2, 3, 6, 2, 3, - 1, 2, 3, 2, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 5, 4, 4, - 4, 4, 4, 4, 4, 1, 4, 4, - 4, 4, 4, 4, 4, 4, 3, 2, - 3, 3, 2, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, - 1, 1, 2, 1, 2, 1, 1, 1, - 1, 1, 1, 1, 2, 1, 2, 1, - 1, 1, 1, 2, 2, 8, 2, 6, - 1, 1, 2, 2, 3, 2, 6, 4, - 6, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 1, 2, 1, 1, 1, - 1, 1, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 6, 1, 2, 1, - 1, 1, 1, 5, 1, 2, 5, 6, - 6, 4, 0, 1, 3, 1, 2, 7, - 4, 0, 1, 7, 1, 2, 1, 1, - 1, 1, 1, 4, 1, 2, 3, 5, - 1, 7, 1, 2, 1, 1, 1, 1, - 4, 0, 1, 4, 1, 2, 3, 5, - 1, 10, 1, 2, 1, 1, 1, 2, + 2, 1, 1, 2, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 2, 1, 2, + 1, 1, 1, 1, 2, 2, 8, 2, + 6, 1, 1, 2, 2, 3, 2, 6, + 4, 6, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1 + 1, 1, 1, 2, 1, 2, 1, 1, + 1, 1, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 7, 1, 2, + 1, 1, 1, 1, 1, 5, 1, 2, + 5, 6, 6, 4, 0, 1, 3, 1, + 2, 7, 4, 0, 1, 7, 1, 2, + 1, 1, 1, 1, 1, 4, 1, 2, + 3, 5, 1, 7, 1, 2, 1, 1, + 1, 1, 4, 0, 1, 4, 1, 2, + 3, 5, 1, 10, 1, 2, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 1 }; static const char _eo_tokenizer_range_lengths[] = { @@ -747,48 +768,49 @@ static const char _eo_tokenizer_range_lengths[] = { 0, 0, 2, 4, 1, 1, 2, 1, 4, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4, 0, - 0, 0, 0, 2, 2, 3, 3, 3, - 3, 3, 3, 3, 2, 3, 3, 3, - 3, 3, 3, 5, 5, 5, 5, 0, - 0, 0, 4, 0, 0, 5, 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, 0, 0, 0, 0, 2, 3, + 0, 2, 3, 3, 0, 0, 0, 4, + 0, 0, 0, 0, 2, 2, 3, 3, + 3, 3, 3, 3, 3, 2, 3, 3, + 3, 3, 3, 3, 5, 5, 5, 5, + 0, 0, 0, 4, 0, 0, 5, 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, 1, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 3, 3, 4, + 4, 4, 4, 4, 4, 4, 4, 3, + 4, 4, 4, 4, 4, 4, 4, 4, + 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 2, 3, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 5, 5, 5, 5, + 0, 0, 0, 4, 0, 0, 5, 0, 0, 0, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2, - 3, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 5, 5, 5, 5, 0, - 0, 0, 4, 0, 0, 5, 0, 0, - 0, 1, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 3, 3, 4, 4, 4, - 4, 4, 4, 4, 4, 3, 4, 4, - 4, 4, 4, 4, 4, 4, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 1, 3, 3, 0, 0, 0, - 0, 0, 0, 0, 1, 3, 3, 0, - 0, 0, 0, 1, 3, 4, 1, 3, - 0, 0, 4, 0, 0, 3, 1, 2, - 3, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 3, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 3, 3, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 1, 1, 0, 0, - 0, 0, 0, 3, 1, 0, 3, 3, - 3, 0, 0, 0, 3, 1, 0, 3, - 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 0, 4, 1, 0, 4, 4, - 0, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 1, 0, 4, 4, - 0, 1, 1, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 0, 1, 0, 0, - 0 + 1, 0, 0, 1, 3, 3, 0, 0, + 0, 0, 0, 0, 0, 1, 3, 3, + 0, 0, 0, 0, 1, 3, 4, 1, + 3, 0, 0, 4, 0, 0, 3, 1, + 2, 3, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 3, 4, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 3, 3, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 3, 1, 0, + 3, 3, 3, 0, 0, 0, 3, 1, + 0, 3, 0, 0, 0, 1, 1, 0, + 0, 0, 0, 0, 0, 4, 1, 0, + 4, 4, 0, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 1, 0, + 4, 4, 0, 1, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 1, + 0, 0, 0 }; static const short _eo_tokenizer_index_offsets[] = { @@ -796,48 +818,49 @@ static const short _eo_tokenizer_index_offsets[] = { 19, 21, 25, 31, 43, 47, 55, 59, 63, 72, 77, 82, 84, 86, 88, 92, 94, 96, 98, 100, 102, 104, 106, 110, - 112, 114, 116, 120, 124, 127, 131, 139, - 142, 146, 148, 153, 159, 165, 175, 184, - 194, 204, 214, 224, 233, 240, 246, 256, - 266, 276, 286, 295, 308, 321, 334, 347, - 352, 354, 356, 363, 366, 370, 382, 385, - 389, 391, 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, 480, 488, 495, 504, 513, - 522, 531, 540, 549, 558, 566, 574, 584, - 593, 602, 611, 620, 629, 638, 647, 652, - 661, 670, 679, 688, 697, 706, 715, 724, - 728, 731, 735, 743, 746, 750, 752, 754, - 756, 758, 760, 762, 764, 766, 768, 772, - 778, 784, 786, 788, 790, 792, 796, 798, - 800, 802, 804, 808, 820, 832, 845, 858, - 863, 865, 867, 874, 877, 881, 893, 896, - 900, 902, 906, 914, 921, 930, 939, 948, - 957, 966, 975, 984, 992, 1000, 1010, 1019, - 1028, 1037, 1046, 1055, 1064, 1073, 1078, 1087, - 1096, 1105, 1114, 1123, 1132, 1141, 1150, 1154, - 1157, 1161, 1169, 1172, 1176, 1178, 1180, 1182, - 1184, 1186, 1188, 1190, 1192, 1194, 1196, 1198, - 1202, 1204, 1206, 1210, 1215, 1221, 1223, 1225, - 1227, 1229, 1231, 1233, 1235, 1239, 1244, 1250, - 1252, 1254, 1256, 1258, 1262, 1268, 1281, 1285, - 1295, 1297, 1299, 1306, 1309, 1313, 1319, 1327, - 1334, 1344, 1348, 1350, 1352, 1354, 1356, 1358, - 1360, 1362, 1364, 1368, 1374, 1383, 1387, 1389, - 1391, 1393, 1395, 1397, 1399, 1401, 1403, 1405, - 1407, 1409, 1411, 1415, 1420, 1426, 1428, 1430, - 1432, 1434, 1436, 1440, 1442, 1444, 1446, 1448, - 1450, 1452, 1454, 1456, 1460, 1468, 1471, 1474, - 1476, 1478, 1480, 1482, 1491, 1494, 1497, 1506, - 1516, 1526, 1531, 1532, 1534, 1541, 1544, 1547, - 1558, 1563, 1564, 1566, 1575, 1578, 1581, 1583, - 1585, 1587, 1589, 1591, 1600, 1603, 1606, 1614, - 1624, 1626, 1635, 1638, 1641, 1643, 1645, 1647, - 1649, 1654, 1655, 1657, 1666, 1669, 1672, 1680, - 1690, 1692, 1704, 1707, 1710, 1712, 1714, 1717, - 1720, 1723, 1725, 1727, 1729, 1731, 1734, 1736, - 1738 + 112, 114, 116, 120, 122, 124, 128, 134, + 143, 148, 154, 165, 177, 181, 184, 188, + 196, 199, 203, 205, 210, 216, 222, 232, + 241, 251, 261, 271, 281, 290, 297, 303, + 313, 323, 333, 343, 352, 365, 378, 391, + 404, 409, 411, 413, 420, 423, 427, 439, + 442, 446, 448, 460, 465, 467, 469, 476, + 479, 483, 486, 490, 492, 494, 498, 500, + 502, 506, 508, 512, 514, 516, 518, 520, + 524, 527, 531, 533, 537, 545, 552, 561, + 570, 579, 588, 597, 606, 615, 623, 631, + 641, 650, 659, 668, 677, 686, 695, 704, + 709, 718, 727, 736, 745, 754, 763, 772, + 781, 785, 788, 792, 800, 803, 807, 809, + 811, 813, 815, 817, 819, 821, 823, 825, + 829, 835, 841, 843, 845, 847, 849, 853, + 855, 857, 859, 861, 865, 877, 889, 902, + 915, 920, 922, 924, 931, 934, 938, 950, + 953, 957, 959, 963, 971, 978, 987, 996, + 1005, 1014, 1023, 1032, 1041, 1049, 1057, 1067, + 1076, 1085, 1094, 1103, 1112, 1121, 1130, 1135, + 1144, 1153, 1162, 1171, 1180, 1189, 1198, 1207, + 1211, 1214, 1218, 1226, 1229, 1233, 1235, 1237, + 1239, 1241, 1243, 1245, 1247, 1249, 1251, 1253, + 1255, 1259, 1261, 1263, 1267, 1272, 1278, 1280, + 1282, 1284, 1286, 1288, 1290, 1292, 1296, 1301, + 1307, 1309, 1311, 1313, 1315, 1319, 1325, 1338, + 1342, 1352, 1354, 1356, 1363, 1366, 1370, 1376, + 1384, 1391, 1401, 1405, 1407, 1409, 1411, 1413, + 1415, 1417, 1419, 1421, 1425, 1431, 1440, 1444, + 1446, 1448, 1450, 1452, 1454, 1456, 1458, 1460, + 1462, 1464, 1466, 1468, 1472, 1477, 1483, 1485, + 1487, 1489, 1491, 1493, 1497, 1499, 1501, 1503, + 1505, 1507, 1509, 1511, 1513, 1517, 1526, 1529, + 1532, 1534, 1536, 1538, 1540, 1542, 1551, 1554, + 1557, 1566, 1576, 1586, 1591, 1592, 1594, 1601, + 1604, 1607, 1618, 1623, 1624, 1626, 1635, 1638, + 1641, 1643, 1645, 1647, 1649, 1651, 1660, 1663, + 1666, 1674, 1684, 1686, 1695, 1698, 1701, 1703, + 1705, 1707, 1709, 1714, 1715, 1717, 1726, 1729, + 1732, 1740, 1750, 1752, 1764, 1767, 1770, 1772, + 1774, 1777, 1780, 1783, 1785, 1787, 1789, 1791, + 1794, 1796, 1798 }; static const short _eo_tokenizer_indicies[] = { @@ -856,359 +879,371 @@ static const short _eo_tokenizer_indicies[] = { 47, 0, 48, 0, 49, 0, 50, 0, 51, 0, 52, 52, 52, 0, 53, 0, 54, 0, 55, 0, 56, 56, 56, 0, - 59, 60, 61, 58, 59, 60, 58, 59, - 60, 62, 58, 63, 60, 64, 61, 64, - 64, 64, 58, 66, 67, 65, 66, 67, - 68, 65, 70, 69, 71, 71, 71, 72, - 57, 73, 73, 73, 74, 74, 57, 75, - 75, 75, 76, 76, 57, 77, 77, 77, - 77, 78, 77, 77, 77, 77, 57, 71, - 71, 71, 72, 79, 79, 79, 79, 57, - 71, 71, 71, 72, 79, 80, 79, 79, - 79, 57, 71, 71, 71, 72, 79, 81, - 79, 79, 79, 57, 71, 71, 71, 72, - 79, 82, 79, 79, 79, 57, 71, 71, - 71, 72, 79, 83, 79, 79, 79, 57, - 84, 84, 84, 72, 79, 79, 79, 79, - 57, 84, 84, 84, 72, 85, 85, 57, - 87, 86, 86, 86, 86, 57, 71, 71, - 71, 72, 79, 88, 79, 79, 79, 57, - 71, 71, 71, 72, 79, 89, 79, 79, - 79, 57, 71, 71, 71, 72, 79, 90, - 79, 79, 79, 57, 71, 71, 71, 72, - 79, 91, 79, 79, 79, 57, 92, 92, - 92, 72, 79, 79, 79, 79, 57, 93, - 93, 93, 72, 94, 94, 94, 94, 94, - 94, 94, 94, 57, 95, 95, 95, 72, - 96, 96, 96, 96, 96, 96, 96, 96, - 57, 95, 95, 95, 72, 97, 96, 96, - 96, 96, 96, 96, 96, 57, 98, 98, - 98, 97, 98, 98, 98, 98, 98, 98, - 98, 98, 57, 100, 100, 100, 101, 99, - 102, 99, 103, 99, 104, 105, 103, 105, - 105, 105, 99, 107, 108, 106, 107, 108, - 109, 106, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 57, 112, 113, - 111, 112, 113, 114, 111, 116, 115, 117, - 117, 117, 117, 118, 117, 117, 117, 117, - 117, 117, 110, 120, 120, 120, 121, 119, - 122, 119, 123, 119, 124, 125, 123, 125, - 125, 125, 119, 127, 128, 126, 127, 128, - 129, 126, 132, 133, 131, 132, 133, 134, - 131, 136, 135, 137, 130, 138, 139, 137, - 130, 140, 130, 141, 130, 142, 143, 141, - 130, 144, 130, 145, 146, 144, 130, 147, - 130, 148, 130, 149, 130, 150, 130, 151, - 152, 150, 130, 155, 156, 154, 155, 156, - 157, 154, 159, 158, 161, 162, 160, 153, - 164, 166, 167, 163, 165, 165, 165, 153, - 164, 167, 163, 165, 165, 165, 153, 164, - 166, 168, 167, 163, 165, 165, 165, 153, - 164, 166, 169, 167, 163, 165, 165, 165, - 153, 164, 166, 170, 167, 163, 165, 165, - 165, 153, 164, 166, 171, 167, 163, 165, - 165, 165, 153, 164, 166, 172, 167, 163, - 165, 165, 165, 153, 164, 166, 173, 167, - 163, 165, 165, 165, 153, 164, 166, 174, - 167, 163, 165, 165, 165, 153, 175, 175, - 175, 166, 165, 165, 165, 153, 175, 175, - 175, 177, 176, 176, 176, 153, 164, 166, - 178, 179, 167, 163, 165, 165, 165, 153, - 164, 166, 180, 167, 163, 165, 165, 165, - 153, 164, 166, 181, 167, 163, 165, 165, - 165, 153, 164, 166, 182, 167, 163, 165, - 165, 165, 153, 164, 166, 183, 167, 163, - 165, 165, 165, 153, 164, 166, 184, 167, - 163, 165, 165, 165, 153, 164, 166, 185, - 167, 163, 165, 165, 165, 153, 164, 166, - 186, 167, 163, 165, 165, 165, 153, 166, - 165, 165, 165, 153, 164, 166, 187, 167, - 163, 165, 165, 165, 153, 164, 166, 188, - 167, 163, 165, 165, 165, 153, 164, 166, - 189, 167, 163, 165, 165, 165, 153, 164, - 166, 186, 167, 163, 165, 165, 165, 153, - 164, 166, 190, 167, 163, 165, 165, 165, - 153, 164, 166, 191, 167, 163, 165, 165, - 165, 153, 164, 166, 192, 167, 163, 165, - 165, 165, 153, 164, 166, 174, 167, 163, - 165, 165, 165, 153, 195, 196, 197, 194, - 195, 196, 194, 195, 196, 198, 194, 199, - 196, 200, 197, 200, 200, 200, 194, 202, - 203, 201, 202, 203, 204, 201, 206, 205, - 207, 193, 208, 193, 209, 193, 210, 193, - 211, 193, 212, 193, 213, 193, 214, 193, - 215, 215, 215, 193, 215, 215, 215, 216, - 216, 193, 218, 217, 217, 217, 217, 193, - 219, 193, 220, 193, 221, 193, 222, 193, - 223, 224, 222, 193, 225, 193, 226, 193, - 227, 193, 228, 193, 229, 229, 229, 193, - 230, 230, 230, 231, 231, 231, 231, 231, - 231, 231, 231, 193, 232, 232, 232, 233, - 233, 233, 233, 233, 233, 233, 233, 193, - 232, 232, 232, 234, 233, 233, 233, 233, - 233, 233, 233, 233, 193, 235, 235, 235, - 234, 235, 235, 235, 235, 235, 235, 235, - 235, 193, 237, 237, 237, 238, 236, 239, - 236, 240, 236, 241, 242, 240, 242, 242, - 242, 236, 244, 245, 243, 244, 245, 246, - 243, 235, 235, 235, 235, 235, 235, 235, - 235, 235, 235, 235, 193, 249, 250, 248, - 249, 250, 251, 248, 253, 252, 255, 256, - 254, 247, 258, 260, 261, 257, 259, 259, - 259, 247, 258, 261, 257, 259, 259, 259, - 247, 258, 260, 262, 261, 257, 259, 259, - 259, 247, 258, 260, 263, 261, 257, 259, - 259, 259, 247, 258, 260, 264, 261, 257, - 259, 259, 259, 247, 258, 260, 265, 261, - 257, 259, 259, 259, 247, 258, 260, 266, - 261, 257, 259, 259, 259, 247, 258, 260, - 267, 261, 257, 259, 259, 259, 247, 258, - 260, 268, 261, 257, 259, 259, 259, 247, - 269, 269, 269, 260, 259, 259, 259, 247, - 269, 269, 269, 271, 270, 270, 270, 247, - 258, 260, 272, 273, 261, 257, 259, 259, - 259, 247, 258, 260, 274, 261, 257, 259, - 259, 259, 247, 258, 260, 275, 261, 257, - 259, 259, 259, 247, 258, 260, 276, 261, - 257, 259, 259, 259, 247, 258, 260, 277, - 261, 257, 259, 259, 259, 247, 258, 260, - 278, 261, 257, 259, 259, 259, 247, 258, - 260, 279, 261, 257, 259, 259, 259, 247, - 258, 260, 280, 261, 257, 259, 259, 259, - 247, 260, 259, 259, 259, 247, 258, 260, - 281, 261, 257, 259, 259, 259, 247, 258, - 260, 282, 261, 257, 259, 259, 259, 247, - 258, 260, 283, 261, 257, 259, 259, 259, - 247, 258, 260, 280, 261, 257, 259, 259, - 259, 247, 258, 260, 284, 261, 257, 259, - 259, 259, 247, 258, 260, 285, 261, 257, - 259, 259, 259, 247, 258, 260, 286, 261, - 257, 259, 259, 259, 247, 258, 260, 268, - 261, 257, 259, 259, 259, 247, 289, 290, - 291, 288, 289, 290, 288, 289, 290, 292, - 288, 293, 290, 294, 291, 294, 294, 294, - 288, 296, 297, 295, 296, 297, 298, 295, - 300, 299, 301, 287, 302, 287, 303, 287, - 304, 287, 305, 287, 306, 287, 307, 287, - 308, 287, 309, 287, 310, 287, 311, 312, - 310, 287, 313, 287, 314, 287, 315, 316, - 314, 287, 317, 316, 318, 318, 287, 320, - 319, 319, 319, 319, 287, 321, 287, 322, - 287, 323, 287, 324, 287, 325, 287, 326, - 287, 327, 287, 328, 329, 327, 287, 330, - 329, 331, 331, 287, 333, 332, 332, 332, - 332, 287, 334, 287, 335, 287, 336, 287, - 337, 287, 338, 339, 337, 287, 340, 342, - 339, 341, 341, 287, 344, 345, 344, 344, - 346, 347, 348, 347, 343, 347, 347, 347, - 287, 350, 351, 349, 287, 351, 340, 351, - 351, 352, 342, 339, 341, 341, 287, 353, - 287, 354, 287, 355, 356, 354, 356, 356, - 356, 287, 358, 359, 357, 358, 359, 360, - 357, 362, 364, 361, 363, 363, 287, 365, - 350, 365, 365, 366, 351, 349, 287, 366, - 366, 366, 367, 367, 367, 287, 368, 368, - 368, 369, 368, 368, 368, 368, 368, 287, - 371, 372, 370, 287, 373, 287, 374, 287, - 375, 287, 376, 287, 377, 287, 378, 287, - 379, 287, 380, 287, 381, 382, 380, 287, - 383, 385, 382, 384, 384, 287, 387, 389, - 390, 388, 386, 388, 388, 388, 287, 392, - 382, 391, 287, 388, 287, 393, 287, 394, - 287, 395, 287, 396, 287, 397, 287, 398, - 287, 399, 287, 400, 287, 401, 287, 402, - 287, 403, 287, 404, 405, 403, 287, 406, - 405, 407, 407, 287, 409, 408, 408, 408, - 408, 287, 410, 287, 411, 287, 412, 287, - 413, 287, 414, 287, 415, 416, 414, 287, - 417, 287, 418, 287, 419, 287, 420, 287, - 421, 287, 422, 287, 423, 287, 424, 287, - 425, 426, 424, 287, 429, 430, 431, 432, - 433, 434, 428, 427, 429, 428, 435, 1, - 5, 436, 437, 436, 438, 436, 439, 436, - 440, 436, 443, 444, 446, 447, 448, 442, - 445, 445, 441, 443, 442, 449, 451, 69, - 450, 71, 71, 71, 72, 79, 79, 79, - 79, 450, 71, 71, 71, 72, 79, 452, - 79, 79, 79, 450, 71, 71, 71, 72, - 79, 453, 79, 79, 79, 450, 100, 100, - 100, 101, 454, 455, 457, 456, 460, 461, - 463, 459, 462, 462, 458, 460, 459, 464, - 111, 115, 465, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 465, 120, 120, - 120, 121, 466, 467, 469, 468, 472, 473, - 474, 475, 476, 477, 478, 471, 470, 472, - 471, 479, 131, 135, 480, 481, 480, 482, - 480, 483, 480, 484, 480, 486, 485, 489, - 490, 492, 493, 488, 491, 491, 491, 487, - 489, 488, 494, 154, 158, 495, 164, 166, - 167, 163, 165, 165, 165, 495, 164, 166, - 496, 497, 167, 163, 165, 165, 165, 495, - 499, 498, 502, 503, 504, 505, 506, 507, - 508, 501, 500, 502, 501, 509, 511, 205, - 510, 512, 510, 513, 510, 514, 510, 515, - 510, 237, 237, 237, 238, 516, 517, 519, - 518, 522, 523, 525, 526, 521, 524, 524, - 524, 520, 522, 521, 527, 248, 252, 528, - 258, 260, 261, 257, 259, 259, 259, 528, - 258, 260, 529, 530, 261, 257, 259, 259, - 259, 528, 532, 531, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 544, 534, 533, - 535, 534, 545, 547, 299, 546, 548, 546, - 549, 546, 552, 551, 550, 553, 554, 546, - 557, 556, 555, 559, 558, 560, 546, 562, - 561, 563, 546, 566, 565, 564, 567, 546, - 568, 546, 570, 569, 0 + 57, 0, 58, 0, 59, 59, 59, 0, + 59, 59, 59, 60, 60, 0, 61, 61, + 61, 63, 62, 62, 62, 62, 0, 64, + 64, 64, 65, 0, 65, 65, 65, 66, + 66, 0, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 0, 67, 67, 67, + 67, 68, 67, 67, 67, 67, 67, 67, + 0, 71, 72, 73, 70, 71, 72, 70, + 71, 72, 74, 70, 75, 72, 76, 73, + 76, 76, 76, 70, 78, 79, 77, 78, + 79, 80, 77, 82, 81, 83, 83, 83, + 84, 69, 85, 85, 85, 86, 86, 69, + 87, 87, 87, 88, 88, 69, 89, 89, + 89, 89, 90, 89, 89, 89, 89, 69, + 83, 83, 83, 84, 91, 91, 91, 91, + 69, 83, 83, 83, 84, 91, 92, 91, + 91, 91, 69, 83, 83, 83, 84, 91, + 93, 91, 91, 91, 69, 83, 83, 83, + 84, 91, 94, 91, 91, 91, 69, 83, + 83, 83, 84, 91, 95, 91, 91, 91, + 69, 96, 96, 96, 84, 91, 91, 91, + 91, 69, 96, 96, 96, 84, 97, 97, + 69, 99, 98, 98, 98, 98, 69, 83, + 83, 83, 84, 91, 100, 91, 91, 91, + 69, 83, 83, 83, 84, 91, 101, 91, + 91, 91, 69, 83, 83, 83, 84, 91, + 102, 91, 91, 91, 69, 83, 83, 83, + 84, 91, 103, 91, 91, 91, 69, 104, + 104, 104, 84, 91, 91, 91, 91, 69, + 105, 105, 105, 84, 106, 106, 106, 106, + 106, 106, 106, 106, 69, 107, 107, 107, + 84, 108, 108, 108, 108, 108, 108, 108, + 108, 69, 107, 107, 107, 84, 109, 108, + 108, 108, 108, 108, 108, 108, 69, 110, + 110, 110, 109, 110, 110, 110, 110, 110, + 110, 110, 110, 69, 112, 112, 112, 113, + 111, 114, 111, 115, 111, 116, 117, 115, + 117, 117, 117, 111, 119, 120, 118, 119, + 120, 121, 118, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 69, 124, + 125, 123, 124, 125, 126, 123, 128, 127, + 129, 129, 129, 129, 130, 129, 129, 129, + 129, 129, 129, 122, 132, 132, 132, 133, + 131, 134, 131, 135, 131, 136, 137, 135, + 137, 137, 137, 131, 139, 140, 138, 139, + 140, 141, 138, 144, 145, 143, 144, 145, + 146, 143, 148, 147, 149, 142, 150, 151, + 149, 142, 152, 142, 153, 142, 154, 155, + 153, 142, 156, 142, 157, 158, 156, 142, + 159, 142, 160, 142, 161, 142, 162, 142, + 163, 164, 162, 142, 167, 168, 166, 167, + 168, 169, 166, 171, 170, 173, 174, 172, + 165, 176, 178, 179, 175, 177, 177, 177, + 165, 176, 179, 175, 177, 177, 177, 165, + 176, 178, 180, 179, 175, 177, 177, 177, + 165, 176, 178, 181, 179, 175, 177, 177, + 177, 165, 176, 178, 182, 179, 175, 177, + 177, 177, 165, 176, 178, 183, 179, 175, + 177, 177, 177, 165, 176, 178, 184, 179, + 175, 177, 177, 177, 165, 176, 178, 185, + 179, 175, 177, 177, 177, 165, 176, 178, + 186, 179, 175, 177, 177, 177, 165, 187, + 187, 187, 178, 177, 177, 177, 165, 187, + 187, 187, 189, 188, 188, 188, 165, 176, + 178, 190, 191, 179, 175, 177, 177, 177, + 165, 176, 178, 192, 179, 175, 177, 177, + 177, 165, 176, 178, 193, 179, 175, 177, + 177, 177, 165, 176, 178, 194, 179, 175, + 177, 177, 177, 165, 176, 178, 195, 179, + 175, 177, 177, 177, 165, 176, 178, 196, + 179, 175, 177, 177, 177, 165, 176, 178, + 197, 179, 175, 177, 177, 177, 165, 176, + 178, 198, 179, 175, 177, 177, 177, 165, + 178, 177, 177, 177, 165, 176, 178, 199, + 179, 175, 177, 177, 177, 165, 176, 178, + 200, 179, 175, 177, 177, 177, 165, 176, + 178, 201, 179, 175, 177, 177, 177, 165, + 176, 178, 198, 179, 175, 177, 177, 177, + 165, 176, 178, 202, 179, 175, 177, 177, + 177, 165, 176, 178, 203, 179, 175, 177, + 177, 177, 165, 176, 178, 204, 179, 175, + 177, 177, 177, 165, 176, 178, 186, 179, + 175, 177, 177, 177, 165, 207, 208, 209, + 206, 207, 208, 206, 207, 208, 210, 206, + 211, 208, 212, 209, 212, 212, 212, 206, + 214, 215, 213, 214, 215, 216, 213, 218, + 217, 219, 205, 220, 205, 221, 205, 222, + 205, 223, 205, 224, 205, 225, 205, 226, + 205, 227, 227, 227, 205, 227, 227, 227, + 228, 228, 205, 230, 229, 229, 229, 229, + 205, 231, 205, 232, 205, 233, 205, 234, + 205, 235, 236, 234, 205, 237, 205, 238, + 205, 239, 205, 240, 205, 241, 241, 241, + 205, 242, 242, 242, 243, 243, 243, 243, + 243, 243, 243, 243, 205, 244, 244, 244, + 245, 245, 245, 245, 245, 245, 245, 245, + 205, 244, 244, 244, 246, 245, 245, 245, + 245, 245, 245, 245, 245, 205, 247, 247, + 247, 246, 247, 247, 247, 247, 247, 247, + 247, 247, 205, 249, 249, 249, 250, 248, + 251, 248, 252, 248, 253, 254, 252, 254, + 254, 254, 248, 256, 257, 255, 256, 257, + 258, 255, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 205, 261, 262, + 260, 261, 262, 263, 260, 265, 264, 267, + 268, 266, 259, 270, 272, 273, 269, 271, + 271, 271, 259, 270, 273, 269, 271, 271, + 271, 259, 270, 272, 274, 273, 269, 271, + 271, 271, 259, 270, 272, 275, 273, 269, + 271, 271, 271, 259, 270, 272, 276, 273, + 269, 271, 271, 271, 259, 270, 272, 277, + 273, 269, 271, 271, 271, 259, 270, 272, + 278, 273, 269, 271, 271, 271, 259, 270, + 272, 279, 273, 269, 271, 271, 271, 259, + 270, 272, 280, 273, 269, 271, 271, 271, + 259, 281, 281, 281, 272, 271, 271, 271, + 259, 281, 281, 281, 283, 282, 282, 282, + 259, 270, 272, 284, 285, 273, 269, 271, + 271, 271, 259, 270, 272, 286, 273, 269, + 271, 271, 271, 259, 270, 272, 287, 273, + 269, 271, 271, 271, 259, 270, 272, 288, + 273, 269, 271, 271, 271, 259, 270, 272, + 289, 273, 269, 271, 271, 271, 259, 270, + 272, 290, 273, 269, 271, 271, 271, 259, + 270, 272, 291, 273, 269, 271, 271, 271, + 259, 270, 272, 292, 273, 269, 271, 271, + 271, 259, 272, 271, 271, 271, 259, 270, + 272, 293, 273, 269, 271, 271, 271, 259, + 270, 272, 294, 273, 269, 271, 271, 271, + 259, 270, 272, 295, 273, 269, 271, 271, + 271, 259, 270, 272, 292, 273, 269, 271, + 271, 271, 259, 270, 272, 296, 273, 269, + 271, 271, 271, 259, 270, 272, 297, 273, + 269, 271, 271, 271, 259, 270, 272, 298, + 273, 269, 271, 271, 271, 259, 270, 272, + 280, 273, 269, 271, 271, 271, 259, 301, + 302, 303, 300, 301, 302, 300, 301, 302, + 304, 300, 305, 302, 306, 303, 306, 306, + 306, 300, 308, 309, 307, 308, 309, 310, + 307, 312, 311, 313, 299, 314, 299, 315, + 299, 316, 299, 317, 299, 318, 299, 319, + 299, 320, 299, 321, 299, 322, 299, 323, + 324, 322, 299, 325, 299, 326, 299, 327, + 328, 326, 299, 329, 328, 330, 330, 299, + 332, 331, 331, 331, 331, 299, 333, 299, + 334, 299, 335, 299, 336, 299, 337, 299, + 338, 299, 339, 299, 340, 341, 339, 299, + 342, 341, 343, 343, 299, 345, 344, 344, + 344, 344, 299, 346, 299, 347, 299, 348, + 299, 349, 299, 350, 351, 349, 299, 352, + 354, 351, 353, 353, 299, 356, 357, 356, + 356, 358, 359, 360, 359, 355, 359, 359, + 359, 299, 362, 363, 361, 299, 363, 352, + 363, 363, 364, 354, 351, 353, 353, 299, + 365, 299, 366, 299, 367, 368, 366, 368, + 368, 368, 299, 370, 371, 369, 370, 371, + 372, 369, 374, 376, 373, 375, 375, 299, + 377, 362, 377, 377, 378, 363, 361, 299, + 378, 378, 378, 379, 379, 379, 299, 380, + 380, 380, 381, 380, 380, 380, 380, 380, + 299, 383, 384, 382, 299, 385, 299, 386, + 299, 387, 299, 388, 299, 389, 299, 390, + 299, 391, 299, 392, 299, 393, 394, 392, + 299, 395, 397, 394, 396, 396, 299, 399, + 401, 402, 400, 398, 400, 400, 400, 299, + 404, 394, 403, 299, 400, 299, 405, 299, + 406, 299, 407, 299, 408, 299, 409, 299, + 410, 299, 411, 299, 412, 299, 413, 299, + 414, 299, 415, 299, 416, 417, 415, 299, + 418, 417, 419, 419, 299, 421, 420, 420, + 420, 420, 299, 422, 299, 423, 299, 424, + 299, 425, 299, 426, 299, 427, 428, 426, + 299, 429, 299, 430, 299, 431, 299, 432, + 299, 433, 299, 434, 299, 435, 299, 436, + 299, 437, 438, 436, 299, 441, 442, 443, + 444, 445, 446, 447, 440, 439, 441, 440, + 448, 1, 5, 449, 450, 449, 451, 449, + 452, 449, 453, 449, 454, 449, 457, 458, + 460, 461, 462, 456, 459, 459, 455, 457, + 456, 463, 465, 81, 464, 83, 83, 83, + 84, 91, 91, 91, 91, 464, 83, 83, + 83, 84, 91, 466, 91, 91, 91, 464, + 83, 83, 83, 84, 91, 467, 91, 91, + 91, 464, 112, 112, 112, 113, 468, 469, + 471, 470, 474, 475, 477, 473, 476, 476, + 472, 474, 473, 478, 123, 127, 479, 129, + 129, 129, 129, 129, 129, 129, 129, 129, + 129, 479, 132, 132, 132, 133, 480, 481, + 483, 482, 486, 487, 488, 489, 490, 491, + 492, 485, 484, 486, 485, 493, 143, 147, + 494, 495, 494, 496, 494, 497, 494, 498, + 494, 500, 499, 503, 504, 506, 507, 502, + 505, 505, 505, 501, 503, 502, 508, 166, + 170, 509, 176, 178, 179, 175, 177, 177, + 177, 509, 176, 178, 510, 511, 179, 175, + 177, 177, 177, 509, 513, 512, 516, 517, + 518, 519, 520, 521, 522, 515, 514, 516, + 515, 523, 525, 217, 524, 526, 524, 527, + 524, 528, 524, 529, 524, 249, 249, 249, + 250, 530, 531, 533, 532, 536, 537, 539, + 540, 535, 538, 538, 538, 534, 536, 535, + 541, 260, 264, 542, 270, 272, 273, 269, + 271, 271, 271, 542, 270, 272, 543, 544, + 273, 269, 271, 271, 271, 542, 546, 545, + 549, 550, 551, 552, 553, 554, 555, 556, + 557, 558, 548, 547, 549, 548, 559, 561, + 311, 560, 562, 560, 563, 560, 566, 565, + 564, 567, 568, 560, 571, 570, 569, 573, + 572, 574, 560, 576, 575, 577, 560, 580, + 579, 578, 581, 560, 582, 560, 584, 583, + 0 }; static const short _eo_tokenizer_trans_targs[] = { - 292, 0, 0, 1, 292, 2, 292, 4, + 301, 0, 0, 1, 301, 2, 301, 4, 5, 6, 7, 8, 9, 10, 10, 11, - 12, 13, 12, 14, 11, 292, 12, 12, - 292, 13, 14, 15, 16, 12, 12, 292, + 12, 13, 12, 14, 11, 301, 12, 12, + 301, 13, 14, 15, 16, 12, 12, 301, 17, 17, 15, 18, 16, 17, 17, 18, 18, 20, 21, 22, 10, 24, 25, 26, 27, 28, 29, 30, 10, 32, 33, 34, - 10, 299, 36, 36, 37, 38, 299, 38, - 39, 39, 39, 40, 299, 41, 299, 42, - 43, 44, 45, 44, 45, 45, 299, 46, - 48, 49, 50, 51, 52, 53, 53, 299, - 55, 56, 57, 58, 59, 60, 69, 61, - 62, 305, 62, 299, 63, 64, 65, 66, - 66, 67, 67, 67, 68, 306, 308, 70, - 70, 71, 308, 72, 308, 73, 312, 308, - 74, 75, 76, 77, 77, 78, 78, 78, - 79, 313, 315, 80, 80, 81, 315, 82, - 315, 84, 84, 315, 86, 87, 87, 315, - 89, 89, 315, 91, 92, 93, 94, 94, - 315, 323, 95, 95, 96, 323, 97, 323, - 98, 98, 323, 98, 98, 99, 100, 323, - 102, 103, 104, 105, 106, 107, 108, 109, - 99, 110, 111, 119, 112, 113, 114, 115, - 116, 117, 118, 120, 121, 122, 124, 125, - 126, 329, 128, 128, 129, 130, 329, 130, - 131, 131, 131, 132, 329, 133, 329, 135, - 136, 137, 329, 139, 140, 141, 142, 143, - 144, 144, 329, 146, 147, 148, 149, 149, - 329, 151, 152, 153, 154, 155, 156, 165, - 157, 158, 336, 158, 329, 159, 160, 161, - 162, 162, 163, 163, 163, 164, 337, 339, - 166, 166, 167, 339, 168, 339, 169, 169, - 339, 169, 169, 170, 171, 339, 173, 174, - 175, 176, 177, 178, 179, 180, 170, 181, - 182, 190, 183, 184, 185, 186, 187, 188, - 189, 191, 192, 193, 195, 196, 197, 345, - 199, 199, 200, 201, 345, 201, 202, 202, - 202, 203, 345, 204, 345, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 215, - 345, 217, 218, 218, 219, 219, 220, 220, - 350, 222, 223, 224, 225, 226, 227, 228, - 228, 229, 229, 230, 230, 352, 232, 233, - 234, 235, 235, 236, 236, 237, 353, 238, - 246, 238, 247, 237, 239, 238, 238, 239, - 240, 241, 242, 242, 243, 243, 243, 244, - 245, 236, 236, 237, 353, 246, 247, 248, - 248, 249, 238, 238, 239, 251, 252, 253, - 254, 255, 256, 257, 258, 258, 259, 259, - 260, 355, 261, 261, 260, 262, 259, 261, - 261, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 274, 275, 275, 276, - 276, 357, 278, 279, 280, 281, 282, 282, - 345, 284, 285, 286, 287, 288, 289, 290, - 291, 291, 345, 292, 293, 293, 294, 295, - 296, 297, 298, 292, 292, 3, 19, 23, - 31, 299, 300, 300, 301, 302, 303, 304, - 307, 299, 299, 35, 47, 54, 299, 299, - 299, 299, 308, 309, 309, 310, 311, 314, - 308, 308, 308, 308, 308, 308, 315, 316, - 316, 317, 318, 319, 320, 321, 322, 315, - 315, 83, 85, 88, 90, 315, 315, 323, - 324, 324, 325, 326, 327, 328, 323, 323, - 101, 123, 323, 323, 329, 330, 330, 331, - 332, 333, 334, 335, 338, 329, 329, 127, - 134, 138, 145, 150, 329, 329, 329, 329, - 339, 340, 340, 341, 342, 343, 344, 339, - 339, 172, 194, 339, 339, 345, 346, 346, - 347, 348, 349, 351, 354, 356, 358, 359, - 360, 345, 345, 198, 205, 216, 345, 350, - 350, 221, 231, 345, 352, 352, 345, 345, - 250, 345, 345, 263, 345, 357, 357, 277, - 283, 345, 345 + 10, 36, 37, 38, 39, 40, 39, 41, + 40, 41, 42, 43, 301, 309, 45, 45, + 46, 47, 309, 47, 48, 48, 48, 49, + 309, 50, 309, 51, 52, 53, 54, 53, + 54, 54, 309, 55, 57, 58, 59, 60, + 61, 62, 62, 309, 64, 65, 66, 67, + 68, 69, 78, 70, 71, 315, 71, 309, + 72, 73, 74, 75, 75, 76, 76, 76, + 77, 316, 318, 79, 79, 80, 318, 81, + 318, 82, 322, 318, 83, 84, 85, 86, + 86, 87, 87, 87, 88, 323, 325, 89, + 89, 90, 325, 91, 325, 93, 93, 325, + 95, 96, 96, 325, 98, 98, 325, 100, + 101, 102, 103, 103, 325, 333, 104, 104, + 105, 333, 106, 333, 107, 107, 333, 107, + 107, 108, 109, 333, 111, 112, 113, 114, + 115, 116, 117, 118, 108, 119, 120, 128, + 121, 122, 123, 124, 125, 126, 127, 129, + 130, 131, 133, 134, 135, 339, 137, 137, + 138, 139, 339, 139, 140, 140, 140, 141, + 339, 142, 339, 144, 145, 146, 339, 148, + 149, 150, 151, 152, 153, 153, 339, 155, + 156, 157, 158, 158, 339, 160, 161, 162, + 163, 164, 165, 174, 166, 167, 346, 167, + 339, 168, 169, 170, 171, 171, 172, 172, + 172, 173, 347, 349, 175, 175, 176, 349, + 177, 349, 178, 178, 349, 178, 178, 179, + 180, 349, 182, 183, 184, 185, 186, 187, + 188, 189, 179, 190, 191, 199, 192, 193, + 194, 195, 196, 197, 198, 200, 201, 202, + 204, 205, 206, 355, 208, 208, 209, 210, + 355, 210, 211, 211, 211, 212, 355, 213, + 355, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 224, 355, 226, 227, 227, + 228, 228, 229, 229, 360, 231, 232, 233, + 234, 235, 236, 237, 237, 238, 238, 239, + 239, 362, 241, 242, 243, 244, 244, 245, + 245, 246, 363, 247, 255, 247, 256, 246, + 248, 247, 247, 248, 249, 250, 251, 251, + 252, 252, 252, 253, 254, 245, 245, 246, + 363, 255, 256, 257, 257, 258, 247, 247, + 248, 260, 261, 262, 263, 264, 265, 266, + 267, 267, 268, 268, 269, 365, 270, 270, + 269, 271, 268, 270, 270, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, + 283, 284, 284, 285, 285, 367, 287, 288, + 289, 290, 291, 291, 355, 293, 294, 295, + 296, 297, 298, 299, 300, 300, 355, 301, + 302, 302, 303, 304, 305, 306, 307, 308, + 301, 301, 3, 19, 23, 31, 35, 309, + 310, 310, 311, 312, 313, 314, 317, 309, + 309, 44, 56, 63, 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, 92, + 94, 97, 99, 325, 325, 333, 334, 334, + 335, 336, 337, 338, 333, 333, 110, 132, + 333, 333, 339, 340, 340, 341, 342, 343, + 344, 345, 348, 339, 339, 136, 143, 147, + 154, 159, 339, 339, 339, 339, 349, 350, + 350, 351, 352, 353, 354, 349, 349, 181, + 203, 349, 349, 355, 356, 356, 357, 358, + 359, 361, 364, 366, 368, 369, 370, 355, + 355, 207, 214, 225, 355, 360, 360, 230, + 240, 355, 362, 362, 355, 355, 259, 355, + 355, 272, 355, 367, 367, 286, 292, 355, + 355 }; static const short _eo_tokenizer_trans_actions[] = { - 205, 0, 1, 0, 195, 0, 228, 0, + 207, 0, 1, 0, 197, 0, 230, 0, 0, 0, 0, 0, 0, 31, 0, 3, - 37, 37, 291, 37, 0, 294, 0, 1, - 197, 0, 0, 0, 3, 13, 270, 273, - 11, 267, 11, 11, 0, 0, 1, 0, + 37, 37, 293, 37, 0, 296, 0, 1, + 199, 0, 0, 0, 3, 13, 272, 275, + 11, 269, 11, 11, 0, 0, 1, 0, 1, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 33, 63, 0, 1, 0, 0, 47, 1, - 3, 0, 1, 0, 45, 0, 207, 0, - 0, 5, 237, 0, 3, 0, 240, 0, - 0, 0, 0, 0, 0, 3, 0, 234, - 0, 0, 0, 0, 0, 3, 3, 3, - 3, 303, 0, 61, 0, 0, 0, 0, - 1, 3, 0, 1, 0, 0, 81, 0, - 1, 0, 65, 0, 210, 0, 306, 79, + 33, 0, 0, 0, 3, 39, 0, 39, + 0, 0, 3, 0, 299, 65, 0, 1, + 0, 0, 49, 1, 3, 0, 1, 0, + 47, 0, 209, 0, 0, 5, 239, 0, + 3, 0, 242, 0, 0, 0, 0, 0, + 0, 3, 0, 236, 0, 0, 0, 0, + 0, 3, 3, 3, 3, 308, 0, 63, 0, 0, 0, 0, 1, 3, 0, 1, - 0, 0, 103, 0, 1, 0, 83, 0, - 213, 0, 1, 85, 0, 0, 1, 89, - 0, 1, 87, 0, 0, 0, 0, 1, - 91, 119, 0, 1, 0, 105, 0, 216, - 0, 1, 107, 7, 246, 0, 0, 249, + 0, 0, 83, 0, 1, 0, 67, 0, + 212, 0, 311, 81, 0, 0, 0, 0, + 1, 3, 0, 1, 0, 0, 105, 0, + 1, 0, 85, 0, 215, 0, 1, 87, + 0, 0, 1, 91, 0, 1, 89, 0, + 0, 0, 0, 1, 93, 121, 0, 1, + 0, 107, 0, 218, 0, 1, 109, 7, + 248, 0, 0, 251, 0, 0, 0, 0, + 0, 0, 0, 0, 317, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 312, 312, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 143, 0, 1, + 0, 0, 125, 1, 3, 0, 1, 0, + 123, 0, 221, 0, 0, 0, 260, 0, + 0, 0, 0, 0, 3, 0, 257, 0, + 0, 0, 0, 1, 127, 0, 0, 0, + 0, 0, 3, 3, 3, 3, 314, 0, + 141, 0, 0, 0, 0, 1, 3, 0, + 1, 0, 0, 159, 0, 1, 0, 145, + 0, 224, 0, 1, 147, 9, 263, 0, + 0, 266, 0, 0, 0, 0, 0, 0, + 0, 0, 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 141, 0, 1, 0, 0, 123, 1, - 3, 0, 1, 0, 121, 0, 219, 0, - 0, 0, 258, 0, 0, 0, 0, 0, - 3, 0, 255, 0, 0, 0, 0, 1, - 125, 0, 0, 0, 0, 0, 3, 3, - 3, 3, 309, 0, 139, 0, 0, 0, - 0, 1, 3, 0, 1, 0, 0, 157, - 0, 1, 0, 143, 0, 222, 0, 1, - 145, 9, 261, 0, 0, 264, 0, 0, - 0, 0, 0, 0, 0, 0, 316, 316, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 193, - 0, 1, 0, 0, 161, 1, 3, 0, - 1, 0, 159, 0, 225, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, - 167, 0, 0, 1, 0, 1, 3, 0, - 25, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 3, 0, 23, 0, 0, - 0, 0, 1, 0, 1, 3, 0, 15, - 15, 276, 15, 0, 15, 0, 1, 0, - 0, 0, 0, 1, 3, 0, 1, 0, - 0, 19, 282, 285, 19, 0, 0, 3, - 0, 0, 17, 279, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 1, - 3, 0, 27, 288, 0, 0, 27, 0, - 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 195, 0, 1, 0, 0, + 163, 1, 3, 0, 1, 0, 161, 0, + 227, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 169, 0, 0, 1, + 0, 1, 3, 0, 25, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 3, - 0, 21, 0, 0, 0, 0, 0, 1, - 171, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 169, 199, 0, 1, 297, 43, - 43, 43, 43, 201, 203, 0, 0, 0, - 0, 51, 0, 1, 297, 300, 300, 300, - 0, 53, 59, 0, 0, 0, 55, 231, - 57, 49, 69, 0, 1, 297, 300, 0, - 71, 77, 73, 243, 75, 67, 95, 0, - 1, 297, 43, 43, 43, 43, 0, 97, - 101, 0, 0, 0, 0, 99, 93, 111, - 0, 1, 297, 300, 300, 0, 113, 117, - 0, 0, 115, 109, 129, 0, 1, 297, - 43, 43, 43, 43, 0, 131, 137, 0, - 0, 0, 0, 0, 133, 252, 135, 127, - 149, 0, 1, 297, 300, 300, 0, 151, - 155, 0, 0, 153, 147, 175, 0, 1, - 297, 43, 43, 43, 43, 43, 43, 43, - 0, 177, 191, 0, 0, 0, 183, 0, - 1, 0, 0, 181, 0, 1, 187, 165, - 0, 185, 163, 0, 179, 0, 1, 0, - 0, 189, 173 + 0, 23, 0, 0, 0, 0, 1, 0, + 1, 3, 0, 15, 15, 278, 15, 0, + 15, 0, 1, 0, 0, 0, 0, 1, + 3, 0, 1, 0, 0, 19, 284, 287, + 19, 0, 0, 3, 0, 0, 17, 281, + 17, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 3, 0, 27, 290, + 0, 0, 27, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 3, 0, 21, 0, 0, + 0, 0, 0, 1, 173, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 171, 201, + 0, 1, 302, 45, 45, 45, 45, 45, + 203, 205, 0, 0, 0, 0, 0, 53, + 0, 1, 302, 305, 305, 305, 0, 55, + 61, 0, 0, 0, 57, 233, 59, 51, + 71, 0, 1, 302, 305, 0, 73, 79, + 75, 245, 77, 69, 97, 0, 1, 302, + 45, 45, 45, 45, 0, 99, 103, 0, + 0, 0, 0, 101, 95, 113, 0, 1, + 302, 305, 305, 0, 115, 119, 0, 0, + 117, 111, 131, 0, 1, 302, 45, 45, + 45, 45, 0, 133, 139, 0, 0, 0, + 0, 0, 135, 254, 137, 129, 151, 0, + 1, 302, 305, 305, 0, 153, 157, 0, + 0, 155, 149, 177, 0, 1, 302, 45, + 45, 45, 45, 45, 45, 45, 0, 179, + 193, 0, 0, 0, 185, 0, 1, 0, + 0, 183, 0, 1, 189, 167, 0, 187, + 165, 0, 181, 0, 1, 0, 0, 191, + 175 }; static const short _eo_tokenizer_to_state_actions[] = { @@ -1248,16 +1283,17 @@ 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, 39, 0, 0, 0, - 0, 0, 0, 39, 0, 0, 0, 0, - 0, 0, 0, 0, 39, 0, 0, 0, - 0, 0, 0, 39, 0, 0, 0, 0, - 0, 0, 0, 39, 0, 0, 0, 0, - 0, 39, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 39, 0, 0, 0, 0, - 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0 + 0, 0, 0, 0, 0, 41, 0, 0, + 0, 0, 0, 0, 0, 41, 0, 0, + 0, 0, 0, 0, 0, 0, 41, 0, + 0, 0, 0, 0, 0, 41, 0, 0, + 0, 0, 0, 0, 0, 41, 0, 0, + 0, 0, 0, 41, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 41, 0, 0, + 0, 0, 0, 41, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 }; static const short _eo_tokenizer_from_state_actions[] = { @@ -1297,16 +1333,17 @@ 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, 41, 0, 0, 0, - 0, 0, 0, 41, 0, 0, 0, 0, - 0, 0, 0, 0, 41, 0, 0, 0, - 0, 0, 0, 41, 0, 0, 0, 0, - 0, 0, 0, 41, 0, 0, 0, 0, - 0, 41, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 41, 0, 0, 0, 0, - 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0 + 0, 0, 0, 0, 0, 43, 0, 0, + 0, 0, 0, 0, 0, 43, 0, 0, + 0, 0, 0, 0, 0, 0, 43, 0, + 0, 0, 0, 0, 0, 43, 0, 0, + 0, 0, 0, 0, 0, 43, 0, 0, + 0, 0, 0, 43, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 43, 0, 0, + 0, 0, 0, 43, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 }; static const short _eo_tokenizer_eof_trans[] = { @@ -1314,65 +1351,66 @@ static const short _eo_tokenizer_eof_trans[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 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, 58, 58, 58, 100, - 100, 100, 100, 100, 100, 58, 111, 111, - 111, 111, 120, 120, 120, 120, 120, 120, - 131, 131, 131, 131, 131, 131, 131, 131, - 131, 131, 131, 131, 131, 131, 131, 154, - 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 194, - 194, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 237, - 237, 237, 237, 237, 237, 194, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 0, 436, 437, 437, - 437, 437, 437, 0, 450, 451, 451, 451, - 451, 455, 456, 457, 0, 465, 466, 466, - 467, 468, 469, 0, 480, 481, 481, 481, - 481, 481, 486, 0, 495, 496, 496, 496, - 499, 0, 510, 511, 511, 511, 511, 511, - 517, 518, 519, 0, 528, 529, 529, 529, - 532, 0, 546, 547, 547, 547, 551, 547, - 556, 559, 547, 562, 547, 565, 547, 547, - 570 + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 112, 112, 112, 112, 112, 112, 70, 123, + 123, 123, 123, 132, 132, 132, 132, 132, + 132, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, + 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, + 249, 249, 249, 249, 249, 249, 206, 260, + 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 300, + 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 0, 449, 450, + 450, 450, 450, 450, 450, 0, 464, 465, + 465, 465, 465, 469, 470, 471, 0, 479, + 480, 480, 481, 482, 483, 0, 494, 495, + 495, 495, 495, 495, 500, 0, 509, 510, + 510, 510, 513, 0, 524, 525, 525, 525, + 525, 525, 531, 532, 533, 0, 542, 543, + 543, 543, 546, 0, 560, 561, 561, 561, + 565, 561, 570, 573, 561, 576, 561, 579, + 561, 561, 584 }; -static const int eo_tokenizer_start = 292; -static const int eo_tokenizer_first_final = 292; +static const int eo_tokenizer_start = 301; +static const int eo_tokenizer_first_final = 301; static const int eo_tokenizer_error = -1; -static const int eo_tokenizer_en_tokenize_accessor = 299; -static const int eo_tokenizer_en_tokenize_params = 308; -static const int eo_tokenizer_en_tokenize_property = 315; -static const int eo_tokenizer_en_tokenize_properties = 323; -static const int eo_tokenizer_en_tokenize_method = 329; -static const int eo_tokenizer_en_tokenize_methods = 339; -static const int eo_tokenizer_en_tokenize_class = 345; -static const int eo_tokenizer_en_main = 292; +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 = 339; +static const int eo_tokenizer_en_tokenize_methods = 349; +static const int eo_tokenizer_en_tokenize_class = 355; +static const int eo_tokenizer_en_main = 301; -#line 968 "lib/eolian/eo_lexer.rl" +#line 996 "lib/eolian/eo_lexer.rl" Eina_Bool @@ -1396,7 +1434,7 @@ eo_tokenizer_walk(Eo_Tokenizer *toknz, const char *source) } -#line 1400 "lib/eolian/eo_lexer.c" +#line 1438 "lib/eolian/eo_lexer.c" { toknz->cs = eo_tokenizer_start; toknz->ts = 0; @@ -1404,7 +1442,7 @@ eo_tokenizer_walk(Eo_Tokenizer *toknz, const char *source) toknz->act = 0; } -#line 991 "lib/eolian/eo_lexer.rl" +#line 1019 "lib/eolian/eo_lexer.rl" while (!done) { @@ -1431,7 +1469,7 @@ eo_tokenizer_walk(Eo_Tokenizer *toknz, const char *source) } -#line 1435 "lib/eolian/eo_lexer.c" +#line 1473 "lib/eolian/eo_lexer.c" { int _klen; unsigned int _trans; @@ -1446,11 +1484,11 @@ _resume: _nacts = (unsigned int) *_acts++; while ( _nacts-- > 0 ) { switch ( *_acts++ ) { - case 34: + case 36: #line 1 "NONE" { toknz->ts = ( toknz->p);} break; -#line 1454 "lib/eolian/eo_lexer.c" +#line 1492 "lib/eolian/eo_lexer.c" } } @@ -1517,35 +1555,35 @@ _eof_trans: switch ( *_acts++ ) { case 0: -#line 366 "lib/eolian/eo_lexer.rl" +#line 377 "lib/eolian/eo_lexer.rl" { toknz->current_line += 1; DBG("inc[%d] %d", toknz->cs, toknz->current_line); } break; case 1: -#line 371 "lib/eolian/eo_lexer.rl" +#line 382 "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 376 "lib/eolian/eo_lexer.rl" +#line 387 "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 381 "lib/eolian/eo_lexer.rl" +#line 392 "lib/eolian/eo_lexer.rl" { DBG("move ts %d chars forward", (int)(( toknz->p) - toknz->ts)); toknz->ts = ( toknz->p); } break; case 4: -#line 460 "lib/eolian/eo_lexer.rl" +#line 471 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); if (toknz->tmp.accessor->ret != NULL) @@ -1554,7 +1592,7 @@ _eof_trans: } break; case 5: -#line 467 "lib/eolian/eo_lexer.rl" +#line 478 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); if (!toknz->tmp.accessor->ret) ABORT(toknz, "No ret!!!"); @@ -1565,20 +1603,20 @@ _eof_trans: } break; case 6: -#line 476 "lib/eolian/eo_lexer.rl" +#line 487 "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 490 "lib/eolian/eo_lexer.rl" +#line 501 "lib/eolian/eo_lexer.rl" { toknz->tmp.accessor_param = _eo_tokenizer_accessor_param_get(toknz, ( toknz->p)); } break; case 8: -#line 494 "lib/eolian/eo_lexer.rl" +#line 505 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.accessor_param) ABORT(toknz, "No accessor param!!!"); @@ -1589,7 +1627,7 @@ _eof_trans: } break; case 9: -#line 523 "lib/eolian/eo_lexer.rl" +#line 534 "lib/eolian/eo_lexer.rl" { const char *c = _eo_tokenizer_token_get(toknz, ( toknz->p)-2); if (toknz->tmp.param == NULL) @@ -1599,7 +1637,7 @@ _eof_trans: } break; case 10: -#line 531 "lib/eolian/eo_lexer.rl" +#line 542 "lib/eolian/eo_lexer.rl" { toknz->tmp.param = _eo_tokenizer_param_get(toknz, ( toknz->p)); if (toknz->tmp.params) @@ -1610,7 +1648,7 @@ _eof_trans: } break; case 11: -#line 630 "lib/eolian/eo_lexer.rl" +#line 641 "lib/eolian/eo_lexer.rl" { if (toknz->tmp.prop != NULL) ABORT(toknz, "there is a pending property definition %s", toknz->tmp.prop->name); @@ -1618,13 +1656,13 @@ _eof_trans: } break; case 12: -#line 636 "lib/eolian/eo_lexer.rl" +#line 647 "lib/eolian/eo_lexer.rl" { toknz->tmp.fscope = _eo_tokenizer_scope_get(toknz, ( toknz->p)); } break; case 13: -#line 674 "lib/eolian/eo_lexer.rl" +#line 685 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); if (toknz->tmp.meth->ret != NULL) @@ -1633,7 +1671,7 @@ _eof_trans: } break; case 14: -#line 681 "lib/eolian/eo_lexer.rl" +#line 692 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); if (toknz->tmp.meth->ret == NULL) ABORT(toknz, "No ret!!!"); @@ -1644,14 +1682,14 @@ _eof_trans: } break; case 15: -#line 690 "lib/eolian/eo_lexer.rl" +#line 701 "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 695 "lib/eolian/eo_lexer.rl" +#line 706 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); toknz->tmp.meth->obj_const = EINA_TRUE; @@ -1659,7 +1697,7 @@ _eof_trans: } break; case 17: -#line 753 "lib/eolian/eo_lexer.rl" +#line 764 "lib/eolian/eo_lexer.rl" { if (toknz->tmp.meth != NULL) ABORT(toknz, "there is a pending method definition %s", toknz->tmp.meth->name); @@ -1667,20 +1705,20 @@ _eof_trans: } break; case 18: -#line 759 "lib/eolian/eo_lexer.rl" +#line 770 "lib/eolian/eo_lexer.rl" { toknz->tmp.fscope = _eo_tokenizer_scope_get(toknz, ( toknz->p)); } break; case 19: -#line 789 "lib/eolian/eo_lexer.rl" +#line 800 "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 20: -#line 794 "lib/eolian/eo_lexer.rl" +#line 805 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); toknz->tmp.kls->inherits = toknz->tmp.str_items; @@ -1688,7 +1726,7 @@ _eof_trans: } break; case 21: -#line 838 "lib/eolian/eo_lexer.rl" +#line 849 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); toknz->tmp.event = _eo_tokenizer_event_get(toknz, ( toknz->p)); @@ -1696,7 +1734,7 @@ _eof_trans: } break; case 22: -#line 844 "lib/eolian/eo_lexer.rl" +#line 855 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.event) ABORT(toknz, "No event!!!"); if (toknz->tmp.event->type != NULL) @@ -1705,7 +1743,7 @@ _eof_trans: } break; case 23: -#line 851 "lib/eolian/eo_lexer.rl" +#line 862 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.event) ABORT(toknz, "No event!!!"); if (toknz->tmp.event->comment != NULL) @@ -1715,7 +1753,7 @@ _eof_trans: } break; case 24: -#line 859 "lib/eolian/eo_lexer.rl" +#line 870 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); if (toknz->tmp.kls->legacy_prefix != NULL) @@ -1724,7 +1762,7 @@ _eof_trans: } break; case 25: -#line 868 "lib/eolian/eo_lexer.rl" +#line 879 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); if (toknz->tmp.kls->eo_prefix != NULL) @@ -1733,7 +1771,7 @@ _eof_trans: } break; case 26: -#line 877 "lib/eolian/eo_lexer.rl" +#line 888 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); if (toknz->tmp.kls->data_type != NULL) @@ -1742,7 +1780,7 @@ _eof_trans: } break; case 27: -#line 890 "lib/eolian/eo_lexer.rl" +#line 901 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); toknz->tmp.impl = _eo_tokenizer_implement_get(toknz, ( toknz->p)); @@ -1750,31 +1788,31 @@ _eof_trans: } break; case 28: -#line 934 "lib/eolian/eo_lexer.rl" +#line 945 "lib/eolian/eo_lexer.rl" { toknz->tmp.kls_type = EOLIAN_CLASS_REGULAR; } break; case 29: -#line 937 "lib/eolian/eo_lexer.rl" +#line 948 "lib/eolian/eo_lexer.rl" { toknz->tmp.kls_type = EOLIAN_CLASS_ABSTRACT; } break; case 30: -#line 940 "lib/eolian/eo_lexer.rl" +#line 951 "lib/eolian/eo_lexer.rl" { toknz->tmp.kls_type = EOLIAN_CLASS_MIXIN; } break; case 31: -#line 943 "lib/eolian/eo_lexer.rl" +#line 954 "lib/eolian/eo_lexer.rl" { toknz->tmp.kls_type = EOLIAN_CLASS_INTERFACE; } break; case 32: -#line 947 "lib/eolian/eo_lexer.rl" +#line 958 "lib/eolian/eo_lexer.rl" { if (toknz->tmp.kls != NULL) ABORT(toknz, "there is a pending class definition %s", toknz->tmp.kls->name); @@ -1782,12 +1820,28 @@ _eof_trans: toknz->tmp.kls->type = toknz->tmp.kls_type; } break; - case 35: + case 33: +#line 972 "lib/eolian/eo_lexer.rl" + { + toknz->tmp.typedef_alias = _eo_tokenizer_token_get(toknz, ( toknz->p)); + } + break; + case 34: +#line 976 "lib/eolian/eo_lexer.rl" + { + if (toknz->tmp.typedef_alias == NULL) + ABORT(toknz, "No typedef"); + toknz->tmp.type_def = _eo_tokenizer_type_get(toknz, ( toknz->p)); + toknz->tmp.type_def->alias = toknz->tmp.typedef_alias; + toknz->typedefs = eina_list_append(toknz->typedefs, toknz->tmp.type_def); + } + break; + case 37: #line 1 "NONE" { toknz->te = ( toknz->p)+1;} break; - case 36: -#line 452 "lib/eolian/eo_lexer.rl" + case 38: +#line 463 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); if (toknz->tmp.accessor->comment != NULL) @@ -1796,34 +1850,34 @@ _eof_trans: INF(" %s", toknz->tmp.accessor->comment); }} break; - case 37: -#line 386 "lib/eolian/eo_lexer.rl" + case 39: +#line 397 "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 38: -#line 515 "lib/eolian/eo_lexer.rl" + case 40: +#line 526 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;} break; - case 39: -#line 516 "lib/eolian/eo_lexer.rl" + case 41: +#line 527 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;} break; - case 40: -#line 481 "lib/eolian/eo_lexer.rl" + case 42: +#line 492 "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 = 315; goto _again;} + { toknz->cs = 325; goto _again;} }} break; - case 41: -#line 395 "lib/eolian/eo_lexer.rl" + case 43: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -1841,27 +1895,27 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 42: -#line 511 "lib/eolian/eo_lexer.rl" + case 44: +#line 522 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 43: -#line 514 "lib/eolian/eo_lexer.rl" + case 45: +#line 525 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 44: -#line 481 "lib/eolian/eo_lexer.rl" + case 46: +#line 492 "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 = 315; goto _again;} + { toknz->cs = 325; goto _again;} }} break; - case 45: -#line 395 "lib/eolian/eo_lexer.rl" + case 47: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -1879,12 +1933,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 46: -#line 514 "lib/eolian/eo_lexer.rl" + case 48: +#line 525 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}} break; - case 47: -#line 395 "lib/eolian/eo_lexer.rl" + case 49: +#line 406 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -1902,29 +1956,29 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 48: -#line 386 "lib/eolian/eo_lexer.rl" + case 50: +#line 397 "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 49: -#line 540 "lib/eolian/eo_lexer.rl" + case 51: +#line 551 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" }"); toknz->tmp.param = NULL; toknz->current_nesting--; if (toknz->tmp.prop) - { toknz->cs = 315; goto _again;} + { toknz->cs = 325; goto _again;} else if (toknz->tmp.meth) - { toknz->cs = 329; goto _again;} + { toknz->cs = 339; goto _again;} else ABORT(toknz, "leaving tokenize_params but there is no property nor method pending"); }} break; - case 50: -#line 395 "lib/eolian/eo_lexer.rl" + case 52: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -1942,30 +1996,30 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 51: -#line 556 "lib/eolian/eo_lexer.rl" + case 53: +#line 567 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 52: -#line 558 "lib/eolian/eo_lexer.rl" + case 54: +#line 569 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 53: -#line 540 "lib/eolian/eo_lexer.rl" + case 55: +#line 551 "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 = 315; goto _again;} + { toknz->cs = 325; goto _again;} else if (toknz->tmp.meth) - { toknz->cs = 329; goto _again;} + { toknz->cs = 339; goto _again;} else ABORT(toknz, "leaving tokenize_params but there is no property nor method pending"); }} break; - case 54: -#line 395 "lib/eolian/eo_lexer.rl" + case 56: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -1983,12 +2037,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 55: -#line 558 "lib/eolian/eo_lexer.rl" + case 57: +#line 569 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}} break; - case 56: -#line 395 "lib/eolian/eo_lexer.rl" + case 58: +#line 406 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2006,51 +2060,51 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 57: -#line 386 "lib/eolian/eo_lexer.rl" + case 59: +#line 397 "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 58: -#line 565 "lib/eolian/eo_lexer.rl" + case 60: +#line 576 "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 = 299; goto _again;} + { toknz->cs = 309; goto _again;} }} break; - case 59: -#line 572 "lib/eolian/eo_lexer.rl" + case 61: +#line 583 "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 = 299; goto _again;} + { toknz->cs = 309; goto _again;} }} break; - case 60: -#line 579 "lib/eolian/eo_lexer.rl" + case 62: +#line 590 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" keys {"); toknz->current_nesting++; toknz->tmp.params = &(toknz->tmp.prop->keys); - { toknz->cs = 308; goto _again;} + { toknz->cs = 318; goto _again;} }} break; - case 61: -#line 586 "lib/eolian/eo_lexer.rl" + case 63: +#line 597 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" values {"); toknz->current_nesting++; toknz->tmp.params = &(toknz->tmp.prop->values); - { toknz->cs = 308; goto _again;} + { toknz->cs = 318; goto _again;} }} break; - case 62: -#line 593 "lib/eolian/eo_lexer.rl" + case 64: +#line 604 "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->accessors) == 0) @@ -2060,11 +2114,11 @@ _eof_trans: toknz->tmp.prop = NULL; toknz->tmp.fscope = FUNC_PUBLIC; toknz->current_nesting--; - { toknz->cs = 323; goto _again;} + { toknz->cs = 333; goto _again;} }} break; - case 63: -#line 395 "lib/eolian/eo_lexer.rl" + case 65: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2082,12 +2136,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 64: -#line 611 "lib/eolian/eo_lexer.rl" + case 66: +#line 622 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 65: -#line 593 "lib/eolian/eo_lexer.rl" + case 67: +#line 604 "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->accessors) == 0) @@ -2097,11 +2151,11 @@ _eof_trans: toknz->tmp.prop = NULL; toknz->tmp.fscope = FUNC_PUBLIC; toknz->current_nesting--; - { toknz->cs = 323; goto _again;} + { toknz->cs = 333; goto _again;} }} break; - case 66: -#line 395 "lib/eolian/eo_lexer.rl" + case 68: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2119,8 +2173,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 67: -#line 395 "lib/eolian/eo_lexer.rl" + case 69: +#line 406 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2138,32 +2192,32 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 68: -#line 386 "lib/eolian/eo_lexer.rl" + case 70: +#line 397 "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 69: -#line 623 "lib/eolian/eo_lexer.rl" + case 71: +#line 634 "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 = 315; goto _again;} + { toknz->cs = 325; goto _again;} }} break; - case 70: -#line 640 "lib/eolian/eo_lexer.rl" + case 72: +#line 651 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" }"); toknz->current_nesting--; - { toknz->cs = 345; goto _again;} + { toknz->cs = 355; goto _again;} }} break; - case 71: -#line 395 "lib/eolian/eo_lexer.rl" + case 73: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2181,20 +2235,20 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 72: -#line 649 "lib/eolian/eo_lexer.rl" + case 74: +#line 660 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 73: -#line 640 "lib/eolian/eo_lexer.rl" + case 75: +#line 651 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ INF(" }"); toknz->current_nesting--; - { toknz->cs = 345; goto _again;} + { toknz->cs = 355; goto _again;} }} break; - case 74: -#line 395 "lib/eolian/eo_lexer.rl" + case 76: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2212,8 +2266,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 75: -#line 395 "lib/eolian/eo_lexer.rl" + case 77: +#line 406 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2231,8 +2285,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 76: -#line 658 "lib/eolian/eo_lexer.rl" + case 78: +#line 669 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); if (toknz->tmp.meth->comment != NULL) @@ -2241,33 +2295,33 @@ _eof_trans: INF(" %s", toknz->tmp.meth->comment); }} break; - case 77: -#line 386 "lib/eolian/eo_lexer.rl" + case 79: +#line 397 "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 78: -#line 666 "lib/eolian/eo_lexer.rl" + case 80: +#line 677 "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 = 308; goto _again;} + { toknz->cs = 318; goto _again;} }} break; - case 79: -#line 738 "lib/eolian/eo_lexer.rl" + case 81: +#line 749 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;} break; - case 80: -#line 739 "lib/eolian/eo_lexer.rl" + case 82: +#line 750 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;} break; - case 81: -#line 701 "lib/eolian/eo_lexer.rl" + case 83: +#line 712 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ Eina_List **l = NULL; if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); @@ -2287,11 +2341,11 @@ _eof_trans: toknz->tmp.meth = NULL; toknz->tmp.fscope = FUNC_PUBLIC; toknz->current_nesting--; - { toknz->cs = 339; goto _again;} + { toknz->cs = 349; goto _again;} }} break; - case 82: -#line 395 "lib/eolian/eo_lexer.rl" + case 84: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2309,16 +2363,16 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 83: -#line 733 "lib/eolian/eo_lexer.rl" + case 85: +#line 744 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 84: -#line 737 "lib/eolian/eo_lexer.rl" + case 86: +#line 748 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 85: -#line 701 "lib/eolian/eo_lexer.rl" + case 87: +#line 712 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ Eina_List **l = NULL; if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); @@ -2338,11 +2392,11 @@ _eof_trans: toknz->tmp.meth = NULL; toknz->tmp.fscope = FUNC_PUBLIC; toknz->current_nesting--; - { toknz->cs = 339; goto _again;} + { toknz->cs = 349; goto _again;} }} break; - case 86: -#line 395 "lib/eolian/eo_lexer.rl" + case 88: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2360,12 +2414,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 87: -#line 737 "lib/eolian/eo_lexer.rl" + case 89: +#line 748 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}} break; - case 88: -#line 395 "lib/eolian/eo_lexer.rl" + case 90: +#line 406 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2383,33 +2437,33 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 89: -#line 386 "lib/eolian/eo_lexer.rl" + case 91: +#line 397 "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 90: -#line 746 "lib/eolian/eo_lexer.rl" + case 92: +#line 757 "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 = 329; goto _again;} + { toknz->cs = 339; goto _again;} }} break; - case 91: -#line 763 "lib/eolian/eo_lexer.rl" + case 93: +#line 774 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" }"); toknz->current_methods_type = METH_TYPE_LAST; toknz->current_nesting--; - { toknz->cs = 345; goto _again;} + { toknz->cs = 355; goto _again;} }} break; - case 92: -#line 395 "lib/eolian/eo_lexer.rl" + case 94: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2427,21 +2481,21 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 93: -#line 773 "lib/eolian/eo_lexer.rl" + case 95: +#line 784 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 94: -#line 763 "lib/eolian/eo_lexer.rl" + case 96: +#line 774 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ INF(" }"); toknz->current_methods_type = METH_TYPE_LAST; toknz->current_nesting--; - { toknz->cs = 345; goto _again;} + { toknz->cs = 355; goto _again;} }} break; - case 95: -#line 395 "lib/eolian/eo_lexer.rl" + case 97: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2459,8 +2513,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 96: -#line 395 "lib/eolian/eo_lexer.rl" + case 98: +#line 406 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2478,8 +2532,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 97: -#line 782 "lib/eolian/eo_lexer.rl" + case 99: +#line 793 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); if (toknz->tmp.kls->comment != NULL) @@ -2487,65 +2541,65 @@ _eof_trans: toknz->tmp.kls->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-1); }} break; - case 98: -#line 386 "lib/eolian/eo_lexer.rl" + case 100: +#line 397 "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 99: -#line 800 "lib/eolian/eo_lexer.rl" + case 101: +#line 811 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ }} break; - case 100: -#line 803 "lib/eolian/eo_lexer.rl" + case 102: +#line 814 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ }} break; - case 101: -#line 806 "lib/eolian/eo_lexer.rl" + case 103: +#line 817 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" constructors {"); toknz->current_methods_type = METH_CONSTRUCTOR; toknz->tmp.fscope = FUNC_PUBLIC; toknz->current_nesting++; - { toknz->cs = 339; goto _again;} + { toknz->cs = 349; goto _again;} }} break; - case 102: -#line 814 "lib/eolian/eo_lexer.rl" + case 104: +#line 825 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" properties {"); toknz->tmp.fscope = FUNC_PUBLIC; toknz->current_nesting++; - { toknz->cs = 323; goto _again;} + { toknz->cs = 333; goto _again;} }} break; - case 103: -#line 821 "lib/eolian/eo_lexer.rl" + case 105: +#line 832 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" begin methods"); toknz->current_methods_type = METH_REGULAR; toknz->tmp.fscope = FUNC_PUBLIC; toknz->current_nesting++; - { toknz->cs = 339; goto _again;} + { toknz->cs = 349; goto _again;} }} break; - case 104: -#line 829 "lib/eolian/eo_lexer.rl" + case 106: +#line 840 "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 = 292; goto _again;} + { toknz->cs = 301; goto _again;} }} break; - case 105: -#line 395 "lib/eolian/eo_lexer.rl" + case 107: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2563,45 +2617,45 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 106: -#line 910 "lib/eolian/eo_lexer.rl" + case 108: +#line 921 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 107: -#line 913 "lib/eolian/eo_lexer.rl" + case 109: +#line 924 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 108: -#line 914 "lib/eolian/eo_lexer.rl" + case 110: +#line 925 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 109: -#line 915 "lib/eolian/eo_lexer.rl" + case 111: +#line 926 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 110: -#line 800 "lib/eolian/eo_lexer.rl" + case 112: +#line 811 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ }} break; - case 111: -#line 803 "lib/eolian/eo_lexer.rl" + case 113: +#line 814 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ }} break; - case 112: -#line 829 "lib/eolian/eo_lexer.rl" + case 114: +#line 840 "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 = 292; goto _again;} + { toknz->cs = 301; goto _again;} }} break; - case 113: -#line 395 "lib/eolian/eo_lexer.rl" + case 115: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2619,8 +2673,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 114: -#line 395 "lib/eolian/eo_lexer.rl" + case 116: +#line 406 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2638,24 +2692,28 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 115: -#line 386 "lib/eolian/eo_lexer.rl" + case 117: +#line 397 "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 116: -#line 927 "lib/eolian/eo_lexer.rl" + case 118: +#line 938 "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 = 345; goto _again;} + { toknz->cs = 355; goto _again;} }} break; - case 117: -#line 395 "lib/eolian/eo_lexer.rl" + case 119: +#line 992 "lib/eolian/eo_lexer.rl" + { toknz->te = ( toknz->p)+1;} + break; + case 120: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2673,12 +2731,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 118: -#line 962 "lib/eolian/eo_lexer.rl" + case 121: +#line 989 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 119: -#line 395 "lib/eolian/eo_lexer.rl" + case 122: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2696,8 +2754,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 120: -#line 395 "lib/eolian/eo_lexer.rl" + case 123: +#line 406 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -2715,7 +2773,7 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; -#line 2719 "lib/eolian/eo_lexer.c" +#line 2777 "lib/eolian/eo_lexer.c" } } @@ -2724,11 +2782,11 @@ _again: _nacts = (unsigned int) *_acts++; while ( _nacts-- > 0 ) { switch ( *_acts++ ) { - case 33: + case 35: #line 1 "NONE" { toknz->ts = 0;} break; -#line 2732 "lib/eolian/eo_lexer.c" +#line 2790 "lib/eolian/eo_lexer.c" } } @@ -2746,12 +2804,12 @@ _again: _out: {} } -#line 1017 "lib/eolian/eo_lexer.rl" +#line 1045 "lib/eolian/eo_lexer.rl" if ( toknz->cs == -#line 2753 "lib/eolian/eo_lexer.c" +#line 2811 "lib/eolian/eo_lexer.c" -1 -#line 1018 "lib/eolian/eo_lexer.rl" +#line 1046 "lib/eolian/eo_lexer.rl" ) { ERR("%s: wrong termination", source); @@ -2797,7 +2855,7 @@ eo_tokenizer_mem_walk(Eo_Tokenizer *toknz, const char *source, char *buffer, uns Eina_Bool ret = EINA_TRUE; -#line 2801 "lib/eolian/eo_lexer.c" +#line 2859 "lib/eolian/eo_lexer.c" { toknz->cs = eo_tokenizer_start; toknz->ts = 0; @@ -2805,7 +2863,7 @@ eo_tokenizer_mem_walk(Eo_Tokenizer *toknz, const char *source, char *buffer, uns toknz->act = 0; } -#line 1063 "lib/eolian/eo_lexer.rl" +#line 1091 "lib/eolian/eo_lexer.rl" toknz->p = buffer; @@ -2814,7 +2872,7 @@ eo_tokenizer_mem_walk(Eo_Tokenizer *toknz, const char *source, char *buffer, uns toknz->eof = toknz->pe; -#line 2818 "lib/eolian/eo_lexer.c" +#line 2876 "lib/eolian/eo_lexer.c" { int _klen; unsigned int _trans; @@ -2829,11 +2887,11 @@ _resume: _nacts = (unsigned int) *_acts++; while ( _nacts-- > 0 ) { switch ( *_acts++ ) { - case 34: + case 36: #line 1 "NONE" { toknz->ts = ( toknz->p);} break; -#line 2837 "lib/eolian/eo_lexer.c" +#line 2895 "lib/eolian/eo_lexer.c" } } @@ -2900,35 +2958,35 @@ _eof_trans: switch ( *_acts++ ) { case 0: -#line 366 "lib/eolian/eo_lexer.rl" +#line 377 "lib/eolian/eo_lexer.rl" { toknz->current_line += 1; DBG("inc[%d] %d", toknz->cs, toknz->current_line); } break; case 1: -#line 371 "lib/eolian/eo_lexer.rl" +#line 382 "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 376 "lib/eolian/eo_lexer.rl" +#line 387 "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 381 "lib/eolian/eo_lexer.rl" +#line 392 "lib/eolian/eo_lexer.rl" { DBG("move ts %d chars forward", (int)(( toknz->p) - toknz->ts)); toknz->ts = ( toknz->p); } break; case 4: -#line 460 "lib/eolian/eo_lexer.rl" +#line 471 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); if (toknz->tmp.accessor->ret != NULL) @@ -2937,7 +2995,7 @@ _eof_trans: } break; case 5: -#line 467 "lib/eolian/eo_lexer.rl" +#line 478 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!"); if (!toknz->tmp.accessor->ret) ABORT(toknz, "No ret!!!"); @@ -2948,20 +3006,20 @@ _eof_trans: } break; case 6: -#line 476 "lib/eolian/eo_lexer.rl" +#line 487 "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 490 "lib/eolian/eo_lexer.rl" +#line 501 "lib/eolian/eo_lexer.rl" { toknz->tmp.accessor_param = _eo_tokenizer_accessor_param_get(toknz, ( toknz->p)); } break; case 8: -#line 494 "lib/eolian/eo_lexer.rl" +#line 505 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.accessor_param) ABORT(toknz, "No accessor param!!!"); @@ -2972,7 +3030,7 @@ _eof_trans: } break; case 9: -#line 523 "lib/eolian/eo_lexer.rl" +#line 534 "lib/eolian/eo_lexer.rl" { const char *c = _eo_tokenizer_token_get(toknz, ( toknz->p)-2); if (toknz->tmp.param == NULL) @@ -2982,7 +3040,7 @@ _eof_trans: } break; case 10: -#line 531 "lib/eolian/eo_lexer.rl" +#line 542 "lib/eolian/eo_lexer.rl" { toknz->tmp.param = _eo_tokenizer_param_get(toknz, ( toknz->p)); if (toknz->tmp.params) @@ -2993,7 +3051,7 @@ _eof_trans: } break; case 11: -#line 630 "lib/eolian/eo_lexer.rl" +#line 641 "lib/eolian/eo_lexer.rl" { if (toknz->tmp.prop != NULL) ABORT(toknz, "there is a pending property definition %s", toknz->tmp.prop->name); @@ -3001,13 +3059,13 @@ _eof_trans: } break; case 12: -#line 636 "lib/eolian/eo_lexer.rl" +#line 647 "lib/eolian/eo_lexer.rl" { toknz->tmp.fscope = _eo_tokenizer_scope_get(toknz, ( toknz->p)); } break; case 13: -#line 674 "lib/eolian/eo_lexer.rl" +#line 685 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); if (toknz->tmp.meth->ret != NULL) @@ -3016,7 +3074,7 @@ _eof_trans: } break; case 14: -#line 681 "lib/eolian/eo_lexer.rl" +#line 692 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); if (toknz->tmp.meth->ret == NULL) ABORT(toknz, "No ret!!!"); @@ -3027,14 +3085,14 @@ _eof_trans: } break; case 15: -#line 690 "lib/eolian/eo_lexer.rl" +#line 701 "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 695 "lib/eolian/eo_lexer.rl" +#line 706 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); toknz->tmp.meth->obj_const = EINA_TRUE; @@ -3042,7 +3100,7 @@ _eof_trans: } break; case 17: -#line 753 "lib/eolian/eo_lexer.rl" +#line 764 "lib/eolian/eo_lexer.rl" { if (toknz->tmp.meth != NULL) ABORT(toknz, "there is a pending method definition %s", toknz->tmp.meth->name); @@ -3050,20 +3108,20 @@ _eof_trans: } break; case 18: -#line 759 "lib/eolian/eo_lexer.rl" +#line 770 "lib/eolian/eo_lexer.rl" { toknz->tmp.fscope = _eo_tokenizer_scope_get(toknz, ( toknz->p)); } break; case 19: -#line 789 "lib/eolian/eo_lexer.rl" +#line 800 "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 20: -#line 794 "lib/eolian/eo_lexer.rl" +#line 805 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); toknz->tmp.kls->inherits = toknz->tmp.str_items; @@ -3071,7 +3129,7 @@ _eof_trans: } break; case 21: -#line 838 "lib/eolian/eo_lexer.rl" +#line 849 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); toknz->tmp.event = _eo_tokenizer_event_get(toknz, ( toknz->p)); @@ -3079,7 +3137,7 @@ _eof_trans: } break; case 22: -#line 844 "lib/eolian/eo_lexer.rl" +#line 855 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.event) ABORT(toknz, "No event!!!"); if (toknz->tmp.event->type != NULL) @@ -3088,7 +3146,7 @@ _eof_trans: } break; case 23: -#line 851 "lib/eolian/eo_lexer.rl" +#line 862 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.event) ABORT(toknz, "No event!!!"); if (toknz->tmp.event->comment != NULL) @@ -3098,7 +3156,7 @@ _eof_trans: } break; case 24: -#line 859 "lib/eolian/eo_lexer.rl" +#line 870 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); if (toknz->tmp.kls->legacy_prefix != NULL) @@ -3107,7 +3165,7 @@ _eof_trans: } break; case 25: -#line 868 "lib/eolian/eo_lexer.rl" +#line 879 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); if (toknz->tmp.kls->eo_prefix != NULL) @@ -3116,7 +3174,7 @@ _eof_trans: } break; case 26: -#line 877 "lib/eolian/eo_lexer.rl" +#line 888 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); if (toknz->tmp.kls->data_type != NULL) @@ -3125,7 +3183,7 @@ _eof_trans: } break; case 27: -#line 890 "lib/eolian/eo_lexer.rl" +#line 901 "lib/eolian/eo_lexer.rl" { if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); toknz->tmp.impl = _eo_tokenizer_implement_get(toknz, ( toknz->p)); @@ -3133,31 +3191,31 @@ _eof_trans: } break; case 28: -#line 934 "lib/eolian/eo_lexer.rl" +#line 945 "lib/eolian/eo_lexer.rl" { toknz->tmp.kls_type = EOLIAN_CLASS_REGULAR; } break; case 29: -#line 937 "lib/eolian/eo_lexer.rl" +#line 948 "lib/eolian/eo_lexer.rl" { toknz->tmp.kls_type = EOLIAN_CLASS_ABSTRACT; } break; case 30: -#line 940 "lib/eolian/eo_lexer.rl" +#line 951 "lib/eolian/eo_lexer.rl" { toknz->tmp.kls_type = EOLIAN_CLASS_MIXIN; } break; case 31: -#line 943 "lib/eolian/eo_lexer.rl" +#line 954 "lib/eolian/eo_lexer.rl" { toknz->tmp.kls_type = EOLIAN_CLASS_INTERFACE; } break; case 32: -#line 947 "lib/eolian/eo_lexer.rl" +#line 958 "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 +3223,28 @@ _eof_trans: toknz->tmp.kls->type = toknz->tmp.kls_type; } break; - case 35: + case 33: +#line 972 "lib/eolian/eo_lexer.rl" + { + toknz->tmp.typedef_alias = _eo_tokenizer_token_get(toknz, ( toknz->p)); + } + break; + case 34: +#line 976 "lib/eolian/eo_lexer.rl" + { + if (toknz->tmp.typedef_alias == NULL) + ABORT(toknz, "No typedef"); + toknz->tmp.type_def = _eo_tokenizer_type_get(toknz, ( toknz->p)); + toknz->tmp.type_def->alias = toknz->tmp.typedef_alias; + toknz->typedefs = eina_list_append(toknz->typedefs, toknz->tmp.type_def); + } + break; + case 37: #line 1 "NONE" { toknz->te = ( toknz->p)+1;} break; - case 36: -#line 452 "lib/eolian/eo_lexer.rl" + case 38: +#line 463 "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 +3253,34 @@ _eof_trans: INF(" %s", toknz->tmp.accessor->comment); }} break; - case 37: -#line 386 "lib/eolian/eo_lexer.rl" + case 39: +#line 397 "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 38: -#line 515 "lib/eolian/eo_lexer.rl" + case 40: +#line 526 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;} break; - case 39: -#line 516 "lib/eolian/eo_lexer.rl" + case 41: +#line 527 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;} break; - case 40: -#line 481 "lib/eolian/eo_lexer.rl" + case 42: +#line 492 "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 = 315; goto _again;} + { toknz->cs = 325; goto _again;} }} break; - case 41: -#line 395 "lib/eolian/eo_lexer.rl" + case 43: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3224,27 +3298,27 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 42: -#line 511 "lib/eolian/eo_lexer.rl" + case 44: +#line 522 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 43: -#line 514 "lib/eolian/eo_lexer.rl" + case 45: +#line 525 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 44: -#line 481 "lib/eolian/eo_lexer.rl" + case 46: +#line 492 "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 = 315; goto _again;} + { toknz->cs = 325; goto _again;} }} break; - case 45: -#line 395 "lib/eolian/eo_lexer.rl" + case 47: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3262,12 +3336,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 46: -#line 514 "lib/eolian/eo_lexer.rl" + case 48: +#line 525 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}} break; - case 47: -#line 395 "lib/eolian/eo_lexer.rl" + case 49: +#line 406 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3285,29 +3359,29 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 48: -#line 386 "lib/eolian/eo_lexer.rl" + case 50: +#line 397 "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 49: -#line 540 "lib/eolian/eo_lexer.rl" + case 51: +#line 551 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" }"); toknz->tmp.param = NULL; toknz->current_nesting--; if (toknz->tmp.prop) - { toknz->cs = 315; goto _again;} + { toknz->cs = 325; goto _again;} else if (toknz->tmp.meth) - { toknz->cs = 329; goto _again;} + { toknz->cs = 339; goto _again;} else ABORT(toknz, "leaving tokenize_params but there is no property nor method pending"); }} break; - case 50: -#line 395 "lib/eolian/eo_lexer.rl" + case 52: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3325,30 +3399,30 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 51: -#line 556 "lib/eolian/eo_lexer.rl" + case 53: +#line 567 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 52: -#line 558 "lib/eolian/eo_lexer.rl" + case 54: +#line 569 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 53: -#line 540 "lib/eolian/eo_lexer.rl" + case 55: +#line 551 "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 = 315; goto _again;} + { toknz->cs = 325; goto _again;} else if (toknz->tmp.meth) - { toknz->cs = 329; goto _again;} + { toknz->cs = 339; goto _again;} else ABORT(toknz, "leaving tokenize_params but there is no property nor method pending"); }} break; - case 54: -#line 395 "lib/eolian/eo_lexer.rl" + case 56: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3366,12 +3440,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 55: -#line 558 "lib/eolian/eo_lexer.rl" + case 57: +#line 569 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}} break; - case 56: -#line 395 "lib/eolian/eo_lexer.rl" + case 58: +#line 406 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3389,51 +3463,51 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 57: -#line 386 "lib/eolian/eo_lexer.rl" + case 59: +#line 397 "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 58: -#line 565 "lib/eolian/eo_lexer.rl" + case 60: +#line 576 "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 = 299; goto _again;} + { toknz->cs = 309; goto _again;} }} break; - case 59: -#line 572 "lib/eolian/eo_lexer.rl" + case 61: +#line 583 "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 = 299; goto _again;} + { toknz->cs = 309; goto _again;} }} break; - case 60: -#line 579 "lib/eolian/eo_lexer.rl" + case 62: +#line 590 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" keys {"); toknz->current_nesting++; toknz->tmp.params = &(toknz->tmp.prop->keys); - { toknz->cs = 308; goto _again;} + { toknz->cs = 318; goto _again;} }} break; - case 61: -#line 586 "lib/eolian/eo_lexer.rl" + case 63: +#line 597 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" values {"); toknz->current_nesting++; toknz->tmp.params = &(toknz->tmp.prop->values); - { toknz->cs = 308; goto _again;} + { toknz->cs = 318; goto _again;} }} break; - case 62: -#line 593 "lib/eolian/eo_lexer.rl" + case 64: +#line 604 "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->accessors) == 0) @@ -3443,11 +3517,11 @@ _eof_trans: toknz->tmp.prop = NULL; toknz->tmp.fscope = FUNC_PUBLIC; toknz->current_nesting--; - { toknz->cs = 323; goto _again;} + { toknz->cs = 333; goto _again;} }} break; - case 63: -#line 395 "lib/eolian/eo_lexer.rl" + case 65: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3465,12 +3539,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 64: -#line 611 "lib/eolian/eo_lexer.rl" + case 66: +#line 622 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 65: -#line 593 "lib/eolian/eo_lexer.rl" + case 67: +#line 604 "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->accessors) == 0) @@ -3480,11 +3554,11 @@ _eof_trans: toknz->tmp.prop = NULL; toknz->tmp.fscope = FUNC_PUBLIC; toknz->current_nesting--; - { toknz->cs = 323; goto _again;} + { toknz->cs = 333; goto _again;} }} break; - case 66: -#line 395 "lib/eolian/eo_lexer.rl" + case 68: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3502,8 +3576,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 67: -#line 395 "lib/eolian/eo_lexer.rl" + case 69: +#line 406 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3521,32 +3595,32 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 68: -#line 386 "lib/eolian/eo_lexer.rl" + case 70: +#line 397 "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 69: -#line 623 "lib/eolian/eo_lexer.rl" + case 71: +#line 634 "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 = 315; goto _again;} + { toknz->cs = 325; goto _again;} }} break; - case 70: -#line 640 "lib/eolian/eo_lexer.rl" + case 72: +#line 651 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" }"); toknz->current_nesting--; - { toknz->cs = 345; goto _again;} + { toknz->cs = 355; goto _again;} }} break; - case 71: -#line 395 "lib/eolian/eo_lexer.rl" + case 73: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3564,20 +3638,20 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 72: -#line 649 "lib/eolian/eo_lexer.rl" + case 74: +#line 660 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 73: -#line 640 "lib/eolian/eo_lexer.rl" + case 75: +#line 651 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ INF(" }"); toknz->current_nesting--; - { toknz->cs = 345; goto _again;} + { toknz->cs = 355; goto _again;} }} break; - case 74: -#line 395 "lib/eolian/eo_lexer.rl" + case 76: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3595,8 +3669,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 75: -#line 395 "lib/eolian/eo_lexer.rl" + case 77: +#line 406 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3614,8 +3688,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 76: -#line 658 "lib/eolian/eo_lexer.rl" + case 78: +#line 669 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); if (toknz->tmp.meth->comment != NULL) @@ -3624,33 +3698,33 @@ _eof_trans: INF(" %s", toknz->tmp.meth->comment); }} break; - case 77: -#line 386 "lib/eolian/eo_lexer.rl" + case 79: +#line 397 "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 78: -#line 666 "lib/eolian/eo_lexer.rl" + case 80: +#line 677 "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 = 308; goto _again;} + { toknz->cs = 318; goto _again;} }} break; - case 79: -#line 738 "lib/eolian/eo_lexer.rl" + case 81: +#line 749 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;} break; - case 80: -#line 739 "lib/eolian/eo_lexer.rl" + case 82: +#line 750 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;} break; - case 81: -#line 701 "lib/eolian/eo_lexer.rl" + case 83: +#line 712 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ Eina_List **l = NULL; if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); @@ -3670,11 +3744,11 @@ _eof_trans: toknz->tmp.meth = NULL; toknz->tmp.fscope = FUNC_PUBLIC; toknz->current_nesting--; - { toknz->cs = 339; goto _again;} + { toknz->cs = 349; goto _again;} }} break; - case 82: -#line 395 "lib/eolian/eo_lexer.rl" + case 84: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3692,16 +3766,16 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 83: -#line 733 "lib/eolian/eo_lexer.rl" + case 85: +#line 744 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 84: -#line 737 "lib/eolian/eo_lexer.rl" + case 86: +#line 748 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 85: -#line 701 "lib/eolian/eo_lexer.rl" + case 87: +#line 712 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ Eina_List **l = NULL; if (!toknz->tmp.meth) ABORT(toknz, "No method!!!"); @@ -3721,11 +3795,11 @@ _eof_trans: toknz->tmp.meth = NULL; toknz->tmp.fscope = FUNC_PUBLIC; toknz->current_nesting--; - { toknz->cs = 339; goto _again;} + { toknz->cs = 349; goto _again;} }} break; - case 86: -#line 395 "lib/eolian/eo_lexer.rl" + case 88: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3743,12 +3817,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 87: -#line 737 "lib/eolian/eo_lexer.rl" + case 89: +#line 748 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}} break; - case 88: -#line 395 "lib/eolian/eo_lexer.rl" + case 90: +#line 406 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3766,33 +3840,33 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 89: -#line 386 "lib/eolian/eo_lexer.rl" + case 91: +#line 397 "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 90: -#line 746 "lib/eolian/eo_lexer.rl" + case 92: +#line 757 "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 = 329; goto _again;} + { toknz->cs = 339; goto _again;} }} break; - case 91: -#line 763 "lib/eolian/eo_lexer.rl" + case 93: +#line 774 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" }"); toknz->current_methods_type = METH_TYPE_LAST; toknz->current_nesting--; - { toknz->cs = 345; goto _again;} + { toknz->cs = 355; goto _again;} }} break; - case 92: -#line 395 "lib/eolian/eo_lexer.rl" + case 94: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3810,21 +3884,21 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 93: -#line 773 "lib/eolian/eo_lexer.rl" + case 95: +#line 784 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 94: -#line 763 "lib/eolian/eo_lexer.rl" + case 96: +#line 774 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ INF(" }"); toknz->current_methods_type = METH_TYPE_LAST; toknz->current_nesting--; - { toknz->cs = 345; goto _again;} + { toknz->cs = 355; goto _again;} }} break; - case 95: -#line 395 "lib/eolian/eo_lexer.rl" + case 97: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3842,8 +3916,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 96: -#line 395 "lib/eolian/eo_lexer.rl" + case 98: +#line 406 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3861,8 +3935,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 97: -#line 782 "lib/eolian/eo_lexer.rl" + case 99: +#line 793 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!"); if (toknz->tmp.kls->comment != NULL) @@ -3870,65 +3944,65 @@ _eof_trans: toknz->tmp.kls->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-1); }} break; - case 98: -#line 386 "lib/eolian/eo_lexer.rl" + case 100: +#line 397 "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 99: -#line 800 "lib/eolian/eo_lexer.rl" + case 101: +#line 811 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ }} break; - case 100: -#line 803 "lib/eolian/eo_lexer.rl" + case 102: +#line 814 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ }} break; - case 101: -#line 806 "lib/eolian/eo_lexer.rl" + case 103: +#line 817 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" constructors {"); toknz->current_methods_type = METH_CONSTRUCTOR; toknz->tmp.fscope = FUNC_PUBLIC; toknz->current_nesting++; - { toknz->cs = 339; goto _again;} + { toknz->cs = 349; goto _again;} }} break; - case 102: -#line 814 "lib/eolian/eo_lexer.rl" + case 104: +#line 825 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" properties {"); toknz->tmp.fscope = FUNC_PUBLIC; toknz->current_nesting++; - { toknz->cs = 323; goto _again;} + { toknz->cs = 333; goto _again;} }} break; - case 103: -#line 821 "lib/eolian/eo_lexer.rl" + case 105: +#line 832 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ INF(" begin methods"); toknz->current_methods_type = METH_REGULAR; toknz->tmp.fscope = FUNC_PUBLIC; toknz->current_nesting++; - { toknz->cs = 339; goto _again;} + { toknz->cs = 349; goto _again;} }} break; - case 104: -#line 829 "lib/eolian/eo_lexer.rl" + case 106: +#line 840 "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 = 292; goto _again;} + { toknz->cs = 301; goto _again;} }} break; - case 105: -#line 395 "lib/eolian/eo_lexer.rl" + case 107: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -3946,45 +4020,45 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 106: -#line 910 "lib/eolian/eo_lexer.rl" + case 108: +#line 921 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 107: -#line 913 "lib/eolian/eo_lexer.rl" + case 109: +#line 924 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 108: -#line 914 "lib/eolian/eo_lexer.rl" + case 110: +#line 925 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 109: -#line 915 "lib/eolian/eo_lexer.rl" + case 111: +#line 926 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 110: -#line 800 "lib/eolian/eo_lexer.rl" + case 112: +#line 811 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ }} break; - case 111: -#line 803 "lib/eolian/eo_lexer.rl" + case 113: +#line 814 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ }} break; - case 112: -#line 829 "lib/eolian/eo_lexer.rl" + case 114: +#line 840 "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 = 292; goto _again;} + { toknz->cs = 301; goto _again;} }} break; - case 113: -#line 395 "lib/eolian/eo_lexer.rl" + case 115: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -4002,8 +4076,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 114: -#line 395 "lib/eolian/eo_lexer.rl" + case 116: +#line 406 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -4021,24 +4095,28 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 115: -#line 386 "lib/eolian/eo_lexer.rl" + case 117: +#line 397 "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 116: -#line 927 "lib/eolian/eo_lexer.rl" + case 118: +#line 938 "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 = 345; goto _again;} + { toknz->cs = 355; goto _again;} }} break; - case 117: -#line 395 "lib/eolian/eo_lexer.rl" + case 119: +#line 992 "lib/eolian/eo_lexer.rl" + { toknz->te = ( toknz->p)+1;} + break; + case 120: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p)+1;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -4056,12 +4134,12 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 118: -#line 962 "lib/eolian/eo_lexer.rl" + case 121: +#line 989 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;} break; - case 119: -#line 395 "lib/eolian/eo_lexer.rl" + case 122: +#line 406 "lib/eolian/eo_lexer.rl" { toknz->te = ( toknz->p);( toknz->p)--;{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -4079,8 +4157,8 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; - case 120: -#line 395 "lib/eolian/eo_lexer.rl" + case 123: +#line 406 "lib/eolian/eo_lexer.rl" {{( toknz->p) = (( toknz->te))-1;}{ DBG("error[%d]", toknz->cs); char *s, *d; @@ -4098,7 +4176,7 @@ _eof_trans: {( toknz->p)++; goto _out; } /* necessary to stop scanners */ }} break; -#line 4102 "lib/eolian/eo_lexer.c" +#line 4180 "lib/eolian/eo_lexer.c" } } @@ -4107,11 +4185,11 @@ _again: _nacts = (unsigned int) *_acts++; while ( _nacts-- > 0 ) { switch ( *_acts++ ) { - case 33: + case 35: #line 1 "NONE" { toknz->ts = 0;} break; -#line 4115 "lib/eolian/eo_lexer.c" +#line 4193 "lib/eolian/eo_lexer.c" } } @@ -4129,12 +4207,12 @@ _again: _out: {} } -#line 1071 "lib/eolian/eo_lexer.rl" +#line 1099 "lib/eolian/eo_lexer.rl" if ( toknz->cs == -#line 4136 "lib/eolian/eo_lexer.c" +#line 4214 "lib/eolian/eo_lexer.c" -1 -#line 1072 "lib/eolian/eo_lexer.rl" +#line 1100 "lib/eolian/eo_lexer.rl" ) { ERR("%s: wrong termination", source); @@ -4161,6 +4239,7 @@ eo_tokenizer_get(void) toknz->saved.tok = NULL; toknz->saved.line = 0; toknz->classes = NULL; + toknz->typedefs = NULL; return toknz; } @@ -4369,6 +4448,7 @@ eo_tokenizer_database_fill(const char *filename) Eina_List *k, *l, *m; Eo_Class_Def *kls; + Eo_Type_Def *type_def; Eo_Property_Def *prop; Eo_Method_Def *meth; Eo_Param_Def *param; @@ -4597,6 +4677,11 @@ eo_tokenizer_database_fill(const char *filename) } + EINA_LIST_FOREACH(toknz->typedefs, k, type_def) + { + database_type_add(type_def->alias, _types_extract(type_def->type, strlen(type_def->type))); + } + ret = EINA_TRUE; end: if (buffer) free(buffer); @@ -4609,6 +4694,7 @@ void eo_tokenizer_free(Eo_Tokenizer *toknz) { Eo_Class_Def *kls; + Eo_Type_Def *type; if (toknz->source) eina_stringshare_del(toknz->source); @@ -4616,6 +4702,9 @@ eo_tokenizer_free(Eo_Tokenizer *toknz) EINA_LIST_FREE(toknz->classes, kls) eo_definitions_class_def_free(kls); + EINA_LIST_FREE(toknz->typedefs, type) + eo_definitions_type_def_free(type); + free(toknz); } diff --git a/src/lib/eolian/eo_lexer.h b/src/lib/eolian/eo_lexer.h index debd86e4ae..2e6bb116bf 100644 --- a/src/lib/eolian/eo_lexer.h +++ b/src/lib/eolian/eo_lexer.h @@ -34,10 +34,13 @@ typedef struct _eo_tokenizer } saved; Eina_List *classes; + Eina_List *typedefs; struct { Eina_List **params; Eolian_Class_Type kls_type; + const char *typedef_alias; Eo_Class_Def *kls; + Eo_Type_Def *type_def; Eo_Property_Def *prop; Eo_Method_Def *meth; Eo_Param_Def *param; diff --git a/src/lib/eolian/eo_lexer.rl b/src/lib/eolian/eo_lexer.rl index 9f16984cb1..81a124aed1 100644 --- a/src/lib/eolian/eo_lexer.rl +++ b/src/lib/eolian/eo_lexer.rl @@ -154,6 +154,17 @@ _eo_tokenizer_class_get(Eo_Tokenizer *toknz, char *p) return kls; } +static Eo_Type_Def* +_eo_tokenizer_type_get(Eo_Tokenizer *toknz, char *p) +{ + Eo_Type_Def *def = calloc(1, sizeof(Eo_Type_Def)); + if (def == NULL) ABORT(toknz, "calloc Eo_Type_Def failure"); + + def->type = _eo_tokenizer_token_get(toknz, p); + + return def; +} + static Eo_Property_Def* _eo_tokenizer_property_get(Eo_Tokenizer *toknz, char *p) { @@ -958,10 +969,27 @@ _eo_tokenizer_implement_get(Eo_Tokenizer *toknz, char *p) "abstract" %class_type_set_to_abstract | "interface" %class_type_set_to_interface) ws+ class_name ws* inherits? ignore* begin_def; + action end_typedef_alias { + toknz->tmp.typedef_alias = _eo_tokenizer_token_get(toknz, fpc); + } + + action end_typedef_type{ + if (toknz->tmp.typedef_alias == NULL) + ABORT(toknz, "No typedef"); + toknz->tmp.type_def = _eo_tokenizer_type_get(toknz, fpc); + toknz->tmp.type_def->alias = toknz->tmp.typedef_alias; + toknz->typedefs = eina_list_append(toknz->typedefs, toknz->tmp.type_def); + } + + typedef_type = ('@'|alpha+) >save_fpc (alnum_u | '*' | '@' | '<' | '>' | ws )+; + typedef_alias = ident %end_typedef_alias; + begin_typedef = "type" ws+ typedef_alias ws* colon ws* typedef_type %end_typedef_type end_statement; + main := |* ignore+; #=> show_ignore; comment => show_comment; begin_class => begin_class; + begin_typedef; any => show_error; *|; @@ -1095,6 +1123,7 @@ eo_tokenizer_get(void) toknz->saved.tok = NULL; toknz->saved.line = 0; toknz->classes = NULL; + toknz->typedefs = NULL; return toknz; } @@ -1303,6 +1332,7 @@ eo_tokenizer_database_fill(const char *filename) Eina_List *k, *l, *m; Eo_Class_Def *kls; + Eo_Type_Def *type_def; Eo_Property_Def *prop; Eo_Method_Def *meth; Eo_Param_Def *param; @@ -1531,6 +1561,11 @@ eo_tokenizer_database_fill(const char *filename) } + EINA_LIST_FOREACH(toknz->typedefs, k, type_def) + { + database_type_add(type_def->alias, _types_extract(type_def->type, strlen(type_def->type))); + } + ret = EINA_TRUE; end: if (buffer) free(buffer); @@ -1543,6 +1578,7 @@ void eo_tokenizer_free(Eo_Tokenizer *toknz) { Eo_Class_Def *kls; + Eo_Type_Def *type; if (toknz->source) eina_stringshare_del(toknz->source); @@ -1550,6 +1586,9 @@ eo_tokenizer_free(Eo_Tokenizer *toknz) EINA_LIST_FREE(toknz->classes, kls) eo_definitions_class_def_free(kls); + EINA_LIST_FREE(toknz->typedefs, type) + eo_definitions_type_def_free(type); + free(toknz); } diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c index 9bd7c612e0..789d6b416b 100644 --- a/src/lib/eolian/eolian_database.c +++ b/src/lib/eolian/eolian_database.c @@ -15,6 +15,7 @@ #define EOLIAN_PROP_SET_RETURN_COMMENT "property_set_return_comment" static Eina_Hash *_classes = NULL; +static Eina_Hash *_types = NULL; static Eina_Hash *_filenames = NULL; /* Hash: filename without extension -> full path */ static int _database_init_count = 0; @@ -39,6 +40,12 @@ typedef struct typedef struct { + Eina_Stringshare *alias; + Eolian_Type type; +} Type_Desc; + +typedef struct +{ Eina_Stringshare *name; Eina_List *keys; /* list of _Parameter_Desc */ Eina_List *params; /* list of _Parameter_Desc */ @@ -171,12 +178,20 @@ _class_del(Class_desc *class) free(class); } -void _hash_free_cb(void *data) +static void _class_hash_free_cb(void *data) { Class_desc *cl = data; _class_del(cl); } +static void _type_hash_free_cb(void *data) +{ + Type_Desc *type = data; + eina_stringshare_del(type->alias); + database_type_del(type->type); + free(type); +} + static Class_desc * _class_get(const char *class_name) { @@ -192,7 +207,8 @@ database_init() { if (_database_init_count > 0) return ++_database_init_count; eina_init(); - _classes = eina_hash_stringshared_new(_hash_free_cb); + _classes = eina_hash_stringshared_new(_class_hash_free_cb); + _types = eina_hash_stringshared_new(_type_hash_free_cb); _filenames = eina_hash_string_small_new(free); return ++_database_init_count; } @@ -210,6 +226,7 @@ database_shutdown() if (_database_init_count == 0) { eina_hash_free(_classes); + eina_hash_free(_types); eina_hash_free(_filenames); eina_shutdown(); } @@ -217,6 +234,30 @@ database_shutdown() } Eina_Bool +database_type_add(const char *alias, Eolian_Type type) +{ + if (_types) + { + Type_Desc *desc = calloc(1, sizeof(*desc)); + desc->alias = eina_stringshare_add(alias); + desc->type = type; + eina_hash_set(_types, desc->alias, desc); + return EINA_TRUE; + } + return EINA_FALSE; +} + +EAPI Eolian_Type +eolian_type_find_by_alias(const char *alias) +{ + if (!_types) return NULL; + Eina_Stringshare *shr = eina_stringshare_add(alias); + Type_Desc *cl = eina_hash_find(_types, shr); + eina_stringshare_del(shr); + return cl->type; +} + +Eina_Bool database_class_add(const char *class_name, Eolian_Class_Type type) { if (_classes) diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h index cac78d2c6b..113d0de9c5 100644 --- a/src/lib/eolian/eolian_database.h +++ b/src/lib/eolian/eolian_database.h @@ -33,6 +33,9 @@ extern int _eolian_log_dom; int database_init(); int database_shutdown(); +/* Add a type in the database */ +Eina_Bool database_type_add(const char *alias, Eolian_Type type); + /* Add a class in the database */ Eina_Bool database_class_add(const char *class_name, Eolian_Class_Type type); diff --git a/src/tests/eolian/data/typedef.eo b/src/tests/eolian/data/typedef.eo new file mode 100644 index 0000000000..e2dfbf4474 --- /dev/null +++ b/src/tests/eolian/data/typedef.eo @@ -0,0 +1,13 @@ +type Evas_Coord: int; /* Simple type definition */ +type List_Objects: @own Eina_List * < Eo *>; /* A little more complex */ + +class Dummy { + methods { + foo { + params { + int idx; + } + return @own char *; /*@ comment for method return */ + } + } +} diff --git a/src/tests/eolian/eolian_suite.c b/src/tests/eolian/eolian_suite.c index e110fc5f87..648bd07453 100644 --- a/src/tests/eolian/eolian_suite.c +++ b/src/tests/eolian/eolian_suite.c @@ -52,6 +52,38 @@ START_TEST(eolian_ctor_dtor) } END_TEST +START_TEST(eolian_typedef) +{ + Eolian_Type types_list = NULL; + const char *type_name = NULL; + Eina_Bool own = EINA_FALSE; + + eolian_init(); + /* Parsing */ + fail_if(!eolian_eo_file_parse(PACKAGE_DATA_DIR"/data/typedef.eo")); + + /* Check that the class Dummy is still readable */ + fail_if(!eolian_class_function_find_by_name("Dummy", "foo", EOLIAN_METHOD)); + + /* Basic type */ + fail_if(!(types_list = eolian_type_find_by_alias("Evas_Coord"))); + fail_if(eolian_type_information_get(types_list, &type_name, &own)); + fail_if(strcmp(type_name, "int")); + fail_if(own != EINA_FALSE); + + /* Complex type */ + fail_if(!(types_list = eolian_type_find_by_alias("List_Objects"))); + fail_if(!(types_list = eolian_type_information_get(types_list, &type_name, &own))); + fail_if(strcmp(type_name, "Eina_List *")); + fail_if(own != EINA_TRUE); + fail_if(eolian_type_information_get(types_list, &type_name, &own)); + fail_if(strcmp(type_name, "Eo *")); + fail_if(own != EINA_FALSE); + + eolian_shutdown(); +} +END_TEST + START_TEST(eolian_complex_type) { Eolian_Function fid = NULL; @@ -251,6 +283,7 @@ static void eolian_parsing_test(TCase *tc) tcase_add_test(tc, eolian_ctor_dtor); tcase_add_test(tc, eolian_scope); tcase_add_test(tc, eolian_complex_type); + tcase_add_test(tc, eolian_typedef); } static const Eolian_Test_Case etc[] = { |