Eolian/Lexer: support of class types.
authorDaniel Zaoui <daniel.zaoui@samsung.com>
Mon, 17 Feb 2014 12:05:52 +0000 (14:05 +0200)
committerDaniel Zaoui <daniel.zaoui@samsung.com>
Mon, 3 Mar 2014 12:09:55 +0000 (14:09 +0200)
Now, .eo format has to supply the class type class, abstract, mixin or
interface.

Example: class Elm_Button {...

src/lib/eolian/Eolian.h
src/lib/eolian/eo_definitions.h
src/lib/eolian/eo_lexer.c
src/lib/eolian/eo_lexer.h
src/lib/eolian/eo_lexer.rl

index e0566ec..43d1d8d 100644 (file)
@@ -83,7 +83,7 @@ typedef enum
 {
    EOLIAN_CLASS_UNKNOWN_TYPE,
    EOLIAN_CLASS_REGULAR,
-   EOLIAN_CLASS_REGULAR_NON_INSTANT,
+   EOLIAN_CLASS_ABSTRACT,
    EOLIAN_CLASS_MIXIN,
    EOLIAN_CLASS_INTERFACE
 } Eolian_Class_Type;
index 892d8cb..9a38c78 100644 (file)
@@ -2,6 +2,7 @@
 #define __EO_DEFINITIONS_H__
 
 #include <Eina.h>
+#include <Eolian.h>
 
 /* RET */
 
@@ -134,7 +135,7 @@ typedef struct _eo_implement_def
 typedef struct _eo_class_def
 {
    const char *name;
-   const char *type; /* Regular, RegularNonInstantiable, Mixin and Interface */
+   Eolian_Class_Type type;
    const char *comment;
    const char *legacy_prefix;
    Eina_List *inherits;
index 1f9e0c4..4c49b67 100644 (file)
@@ -295,7 +295,7 @@ _eo_tokenizer_implement_get(Eo_Tokenizer *toknz, char *p)
 
 
 #line 298 "eo_lexer.c"
-static const char _eo_tokenizer_actions[] = {
+static const unsigned char _eo_tokenizer_actions[] = {
        0, 1, 0, 1, 2, 1, 6, 1, 
        10, 1, 15, 1, 16, 1, 17, 1, 
        18, 1, 19, 1, 20, 1, 21, 1, 
@@ -303,7 +303,7 @@ static const char _eo_tokenizer_actions[] = {
        26, 1, 27, 1, 28, 1, 29, 1, 
        30, 1, 31, 1, 32, 1, 33, 1, 
        34, 1, 35, 1, 36, 1, 37, 1, 
-       38, 1, 41, 1, 42, 1, 43, 1, 
+       38, 1, 39, 1, 40, 1, 41, 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, 
@@ -312,8 +312,8 @@ static const char _eo_tokenizer_actions[] = {
        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, 
+       76, 1, 77, 1, 78, 1, 79, 1, 
+       80, 1, 81, 1, 84, 1, 85, 1, 
        86, 1, 87, 1, 88, 1, 89, 1, 
        90, 1, 91, 1, 92, 1, 93, 1, 
        94, 1, 95, 1, 96, 1, 97, 1, 
@@ -323,91 +323,88 @@ static const char _eo_tokenizer_actions[] = {
        110, 1, 111, 1, 112, 1, 113, 1, 
        114, 1, 115, 1, 116, 1, 117, 1, 
        118, 1, 119, 1, 120, 1, 121, 1, 
-       122, 1, 123, 1, 124, 1, 125, 2
-       0, 38, 2, 0, 49, 2, 0, 58
-       2, 0, 68, 2, 0, 77, 2, 0, 
-       89, 2, 0, 98, 2, 0, 120, 2, 
-       4, 44, 2, 5, 39, 2, 6, 2
-       2, 7, 40, 2, 8, 53, 2, 10
-       0, 2, 10, 69, 2, 12, 84, 2, 
-       13, 79, 2, 14, 80, 2, 15, 0
-       2, 15, 90, 2, 16, 0, 2, 17
-       0, 2, 18, 0, 2, 18, 2, 2, 
-       19, 0, 2, 21, 0, 2, 22, 0, 
-       2, 22, 113, 2, 23, 0, 2, 23
-       114, 2, 24, 0, 2, 25, 0, 2, 
-       25, 2, 2, 26, 0, 2, 28, 0
-       2, 29, 0, 2, 29, 2, 2, 32
-       0, 2, 32, 121, 2, 33, 0, 2, 
-       33, 121, 2, 36, 1, 2, 36, 2, 
-       2, 36, 3, 2, 36, 9, 2, 36
-       11, 2, 36, 19, 2, 36, 21
+       122, 1, 123, 1, 124, 1, 125, 1
+       126, 1, 127, 1, 128, 2, 0, 41
+       2, 0, 52, 2, 0, 61, 2, 0, 
+       71, 2, 0, 80, 2, 0, 92, 2, 
+       0, 101, 2, 0, 123, 2, 4, 47
+       2, 5, 42, 2, 6, 2, 2, 7
+       43, 2, 8, 56, 2, 10, 0, 2, 
+       10, 72, 2, 12, 87, 2, 13, 82
+       2, 14, 83, 2, 15, 0, 2, 15
+       93, 2, 16, 0, 2, 17, 0, 2, 
+       18, 0, 2, 18, 2, 2, 19, 0, 
+       2, 21, 0, 2, 22, 0, 2, 22
+       116, 2, 23, 0, 2, 23, 117, 2, 
+       24, 0, 2, 25, 0, 2, 25, 2
+       2, 26, 0, 2, 28, 0, 2, 29
+       0, 2, 29, 2, 2, 36, 0, 2, 
+       36, 124, 2, 39, 1, 2, 39, 2, 
+       2, 39, 3, 2, 39, 9, 2, 39
+       11, 2, 39, 19, 2, 39, 21
 };
 
 static const short _eo_tokenizer_key_offsets[] = {
-       0, 2, 5, 6, 20, 24, 32, 33, 
-       36, 42, 43, 44, 45, 46, 47, 48, 
-       49, 50, 54, 55, 56, 57, 58, 59, 
-       60, 61, 62, 63, 64, 69, 70, 71, 
-       72, 73, 74, 75, 76, 77, 78, 79, 
-       80, 81, 82, 85, 87, 90, 101, 103, 
-       106, 107, 118, 122, 129, 136, 148, 160, 
-       172, 184, 196, 207, 215, 222, 230, 242, 
-       254, 266, 278, 289, 297, 308, 320, 324, 
-       325, 326, 336, 338, 341, 343, 346, 347, 
-       359, 363, 364, 365, 375, 377, 380, 382, 
-       385, 386, 387, 391, 392, 393, 394, 395, 
-       399, 400, 404, 406, 409, 410, 421, 425, 
-       428, 430, 433, 444, 446, 449, 450, 451, 
-       452, 453, 454, 457, 464, 471, 479, 480, 
-       481, 482, 483, 487, 491, 492, 493, 494, 
-       495, 496, 497, 498, 499, 500, 504, 505, 
-       506, 507, 508, 511, 518, 529, 541, 545, 
-       546, 547, 557, 559, 562, 564, 567, 568, 
-       579, 583, 586, 588, 591, 602, 604, 607, 
-       608, 609, 610, 611, 612, 613, 614, 615, 
-       616, 617, 622, 626, 627, 628, 638, 640, 
-       643, 647, 648, 649, 650, 651, 652, 653, 
-       654, 655, 660, 664, 665, 666, 676, 678, 
-       681, 685, 686, 687, 688, 689, 693, 701, 
-       709, 721, 725, 737, 738, 739, 749, 751, 
-       754, 762, 763, 764, 765, 766, 767, 768, 
-       769, 770, 774, 782, 790, 803, 808, 812, 
-       813, 814, 815, 816, 817, 829, 834, 838, 
-       847, 851, 852, 853, 854, 855, 856, 860, 
-       869, 876, 883, 894, 898, 912, 922, 929, 
-       941, 946, 952, 957, 958, 959, 960, 961, 
-       962, 965, 972, 979, 987, 988, 992, 999, 
-       1007, 1011, 1016, 1017, 1018, 1028, 1030, 1033, 
-       1043, 1055, 1062, 1074, 1075, 1076, 1077, 1078, 
-       1079, 1080, 1081, 1085, 1093, 1100, 1112, 1117, 
-       1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 
-       1132, 1133, 1134, 1135, 1139, 1146, 1153, 1161, 
-       1162, 1163, 1164, 1165, 1166, 1170, 1171, 1172, 
-       1173, 1174, 1175, 1176, 1177, 1178, 1182, 1190, 
-       1193, 1195, 1202, 1213, 1216, 1218, 1225, 1233, 
-       1241, 1245, 1245, 1246, 1255, 1258, 1260, 1271, 
-       1275, 1275, 1276, 1284, 1287, 1289, 1290, 1291, 
-       1292, 1293, 1302, 1305, 1307, 1314, 1315, 1324, 
-       1327, 1329, 1330, 1331, 1332, 1333, 1337, 1337, 
-       1338, 1347, 1350, 1352, 1359, 1360, 1372, 1375, 
-       1377, 1378, 1385, 1388, 1391, 1392, 1399, 1402, 
-       1405, 1406, 1407, 1409, 1410, 1411, 1412, 1415, 
-       1416, 1417
+       0, 2, 5, 6, 7, 8, 9, 10, 
+       11, 12, 15, 22, 29, 40, 44, 45, 
+       46, 47, 50, 51, 52, 53, 54, 55, 
+       56, 57, 60, 61, 62, 63, 66, 69, 
+       71, 74, 85, 87, 90, 91, 102, 106, 
+       113, 120, 132, 144, 156, 168, 180, 191, 
+       199, 206, 214, 226, 238, 250, 262, 273, 
+       281, 292, 304, 308, 309, 310, 320, 322, 
+       325, 327, 330, 331, 343, 347, 348, 349, 
+       359, 361, 364, 366, 369, 370, 371, 375, 
+       376, 377, 378, 379, 383, 384, 388, 390, 
+       393, 394, 405, 409, 412, 414, 417, 428, 
+       430, 433, 434, 435, 436, 437, 438, 441, 
+       448, 455, 463, 464, 465, 466, 467, 471, 
+       475, 476, 477, 478, 479, 480, 481, 482, 
+       483, 484, 488, 489, 490, 491, 492, 495, 
+       502, 513, 525, 529, 530, 531, 541, 543, 
+       546, 548, 551, 552, 563, 567, 570, 572, 
+       575, 586, 588, 591, 592, 593, 594, 595, 
+       596, 597, 598, 599, 600, 601, 606, 610, 
+       611, 612, 622, 624, 627, 631, 632, 633, 
+       634, 635, 636, 637, 638, 639, 644, 648, 
+       649, 650, 660, 662, 665, 669, 670, 671, 
+       672, 673, 677, 685, 693, 705, 709, 721, 
+       722, 723, 733, 735, 738, 746, 747, 748, 
+       749, 750, 751, 752, 753, 754, 758, 766, 
+       774, 787, 792, 796, 797, 798, 799, 800, 
+       801, 813, 818, 822, 831, 835, 836, 837, 
+       838, 839, 840, 844, 853, 860, 867, 878, 
+       882, 896, 906, 913, 925, 930, 936, 941, 
+       942, 943, 944, 945, 946, 949, 956, 963, 
+       971, 972, 976, 983, 991, 995, 1000, 1001, 
+       1002, 1012, 1014, 1017, 1027, 1039, 1046, 1058, 
+       1059, 1060, 1061, 1062, 1063, 1064, 1065, 1069, 
+       1077, 1084, 1096, 1101, 1108, 1109, 1110, 1111, 
+       1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 
+       1123, 1130, 1137, 1145, 1146, 1147, 1148, 1149, 
+       1150, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 
+       1161, 1162, 1166, 1174, 1177, 1179, 1180, 1181, 
+       1182, 1183, 1194, 1197, 1199, 1206, 1214, 1222, 
+       1226, 1226, 1227, 1236, 1239, 1241, 1252, 1256, 
+       1256, 1257, 1265, 1268, 1270, 1271, 1272, 1273, 
+       1274, 1283, 1286, 1288, 1295, 1296, 1305, 1308, 
+       1310, 1311, 1312, 1313, 1314, 1318, 1318, 1319, 
+       1328, 1331, 1333, 1340, 1341, 1353, 1356, 1358, 
+       1359, 1366, 1369, 1372, 1373, 1380, 1383, 1386, 
+       1387, 1388, 1390, 1391, 1392, 1393, 1396, 1397, 
+       1398
 };
 
 static const char _eo_tokenizer_trans_keys[] = {
-       10, 42, 10, 42, 47, 10, 9, 10, 
-       13, 32, 95, 123, 0, 31, 48, 57, 
-       65, 90, 97, 122, 10, 123, 0, 32, 
-       9, 10, 13, 32, 97, 123, 0, 31, 
-       115, 9, 13, 32, 9, 13, 32, 73, 
-       77, 82, 110, 116, 101, 114, 102, 97, 
-       99, 101, 10, 123, 0, 32, 105, 120, 
-       105, 110, 101, 103, 117, 108, 97, 114, 
-       10, 78, 123, 0, 32, 111, 110, 73, 
-       110, 115, 116, 97, 110, 116, 105, 97, 
-       98, 108, 10, 42, 64, 10, 42, 10, 
+       10, 42, 10, 42, 47, 10, 115, 116, 
+       114, 97, 99, 116, 9, 13, 32, 9, 
+       13, 32, 65, 90, 97, 122, 95, 48, 
+       57, 65, 90, 97, 122, 10, 95, 123, 
+       0, 32, 48, 57, 65, 90, 97, 122, 
+       10, 123, 0, 32, 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, 65, 90, 97, 122, 10, 42, 10, 
        42, 47, 10, 9, 13, 32, 58, 95, 
@@ -545,545 +542,536 @@ static const char _eo_tokenizer_trans_keys[] = {
        122, 116, 104, 111, 100, 115, 10, 123, 
        0, 32, 111, 112, 101, 114, 116, 105, 
        101, 115, 10, 123, 0, 32, 10, 47, 
-       0, 32, 65, 90, 97, 122, 10, 0, 
-       32, 42, 47, 95, 48, 57, 65, 90, 
-       97, 122, 10, 47, 108, 114, 125, 0, 
-       32, 65, 90, 97, 122, 10, 0, 32, 
-       42, 47, 95, 48, 57, 65, 90, 97, 
-       122, 95, 101, 48, 57, 65, 90, 97, 
-       122, 95, 101, 48, 57, 65, 90, 97, 
-       122, 9, 13, 32, 47, 59, 10, 47, 
-       125, 0, 32, 65, 90, 97, 122, 10, 
-       0, 32, 42, 47, 9, 13, 32, 42, 
-       95, 48, 57, 65, 90, 97, 122, 9, 
-       13, 32, 47, 59, 10, 47, 103, 112, 
-       115, 125, 0, 32, 10, 0, 32, 42, 
-       47, 101, 97, 101, 59, 10, 47, 125, 
-       0, 32, 65, 90, 97, 122, 10, 0, 
-       32, 42, 47, 95, 48, 57, 65, 90, 
-       97, 122, 59, 10, 47, 108, 111, 112, 
-       114, 125, 0, 32, 10, 0, 32, 42, 
-       47, 101, 98, 97, 101, 9, 13, 32, 
-       47, 59, 10, 47, 125, 0, 32, 65, 
+       97, 99, 105, 109, 0, 32, 10, 0, 
+       32, 42, 47, 98, 108, 110, 105, 10, 
+       47, 108, 114, 125, 0, 32, 65, 90, 
+       97, 122, 10, 0, 32, 42, 47, 95, 
+       48, 57, 65, 90, 97, 122, 95, 101, 
+       48, 57, 65, 90, 97, 122, 95, 101, 
+       48, 57, 65, 90, 97, 122, 9, 13, 
+       32, 47, 59, 10, 47, 125, 0, 32, 
+       65, 90, 97, 122, 10, 0, 32, 42, 
+       47, 9, 13, 32, 42, 95, 48, 57, 
+       65, 90, 97, 122, 9, 13, 32, 47, 
+       59, 10, 47, 103, 112, 115, 125, 0, 
+       32, 10, 0, 32, 42, 47, 101, 97, 
+       101, 59, 10, 47, 125, 0, 32, 65, 
        90, 97, 122, 10, 0, 32, 42, 47, 
        95, 48, 57, 65, 90, 97, 122, 59, 
-       10, 47, 99, 100, 101, 105, 108, 109, 
-       112, 125, 0, 32, 10, 0, 32, 42, 
-       47, 111, 9, 10, 13, 32, 47, 0, 
-       31, 10, 0, 32, 10, 0, 32, 101, 
-       9, 10, 13, 32, 47, 0, 31, 10, 
-       0, 32, 10, 0, 32, 118, 59, 109, 
-       110, 59, 59, 101, 10, 0, 32, 101, 
-       114, 59, 0
+       10, 47, 108, 111, 112, 114, 125, 0, 
+       32, 10, 0, 32, 42, 47, 101, 98, 
+       97, 101, 9, 13, 32, 47, 59, 10, 
+       47, 125, 0, 32, 65, 90, 97, 122, 
+       10, 0, 32, 42, 47, 95, 48, 57, 
+       65, 90, 97, 122, 59, 10, 47, 99, 
+       100, 101, 105, 108, 109, 112, 125, 0, 
+       32, 10, 0, 32, 42, 47, 111, 9, 
+       10, 13, 32, 47, 0, 31, 10, 0, 
+       32, 10, 0, 32, 101, 9, 10, 13, 
+       32, 47, 0, 31, 10, 0, 32, 10, 
+       0, 32, 118, 59, 109, 110, 59, 59, 
+       101, 10, 0, 32, 101, 114, 59, 0
 };
 
 static const char _eo_tokenizer_single_lengths[] = {
-       2, 3, 1, 6, 2, 6, 1, 3, 
-       6, 1, 1, 1, 1, 1, 1, 1, 
-       1, 2, 1, 1, 1, 1, 1, 1, 
-       1, 1, 1, 1, 3, 1, 1, 1, 
-       1, 1, 1, 1, 1, 1, 1, 1, 
-       1, 1, 3, 2, 3, 3, 2, 3, 
-       1, 5, 4, 3, 3, 6, 6, 6, 
-       6, 6, 5, 4, 1, 2, 6, 6, 
-       6, 6, 5, 4, 5, 6, 4, 1, 
-       1, 2, 2, 3, 2, 3, 1, 6, 
-       4, 1, 1, 2, 2, 3, 2, 3, 
-       1, 1, 2, 1, 1, 1, 1, 2, 
-       1, 2, 2, 3, 1, 3, 2, 3, 
-       2, 3, 3, 2, 3, 1, 1, 1, 
-       1, 1, 3, 3, 1, 2, 1, 1, 
-       1, 1, 4, 4, 1, 1, 1, 1, 
-       1, 1, 1, 1, 1, 2, 1, 1, 
-       1, 1, 3, 3, 5, 6, 4, 1, 
-       1, 2, 2, 3, 2, 3, 1, 3, 
-       2, 3, 2, 3, 3, 2, 3, 1, 
+       2, 3, 1, 1, 1, 1, 1, 1, 
+       1, 3, 3, 1, 3, 2, 1, 1, 
+       1, 3, 1, 1, 1, 1, 1, 1, 
+       1, 3, 1, 1, 1, 3, 3, 2, 
+       3, 3, 2, 3, 1, 5, 4, 3, 
+       3, 6, 6, 6, 6, 6, 5, 4, 
+       1, 2, 6, 6, 6, 6, 5, 4, 
+       5, 6, 4, 1, 1, 2, 2, 3, 
+       2, 3, 1, 6, 4, 1, 1, 2, 
+       2, 3, 2, 3, 1, 1, 2, 1, 
+       1, 1, 1, 2, 1, 2, 2, 3, 
+       1, 3, 2, 3, 2, 3, 3, 2, 
+       3, 1, 1, 1, 1, 1, 3, 3, 
+       1, 2, 1, 1, 1, 1, 4, 4, 
        1, 1, 1, 1, 1, 1, 1, 1, 
-       1, 3, 2, 1, 1, 2, 2, 3, 
-       2, 1, 1, 1, 1, 1, 1, 1, 
-       1, 3, 2, 1, 1, 2, 2, 3, 
-       2, 1, 1, 1, 1, 2, 2, 2, 
-       4, 2, 6, 1, 1, 2, 2, 3, 
-       2, 1, 1, 1, 1, 1, 1, 1, 
-       1, 2, 2, 2, 5, 3, 2, 1, 
-       1, 1, 1, 1, 6, 3, 2, 3, 
-       2, 1, 1, 1, 1, 1, 2, 3, 
-       3, 1, 3, 2, 8, 4, 1, 6, 
-       5, 4, 3, 1, 1, 1, 1, 1, 
-       3, 3, 1, 2, 1, 0, 1, 2, 
-       2, 3, 1, 1, 2, 2, 3, 4, 
-       6, 1, 4, 1, 1, 1, 1, 1, 
-       1, 1, 2, 2, 1, 4, 3, 1, 
-       1, 1, 1, 1, 1, 1, 1, 1, 
-       1, 1, 1, 2, 1, 1, 2, 1, 
-       1, 1, 1, 1, 2, 1, 1, 1, 
-       1, 1, 1, 1, 1, 2, 2, 1, 
-       2, 1, 5, 1, 2, 1, 2, 2, 
-       4, 0, 1, 3, 1, 2, 5, 4, 
-       0, 1, 6, 1, 2, 1, 1, 1, 
-       1, 3, 1, 2, 1, 1, 7, 1, 
-       2, 1, 1, 1, 1, 4, 0, 1, 
-       3, 1, 2, 1, 1, 10, 1, 2, 
-       1, 5, 1, 1, 1, 5, 1, 1, 
+       1, 2, 1, 1, 1, 1, 3, 3, 
+       5, 6, 4, 1, 1, 2, 2, 3, 
+       2, 3, 1, 3, 2, 3, 2, 3, 
+       3, 2, 3, 1, 1, 1, 1, 1, 
+       1, 1, 1, 1, 1, 3, 2, 1, 
+       1, 2, 2, 3, 2, 1, 1, 1, 
+       1, 1, 1, 1, 1, 3, 2, 1, 
+       1, 2, 2, 3, 2, 1, 1, 1, 
+       1, 2, 2, 2, 4, 2, 6, 1, 
+       1, 2, 2, 3, 2, 1, 1, 1, 
+       1, 1, 1, 1, 1, 2, 2, 2, 
+       5, 3, 2, 1, 1, 1, 1, 1, 
+       6, 3, 2, 3, 2, 1, 1, 1, 
+       1, 1, 2, 3, 3, 1, 3, 2, 
+       8, 4, 1, 6, 5, 4, 3, 1, 
+       1, 1, 1, 1, 3, 3, 1, 2, 
+       1, 0, 1, 2, 2, 3, 1, 1, 
+       2, 2, 3, 4, 6, 1, 4, 1, 
+       1, 1, 1, 1, 1, 1, 2, 2, 
+       1, 4, 3, 1, 1, 1, 1, 1, 
+       1, 1, 1, 1, 1, 1, 1, 2, 
        1, 1, 2, 1, 1, 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, 1, 2, 2, 4, 
+       0, 1, 3, 1, 2, 5, 4, 0, 
+       1, 6, 1, 2, 1, 1, 1, 1, 
+       3, 1, 2, 1, 1, 7, 1, 2, 
+       1, 1, 1, 1, 4, 0, 1, 3, 
+       1, 2, 1, 1, 10, 1, 2, 1, 
+       5, 1, 1, 1, 5, 1, 1, 1, 
+       1, 2, 1, 1, 1, 1, 1, 1, 
+       1
 };
 
 static const char _eo_tokenizer_range_lengths[] = {
-       0, 0, 0, 4, 1, 1, 0, 0, 
-       0, 0, 0, 0, 0, 0, 0, 0, 
-       0, 1, 0, 0, 0, 0, 0, 0, 
-       0, 0, 0, 0, 1, 0, 0, 0, 
-       0, 0, 0, 0, 0, 0, 0, 0, 
-       0, 0, 0, 0, 0, 4, 0, 0, 
-       0, 3, 0, 2, 2, 3, 3, 3, 
-       3, 3, 3, 2, 3, 3, 3, 3, 
-       3, 3, 3, 2, 3, 3, 0, 0, 
-       0, 4, 0, 0, 0, 0, 0, 3, 
-       0, 0, 0, 4, 0, 0, 0, 0, 
-       0, 0, 1, 0, 0, 0, 0, 1, 
-       0, 1, 0, 0, 0, 4, 1, 0, 
-       0, 0, 4, 0, 0, 0, 0, 0, 
-       0, 0, 0, 2, 3, 3, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 
-       0, 0, 0, 0, 0, 1, 0, 0, 
-       0, 0, 0, 2, 3, 3, 0, 0, 
-       0, 4, 0, 0, 0, 0, 0, 4, 
-       1, 0, 0, 0, 4, 0, 0, 0, 
+       0, 0, 2, 3, 4, 1, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 
-       0, 1, 1, 0, 0, 4, 0, 0, 
+       0, 0, 0, 0, 0, 0, 0, 0, 
+       0, 4, 0, 0, 0, 3, 0, 2, 
+       2, 3, 3, 3, 3, 3, 3, 2, 
+       3, 3, 3, 3, 3, 3, 3, 2, 
+       3, 3, 0, 0, 0, 4, 0, 0, 
+       0, 0, 0, 3, 0, 0, 0, 4, 
+       0, 0, 0, 0, 0, 0, 1, 0, 
+       0, 0, 0, 1, 0, 1, 0, 0, 
+       0, 4, 1, 0, 0, 0, 4, 0, 
+       0, 0, 0, 0, 0, 0, 0, 2, 
+       3, 3, 0, 0, 0, 0, 0, 0, 
+       0, 0, 0, 0, 0, 0, 0, 0, 
+       0, 1, 0, 0, 0, 0, 0, 2, 
+       3, 3, 0, 0, 0, 4, 0, 0, 
+       0, 0, 0, 4, 1, 0, 0, 0, 
+       4, 0, 0, 0, 0, 0, 0, 0, 
+       0, 0, 0, 0, 0, 1, 1, 0, 
+       0, 4, 0, 0, 1, 0, 0, 0, 
+       0, 0, 0, 0, 0, 1, 1, 0, 
+       0, 4, 0, 0, 1, 0, 0, 0, 
+       0, 1, 3, 3, 4, 1, 3, 0, 
+       0, 4, 0, 0, 3, 0, 0, 0, 
+       0, 0, 0, 0, 0, 1, 3, 3, 
+       4, 1, 1, 0, 0, 0, 0, 0, 
+       3, 1, 1, 3, 1, 0, 0, 0, 
+       0, 0, 1, 3, 2, 3, 4, 1, 
+       3, 3, 3, 3, 0, 1, 1, 0, 
+       0, 0, 0, 0, 0, 2, 3, 3, 
+       0, 2, 3, 3, 1, 1, 0, 0, 
+       4, 0, 0, 3, 3, 3, 4, 0, 
+       0, 0, 0, 0, 0, 0, 1, 3, 
+       3, 4, 1, 3, 0, 0, 0, 0, 
+       0, 0, 0, 0, 0, 0, 0, 1, 
+       3, 3, 3, 0, 0, 0, 0, 0, 
        1, 0, 0, 0, 0, 0, 0, 0, 
-       0, 1, 1, 0, 0, 4, 0, 0, 
-       1, 0, 0, 0, 0, 1, 3, 3, 
-       4, 1, 3, 0, 0, 4, 0, 0, 
-       3, 0, 0, 0, 0, 0, 0, 0, 
-       0, 1, 3, 3, 4, 1, 1, 0, 
-       0, 0, 0, 0, 3, 1, 1, 3, 
-       1, 0, 0, 0, 0, 0, 1, 3, 
-       2, 3, 4, 1, 3, 3, 3, 3, 
+       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, 2, 3, 3, 0, 2, 3, 3, 
-       1, 1, 0, 0, 4, 0, 0, 3, 
-       3, 3, 4, 0, 0, 0, 0, 0, 
-       0, 0, 1, 3, 3, 4, 1, 3, 
-       0, 0, 0, 0, 0, 0, 0, 0, 
-       0, 0, 0, 1, 3, 3, 3, 0, 
-       0, 0, 0, 0, 1, 0, 0, 0, 
-       0, 0, 0, 0, 0, 1, 3, 1, 
-       0, 3, 3, 1, 0, 3, 3, 3, 
-       0, 0, 0, 3, 1, 0, 3, 0, 
-       0, 0, 1, 1, 0, 0, 0, 0, 
-       0, 3, 1, 0, 3, 0, 1, 1, 
-       0, 0, 0, 0, 0, 0, 0, 0, 
        3, 1, 0, 3, 0, 1, 1, 0, 
-       0, 1, 1, 1, 0, 1, 1, 1, 
-       0, 0, 0, 0, 0, 0, 1, 0, 
-       0, 0
+       0, 0, 0, 0, 0, 0, 0, 3, 
+       1, 0, 3, 0, 1, 1, 0, 0, 
+       1, 1, 1, 0, 1, 1, 1, 0, 
+       0, 0, 0, 0, 0, 1, 0, 0, 
+       0
 };
 
 static const short _eo_tokenizer_index_offsets[] = {
-       0, 3, 7, 9, 20, 24, 32, 34, 
-       38, 45, 47, 49, 51, 53, 55, 57, 
-       59, 61, 65, 67, 69, 71, 73, 75, 
-       77, 79, 81, 83, 85, 90, 92, 94, 
-       96, 98, 100, 102, 104, 106, 108, 110, 
-       112, 114, 116, 120, 123, 127, 135, 138, 
-       142, 144, 153, 158, 164, 170, 180, 190, 
-       200, 210, 220, 229, 236, 241, 247, 257, 
-       267, 277, 287, 296, 303, 312, 322, 327, 
-       329, 331, 338, 341, 345, 348, 352, 354, 
-       364, 369, 371, 373, 380, 383, 387, 390, 
-       394, 396, 398, 402, 404, 406, 408, 410, 
-       414, 416, 420, 423, 427, 429, 437, 441, 
-       445, 448, 452, 460, 463, 467, 469, 471, 
-       473, 475, 477, 481, 487, 492, 498, 500, 
-       502, 504, 506, 511, 516, 518, 520, 522, 
-       524, 526, 528, 530, 532, 534, 538, 540, 
-       542, 544, 546, 550, 556, 565, 575, 580, 
-       582, 584, 591, 594, 598, 601, 605, 607, 
-       615, 619, 623, 626, 630, 638, 641, 645, 
-       647, 649, 651, 653, 655, 657, 659, 661, 
-       663, 665, 670, 674, 676, 678, 685, 688, 
-       692, 696, 698, 700, 702, 704, 706, 708, 
-       710, 712, 717, 721, 723, 725, 732, 735, 
-       739, 743, 745, 747, 749, 751, 755, 761, 
-       767, 776, 780, 790, 792, 794, 801, 804, 
-       808, 814, 816, 818, 820, 822, 824, 826, 
-       828, 830, 834, 840, 846, 856, 861, 865, 
-       867, 869, 871, 873, 875, 885, 890, 894, 
-       901, 905, 907, 909, 911, 913, 915, 919, 
-       926, 932, 937, 945, 949, 961, 969, 974, 
-       984, 990, 996, 1001, 1003, 1005, 1007, 1009, 
-       1011, 1015, 1021, 1026, 1032, 1034, 1037, 1042, 
-       1048, 1052, 1057, 1059, 1061, 1068, 1071, 1075, 
-       1083, 1093, 1098, 1107, 1109, 1111, 1113, 1115, 
-       1117, 1119, 1121, 1125, 1131, 1136, 1145, 1150, 
-       1155, 1157, 1159, 1161, 1163, 1165, 1167, 1169, 
-       1171, 1173, 1175, 1177, 1181, 1186, 1191, 1197, 
-       1199, 1201, 1203, 1205, 1207, 1211, 1213, 1215, 
-       1217, 1219, 1221, 1223, 1225, 1227, 1231, 1237, 
-       1240, 1243, 1248, 1257, 1260, 1263, 1268, 1274, 
-       1280, 1285, 1286, 1288, 1295, 1298, 1301, 1310, 
-       1315, 1316, 1318, 1326, 1329, 1332, 1334, 1336, 
-       1338, 1340, 1347, 1350, 1353, 1358, 1360, 1369, 
-       1372, 1375, 1377, 1379, 1381, 1383, 1388, 1389, 
-       1391, 1398, 1401, 1404, 1409, 1411, 1423, 1426, 
-       1429, 1431, 1438, 1441, 1444, 1446, 1453, 1456, 
-       1459, 1461, 1463, 1466, 1468, 1470, 1472, 1475, 
-       1477, 1479
+       0, 3, 7, 9, 11, 13, 15, 17, 
+       19, 21, 25, 31, 36, 44, 48, 50, 
+       52, 54, 58, 60, 62, 64, 66, 68, 
+       70, 72, 76, 78, 80, 82, 86, 90, 
+       93, 97, 105, 108, 112, 114, 123, 128, 
+       134, 140, 150, 160, 170, 180, 190, 199, 
+       206, 211, 217, 227, 237, 247, 257, 266, 
+       273, 282, 292, 297, 299, 301, 308, 311, 
+       315, 318, 322, 324, 334, 339, 341, 343, 
+       350, 353, 357, 360, 364, 366, 368, 372, 
+       374, 376, 378, 380, 384, 386, 390, 393, 
+       397, 399, 407, 411, 415, 418, 422, 430, 
+       433, 437, 439, 441, 443, 445, 447, 451, 
+       457, 462, 468, 470, 472, 474, 476, 481, 
+       486, 488, 490, 492, 494, 496, 498, 500, 
+       502, 504, 508, 510, 512, 514, 516, 520, 
+       526, 535, 545, 550, 552, 554, 561, 564, 
+       568, 571, 575, 577, 585, 589, 593, 596, 
+       600, 608, 611, 615, 617, 619, 621, 623, 
+       625, 627, 629, 631, 633, 635, 640, 644, 
+       646, 648, 655, 658, 662, 666, 668, 670, 
+       672, 674, 676, 678, 680, 682, 687, 691, 
+       693, 695, 702, 705, 709, 713, 715, 717, 
+       719, 721, 725, 731, 737, 746, 750, 760, 
+       762, 764, 771, 774, 778, 784, 786, 788, 
+       790, 792, 794, 796, 798, 800, 804, 810, 
+       816, 826, 831, 835, 837, 839, 841, 843, 
+       845, 855, 860, 864, 871, 875, 877, 879, 
+       881, 883, 885, 889, 896, 902, 907, 915, 
+       919, 931, 939, 944, 954, 960, 966, 971, 
+       973, 975, 977, 979, 981, 985, 991, 996, 
+       1002, 1004, 1007, 1012, 1018, 1022, 1027, 1029, 
+       1031, 1038, 1041, 1045, 1053, 1063, 1068, 1077, 
+       1079, 1081, 1083, 1085, 1087, 1089, 1091, 1095, 
+       1101, 1106, 1115, 1120, 1125, 1127, 1129, 1131, 
+       1133, 1135, 1137, 1139, 1141, 1143, 1145, 1147, 
+       1151, 1156, 1161, 1167, 1169, 1171, 1173, 1175, 
+       1177, 1181, 1183, 1185, 1187, 1189, 1191, 1193, 
+       1195, 1197, 1201, 1209, 1212, 1215, 1217, 1219, 
+       1221, 1223, 1232, 1235, 1238, 1243, 1249, 1255, 
+       1260, 1261, 1263, 1270, 1273, 1276, 1285, 1290, 
+       1291, 1293, 1301, 1304, 1307, 1309, 1311, 1313, 
+       1315, 1322, 1325, 1328, 1333, 1335, 1344, 1347, 
+       1350, 1352, 1354, 1356, 1358, 1363, 1364, 1366, 
+       1373, 1376, 1379, 1384, 1386, 1398, 1401, 1404, 
+       1406, 1413, 1416, 1419, 1421, 1428, 1431, 1434, 
+       1436, 1438, 1441, 1443, 1445, 1447, 1450, 1452, 
+       1454
 };
 
 static const short _eo_tokenizer_indicies[] = {
        2, 3, 1, 2, 3, 4, 1, 6, 
-       5, 8, 9, 8, 8, 10, 11, 7, 
-       10, 10, 10, 0, 13, 14, 12, 0, 
-       15, 13, 15, 15, 16, 14, 12, 0, 
-       17, 0, 18, 18, 18, 0, 19, 19, 
-       19, 20, 21, 22, 0, 23, 0, 24, 
-       0, 25, 0, 26, 0, 27, 0, 28, 
-       0, 29, 0, 30, 0, 32, 33, 31, 
-       0, 34, 0, 35, 0, 36, 0, 30, 
-       0, 37, 0, 38, 0, 39, 0, 40, 
-       0, 41, 0, 42, 0, 32, 43, 33, 
-       31, 0, 44, 0, 45, 0, 46, 0, 
-       47, 0, 48, 0, 49, 0, 50, 0, 
-       51, 0, 52, 0, 53, 0, 54, 0, 
-       55, 0, 29, 0, 58, 59, 60, 57, 
-       58, 59, 57, 58, 59, 61, 57, 62, 
-       59, 63, 60, 63, 63, 63, 57, 65, 
-       66, 64, 65, 66, 67, 64, 69, 68, 
-       70, 70, 70, 72, 71, 71, 71, 71, 
-       56, 70, 70, 70, 72, 56, 73, 73, 
-       73, 74, 74, 56, 75, 75, 75, 76, 
-       76, 56, 77, 77, 77, 77, 78, 77, 
-       77, 77, 77, 56, 70, 70, 70, 72, 
-       71, 79, 71, 71, 71, 56, 70, 70, 
-       70, 72, 71, 80, 71, 71, 71, 56, 
-       70, 70, 70, 72, 71, 81, 71, 71, 
-       71, 56, 70, 70, 70, 72, 71, 82, 
-       71, 71, 71, 56, 83, 83, 83, 72, 
-       71, 71, 71, 71, 56, 83, 83, 83, 
-       72, 84, 84, 56, 85, 85, 85, 85, 
-       56, 86, 85, 85, 85, 85, 56, 70, 
-       70, 70, 72, 71, 87, 71, 71, 71, 
-       56, 70, 70, 70, 72, 71, 88, 71, 
-       71, 71, 56, 70, 70, 70, 72, 71, 
-       89, 71, 71, 71, 56, 70, 70, 70, 
-       72, 71, 90, 71, 71, 71, 56, 91, 
-       91, 91, 72, 71, 71, 71, 71, 56, 
-       91, 91, 91, 72, 92, 92, 56, 93, 
-       93, 93, 93, 93, 93, 93, 93, 56, 
-       93, 93, 93, 93, 94, 93, 93, 93, 
-       93, 56, 96, 96, 96, 97, 95, 98, 
-       95, 99, 95, 100, 101, 99, 101, 101, 
-       101, 95, 103, 104, 102, 103, 104, 105, 
-       102, 108, 109, 107, 108, 109, 110, 107, 
-       112, 111, 113, 113, 113, 113, 114, 113, 
-       113, 113, 113, 106, 116, 116, 116, 117, 
-       115, 118, 115, 119, 115, 120, 121, 119, 
-       121, 121, 121, 115, 123, 124, 122, 123, 
-       124, 125, 122, 128, 129, 127, 128, 129, 
-       130, 127, 132, 131, 133, 126, 134, 135, 
-       133, 126, 136, 126, 137, 126, 138, 126, 
-       139, 126, 140, 141, 139, 126, 142, 126, 
-       143, 144, 142, 126, 147, 148, 146, 147, 
-       148, 149, 146, 151, 150, 153, 154, 155, 
-       152, 154, 154, 154, 145, 157, 158, 156, 
-       145, 161, 162, 163, 160, 161, 162, 160, 
-       161, 162, 164, 160, 165, 162, 166, 163, 
-       166, 166, 166, 160, 168, 169, 167, 168, 
-       169, 170, 167, 172, 171, 173, 159, 174, 
-       159, 175, 159, 176, 159, 177, 177, 177, 
-       159, 177, 177, 177, 178, 178, 159, 179, 
-       179, 179, 179, 159, 180, 179, 179, 179, 
-       179, 159, 181, 159, 182, 159, 183, 159, 
-       184, 159, 184, 184, 184, 185, 159, 185, 
-       185, 185, 186, 159, 187, 159, 188, 159, 
-       189, 159, 190, 159, 191, 159, 192, 159, 
-       193, 159, 194, 159, 195, 159, 196, 197, 
-       195, 159, 198, 159, 199, 159, 200, 159, 
-       201, 159, 202, 202, 202, 159, 202, 202, 
-       202, 203, 203, 159, 204, 204, 204, 204, 
-       204, 204, 204, 204, 159, 204, 204, 204, 
-       204, 205, 204, 204, 204, 204, 159, 207, 
-       207, 207, 208, 206, 209, 206, 210, 206, 
-       211, 212, 210, 212, 212, 212, 206, 214, 
-       215, 213, 214, 215, 216, 213, 219, 220, 
-       218, 219, 220, 221, 218, 223, 222, 225, 
-       226, 227, 224, 226, 226, 226, 217, 229, 
-       230, 228, 217, 233, 234, 235, 232, 233, 
-       234, 232, 233, 234, 236, 232, 237, 234, 
-       238, 235, 238, 238, 238, 232, 240, 241, 
-       239, 240, 241, 242, 239, 244, 243, 245, 
-       231, 246, 231, 247, 231, 248, 231, 249, 
-       231, 250, 231, 251, 231, 252, 231, 253, 
-       231, 255, 256, 257, 254, 231, 259, 260, 
-       258, 231, 262, 261, 263, 261, 264, 265, 
-       263, 265, 265, 265, 261, 267, 268, 266, 
-       267, 268, 269, 266, 270, 271, 257, 231, 
-       272, 231, 273, 231, 274, 231, 275, 231, 
-       276, 231, 277, 231, 278, 231, 279, 231, 
-       281, 282, 283, 280, 231, 285, 286, 284, 
-       231, 288, 287, 289, 287, 290, 291, 289, 
-       291, 291, 291, 287, 293, 294, 292, 293, 
-       294, 295, 292, 296, 297, 283, 231, 298, 
-       231, 299, 231, 300, 231, 301, 231, 302, 
-       303, 301, 231, 304, 306, 303, 305, 305, 
-       231, 307, 307, 307, 307, 307, 231, 309, 
-       307, 310, 307, 308, 307, 307, 307, 231, 
-       312, 313, 311, 231, 313, 304, 313, 313, 
-       314, 306, 303, 305, 305, 231, 315, 231, 
-       316, 231, 317, 318, 316, 318, 318, 318, 
-       231, 320, 321, 319, 320, 321, 322, 319, 
-       324, 326, 323, 325, 325, 231, 327, 231, 
-       328, 231, 329, 231, 330, 231, 331, 231, 
-       332, 231, 333, 231, 334, 231, 335, 336, 
-       334, 231, 337, 339, 336, 338, 338, 231, 
-       341, 340, 340, 340, 340, 231, 343, 341, 
-       344, 340, 345, 342, 340, 340, 340, 231, 
-       347, 336, 348, 346, 231, 349, 350, 348, 
-       231, 351, 231, 352, 231, 353, 231, 354, 
-       231, 355, 231, 357, 358, 357, 357, 359, 
-       361, 356, 360, 360, 231, 363, 364, 365, 
-       362, 231, 366, 367, 364, 231, 337, 336, 
-       339, 336, 338, 338, 231, 368, 369, 365, 
-       231, 370, 231, 371, 231, 372, 231, 373, 
-       231, 374, 231, 375, 376, 374, 231, 377, 
-       378, 379, 376, 380, 380, 231, 378, 378, 
-       378, 381, 381, 231, 382, 382, 382, 382, 
-       231, 384, 385, 382, 383, 382, 382, 382, 
-       231, 387, 379, 386, 231, 379, 389, 379, 
-       379, 390, 378, 379, 391, 388, 380, 380, 
-       231, 389, 378, 379, 391, 388, 380, 380, 
-       231, 392, 392, 392, 392, 231, 393, 393, 
-       393, 394, 395, 392, 392, 392, 392, 231, 
-       396, 396, 396, 378, 379, 231, 398, 397, 
-       399, 400, 397, 231, 398, 399, 400, 397, 
-       231, 401, 231, 402, 231, 403, 231, 404, 
-       231, 405, 231, 406, 406, 406, 231, 406, 
-       406, 406, 407, 407, 231, 408, 408, 408, 
-       408, 231, 409, 408, 408, 408, 408, 231, 
-       410, 231, 411, 411, 231, 412, 412, 412, 
-       412, 231, 413, 412, 412, 412, 412, 231, 
-       415, 400, 414, 231, 366, 364, 367, 364, 
-       231, 416, 231, 417, 231, 418, 419, 417, 
-       419, 419, 419, 231, 421, 422, 420, 421, 
-       422, 423, 420, 425, 426, 427, 429, 424, 
-       428, 428, 231, 430, 363, 430, 430, 364, 
-       365, 362, 431, 431, 231, 432, 432, 432, 
-       432, 231, 434, 435, 432, 436, 433, 432, 
-       432, 432, 231, 340, 231, 437, 231, 438, 
-       231, 439, 231, 440, 231, 441, 231, 442, 
-       231, 443, 444, 442, 231, 445, 447, 444, 
-       446, 446, 231, 448, 448, 448, 448, 231, 
-       450, 451, 448, 452, 449, 448, 448, 448, 
-       231, 454, 455, 447, 453, 231, 456, 455, 
-       446, 446, 231, 457, 231, 458, 231, 459, 
-       231, 460, 231, 461, 231, 462, 231, 463, 
-       231, 464, 231, 465, 231, 466, 231, 467, 
-       231, 468, 469, 467, 231, 470, 469, 471, 
-       471, 231, 472, 472, 472, 472, 231, 473, 
-       472, 472, 472, 472, 231, 474, 231, 475, 
-       231, 476, 231, 477, 231, 478, 231, 479, 
-       480, 478, 231, 481, 231, 482, 231, 483, 
-       231, 484, 231, 485, 231, 486, 231, 487, 
-       231, 488, 231, 489, 490, 488, 231, 493, 
-       494, 492, 495, 495, 491, 493, 492, 496, 
-       1, 5, 497, 10, 10, 10, 10, 497, 
-       500, 501, 503, 504, 505, 499, 502, 502, 
-       498, 500, 499, 506, 508, 68, 507, 71, 
-       71, 71, 71, 507, 71, 509, 71, 71, 
-       71, 507, 71, 510, 71, 71, 71, 507, 
-       96, 96, 96, 97, 511, 512, 514, 513, 
-       517, 518, 520, 516, 519, 519, 515, 517, 
-       516, 521, 107, 111, 522, 113, 113, 113, 
-       113, 113, 113, 113, 113, 522, 116, 116, 
-       116, 117, 523, 524, 526, 525, 529, 530, 
-       531, 532, 533, 534, 528, 527, 529, 528, 
-       535, 127, 131, 536, 537, 536, 538, 536, 
-       539, 536, 541, 540, 544, 545, 547, 543, 
-       546, 546, 542, 544, 543, 548, 146, 150, 
-       549, 154, 154, 154, 154, 549, 551, 550, 
-       554, 555, 556, 557, 558, 559, 560, 553, 
-       552, 554, 553, 561, 563, 171, 562, 564, 
-       562, 565, 562, 566, 562, 567, 562, 207, 
-       207, 207, 208, 568, 569, 571, 570, 574, 
-       575, 577, 573, 576, 576, 572, 574, 573, 
-       578, 218, 222, 579, 226, 226, 226, 226, 
-       579, 581, 580, 584, 585, 586, 587, 588, 
-       589, 590, 591, 592, 593, 583, 582, 584, 
-       583, 594, 596, 243, 595, 597, 595, 260, 
-       600, 260, 260, 601, 599, 598, 600, 599, 
-       598, 604, 603, 602, 605, 595, 286, 608, 
-       286, 286, 609, 607, 606, 608, 607, 606, 
-       612, 611, 610, 613, 595, 615, 614, 616, 
-       617, 595, 619, 618, 621, 620, 622, 595, 
-       625, 624, 623, 626, 595, 627, 595, 629, 
-       628, 0
+       5, 7, 0, 8, 0, 9, 0, 10, 
+       0, 11, 0, 12, 0, 13, 13, 13, 
+       0, 14, 14, 14, 15, 15, 0, 16, 
+       16, 16, 16, 0, 18, 16, 19, 17, 
+       16, 16, 16, 0, 21, 22, 20, 0, 
+       23, 0, 24, 0, 25, 0, 26, 26, 
+       26, 0, 27, 0, 28, 0, 29, 0, 
+       30, 0, 31, 0, 32, 0, 33, 0, 
+       34, 34, 34, 0, 35, 0, 36, 0, 
+       37, 0, 38, 38, 38, 0, 41, 42, 
+       43, 40, 41, 42, 40, 41, 42, 44, 
+       40, 45, 42, 46, 43, 46, 46, 46, 
+       40, 48, 49, 47, 48, 49, 50, 47, 
+       52, 51, 53, 53, 53, 55, 54, 54, 
+       54, 54, 39, 53, 53, 53, 55, 39, 
+       56, 56, 56, 57, 57, 39, 58, 58, 
+       58, 59, 59, 39, 60, 60, 60, 60, 
+       61, 60, 60, 60, 60, 39, 53, 53, 
+       53, 55, 54, 62, 54, 54, 54, 39, 
+       53, 53, 53, 55, 54, 63, 54, 54, 
+       54, 39, 53, 53, 53, 55, 54, 64, 
+       54, 54, 54, 39, 53, 53, 53, 55, 
+       54, 65, 54, 54, 54, 39, 66, 66, 
+       66, 55, 54, 54, 54, 54, 39, 66, 
+       66, 66, 55, 67, 67, 39, 68, 68, 
+       68, 68, 39, 69, 68, 68, 68, 68, 
+       39, 53, 53, 53, 55, 54, 70, 54, 
+       54, 54, 39, 53, 53, 53, 55, 54, 
+       71, 54, 54, 54, 39, 53, 53, 53, 
+       55, 54, 72, 54, 54, 54, 39, 53, 
+       53, 53, 55, 54, 73, 54, 54, 54, 
+       39, 74, 74, 74, 55, 54, 54, 54, 
+       54, 39, 74, 74, 74, 55, 75, 75, 
+       39, 76, 76, 76, 76, 76, 76, 76, 
+       76, 39, 76, 76, 76, 76, 77, 76, 
+       76, 76, 76, 39, 79, 79, 79, 80, 
+       78, 81, 78, 82, 78, 83, 84, 82, 
+       84, 84, 84, 78, 86, 87, 85, 86, 
+       87, 88, 85, 91, 92, 90, 91, 92, 
+       93, 90, 95, 94, 96, 96, 96, 96, 
+       97, 96, 96, 96, 96, 89, 99, 99, 
+       99, 100, 98, 101, 98, 102, 98, 103, 
+       104, 102, 104, 104, 104, 98, 106, 107, 
+       105, 106, 107, 108, 105, 111, 112, 110, 
+       111, 112, 113, 110, 115, 114, 116, 109, 
+       117, 118, 116, 109, 119, 109, 120, 109, 
+       121, 109, 122, 109, 123, 124, 122, 109, 
+       125, 109, 126, 127, 125, 109, 130, 131, 
+       129, 130, 131, 132, 129, 134, 133, 136, 
+       137, 138, 135, 137, 137, 137, 128, 140, 
+       141, 139, 128, 144, 145, 146, 143, 144, 
+       145, 143, 144, 145, 147, 143, 148, 145, 
+       149, 146, 149, 149, 149, 143, 151, 152, 
+       150, 151, 152, 153, 150, 155, 154, 156, 
+       142, 157, 142, 158, 142, 159, 142, 160, 
+       160, 160, 142, 160, 160, 160, 161, 161, 
+       142, 162, 162, 162, 162, 142, 163, 162, 
+       162, 162, 162, 142, 164, 142, 165, 142, 
+       166, 142, 167, 142, 167, 167, 167, 168, 
+       142, 168, 168, 168, 169, 142, 170, 142, 
+       171, 142, 172, 142, 173, 142, 174, 142, 
+       175, 142, 176, 142, 177, 142, 178, 142, 
+       179, 180, 178, 142, 181, 142, 182, 142, 
+       183, 142, 184, 142, 185, 185, 185, 142, 
+       185, 185, 185, 186, 186, 142, 187, 187, 
+       187, 187, 187, 187, 187, 187, 142, 187, 
+       187, 187, 187, 188, 187, 187, 187, 187, 
+       142, 190, 190, 190, 191, 189, 192, 189, 
+       193, 189, 194, 195, 193, 195, 195, 195, 
+       189, 197, 198, 196, 197, 198, 199, 196, 
+       202, 203, 201, 202, 203, 204, 201, 206, 
+       205, 208, 209, 210, 207, 209, 209, 209, 
+       200, 212, 213, 211, 200, 216, 217, 218, 
+       215, 216, 217, 215, 216, 217, 219, 215, 
+       220, 217, 221, 218, 221, 221, 221, 215, 
+       223, 224, 222, 223, 224, 225, 222, 227, 
+       226, 228, 214, 229, 214, 230, 214, 231, 
+       214, 232, 214, 233, 214, 234, 214, 235, 
+       214, 236, 214, 238, 239, 240, 237, 214, 
+       242, 243, 241, 214, 245, 244, 246, 244, 
+       247, 248, 246, 248, 248, 248, 244, 250, 
+       251, 249, 250, 251, 252, 249, 253, 254, 
+       240, 214, 255, 214, 256, 214, 257, 214, 
+       258, 214, 259, 214, 260, 214, 261, 214, 
+       262, 214, 264, 265, 266, 263, 214, 268, 
+       269, 267, 214, 271, 270, 272, 270, 273, 
+       274, 272, 274, 274, 274, 270, 276, 277, 
+       275, 276, 277, 278, 275, 279, 280, 266, 
+       214, 281, 214, 282, 214, 283, 214, 284, 
+       214, 285, 286, 284, 214, 287, 289, 286, 
+       288, 288, 214, 290, 290, 290, 290, 290, 
+       214, 292, 290, 293, 290, 291, 290, 290, 
+       290, 214, 295, 296, 294, 214, 296, 287, 
+       296, 296, 297, 289, 286, 288, 288, 214, 
+       298, 214, 299, 214, 300, 301, 299, 301, 
+       301, 301, 214, 303, 304, 302, 303, 304, 
+       305, 302, 307, 309, 306, 308, 308, 214, 
+       310, 214, 311, 214, 312, 214, 313, 214, 
+       314, 214, 315, 214, 316, 214, 317, 214, 
+       318, 319, 317, 214, 320, 322, 319, 321, 
+       321, 214, 324, 323, 323, 323, 323, 214, 
+       326, 324, 327, 323, 328, 325, 323, 323, 
+       323, 214, 330, 319, 331, 329, 214, 332, 
+       333, 331, 214, 334, 214, 335, 214, 336, 
+       214, 337, 214, 338, 214, 340, 341, 340, 
+       340, 342, 344, 339, 343, 343, 214, 346, 
+       347, 348, 345, 214, 349, 350, 347, 214, 
+       320, 319, 322, 319, 321, 321, 214, 351, 
+       352, 348, 214, 353, 214, 354, 214, 355, 
+       214, 356, 214, 357, 214, 358, 359, 357, 
+       214, 360, 361, 362, 359, 363, 363, 214, 
+       361, 361, 361, 364, 364, 214, 365, 365, 
+       365, 365, 214, 367, 368, 365, 366, 365, 
+       365, 365, 214, 370, 362, 369, 214, 362, 
+       372, 362, 362, 373, 361, 362, 374, 371, 
+       363, 363, 214, 372, 361, 362, 374, 371, 
+       363, 363, 214, 375, 375, 375, 375, 214, 
+       376, 376, 376, 377, 378, 375, 375, 375, 
+       375, 214, 379, 379, 379, 361, 362, 214, 
+       381, 380, 382, 383, 380, 214, 381, 382, 
+       383, 380, 214, 384, 214, 385, 214, 386, 
+       214, 387, 214, 388, 214, 389, 389, 389, 
+       214, 389, 389, 389, 390, 390, 214, 391, 
+       391, 391, 391, 214, 392, 391, 391, 391, 
+       391, 214, 393, 214, 394, 394, 214, 395, 
+       395, 395, 395, 214, 396, 395, 395, 395, 
+       395, 214, 398, 383, 397, 214, 349, 347, 
+       350, 347, 214, 399, 214, 400, 214, 401, 
+       402, 400, 402, 402, 402, 214, 404, 405, 
+       403, 404, 405, 406, 403, 408, 409, 410, 
+       412, 407, 411, 411, 214, 413, 346, 413, 
+       413, 347, 348, 345, 414, 414, 214, 415, 
+       415, 415, 415, 214, 417, 418, 415, 419, 
+       416, 415, 415, 415, 214, 323, 214, 420, 
+       214, 421, 214, 422, 214, 423, 214, 424, 
+       214, 425, 214, 426, 427, 425, 214, 428, 
+       430, 427, 429, 429, 214, 431, 431, 431, 
+       431, 214, 433, 434, 431, 435, 432, 431, 
+       431, 431, 214, 437, 438, 430, 436, 214, 
+       439, 438, 429, 429, 214, 440, 214, 441, 
+       214, 442, 214, 443, 214, 444, 214, 445, 
+       214, 446, 214, 447, 214, 448, 214, 449, 
+       214, 450, 214, 451, 452, 450, 214, 453, 
+       452, 454, 454, 214, 455, 455, 455, 455, 
+       214, 456, 455, 455, 455, 455, 214, 457, 
+       214, 458, 214, 459, 214, 460, 214, 461, 
+       214, 462, 463, 461, 214, 464, 214, 465, 
+       214, 466, 214, 467, 214, 468, 214, 469, 
+       214, 470, 214, 471, 214, 472, 473, 471, 
+       214, 476, 477, 478, 479, 480, 481, 475, 
+       474, 476, 475, 482, 1, 5, 483, 484, 
+       483, 485, 483, 486, 483, 487, 483, 490, 
+       491, 493, 494, 495, 489, 492, 492, 488, 
+       490, 489, 496, 498, 51, 497, 54, 54, 
+       54, 54, 497, 54, 499, 54, 54, 54, 
+       497, 54, 500, 54, 54, 54, 497, 79, 
+       79, 79, 80, 501, 502, 504, 503, 507, 
+       508, 510, 506, 509, 509, 505, 507, 506, 
+       511, 90, 94, 512, 96, 96, 96, 96, 
+       96, 96, 96, 96, 512, 99, 99, 99, 
+       100, 513, 514, 516, 515, 519, 520, 521, 
+       522, 523, 524, 518, 517, 519, 518, 525, 
+       110, 114, 526, 527, 526, 528, 526, 529, 
+       526, 531, 530, 534, 535, 537, 533, 536, 
+       536, 532, 534, 533, 538, 129, 133, 539, 
+       137, 137, 137, 137, 539, 541, 540, 544, 
+       545, 546, 547, 548, 549, 550, 543, 542, 
+       544, 543, 551, 553, 154, 552, 554, 552, 
+       555, 552, 556, 552, 557, 552, 190, 190, 
+       190, 191, 558, 559, 561, 560, 564, 565, 
+       567, 563, 566, 566, 562, 564, 563, 568, 
+       201, 205, 569, 209, 209, 209, 209, 569, 
+       571, 570, 574, 575, 576, 577, 578, 579, 
+       580, 581, 582, 583, 573, 572, 574, 573, 
+       584, 586, 226, 585, 587, 585, 243, 590, 
+       243, 243, 591, 589, 588, 590, 589, 588, 
+       594, 593, 592, 595, 585, 269, 598, 269, 
+       269, 599, 597, 596, 598, 597, 596, 602, 
+       601, 600, 603, 585, 605, 604, 606, 607, 
+       585, 609, 608, 611, 610, 612, 585, 615, 
+       614, 613, 616, 585, 617, 585, 619, 618, 
+       0
 };
 
 static const short _eo_tokenizer_trans_targs[] = {
-       318, 0, 0, 1, 318, 2, 318, 4, 
-       5, 4, 3, 318, 4, 4, 318, 5, 
-       6, 7, 8, 8, 9, 18, 22, 10, 
-       11, 12, 13, 14, 15, 16, 17, 4, 
-       4, 318, 19, 20, 21, 23, 24, 25, 
-       26, 27, 28, 29, 30, 31, 32, 33, 
-       34, 35, 36, 37, 38, 39, 40, 41, 
-       322, 43, 43, 44, 45, 322, 45, 46, 
-       46, 46, 47, 322, 48, 322, 50, 49, 
-       51, 52, 53, 52, 53, 53, 322, 55, 
-       56, 57, 58, 59, 60, 61, 322, 63, 
-       64, 65, 66, 67, 68, 69, 328, 322, 
-       70, 71, 72, 73, 73, 74, 74, 74, 
-       75, 329, 331, 76, 76, 77, 331, 78, 
-       331, 79, 335, 331, 80, 81, 82, 83, 
-       83, 84, 84, 84, 85, 336, 338, 86, 
-       86, 87, 338, 88, 338, 90, 90, 338, 
-       92, 93, 94, 95, 95, 338, 97, 97, 
-       338, 345, 98, 98, 99, 345, 100, 345, 
-       102, 102, 101, 345, 102, 102, 345, 350, 
-       104, 104, 105, 106, 350, 106, 107, 107, 
-       107, 108, 350, 109, 350, 111, 112, 113, 
-       114, 115, 116, 117, 350, 119, 120, 121, 
-       122, 123, 124, 125, 126, 127, 128, 350, 
-       130, 131, 132, 133, 133, 350, 135, 136, 
-       137, 138, 139, 140, 141, 357, 350, 142, 
-       143, 144, 145, 145, 146, 146, 146, 147, 
-       358, 360, 148, 148, 149, 360, 150, 360, 
-       152, 152, 151, 360, 152, 152, 360, 365, 
-       154, 154, 155, 156, 365, 156, 157, 157, 
-       157, 158, 365, 159, 365, 161, 162, 163, 
-       164, 165, 166, 167, 168, 169, 170, 170, 
-       369, 176, 170, 170, 369, 365, 172, 173, 
-       173, 174, 174, 174, 175, 371, 176, 365, 
-       178, 179, 180, 181, 182, 183, 184, 185, 
-       186, 186, 373, 192, 186, 186, 373, 365, 
-       188, 189, 189, 190, 190, 190, 191, 375, 
-       192, 365, 194, 195, 196, 197, 197, 198, 
-       198, 199, 377, 200, 201, 201, 202, 201, 
-       201, 202, 203, 204, 205, 205, 206, 206, 
-       206, 207, 208, 198, 198, 199, 377, 210, 
-       211, 212, 213, 214, 215, 216, 217, 217, 
-       218, 218, 219, 379, 220, 275, 221, 221, 
-       218, 222, 221, 221, 222, 222, 223, 224, 
-       225, 226, 227, 228, 229, 272, 229, 230, 
-       273, 232, 229, 229, 230, 232, 230, 231, 
-       232, 233, 234, 235, 236, 237, 238, 238, 
-       239, 239, 240, 244, 246, 241, 242, 243, 
-       243, 244, 243, 243, 245, 245, 266, 249, 
-       247, 248, 240, 244, 248, 250, 250, 251, 
-       265, 252, 253, 254, 255, 256, 257, 258, 
-       259, 260, 261, 262, 263, 264, 264, 264, 
-       267, 268, 268, 269, 269, 269, 270, 271, 
-       245, 245, 240, 244, 246, 249, 272, 273, 
-       274, 229, 229, 230, 232, 277, 278, 279, 
-       280, 281, 282, 282, 283, 283, 284, 380, 
-       285, 286, 286, 287, 380, 286, 286, 287, 
-       287, 289, 290, 291, 292, 293, 294, 295, 
-       296, 297, 298, 299, 299, 300, 300, 301, 
-       302, 382, 304, 305, 306, 307, 308, 308, 
-       365, 310, 311, 312, 313, 314, 315, 316, 
-       317, 317, 365, 318, 319, 319, 320, 321, 
-       318, 318, 322, 323, 323, 324, 325, 326, 
-       327, 330, 322, 322, 42, 54, 62, 322, 
-       322, 322, 322, 331, 332, 332, 333, 334, 
-       337, 331, 331, 331, 331, 331, 331, 338, 
-       339, 339, 340, 341, 342, 343, 344, 338, 
-       338, 89, 91, 96, 338, 338, 345, 346, 
-       346, 347, 348, 349, 345, 345, 345, 345, 
-       350, 351, 351, 352, 353, 354, 355, 356, 
-       359, 350, 350, 103, 110, 118, 129, 134, 
-       350, 350, 350, 350, 360, 361, 361, 362, 
-       363, 364, 360, 360, 360, 360, 365, 366, 
-       366, 367, 368, 372, 376, 378, 381, 383, 
-       384, 385, 365, 365, 153, 160, 365, 370, 
-       370, 171, 365, 370, 370, 177, 365, 374, 
-       374, 187, 365, 374, 374, 193, 365, 365, 
-       209, 276, 365, 365, 365, 365, 288, 365, 
-       382, 382, 303, 309, 365, 365
+       306, 0, 0, 1, 306, 2, 306, 4, 
+       5, 6, 7, 8, 9, 10, 10, 11, 
+       12, 13, 13, 306, 13, 13, 306, 15, 
+       16, 17, 10, 19, 20, 21, 22, 23, 
+       24, 25, 10, 27, 28, 29, 10, 313, 
+       31, 31, 32, 33, 313, 33, 34, 34, 
+       34, 35, 313, 36, 313, 38, 37, 39, 
+       40, 41, 40, 41, 41, 313, 43, 44, 
+       45, 46, 47, 48, 49, 313, 51, 52, 
+       53, 54, 55, 56, 57, 319, 313, 58, 
+       59, 60, 61, 61, 62, 62, 62, 63, 
+       320, 322, 64, 64, 65, 322, 66, 322, 
+       67, 326, 322, 68, 69, 70, 71, 71, 
+       72, 72, 72, 73, 327, 329, 74, 74, 
+       75, 329, 76, 329, 78, 78, 329, 80, 
+       81, 82, 83, 83, 329, 85, 85, 329, 
+       336, 86, 86, 87, 336, 88, 336, 90, 
+       90, 89, 336, 90, 90, 336, 341, 92, 
+       92, 93, 94, 341, 94, 95, 95, 95, 
+       96, 341, 97, 341, 99, 100, 101, 102, 
+       103, 104, 105, 341, 107, 108, 109, 110, 
+       111, 112, 113, 114, 115, 116, 341, 118, 
+       119, 120, 121, 121, 341, 123, 124, 125, 
+       126, 127, 128, 129, 348, 341, 130, 131, 
+       132, 133, 133, 134, 134, 134, 135, 349, 
+       351, 136, 136, 137, 351, 138, 351, 140, 
+       140, 139, 351, 140, 140, 351, 356, 142, 
+       142, 143, 144, 356, 144, 145, 145, 145, 
+       146, 356, 147, 356, 149, 150, 151, 152, 
+       153, 154, 155, 156, 157, 158, 158, 360, 
+       164, 158, 158, 360, 356, 160, 161, 161, 
+       162, 162, 162, 163, 362, 164, 356, 166, 
+       167, 168, 169, 170, 171, 172, 173, 174, 
+       174, 364, 180, 174, 174, 364, 356, 176, 
+       177, 177, 178, 178, 178, 179, 366, 180, 
+       356, 182, 183, 184, 185, 185, 186, 186, 
+       187, 368, 188, 189, 189, 190, 189, 189, 
+       190, 191, 192, 193, 193, 194, 194, 194, 
+       195, 196, 186, 186, 187, 368, 198, 199, 
+       200, 201, 202, 203, 204, 205, 205, 206, 
+       206, 207, 370, 208, 263, 209, 209, 206, 
+       210, 209, 209, 210, 210, 211, 212, 213, 
+       214, 215, 216, 217, 260, 217, 218, 261, 
+       220, 217, 217, 218, 220, 218, 219, 220, 
+       221, 222, 223, 224, 225, 226, 226, 227, 
+       227, 228, 232, 234, 229, 230, 231, 231, 
+       232, 231, 231, 233, 233, 254, 237, 235, 
+       236, 228, 232, 236, 238, 238, 239, 253, 
+       240, 241, 242, 243, 244, 245, 246, 247, 
+       248, 249, 250, 251, 252, 252, 252, 255, 
+       256, 256, 257, 257, 257, 258, 259, 233, 
+       233, 228, 232, 234, 237, 260, 261, 262, 
+       217, 217, 218, 220, 265, 266, 267, 268, 
+       269, 270, 270, 271, 271, 272, 371, 273, 
+       274, 274, 275, 371, 274, 274, 275, 275, 
+       277, 278, 279, 280, 281, 282, 283, 284, 
+       285, 286, 287, 287, 288, 288, 289, 290, 
+       373, 292, 293, 294, 295, 296, 296, 356, 
+       298, 299, 300, 301, 302, 303, 304, 305, 
+       305, 356, 306, 307, 307, 308, 309, 310, 
+       311, 312, 306, 306, 3, 14, 18, 26, 
+       313, 314, 314, 315, 316, 317, 318, 321, 
+       313, 313, 30, 42, 50, 313, 313, 313, 
+       313, 322, 323, 323, 324, 325, 328, 322, 
+       322, 322, 322, 322, 322, 329, 330, 330, 
+       331, 332, 333, 334, 335, 329, 329, 77, 
+       79, 84, 329, 329, 336, 337, 337, 338, 
+       339, 340, 336, 336, 336, 336, 341, 342, 
+       342, 343, 344, 345, 346, 347, 350, 341, 
+       341, 91, 98, 106, 117, 122, 341, 341, 
+       341, 341, 351, 352, 352, 353, 354, 355, 
+       351, 351, 351, 351, 356, 357, 357, 358, 
+       359, 363, 367, 369, 372, 374, 375, 376, 
+       356, 356, 141, 148, 356, 361, 361, 159, 
+       356, 361, 361, 165, 356, 365, 365, 175, 
+       356, 365, 365, 181, 356, 356, 197, 264, 
+       356, 356, 356, 356, 276, 356, 373, 373, 
+       291, 297, 356, 356
 };
 
 static const short _eo_tokenizer_trans_actions[] = {
-       221, 0, 1, 0, 211, 0, 244, 43, 
-       43, 334, 0, 337, 0, 1, 213, 0, 
-       0, 0, 3, 0, 0, 0, 0, 0, 
-       0, 0, 0, 0, 0, 0, 0, 45, 
-       340, 343, 0, 0, 0, 0, 0, 0, 
-       0, 0, 0, 0, 0, 0, 0, 0, 
-       0, 0, 0, 0, 0, 0, 0, 0, 
-       71, 0, 1, 0, 0, 55, 1, 3, 
-       0, 1, 0, 53, 0, 223, 0, 0, 
-       0, 5, 253, 0, 3, 0, 256, 0, 
-       0, 0, 0, 0, 3, 0, 250, 0, 
-       0, 0, 0, 0, 3, 0, 352, 69, 
-       0, 0, 0, 0, 1, 3, 0, 1, 
-       0, 0, 89, 0, 1, 0, 73, 0, 
-       226, 0, 355, 87, 0, 0, 0, 0, 
-       1, 3, 0, 1, 0, 0, 109, 0, 
-       1, 0, 91, 0, 229, 0, 1, 93, 
-       0, 0, 0, 0, 1, 97, 0, 1, 
-       95, 125, 0, 1, 0, 111, 0, 232, 
-       7, 262, 0, 265, 0, 1, 113, 147, 
-       0, 1, 0, 0, 129, 1, 3, 0, 
-       1, 0, 127, 0, 235, 0, 0, 0, 
-       0, 0, 3, 0, 271, 0, 0, 0, 
-       0, 0, 0, 0, 0, 0, 0, 274, 
-       0, 0, 0, 0, 1, 131, 0, 0, 
-       0, 0, 0, 3, 0, 358, 145, 0, 
+       227, 0, 1, 0, 217, 0, 250, 0, 
+       0, 0, 0, 0, 0, 45, 0, 3, 
+       0, 51, 340, 343, 0, 1, 219, 0, 
+       0, 0, 43, 0, 0, 0, 0, 0, 
+       0, 0, 49, 0, 0, 0, 47, 77, 
+       0, 1, 0, 0, 61, 1, 3, 0, 
+       1, 0, 59, 0, 229, 0, 0, 0, 
+       5, 259, 0, 3, 0, 262, 0, 0, 
+       0, 0, 0, 3, 0, 256, 0, 0, 
+       0, 0, 0, 3, 0, 352, 75, 0, 
        0, 0, 0, 1, 3, 0, 1, 0, 
-       0, 163, 0, 1, 0, 149, 0, 238, 
-       9, 277, 0, 280, 0, 1, 151, 209, 
-       0, 1, 0, 0, 167, 1, 3, 0, 
-       1, 0, 165, 0, 241, 0, 0, 0, 
-       0, 0, 0, 0, 0, 0, 17, 295, 
-       361, 0, 0, 1, 51, 205, 0, 0, 
-       1, 3, 0, 1, 0, 0, 1, 175, 
-       0, 0, 0, 0, 0, 0, 0, 0, 
-       21, 298, 364, 0, 0, 1, 51, 207, 
-       0, 0, 1, 3, 0, 1, 0, 0, 
-       1, 177, 0, 0, 0, 0, 1, 0, 
-       1, 3, 0, 0, 13, 286, 13, 0, 
-       1, 0, 0, 0, 0, 1, 3, 0, 
-       1, 0, 0, 15, 289, 292, 15, 0, 
-       0, 0, 0, 0, 0, 0, 0, 1, 
-       0, 1, 3, 0, 0, 0, 27, 313, 
-       27, 27, 0, 1, 0, 1, 0, 0, 
-       0, 0, 0, 0, 29, 29, 316, 29, 
-       319, 29, 0, 1, 0, 0, 1, 0, 
-       1, 0, 0, 0, 0, 0, 0, 1, 
-       0, 1, 0, 0, 3, 3, 0, 35, 
-       325, 35, 0, 1, 0, 1, 0, 0, 
-       0, 33, 33, 33, 0, 0, 1, 0, 
-       0, 0, 0, 0, 0, 0, 0, 3, 
-       0, 39, 0, 3, 0, 41, 0, 1, 
+       0, 95, 0, 1, 0, 79, 0, 232, 
+       0, 355, 93, 0, 0, 0, 0, 1, 
+       3, 0, 1, 0, 0, 115, 0, 1, 
+       0, 97, 0, 235, 0, 1, 99, 0, 
+       0, 0, 0, 1, 103, 0, 1, 101, 
+       131, 0, 1, 0, 117, 0, 238, 7, 
+       268, 0, 271, 0, 1, 119, 153, 0, 
+       1, 0, 0, 135, 1, 3, 0, 1, 
+       0, 133, 0, 241, 0, 0, 0, 0, 
+       0, 3, 0, 277, 0, 0, 0, 0, 
+       0, 0, 0, 0, 0, 0, 280, 0, 
+       0, 0, 0, 1, 137, 0, 0, 0, 
+       0, 0, 3, 0, 358, 151, 0, 0, 
        0, 0, 1, 3, 0, 1, 0, 0, 
-       37, 328, 37, 37, 331, 37, 0, 3, 
-       0, 31, 322, 31, 31, 0, 0, 0, 
+       169, 0, 1, 0, 155, 0, 244, 9, 
+       283, 0, 286, 0, 1, 157, 215, 0, 
+       1, 0, 0, 173, 1, 3, 0, 1, 
+       0, 171, 0, 247, 0, 0, 0, 0, 
+       0, 0, 0, 0, 0, 17, 301, 361, 
+       0, 0, 1, 57, 211, 0, 0, 1, 
+       3, 0, 1, 0, 0, 1, 181, 0, 
+       0, 0, 0, 0, 0, 0, 0, 21, 
+       304, 364, 0, 0, 1, 57, 213, 0, 
+       0, 1, 3, 0, 1, 0, 0, 1, 
+       183, 0, 0, 0, 0, 1, 0, 1, 
+       3, 0, 0, 13, 292, 13, 0, 1, 
+       0, 0, 0, 0, 1, 3, 0, 1, 
+       0, 0, 15, 295, 298, 15, 0, 0, 
+       0, 0, 0, 0, 0, 0, 1, 0, 
+       1, 3, 0, 0, 0, 27, 319, 27, 
+       27, 0, 1, 0, 1, 0, 0, 0, 
+       0, 0, 0, 29, 29, 322, 29, 325, 
+       29, 0, 1, 0, 0, 1, 0, 1, 
+       0, 0, 0, 0, 0, 0, 1, 0, 
+       1, 0, 0, 3, 3, 0, 35, 331, 
+       35, 0, 1, 0, 1, 0, 0, 0, 
+       33, 33, 33, 0, 0, 1, 0, 0, 
+       0, 0, 0, 0, 0, 0, 3, 0, 
+       39, 0, 3, 0, 41, 0, 1, 0, 
+       0, 1, 3, 0, 1, 0, 0, 37, 
+       334, 37, 37, 337, 37, 0, 3, 0, 
+       31, 328, 31, 31, 0, 0, 0, 0, 
+       0, 0, 1, 0, 1, 3, 0, 0, 
+       11, 289, 11, 11, 0, 1, 0, 1, 
+       0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 1, 0, 1, 3, 0, 
-       0, 11, 283, 11, 11, 0, 1, 0, 
-       1, 0, 0, 0, 0, 0, 0, 0, 
-       0, 0, 0, 0, 1, 0, 1, 3, 
-       0, 19, 0, 0, 0, 0, 0, 1, 
-       181, 0, 0, 0, 0, 0, 0, 0, 
-       0, 1, 179, 215, 0, 1, 346, 349, 
-       217, 219, 59, 0, 1, 346, 349, 349, 
-       349, 0, 61, 67, 0, 0, 0, 63, 
-       247, 65, 57, 77, 0, 1, 346, 349, 
-       0, 79, 85, 81, 259, 83, 75, 101, 
-       0, 1, 346, 51, 51, 51, 0, 103, 
-       107, 0, 0, 0, 105, 99, 117, 0, 
-       1, 346, 349, 0, 119, 123, 121, 115, 
-       135, 0, 1, 346, 51, 51, 51, 51, 
-       0, 137, 143, 0, 0, 0, 0, 0, 
-       139, 268, 141, 133, 155, 0, 1, 346, 
-       349, 0, 157, 161, 159, 153, 185, 0, 
-       1, 346, 349, 349, 51, 51, 51, 51, 
-       51, 0, 187, 203, 0, 0, 197, 0, 
-       1, 0, 304, 23, 301, 0, 199, 0, 
-       1, 0, 310, 25, 307, 0, 195, 173, 
-       0, 0, 193, 171, 191, 169, 0, 189, 
-       0, 1, 0, 0, 201, 183
+       19, 0, 0, 0, 0, 0, 1, 187, 
+       0, 0, 0, 0, 0, 0, 0, 0, 
+       1, 185, 221, 0, 1, 346, 57, 57, 
+       57, 57, 223, 225, 0, 0, 0, 0, 
+       65, 0, 1, 346, 349, 349, 349, 0, 
+       67, 73, 0, 0, 0, 69, 253, 71, 
+       63, 83, 0, 1, 346, 349, 0, 85, 
+       91, 87, 265, 89, 81, 107, 0, 1, 
+       346, 57, 57, 57, 0, 109, 113, 0, 
+       0, 0, 111, 105, 123, 0, 1, 346, 
+       349, 0, 125, 129, 127, 121, 141, 0, 
+       1, 346, 57, 57, 57, 57, 0, 143, 
+       149, 0, 0, 0, 0, 0, 145, 274, 
+       147, 139, 161, 0, 1, 346, 349, 0, 
+       163, 167, 165, 159, 191, 0, 1, 346, 
+       349, 349, 57, 57, 57, 57, 57, 0, 
+       193, 209, 0, 0, 203, 0, 1, 0, 
+       310, 23, 307, 0, 205, 0, 1, 0, 
+       316, 25, 313, 0, 201, 179, 0, 0, 
+       199, 177, 197, 175, 0, 195, 0, 1, 
+       0, 0, 207, 189
 };
 
 static const short _eo_tokenizer_to_state_actions[] = {
@@ -1125,17 +1113,16 @@ static const short _eo_tokenizer_to_state_actions[] = {
        0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 
-       0, 0, 0, 0, 0, 0, 0, 0, 
-       0, 0, 0, 0, 0, 0, 47, 0, 
-       0, 0, 47, 0, 0, 0, 0, 0, 
-       0, 0, 0, 47, 0, 0, 0, 0, 
-       0, 0, 47, 0, 0, 0, 0, 0, 
-       0, 47, 0, 0, 0, 0, 47, 0, 
-       0, 0, 0, 0, 0, 0, 0, 0, 
-       47, 0, 0, 0, 0, 47, 0, 0, 
+       0, 0, 53, 0, 0, 0, 0, 0, 
+       0, 53, 0, 0, 0, 0, 0, 0, 
+       0, 0, 53, 0, 0, 0, 0, 0, 
+       0, 53, 0, 0, 0, 0, 0, 0, 
+       53, 0, 0, 0, 0, 53, 0, 0, 
+       0, 0, 0, 0, 0, 0, 0, 53, 
+       0, 0, 0, 0, 53, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 
-       0, 0
+       0
 };
 
 static const short _eo_tokenizer_from_state_actions[] = {
@@ -1177,86 +1164,84 @@ 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, 55, 0, 0, 0, 0, 0, 
+       0, 55, 0, 0, 0, 0, 0, 0, 
+       0, 0, 55, 0, 0, 0, 0, 0, 
+       0, 55, 0, 0, 0, 0, 0, 0, 
+       55, 0, 0, 0, 0, 55, 0, 0, 
+       0, 0, 0, 0, 0, 0, 0, 55, 
+       0, 0, 0, 0, 55, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 
-       0, 0, 0, 0, 0, 0, 49, 0, 
-       0, 0, 49, 0, 0, 0, 0, 0, 
-       0, 0, 0, 49, 0, 0, 0, 0, 
-       0, 0, 49, 0, 0, 0, 0, 0, 
-       0, 49, 0, 0, 0, 0, 49, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 
-       49, 0, 0, 0, 0, 49, 0, 0, 
-       0, 0, 0, 0, 0, 0, 0, 0, 
-       0, 0, 0, 0, 0, 0, 0, 0, 
-       0, 0
+       0
 };
 
 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, 1, 1, 1, 1, 1, 
-       1, 1, 1, 1, 1, 1, 1, 1, 
-       1, 1, 57, 57, 57, 57, 57, 57, 
-       57, 57, 57, 57, 57, 57, 57, 57, 
-       57, 57, 57, 57, 57, 57, 57, 57, 
-       57, 57, 57, 57, 57, 57, 96, 96, 
-       96, 96, 96, 96, 107, 107, 107, 107, 
-       116, 116, 116, 116, 116, 116, 127, 127, 
-       127, 127, 127, 127, 127, 127, 127, 127, 
-       127, 127, 146, 146, 146, 146, 146, 160, 
-       160, 160, 160, 160, 160, 160, 160, 160, 
-       160, 160, 160, 160, 160, 160, 160, 160, 
-       160, 160, 160, 160, 160, 160, 160, 160, 
-       160, 160, 160, 160, 160, 160, 160, 160, 
-       160, 160, 160, 160, 160, 160, 207, 207, 
-       207, 207, 207, 207, 218, 218, 218, 218, 
-       218, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 262, 262, 262, 262, 262, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 288, 288, 288, 288, 288, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 232, 232, 232, 232, 232, 
-       232, 232, 232, 232, 232, 232, 0, 497, 
-       498, 498, 0, 507, 508, 508, 508, 508, 
-       512, 513, 514, 0, 522, 523, 523, 524, 
-       525, 526, 0, 536, 537, 537, 537, 537, 
-       541, 0, 549, 550, 550, 551, 0, 562, 
-       563, 563, 563, 563, 563, 569, 570, 571, 
-       0, 579, 580, 580, 581, 0, 595, 596, 
-       596, 599, 599, 603, 596, 607, 607, 611, 
-       596, 615, 596, 619, 621, 596, 624, 596, 
-       596, 629
+       1, 1, 1, 1, 1, 1, 40, 40, 
+       40, 40, 40, 40, 40, 40, 40, 40, 
+       40, 40, 40, 40, 40, 40, 40, 40, 
+       40, 40, 40, 40, 40, 40, 40, 40, 
+       40, 40, 79, 79, 79, 79, 79, 79, 
+       90, 90, 90, 90, 99, 99, 99, 99, 
+       99, 99, 110, 110, 110, 110, 110, 110, 
+       110, 110, 110, 110, 110, 110, 129, 129, 
+       129, 129, 129, 143, 143, 143, 143, 143, 
+       143, 143, 143, 143, 143, 143, 143, 143, 
+       143, 143, 143, 143, 143, 143, 143, 143, 
+       143, 143, 143, 143, 143, 143, 143, 143, 
+       143, 143, 143, 143, 143, 143, 143, 143, 
+       143, 143, 190, 190, 190, 190, 190, 190, 
+       201, 201, 201, 201, 201, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 245, 
+       245, 245, 245, 245, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 271, 
+       271, 271, 271, 271, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 215, 
+       215, 215, 215, 215, 215, 215, 215, 215, 
+       215, 215, 0, 483, 484, 484, 484, 484, 
+       484, 0, 497, 498, 498, 498, 498, 502, 
+       503, 504, 0, 512, 513, 513, 514, 515, 
+       516, 0, 526, 527, 527, 527, 527, 531, 
+       0, 539, 540, 540, 541, 0, 552, 553, 
+       553, 553, 553, 553, 559, 560, 561, 0, 
+       569, 570, 570, 571, 0, 585, 586, 586, 
+       589, 589, 593, 586, 597, 597, 601, 586, 
+       605, 586, 609, 611, 586, 614, 586, 586, 
+       619
 };
 
-static const int eo_tokenizer_start = 318;
-static const int eo_tokenizer_first_final = 318;
+static const int eo_tokenizer_start = 306;
+static const int eo_tokenizer_first_final = 306;
 static const int eo_tokenizer_error = -1;
 
-static const int eo_tokenizer_en_tokenize_accessor = 322;
-static const int eo_tokenizer_en_tokenize_params = 331;
-static const int eo_tokenizer_en_tokenize_property = 338;
-static const int eo_tokenizer_en_tokenize_properties = 345;
-static const int eo_tokenizer_en_tokenize_method = 350;
-static const int eo_tokenizer_en_tokenize_methods = 360;
-static const int eo_tokenizer_en_tokenize_class = 365;
-static const int eo_tokenizer_en_main = 318;
+static const int eo_tokenizer_en_tokenize_accessor = 313;
+static const int eo_tokenizer_en_tokenize_params = 322;
+static const int eo_tokenizer_en_tokenize_property = 329;
+static const int eo_tokenizer_en_tokenize_properties = 336;
+static const int eo_tokenizer_en_tokenize_method = 341;
+static const int eo_tokenizer_en_tokenize_methods = 351;
+static const int eo_tokenizer_en_tokenize_class = 356;
+static const int eo_tokenizer_en_main = 306;
 
 
-#line 918 "eo_lexer.rl"
+#line 929 "eo_lexer.rl"
 
 
 Eina_Bool
@@ -1279,7 +1264,7 @@ eo_tokenizer_walk(Eo_Tokenizer *toknz, const char *source)
      }
 
    
-#line 1283 "eo_lexer.c"
+#line 1268 "eo_lexer.c"
        {
         toknz->cs = eo_tokenizer_start;
         toknz->ts = 0;
@@ -1287,7 +1272,7 @@ eo_tokenizer_walk(Eo_Tokenizer *toknz, const char *source)
         toknz->act = 0;
        }
 
-#line 940 "eo_lexer.rl"
+#line 951 "eo_lexer.rl"
 
    while (!done)
      {
@@ -1314,11 +1299,11 @@ eo_tokenizer_walk(Eo_Tokenizer *toknz, const char *source)
           }
 
         
-#line 1318 "eo_lexer.c"
+#line 1303 "eo_lexer.c"
        {
        int _klen;
        unsigned int _trans;
-       const char *_acts;
+       const unsigned char *_acts;
        unsigned int _nacts;
        const char *_keys;
 
@@ -1329,11 +1314,11 @@ _resume:
        _nacts = (unsigned int) *_acts++;
        while ( _nacts-- > 0 ) {
                switch ( *_acts++ ) {
-       case 35:
+       case 38:
 #line 1 "NONE"
        { toknz->ts = ( toknz->p);}
        break;
-#line 1337 "eo_lexer.c"
+#line 1322 "eo_lexer.c"
                }
        }
 
@@ -1660,24 +1645,41 @@ _eof_trans:
        case 32:
 #line 895 "eo_lexer.rl"
        {
-      if (toknz->tmp.kls != NULL)
-        ABORT(toknz, "there is a pending class definition %s", toknz->tmp.kls->name);
-      toknz->tmp.kls = _eo_tokenizer_class_get(toknz, ( toknz->p));
+      toknz->tmp.kls_type = EOLIAN_CLASS_REGULAR;
    }
        break;
        case 33:
+#line 898 "eo_lexer.rl"
+       {
+      toknz->tmp.kls_type = EOLIAN_CLASS_ABSTRACT;
+   }
+       break;
+       case 34:
 #line 901 "eo_lexer.rl"
        {
-      if (!toknz->tmp.kls)
-         ABORT(toknz, "No pending class definition");
-      toknz->tmp.kls->type = _eo_tokenizer_token_get(toknz, ( toknz->p));
+      toknz->tmp.kls_type = EOLIAN_CLASS_MIXIN;
+   }
+       break;
+       case 35:
+#line 904 "eo_lexer.rl"
+       {
+      toknz->tmp.kls_type = EOLIAN_CLASS_INTERFACE;
    }
        break;
        case 36:
+#line 908 "eo_lexer.rl"
+       {
+      if (toknz->tmp.kls != NULL)
+        ABORT(toknz, "there is a pending class definition %s", toknz->tmp.kls->name);
+      toknz->tmp.kls = _eo_tokenizer_class_get(toknz, ( toknz->p));
+      toknz->tmp.kls->type = toknz->tmp.kls_type;
+   }
+       break;
+       case 39:
 #line 1 "NONE"
        { toknz->te = ( toknz->p)+1;}
        break;
-       case 37:
+       case 40:
 #line 374 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (toknz->tmp.accessor->comment != NULL)
@@ -1686,32 +1688,32 @@ _eof_trans:
       INF("        %s", toknz->tmp.accessor->comment);
    }}
        break;
-       case 38:
+       case 41:
 #line 313 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 39:
+       case 42:
 #line 430 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;}
        break;
-       case 40:
+       case 43:
 #line 431 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;}
        break;
-       case 41:
+       case 44:
 #line 399 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      }");
       toknz->tmp.prop->accessors = eina_list_append(toknz->tmp.prop->accessors, toknz->tmp.accessor);
       toknz->tmp.accessor = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 338; goto _again;}
+      { toknz->cs = 329; goto _again;}
    }}
        break;
-       case 42:
+       case 45:
 #line 322 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -1730,25 +1732,25 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 43:
+       case 46:
 #line 426 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 44:
+       case 47:
 #line 429 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 45:
+       case 48:
 #line 399 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       INF("      }");
       toknz->tmp.prop->accessors = eina_list_append(toknz->tmp.prop->accessors, toknz->tmp.accessor);
       toknz->tmp.accessor = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 338; goto _again;}
+      { toknz->cs = 329; goto _again;}
    }}
        break;
