summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzmike <michael.blumenkrantz@gmail.com>2014-03-30 00:07:19 -0400
committerzmike <michael.blumenkrantz@gmail.com>2014-03-30 00:07:19 -0400
commitae504c0f4a46814b0fa4700e14415c3317dd551d (patch)
tree4f76238062d3ad1caae7addfa79a1a8c8cd32e96
parent8d13f9384cdcb5ab00231d771eb55a33455d1980 (diff)
downloadefl-ae504c0f4a46814b0fa4700e14415c3317dd551d.tar.gz
Revert "eolian stop tracking your generated files in git plz"
This reverts commit 65fa5e3d250d60c45ff1862b0784ad5b65b7b5ea.
-rw-r--r--src/lib/eolian/eo_lexer.c4567
1 files changed, 4567 insertions, 0 deletions
diff --git a/src/lib/eolian/eo_lexer.c b/src/lib/eolian/eo_lexer.c
new file mode 100644
index 0000000000..d772e1624f
--- /dev/null
+++ b/src/lib/eolian/eo_lexer.c
@@ -0,0 +1,4567 @@
+
+#line 1 "lib/eolian/eo_lexer.rl"
+#include <stdio.h>
+#include <stdlib.h>
+#include <Eina.h>
+
+#include "Eolian.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");
+
+ /* The next code part tries to identify the different tags of the
+ parameter.
+ First, we set the ';' to '\0', to search only inside this section.
+ We then strstr the different tags and if found, we update the internal
+ flag and clear the zone of the text. In this way, during the
+ determination of the type/variable, we will not be disturbed by the
+ flags.
+ We have to put back the ';' at the end.
+ */
+ *p = '\0';
+ s = strstr(toknz->saved.tok, "@nonull");
+ if (s)
+ {
+ param->nonull = EINA_TRUE;
+ memset(s, ' ', 7);
+ }
+ s = strstr(toknz->saved.tok, "@own");
+ if (s)
+ {
+ param->own = EINA_TRUE;
+ memset(s, ' ', 4);
+ }
+ *p = ';';
+ s = p - 1; /* Don't look at the character ';' */
+ /* Remove any space between the param name and ';'/@nonull
+ * This loop fixes the case where "char *name ;" becomes the type of the param.
+ */
+ 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 ", 4) == 0)
+ {
+ toknz->saved.tok += 3;
+ param->way = PARAM_IN;
+ }
+ else if (strncmp(toknz->saved.tok, "@out ", 5) == 0)
+ {
+ toknz->saved.tok += 4;
+ param->way = PARAM_OUT;
+ }
+ else if (strncmp(toknz->saved.tok, "@inout ", 7) == 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_Ret_Def*
+_eo_tokenizer_return_get(Eo_Tokenizer *toknz, char *p)
+{
+ char *s;
+
+ Eo_Ret_Def *ret = calloc(1, sizeof(Eo_Ret_Def));
+ if (ret == NULL) ABORT(toknz, "calloc Eo_Ret_Def failure");
+
+ *p = '\0';
+ s = strstr(toknz->saved.tok, "@warn_unused");
+ if (s)
+ {
+ ret->warn_unused = EINA_TRUE;
+ memset(s, ' ', 12);
+ }
+ s = strstr(toknz->saved.tok, "@own");
+ if (s)
+ {
+ ret->own = EINA_TRUE;
+ memset(s, ' ', 4);
+ }
+ s = strchr(toknz->saved.tok, '(');
+ if (s)
+ {
+ char *ret_val;
+ char *end = strchr(s, ')');
+ if (!end)
+ ABORT(toknz, "wrong syntax (missing ')'): %s",
+ _eo_tokenizer_token_get(toknz, p));
+ /* Current values in s and end have to be changed to ' ' to not disturb the next steps (type extraction) */
+ *s++ = ' ';
+ while (*s == ' ') s++;
+ *end-- = ' ';
+ while (end > s && *end == ' ') end--;
+ if (end < s)
+ ABORT(toknz, "empty default return value: %s",
+ _eo_tokenizer_token_get(toknz, p));
+ ret_val = malloc(end - s + 2); /* string + '\0' */
+ memcpy(ret_val, s, end - s + 1);
+ ret_val[end - s + 1] = '\0';
+ ret->dflt_ret_val = ret_val;
+ memset(s, ' ', end - s + 1);
+ }
+ *p = ';';
+ s = p - 1; /* Don't look at the character ';' */
+ /* Remove any space between the param name and ';'
+ * This loop fixes the case where "char *name ;" becomes the type of the param.
+ */
+ while (*s == ' ') s--;
+
+ if (s == toknz->saved.tok)
+ ABORT(toknz, "wrong parameter: %s", _eo_tokenizer_token_get(toknz, p));
+ s++;
+
+ ret->type = _eo_tokenizer_token_get(toknz, s);
+
+ return ret;
+}
+
+static Eo_Accessor_Param*
+_eo_tokenizer_accessor_param_get(Eo_Tokenizer *toknz, char *p)
+{
+ 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_Event_Def*
+_eo_tokenizer_event_get(Eo_Tokenizer *toknz, char *p)
+{
+ Eo_Event_Def *sgn = calloc(1, sizeof(Eo_Event_Def));
+ if (sgn == NULL) ABORT(toknz, "calloc Eo_Event_Def failure");
+
+ sgn->name = _eo_tokenizer_token_get(toknz, p);
+
+ return sgn;
+}
+
+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_Implement_Def failure");
+
+ impl->meth_name = _eo_tokenizer_token_get(toknz, p);
+
+ return impl;
+}
+
+
+#line 428 "lib/eolian/eo_lexer.rl"
+
+
+
+#line 359 "lib/eolian/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, 39, 1, 40, 1, 43, 1,
+ 44, 1, 45, 1, 46, 1, 47, 1,
+ 48, 1, 49, 1, 50, 1, 51, 1,
+ 52, 1, 53, 1, 54, 1, 55, 1,
+ 56, 1, 57, 1, 58, 1, 59, 1,
+ 60, 1, 61, 1, 62, 1, 63, 1,
+ 64, 1, 65, 1, 66, 1, 67, 1,
+ 68, 1, 69, 1, 70, 1, 71, 1,
+ 72, 1, 73, 1, 74, 1, 75, 1,
+ 76, 1, 77, 1, 78, 1, 79, 1,
+ 80, 1, 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,
+ 98, 1, 99, 1, 100, 1, 101, 1,
+ 102, 1, 103, 1, 104, 1, 105, 1,
+ 106, 1, 107, 1, 108, 1, 109, 1,
+ 110, 1, 111, 1, 112, 1, 113, 1,
+ 114, 1, 115, 1, 116, 1, 117, 1,
+ 118, 1, 119, 1, 120, 1, 121, 1,
+ 122, 1, 123, 1, 124, 2, 0, 40,
+ 2, 0, 51, 2, 0, 60, 2, 0,
+ 71, 2, 0, 80, 2, 0, 92, 2,
+ 0, 101, 2, 0, 119, 2, 4, 46,
+ 2, 5, 41, 2, 6, 2, 2, 7,
+ 42, 2, 8, 55, 2, 10, 0, 2,
+ 10, 72, 2, 12, 87, 2, 13, 82,
+ 2, 14, 83, 2, 15, 0, 2, 15,
+ 93, 2, 16, 0, 2, 17, 0, 2,
+ 17, 120, 2, 18, 0, 2, 19, 0,
+ 2, 19, 2, 2, 23, 0, 2, 24,
+ 0, 2, 24, 2, 2, 25, 0, 2,
+ 27, 0, 2, 28, 0, 2, 28, 2,
+ 2, 35, 0, 2, 35, 120, 2, 38,
+ 1, 2, 38, 2, 2, 38, 3, 2,
+ 38, 9, 2, 38, 11
+};
+
+static const short _eo_tokenizer_key_offsets[] = {
+ 0, 2, 5, 6, 7, 8, 9, 10,
+ 11, 12, 15, 22, 29, 44, 48, 56,
+ 61, 65, 72, 84, 89, 96, 97, 98,
+ 99, 102, 103, 104, 105, 106, 107, 108,
+ 109, 112, 113, 114, 115, 118, 121, 123,
+ 126, 137, 139, 142, 143, 154, 158, 165,
+ 172, 184, 196, 208, 220, 232, 243, 251,
+ 258, 266, 278, 290, 302, 314, 325, 333,
+ 347, 362, 366, 367, 368, 378, 380, 383,
+ 385, 388, 389, 401, 405, 406, 407, 417,
+ 419, 422, 424, 427, 428, 429, 433, 434,
+ 435, 439, 440, 444, 445, 446, 447, 448,
+ 452, 454, 457, 458, 469, 473, 476, 478,
+ 481, 492, 494, 497, 498, 499, 500, 501,
+ 502, 503, 504, 505, 506, 509, 516, 523,
+ 531, 532, 533, 534, 535, 539, 540, 541,
+ 542, 543, 546, 553, 567, 582, 586, 587,
+ 588, 598, 600, 603, 605, 608, 609, 620,
+ 624, 627, 629, 632, 643, 645, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 659, 663, 664, 665, 669, 676, 683,
+ 691, 692, 693, 694, 695, 696, 697, 698,
+ 699, 700, 704, 705, 706, 707, 708, 709,
+ 710, 711, 715, 722, 729, 737, 738, 739,
+ 740, 741, 745, 753, 761, 773, 777, 789,
+ 790, 791, 801, 803, 806, 814, 815, 816,
+ 817, 818, 819, 820, 821, 822, 826, 834,
+ 842, 855, 860, 864, 865, 866, 867, 868,
+ 869, 881, 886, 890, 899, 903, 904, 905,
+ 906, 907, 908, 912, 921, 928, 935, 946,
+ 950, 964, 974, 981, 993, 998, 1004, 1009,
+ 1010, 1011, 1012, 1013, 1014, 1017, 1024, 1031,
+ 1039, 1040, 1044, 1051, 1059, 1063, 1068, 1069,
+ 1070, 1080, 1082, 1085, 1095, 1107, 1114, 1126,
+ 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134,
+ 1135, 1136, 1137, 1138, 1142, 1149, 1156, 1164,
+ 1165, 1166, 1167, 1168, 1169, 1173, 1174, 1175,
+ 1176, 1177, 1178, 1179, 1180, 1181, 1185, 1193,
+ 1196, 1198, 1199, 1200, 1201, 1202, 1213, 1216,
+ 1218, 1225, 1233, 1241, 1245, 1245, 1246, 1255,
+ 1258, 1260, 1271, 1275, 1275, 1276, 1285, 1288,
+ 1290, 1291, 1292, 1293, 1294, 1295, 1306, 1309,
+ 1311, 1318, 1319, 1328, 1331, 1333, 1334, 1335,
+ 1336, 1337, 1341, 1341, 1342, 1353, 1356, 1358,
+ 1365, 1366, 1378, 1381, 1383, 1384, 1386, 1389,
+ 1391, 1394, 1395, 1396, 1397, 1398, 1401, 1402,
+ 1403
+};
+
+static const char _eo_tokenizer_trans_keys[] = {
+ 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, 9, 10, 13,
+ 32, 40, 95, 123, 0, 31, 48, 57,
+ 65, 90, 97, 122, 10, 123, 0, 32,
+ 9, 10, 13, 32, 40, 123, 0, 31,
+ 41, 65, 90, 97, 122, 10, 123, 0,
+ 32, 95, 48, 57, 65, 90, 97, 122,
+ 10, 41, 44, 95, 0, 32, 48, 57,
+ 65, 90, 97, 122, 10, 41, 44, 0,
+ 32, 10, 0, 32, 65, 90, 97, 122,
+ 97, 115, 115, 9, 13, 32, 116, 101,
+ 114, 102, 97, 99, 101, 9, 13, 32,
+ 120, 105, 110, 9, 13, 32, 10, 42,
+ 64, 10, 42, 10, 42, 47, 10, 42,
+ 95, 0, 32, 48, 57, 64, 90, 97,
+ 122, 10, 42, 10, 42, 47, 10, 9,
+ 13, 32, 58, 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,
+ 95, 40, 42, 45, 46, 48, 57, 64,
+ 90, 97, 122, 9, 13, 32, 59, 95,
+ 40, 42, 45, 46, 48, 57, 64, 90,
+ 97, 122, 9, 13, 32, 47, 42, 64,
+ 10, 95, 0, 32, 48, 57, 64, 90,
+ 97, 122, 10, 42, 10, 42, 47, 10,
+ 42, 10, 42, 47, 10, 9, 13, 32,
+ 42, 59, 95, 48, 57, 64, 90, 97,
+ 122, 9, 13, 32, 47, 42, 64, 10,
+ 95, 0, 32, 48, 57, 64, 90, 97,
+ 122, 10, 42, 10, 42, 47, 10, 42,
+ 10, 42, 47, 10, 116, 10, 123, 0,
+ 32, 121, 115, 10, 123, 0, 32, 116,
+ 10, 123, 0, 32, 108, 117, 101, 115,
+ 10, 123, 0, 32, 10, 42, 10, 42,
+ 47, 10, 10, 95, 123, 0, 32, 48,
+ 57, 65, 90, 97, 122, 10, 123, 0,
+ 32, 10, 42, 64, 10, 42, 10, 42,
+ 47, 10, 42, 95, 0, 32, 48, 57,
+ 64, 90, 97, 122, 10, 42, 10, 42,
+ 47, 10, 110, 115, 116, 59, 103, 97,
+ 99, 121, 9, 13, 32, 9, 13, 32,
+ 65, 90, 97, 122, 95, 48, 57, 65,
+ 90, 97, 122, 59, 95, 48, 57, 65,
+ 90, 97, 122, 114, 97, 109, 115, 10,
+ 123, 0, 32, 116, 117, 114, 110, 9,
+ 13, 32, 9, 13, 32, 65, 90, 97,
+ 122, 9, 13, 32, 95, 40, 42, 45,
+ 46, 48, 57, 64, 90, 97, 122, 9,
+ 13, 32, 59, 95, 40, 42, 45, 46,
+ 48, 57, 64, 90, 97, 122, 9, 13,
+ 32, 47, 42, 64, 10, 95, 0, 32,
+ 48, 57, 64, 90, 97, 122, 10, 42,
+ 10, 42, 47, 10, 42, 10, 42, 47,
+ 10, 10, 95, 123, 0, 32, 48, 57,
+ 65, 90, 97, 122, 10, 123, 0, 32,
+ 10, 42, 64, 10, 42, 10, 42, 47,
+ 10, 42, 95, 0, 32, 48, 57, 64,
+ 90, 97, 122, 10, 42, 10, 42, 47,
+ 10, 110, 115, 116, 114, 117, 99, 116,
+ 111, 114, 115, 10, 123, 0, 32, 116,
+ 97, 10, 58, 0, 32, 10, 0, 32,
+ 65, 90, 97, 122, 95, 48, 57, 65,
+ 90, 97, 122, 59, 95, 48, 57, 65,
+ 90, 97, 122, 115, 116, 114, 117, 99,
+ 116, 111, 114, 115, 10, 123, 0, 32,
+ 95, 112, 114, 101, 102, 105, 120, 10,
+ 58, 0, 32, 10, 0, 32, 65, 90,
+ 97, 122, 95, 48, 57, 65, 90, 97,
+ 122, 59, 95, 48, 57, 65, 90, 97,
+ 122, 101, 110, 116, 115, 10, 123, 0,
+ 32, 10, 125, 0, 32, 65, 90, 97,
+ 122, 44, 95, 48, 57, 65, 90, 97,
+ 122, 10, 44, 59, 95, 0, 32, 48,
+ 57, 65, 90, 97, 122, 10, 59, 0,
+ 32, 9, 10, 13, 32, 47, 125, 0,
+ 31, 65, 90, 97, 122, 42, 64, 10,
+ 95, 0, 32, 48, 57, 64, 90, 97,
+ 122, 10, 42, 10, 42, 47, 10, 125,
+ 0, 32, 65, 90, 97, 122, 112, 108,
+ 101, 109, 101, 110, 116, 115, 10, 123,
+ 0, 32, 10, 125, 0, 32, 65, 90,
+ 97, 122, 58, 95, 48, 57, 65, 90,
+ 97, 122, 10, 58, 59, 95, 123, 0,
+ 32, 48, 57, 65, 90, 97, 122, 10,
+ 59, 123, 0, 32, 10, 108, 0, 32,
+ 101, 103, 97, 99, 121, 9, 10, 13,
+ 32, 59, 123, 0, 31, 65, 90, 97,
+ 122, 10, 59, 123, 0, 32, 10, 125,
+ 0, 32, 10, 59, 125, 0, 32, 65,
+ 90, 97, 122, 10, 112, 0, 32, 97,
+ 114, 97, 109, 115, 10, 123, 0, 32,
+ 10, 58, 59, 0, 32, 65, 90, 97,
+ 122, 9, 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, 10, 59,
+ 114, 125, 0, 32, 10, 114, 125, 0,
+ 32, 101, 116, 117, 114, 110, 9, 13,
+ 32, 9, 13, 32, 65, 90, 97, 122,
+ 95, 48, 57, 65, 90, 97, 122, 58,
+ 95, 48, 57, 65, 90, 97, 122, 58,
+ 65, 90, 97, 122, 95, 48, 57, 65,
+ 90, 97, 122, 59, 95, 48, 57, 65,
+ 90, 97, 122, 10, 125, 0, 32, 10,
+ 59, 125, 0, 32, 42, 64, 10, 95,
+ 0, 32, 48, 57, 64, 90, 97, 122,
+ 10, 42, 10, 42, 47, 10, 58, 59,
+ 125, 0, 32, 65, 90, 97, 122, 9,
+ 10, 13, 32, 59, 123, 0, 31, 65,
+ 90, 97, 122, 95, 48, 57, 65, 90,
+ 97, 122, 10, 59, 95, 123, 0, 32,
+ 48, 57, 65, 90, 97, 122, 58, 103,
+ 97, 99, 121, 95, 112, 114, 101, 102,
+ 105, 120, 10, 58, 0, 32, 10, 0,
+ 32, 65, 90, 97, 122, 95, 48, 57,
+ 65, 90, 97, 122, 59, 95, 48, 57,
+ 65, 90, 97, 122, 116, 104, 111, 100,
+ 115, 10, 123, 0, 32, 111, 112, 101,
+ 114, 116, 105, 101, 115, 10, 123, 0,
+ 32, 10, 47, 97, 99, 105, 109, 0,
+ 32, 10, 0, 32, 42, 47, 98, 108,
+ 110, 105, 10, 47, 108, 114, 125, 0,
+ 32, 65, 90, 97, 122, 10, 0, 32,
+ 42, 47, 95, 48, 57, 65, 90, 97,
+ 122, 95, 101, 48, 57, 65, 90, 97,
+ 122, 95, 101, 48, 57, 65, 90, 97,
+ 122, 9, 13, 32, 47, 59, 10, 47,
+ 125, 0, 32, 64, 90, 97, 122, 10,
+ 0, 32, 42, 47, 9, 13, 32, 42,
+ 95, 48, 57, 64, 90, 97, 122, 9,
+ 13, 32, 47, 59, 10, 47, 103, 107,
+ 115, 118, 125, 0, 32, 10, 0, 32,
+ 42, 47, 101, 101, 101, 97, 59, 10,
+ 47, 125, 0, 32, 48, 57, 65, 90,
+ 97, 122, 10, 0, 32, 42, 47, 95,
+ 48, 57, 65, 90, 97, 122, 59, 10,
+ 47, 99, 108, 112, 114, 125, 0, 32,
+ 10, 0, 32, 42, 47, 111, 101, 97,
+ 101, 9, 13, 32, 47, 59, 10, 47,
+ 125, 0, 32, 48, 57, 65, 90, 97,
+ 122, 10, 0, 32, 42, 47, 95, 48,
+ 57, 65, 90, 97, 122, 59, 10, 47,
+ 99, 100, 101, 105, 108, 109, 112, 125,
+ 0, 32, 10, 0, 32, 42, 47, 111,
+ 97, 101, 10, 0, 32, 111, 118, 10,
+ 0, 32, 59, 109, 59, 101, 10, 0,
+ 32, 101, 114, 59, 0
+};
+
+static const char _eo_tokenizer_single_lengths[] = {
+ 2, 3, 1, 1, 1, 1, 1, 1,
+ 1, 3, 3, 1, 7, 2, 6, 1,
+ 2, 1, 4, 3, 1, 1, 1, 1,
+ 3, 1, 1, 1, 1, 1, 1, 1,
+ 3, 1, 1, 1, 3, 3, 2, 3,
+ 3, 2, 3, 1, 5, 4, 3, 3,
+ 6, 6, 6, 6, 6, 5, 4, 1,
+ 2, 6, 6, 6, 6, 5, 4, 4,
+ 5, 4, 1, 1, 2, 2, 3, 2,
+ 3, 1, 6, 4, 1, 1, 2, 2,
+ 3, 2, 3, 1, 1, 2, 1, 1,
+ 2, 1, 2, 1, 1, 1, 1, 2,
+ 2, 3, 1, 3, 2, 3, 2, 3,
+ 3, 2, 3, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 3, 3, 1, 2,
+ 1, 1, 1, 1, 2, 1, 1, 1,
+ 1, 3, 3, 4, 5, 4, 1, 1,
+ 2, 2, 3, 2, 3, 1, 3, 2,
+ 3, 2, 3, 3, 2, 3, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 1, 2, 1, 1, 2,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 1, 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, 1, 1,
+ 1, 1, 1, 2, 1, 1, 2, 1,
+ 1, 1, 1, 1, 2, 1, 1, 1,
+ 1, 1, 1, 1, 1, 2, 6, 1,
+ 2, 1, 1, 1, 1, 5, 1, 2,
+ 1, 2, 2, 4, 0, 1, 3, 1,
+ 2, 5, 4, 0, 1, 7, 1, 2,
+ 1, 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, 2, 1, 2,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1
+};
+
+static const char _eo_tokenizer_range_lengths[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 3, 4, 1, 1, 2,
+ 1, 3, 4, 1, 3, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 3, 0, 2, 2,
+ 3, 3, 3, 3, 3, 3, 2, 3,
+ 3, 3, 3, 3, 3, 3, 2, 5,
+ 5, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0,
+ 1, 0, 1, 0, 0, 0, 0, 1,
+ 0, 0, 0, 4, 1, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 3, 3,
+ 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 2, 5, 5, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 4, 1,
+ 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 1, 3, 3, 3,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 1, 3, 3, 3, 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, 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, 1,
+ 0, 0, 0, 0, 0, 3, 1, 0,
+ 3, 3, 3, 0, 0, 0, 3, 1,
+ 0, 3, 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 0, 0, 4, 1, 0,
+ 3, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 1, 0, 3,
+ 0, 1, 1, 0, 0, 0, 1, 0,
+ 1, 0, 0, 0, 0, 1, 0, 0,
+ 0
+};
+
+static const short _eo_tokenizer_index_offsets[] = {
+ 0, 3, 7, 9, 11, 13, 15, 17,
+ 19, 21, 25, 31, 36, 48, 52, 60,
+ 64, 68, 73, 82, 87, 92, 94, 96,
+ 98, 102, 104, 106, 108, 110, 112, 114,
+ 116, 120, 122, 124, 126, 130, 134, 137,
+ 141, 149, 152, 156, 158, 167, 172, 178,
+ 184, 194, 204, 214, 224, 234, 243, 250,
+ 255, 261, 271, 281, 291, 301, 310, 317,
+ 327, 338, 343, 345, 347, 354, 357, 361,
+ 364, 368, 370, 380, 385, 387, 389, 396,
+ 399, 403, 406, 410, 412, 414, 418, 420,
+ 422, 426, 428, 432, 434, 436, 438, 440,
+ 444, 447, 451, 453, 461, 465, 469, 472,
+ 476, 484, 487, 491, 493, 495, 497, 499,
+ 501, 503, 505, 507, 509, 513, 519, 524,
+ 530, 532, 534, 536, 538, 542, 544, 546,
+ 548, 550, 554, 560, 570, 581, 586, 588,
+ 590, 597, 600, 604, 607, 611, 613, 621,
+ 625, 629, 632, 636, 644, 647, 651, 653,
+ 655, 657, 659, 661, 663, 665, 667, 669,
+ 671, 673, 677, 679, 681, 685, 690, 695,
+ 701, 703, 705, 707, 709, 711, 713, 715,
+ 717, 719, 723, 725, 727, 729, 731, 733,
+ 735, 737, 741, 746, 751, 757, 759, 761,
+ 763, 765, 769, 775, 781, 790, 794, 804,
+ 806, 808, 815, 818, 822, 828, 830, 832,
+ 834, 836, 838, 840, 842, 844, 848, 854,
+ 860, 870, 875, 879, 881, 883, 885, 887,
+ 889, 899, 904, 908, 915, 919, 921, 923,
+ 925, 927, 929, 933, 940, 946, 951, 959,
+ 963, 975, 983, 988, 998, 1004, 1010, 1015,
+ 1017, 1019, 1021, 1023, 1025, 1029, 1035, 1040,
+ 1046, 1048, 1051, 1056, 1062, 1066, 1071, 1073,
+ 1075, 1082, 1085, 1089, 1097, 1107, 1112, 1121,
+ 1123, 1125, 1127, 1129, 1131, 1133, 1135, 1137,
+ 1139, 1141, 1143, 1145, 1149, 1154, 1159, 1165,
+ 1167, 1169, 1171, 1173, 1175, 1179, 1181, 1183,
+ 1185, 1187, 1189, 1191, 1193, 1195, 1199, 1207,
+ 1210, 1213, 1215, 1217, 1219, 1221, 1230, 1233,
+ 1236, 1241, 1247, 1253, 1258, 1259, 1261, 1268,
+ 1271, 1274, 1283, 1288, 1289, 1291, 1300, 1303,
+ 1306, 1308, 1310, 1312, 1314, 1316, 1324, 1327,
+ 1330, 1335, 1337, 1346, 1349, 1352, 1354, 1356,
+ 1358, 1360, 1365, 1366, 1368, 1376, 1379, 1382,
+ 1387, 1389, 1401, 1404, 1407, 1409, 1412, 1415,
+ 1418, 1421, 1423, 1425, 1427, 1429, 1432, 1434,
+ 1436
+};
+
+static const short _eo_tokenizer_indicies[] = {
+ 2, 3, 1, 2, 3, 4, 1, 6,
+ 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, 19, 18, 18,
+ 20, 16, 21, 17, 16, 16, 16, 0,
+ 23, 24, 22, 0, 25, 23, 25, 25,
+ 26, 24, 22, 0, 27, 28, 28, 0,
+ 30, 31, 29, 0, 32, 32, 32, 32,
+ 0, 34, 35, 36, 32, 33, 32, 32,
+ 32, 0, 38, 27, 39, 37, 0, 40,
+ 39, 28, 28, 0, 41, 0, 42, 0,
+ 43, 0, 44, 44, 44, 0, 45, 0,
+ 46, 0, 47, 0, 48, 0, 49, 0,
+ 50, 0, 51, 0, 52, 52, 52, 0,
+ 53, 0, 54, 0, 55, 0, 56, 56,
+ 56, 0, 59, 60, 61, 58, 59, 60,
+ 58, 59, 60, 62, 58, 63, 60, 64,
+ 61, 64, 64, 64, 58, 66, 67, 65,
+ 66, 67, 68, 65, 70, 69, 71, 71,
+ 71, 73, 72, 72, 72, 72, 57, 71,
+ 71, 71, 73, 57, 74, 74, 74, 75,
+ 75, 57, 76, 76, 76, 77, 77, 57,
+ 78, 78, 78, 78, 79, 78, 78, 78,
+ 78, 57, 71, 71, 71, 73, 72, 80,
+ 72, 72, 72, 57, 71, 71, 71, 73,
+ 72, 81, 72, 72, 72, 57, 71, 71,
+ 71, 73, 72, 82, 72, 72, 72, 57,
+ 71, 71, 71, 73, 72, 83, 72, 72,
+ 72, 57, 84, 84, 84, 73, 72, 72,
+ 72, 72, 57, 84, 84, 84, 73, 85,
+ 85, 57, 86, 86, 86, 86, 57, 87,
+ 86, 86, 86, 86, 57, 71, 71, 71,
+ 73, 72, 88, 72, 72, 72, 57, 71,
+ 71, 71, 73, 72, 89, 72, 72, 72,
+ 57, 71, 71, 71, 73, 72, 90, 72,
+ 72, 72, 57, 71, 71, 71, 73, 72,
+ 91, 72, 72, 72, 57, 92, 92, 92,
+ 73, 72, 72, 72, 72, 57, 92, 92,
+ 92, 73, 93, 93, 57, 94, 94, 94,
+ 94, 94, 94, 94, 94, 94, 57, 94,
+ 94, 94, 95, 94, 94, 94, 94, 94,
+ 94, 57, 97, 97, 97, 98, 96, 99,
+ 96, 100, 96, 101, 102, 100, 102, 102,
+ 102, 96, 104, 105, 103, 104, 105, 106,
+ 103, 109, 110, 108, 109, 110, 111, 108,
+ 113, 112, 114, 114, 114, 114, 115, 114,
+ 114, 114, 114, 107, 117, 117, 117, 118,
+ 116, 119, 116, 120, 116, 121, 122, 120,
+ 122, 122, 122, 116, 124, 125, 123, 124,
+ 125, 126, 123, 129, 130, 128, 129, 130,
+ 131, 128, 133, 132, 134, 127, 135, 136,
+ 134, 127, 137, 127, 138, 127, 139, 140,
+ 138, 127, 141, 127, 142, 143, 141, 127,
+ 144, 127, 145, 127, 146, 127, 147, 127,
+ 148, 149, 147, 127, 152, 153, 151, 152,
+ 153, 154, 151, 156, 155, 158, 159, 160,
+ 157, 159, 159, 159, 150, 162, 163, 161,
+ 150, 166, 167, 168, 165, 166, 167, 165,
+ 166, 167, 169, 165, 170, 167, 171, 168,
+ 171, 171, 171, 165, 173, 174, 172, 173,
+ 174, 175, 172, 177, 176, 178, 164, 179,
+ 164, 180, 164, 181, 164, 182, 164, 183,
+ 164, 184, 164, 185, 164, 186, 186, 186,
+ 164, 186, 186, 186, 187, 187, 164, 188,
+ 188, 188, 188, 164, 189, 188, 188, 188,
+ 188, 164, 190, 164, 191, 164, 192, 164,
+ 193, 164, 194, 195, 193, 164, 196, 164,
+ 197, 164, 198, 164, 199, 164, 200, 200,
+ 200, 164, 200, 200, 200, 201, 201, 164,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 164, 202, 202, 202, 203, 202, 202,
+ 202, 202, 202, 202, 164, 205, 205, 205,
+ 206, 204, 207, 204, 208, 204, 209, 210,
+ 208, 210, 210, 210, 204, 212, 213, 211,
+ 212, 213, 214, 211, 217, 218, 216, 217,
+ 218, 219, 216, 221, 220, 223, 224, 225,
+ 222, 224, 224, 224, 215, 227, 228, 226,
+ 215, 231, 232, 233, 230, 231, 232, 230,
+ 231, 232, 234, 230, 235, 232, 236, 233,
+ 236, 236, 236, 230, 238, 239, 237, 238,
+ 239, 240, 237, 242, 241, 243, 229, 244,
+ 229, 245, 229, 246, 229, 247, 229, 248,
+ 229, 249, 229, 250, 229, 251, 229, 252,
+ 229, 253, 254, 252, 229, 255, 229, 256,
+ 229, 257, 258, 256, 229, 259, 258, 260,
+ 260, 229, 261, 261, 261, 261, 229, 262,
+ 261, 261, 261, 261, 229, 263, 229, 264,
+ 229, 265, 229, 266, 229, 267, 229, 268,
+ 229, 269, 229, 270, 229, 271, 229, 272,
+ 273, 271, 229, 274, 229, 275, 229, 276,
+ 229, 277, 229, 278, 229, 279, 229, 280,
+ 229, 281, 282, 280, 229, 283, 282, 284,
+ 284, 229, 285, 285, 285, 285, 229, 286,
+ 285, 285, 285, 285, 229, 287, 229, 288,
+ 229, 289, 229, 290, 229, 291, 292, 290,
+ 229, 293, 295, 292, 294, 294, 229, 296,
+ 296, 296, 296, 296, 229, 298, 296, 299,
+ 296, 297, 296, 296, 296, 229, 301, 302,
+ 300, 229, 302, 293, 302, 302, 303, 295,
+ 292, 294, 294, 229, 304, 229, 305, 229,
+ 306, 307, 305, 307, 307, 307, 229, 309,
+ 310, 308, 309, 310, 311, 308, 313, 315,
+ 312, 314, 314, 229, 316, 229, 317, 229,
+ 318, 229, 319, 229, 320, 229, 321, 229,
+ 322, 229, 323, 229, 324, 325, 323, 229,
+ 326, 328, 325, 327, 327, 229, 330, 329,
+ 329, 329, 329, 229, 332, 330, 333, 329,
+ 334, 331, 329, 329, 329, 229, 336, 325,
+ 337, 335, 229, 338, 339, 337, 229, 340,
+ 229, 341, 229, 342, 229, 343, 229, 344,
+ 229, 346, 347, 346, 346, 348, 350, 345,
+ 349, 349, 229, 352, 353, 354, 351, 229,
+ 355, 356, 353, 229, 326, 325, 328, 325,
+ 327, 327, 229, 357, 358, 354, 229, 359,
+ 229, 360, 229, 361, 229, 362, 229, 363,
+ 229, 364, 365, 363, 229, 366, 367, 368,
+ 365, 369, 369, 229, 367, 367, 367, 370,
+ 370, 229, 371, 371, 371, 371, 229, 373,
+ 374, 371, 372, 371, 371, 371, 229, 376,
+ 368, 375, 229, 368, 378, 368, 368, 379,
+ 367, 368, 380, 377, 369, 369, 229, 378,
+ 367, 368, 380, 377, 369, 369, 229, 381,
+ 381, 381, 381, 229, 382, 382, 382, 383,
+ 384, 381, 381, 381, 381, 229, 385, 385,
+ 385, 367, 368, 229, 387, 386, 388, 389,
+ 386, 229, 387, 388, 389, 386, 229, 390,
+ 229, 391, 229, 392, 229, 393, 229, 394,
+ 229, 395, 395, 395, 229, 395, 395, 395,
+ 396, 396, 229, 397, 397, 397, 397, 229,
+ 398, 397, 397, 397, 397, 229, 399, 229,
+ 400, 400, 229, 401, 401, 401, 401, 229,
+ 402, 401, 401, 401, 401, 229, 404, 389,
+ 403, 229, 355, 353, 356, 353, 229, 405,
+ 229, 406, 229, 407, 408, 406, 408, 408,
+ 408, 229, 410, 411, 409, 410, 411, 412,
+ 409, 414, 415, 416, 418, 413, 417, 417,
+ 229, 419, 352, 419, 419, 353, 354, 351,
+ 420, 420, 229, 421, 421, 421, 421, 229,
+ 423, 424, 421, 425, 422, 421, 421, 421,
+ 229, 329, 229, 426, 229, 427, 229, 428,
+ 229, 429, 229, 430, 229, 431, 229, 432,
+ 229, 433, 229, 434, 229, 435, 229, 436,
+ 229, 437, 438, 436, 229, 439, 438, 440,
+ 440, 229, 441, 441, 441, 441, 229, 442,
+ 441, 441, 441, 441, 229, 443, 229, 444,
+ 229, 445, 229, 446, 229, 447, 229, 448,
+ 449, 447, 229, 450, 229, 451, 229, 452,
+ 229, 453, 229, 454, 229, 455, 229, 456,
+ 229, 457, 229, 458, 459, 457, 229, 462,
+ 463, 464, 465, 466, 467, 461, 460, 462,
+ 461, 468, 1, 5, 469, 470, 469, 471,
+ 469, 472, 469, 473, 469, 476, 477, 479,
+ 480, 481, 475, 478, 478, 474, 476, 475,
+ 482, 484, 69, 483, 72, 72, 72, 72,
+ 483, 72, 485, 72, 72, 72, 483, 72,
+ 486, 72, 72, 72, 483, 97, 97, 97,
+ 98, 487, 488, 490, 489, 493, 494, 496,
+ 492, 495, 495, 491, 493, 492, 497, 108,
+ 112, 498, 114, 114, 114, 114, 114, 114,
+ 114, 114, 498, 117, 117, 117, 118, 499,
+ 500, 502, 501, 505, 506, 507, 508, 509,
+ 510, 511, 504, 503, 505, 504, 512, 128,
+ 132, 513, 514, 513, 515, 513, 516, 513,
+ 517, 513, 519, 518, 522, 523, 525, 521,
+ 524, 524, 524, 520, 522, 521, 526, 151,
+ 155, 527, 159, 159, 159, 159, 527, 529,
+ 528, 532, 533, 534, 535, 536, 537, 538,
+ 531, 530, 532, 531, 539, 541, 176, 540,
+ 542, 540, 543, 540, 544, 540, 545, 540,
+ 205, 205, 205, 206, 546, 547, 549, 548,
+ 552, 553, 555, 551, 554, 554, 554, 550,
+ 552, 551, 556, 216, 220, 557, 224, 224,
+ 224, 224, 557, 559, 558, 562, 563, 564,
+ 565, 566, 567, 568, 569, 570, 571, 561,
+ 560, 562, 561, 572, 574, 241, 573, 575,
+ 573, 576, 577, 573, 580, 579, 578, 581,
+ 582, 573, 585, 584, 583, 587, 586, 588,
+ 573, 590, 589, 591, 573, 594, 593, 592,
+ 595, 573, 596, 573, 598, 597, 0
+};
+
+static const short _eo_tokenizer_trans_targs[] = {
+ 302, 0, 0, 1, 302, 2, 302, 4,
+ 5, 6, 7, 8, 9, 10, 10, 11,
+ 12, 13, 14, 13, 15, 302, 13, 13,
+ 302, 14, 15, 16, 17, 13, 13, 302,
+ 18, 19, 19, 16, 20, 19, 19, 20,
+ 20, 22, 23, 24, 10, 26, 27, 28,
+ 29, 30, 31, 32, 10, 34, 35, 36,
+ 10, 309, 38, 38, 39, 40, 309, 40,
+ 41, 41, 41, 42, 309, 43, 309, 45,
+ 44, 46, 47, 48, 47, 48, 48, 309,
+ 50, 51, 52, 53, 54, 55, 56, 309,
+ 58, 59, 60, 61, 62, 63, 64, 315,
+ 309, 65, 66, 67, 68, 68, 69, 69,
+ 69, 70, 316, 318, 71, 71, 72, 318,
+ 73, 318, 74, 322, 318, 75, 76, 77,
+ 78, 78, 79, 79, 79, 80, 323, 325,
+ 81, 81, 82, 325, 83, 325, 85, 85,
+ 325, 87, 88, 88, 325, 90, 90, 325,
+ 92, 93, 94, 95, 95, 325, 333, 96,
+ 96, 97, 333, 98, 333, 100, 100, 99,
+ 333, 100, 100, 333, 338, 102, 102, 103,
+ 104, 338, 104, 105, 105, 105, 106, 338,
+ 107, 338, 109, 110, 111, 338, 113, 114,
+ 115, 116, 117, 118, 119, 338, 121, 122,
+ 123, 124, 124, 338, 126, 127, 128, 129,
+ 130, 131, 132, 345, 338, 133, 134, 135,
+ 136, 136, 137, 137, 137, 138, 346, 348,
+ 139, 139, 140, 348, 141, 348, 143, 143,
+ 142, 348, 143, 143, 348, 353, 145, 145,
+ 146, 147, 353, 147, 148, 148, 148, 149,
+ 353, 150, 353, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 161, 353, 163,
+ 164, 164, 165, 165, 166, 167, 358, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177,
+ 177, 353, 179, 180, 181, 182, 183, 184,
+ 185, 185, 186, 186, 187, 188, 360, 190,
+ 191, 192, 193, 193, 194, 194, 195, 361,
+ 196, 197, 197, 198, 197, 197, 198, 199,
+ 200, 201, 201, 202, 202, 202, 203, 204,
+ 194, 194, 195, 361, 206, 207, 208, 209,
+ 210, 211, 212, 213, 213, 214, 214, 215,
+ 363, 216, 271, 217, 217, 214, 218, 217,
+ 217, 218, 218, 219, 220, 221, 222, 223,
+ 224, 225, 268, 225, 226, 269, 228, 225,
+ 225, 226, 228, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 234, 235, 235, 236,
+ 240, 242, 237, 238, 239, 239, 240, 239,
+ 239, 241, 241, 262, 245, 243, 244, 236,
+ 240, 244, 246, 246, 247, 261, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 260, 260, 263, 264, 264,
+ 265, 265, 265, 266, 267, 241, 241, 236,
+ 240, 242, 245, 268, 269, 270, 225, 225,
+ 226, 228, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 282, 283, 283, 284, 284,
+ 285, 286, 365, 288, 289, 290, 291, 292,
+ 292, 353, 294, 295, 296, 297, 298, 299,
+ 300, 301, 301, 353, 302, 303, 303, 304,
+ 305, 306, 307, 308, 302, 302, 3, 21,
+ 25, 33, 309, 310, 310, 311, 312, 313,
+ 314, 317, 309, 309, 37, 49, 57, 309,
+ 309, 309, 309, 318, 319, 319, 320, 321,
+ 324, 318, 318, 318, 318, 318, 318, 325,
+ 326, 326, 327, 328, 329, 330, 331, 332,
+ 325, 325, 84, 86, 89, 91, 325, 325,
+ 333, 334, 334, 335, 336, 337, 333, 333,
+ 333, 333, 338, 339, 339, 340, 341, 342,
+ 343, 344, 347, 338, 338, 101, 108, 112,
+ 120, 125, 338, 338, 338, 338, 348, 349,
+ 349, 350, 351, 352, 348, 348, 348, 348,
+ 353, 354, 354, 355, 356, 357, 359, 362,
+ 364, 366, 367, 368, 353, 353, 144, 151,
+ 162, 168, 353, 358, 358, 178, 189, 353,
+ 360, 360, 353, 353, 205, 353, 353, 272,
+ 353, 365, 365, 287, 293, 353, 353
+};
+
+static const short _eo_tokenizer_trans_actions[] = {
+ 219, 0, 1, 0, 209, 0, 242, 0,
+ 0, 0, 0, 0, 0, 43, 0, 3,
+ 0, 49, 49, 320, 49, 323, 0, 1,
+ 211, 0, 0, 0, 3, 13, 284, 287,
+ 0, 11, 281, 11, 11, 0, 1, 0,
+ 1, 0, 0, 0, 41, 0, 0, 0,
+ 0, 0, 0, 0, 47, 0, 0, 0,
+ 45, 75, 0, 1, 0, 0, 59, 1,
+ 3, 0, 1, 0, 57, 0, 221, 0,
+ 0, 0, 5, 251, 0, 3, 0, 254,
+ 0, 0, 0, 0, 0, 3, 0, 248,
+ 0, 0, 0, 0, 0, 3, 0, 332,
+ 73, 0, 0, 0, 0, 1, 3, 0,
+ 1, 0, 0, 93, 0, 1, 0, 77,
+ 0, 224, 0, 335, 91, 0, 0, 0,
+ 0, 1, 3, 0, 1, 0, 0, 115,
+ 0, 1, 0, 95, 0, 227, 0, 1,
+ 97, 0, 0, 1, 101, 0, 1, 99,
+ 0, 0, 0, 0, 1, 103, 131, 0,
+ 1, 0, 117, 0, 230, 7, 260, 0,
+ 263, 0, 1, 119, 153, 0, 1, 0,
+ 0, 135, 1, 3, 0, 1, 0, 133,
+ 0, 233, 0, 0, 0, 272, 0, 0,
+ 0, 0, 0, 3, 0, 269, 0, 0,
+ 0, 0, 1, 137, 0, 0, 0, 0,
+ 0, 3, 0, 338, 151, 0, 0, 0,
+ 0, 1, 3, 0, 1, 0, 0, 169,
+ 0, 1, 0, 155, 0, 236, 9, 275,
+ 0, 278, 0, 1, 157, 207, 0, 1,
+ 0, 0, 173, 1, 3, 0, 1, 0,
+ 171, 0, 239, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 179, 0,
+ 0, 1, 0, 1, 3, 0, 23, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 181, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 1, 3, 0, 21, 0,
+ 0, 0, 0, 1, 0, 1, 3, 0,
+ 0, 15, 290, 15, 0, 1, 0, 0,
+ 0, 0, 1, 3, 0, 1, 0, 0,
+ 17, 293, 296, 17, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 3,
+ 0, 0, 0, 25, 299, 25, 25, 0,
+ 1, 0, 1, 0, 0, 0, 0, 0,
+ 0, 27, 27, 302, 27, 305, 27, 0,
+ 1, 0, 0, 1, 0, 1, 0, 0,
+ 0, 0, 0, 0, 1, 0, 1, 0,
+ 0, 3, 3, 0, 33, 311, 33, 0,
+ 1, 0, 1, 0, 0, 0, 31, 31,
+ 31, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 0, 37, 0,
+ 3, 0, 39, 0, 1, 0, 0, 1,
+ 3, 0, 1, 0, 0, 35, 314, 35,
+ 35, 317, 35, 0, 3, 0, 29, 308,
+ 29, 29, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 1,
+ 3, 0, 19, 0, 0, 0, 0, 0,
+ 1, 185, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 183, 213, 0, 1, 326,
+ 55, 55, 55, 55, 215, 217, 0, 0,
+ 0, 0, 63, 0, 1, 326, 329, 329,
+ 329, 0, 65, 71, 0, 0, 0, 67,
+ 245, 69, 61, 81, 0, 1, 326, 329,
+ 0, 83, 89, 85, 257, 87, 79, 107,
+ 0, 1, 326, 55, 55, 55, 55, 0,
+ 109, 113, 0, 0, 0, 0, 111, 105,
+ 123, 0, 1, 326, 329, 0, 125, 129,
+ 127, 121, 141, 0, 1, 326, 55, 55,
+ 55, 55, 0, 143, 149, 0, 0, 0,
+ 0, 0, 145, 266, 147, 139, 161, 0,
+ 1, 326, 329, 0, 163, 167, 165, 159,
+ 189, 0, 1, 326, 55, 55, 55, 55,
+ 55, 55, 55, 0, 191, 205, 0, 0,
+ 0, 0, 197, 0, 1, 0, 0, 195,
+ 0, 1, 201, 177, 0, 199, 175, 0,
+ 193, 0, 1, 0, 0, 203, 187
+};
+
+static const short _eo_tokenizer_to_state_actions[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 51, 0,
+ 0, 0, 0, 0, 0, 51, 0, 0,
+ 0, 0, 0, 0, 0, 0, 51, 0,
+ 0, 0, 0, 0, 0, 51, 0, 0,
+ 0, 0, 0, 0, 0, 51, 0, 0,
+ 0, 0, 51, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 51, 0, 0, 0,
+ 0, 51, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0
+};
+
+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, 53, 0,
+ 0, 0, 0, 0, 0, 53, 0, 0,
+ 0, 0, 0, 0, 0, 0, 53, 0,
+ 0, 0, 0, 0, 0, 53, 0, 0,
+ 0, 0, 0, 0, 0, 53, 0, 0,
+ 0, 0, 53, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 53, 0, 0, 0,
+ 0, 53, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0
+};
+
+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, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 97, 97, 97, 97, 97, 97, 108,
+ 108, 108, 108, 117, 117, 117, 117, 117,
+ 117, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 151, 151, 151, 151, 151, 165, 165, 165,
+ 165, 165, 165, 165, 165, 165, 165, 165,
+ 165, 165, 165, 165, 165, 165, 165, 165,
+ 165, 165, 165, 165, 165, 165, 165, 165,
+ 165, 165, 165, 165, 165, 205, 205, 205,
+ 205, 205, 205, 216, 216, 216, 216, 216,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 0, 469,
+ 470, 470, 470, 470, 470, 0, 483, 484,
+ 484, 484, 484, 488, 489, 490, 0, 498,
+ 499, 499, 500, 501, 502, 0, 513, 514,
+ 514, 514, 514, 514, 519, 0, 527, 528,
+ 528, 529, 0, 540, 541, 541, 541, 541,
+ 541, 547, 548, 549, 0, 557, 558, 558,
+ 559, 0, 573, 574, 574, 574, 579, 574,
+ 584, 587, 574, 590, 574, 593, 574, 574,
+ 598
+};
+
+static const int eo_tokenizer_start = 302;
+static const int eo_tokenizer_first_final = 302;
+static const int eo_tokenizer_error = -1;
+
+static const int eo_tokenizer_en_tokenize_accessor = 309;
+static const int eo_tokenizer_en_tokenize_params = 318;
+static const int eo_tokenizer_en_tokenize_property = 325;
+static const int eo_tokenizer_en_tokenize_properties = 333;
+static const int eo_tokenizer_en_tokenize_method = 338;
+static const int eo_tokenizer_en_tokenize_methods = 348;
+static const int eo_tokenizer_en_tokenize_class = 353;
+static const int eo_tokenizer_en_main = 302;
+
+
+#line 1022 "lib/eolian/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;
+ Eina_Bool ret = EINA_TRUE;
+
+ 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 1312 "lib/eolian/eo_lexer.c"
+ {
+ toknz->cs = eo_tokenizer_start;
+ toknz->ts = 0;
+ toknz->te = 0;
+ toknz->act = 0;
+ }
+
+#line 1045 "lib/eolian/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 1347 "lib/eolian/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 37:
+#line 1 "NONE"
+ { toknz->ts = ( toknz->p);}
+ break;
+#line 1366 "lib/eolian/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 359 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->current_line += 1;
+ DBG("inc[%d] %d", toknz->cs, toknz->current_line);
+ }
+ break;
+ case 1:
+#line 364 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->saved.line = toknz->current_line;
+ DBG("save line[%d] %d", toknz->cs, toknz->current_line);
+ }
+ break;
+ case 2:
+#line 369 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->saved.tok = ( toknz->p);
+ DBG("save token[%d] %p %c", toknz->cs, ( toknz->p), *( toknz->p));
+ }
+ break;
+ case 3:
+#line 446 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!");
+ if (toknz->tmp.accessor->ret != NULL)
+ ABORT(toknz, "accessor has already a return type");
+ toknz->tmp.accessor->ret = _eo_tokenizer_return_get(toknz, ( toknz->p));
+ }
+ break;
+ case 4:
+#line 453 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!");
+ if (!toknz->tmp.accessor->ret) ABORT(toknz, "No ret!!!");
+ if (toknz->tmp.accessor->ret->comment != NULL)
+ ABORT(toknz, "accessor return type has already a comment");
+ toknz->tmp.accessor->ret->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
+ INF(" %s", toknz->tmp.accessor->ret->comment);
+ }
+ break;
+ case 5:
+#line 462 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!");
+ toknz->tmp.accessor->legacy = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 6:
+#line 476 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->tmp.accessor_param = _eo_tokenizer_accessor_param_get(toknz, ( toknz->p));
+ }
+ break;
+ case 7:
+#line 480 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.accessor_param)
+ ABORT(toknz, "No accessor param!!!");
+ 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 509 "lib/eolian/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 517 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->tmp.param = _eo_tokenizer_param_get(toknz, ( toknz->p));
+ if (toknz->tmp.params)
+ *(toknz->tmp.params) = eina_list_append(*(toknz->tmp.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 617 "lib/eolian/eo_lexer.rl"
+ {
+ if (toknz->tmp.prop != NULL)
+ ABORT(toknz, "there is a pending property definition %s", toknz->tmp.prop->name);
+ toknz->tmp.prop = _eo_tokenizer_property_get(toknz, ( toknz->p));
+ }
+ break;
+ case 11:
+#line 657 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ if (toknz->tmp.meth->ret != NULL)
+ ABORT(toknz, "method '%s' has already a return type", toknz->tmp.meth->name);
+ toknz->tmp.meth->ret = _eo_tokenizer_return_get(toknz, ( toknz->p));
+ }
+ break;
+ case 12:
+#line 664 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ if (toknz->tmp.meth->ret != NULL) ABORT(toknz, "No ret!!!");
+ if (toknz->tmp.meth->ret->comment != NULL)
+ ABORT(toknz, "method '%s' return type has already a comment", toknz->tmp.meth->name);
+ toknz->tmp.meth->ret->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
+ INF(" %s", toknz->tmp.meth->ret->comment);
+ }
+ break;
+ case 13:
+#line 673 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ toknz->tmp.meth->legacy = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 14:
+#line 678 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ toknz->tmp.meth->obj_const = EINA_TRUE;
+ INF(" obj const");
+ }
+ break;
+ case 15:
+#line 740 "lib/eolian/eo_lexer.rl"
+ {
+ if (toknz->tmp.meth != NULL)
+ ABORT(toknz, "there is a pending method definition %s", toknz->tmp.meth->name);
+ toknz->tmp.meth = _eo_tokenizer_method_get(toknz, ( toknz->p));
+ }
+ break;
+ case 16:
+#line 772 "lib/eolian/eo_lexer.rl"
+ {
+ const char *base = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ toknz->tmp.str_items = eina_list_append(toknz->tmp.str_items, base);
+ }
+ break;
+ case 17:
+#line 777 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ toknz->tmp.kls->inherits = toknz->tmp.str_items;
+ toknz->tmp.str_items = NULL;
+ }
+ break;
+ case 18:
+#line 825 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ toknz->tmp.event = _eo_tokenizer_event_get(toknz, ( toknz->p));
+ toknz->tmp.kls->events = eina_list_append(toknz->tmp.kls->events, toknz->tmp.event);
+ }
+ break;
+ case 19:
+#line 831 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.event) ABORT(toknz, "No event!!!");
+ if (toknz->tmp.event->comment != NULL)
+ ABORT(toknz, "event %s has already a comment", toknz->tmp.event->name);
+ toknz->tmp.event->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
+ toknz->tmp.event = NULL;
+ }
+ break;
+ case 20:
+#line 839 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ 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 848 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ if (toknz->tmp.kls->eo_prefix != NULL)
+ ABORT(toknz, "An Eo prefix has already been given");
+ toknz->tmp.kls->eo_prefix = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 22:
+#line 857 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ if (toknz->tmp.kls->data_type != NULL)
+ ABORT(toknz, "A data type has already been given");
+ toknz->tmp.kls->data_type = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 23:
+#line 870 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ toknz->tmp.impl = _eo_tokenizer_implement_get(toknz, ( toknz->p));
+ toknz->tmp.kls->implements = eina_list_append(toknz->tmp.kls->implements, toknz->tmp.impl);
+ }
+ break;
+ case 24:
+#line 876 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
+ 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 25:
+#line 883 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
+ 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 26:
+#line 890 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
+ toknz->tmp.impl_leg_param = calloc(1, sizeof(Eo_Implement_Legacy_Param_Def));
+ 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 27:
+#line 899 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl_leg_param)
+ ABORT(toknz, "No implement legacy param!!!");
+ toknz->tmp.impl_leg_param->legacy_name = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 28:
+#line 905 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl_leg_param)
+ ABORT(toknz, "No implement legacy param!!!");
+ toknz->tmp.impl_leg_param->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
+ }
+ break;
+ case 29:
+#line 911 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
+ 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 30:
+#line 918 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
+ 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 31:
+#line 988 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->tmp.kls_type = EOLIAN_CLASS_REGULAR;
+ }
+ break;
+ case 32:
+#line 991 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->tmp.kls_type = EOLIAN_CLASS_ABSTRACT;
+ }
+ break;
+ case 33:
+#line 994 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->tmp.kls_type = EOLIAN_CLASS_MIXIN;
+ }
+ break;
+ case 34:
+#line 997 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->tmp.kls_type = EOLIAN_CLASS_INTERFACE;
+ }
+ break;
+ case 35:
+#line 1001 "lib/eolian/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 38:
+#line 1 "NONE"
+ { toknz->te = ( toknz->p)+1;}
+ break;
+ case 39:
+#line 438 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!");
+ 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 40:
+#line 374 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 41:
+#line 501 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;}
+ break;
+ case 42:
+#line 502 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;}
+ break;
+ case 43:
+#line 467 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" }");
+ if (!toknz->tmp.prop) ABORT(toknz, "No prop!!!");
+ toknz->tmp.prop->accessors = eina_list_append(toknz->tmp.prop->accessors, toknz->tmp.accessor);
+ toknz->tmp.accessor = NULL;
+ toknz->current_nesting--;
+ { toknz->cs = 325; goto _again;}
+ }}
+ break;
+ case 44:
+#line 383 "lib/eolian/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 45:
+#line 497 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 46:
+#line 500 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 47:
+#line 467 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ INF(" }");
+ if (!toknz->tmp.prop) ABORT(toknz, "No prop!!!");
+ toknz->tmp.prop->accessors = eina_list_append(toknz->tmp.prop->accessors, toknz->tmp.accessor);
+ toknz->tmp.accessor = NULL;
+ toknz->current_nesting--;
+ { toknz->cs = 325; goto _again;}
+ }}
+ break;
+ case 48:
+#line 383 "lib/eolian/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 49:
+#line 500 "lib/eolian/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}}
+ break;
+ case 50:
+#line 383 "lib/eolian/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 51:
+#line 374 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 52:
+#line 526 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" }");
+ toknz->tmp.param = NULL;
+ toknz->current_nesting--;
+ if (toknz->tmp.prop)
+ { toknz->cs = 325; goto _again;}
+ else if (toknz->tmp.meth)
+ { toknz->cs = 338; goto _again;}
+ else
+ ABORT(toknz, "leaving tokenize_params but there is no property nor method pending");
+ }}
+ break;
+ case 53:
+#line 383 "lib/eolian/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 54:
+#line 542 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 55:
+#line 544 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 56:
+#line 526 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ INF(" }");
+ toknz->tmp.param = NULL;
+ toknz->current_nesting--;
+ if (toknz->tmp.prop)
+ { toknz->cs = 325; goto _again;}
+ else if (toknz->tmp.meth)
+ { toknz->cs = 338; goto _again;}
+ else
+ ABORT(toknz, "leaving tokenize_params but there is no property nor method pending");
+ }}
+ break;
+ case 57:
+#line 383 "lib/eolian/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 58:
+#line 544 "lib/eolian/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}}
+ break;
+ case 59:
+#line 383 "lib/eolian/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 60:
+#line 374 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 61:
+#line 551 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" get {");
+ toknz->tmp.accessor = _eo_tokenizer_accessor_get(toknz, GETTER);
+ toknz->current_nesting++;
+ { toknz->cs = 309; goto _again;}
+ }}
+ break;
+ case 62:
+#line 558 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" set {");
+ toknz->tmp.accessor = _eo_tokenizer_accessor_get(toknz, SETTER);
+ toknz->current_nesting++;
+ { toknz->cs = 309; goto _again;}
+ }}
+ break;
+ case 63:
+#line 565 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" keys {");
+ toknz->current_nesting++;
+ toknz->tmp.params = &(toknz->tmp.prop->keys);
+ { toknz->cs = 318; goto _again;}
+ }}
+ break;
+ case 64:
+#line 572 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" values {");
+ toknz->current_nesting++;
+ toknz->tmp.params = &(toknz->tmp.prop->values);
+ { toknz->cs = 318; goto _again;}
+ }}
+ break;
+ case 65:
+#line 579 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.prop) ABORT(toknz, "No property!!!");
+ if (eina_list_count(toknz->tmp.prop->values) == 0)
+ WRN("property '%s' has no values.", 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 = 333; goto _again;}
+ }}
+ break;
+ case 66:
+#line 383 "lib/eolian/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 67:
+#line 598 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 68:
+#line 579 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ if (!toknz->tmp.prop) ABORT(toknz, "No property!!!");
+ if (eina_list_count(toknz->tmp.prop->values) == 0)
+ WRN("property '%s' has no values.", 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 = 333; goto _again;}
+ }}
+ break;
+ case 69:
+#line 383 "lib/eolian/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 70:
+#line 383 "lib/eolian/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 71:
+#line 374 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 72:
+#line 610 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.prop) ABORT(toknz, "No property!!!");
+ INF(" %s {", toknz->tmp.prop->name);
+ toknz->current_nesting++;
+ { toknz->cs = 325; goto _again;}
+ }}
+ break;
+ case 73:
+#line 623 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" }");
+ toknz->current_nesting--;
+ { toknz->cs = 353; goto _again;}
+ }}
+ break;
+ case 74:
+#line 383 "lib/eolian/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 75:
+#line 632 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 76:
+#line 623 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ INF(" }");
+ toknz->current_nesting--;
+ { toknz->cs = 353; goto _again;}
+ }}
+ break;
+ case 77:
+#line 383 "lib/eolian/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 78:
+#line 383 "lib/eolian/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 79:
+#line 641 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ 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 80:
+#line 374 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 81:
+#line 649 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ INF(" params {");
+ toknz->current_nesting++;
+ toknz->tmp.params = &(toknz->tmp.meth->params);
+ { toknz->cs = 318; goto _again;}
+ }}
+ break;
+ case 82:
+#line 725 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;}
+ break;
+ case 83:
+#line 726 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;}
+ break;
+ case 84:
+#line 684 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ Eina_List **l = NULL;
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ 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 = 348; goto _again;}
+ }}
+ break;
+ case 85:
+#line 383 "lib/eolian/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 86:
+#line 720 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 87:
+#line 724 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 88:
+#line 684 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ Eina_List **l = NULL;
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ 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 = 348; goto _again;}
+ }}
+ break;
+ case 89:
+#line 383 "lib/eolian/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 724 "lib/eolian/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}}
+ break;
+ case 91:
+#line 383 "lib/eolian/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 92:
+#line 374 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 93:
+#line 733 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ INF(" %s {", toknz->tmp.meth->name);
+ toknz->current_nesting++;
+ { toknz->cs = 338; goto _again;}
+ }}
+ break;
+ case 94:
+#line 746 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" }");
+ toknz->current_methods_type = METH_TYPE_LAST;
+ toknz->current_nesting--;
+ { toknz->cs = 353; goto _again;}
+ }}
+ break;
+ case 95:
+#line 383 "lib/eolian/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 96:
+#line 756 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 97:
+#line 746 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ INF(" }");
+ toknz->current_methods_type = METH_TYPE_LAST;
+ toknz->current_nesting--;
+ { toknz->cs = 353; goto _again;}
+ }}
+ break;
+ case 98:
+#line 383 "lib/eolian/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 99:
+#line 383 "lib/eolian/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 100:
+#line 765 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ 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 101:
+#line 374 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 102:
+#line 783 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ }}
+ break;
+ case 103:
+#line 786 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ }}
+ break;
+ case 104:
+#line 789 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" constructors {");
+ toknz->current_methods_type = METH_CONSTRUCTOR;
+ toknz->current_nesting++;
+ { toknz->cs = 348; goto _again;}
+ }}
+ break;
+ case 105:
+#line 796 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" destructors {");
+ toknz->current_methods_type = METH_DESTRUCTOR;
+ toknz->current_nesting++;
+ { toknz->cs = 348; goto _again;}
+ }}
+ break;
+ case 106:
+#line 803 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" properties {");
+ toknz->current_nesting++;
+ { toknz->cs = 333; goto _again;}
+ }}
+ break;
+ case 107:
+#line 809 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" begin methods");
+ toknz->current_methods_type = METH_REGULAR;
+ toknz->current_nesting++;
+ { toknz->cs = 348; goto _again;}
+ }}
+ break;
+ case 108:
+#line 816 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ INF("end class: %s", toknz->tmp.kls->name);
+ toknz->classes = eina_list_append(toknz->classes, toknz->tmp.kls);
+ toknz->tmp.kls = NULL;
+ toknz->current_nesting--;
+ { toknz->cs = 302; goto _again;}
+ }}
+ break;
+ case 109:
+#line 383 "lib/eolian/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 110:
+#line 963 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 111:
+#line 966 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 112:
+#line 967 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 113:
+#line 968 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 114:
+#line 783 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ }}
+ break;
+ case 115:
+#line 786 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ }}
+ break;
+ case 116:
+#line 816 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ INF("end class: %s", toknz->tmp.kls->name);
+ toknz->classes = eina_list_append(toknz->classes, toknz->tmp.kls);
+ toknz->tmp.kls = NULL;
+ toknz->current_nesting--;
+ { toknz->cs = 302; goto _again;}
+ }}
+ break;
+ case 117:
+#line 383 "lib/eolian/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 118:
+#line 383 "lib/eolian/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 119:
+#line 374 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 120:
+#line 981 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ INF("begin class: %s", toknz->tmp.kls->name);
+ toknz->current_nesting++;
+ { toknz->cs = 353; goto _again;}
+ }}
+ break;
+ case 121:
+#line 383 "lib/eolian/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 122:
+#line 1016 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 123:
+#line 383 "lib/eolian/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 124:
+#line 383 "lib/eolian/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 2682 "lib/eolian/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 36:
+#line 1 "NONE"
+ { toknz->ts = 0;}
+ break;
+#line 2695 "lib/eolian/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 1071 "lib/eolian/eo_lexer.rl"
+
+ if ( toknz->cs ==
+#line 2716 "lib/eolian/eo_lexer.c"
+-1
+#line 1072 "lib/eolian/eo_lexer.rl"
+ )
+ {
+ ERR("%s: wrong termination", source);
+ ret = EINA_FALSE;
+ 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 ret;
+}
+
+static Eina_Bool
+eo_tokenizer_mem_walk(Eo_Tokenizer *toknz, const char *source, char *buffer, unsigned int len)
+{
+ INF("tokenize %s...", source);
+ toknz->source = eina_stringshare_add(source);
+
+ Eina_Bool ret = EINA_TRUE;
+
+
+#line 2764 "lib/eolian/eo_lexer.c"
+ {
+ toknz->cs = eo_tokenizer_start;
+ toknz->ts = 0;
+ toknz->te = 0;
+ toknz->act = 0;
+ }
+
+#line 1117 "lib/eolian/eo_lexer.rl"
+
+ toknz->p = buffer;
+
+ toknz->pe = toknz->p + len;
+
+ toknz->eof = toknz->pe;
+
+
+#line 2781 "lib/eolian/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 37:
+#line 1 "NONE"
+ { toknz->ts = ( toknz->p);}
+ break;
+#line 2800 "lib/eolian/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 359 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->current_line += 1;
+ DBG("inc[%d] %d", toknz->cs, toknz->current_line);
+ }
+ break;
+ case 1:
+#line 364 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->saved.line = toknz->current_line;
+ DBG("save line[%d] %d", toknz->cs, toknz->current_line);
+ }
+ break;
+ case 2:
+#line 369 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->saved.tok = ( toknz->p);
+ DBG("save token[%d] %p %c", toknz->cs, ( toknz->p), *( toknz->p));
+ }
+ break;
+ case 3:
+#line 446 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!");
+ if (toknz->tmp.accessor->ret != NULL)
+ ABORT(toknz, "accessor has already a return type");
+ toknz->tmp.accessor->ret = _eo_tokenizer_return_get(toknz, ( toknz->p));
+ }
+ break;
+ case 4:
+#line 453 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!");
+ if (!toknz->tmp.accessor->ret) ABORT(toknz, "No ret!!!");
+ if (toknz->tmp.accessor->ret->comment != NULL)
+ ABORT(toknz, "accessor return type has already a comment");
+ toknz->tmp.accessor->ret->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
+ INF(" %s", toknz->tmp.accessor->ret->comment);
+ }
+ break;
+ case 5:
+#line 462 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!");
+ toknz->tmp.accessor->legacy = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 6:
+#line 476 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->tmp.accessor_param = _eo_tokenizer_accessor_param_get(toknz, ( toknz->p));
+ }
+ break;
+ case 7:
+#line 480 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.accessor_param)
+ ABORT(toknz, "No accessor param!!!");
+ 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 509 "lib/eolian/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 517 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->tmp.param = _eo_tokenizer_param_get(toknz, ( toknz->p));
+ if (toknz->tmp.params)
+ *(toknz->tmp.params) = eina_list_append(*(toknz->tmp.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 617 "lib/eolian/eo_lexer.rl"
+ {
+ if (toknz->tmp.prop != NULL)
+ ABORT(toknz, "there is a pending property definition %s", toknz->tmp.prop->name);
+ toknz->tmp.prop = _eo_tokenizer_property_get(toknz, ( toknz->p));
+ }
+ break;
+ case 11:
+#line 657 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ if (toknz->tmp.meth->ret != NULL)
+ ABORT(toknz, "method '%s' has already a return type", toknz->tmp.meth->name);
+ toknz->tmp.meth->ret = _eo_tokenizer_return_get(toknz, ( toknz->p));
+ }
+ break;
+ case 12:
+#line 664 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ if (toknz->tmp.meth->ret != NULL) ABORT(toknz, "No ret!!!");
+ if (toknz->tmp.meth->ret->comment != NULL)
+ ABORT(toknz, "method '%s' return type has already a comment", toknz->tmp.meth->name);
+ toknz->tmp.meth->ret->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
+ INF(" %s", toknz->tmp.meth->ret->comment);
+ }
+ break;
+ case 13:
+#line 673 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ toknz->tmp.meth->legacy = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 14:
+#line 678 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ toknz->tmp.meth->obj_const = EINA_TRUE;
+ INF(" obj const");
+ }
+ break;
+ case 15:
+#line 740 "lib/eolian/eo_lexer.rl"
+ {
+ if (toknz->tmp.meth != NULL)
+ ABORT(toknz, "there is a pending method definition %s", toknz->tmp.meth->name);
+ toknz->tmp.meth = _eo_tokenizer_method_get(toknz, ( toknz->p));
+ }
+ break;
+ case 16:
+#line 772 "lib/eolian/eo_lexer.rl"
+ {
+ const char *base = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ toknz->tmp.str_items = eina_list_append(toknz->tmp.str_items, base);
+ }
+ break;
+ case 17:
+#line 777 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ toknz->tmp.kls->inherits = toknz->tmp.str_items;
+ toknz->tmp.str_items = NULL;
+ }
+ break;
+ case 18:
+#line 825 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ toknz->tmp.event = _eo_tokenizer_event_get(toknz, ( toknz->p));
+ toknz->tmp.kls->events = eina_list_append(toknz->tmp.kls->events, toknz->tmp.event);
+ }
+ break;
+ case 19:
+#line 831 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.event) ABORT(toknz, "No event!!!");
+ if (toknz->tmp.event->comment != NULL)
+ ABORT(toknz, "event %s has already a comment", toknz->tmp.event->name);
+ toknz->tmp.event->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
+ toknz->tmp.event = NULL;
+ }
+ break;
+ case 20:
+#line 839 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ 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 848 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ if (toknz->tmp.kls->eo_prefix != NULL)
+ ABORT(toknz, "An Eo prefix has already been given");
+ toknz->tmp.kls->eo_prefix = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 22:
+#line 857 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ if (toknz->tmp.kls->data_type != NULL)
+ ABORT(toknz, "A data type has already been given");
+ toknz->tmp.kls->data_type = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 23:
+#line 870 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ toknz->tmp.impl = _eo_tokenizer_implement_get(toknz, ( toknz->p));
+ toknz->tmp.kls->implements = eina_list_append(toknz->tmp.kls->implements, toknz->tmp.impl);
+ }
+ break;
+ case 24:
+#line 876 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
+ 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 25:
+#line 883 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
+ 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 26:
+#line 890 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
+ toknz->tmp.impl_leg_param = calloc(1, sizeof(Eo_Implement_Legacy_Param_Def));
+ 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 27:
+#line 899 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl_leg_param)
+ ABORT(toknz, "No implement legacy param!!!");
+ toknz->tmp.impl_leg_param->legacy_name = _eo_tokenizer_token_get(toknz, ( toknz->p));
+ }
+ break;
+ case 28:
+#line 905 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl_leg_param)
+ ABORT(toknz, "No implement legacy param!!!");
+ toknz->tmp.impl_leg_param->comment = _eo_tokenizer_token_get(toknz, ( toknz->p)-2);
+ }
+ break;
+ case 29:
+#line 911 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
+ 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 30:
+#line 918 "lib/eolian/eo_lexer.rl"
+ {
+ if (!toknz->tmp.impl) ABORT(toknz, "No implement!!!");
+ 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 31:
+#line 988 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->tmp.kls_type = EOLIAN_CLASS_REGULAR;
+ }
+ break;
+ case 32:
+#line 991 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->tmp.kls_type = EOLIAN_CLASS_ABSTRACT;
+ }
+ break;
+ case 33:
+#line 994 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->tmp.kls_type = EOLIAN_CLASS_MIXIN;
+ }
+ break;
+ case 34:
+#line 997 "lib/eolian/eo_lexer.rl"
+ {
+ toknz->tmp.kls_type = EOLIAN_CLASS_INTERFACE;
+ }
+ break;
+ case 35:
+#line 1001 "lib/eolian/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 38:
+#line 1 "NONE"
+ { toknz->te = ( toknz->p)+1;}
+ break;
+ case 39:
+#line 438 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.accessor) ABORT(toknz, "No accessor!!!");
+ 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 40:
+#line 374 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 41:
+#line 501 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;}
+ break;
+ case 42:
+#line 502 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;}
+ break;
+ case 43:
+#line 467 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" }");
+ if (!toknz->tmp.prop) ABORT(toknz, "No prop!!!");
+ toknz->tmp.prop->accessors = eina_list_append(toknz->tmp.prop->accessors, toknz->tmp.accessor);
+ toknz->tmp.accessor = NULL;
+ toknz->current_nesting--;
+ { toknz->cs = 325; goto _again;}
+ }}
+ break;
+ case 44:
+#line 383 "lib/eolian/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 45:
+#line 497 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 46:
+#line 500 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 47:
+#line 467 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ INF(" }");
+ if (!toknz->tmp.prop) ABORT(toknz, "No prop!!!");
+ toknz->tmp.prop->accessors = eina_list_append(toknz->tmp.prop->accessors, toknz->tmp.accessor);
+ toknz->tmp.accessor = NULL;
+ toknz->current_nesting--;
+ { toknz->cs = 325; goto _again;}
+ }}
+ break;
+ case 48:
+#line 383 "lib/eolian/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 49:
+#line 500 "lib/eolian/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}}
+ break;
+ case 50:
+#line 383 "lib/eolian/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 51:
+#line 374 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 52:
+#line 526 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" }");
+ toknz->tmp.param = NULL;
+ toknz->current_nesting--;
+ if (toknz->tmp.prop)
+ { toknz->cs = 325; goto _again;}
+ else if (toknz->tmp.meth)
+ { toknz->cs = 338; goto _again;}
+ else
+ ABORT(toknz, "leaving tokenize_params but there is no property nor method pending");
+ }}
+ break;
+ case 53:
+#line 383 "lib/eolian/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 54:
+#line 542 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 55:
+#line 544 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 56:
+#line 526 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ INF(" }");
+ toknz->tmp.param = NULL;
+ toknz->current_nesting--;
+ if (toknz->tmp.prop)
+ { toknz->cs = 325; goto _again;}
+ else if (toknz->tmp.meth)
+ { toknz->cs = 338; goto _again;}
+ else
+ ABORT(toknz, "leaving tokenize_params but there is no property nor method pending");
+ }}
+ break;
+ case 57:
+#line 383 "lib/eolian/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 58:
+#line 544 "lib/eolian/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}}
+ break;
+ case 59:
+#line 383 "lib/eolian/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 60:
+#line 374 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 61:
+#line 551 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" get {");
+ toknz->tmp.accessor = _eo_tokenizer_accessor_get(toknz, GETTER);
+ toknz->current_nesting++;
+ { toknz->cs = 309; goto _again;}
+ }}
+ break;
+ case 62:
+#line 558 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" set {");
+ toknz->tmp.accessor = _eo_tokenizer_accessor_get(toknz, SETTER);
+ toknz->current_nesting++;
+ { toknz->cs = 309; goto _again;}
+ }}
+ break;
+ case 63:
+#line 565 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" keys {");
+ toknz->current_nesting++;
+ toknz->tmp.params = &(toknz->tmp.prop->keys);
+ { toknz->cs = 318; goto _again;}
+ }}
+ break;
+ case 64:
+#line 572 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" values {");
+ toknz->current_nesting++;
+ toknz->tmp.params = &(toknz->tmp.prop->values);
+ { toknz->cs = 318; goto _again;}
+ }}
+ break;
+ case 65:
+#line 579 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.prop) ABORT(toknz, "No property!!!");
+ if (eina_list_count(toknz->tmp.prop->values) == 0)
+ WRN("property '%s' has no values.", 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 = 333; goto _again;}
+ }}
+ break;
+ case 66:
+#line 383 "lib/eolian/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 67:
+#line 598 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 68:
+#line 579 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ if (!toknz->tmp.prop) ABORT(toknz, "No property!!!");
+ if (eina_list_count(toknz->tmp.prop->values) == 0)
+ WRN("property '%s' has no values.", 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 = 333; goto _again;}
+ }}
+ break;
+ case 69:
+#line 383 "lib/eolian/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 70:
+#line 383 "lib/eolian/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 71:
+#line 374 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 72:
+#line 610 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.prop) ABORT(toknz, "No property!!!");
+ INF(" %s {", toknz->tmp.prop->name);
+ toknz->current_nesting++;
+ { toknz->cs = 325; goto _again;}
+ }}
+ break;
+ case 73:
+#line 623 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" }");
+ toknz->current_nesting--;
+ { toknz->cs = 353; goto _again;}
+ }}
+ break;
+ case 74:
+#line 383 "lib/eolian/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 75:
+#line 632 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 76:
+#line 623 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ INF(" }");
+ toknz->current_nesting--;
+ { toknz->cs = 353; goto _again;}
+ }}
+ break;
+ case 77:
+#line 383 "lib/eolian/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 78:
+#line 383 "lib/eolian/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 79:
+#line 641 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ 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 80:
+#line 374 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 81:
+#line 649 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ INF(" params {");
+ toknz->current_nesting++;
+ toknz->tmp.params = &(toknz->tmp.meth->params);
+ { toknz->cs = 318; goto _again;}
+ }}
+ break;
+ case 82:
+#line 725 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;}
+ break;
+ case 83:
+#line 726 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;}
+ break;
+ case 84:
+#line 684 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ Eina_List **l = NULL;
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ 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 = 348; goto _again;}
+ }}
+ break;
+ case 85:
+#line 383 "lib/eolian/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 86:
+#line 720 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 87:
+#line 724 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 88:
+#line 684 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ Eina_List **l = NULL;
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ 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 = 348; goto _again;}
+ }}
+ break;
+ case 89:
+#line 383 "lib/eolian/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 724 "lib/eolian/eo_lexer.rl"
+ {{( toknz->p) = (( toknz->te))-1;}}
+ break;
+ case 91:
+#line 383 "lib/eolian/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 92:
+#line 374 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 93:
+#line 733 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.meth) ABORT(toknz, "No method!!!");
+ INF(" %s {", toknz->tmp.meth->name);
+ toknz->current_nesting++;
+ { toknz->cs = 338; goto _again;}
+ }}
+ break;
+ case 94:
+#line 746 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" }");
+ toknz->current_methods_type = METH_TYPE_LAST;
+ toknz->current_nesting--;
+ { toknz->cs = 353; goto _again;}
+ }}
+ break;
+ case 95:
+#line 383 "lib/eolian/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 96:
+#line 756 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 97:
+#line 746 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ INF(" }");
+ toknz->current_methods_type = METH_TYPE_LAST;
+ toknz->current_nesting--;
+ { toknz->cs = 353; goto _again;}
+ }}
+ break;
+ case 98:
+#line 383 "lib/eolian/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 99:
+#line 383 "lib/eolian/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 100:
+#line 765 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ 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 101:
+#line 374 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 102:
+#line 783 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ }}
+ break;
+ case 103:
+#line 786 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ }}
+ break;
+ case 104:
+#line 789 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" constructors {");
+ toknz->current_methods_type = METH_CONSTRUCTOR;
+ toknz->current_nesting++;
+ { toknz->cs = 348; goto _again;}
+ }}
+ break;
+ case 105:
+#line 796 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" destructors {");
+ toknz->current_methods_type = METH_DESTRUCTOR;
+ toknz->current_nesting++;
+ { toknz->cs = 348; goto _again;}
+ }}
+ break;
+ case 106:
+#line 803 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" properties {");
+ toknz->current_nesting++;
+ { toknz->cs = 333; goto _again;}
+ }}
+ break;
+ case 107:
+#line 809 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ INF(" begin methods");
+ toknz->current_methods_type = METH_REGULAR;
+ toknz->current_nesting++;
+ { toknz->cs = 348; goto _again;}
+ }}
+ break;
+ case 108:
+#line 816 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ INF("end class: %s", toknz->tmp.kls->name);
+ toknz->classes = eina_list_append(toknz->classes, toknz->tmp.kls);
+ toknz->tmp.kls = NULL;
+ toknz->current_nesting--;
+ { toknz->cs = 302; goto _again;}
+ }}
+ break;
+ case 109:
+#line 383 "lib/eolian/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 110:
+#line 963 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 111:
+#line 966 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 112:
+#line 967 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 113:
+#line 968 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 114:
+#line 783 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ }}
+ break;
+ case 115:
+#line 786 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ }}
+ break;
+ case 116:
+#line 816 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;{
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ INF("end class: %s", toknz->tmp.kls->name);
+ toknz->classes = eina_list_append(toknz->classes, toknz->tmp.kls);
+ toknz->tmp.kls = NULL;
+ toknz->current_nesting--;
+ { toknz->cs = 302; goto _again;}
+ }}
+ break;
+ case 117:
+#line 383 "lib/eolian/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 118:
+#line 383 "lib/eolian/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 119:
+#line 374 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ DBG("comment[%d] line%03d:%03d", toknz->cs,
+ toknz->saved.line, toknz->current_line);
+ }}
+ break;
+ case 120:
+#line 981 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p)+1;{
+ if (!toknz->tmp.kls) ABORT(toknz, "No class!!!");
+ INF("begin class: %s", toknz->tmp.kls->name);
+ toknz->current_nesting++;
+ { toknz->cs = 353; goto _again;}
+ }}
+ break;
+ case 121:
+#line 383 "lib/eolian/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 122:
+#line 1016 "lib/eolian/eo_lexer.rl"
+ { toknz->te = ( toknz->p);( toknz->p)--;}
+ break;
+ case 123:
+#line 383 "lib/eolian/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 124:
+#line 383 "lib/eolian/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 4116 "lib/eolian/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 36:
+#line 1 "NONE"
+ { toknz->ts = 0;}
+ break;
+#line 4129 "lib/eolian/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 1125 "lib/eolian/eo_lexer.rl"
+
+ if ( toknz->cs ==
+#line 4150 "lib/eolian/eo_lexer.c"
+-1
+#line 1126 "lib/eolian/eo_lexer.rl"
+ )
+ {
+ ERR("%s: wrong termination", source);
+ ret = EINA_FALSE;
+ }
+
+ return ret;
+}
+
+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_Event_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(" events:\n");
+ EINA_LIST_FOREACH(kls->events, l, sgn)
+ printf(" %s (%s)\n", sgn->name, sgn->comment);
+
+ EINA_LIST_FOREACH(kls->constructors, l, meth)
+ {
+ printf(" constructors: %s\n", meth->name);
+ if (meth->ret)
+ printf(" return: %s (%s)\n", meth->ret->type, meth->ret->comment);
+ printf(" legacy : %s\n", meth->legacy);
+ EINA_LIST_FOREACH(meth->params, m, param)
+ {
+ 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);
+ if (meth->ret)
+ printf(" return: %s (%s)\n", meth->ret->type, meth->ret->comment);
+ printf(" legacy : %s\n", meth->legacy);
+ EINA_LIST_FOREACH(meth->params, m, param)
+ {
+ 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->keys, m, param)
+ {
+ printf(" key: %s : %s (%s)\n",
+ param->name, param->type, param->comment);
+ }
+ EINA_LIST_FOREACH(prop->values, m, param)
+ {
+ printf(" value: %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?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);
+ if (meth->ret)
+ printf(" return: %s (%s)\n", meth->ret->type, meth->ret->comment);
+ printf(" legacy : %s\n", meth->legacy);
+ printf(" obj_const : %s\n", meth->obj_const?"true":"false");
+ EINA_LIST_FOREACH(meth->params, m, param)
+ {
+ 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)
+{
+ Eina_Bool ret = EINA_FALSE;
+ 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_Event_Def *event;
+ Eo_Implement_Def *impl;
+
+ FILE *stream = NULL;
+ char *buffer = NULL;
+
+ Eo_Tokenizer *toknz = eo_tokenizer_get();
+ if (!toknz)
+ {
+ ERR("can't create eo_tokenizer");
+ goto end;
+ }
+
+ stream = fopen(filename, "rb");
+ if (!stream)
+ {
+ ERR("unable to read in %s", filename);
+ goto end;
+ }
+
+ buffer = malloc(BUFSIZE);
+ if (!buffer)
+ {
+ ERR("unable to allocate read buffer");
+ goto end;
+ }
+
+ unsigned int len = fread(buffer, 1, BUFSIZE, stream);
+
+ if (!len)
+ {
+ ERR("%s: is an empty file", filename);
+ goto end;
+ }
+
+ if (len == BUFSIZE)
+ {
+ ERR("%s: buffer(%d) is full, might not be big enough.", filename, len);
+ goto end;
+ }
+
+ if (!eo_tokenizer_mem_walk(toknz, filename, buffer, len)) goto end;
+
+ if (!toknz->classes)
+ {
+ ERR("No classes for file %s", filename);
+ goto end;
+ }
+
+ EINA_LIST_FOREACH(toknz->classes, k, kls)
+ {
+ 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);
+
+ 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->eo_prefix)
+ {
+ database_class_eo_prefix_set(kls->name, kls->eo_prefix);
+ }
+ if (kls->data_type)
+ {
+ database_class_data_type_set(kls->name, kls->data_type);
+ }
+ 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);
+ if (meth->ret) database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret->comment);
+ database_function_data_set(foo_id, EOLIAN_LEGACY, meth->legacy);
+ EINA_LIST_FOREACH(meth->params, m, param)
+ {
+ database_method_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);
+ if (meth->ret) database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret->comment);
+ database_function_data_set(foo_id, EOLIAN_LEGACY, meth->legacy);
+ EINA_LIST_FOREACH(meth->params, m, param)
+ {
+ database_method_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->keys, m, param)
+ {
+ Eolian_Function_Parameter p = database_property_key_add(
+ foo_id, param->type, param->name, param->comment);
+ database_parameter_nonull_set(p, param->nonull);
+ database_parameter_own_set(p, param->own);
+ }
+ EINA_LIST_FOREACH(prop->values, m, param)
+ {
+ Eolian_Function_Parameter p = database_property_value_add(
+ foo_id, param->type, param->name, param->comment);
+ database_parameter_nonull_set(p, param->nonull);
+ database_parameter_own_set(p, param->own);
+ }
+ EINA_LIST_FOREACH(prop->accessors, m, accessor)
+ {
+ database_function_type_set(foo_id, (accessor->type == SETTER?SET:GET));
+ if (accessor->ret && accessor->ret->type)
+ {
+ database_function_return_type_set(foo_id,
+ accessor->type == SETTER?SET:GET, accessor->ret->type);
+ database_function_data_set(foo_id,
+ (accessor->type == SETTER?EOLIAN_PROP_SET_RETURN_COMMENT:EOLIAN_PROP_GET_RETURN_COMMENT),
+ accessor->ret->comment);
+ database_function_return_flag_set_as_warn_unused(foo_id,
+ accessor->type == SETTER?SET:GET, accessor->ret->warn_unused);
+ database_function_return_flag_set_own(foo_id,
+ accessor->type == SETTER?SET:GET, accessor->ret->own);
+ database_function_return_dflt_val_set(foo_id,
+ accessor->type == SETTER?SET:GET, accessor->ret->dflt_ret_val);
+ }
+ if (accessor->legacy)
+ {
+ database_function_data_set(foo_id,
+ (accessor->type == SETTER?EOLIAN_LEGACY_SET:EOLIAN_LEGACY_GET),
+ accessor->legacy);
+ }
+ 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;
+ 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);
+ }
+ else
+ if (strstr(acc_param->attrs, "const"))
+ {
+ database_parameter_const_attribute_set(desc, accessor->type == GETTER, 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);
+ if (meth->ret)
+ {
+ database_function_data_set(foo_id, EOLIAN_METHOD_RETURN_TYPE, meth->ret->type);
+ database_function_description_set(foo_id, EOLIAN_RETURN_COMMENT, meth->ret->comment);
+ database_function_return_flag_set_as_warn_unused(foo_id,
+ METHOD_FUNC, meth->ret->warn_unused);
+ database_function_return_flag_set_own(foo_id, METHOD_FUNC, meth->ret->own);
+ database_function_return_dflt_val_set(foo_id,
+ METHOD_FUNC, meth->ret->dflt_ret_val);
+ }
+ 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)
+ {
+ Eolian_Function_Parameter p = database_method_parameter_add(foo_id,
+ (Eolian_Parameter_Dir)param->way, param->type, param->name, param->comment);
+ database_parameter_nonull_set(p, param->nonull);
+ database_parameter_own_set(p, param->own);
+ }
+ }
+
+ EINA_LIST_FOREACH(kls->implements, l, impl)
+ {
+ const char *class = impl->meth_name;
+ Eina_Bool virtual_pure = EINA_FALSE;
+ if (!strcmp(class, "class::constructor"))
+ {
+ database_class_ctor_enable_set(kls->name, EINA_TRUE);
+ continue;
+ }
+ if (!strcmp(class, "class::destructor"))
+ {
+ database_class_dtor_enable_set(kls->name, EINA_TRUE);
+ continue;
+ }
+ if (!strncmp(class, "virtual::", 9)) virtual_pure = EINA_TRUE;
+ 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;
+ }
+ if (virtual_pure)
+ {
+ /* Search the function into the existing functions of the current class */
+ Eolian_Function foo_id = eolian_class_function_find_by_name(
+ kls->name, func, ftype);
+ if (!foo_id)
+ {
+ ERR("Error - %s not known in class %s", class + 9, kls->name);
+ goto end;
+ }
+ database_function_set_as_virtual_pure(foo_id, ftype);
+ continue;
+ }
+ 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->events, l, event)
+ {
+ Eolian_Event ev = database_event_new(event->name, event->comment);
+ database_class_event_add(kls->name, ev);
+ }
+
+ }
+
+ ret = EINA_TRUE;
+end:
+ if (buffer) free(buffer);
+ if (stream) fclose(stream);
+ if (toknz) eo_tokenizer_free(toknz);
+ return ret;
+}
+
+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);
+}
+