forked from enlightenment/efl
edje/edje_cc_parser - support [] markers for indexing values
This commit is contained in:
parent
5384b78110
commit
86f37578fa
|
@ -174,7 +174,6 @@ new_statement(void)
|
|||
{
|
||||
const char *id;
|
||||
New_Statement_Handler *sh;
|
||||
|
||||
fill_object_statement_hashes();
|
||||
id = stack_id();
|
||||
sh = eina_hash_find(_new_statement_hash, id);
|
||||
|
@ -214,7 +213,7 @@ perform_math (char *input)
|
|||
static int
|
||||
isdelim(char c)
|
||||
{
|
||||
const char *delims = "{},;:";
|
||||
const char *delims = "{},;:[]";
|
||||
char *d;
|
||||
|
||||
d = (char *)delims;
|
||||
|
@ -543,6 +542,7 @@ parse(char *data, off_t size)
|
|||
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");
|
||||
|
||||
|
@ -565,12 +565,19 @@ parse(char *data, off_t size)
|
|||
}
|
||||
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);
|
||||
|
@ -603,6 +610,27 @@ parse(char *data, off_t size)
|
|||
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
|
||||
|
@ -611,6 +639,11 @@ parse(char *data, off_t size)
|
|||
{
|
||||
eina_array_push(¶ms, token);
|
||||
}
|
||||
else if (do_indexes)
|
||||
{
|
||||
do_indexes++;
|
||||
eina_array_push(¶ms, token);
|
||||
}
|
||||
else
|
||||
{
|
||||
stack_push(token);
|
||||
|
|
Loading…
Reference in New Issue