-       case 46:
+       case 49:
 #line 322 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -1767,11 +1769,11 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 47:
+       case 50:
 #line 429 "eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}}
        break;
-       case 48:
+       case 51:
 #line 322 "eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -1790,28 +1792,28 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 49:
+       case 52:
 #line 313 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 50:
+       case 53:
 #line 457 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      }");
       toknz->tmp.param = NULL;
       toknz->current_nesting--;
       if (toknz->tmp.prop)
-        { toknz->cs = 338; goto _again;}
+        { toknz->cs = 329; goto _again;}
       else if (toknz->tmp.meth)
-        { toknz->cs = 350; goto _again;}
+        { toknz->cs = 341; goto _again;}
       else
         ABORT(toknz, "leaving tokenize_params but there is no property nor method pending");
    }}
        break;
-       case 51:
+       case 54:
 #line 322 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -1830,29 +1832,29 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 52:
+       case 55:
 #line 473 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 53:
+       case 56:
 #line 475 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 54:
+       case 57:
 #line 457 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       INF("      }");
       toknz->tmp.param = NULL;
       toknz->current_nesting--;
       if (toknz->tmp.prop)
-        { toknz->cs = 338; goto _again;}
+        { toknz->cs = 329; goto _again;}
       else if (toknz->tmp.meth)
