Czervik LSL Computer

The below code is some code being written by Xaviar Czervik. It isn't even partially done, and if I were a programmer it'd be version 0.00.0.000.0.01, although I don't do that... So, if you're interested in crashing the LSL compiler (This code doesn't compile 99% of the time) check out the code below. And in case you couldn't tell, I don't believe in comments.
<lsl>
key kQuery;
integer iLine = 0;
list ifStack;
list stringsName;
list strings;
list intsName;
list ints;
string getType(string s) {
 if ((string)((integer)s) == s)
 return "int";
 return "str";
}
fail(string error) {
 llOwnerSay("Run-time Error: " + error);
 llResetScript();
}
integer ifTest() {
 integer i = 0;
 if (llGetListLength(ifStack) == 0)
 return 1;
 while (i < llGetListLength(ifStack)) {
 string ifStr = llList2String(ifStack, 0);
 list ll = llParseString2List(ifStr, [" "], []);
 list ld = [];
 integer pos;
 pos = llListFindList(stringsName, [llList2String(ll, 1)]);
 llOwnerSay("Looking up '" + llList2String(ll, 1) + "'.");
 if (pos != -1) {
 ld += llList2String(stringsName, pos);
 ld += "";
 pos = llListFindList(stringsName, [llList2String(ll, 3)]);
 ld += llList2String(stringsName, pos);
 } else if (llListFindList(intsName, [llList2String(ll, 1)]) != -1) {
 ld += llList2String(intsName, pos);
 ld += 0;
 pos = llListFindList(intsName, [llList2String(ll, 3)]);
 ld += llList2String(intsName, pos);
 } else {
 fail("Variable not found on line " + (string)iLine + ".");
 }
 string typeFirst = getType(llList2String(ld, 1));
 string typeSecond = getType(llList2String(ld, 3));
 if (typeFirst == "str" || typeSecond == "str") {
 if (llList2String(ld, 2) == "==") {
 if (llList2String(ld, 1) == llList2String(ld, 3)) {} else {
 return 0;
 }
 } else if (llList2String(ld, 2) == "!=") {
 if (llList2String(ld, 1) != llList2String(ld, 3)) {} else {
 return 0;
 }
 } else {
 fail("Can not compare two strings using the " + llList2String(ld, 2) + " opperator.");
 }
 } else {
 if (llList2String(ld, 2) == "==") {
 if (llList2String(ld, 1) == llList2String(ld, 3)) {} else {
 return 0;
 }
 } else if (llList2String(ld, 2) == "!=") {
 if (llList2String(ld, 1) != llList2String(ld, 3)) {} else {
 return 0;
 }
 } else if (llList2String(ld, 2) == "<") {
 if ((integer)llList2String(ld, 1) < (integer)llList2String(ld, 3)) {} else {
 return 0;
 }
 } else if (llList2String(ld, 2) == ">") {
 if ((integer)llList2String(ld, 1) > (integer)llList2String(ld, 3)) {} else {
 return 0;
 }
 } else if (llList2String(ld, 2) == "<=") {
 if ((integer)llList2String(ld, 1) <= (integer)llList2String(ld, 3)) {} else {
 return 0;
 }
 } else if (llList2String(ld, 2) == ">=") {
 if ((integer)llList2String(ld, 1) >= (integer)llList2String(ld, 3)) {} else {
 return 0;
 }
 } else {
 fail("Can not compare two ints using the " + llList2String(ld, 2) + " opperator.");
 }
 }
 i++;
 }
 return 1;
}
default {
 touch_start(integer i) {
 llSay(0, "Starting Program...");
 kQuery = llGetNotecardLine("Program", iLine);
 }
 
 changed(integer i) {
 llResetScript();
 }
 dataserver(key query_id, string data) {
 llOwnerSay(data);
 if (data == EOF) { 
 llSay(0, "Ending Program.");
 } else {
 if (data == ":")
 ifStack = llListReplaceList(ifStack, [], llGetListLength(ifStack) - 1, llGetListLength(ifStack) - 1);
 if (ifTest()) {
 list ld = llParseString2List(data, [" "], []);
 if (llList2String(ld, 0) == "str") {
 llOwnerSay("Init: " + llList2String(ld, 1));
 stringsName += llList2String(ld, 1);
 strings += llGetSubString(llList2String(ld, 3), 1, -2);
 llOwnerSay("-----VAR: " + llList2CSV(strings));
 } else if (llList2String(ld, 0) == "int") {
 intsName += (integer)llList2String(ld, 1);
 ints += (integer)llList2String(ld, 3);
 } else if (llList2String(ld, 0) == "?") {
 ifStack += data;
 } else if (llList2String(ld, 0) == "say") {
 llOwnerSay("Say: " + data);
 integer pos = llListFindList(stringsName, [llList2String(ld, 1)]);
 if (pos != -1) {
 llSay(0, llList2String(strings, pos));
 } else {
 integer pos = llListFindList(intsName, [(integer)llList2String(ld, 1)]);
 if (pos != -1)
 llSay(0, (string)llList2Integer(ints, pos));
 }
 } else {
 llOwnerSay("AAAA");
 llOwnerSay("-----NAME: " + llList2CSV(stringsName));
 integer pos = llListFindList(stringsName, [llList2String(ld, 0)]);
 llOwnerSay(llList2String(ld, 0));
 if (pos != -1) {
 if (llList2String(ld, 1) == "=") {
 llOwnerSay("-----VAR: " + llList2CSV(strings));
 llListReplaceList(strings, [llList2String(ld, 2)], pos-1, pos-1);
 llOwnerSay("-----VAR: " + llList2CSV(strings));
 }
 } else {
 integer pos = llListFindList(intsName, [(integer)llList2String(ld, 0)]);
 if (pos != -1) {
 if (llList2String(ld, 1) == "=") {
 llListReplaceList(ints, [(integer)llList2String(ld, 2)], pos, pos);
 }
 } else {
 fail("Variable not found on line " + (string)iLine + ".");
 }
 }
 }
 
 } else {
 }
 ++iLine;
 kQuery = llGetNotecardLine("Program", iLine);
 }
 }
}
</lsl>