From 198b19f4d51a3929ad67e79179da8760a3233064 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Mon, 30 Jan 2012 21:57:43 +1000 Subject: Ignorables for statements. --- LuaSL/src/LuaSL_LSL_tree.h | 3 +++ LuaSL/src/LuaSL_compile.c | 21 +++++++++++---------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/LuaSL/src/LuaSL_LSL_tree.h b/LuaSL/src/LuaSL_LSL_tree.h index 7e59075..75786d1 100644 --- a/LuaSL/src/LuaSL_LSL_tree.h +++ b/LuaSL/src/LuaSL_LSL_tree.h @@ -226,6 +226,9 @@ struct _LSL_Statement LSL_Leaf *expressions; // A for statement will have three expressions, everything else has zero or one. LSL_Block *block; LSL_Type type; // Expression type. +#if LUASL_DIFF_CHECK + Eina_Strbuf *ignorableText; +#endif /* LSL_Leaf *addStatement(LSL_Leaf *lval, LSL_Type type, LSL_Leaf *left, LSL_Leaf *expr, LSL_Leaf *right, LSL_Leaf *block); diff --git a/LuaSL/src/LuaSL_compile.c b/LuaSL/src/LuaSL_compile.c index 09463a9..604a5a8 100644 --- a/LuaSL/src/LuaSL_compile.c +++ b/LuaSL/src/LuaSL_compile.c @@ -746,7 +746,11 @@ LSL_Leaf *addStatement(LuaSL_compiler *compiler, LSL_Leaf *lval, LSL_Type type, } if (lval) + { + stat->ignorableText = lval->ignorableText; + lval->ignorableText = NULL; lval->value.statementValue = stat; + } } @@ -756,13 +760,11 @@ LSL_Leaf *addStatement(LuaSL_compiler *compiler, LSL_Leaf *lval, LSL_Type type, LSL_Leaf *collectStatements(LuaSL_compiler *compiler, LSL_Leaf *list, LSL_Leaf *statement) { boolean wasNull = FALSE; + if (NULL == list) { list = newLeaf(LSL_BLOCK_OPEN, NULL, NULL); - if (list) - { - wasNull = TRUE; - } + wasNull = TRUE; } if (list) @@ -1356,6 +1358,11 @@ static void outputRawStatement(FILE *file, outputMode mode, LSL_Statement *state if (statement->block) outputRawBlock(file, mode, statement->block); +#if LUASL_DIFF_CHECK + if (statement->ignorableText) + fwrite(eina_strbuf_string_get(statement->ignorableText), 1, eina_strbuf_length_get(statement->ignorableText), file); +#endif + if (!isBlock) { fprintf(file, ";"); @@ -1474,13 +1481,7 @@ static void outputStateToken(FILE *file, outputMode mode, LSL_Leaf *content) static void outputStatementToken(FILE *file, outputMode mode, LSL_Leaf *content) { if (content) - { outputRawStatement(file, mode, content->value.statementValue); -#if LUASL_DIFF_CHECK - if (content->ignorableText) - fwrite(eina_strbuf_string_get(content->ignorableText), 1, eina_strbuf_length_get(content->ignorableText), file); -#endif - } } static void outputBlockToken(FILE *file, outputMode mode, LSL_Leaf *content) -- cgit v1.1