-        { toknz->cs = 350; goto _again;}
+        { toknz->cs = 341; goto _again;}
       else
         ABORT(toknz, "leaving tokenize_params but there is no property nor method pending");
    }}
        break;
-       case 55:
+       case 58:
 #line 322 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -1871,11 +1873,11 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 56:
+       case 59:
 #line 475 "eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}}
        break;
-       case 57:
+       case 60:
 #line 322 "eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -1894,40 +1896,40 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 58:
+       case 61:
 #line 313 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 59:
+       case 62:
 #line 482 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      get {");
       toknz->tmp.accessor = _eo_tokenizer_accessor_get(toknz, GETTER);
       toknz->current_nesting++;
-      { toknz->cs = 322; goto _again;}
+      { toknz->cs = 313; goto _again;}
    }}
        break;
-       case 60:
+       case 63:
 #line 489 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      set {");
       toknz->tmp.accessor = _eo_tokenizer_accessor_get(toknz, SETTER);
       toknz->current_nesting++;
-      { toknz->cs = 322; goto _again;}
+      { toknz->cs = 313; goto _again;}
    }}
        break;
-       case 61:
+       case 64:
 #line 496 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      params {");
       toknz->current_nesting++;
-      { toknz->cs = 331; goto _again;}
+      { toknz->cs = 322; goto _again;}
    }}
        break;
