{
const char *id;
New_Statement_Handler *sh;
-
fill_object_statement_hashes();
id = stack_id();
sh = eina_hash_find(_new_statement_hash, id);
static int
isdelim(char c)
{
- const char *delims = "{},;:";
+ const char *delims = "{},;:[]";
char *d;
d = (char *)delims;
char *p, *end, *token;
int delim = 0;
int do_params = 0;
+ int do_indexes = 0; // 0: none, 1: ready, 2: done
DBG("Parsing input file");
}
else if (delim)
{
- if (*token == ',' || *token == ':') do_params = 1;
+ if ((do_indexes == 2) && (*token != ']'))
+ {
+ ERR("parse error %s:%i. %c marker before ] marker",
+ file_in, line - 1, *token);
+ err_show();
+ exit(-1);
+ }
+ else if (*token == ',' || *token == ':') do_params = 1;
else if (*token == '}')
{
if (do_params)
{
- ERR("Parse error %s:%i. } marker before ; marker",
+ ERR("parse error %s:%i. } marker before ; marker",
file_in, line - 1);
err_show();
exit(-1);
exit(-1);
}
}
+ else if (*token == '[')
+ {
+ do_indexes = 1;
+ }
+ else if (*token == ']')
+ {
+ if (do_indexes == 2)
+ do_indexes = 0;
+ else
+ {
+ if (do_indexes == 0)
+ ERR("parse error %s:%i. ] marker before [ marker",
+ file_in, line - 1);
+ else
+ ERR("parse error %s:%i. [?] empty bracket",
+ file_in, line - 1);
+
+ err_show();
+ exit(-1);
+ }
+ }
free(token);
}
else
{
eina_array_push(¶ms, token);
}
+ else if (do_indexes)
+ {
+ do_indexes++;
+ eina_array_push(¶ms, token);
+ }
else
{
stack_push(token);