aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/LuaSL
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--LuaSL/src/LuaSL_compile.c38
1 files changed, 33 insertions, 5 deletions
diff --git a/LuaSL/src/LuaSL_compile.c b/LuaSL/src/LuaSL_compile.c
index 4f51ee4..40b7b00 100644
--- a/LuaSL/src/LuaSL_compile.c
+++ b/LuaSL/src/LuaSL_compile.c
@@ -225,7 +225,9 @@ void burnLeaf(void *data)
225// burnLeaf(leaf->left); 225// burnLeaf(leaf->left);
226// burnLeaf(leaf->right); 226// burnLeaf(leaf->right);
227 // TODO - Should free up the value to. 227 // TODO - Should free up the value to.
228#ifdef LUASL_DIFF_CHECK
228// eina_strbuf_free(leaf->ignorableText); 229// eina_strbuf_free(leaf->ignorableText);
230#endif
229// free(leaf); 231// free(leaf);
230 } 232 }
231} 233}
@@ -468,9 +470,11 @@ LSL_Leaf *addParenthesis(LSL_Leaf *lval, LSL_Leaf *expr, LSL_Type type, LSL_Leaf
468 { 470 {
469 parens->contents = expr; 471 parens->contents = expr;
470 parens->type = type; 472 parens->type = type;
473#ifdef LUASL_DIFF_CHECK
471 parens->rightIgnorableText = rval->ignorableText; 474 parens->rightIgnorableText = rval->ignorableText;
472 // Actualy, at this point, rval is no longer needed. 475 // Actualy, at this point, rval is no longer needed.
473// rval->ignorableText = eina_strbuf_new(); 476// rval->ignorableText = eina_strbuf_new();
477#endif
474 if (lval) 478 if (lval)
475 { 479 {
476 lval->value.parenthesis = parens; 480 lval->value.parenthesis = parens;
@@ -878,8 +882,10 @@ static void outputLeaf(FILE *file, outputMode mode, LSL_Leaf *leaf)
878 if (leaf) 882 if (leaf)
879 { 883 {
880 outputLeaf(file, mode, leaf->left); 884 outputLeaf(file, mode, leaf->left);
885#ifdef LUASL_DIFF_CHECK
881 if ((!(LSL_NOIGNORE & leaf->token->flags)) && (leaf->ignorableText)) 886 if ((!(LSL_NOIGNORE & leaf->token->flags)) && (leaf->ignorableText))
882 fwrite(eina_strbuf_string_get(leaf->ignorableText), 1, eina_strbuf_length_get(leaf->ignorableText), file); 887 fwrite(eina_strbuf_string_get(leaf->ignorableText), 1, eina_strbuf_length_get(leaf->ignorableText), file);
888#endif
883 if (leaf->token->output) 889 if (leaf->token->output)
884 leaf->token->output(file, mode, leaf); 890 leaf->token->output(file, mode, leaf);
885 else 891 else
@@ -904,6 +910,9 @@ static void outputFunctionToken(FILE *file, outputMode mode, LSL_Leaf *content)
904 fprintf(file, "%s", func->name); 910 fprintf(file, "%s", func->name);
905 outputLeaf(file, mode, func->params); 911 outputLeaf(file, mode, func->params);
906 outputLeaf(file, mode, func->block); 912 outputLeaf(file, mode, func->block);
913#ifndef LUASL_DIFF_CHECK
914 fprintf(file, "\n");
915#endif
907 } 916 }
908} 917}
909 918
@@ -916,7 +925,11 @@ static void outputIntegerToken(FILE *file, outputMode mode, LSL_Leaf *content)
916static void outputIdentifierToken(FILE *file, outputMode mode, LSL_Leaf *content) 925static void outputIdentifierToken(FILE *file, outputMode mode, LSL_Leaf *content)
917{ 926{
918 if (content) 927 if (content)
928#ifdef LUASL_DIFF_CHECK
919 fprintf(file, "%s", content->value.identifierValue->name); 929 fprintf(file, "%s", content->value.identifierValue->name);
930#else
931 fprintf(file, " %s", content->value.identifierValue->name);
932#endif
920} 933}
921 934
922static void outputParameterListToken(FILE *file, outputMode mode, LSL_Leaf *content) 935static void outputParameterListToken(FILE *file, outputMode mode, LSL_Leaf *content)
@@ -934,7 +947,11 @@ static void outputParenthesisToken(FILE *file, outputMode mode, LSL_Leaf *conten
934 fprintf(file, "%s", allowed[content->basicType].name); // TODO - We are missing the type ignorable text here. 947 fprintf(file, "%s", allowed[content->basicType].name); // TODO - We are missing the type ignorable text here.
935 else 948 else
936 outputLeaf(file, mode, content->value.parenthesis->contents); 949 outputLeaf(file, mode, content->value.parenthesis->contents);
950#ifdef LUASL_DIFF_CHECK
937 fprintf(file, "%s)", eina_strbuf_string_get(content->value.parenthesis->rightIgnorableText)); 951 fprintf(file, "%s)", eina_strbuf_string_get(content->value.parenthesis->rightIgnorableText));
952#else
953 fprintf(file, ")");
954#endif
938 if (LSL_TYPECAST_OPEN == content->value.parenthesis->type) 955 if (LSL_TYPECAST_OPEN == content->value.parenthesis->type)
939 outputLeaf(file, mode, content->value.parenthesis->contents); 956 outputLeaf(file, mode, content->value.parenthesis->contents);
940 } 957 }
@@ -956,9 +973,14 @@ static void outputStatementToken(FILE *file, outputMode mode, LSL_Leaf *content)
956 if (content) 973 if (content)
957 { 974 {
958 outputLeaf(file, mode, content->value.statementValue->expressions); 975 outputLeaf(file, mode, content->value.statementValue->expressions);
976#ifdef LUASL_DIFF_CHECK
959 if (content->ignorableText) 977 if (content->ignorableText)
960 fwrite(eina_strbuf_string_get(content->ignorableText), 1, eina_strbuf_length_get(content->ignorableText), file); 978 fwrite(eina_strbuf_string_get(content->ignorableText), 1, eina_strbuf_length_get(content->ignorableText), file);
979#endif
961 fprintf(file, "%s", content->token->token); 980 fprintf(file, "%s", content->token->token);
981#ifndef LUASL_DIFF_CHECK
982 fprintf(file, "\n");
983#endif
962 } 984 }
963} 985}
964 986
@@ -985,14 +1007,18 @@ static void doneParsing(LuaSL_compiler *compiler)
985 out = fopen(outName, "w"); 1007 out = fopen(outName, "w");
986 if (out) 1008 if (out)
987 { 1009 {
988// int count; 1010#ifdef LUASL_DIFF_CHECK
1011 int count;
1012#endif
989 outputLeaf(out, OM_LSL, compiler->ast); 1013 outputLeaf(out, OM_LSL, compiler->ast);
990 fclose(out); 1014 fclose(out);
991 sprintf(buffer, "diff %s %s", compiler->fileName, outName); 1015 sprintf(buffer, "diff %s %s", compiler->fileName, outName);
992// count = system(buffer); 1016#ifdef LUASL_DIFF_CHECK
993// PI("Return value of %s is %d", buffer, count); 1017 count = system(buffer);
994// if (0 != count) 1018 PI("Return value of %s is %d", buffer, count);
995// PE("%s says they are different!", buffer); 1019 if (0 != count)
1020 PE("%s says they are different!", buffer);
1021#endif
996 } 1022 }
997 else 1023 else
998 PC("Unable to open file %s for writing!", outName); 1024 PC("Unable to open file %s for writing!", outName);
@@ -1050,7 +1076,9 @@ Eina_Bool compileLSL(gameGlobals *game, char *script)
1050 compiler.script.functions = eina_hash_stringshared_new(burnLeaf); 1076 compiler.script.functions = eina_hash_stringshared_new(burnLeaf);
1051 compiler.script.states = eina_hash_stringshared_new(burnLeaf); 1077 compiler.script.states = eina_hash_stringshared_new(burnLeaf);
1052 compiler.script.variables = eina_hash_stringshared_new(burnLeaf); 1078 compiler.script.variables = eina_hash_stringshared_new(burnLeaf);
1079#ifdef LUASL_DIFF_CHECK
1053 compiler.ignorableText = eina_strbuf_new(); 1080 compiler.ignorableText = eina_strbuf_new();
1081#endif
1054 1082
1055 strncpy(compiler.fileName, script, PATH_MAX - 1); 1083 strncpy(compiler.fileName, script, PATH_MAX - 1);
1056 compiler.fileName[PATH_MAX - 1] = '\0'; 1084 compiler.fileName[PATH_MAX - 1] = '\0';