-       case 62:
+       case 65:
 #line 502 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (eina_list_count(toknz->tmp.prop->params) == 0)
@@ -1938,10 +1940,10 @@ _eof_trans:
       toknz->tmp.kls->properties = eina_list_append(toknz->tmp.kls->properties, toknz->tmp.prop);
       toknz->tmp.prop = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 345; goto _again;}
+      { toknz->cs = 336; goto _again;}
    }}
        break;
-       case 63:
+       case 66:
 #line 322 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -1960,11 +1962,11 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 64:
+       case 67:
 #line 519 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 65:
+       case 68:
 #line 502 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       if (eina_list_count(toknz->tmp.prop->params) == 0)
@@ -1975,10 +1977,10 @@ _eof_trans:
       toknz->tmp.kls->properties = eina_list_append(toknz->tmp.kls->properties, toknz->tmp.prop);
       toknz->tmp.prop = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 345; goto _again;}
+      { toknz->cs = 336; goto _again;}
    }}
        break;
-       case 66:
+       case 69:
 #line 322 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -1997,7 +1999,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 67:
+       case 70:
 #line 322 "eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -2016,30 +2018,30 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 68:
+       case 71:
 #line 313 "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:
+       case 72:
 #line 530 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("    %s {", toknz->tmp.prop->name);
       toknz->current_nesting++;
