From 8f6add72b4fea14599ab637433b087951f631053 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Thu, 2 Feb 2012 16:41:00 +1000 Subject: More Lua conversions. Concatenate, function arguments and table elemnt separaters. --- LuaSL/src/LuaSL_LSL_tree.h | 2 +- LuaSL/src/LuaSL_compile.c | 33 +++++++++++++++++++++++++++------ 2 files changed, 28 insertions(+), 7 deletions(-) (limited to 'LuaSL/src') diff --git a/LuaSL/src/LuaSL_LSL_tree.h b/LuaSL/src/LuaSL_LSL_tree.h index 615a905..6273d60 100644 --- a/LuaSL/src/LuaSL_LSL_tree.h +++ b/LuaSL/src/LuaSL_LSL_tree.h @@ -3,7 +3,7 @@ #define __LUASL_TREE_H__ #define LUASL_DEBUG 0 -#define LUASL_DIFF_CHECK 1 +#define LUASL_DIFF_CHECK 0 #include // So we can have NULL defined. diff --git a/LuaSL/src/LuaSL_compile.c b/LuaSL/src/LuaSL_compile.c index b4ed295..eac098b 100644 --- a/LuaSL/src/LuaSL_compile.c +++ b/LuaSL/src/LuaSL_compile.c @@ -424,6 +424,10 @@ LSL_Leaf *addOperation(LuaSL_compiler *compiler, LSL_Leaf *left, LSL_Leaf *lval, rType = allowed[rType].result; } + // Convert add to concatenate if needed. + if ((LSL_ADD == lval->toKen->type) && (OT_string == lType) && (OT_string == rType)) + lval->toKen = tokens[LSL_CONCATENATE - lowestToken]; + switch (lval->toKen->subType) { case ST_BOOLEAN : @@ -1496,8 +1500,15 @@ static void outputLeaf(FILE *file, outputMode mode, LSL_Leaf *leaf) leaf->toKen->output(file, mode, leaf); else { - if ((OM_LUA == mode) && (LSL_TYPE & leaf->toKen->flags)) - fprintf(file, "--[[%s]] ", leaf->toKen->toKen); + if (OM_LUA == mode) + { + if (LSL_TYPE & leaf->toKen->flags) + fprintf(file, " --[[%s]] ", leaf->toKen->toKen); + else if (LSL_CONCATENATE == leaf->toKen->type) + fprintf(file, " .. "); + else + fprintf(file, "%s", leaf->toKen->toKen); + } else fprintf(file, "%s", leaf->toKen->toKen); } @@ -1544,7 +1555,7 @@ static void outputRawParenthesisToken(FILE *file, outputMode mode, LSL_Parenthes { if ((OM_LUA == mode) && (LSL_TYPECAST_OPEN == parenthesis->type)) { - fprintf(file, "--[[(%s)]] ", typeName); + fprintf(file, " --[[(%s)]] ", typeName); outputLeaf(file, mode, parenthesis->contents); return; } @@ -1688,6 +1699,9 @@ static void outputRawStatement(FILE *file, outputMode mode, LSL_Statement *state #if LUASL_DIFF_CHECK if ((statement->ignorable) && (statement->ignorable[2])) fwrite(eina_strbuf_string_get(statement->ignorable[2]), 1, eina_strbuf_length_get(statement->ignorable[2]), file); +#else + if (OM_LUA == mode) + fprintf(file, " "); #endif if (LSL_FOR == statement->type) { @@ -1813,13 +1827,16 @@ static void outputFunctionToken(FILE *file, outputMode mode, LSL_Leaf *content) { fprintf(file, "\n\nfunction "); if (func->type.text) - fprintf(file, "--[[%s]] ", func->type.text); + fprintf(file, " --[[%s]] ", func->type.text); fprintf(file, "%s(", func->name.text); EINA_INARRAY_FOREACH((&(func->vars)), param) { // TODO - comment out param types. -// if (!first) -// fprintf(file, ", "); + if (!LUASL_DIFF_CHECK) + { + if (!first) + fprintf(file, ", "); + } outputLeaf(file, mode, param); first = FALSE; } @@ -1842,6 +1859,8 @@ static void outputFunctionCallToken(FILE *file, outputMode mode, LSL_Leaf *conte EINA_INARRAY_FOREACH((&(call->params)), param) { outputLeaf(file, mode, param); + if (OM_LUA == mode) + fprintf(file, ", "); } fprintf(file, ")"); } @@ -1904,6 +1923,8 @@ static void outputListToken(FILE *file, outputMode mode, LSL_Leaf *content) EINA_INARRAY_FOREACH((&(call->params)), param) { outputLeaf(file, mode, param); + if (OM_LUA == mode) + fprintf(file, ", "); } #if LUASL_DIFF_CHECK ig = eina_strbuf_string_get(parens->rightIgnorable); -- cgit v1.1