--- /dev/null
+
+#line 1 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <Eina.h>
+
+#include "eo_lexer.h"
+#include "eolian_database.h"
+
+static int _eo_tokenizer_log_dom = -1;
+#ifdef CRITICAL
+#undef CRITICAL
+#endif
+#define CRITICAL(...) EINA_LOG_DOM_CRIT(_eo_tokenizer_log_dom, __VA_ARGS__)
+
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_eo_tokenizer_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+#undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_eo_tokenizer_log_dom, __VA_ARGS__)
+
+#ifdef INF
+#undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_eo_tokenizer_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+#undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_eo_tokenizer_log_dom, __VA_ARGS__)
+
+static int _init_counter = 0;
+
+int
+eo_tokenizer_init()
+{
+ if (!_init_counter)
+ {
+ eina_init();
+ eina_log_color_disable_set(EINA_FALSE);
+ _eo_tokenizer_log_dom = eina_log_domain_register("eo_toknz", EINA_COLOR_CYAN);
+ }
+ return _init_counter++;
+}
+
+int
+eo_tokenizer_shutdown()
+{
+ if (_init_counter <= 0) return 0;
+ _init_counter--;
+ if (!_init_counter)
+ {
+ eina_log_domain_unregister(_eo_tokenizer_log_dom);
+ _eo_tokenizer_log_dom = -1;
+ eina_shutdown();
+ }
+ return _init_counter;
+}
+
+static void
+_eo_tokenizer_abort(Eo_Tokenizer *toknz,
+ const char *file, const char* fct, int line,
+ const char *fmt, ...)
+{
+ va_list ap;
+ va_start (ap, fmt);
+ eina_log_vprint(_eo_tokenizer_log_dom, EINA_LOG_LEVEL_ERR,
+ file, fct, line, fmt, ap);
+ va_end(ap);
+ fprintf(stderr, "File:%s\n toknz[%d] n:%d l:%d p:%d pe:%d ts:%s te:%s act:%d\n",
+ toknz->source,
+ toknz->cs, toknz->current_nesting, toknz->current_line,
+ (int)(toknz->p - toknz->buf), (int)(toknz->pe - toknz->buf),
+ toknz->ts, toknz->te, toknz->act);
+ exit(EXIT_FAILURE);
+}
+#define ABORT(toknz, ...) \
+ _eo_tokenizer_abort(toknz, __FILE__, __FUNCTION__, __LINE__, __VA_ARGS__);
+
+static void _eo_tokenizer_normalize_buf(char *buf)
+{
+ int c;
+ char *s, *d;
+ Eina_Bool in_space = EINA_TRUE;
+ Eina_Bool in_newline = EINA_FALSE;
+
+ /* ' '+ -> ' '
+ * '\n' ' '* '*' ' '* -> '\n'
+ */
+ for (s = buf, d = buf; *s != '\0'; s++)
+ {
+ c = *s;
+ *d = c;
+
+ if (!in_space || (c != ' '))
+ d++;
+
+ if (c == ' ')
+ in_space = EINA_TRUE;
+ else
+ in_space = EINA_FALSE;
+
+ if (c == '\n')
+ {
+ in_newline = EINA_TRUE;
+ in_space = EINA_TRUE;
+ }
+ else if (in_newline && c == '*' )
+ {
+ in_space = EINA_TRUE;
+ in_newline = EINA_FALSE;
+ d--;
+ }
+ }
+ /* ' '+$ -> $ */
+ d--;
+ while (*d == ' ') d--;
+ d++;
+ if (d < buf) return;
+ *d = '\0';
+}
+
+static const char*
+_eo_tokenizer_token_get(Eo_Tokenizer *toknz, char *p)
+{
+ if (toknz->saved.tok == NULL) ABORT(toknz, "toknz->saved.tok is NULL");
+ char d[BUFSIZE];
+ int l = (p - toknz->saved.tok);
+ memcpy(d, toknz->saved.tok, l);
+ d[l] = '\0';
+ _eo_tokenizer_normalize_buf(d);
+ toknz->saved.tok = NULL;
+ DBG("token : >%s<", d);
+ return eina_stringshare_add(d);
+}
+
+static Eo_Class_Def*
+_eo_tokenizer_class_get(Eo_Tokenizer *toknz, char *p)
+{
+ Eo_Class_Def *kls = calloc(1, sizeof(Eo_Class_Def));
+ if (kls == NULL) ABORT(toknz, "calloc Eo_Class_Def failure");
+
+ kls->name = _eo_tokenizer_token_get(toknz, p);
+
+ return kls;
+}
+
+static Eo_Property_Def*
+_eo_tokenizer_property_get(Eo_Tokenizer *toknz, char *p)
+{
+ Eo_Property_Def *prop = calloc(1, sizeof(Eo_Property_Def));
+ if (prop == NULL) ABORT(toknz, "calloc Eo_Property_Def failure");
+
+ prop->name = _eo_tokenizer_token_get(toknz, p);
+
+ return prop;
+}
+
+static Eo_Method_Def*
+_eo_tokenizer_method_get(Eo_Tokenizer *toknz, char *p)
+{
+ Eo_Method_Def *meth = calloc(1, sizeof(Eo_Method_Def));
+ if (meth == NULL) ABORT(toknz, "calloc Eo_Method_Def failure");
+
+ meth->name = _eo_tokenizer_token_get(toknz, p);
+
+ return meth;
+}
+
+static Eo_Param_Def*
+_eo_tokenizer_param_get(Eo_Tokenizer *toknz, char *p)
+{
+ char *s;
+
+ Eo_Param_Def *param = calloc(1, sizeof(Eo_Param_Def));
+ if (param == NULL) ABORT(toknz, "calloc Eo_Param_Def failure");
+
+ s = p - 1; /* Don't look at ';' */
+ /* Remove any space between the param name and ';'
+ * This loop fixes the case where "char *name ;" becomes the type of the param.
+ */
+ while (*s == ' ') s--;
+ for (; s >= toknz->saved.tok; s--)
+ {
+ if ((*s == ' ') || (*s == '*'))
+ break;
+ }
+
+ if (s == toknz->saved.tok)
+ ABORT(toknz, "wrong parameter: %s", _eo_tokenizer_token_get(toknz, p));
+ s++;
+
+ param->way = PARAM_IN;
+ if (strncmp(toknz->saved.tok, "in ", 3) == 0)
+ {
+ toknz->saved.tok += 3;
+ param->way = PARAM_IN;
+ }
+ else if (strncmp(toknz->saved.tok, "out ", 4) == 0)
+ {
+ toknz->saved.tok += 4;
+ param->way = PARAM_OUT;
+ }
+ else if (strncmp(toknz->saved.tok, "inout ", 6) == 0)
+ {
+ toknz->saved.tok += 6;
+ param->way = PARAM_INOUT;
+ }
+
+ param->type = _eo_tokenizer_token_get(toknz, s);
+
+ toknz->saved.tok = s;
+ param->name = _eo_tokenizer_token_get(toknz, p);
+
+ return param;
+}
+
+static Eo_Accessor_Param*
+_eo_tokenizer_accessor_param_get(Eo_Tokenizer *toknz, char *p)
+{
+ Eo_Accessor_Param *param = calloc(1, sizeof(Eo_Accessor_Param));
+ if (param == NULL) ABORT(toknz, "calloc Eo_Accessor_Param failure");
+
+ /* Remove the colon and spaces - we just need the param name */
+ while (*p == ':') p--;
+ while (*p == ' ') p--;
+ param->name = _eo_tokenizer_token_get(toknz, p);
+
+ return param;
+}
+
+static Eo_Accessor_Def *
+_eo_tokenizer_accessor_get(Eo_Tokenizer *toknz, Eo_Accessor_Type type)
+{
+ Eo_Accessor_Def *accessor = calloc(1, sizeof(Eo_Accessor_Def));
+ if (accessor == NULL) ABORT(toknz, "calloc Eo_Accessor_Def failure");
+
+ accessor->type = type;
+
+ return accessor;
+}
+
+static Eo_Signal_Def*
+_eo_tokenizer_signal_get(Eo_Tokenizer *toknz, char *p)
+{
+ Eo_Signal_Def *sgn = calloc(1, sizeof(Eo_Signal_Def));
+ if (sgn == NULL) ABORT(toknz, "calloc Eo_Signal_Def failure");
+
+ sgn->name = _eo_tokenizer_token_get(toknz, p);
+
+ return sgn;
+}
+
+static Eo_DfltCtor_Def*
+_eo_tokenizer_dflt_ctor_get(Eo_Tokenizer *toknz, char *p)
+{
+ Eo_DfltCtor_Def *ctor = calloc(1, sizeof(Eo_DfltCtor_Def));
+ if (ctor == NULL) ABORT(toknz, "calloc Eo_DfltCtor_Def failure");
+
+ ctor->name = _eo_tokenizer_token_get(toknz, p);
+
+ return ctor;
+}
+
+static Eo_DfltDtor_Def*
+_eo_tokenizer_dflt_dtor_get(Eo_Tokenizer *toknz, char *p)
+{
+ Eo_DfltDtor_Def *dtor = calloc(1, sizeof(Eo_DfltDtor_Def));
+ if (dtor == NULL) ABORT(toknz, "calloc Eo_DfltDtor_Def failure");
+
+ dtor->name = _eo_tokenizer_token_get(toknz, p);
+
+ return dtor;
+}
+
+static Eo_Implement_Def*
+_eo_tokenizer_implement_get(Eo_Tokenizer *toknz, char *p)
+{
+ Eo_Implement_Def *impl = calloc(1, sizeof(Eo_Implement_Def));
+ if (impl == NULL) ABORT(toknz, "calloc Eo_DfltDtor_Def failure");
+
+ impl->meth_name = _eo_tokenizer_token_get(toknz, p);
+
+ return impl;
+}
+
+
+#line 364 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+
+
+
+#line 298 "eo_lexer.c"
+static const 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,
+ 22, 1, 23, 1, 24, 1, 25, 1,
+ 26, 1, 27, 1, 28, 1, 29, 1,
+ 30, 1, 31, 1, 32, 1, 33, 1,
+ 34, 1, 35, 1, 36, 1, 37, 1,
+ 38, 1, 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, 77, 1,
+ 78, 1, 79, 1, 80, 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, 2, 0, 38, 2, 0,
+ 48, 2, 0, 56, 2, 0, 65, 2,
+ 0, 73, 2, 0, 84, 2, 0, 92,
+ 2, 0, 110, 2, 4, 44, 2, 5,
+ 39, 2, 6, 2, 2, 7, 40, 2,
+ 8, 52, 2, 10, 0, 2, 10, 66,
+ 2, 12, 80, 2, 13, 75, 2, 14,
+ 76, 2, 15, 0, 2, 15, 85, 2,
+ 16, 0, 2, 17, 0, 2, 18, 0,
+ 2, 18, 2, 2, 19, 0, 2, 21,
+ 0, 2, 22, 0, 2, 22, 104, 2,
+ 23, 0, 2, 23, 105, 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, 111,
+ 2, 33, 0, 2, 33, 111, 2, 36,
+ 1, 2, 36, 2, 2, 36, 3, 2,
+ 36, 9, 2, 36, 11, 2, 36, 19,
+ 2, 36, 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, 690, 691,
+ 692, 693, 697, 705, 713, 726, 731, 735,
+ 736, 737, 738, 739, 740, 752, 757, 761,
+ 762, 766, 767, 768, 769, 770, 771, 775,
+ 784, 791, 798, 809, 813, 827, 837, 844,
+ 856, 861, 862, 867, 868, 869, 870, 871,
+ 872, 875, 882, 889, 897, 898, 902, 909,
+ 917, 921, 922, 923, 924, 934, 936, 939,
+ 949, 961, 968, 980, 981, 982, 983, 984,
+ 985, 986, 987, 988, 992, 1000, 1007, 1019,
+ 1024, 1031, 1032, 1033, 1034, 1035, 1036, 1037,
+ 1038, 1039, 1040, 1041, 1042, 1043, 1047, 1054,
+ 1061, 1069, 1070, 1071, 1072, 1073, 1074, 1078,
+ 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
+ 1090, 1091, 1092, 1093, 1094, 1095, 1099, 1107,
+ 1115, 1127, 1131, 1143, 1144, 1145, 1155, 1157,
+ 1160, 1168, 1169, 1177, 1180, 1182, 1189, 1200,
+ 1203, 1205, 1212, 1220, 1228, 1232, 1232, 1233,
+ 1242, 1245, 1247, 1258, 1262, 1262, 1263, 1271,
+ 1274, 1276, 1277, 1278, 1279, 1280, 1289, 1292,
+ 1294, 1301, 1302, 1311, 1314, 1316, 1317, 1318,
+ 1319, 1320, 1324, 1324, 1325, 1334, 1337, 1339,
+ 1346, 1347, 1359, 1362, 1364, 1365, 1372, 1375,
+ 1378, 1379, 1386, 1389, 1392, 1394, 1395, 1398,
+ 1399, 1400, 1401
+};
+
+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,
+ 42, 47, 10, 42, 95, 0, 32, 48,
+ 57, 65, 90, 97, 122, 10, 42, 10,
+ 42, 47, 10, 9, 13, 32, 58, 95,
+ 48, 57, 65, 90, 97, 122, 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, 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, 65, 90, 97, 122, 95,
+ 48, 57, 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, 65, 90, 97,
+ 122, 9, 13, 32, 42, 95, 48, 57,
+ 65, 90, 97, 122, 9, 13, 32, 42,
+ 59, 95, 48, 57, 65, 90, 97, 122,
+ 9, 13, 32, 47, 42, 64, 10, 95,
+ 0, 32, 48, 57, 65, 90, 97, 122,
+ 10, 42, 10, 42, 47, 10, 42, 10,
+ 42, 47, 10, 9, 13, 32, 42, 59,
+ 95, 48, 57, 65, 90, 97, 122, 9,
+ 13, 32, 47, 42, 64, 10, 95, 0,
+ 32, 48, 57, 65, 90, 97, 122, 10,
+ 42, 10, 42, 47, 10, 42, 10, 42,
+ 47, 10, 116, 10, 123, 0, 32, 114,
+ 97, 109, 115, 10, 123, 0, 32, 116,
+ 10, 123, 0, 32, 10, 42, 10, 42,
+ 47, 10, 10, 95, 123, 0, 32, 48,
+ 57, 65, 90, 97, 122, 10, 123, 0,
+ 32, 10, 42, 64, 10, 42, 10, 42,
+ 47, 10, 42, 95, 0, 32, 48, 57,
+ 65, 90, 97, 122, 10, 42, 10, 42,
+ 47, 10, 103, 97, 99, 121, 9, 13,
+ 32, 9, 13, 32, 65, 90, 97, 122,
+ 95, 48, 57, 65, 90, 97, 122, 59,
+ 95, 48, 57, 65, 90, 97, 122, 106,
+ 101, 99, 116, 9, 13, 32, 58, 9,
+ 13, 32, 99, 111, 110, 115, 116, 59,
+ 114, 97, 109, 115, 10, 123, 0, 32,
+ 116, 117, 114, 110, 9, 13, 32, 9,
+ 13, 32, 65, 90, 97, 122, 9, 13,
+ 32, 42, 95, 48, 57, 65, 90, 97,
+ 122, 9, 13, 32, 42, 59, 95, 48,
+ 57, 65, 90, 97, 122, 9, 13, 32,
+ 47, 42, 64, 10, 95, 0, 32, 48,
+ 57, 65, 90, 97, 122, 10, 42, 10,
+ 42, 47, 10, 42, 10, 42, 47, 10,
+ 10, 95, 123, 0, 32, 48, 57, 65,
+ 90, 97, 122, 10, 123, 0, 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,
+ 110, 115, 116, 114, 117, 99, 116, 111,
+ 114, 10, 59, 115, 0, 32, 10, 59,
+ 0, 32, 42, 64, 10, 95, 0, 32,
+ 48, 57, 65, 90, 97, 122, 10, 42,
+ 10, 42, 47, 10, 123, 0, 32, 115,
+ 116, 114, 117, 99, 116, 111, 114, 10,
+ 59, 115, 0, 32, 10, 59, 0, 32,
+ 42, 64, 10, 95, 0, 32, 48, 57,
+ 65, 90, 97, 122, 10, 42, 10, 42,
+ 47, 10, 123, 0, 32, 112, 108, 101,
+ 109, 101, 110, 116, 115, 10, 123, 0,
+ 32, 10, 125, 0, 32, 65, 90, 97,
+ 122, 58, 95, 48, 57, 65, 90, 97,
+ 122, 10, 58, 59, 95, 123, 0, 32,
+ 48, 57, 65, 90, 97, 122, 10, 59,
+ 123, 0, 32, 10, 108, 0, 32, 101,
+ 103, 97, 99, 121, 9, 10, 13, 32,
+ 59, 123, 0, 31, 65, 90, 97, 122,
+ 10, 59, 123, 0, 32, 10, 125, 0,
+ 32, 59, 10, 112, 0, 32, 97, 114,
+ 97, 109, 115, 10, 123, 0, 32, 10,
+ 58, 59, 0, 32, 65, 90, 97, 122,
+ 9, 13, 32, 65, 90, 97, 122, 95,
+ 48, 57, 65, 90, 97, 122, 10, 59,
+ 95, 0, 32, 48, 57, 65, 90, 97,
+ 122, 10, 59, 0, 32, 9, 10, 13,
+ 32, 47, 58, 59, 125, 0, 31, 65,
+ 90, 97, 122, 10, 58, 59, 125, 0,
+ 32, 65, 90, 97, 122, 95, 48, 57,
+ 65, 90, 97, 122, 9, 13, 32, 58,
+ 59, 95, 48, 57, 65, 90, 97, 122,
+ 9, 13, 32, 58, 59, 59, 10, 114,
+ 125, 0, 32, 101, 116, 117, 114, 110,
+ 9, 13, 32, 9, 13, 32, 65, 90,
+ 97, 122, 95, 48, 57, 65, 90, 97,
+ 122, 58, 95, 48, 57, 65, 90, 97,
+ 122, 58, 65, 90, 97, 122, 95, 48,
+ 57, 65, 90, 97, 122, 59, 95, 48,
+ 57, 65, 90, 97, 122, 10, 125, 0,
+ 32, 59, 42, 64, 10, 95, 0, 32,
+ 48, 57, 65, 90, 97, 122, 10, 42,
+ 10, 42, 47, 10, 58, 59, 125, 0,
+ 32, 65, 90, 97, 122, 9, 10, 13,
+ 32, 59, 123, 0, 31, 65, 90, 97,
+ 122, 95, 48, 57, 65, 90, 97, 122,
+ 10, 59, 95, 123, 0, 32, 48, 57,
+ 65, 90, 97, 122, 58, 59, 104, 101,
+ 114, 105, 116, 115, 10, 123, 0, 32,
+ 10, 125, 0, 32, 65, 90, 97, 122,
+ 95, 48, 57, 65, 90, 97, 122, 10,
+ 44, 95, 125, 0, 32, 48, 57, 65,
+ 90, 97, 122, 10, 44, 125, 0, 32,
+ 10, 0, 32, 65, 90, 97, 122, 59,
+ 103, 97, 99, 121, 95, 112, 114, 101,
+ 102, 105, 120, 10, 58, 0, 32, 10,
+ 0, 32, 65, 90, 97, 122, 95, 48,
+ 57, 65, 90, 97, 122, 59, 95, 48,
+ 57, 65, 90, 97, 122, 116, 104, 111,
+ 100, 115, 10, 123, 0, 32, 111, 112,
+ 101, 114, 116, 105, 101, 115, 10, 123,
+ 0, 32, 103, 110, 97, 108, 115, 10,
+ 123, 0, 32, 10, 125, 0, 32, 65,
+ 90, 97, 122, 44, 95, 48, 57, 65,
+ 90, 97, 122, 10, 44, 59, 95, 0,
+ 32, 48, 57, 65, 90, 97, 122, 10,
+ 59, 0, 32, 9, 10, 13, 32, 47,
+ 125, 0, 31, 65, 90, 97, 122, 42,
+ 64, 10, 95, 0, 32, 48, 57, 65,
+ 90, 97, 122, 10, 42, 10, 42, 47,
+ 10, 125, 0, 32, 65, 90, 97, 122,
+ 59, 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, 90, 97, 122, 10, 0,
+ 32, 42, 47, 95, 48, 57, 65, 90,
+ 97, 122, 59, 10, 47, 99, 100, 105,
+ 108, 109, 112, 115, 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,
+ 109, 110, 101, 10, 0, 32, 101, 114,
+ 105, 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,
+ 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, 1, 1, 1,
+ 1, 2, 2, 2, 5, 3, 2, 1,
+ 1, 1, 1, 1, 6, 3, 2, 1,
+ 2, 1, 1, 1, 1, 1, 2, 3,
+ 3, 1, 3, 2, 8, 4, 1, 6,
+ 5, 1, 3, 1, 1, 1, 1, 1,
+ 3, 3, 1, 2, 1, 0, 1, 2,
+ 2, 1, 1, 1, 2, 2, 3, 4,
+ 6, 1, 4, 1, 1, 1, 1, 1,
+ 1, 1, 1, 2, 2, 1, 4, 3,
+ 1, 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,
+ 1, 1, 1, 1, 1, 2, 2, 2,
+ 4, 2, 6, 1, 1, 2, 2, 3,
+ 2, 1, 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, 2, 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, 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, 0, 0, 0,
+ 0, 1, 3, 3, 4, 1, 1, 0,
+ 0, 0, 0, 0, 3, 1, 1, 0,
+ 1, 0, 0, 0, 0, 0, 1, 3,
+ 2, 3, 4, 1, 3, 3, 3, 3,
+ 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 2, 3, 3, 0, 2, 3, 3,
+ 1, 0, 0, 0, 4, 0, 0, 3,
+ 3, 3, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 3, 3, 4, 1,
+ 3, 0, 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,
+ 0, 0, 0, 0, 0, 1, 3, 3,
+ 4, 1, 3, 0, 0, 4, 0, 0,
+ 3, 0, 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, 1, 0,
+ 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, 753, 755,
+ 757, 759, 763, 769, 775, 785, 790, 794,
+ 796, 798, 800, 802, 804, 814, 819, 823,
+ 825, 829, 831, 833, 835, 837, 839, 843,
+ 850, 856, 861, 869, 873, 885, 893, 898,
+ 908, 914, 916, 921, 923, 925, 927, 929,
+ 931, 935, 941, 946, 952, 954, 957, 962,
+ 968, 972, 974, 976, 978, 985, 988, 992,
+ 1000, 1010, 1015, 1024, 1026, 1028, 1030, 1032,
+ 1034, 1036, 1038, 1040, 1044, 1050, 1055, 1064,
+ 1069, 1074, 1076, 1078, 1080, 1082, 1084, 1086,
+ 1088, 1090, 1092, 1094, 1096, 1098, 1102, 1107,
+ 1112, 1118, 1120, 1122, 1124, 1126, 1128, 1132,
+ 1134, 1136, 1138, 1140, 1142, 1144, 1146, 1148,
+ 1152, 1154, 1156, 1158, 1160, 1162, 1166, 1172,
+ 1178, 1187, 1191, 1201, 1203, 1205, 1212, 1215,
+ 1219, 1225, 1227, 1233, 1236, 1239, 1244, 1253,
+ 1256, 1259, 1264, 1270, 1276, 1281, 1282, 1284,
+ 1291, 1294, 1297, 1306, 1311, 1312, 1314, 1322,
+ 1325, 1328, 1330, 1332, 1334, 1336, 1343, 1346,
+ 1349, 1354, 1356, 1365, 1368, 1371, 1373, 1375,
+ 1377, 1379, 1384, 1385, 1387, 1394, 1397, 1400,
+ 1405, 1407, 1419, 1422, 1425, 1427, 1434, 1437,
+ 1440, 1442, 1449, 1452, 1455, 1458, 1460, 1463,
+ 1465, 1467, 1469
+};
+
+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,
+ 231, 303, 231, 304, 231, 305, 231, 306,
+ 307, 305, 231, 308, 310, 307, 309, 309,
+ 231, 312, 311, 311, 311, 311, 231, 314,
+ 312, 315, 311, 316, 313, 311, 311, 311,
+ 231, 318, 307, 319, 317, 231, 320, 321,
+ 319, 231, 322, 231, 323, 231, 324, 231,
+ 325, 231, 326, 231, 328, 329, 328, 328,
+ 330, 332, 327, 331, 331, 231, 334, 335,
+ 336, 333, 231, 337, 338, 335, 231, 307,
+ 231, 339, 340, 336, 231, 341, 231, 342,
+ 231, 343, 231, 344, 231, 345, 231, 346,
+ 347, 345, 231, 348, 349, 350, 347, 351,
+ 351, 231, 349, 349, 349, 352, 352, 231,
+ 353, 353, 353, 353, 231, 355, 356, 353,
+ 354, 353, 353, 353, 231, 358, 350, 357,
+ 231, 350, 360, 350, 350, 361, 349, 350,
+ 362, 359, 351, 351, 231, 360, 349, 350,
+ 362, 359, 351, 351, 231, 363, 363, 363,
+ 363, 231, 364, 364, 364, 365, 366, 363,
+ 363, 363, 363, 231, 367, 367, 367, 349,
+ 350, 231, 368, 231, 369, 370, 371, 368,
+ 231, 372, 231, 373, 231, 374, 231, 375,
+ 231, 376, 231, 377, 377, 377, 231, 377,
+ 377, 377, 378, 378, 231, 379, 379, 379,
+ 379, 231, 380, 379, 379, 379, 379, 231,
+ 381, 231, 382, 382, 231, 383, 383, 383,
+ 383, 231, 384, 383, 383, 383, 383, 231,
+ 386, 371, 385, 231, 335, 231, 387, 231,
+ 388, 231, 389, 390, 388, 390, 390, 390,
+ 231, 392, 393, 391, 392, 393, 394, 391,
+ 396, 397, 398, 400, 395, 399, 399, 231,
+ 401, 334, 401, 401, 335, 336, 333, 402,
+ 402, 231, 403, 403, 403, 403, 231, 405,
+ 406, 403, 407, 404, 403, 403, 403, 231,
+ 311, 231, 408, 231, 409, 231, 410, 231,
+ 411, 231, 412, 231, 413, 231, 414, 231,
+ 415, 416, 414, 231, 417, 419, 416, 418,
+ 418, 231, 420, 420, 420, 420, 231, 422,
+ 423, 420, 424, 421, 420, 420, 420, 231,
+ 426, 427, 419, 425, 231, 428, 427, 418,
+ 418, 231, 429, 231, 430, 231, 431, 231,
+ 432, 231, 433, 231, 434, 231, 435, 231,
+ 436, 231, 437, 231, 438, 231, 439, 231,
+ 440, 231, 441, 442, 440, 231, 443, 442,
+ 444, 444, 231, 445, 445, 445, 445, 231,
+ 446, 445, 445, 445, 445, 231, 447, 231,
+ 448, 231, 449, 231, 450, 231, 451, 231,
+ 452, 453, 451, 231, 454, 231, 455, 231,
+ 456, 231, 457, 231, 458, 231, 459, 231,
+ 460, 231, 461, 231, 462, 463, 461, 231,
+ 464, 231, 465, 231, 466, 231, 467, 231,
+ 468, 231, 469, 470, 468, 231, 471, 473,
+ 470, 472, 472, 231, 474, 474, 474, 474,
+ 474, 231, 476, 474, 477, 474, 475, 474,
+ 474, 474, 231, 479, 480, 478, 231, 480,
+ 471, 480, 480, 481, 473, 470, 472, 472,
+ 231, 482, 231, 483, 231, 484, 485, 483,
+ 485, 485, 485, 231, 487, 488, 486, 487,
+ 488, 489, 486, 491, 493, 490, 492, 492,
+ 231, 494, 231, 497, 498, 496, 499, 499,
+ 495, 497, 496, 500, 1, 5, 501, 10,
+ 10, 10, 10, 501, 504, 505, 507, 508,
+ 509, 503, 506, 506, 502, 504, 503, 510,
+ 512, 68, 511, 71, 71, 71, 71, 511,
+ 71, 513, 71, 71, 71, 511, 71, 514,
+ 71, 71, 71, 511, 96, 96, 96, 97,
+ 515, 516, 517, 511, 520, 521, 523, 519,
+ 522, 522, 518, 520, 519, 524, 107, 111,
+ 525, 113, 113, 113, 113, 113, 113, 113,
+ 113, 525, 116, 116, 116, 117, 526, 527,
+ 528, 525, 531, 532, 533, 534, 535, 536,
+ 530, 529, 531, 530, 537, 127, 131, 538,
+ 539, 538, 540, 538, 541, 538, 542, 538,
+ 545, 546, 548, 544, 547, 547, 543, 545,
+ 544, 549, 146, 150, 550, 154, 154, 154,
+ 154, 550, 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, 570, 562, 573, 574, 576, 572, 575,
+ 575, 571, 573, 572, 577, 218, 222, 578,
+ 226, 226, 226, 226, 578, 579, 578, 582,
+ 583, 584, 585, 586, 587, 588, 589, 590,
+ 591, 581, 580, 582, 581, 592, 594, 243,
+ 593, 595, 593, 260, 598, 260, 260, 599,
+ 597, 596, 598, 597, 596, 602, 601, 600,
+ 603, 593, 286, 606, 286, 286, 607, 605,
+ 604, 606, 605, 604, 610, 609, 608, 611,
+ 612, 593, 613, 593, 616, 615, 614, 617,
+ 593, 618, 593, 619, 593, 620, 593, 0
+};
+
+static const short _eo_tokenizer_trans_targs[] = {
+ 322, 0, 0, 1, 322, 2, 322, 4,
+ 5, 4, 3, 322, 4, 4, 322, 5,
+ 6, 7, 8, 8, 9, 18, 22, 10,
+ 11, 12, 13, 14, 15, 16, 17, 4,
+ 4, 322, 19, 20, 21, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41,
+ 326, 43, 43, 44, 45, 326, 45, 46,
+ 46, 46, 47, 326, 48, 326, 50, 49,
+ 51, 52, 53, 52, 53, 53, 326, 55,
+ 56, 57, 58, 59, 60, 61, 326, 63,
+ 64, 65, 66, 67, 68, 69, 332, 326,
+ 70, 71, 72, 73, 73, 74, 74, 74,
+ 75, 333, 335, 76, 76, 77, 335, 78,
+ 335, 79, 339, 335, 80, 81, 82, 83,
+ 83, 84, 84, 84, 85, 340, 342, 86,
+ 86, 87, 342, 88, 342, 90, 90, 342,
+ 92, 93, 94, 95, 95, 342, 97, 97,
+ 342, 349, 98, 98, 99, 349, 100, 349,
+ 102, 102, 101, 349, 102, 102, 349, 354,
+ 104, 104, 105, 106, 354, 106, 107, 107,
+ 107, 108, 354, 109, 354, 111, 112, 113,
+ 114, 115, 116, 117, 354, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 354,
+ 130, 131, 132, 133, 133, 354, 135, 136,
+ 137, 138, 139, 140, 141, 361, 354, 142,
+ 143, 144, 145, 145, 146, 146, 146, 147,
+ 362, 364, 148, 148, 149, 364, 150, 364,
+ 152, 152, 151, 364, 152, 152, 364, 369,
+ 154, 154, 155, 156, 369, 156, 157, 157,
+ 157, 158, 369, 159, 369, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 170,
+ 373, 176, 170, 170, 373, 369, 172, 173,
+ 173, 174, 174, 174, 175, 375, 176, 369,
+ 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 186, 377, 192, 186, 186, 377, 369,
+ 188, 189, 189, 190, 190, 190, 191, 379,
+ 192, 369, 194, 195, 196, 197, 198, 199,
+ 200, 201, 201, 202, 202, 203, 260, 204,
+ 259, 205, 205, 202, 206, 205, 205, 206,
+ 206, 207, 208, 209, 210, 211, 212, 213,
+ 256, 213, 214, 257, 216, 213, 213, 214,
+ 216, 214, 215, 216, 217, 218, 219, 220,
+ 221, 222, 222, 223, 223, 224, 228, 230,
+ 225, 226, 227, 227, 228, 227, 227, 229,
+ 229, 250, 233, 231, 232, 224, 228, 232,
+ 234, 234, 235, 249, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 248, 248, 251, 252, 252, 253, 253,
+ 253, 254, 255, 229, 229, 224, 228, 230,
+ 233, 256, 257, 258, 213, 213, 214, 216,
+ 369, 262, 263, 264, 265, 266, 267, 267,
+ 268, 268, 269, 273, 270, 271, 271, 272,
+ 273, 271, 271, 272, 272, 369, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 285, 286, 286, 287, 288, 382, 290,
+ 291, 292, 293, 294, 294, 369, 296, 297,
+ 298, 299, 300, 301, 302, 303, 303, 369,
+ 305, 306, 307, 308, 309, 309, 310, 310,
+ 311, 321, 312, 313, 313, 314, 313, 313,
+ 314, 315, 316, 317, 317, 318, 318, 318,
+ 319, 320, 310, 310, 311, 321, 369, 322,
+ 323, 323, 324, 325, 322, 322, 326, 327,
+ 327, 328, 329, 330, 331, 334, 326, 326,
+ 42, 54, 62, 326, 326, 326, 335, 336,
+ 336, 337, 338, 341, 335, 335, 335, 335,
+ 335, 342, 343, 343, 344, 345, 346, 347,
+ 348, 342, 342, 89, 91, 96, 342, 349,
+ 350, 350, 351, 352, 353, 349, 349, 349,
+ 354, 355, 355, 356, 357, 358, 359, 360,
+ 363, 354, 354, 103, 110, 118, 129, 134,
+ 354, 354, 354, 364, 365, 365, 366, 367,
+ 368, 364, 364, 364, 369, 370, 370, 371,
+ 372, 376, 380, 381, 383, 384, 385, 386,
+ 369, 369, 153, 160, 369, 374, 374, 171,
+ 369, 374, 374, 177, 369, 378, 378, 187,
+ 369, 378, 378, 193, 261, 274, 369, 382,
+ 382, 289, 295, 304, 369
+};
+
+static const short _eo_tokenizer_trans_actions[] = {
+ 201, 0, 1, 0, 191, 0, 224, 43,
+ 43, 314, 0, 317, 0, 1, 193, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 45,
+ 320, 323, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 69, 0, 1, 0, 0, 55, 1, 3,
+ 0, 1, 0, 53, 0, 203, 0, 0,
+ 0, 5, 233, 0, 3, 0, 236, 0,
+ 0, 0, 0, 0, 3, 0, 230, 0,
+ 0, 0, 0, 0, 3, 0, 332, 67,
+ 0, 0, 0, 0, 1, 3, 0, 1,
+ 0, 0, 85, 0, 1, 0, 71, 0,
+ 206, 0, 335, 83, 0, 0, 0, 0,
+ 1, 3, 0, 1, 0, 0, 103, 0,
+ 1, 0, 87, 0, 209, 0, 1, 89,
+ 0, 0, 0, 0, 1, 93, 0, 1,
+ 91, 117, 0, 1, 0, 105, 0, 212,
+ 7, 242, 0, 245, 0, 1, 107, 137,
+ 0, 1, 0, 0, 121, 1, 3, 0,
+ 1, 0, 119, 0, 215, 0, 0, 0,
+ 0, 0, 3, 0, 251, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 254,
+ 0, 0, 0, 0, 1, 123, 0, 0,
+ 0, 0, 0, 3, 0, 338, 135, 0,
+ 0, 0, 0, 1, 3, 0, 1, 0,
+ 0, 151, 0, 1, 0, 139, 0, 218,
+ 9, 257, 0, 260, 0, 1, 141, 189,
+ 0, 1, 0, 0, 155, 1, 3, 0,
+ 1, 0, 153, 0, 221, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 17, 275,
+ 341, 0, 0, 1, 51, 185, 0, 0,
+ 1, 3, 0, 1, 0, 0, 1, 163,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 21, 278, 344, 0, 0, 1, 51, 187,
+ 0, 0, 1, 3, 0, 1, 0, 0,
+ 1, 165, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 1, 3, 0, 0,
+ 0, 27, 293, 27, 27, 0, 1, 0,
+ 1, 0, 0, 0, 0, 0, 0, 29,
+ 29, 296, 29, 299, 29, 0, 1, 0,
+ 0, 1, 0, 1, 0, 0, 0, 0,
+ 0, 0, 1, 0, 1, 0, 0, 3,
+ 3, 0, 35, 305, 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, 308, 37, 37, 311,
+ 37, 0, 3, 0, 31, 302, 31, 31,
+ 159, 0, 0, 0, 0, 0, 0, 1,
+ 0, 1, 3, 0, 0, 11, 263, 11,
+ 11, 0, 1, 0, 1, 157, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 1, 3, 0, 19, 0,
+ 0, 0, 0, 0, 1, 169, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 167,
+ 0, 0, 0, 0, 0, 1, 0, 1,
+ 3, 0, 0, 13, 266, 13, 0, 1,
+ 0, 0, 0, 0, 1, 3, 0, 1,
+ 0, 0, 15, 269, 272, 15, 161, 195,
+ 0, 1, 326, 329, 197, 199, 59, 0,
+ 1, 326, 329, 329, 329, 0, 61, 65,
+ 0, 0, 0, 63, 227, 57, 75, 0,
+ 1, 326, 329, 0, 77, 81, 79, 239,
+ 73, 97, 0, 1, 326, 51, 51, 51,
+ 0, 99, 101, 0, 0, 0, 95, 111,
+ 0, 1, 326, 329, 0, 113, 115, 109,
+ 127, 0, 1, 326, 51, 51, 51, 51,
+ 0, 129, 133, 0, 0, 0, 0, 0,
+ 131, 248, 125, 145, 0, 1, 326, 329,
+ 0, 147, 149, 143, 173, 0, 1, 326,
+ 329, 329, 51, 51, 51, 51, 51, 0,
+ 175, 183, 0, 0, 179, 0, 1, 0,
+ 284, 23, 281, 0, 181, 0, 1, 0,
+ 290, 25, 287, 0, 0, 0, 177, 0,
+ 1, 0, 0, 0, 171
+};
+
+static const short _eo_tokenizer_to_state_actions[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 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, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0
+};
+
+static const short _eo_tokenizer_from_state_actions[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 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
+};
+
+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, 232, 232,
+ 232, 232, 0, 501, 502, 502, 0, 511,
+ 512, 512, 512, 512, 516, 517, 512, 0,
+ 525, 526, 526, 527, 528, 526, 0, 538,
+ 539, 539, 539, 539, 539, 0, 550, 551,
+ 551, 551, 0, 562, 563, 563, 563, 563,
+ 563, 569, 570, 563, 0, 578, 579, 579,
+ 579, 0, 593, 594, 594, 597, 597, 601,
+ 594, 605, 605, 609, 594, 594, 615, 594,
+ 594, 594, 594
+};
+
+static const int eo_tokenizer_start = 322;
+static const int eo_tokenizer_first_final = 322;
+static const int eo_tokenizer_error = -1;
+
+static const int eo_tokenizer_en_tokenize_accessor = 326;
+static const int eo_tokenizer_en_tokenize_params = 335;
+static const int eo_tokenizer_en_tokenize_property = 342;
+static const int eo_tokenizer_en_tokenize_properties = 349;
+static const int eo_tokenizer_en_tokenize_method = 354;
+static const int eo_tokenizer_en_tokenize_methods = 364;
+static const int eo_tokenizer_en_tokenize_class = 369;
+static const int eo_tokenizer_en_main = 322;
+
+
+#line 918 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+
+
+Eina_Bool
+eo_tokenizer_walk(Eo_Tokenizer *toknz, const char *source)
+{
+ INF("tokenize %s...", source);
+ toknz->source = eina_stringshare_add(source);
+
+ FILE *stream;
+
+ int done = 0;
+ int have = 0;
+ int offset = 0;
+
+ stream = fopen(toknz->source, "rb");
+ if (!stream)
+ {
+ ERR("unable to read in %s", toknz->source);
+ return EINA_FALSE;
+ }
+
+
+#line 1275 "eo_lexer.c"
+ {
+ toknz->cs = eo_tokenizer_start;
+ toknz->ts = 0;
+ toknz->te = 0;
+ toknz->act = 0;
+ }
+
+#line 940 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+
+ while (!done)
+ {
+ int len;
+ int space;
+
+ toknz->p = toknz->buf + have;
+ space = BUFSIZE - have;
+
+ if (space == 0)
+ {
+ fclose(stream);
+ ABORT(toknz, "out of buffer space");
+ }
+
+ len = fread(toknz->p, 1, space, stream);
+ if (len == 0) break;
+ toknz->pe = toknz->p + len;
+
+ if (len < space)
+ {
+ toknz->eof = toknz->pe;
+ done = 1;
+ }
+
+
+#line 1310 "eo_lexer.c"
+ {
+ int _klen;
+ unsigned int _trans;
+ const char *_acts;
+ unsigned int _nacts;
+ const char *_keys;
+
+ if ( ( toknz->p) == ( toknz->pe) )
+ goto _test_eof;
+_resume:
+ _acts = _eo_tokenizer_actions + _eo_tokenizer_from_state_actions[ toknz->cs];
+ _nacts = (unsigned int) *_acts++;
+ while ( _nacts-- > 0 ) {
+ switch ( *_acts++ ) {
+ case 35:
+#line 1 "NONE"
+ { toknz->ts = ( toknz->p);}
+ break;
+#line 1329 "eo_lexer.c"
+ }
+ }
+
+ _keys = _eo_tokenizer_trans_keys + _eo_tokenizer_key_offsets[ toknz->cs];
+ _trans = _eo_tokenizer_index_offsets[ toknz->cs];
+
+ _klen = _eo_tokenizer_single_lengths[ toknz->cs];
+ if ( _klen > 0 ) {
+ const char *_lower = _keys;
+ const char *_mid;
+ const char *_upper = _keys + _klen - 1;
+ while (1) {
+ if ( _upper < _lower )
+ break;
+
+ _mid = _lower + ((_upper-_lower) >> 1);
+ if ( (*( toknz->p)) < *_mid )
+ _upper = _mid - 1;
+ else if ( (*( toknz->p)) > *_mid )
+ _lower = _mid + 1;
+ else {
+ _trans += (unsigned int)(_mid - _keys);
+ goto _match;
+ }
+ }
+ _keys += _klen;
+ _trans += _klen;
+ }
+
+ _klen = _eo_tokenizer_range_lengths[ toknz->cs];
+ if ( _klen > 0 ) {
+ const char *_lower = _keys;
+ const char *_mid;
+ const char *_upper = _keys + (_klen<<1) - 2;
+ while (1) {
+ if ( _upper < _lower )
+ break;
+
+ _mid = _lower + (((_upper-_lower) >> 1) & ~1);
+ if ( (*( toknz->p)) < _mid[0] )
+ _upper = _mid - 2;
+ else if ( (*( toknz->p)) > _mid[1] )
+ _lower = _mid + 2;
+ else {
+ _trans += (unsigned int)((_mid - _keys)>>1);
+ goto _match;
+ }
+ }
+ _trans += _klen;
+ }
+
+_match:
+ _trans = _eo_tokenizer_indicies[_trans];
+_eof_trans:
+ toknz->cs = _eo_tokenizer_trans_targs[_trans];
+
+ if ( _eo_tokenizer_trans_actions[_trans] == 0 )
+ goto _again;
+
+ _acts = _eo_tokenizer_actions + _eo_tokenizer_trans_actions[_trans];
+ _nacts = (unsigned int) *_acts++;
+ while ( _nacts-- > 0 )
+ {
+ switch ( *_acts++ )
+ {
+ case 0:
+#line 298 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ toknz->current_line += 1;
+ DBG("inc[%d] %d", toknz->cs, toknz->current_line);
+ }
+ break;
+ case 1:
+#line 303 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ toknz->saved.line = toknz->current_line;
+ DBG("save line[%d] %d", toknz->cs, toknz->current_line);
+ }
+ break;
+ case 2:
+#line 308 "/home/daniel/e17/eolian/src/lib/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 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (toknz->tmp.accessor->ret.type != NULL)
+ ABORT(toknz, "accessor has already a return type");
+ toknz->tmp.accessor->ret.type = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ INF(" %s", toknz->tmp.accessor->ret.type);
+ }
+ break;
+ case 4:
+#line 388 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (toknz->tmp.accessor->ret.comment != NULL)
+ ABORT(toknz, "accessor return type has already a comment");
+ toknz->tmp.accessor->ret.comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
+ INF(" %s", toknz->tmp.accessor->ret.comment);
+ }
+ break;
+ case 5:
+#line 395 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ toknz->tmp.accessor->legacy = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 6:
+#line 407 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ toknz->tmp.accessor_param = _eo_tokenizer_accessor_param_get(toknz, ( toknz->p));
+ }
+ break;
+ case 7:
+#line 411 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ toknz->tmp.accessor_param->attrs = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ toknz->tmp.accessor->params =
+ eina_list_append(toknz->tmp.accessor->params, toknz->tmp.accessor_param);
+ toknz->tmp.accessor_param = NULL;
+ }
+ break;
+ case 8:
+#line 438 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ const char *c = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
+ if (toknz->tmp.param == NULL)
+ ABORT(toknz, "no parameter set to associate this comment to: %s", c);
+ toknz->tmp.param->comment = c;
+ toknz->tmp.param = NULL;
+ }
+ break;
+ case 9:
+#line 446 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ toknz->tmp.param = _eo_tokenizer_param_get(toknz, ( toknz->p));
+ if (toknz->tmp.prop)
+ toknz->tmp.prop->params = eina_list_append(toknz->tmp.prop->params, toknz->tmp.param);
+ else if (toknz->tmp.meth)
+ toknz->tmp.meth->params = eina_list_append(toknz->tmp.meth->params, toknz->tmp.param);
+ else
+ ABORT(toknz, "got a param but there is no property nor method waiting for it");
+ INF(" %s : %s", toknz->tmp.param->name, toknz->tmp.param->type);
+ }
+ break;
+ case 10:
+#line 536 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (toknz->tmp.prop != NULL)
+ ABORT(toknz, "there is a pending property definition %s", toknz->tmp.prop->name);
+ toknz->tmp.prop = _eo_tokenizer_property_get(toknz, ( toknz->p));
+ }
+ break;
+ case 11:
+#line 573 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (toknz->tmp.meth->ret.type != NULL)
+ ABORT(toknz, "method '%s' has already a return type", toknz->tmp.meth->name);
+ toknz->tmp.meth->ret.type = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ INF(" %s", toknz->tmp.meth->ret.type);
+ }
+ break;
+ case 12:
+#line 580 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (toknz->tmp.meth->ret.comment != NULL)
+ ABORT(toknz, "method '%s' return type has already a comment", toknz->tmp.meth->name);
+ toknz->tmp.meth->ret.comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
+ INF(" %s", toknz->tmp.meth->ret.comment);
+ }
+ break;
+ case 13:
+#line 587 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ toknz->tmp.meth->legacy = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 14:
+#line 591 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ toknz->tmp.meth->obj_const = EINA_TRUE;
+ INF(" obj const");
+ }
+ break;
+ case 15:
+#line 647 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (toknz->tmp.meth != NULL)
+ ABORT(toknz, "there is a pending method definition %s", toknz->tmp.meth->name);
+ toknz->tmp.meth = _eo_tokenizer_method_get(toknz, ( toknz->p));
+ }
+ break;
+ case 16:
+#line 678 "/home/daniel/e17/eolian/src/lib/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 17:
+#line 729 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ toknz->tmp.signal = _eo_tokenizer_signal_get(toknz, ( toknz->p));
+ toknz->tmp.kls->signals = eina_list_append(toknz->tmp.kls->signals, toknz->tmp.signal);
+ }
+ break;
+ case 18:
+#line 734 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (toknz->tmp.signal->comment != NULL)
+ ABORT(toknz, "signal %s has already a comment", toknz->tmp.signal->name);
+ toknz->tmp.signal->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
+ toknz->tmp.signal = NULL;
+ }
+ break;
+ case 19:
+#line 741 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (toknz->tmp.kls->dflt_ctor != NULL)
+ ABORT(toknz, "A default constructor has already been defined");
+ toknz->tmp.kls->dflt_ctor = _eo_tokenizer_dflt_ctor_get(toknz, ( toknz->p));
+ }
+ break;
+ case 20:
+#line 747 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (toknz->tmp.kls->legacy_prefix != NULL)
+ ABORT(toknz, "A legacy prefix has already been given");
+ toknz->tmp.kls->legacy_prefix = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 21:
+#line 753 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (toknz->tmp.kls->dflt_dtor != NULL)
+ ABORT(toknz, "A default destructor has already been defined");
+ toknz->tmp.kls->dflt_dtor = _eo_tokenizer_dflt_dtor_get(toknz, ( toknz->p));
+ }
+ break;
+ case 22:
+#line 759 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (toknz->tmp.kls->dflt_ctor == NULL)
+ ABORT(toknz, "No default constructor is defined for the comment");
+ if (toknz->tmp.kls->dflt_ctor->comment != NULL)
+ ABORT(toknz, "default constructor %s has already a comment", toknz->tmp.kls->dflt_ctor->name);
+ toknz->tmp.kls->dflt_ctor->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
+ }
+ break;
+ case 23:
+#line 767 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (toknz->tmp.kls->dflt_dtor == NULL)
+ ABORT(toknz, "No default destructor is defined for the comment");
+ if (toknz->tmp.kls->dflt_dtor->comment != NULL)
+ ABORT(toknz, "default destructor %s has already a comment", toknz->tmp.kls->dflt_dtor->name);
+ toknz->tmp.kls->dflt_dtor->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
+ }
+ break;
+ case 24:
+#line 781 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ toknz->tmp.impl = _eo_tokenizer_implement_get(toknz, ( toknz->p));
+ toknz->tmp.kls->implements = eina_list_append(toknz->tmp.kls->implements, toknz->tmp.impl);
+ }
+ break;
+ case 25:
+#line 786 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (toknz->tmp.impl->legacy)
+ ABORT(toknz, "Legacy section already allocated for implement item");
+ toknz->tmp.impl->legacy = calloc(1, sizeof(Eo_Implement_Legacy_Def));
+ }
+ break;
+ case 26:
+#line 792 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl->legacy)
+ ABORT(toknz, "No legacy section");
+ toknz->tmp.impl->legacy->function_name = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 27:
+#line 798 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ toknz->tmp.impl_leg_param = calloc(1, sizeof(Eo_Implement_Legacy_Param_Def));
+ toknz->tmp.impl->legacy->params = eina_list_append(
+ toknz->tmp.impl->legacy->params, toknz->tmp.impl_leg_param);
+
+ toknz->tmp.impl_leg_param->eo_name = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 28:
+#line 806 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ toknz->tmp.impl_leg_param->legacy_name = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 29:
+#line 810 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ toknz->tmp.impl_leg_param->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
+ }
+ break;
+ case 30:
+#line 814 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl->legacy)
+ ABORT(toknz, "No legacy section");
+ toknz->tmp.impl->legacy->ret_type= _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 31:
+#line 820 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl->legacy)
+ ABORT(toknz, "No legacy section");
+ toknz->tmp.impl->legacy->ret_value = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 32:
+#line 895 "/home/daniel/e17/eolian/src/lib/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));
+ }
+ break;
+ case 33:
+#line 901 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {
+ if (!toknz->tmp.kls)
+ ABORT(toknz, "No pending class definition");
+ toknz->tmp.kls->type = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 36:
+#line 1 "NONE"
+ { toknz->te = ( toknz->p)+1;}
+ break;
+ case 37:
+#line 374 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (toknz->tmp.accessor->comment != NULL)
+ ABORT(toknz, "accessor has already a comment");
+ toknz->tmp.accessor->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-1);
+ INF(" %s", toknz->tmp.accessor->comment);
+ }}
+ break;
+ case 38:
+#line 313 "/home/daniel/e17/eolian/src/lib/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:
+#line 430 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;}
+ break;
+ case 40:
+#line 431 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;}
+ break;
+ case 41:
+#line 399 "/home/daniel/e17/eolian/src/lib/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 = 342; goto _again;}
+ }}
+ break;
+ case 42:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 43:
+#line 426 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 44:
+#line 429 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 45:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 46:
+#line 429 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}}
+ break;
+ case 47:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 48:
+#line 313 "/home/daniel/e17/eolian/src/lib/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 457 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" }");
+ toknz->tmp.param = NULL;
+ toknz->current_nesting--;
+ if (toknz->tmp.prop)
+ { toknz->cs = 342; goto _again;}
+ else if (toknz->tmp.meth)
+ { toknz->cs = 354; goto _again;}
+ else
+ ABORT(toknz, "leaving tokenize_params but there is no property nor method pending");
+ }}
+ break;
+ case 50:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 51:
+#line 473 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 52:
+#line 475 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 53:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 54:
+#line 475 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}}
+ break;
+ case 55:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 56:
+#line 313 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 57:
+#line 482 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" get {");
+ toknz->tmp.accessor = _eo_tokenizer_accessor_get(toknz, GETTER);
+ toknz->current_nesting++;
+ { toknz->cs = 326; goto _again;}
+ }}
+ break;
+ case 58:
+#line 489 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" set {");
+ toknz->tmp.accessor = _eo_tokenizer_accessor_get(toknz, SETTER);
+ toknz->current_nesting++;
+ { toknz->cs = 326; goto _again;}
+ }}
+ break;
+ case 59:
+#line 496 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" params {");
+ toknz->current_nesting++;
+ { toknz->cs = 335; goto _again;}
+ }}
+ break;
+ case 60:
+#line 502 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (eina_list_count(toknz->tmp.prop->params) == 0)
+ WRN("property '%s' has no parameters.", toknz->tmp.prop->name);
+ if (eina_list_count(toknz->tmp.prop->accessors) == 0)
+ WRN("property '%s' has no accessors.", toknz->tmp.prop->name);
+ INF(" }");
+ toknz->tmp.kls->properties = eina_list_append(toknz->tmp.kls->properties, toknz->tmp.prop);
+ toknz->tmp.prop = NULL;
+ toknz->current_nesting--;
+ { toknz->cs = 349; goto _again;}
+ }}
+ break;
+ case 61:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 62:
+#line 519 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 63:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 64:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 65:
+#line 313 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 66:
+#line 530 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" %s {", toknz->tmp.prop->name);
+ toknz->current_nesting++;
+ { toknz->cs = 342; goto _again;}
+ }}
+ break;
+ case 67:
+#line 542 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" }");
+ toknz->current_nesting--;
+ { toknz->cs = 369; goto _again;}
+ }}
+ break;
+ case 68:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 69:
+#line 551 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 70:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 71:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 72:
+#line 560 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (toknz->tmp.meth->comment != NULL)
+ ABORT(toknz, "method has already a comment");
+ toknz->tmp.meth->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-1);
+ INF(" %s", toknz->tmp.meth->comment);
+ }}
+ break;
+ case 73:
+#line 313 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 74:
+#line 567 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" params {");
+ toknz->current_nesting++;
+ { toknz->cs = 335; goto _again;}
+ }}
+ break;
+ case 75:
+#line 633 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;}
+ break;
+ case 76:
+#line 634 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;}
+ break;
+ case 77:
+#line 596 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ Eina_List **l;
+ if (eina_list_count(toknz->tmp.meth->params) == 0)
+ WRN("method '%s' has no parameters.", toknz->tmp.meth->name);
+ INF(" }");
+ switch (toknz->current_methods_type) {
+ case METH_CONSTRUCTOR:
+ l = &toknz->tmp.kls->constructors;
+ break;
+ case METH_DESTRUCTOR:
+ l = &toknz->tmp.kls->destructors;
+ break;
+ case METH_REGULAR:
+ l = &toknz->tmp.kls->methods;
+ break;
+ default:
+ ABORT(toknz, "unknown method type %d", toknz->current_methods_type);
+ }
+ toknz->tmp.meth->type = toknz->current_methods_type;
+ *l = eina_list_append(*l, toknz->tmp.meth);
+ toknz->tmp.meth = NULL;
+ toknz->current_nesting--;
+ { toknz->cs = 364; goto _again;}
+ }}
+ break;
+ case 78:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 79:
+#line 628 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 80:
+#line 632 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 81:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 82:
+#line 632 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}}
+ break;
+ case 83:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 84:
+#line 313 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 85:
+#line 641 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" %s {", toknz->tmp.meth->name);
+ toknz->current_nesting++;
+ { toknz->cs = 354; goto _again;}
+ }}
+ break;
+ case 86:
+#line 653 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" }");
+ toknz->current_methods_type = METH_TYPE_LAST;
+ toknz->current_nesting--;
+ { toknz->cs = 369; goto _again;}
+ }}
+ break;
+ case 87:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 88:
+#line 663 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 89:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 90:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 91:
+#line 672 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (toknz->tmp.kls->comment != NULL)
+ ABORT(toknz, "class %s has already a comment", toknz->tmp.kls->name);
+ toknz->tmp.kls->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-1);
+ }}
+ break;
+ case 92:
+#line 313 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 93:
+#line 683 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ toknz->tmp.kls->inherits = toknz->tmp.str_items;
+ toknz->tmp.str_items = NULL;
+ }}
+ break;
+ case 94:
+#line 688 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ }}
+ break;
+ case 95:
+#line 691 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ }}
+ break;
+ case 96:
+#line 694 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" constructors {");
+ toknz->current_methods_type = METH_CONSTRUCTOR;
+ toknz->current_nesting++;
+ { toknz->cs = 364; goto _again;}
+ }}
+ break;
+ case 97:
+#line 701 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" destructors {");
+ toknz->current_methods_type = METH_DESTRUCTOR;
+ toknz->current_nesting++;
+ { toknz->cs = 364; goto _again;}
+ }}
+ break;
+ case 98:
+#line 708 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" properties {");
+ toknz->current_nesting++;
+ { toknz->cs = 349; goto _again;}
+ }}
+ break;
+ case 99:
+#line 714 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" begin methods");
+ toknz->current_methods_type = METH_REGULAR;
+ toknz->current_nesting++;
+ { toknz->cs = 364; goto _again;}
+ }}
+ break;
+ case 100:
+#line 721 "/home/daniel/e17/eolian/src/lib/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 = 322; goto _again;}
+ }}
+ break;
+ case 101:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 102:
+#line 870 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 103:
+#line 873 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 104:
+#line 877 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 105:
+#line 878 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 106:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 107:
+#line 877 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}}
+ break;
+ case 108:
+#line 878 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}}
+ break;
+ case 109:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 110:
+#line 313 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 111:
+#line 889 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF("begin class: %s", toknz->tmp.kls->name);
+ toknz->current_nesting++;
+ { toknz->cs = 369; goto _again;}
+ }}
+ break;
+ case 112:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 113:
+#line 912 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 114:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+ case 115:
+#line 322 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}{
+ DBG("error[%d]", toknz->cs);
+ char *s, *d;
+ char buf[BUFSIZE];
+ for (s = ( toknz->p), d = buf; (s <= toknz->pe); s++)
+ {
+ if ((*s == '\r') || (*s == '\n'))
+ break;
+ *d++ = *s;
+ }
+ *d = '\0';
+ ERR("error n:%d l:%d c:'%c': %s",
+ toknz->current_nesting, toknz->current_line, *( toknz->p), buf);
+ toknz->cs = eo_tokenizer_error;
+ {( toknz->p)++; goto _out; } /* necessary to stop scanners */
+ }}
+ break;
+#line 2505 "eo_lexer.c"
+ }
+ }
+
+_again:
+ _acts = _eo_tokenizer_actions + _eo_tokenizer_to_state_actions[ toknz->cs];
+ _nacts = (unsigned int) *_acts++;
+ while ( _nacts-- > 0 ) {
+ switch ( *_acts++ ) {
+ case 34:
+#line 1 "NONE"
+ { toknz->ts = 0;}
+ break;
+#line 2518 "eo_lexer.c"
+ }
+ }
+
+ if ( ++( toknz->p) != ( toknz->pe) )
+ goto _resume;
+ _test_eof: {}
+ if ( ( toknz->p) == ( toknz->eof) )
+ {
+ if ( _eo_tokenizer_eof_trans[ toknz->cs] > 0 ) {
+ _trans = _eo_tokenizer_eof_trans[ toknz->cs] - 1;
+ goto _eof_trans;
+ }
+ }
+
+ _out: {}
+ }
+
+#line 966 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+
+ if ( toknz->cs ==
+#line 2539 "eo_lexer.c"
+-1
+#line 967 "/home/daniel/e17/eolian/src/lib/eo_lexer.rl"
+ )
+ {
+ ERR("wrong termination");
+ break;
+ }
+
+ if ( toknz->ts == 0 )
+ have = 0;
+ else
+ {
+ DBG("move data and pointers before buffer feed");
+ have = toknz->pe - toknz->ts;
+ offset = toknz->ts - toknz->buf;
+ memmove(toknz->buf, toknz->ts, have);
+ toknz->te -= offset;
+ toknz->ts = toknz->buf;
+ }
+
+ if (toknz->saved.tok != NULL)
+ {
+ if ((have == 0) || ((toknz->saved.tok - offset) < toknz->buf))
+ {
+ WRN("reset lost saved token %p", toknz->saved.tok);
+ toknz->saved.tok = NULL;
+ }
+ else
+ toknz->saved.tok -= offset;
+ }
+ }
+
+ fclose(stream);
+
+ return EINA_TRUE;
+}
+
+Eo_Tokenizer*
+eo_tokenizer_get(void)
+{
+ Eo_Tokenizer *toknz = calloc(1, sizeof(Eo_Tokenizer));
+ if (!toknz) return NULL;
+
+ toknz->ts = NULL;
+ toknz->te = NULL;
+ /* toknz->top = 0; */
+ toknz->source = NULL;
+ toknz->max_nesting = 10;
+ toknz->current_line = 1;
+ toknz->current_nesting = 0;
+ toknz->current_methods_type = METH_TYPE_LAST;
+ toknz->saved.tok = NULL;
+ toknz->saved.line = 0;
+ toknz->classes = NULL;
+
+ return toknz;
+}
+
+static char *_accessor_type_str[ACCESSOR_TYPE_LAST] = { "setter", "getter" };
+static char *_param_way_str[PARAM_WAY_LAST] = { "IN", "OUT", "INOUT" };
+
+void
+eo_tokenizer_dump(Eo_Tokenizer *toknz)
+{
+ const char *s;
+ Eina_List *k, *l, *m;
+
+ Eo_Class_Def *kls;
+ Eo_Property_Def *prop;
+ Eo_Method_Def *meth;
+ Eo_Param_Def *param;
+ Eo_Accessor_Def *accessor;
+ Eo_Signal_Def *sgn;
+ /* Eo_Ret_Def *ret; */
+
+ EINA_LIST_FOREACH(toknz->classes, k, kls)
+ {
+ printf("Class: %s (%s)\n",
+ kls->name, (kls->comment ? kls->comment : "-"));
+ printf(" inherits from :");
+ EINA_LIST_FOREACH(kls->inherits, l, s)
+ printf(" %s", s);
+ printf("\n");
+ printf(" implements:");
+ EINA_LIST_FOREACH(kls->implements, l, s)
+ printf(" %s", s);
+ printf("\n");
+ printf(" signals:\n");
+ EINA_LIST_FOREACH(kls->signals, l, sgn)
+ printf(" %s (%s)\n", sgn->name, sgn->comment);
+
+ EINA_LIST_FOREACH(kls->constructors, l, meth)
+ {
+ printf(" constructors: %s\n", meth->name);
+ printf(" return: %s (%s)\n", meth->ret.type, meth->ret.comment);
+ printf(" legacy : %s\n", meth->legacy);
+ EINA_LIST_FOREACH(meth->params, m, param)
+ {
+ printf(" param: %s %s : %s (%s)\n",
+ _param_way_str[param->way], param->name,
+ param->type, param->comment);
+ }
+ }
+
+ EINA_LIST_FOREACH(kls->destructors, l, meth)
+ {
+ printf(" destructors: %s\n", meth->name);
+ printf(" return: %s (%s)\n", meth->ret.type, meth->ret.comment);
+ printf(" legacy : %s\n", meth->legacy);
+ EINA_LIST_FOREACH(meth->params, m, param)
+ {
+ printf(" param: %s %s : %s (%s)\n",
+ _param_way_str[param->way], param->name,
+ param->type, param->comment);
+ }
+ }
+
+ EINA_LIST_FOREACH(kls->properties, l, prop)
+ {
+ printf(" property: %s\n", prop->name);
+ EINA_LIST_FOREACH(prop->params, m, param)
+ {
+ printf(" param: %s : %s (%s)\n",
+ param->name, param->type, param->comment);
+ }
+ EINA_LIST_FOREACH(prop->accessors, m, accessor)
+ {
+ printf(" accessor: %s : %s (%s)\n",
+ accessor->ret.type, _accessor_type_str[accessor->type],
+ accessor->comment);
+ printf(" legacy : %s\n", accessor->legacy);
+ }
+ }
+
+ EINA_LIST_FOREACH(kls->methods, l, meth)
+ {
+ printf(" method: %s\n", meth->name);
+ printf(" return: %s (%s)\n", meth->ret.type, meth->ret.comment);
+ printf(" legacy : %s\n", meth->legacy);
+ printf(" obj_const : %s\n", meth->obj_const?"true":"false");
+ EINA_LIST_FOREACH(meth->params, m, param)
+ {
+ printf(" param: %s %s : %s (%s)\n",
+ _param_way_str[param->way], param->name,
+ param->type, param->comment);
+ }
+ }
+
+ }
+
+}
+
+Eina_Bool
+eo_tokenizer_database_fill(const char *filename)
+{
+ const char *s;
+ Eina_List *k, *l, *m;
+
+ Eo_Class_Def *kls;
+ Eo_Property_Def *prop;
+ Eo_Method_Def *meth;
+ Eo_Param_Def *param;
+ Eo_Accessor_Def *accessor;
+ Eo_Signal_Def *signal;
+ Eo_Implement_Def *impl;
+ /* Eo_Ret_Def *ret; */
+
+ Eo_Tokenizer *toknz = eo_tokenizer_get();
+ if (!toknz)
+ {
+ ERR("can't create eo_tokenizer");
+ return EINA_FALSE;
+ }
+
+ if (access(filename, F_OK) != 0)
+ {
+ ERR("error accessing file %s : %s", filename, strerror(errno));
+ return EINA_FALSE;
+ }
+ eo_tokenizer_walk(toknz, 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);
+ if (kls->comment) database_class_description_set(kls->name, kls->comment);
+
+ EINA_LIST_FOREACH(kls->inherits, l, s)
+ database_class_inherit_add(kls->name, s);
+
+ if (kls->legacy_prefix)
+ {
+ database_class_legacy_prefix_set(kls->name, kls->legacy_prefix);
+ }
+ if (kls->dflt_ctor)
+ {
+ Eolian_Function foo_id = database_function_new(kls->dflt_ctor->name, DFLT_CONSTRUCTOR);
+ database_class_function_add(kls->name, foo_id);
+ database_function_description_set(foo_id, EOLIAN_COMMENT, kls->dflt_ctor->comment);
+ }
+ if (kls->dflt_dtor)
+ {
+ Eolian_Function foo_id = database_function_new(kls->dflt_dtor->name, DFLT_DESTRUCTOR);
+ database_class_function_add(kls->name, foo_id);
+ database_function_description_set(foo_id, EOLIAN_COMMENT, kls->dflt_dtor->comment);
+ }
+ EINA_LIST_FOREACH(kls->constructors, l, meth)
+ {
+ Eolian_Function foo_id = database_function_new(meth->name, CONSTRUCTOR);
+ database_class_function_add(kls->name, foo_id);
+ database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret.comment);
+ database_function_data_set(foo_id, EOLIAN_LEGACY, meth->legacy);
+ EINA_LIST_FOREACH(meth->params, m, param)
+ {
+ database_function_parameter_add(foo_id, (Eolian_Parameter_Dir)param->way, param->type, param->name, param->comment);
+ }
+ }
+
+ EINA_LIST_FOREACH(kls->destructors, l, meth)
+ {
+ Eolian_Function foo_id = database_function_new(meth->name, DESTRUCTOR);
+ database_class_function_add(kls->name, foo_id);
+ database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret.comment);
+ database_function_data_set(foo_id, EOLIAN_LEGACY, meth->legacy);
+ EINA_LIST_FOREACH(meth->params, m, param)
+ {
+ database_function_parameter_add(foo_id, (Eolian_Parameter_Dir)param->way, param->type, param->name, param->comment);
+ }
+ }
+
+ EINA_LIST_FOREACH(kls->properties, l, prop)
+ {
+ Eolian_Function foo_id = database_function_new(prop->name, UNRESOLVED);
+ EINA_LIST_FOREACH(prop->params, m, param)
+ {
+ /* IN_PARAM doesn't care */
+ database_function_parameter_add(foo_id, EOLIAN_IN_PARAM, param->type, param->name, param->comment);
+ }
+ EINA_LIST_FOREACH(prop->accessors, m, accessor)
+ {
+ database_function_type_set(foo_id, (accessor->type == SETTER?SET:GET));
+ if (accessor->ret.type)
+ database_function_data_set(foo_id,
+ (accessor->type == SETTER?EOLIAN_PROP_SET_RETURN_TYPE:EOLIAN_PROP_GET_RETURN_TYPE),
+ accessor->ret.type);
+ database_function_description_set(foo_id,
+ (accessor->type == SETTER?EOLIAN_COMMENT_SET:EOLIAN_COMMENT_GET),
+ accessor->comment);
+ Eo_Accessor_Param *acc_param;
+ Eina_List *m2;
+ /* Only in get access, we check const attribute */
+ if (accessor->type == GETTER)
+ {
+ EINA_LIST_FOREACH(accessor->params, m2, acc_param)
+ {
+ Eolian_Function_Parameter desc = eolian_function_parameter_get(foo_id, acc_param->name);
+ if (!desc)
+ {
+ printf("Error - %s not known as parameter of property %s\n", acc_param->name, prop->name);
+ return EINA_FALSE;
+ }
+ if (strstr(acc_param->attrs, "const"))
+ {
+ database_parameter_get_const_attribute_set(desc, EINA_TRUE);
+ }
+ }
+ }
+ }
+ database_class_function_add(kls->name, foo_id);
+ }
+
+ EINA_LIST_FOREACH(kls->methods, l, meth)
+ {
+ Eolian_Function foo_id = database_function_new(meth->name, METHOD_FUNC);
+ database_class_function_add(kls->name, foo_id);
+ database_function_data_set(foo_id, EOLIAN_METHOD_RETURN_TYPE, meth->ret.type);
+ database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret.comment);
+ database_function_description_set(foo_id, EOLIAN_COMMENT, meth->comment);
+ database_function_data_set(foo_id, EOLIAN_LEGACY, meth->legacy);
+ database_function_object_set_as_const(foo_id, meth->obj_const);
+ EINA_LIST_FOREACH(meth->params, m, param)
+ {
+ database_function_parameter_add(foo_id, (Eolian_Parameter_Dir)param->way, param->type, param->name, param->comment);
+ }
+ }
+
+ EINA_LIST_FOREACH(kls->implements, l, impl)
+ {
+ const char *class = impl->meth_name;
+ char *func = strstr(class, "::");
+ if (func) *func = '\0';
+ func += 2;
+ Eolian_Function_Type ftype = UNRESOLVED;
+ char *type_as_str = strstr(func, "::");
+ if (type_as_str)
+ {
+ *type_as_str = '\0';
+ if (!strcmp(type_as_str+2, "set")) ftype = SET;
+ else if (!strcmp(type_as_str+2, "get")) ftype = GET;
+ }
+ Eolian_Implement impl_desc = database_implement_new(class, func, ftype);
+ if (impl->legacy)
+ {
+ Eo_Implement_Legacy_Def *eo_leg = impl->legacy;
+ Eolian_Implement_Legacy leg = database_implement_legacy_add(
+ impl_desc, eo_leg->function_name);
+ database_implement_legacy_return_add(leg, eo_leg->ret_type, eo_leg->ret_value);
+ if (eo_leg->params)
+ {
+ Eina_List *itr;
+ Eo_Implement_Legacy_Param_Def *p;
+ EINA_LIST_FOREACH(eo_leg->params, itr, p)
+ database_implement_legacy_param_add(leg, p->eo_name,
+ p->legacy_name, p->comment);
+ }
+ }
+ database_class_implement_add(kls->name, impl_desc);
+ }
+
+ EINA_LIST_FOREACH(kls->signals, l, signal)
+ {
+ Eolian_Event ev = database_event_new(signal->name, signal->comment);
+ database_class_event_add(kls->name, ev);
+ }
+
+ }
+
+ eo_tokenizer_free(toknz);
+ return EINA_TRUE;
+}
+
+void
+eo_tokenizer_free(Eo_Tokenizer *toknz)
+{
+ Eo_Class_Def *kls;
+
+ if (toknz->source)
+ eina_stringshare_del(toknz->source);
+
+ EINA_LIST_FREE(toknz->classes, kls)
+ eo_definitions_class_def_free(kls);
+
+ free(toknz);
+}
+