-      { toknz->cs = 338; goto _again;}
+      { toknz->cs = 329; goto _again;}
    }}
        break;
-       case 70:
+       case 73:
 #line 542 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  }");
       toknz->current_nesting--;
-      { toknz->cs = 365; goto _again;}
+      { toknz->cs = 356; goto _again;}
    }}
        break;
-       case 71:
+       case 74:
 #line 322 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -2058,19 +2060,19 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 72:
+       case 75:
 #line 551 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 73:
+       case 76:
 #line 542 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       INF("  }");
       toknz->current_nesting--;
-      { toknz->cs = 365; goto _again;}
+      { toknz->cs = 356; goto _again;}
    }}
        break;
-       case 74:
+       case 77:
 #line 322 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -2089,7 +2091,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 75:
+       case 78:
 #line 322 "eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -2108,7 +2110,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 76:
+       case 79:
 #line 560 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (toknz->tmp.meth->comment != NULL)
@@ -2117,30 +2119,30 @@ _eof_trans:
       INF("        %s", toknz->tmp.meth->comment);
    }}
        break;
-       case 77:
+       case 80:
 #line 313 "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:
+       case 81:
 #line 567 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("      params {");
       toknz->current_nesting++;
-      { toknz->cs = 331; goto _again;}
+      { toknz->cs = 322; goto _again;}
    }}
        break;
-       case 79:
+       case 82:
 #line 633 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;}
        break;
-       case 80:
+       case 83:
 #line 634 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;}
        break;
-       case 81:
+       case 84:
 #line 596 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       Eina_List **l;
@@ -2164,10 +2166,10 @@ _eof_trans:
       *l = eina_list_append(*l, toknz->tmp.meth);
       toknz->tmp.meth = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 360; goto _again;}
+      { toknz->cs = 351; goto _again;}
    }}
        break;
-       case 82:
+       case 85:
 #line 322 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -2186,15 +2188,15 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 83:
+       case 86:
 #line 628 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 84:
+       case 87:
 #line 632 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 85:
+       case 88:
 #line 596 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       Eina_List **l;
@@ -2218,10 +2220,10 @@ _eof_trans:
       *l = eina_list_append(*l, toknz->tmp.meth);
       toknz->tmp.meth = NULL;
       toknz->current_nesting--;
-      { toknz->cs = 360; goto _again;}
+      { toknz->cs = 351; goto _again;}
    }}
        break;
-       case 86:
+       case 89:
 #line 322 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -2240,11 +2242,11 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 87:
+       case 90:
 #line 632 "eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}}
        break;
-       case 88:
+       case 91:
 #line 322 "eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -2263,31 +2265,31 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 89:
+       case 92:
 #line 313 "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:
+       case 93:
 #line 641 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("    %s {", toknz->tmp.meth->name);
       toknz->current_nesting++;
-      { toknz->cs = 350; goto _again;}
+      { toknz->cs = 341; goto _again;}
    }}
        break;
-       case 91:
+       case 94:
 #line 653 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  }");
       toknz->current_methods_type = METH_TYPE_LAST;
       toknz->current_nesting--;
-      { toknz->cs = 365; goto _again;}
+      { toknz->cs = 356; goto _again;}
    }}
        break;
-       case 92:
+       case 95:
 #line 322 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -2306,20 +2308,20 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 93:
+       case 96:
 #line 663 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 94:
+       case 97:
 #line 653 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       INF("  }");
       toknz->current_methods_type = METH_TYPE_LAST;
       toknz->current_nesting--;
-      { toknz->cs = 365; goto _again;}
+      { toknz->cs = 356; goto _again;}
    }}
        break;
-       case 95:
+       case 98:
 #line 322 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -2338,7 +2340,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 96:
+       case 99:
 #line 322 "eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -2357,7 +2359,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 97:
+       case 100:
 #line 672 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       if (toknz->tmp.kls->comment != NULL)
@@ -2365,76 +2367,76 @@ _eof_trans:
       toknz->tmp.kls->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-1);
    }}
        break;
-       case 98:
+       case 101:
 #line 313 "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:
+       case 102:
 #line 683 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       toknz->tmp.kls->inherits = toknz->tmp.str_items;
       toknz->tmp.str_items = NULL;
    }}
        break;
-       case 100:
+       case 103:
 #line 688 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
    }}
        break;
-       case 101:
+       case 104:
 #line 691 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
    }}
        break;
-       case 102:
+       case 105:
 #line 694 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  constructors {");
       toknz->current_methods_type = METH_CONSTRUCTOR;
       toknz->current_nesting++;
-      { toknz->cs = 360; goto _again;}
+      { toknz->cs = 351; goto _again;}
    }}
        break;
-       case 103:
+       case 106:
 #line 701 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  destructors {");
       toknz->current_methods_type = METH_DESTRUCTOR;
       toknz->current_nesting++;
-      { toknz->cs = 360; goto _again;}
+      { toknz->cs = 351; goto _again;}
    }}
        break;
-       case 104:
+       case 107:
 #line 708 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  properties {");
       toknz->current_nesting++;
-      { toknz->cs = 345; goto _again;}
+      { toknz->cs = 336; goto _again;}
    }}
        break;
-       case 105:
+       case 108:
 #line 714 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("  begin methods");
       toknz->current_methods_type = METH_REGULAR;
       toknz->current_nesting++;
-      { toknz->cs = 360; goto _again;}
+      { toknz->cs = 351; goto _again;}
    }}
        break;
-       case 106:
+       case 109:
 #line 721 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       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 = 318; goto _again;}
+      { toknz->cs = 306; goto _again;}
    }}
        break;
-       case 107:
+       case 110:
 #line 322 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -2453,50 +2455,50 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 108:
+       case 111:
 #line 870 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 109:
+       case 112:
 #line 873 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 110:
+       case 113:
 #line 683 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       toknz->tmp.kls->inherits = toknz->tmp.str_items;
       toknz->tmp.str_items = NULL;
    }}
        break;
-       case 111:
+       case 114:
 #line 688 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
    }}
        break;
-       case 112:
+       case 115:
 #line 691 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
    }}
        break;
-       case 113:
+       case 116:
 #line 877 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 114:
+       case 117:
 #line 878 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 115:
+       case 118:
 #line 721 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       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 = 318; goto _again;}
+      { toknz->cs = 306; goto _again;}
    }}
        break;
-       case 116:
+       case 119:
 #line 322 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -2515,15 +2517,15 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 117:
+       case 120:
 #line 877 "eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}}
        break;
-       case 118:
+       case 121:
 #line 878 "eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}}
        break;
-       case 119:
+       case 122:
 #line 322 "eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -2542,22 +2544,22 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 120:
+       case 123:
 #line 313 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("comment[%d] line%03d:%03d", toknz->cs,
           toknz->saved.line, toknz->current_line);
    }}
        break;
-       case 121:
+       case 124:
 #line 889 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       INF("begin class: %s", toknz->tmp.kls->name);
       toknz->current_nesting++;
-      { toknz->cs = 365; goto _again;}
+      { toknz->cs = 356; goto _again;}
    }}
        break;
-       case 122:
+       case 125:
 #line 322 "eo_lexer.rl"
        { toknz->te = ( toknz->p)+1;{
       DBG("error[%d]", toknz->cs);
@@ -2576,11 +2578,11 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 123:
-#line 912 "eo_lexer.rl"
+       case 126:
+#line 923 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;}
        break;
-       case 124:
+       case 127:
 #line 322 "eo_lexer.rl"
        { toknz->te = ( toknz->p);( toknz->p)--;{
       DBG("error[%d]", toknz->cs);
@@ -2599,7 +2601,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-       case 125:
+       case 128:
 #line 322 "eo_lexer.rl"
        {{( toknz->p) = (( toknz->te))-1;}{
       DBG("error[%d]", toknz->cs);
@@ -2618,7 +2620,7 @@ _eof_trans:
       {( toknz->p)++; goto _out; }  /* necessary to stop scanners */
    }}
        break;
-#line 2622 "eo_lexer.c"
+#line 2624 "eo_lexer.c"
                }
        }
 
@@ -2627,11 +2629,11 @@ _again:
        _nacts = (unsigned int) *_acts++;
        while ( _nacts-- > 0 ) {
                switch ( *_acts++ ) {
-       case 34:
+       case 37:
 #line 1 "NONE"
        { toknz->ts = 0;}
        break;
-#line 2635 "eo_lexer.c"
+#line 2637 "eo_lexer.c"
                }
        }
 
@@ -2649,12 +2651,12 @@ _again:
        _out: {}
        }
 
-#line 966 "eo_lexer.rl"
+#line 977 "eo_lexer.rl"
 
         if ( toknz->cs == 
-#line 2656 "eo_lexer.c"
+#line 2658 "eo_lexer.c"
 -1
-#line 967 "eo_lexer.rl"
+#line 978 "eo_lexer.rl"
  )
           {
              ERR("wrong termination");
@@ -2836,16 +2838,7 @@ eo_tokenizer_database_fill(const char *filename)
 
    EINA_LIST_FOREACH(toknz->classes, k, kls)
      {
-        Eolian_Class_Type type = EOLIAN_CLASS_REGULAR;
-        if (kls->type)
-          {
-             if (!strcmp(kls->type, "Regular")) type = EOLIAN_CLASS_REGULAR;
-             else if (!strcmp(kls->type, "RegularNonInstantiable")) type = EOLIAN_CLASS_REGULAR_NON_INSTANT;
-             else if (!strcmp(kls->type, "Mixin")) type = EOLIAN_CLASS_MIXIN;
-             else if (!strcmp(kls->type, "Interface")) type = EOLIAN_CLASS_INTERFACE;
-             else type = EOLIAN_CLASS_UNKNOWN_TYPE;
-          }
-        database_class_add(kls->name, type);
+        database_class_add(kls->name, kls->type);
         database_class_file_set(kls->name, filename);
 
         if (kls->comment) database_class_description_set(kls->name, kls->comment);
index 56adb7e..bee452a 100644 (file)
@@ -2,6 +2,7 @@
 #define __EO_TOKENIZER_H__
 
 #include <Eina.h>
+#include <Eolian.h>
 #include "eo_definitions.h"
 
 /* TOKENIZER */
@@ -34,6 +35,7 @@ typedef struct _eo_tokenizer
 
    Eina_List *classes;
    struct {
+      Eolian_Class_Type kls_type;
       Eo_Class_Def *kls;
       Eo_Property_Def *prop;
       Eo_Method_Def *meth;
index 58cff32..82b22fa 100644 (file)
@@ -892,21 +892,32 @@ _eo_tokenizer_implement_get(Eo_Tokenizer *toknz, char *p)
       fgoto tokenize_class;
    }
 
+   action class_type_set_to_class {
+      toknz->tmp.kls_type = EOLIAN_CLASS_REGULAR;
+   }
+   action class_type_set_to_abstract {
+      toknz->tmp.kls_type = EOLIAN_CLASS_ABSTRACT;
+   }
+   action class_type_set_to_mixin {
+      toknz->tmp.kls_type = EOLIAN_CLASS_MIXIN;
+   }
+   action class_type_set_to_interface {
+      toknz->tmp.kls_type = EOLIAN_CLASS_INTERFACE;
+   }
+
    action end_class_name {
       if (toknz->tmp.kls != NULL)
         ABORT(toknz, "there is a pending class definition %s", toknz->tmp.kls->name);
       toknz->tmp.kls = _eo_tokenizer_class_get(toknz, fpc);
-   }
-
-   action end_class_type {
-      if (!toknz->tmp.kls)
-         ABORT(toknz, "No pending class definition");
-      toknz->tmp.kls->type = _eo_tokenizer_token_get(toknz, fpc);
+      toknz->tmp.kls->type = toknz->tmp.kls_type;
    }
 
    class_name = ident %end_class_name;
-   class_type = ws+ "as" ws+ >save_fpc ("Regular" | "Mixin" | "RegularNonInstantiable" | "Interface") %end_class_type; # class as type(Regular, Mixin...)
-   begin_class = class_name class_type? ignore* begin_def;
+   begin_class = (
+         "class" %class_type_set_to_class |
+         "mixin" %class_type_set_to_mixin |
+         "abstract" %class_type_set_to_abstract |
+         "interface" %class_type_set_to_interface) ws+ class_name ignore* begin_def;
 
    main := |*
       ignore+;    #=> show_ignore;
@@ -1145,16 +1156,7 @@ eo_tokenizer_database_fill(const char *filename)
 
    EINA_LIST_FOREACH(toknz->classes, k, kls)
      {
-        Eolian_Class_Type type = EOLIAN_CLASS_REGULAR;
-        if (kls->type)
-          {
-             if (!strcmp(kls->type, "Regular")) type = EOLIAN_CLASS_REGULAR;
-             else if (!strcmp(kls->type, "RegularNonInstantiable")) type = EOLIAN_CLASS_REGULAR_NON_INSTANT;
-             else if (!strcmp(kls->type, "Mixin")) type = EOLIAN_CLASS_MIXIN;
-             else if (!strcmp(kls->type, "Interface")) type = EOLIAN_CLASS_INTERFACE;
-             else type = EOLIAN_CLASS_UNKNOWN_TYPE;
-          }
-        database_class_add(kls->name, type);
+        database_class_add(kls->name, kls->type);
         database_class_file_set(kls->name, filename);
 
         if (kls->comment) database_class_description_set(kls->name, kls->comment);