diff --git a/Slang/Main.cpp b/Slang/Main.cpp index 6cd8856..e5223a4 100644 --- a/Slang/Main.cpp +++ b/Slang/Main.cpp @@ -44,7 +44,7 @@ int ExecuteFunction(string functionName, vector inputVarVals); bool isNumber(const string& str) { for (char const& c : str) { - if (isdigit(c) == 0 && c!='.') return false; + if (isdigit(c) == 0 && c != '.') return false; } return true; } @@ -103,7 +103,7 @@ int countNoOverlap(string str, char ch1, char ch2) { } int indexInStr(string str, char ch) { - + for (int i = 0; i < (int)str.size(); i++) if (str[i] == ch) return i; @@ -112,7 +112,7 @@ int indexInStr(string str, char ch) { } int charIndexInVec(vector str, char ch) { - + for (int i = 0; i < (int)str.size(); i++) for (int w = 0; w < (int)str[i].size(); w++) if (str[i][w] == ch) @@ -159,7 +159,7 @@ vector removeTabs(vector str, int amnt) { vector rangeInVec(vector str, int min, int max) { if (max == -1) - max == (int)str.size(); + max = (int)str.size(); vector newStr; @@ -171,7 +171,7 @@ vector rangeInVec(vector str, int min, int max) { string rangeInStr(string str, int min, int max) { if (max == -1) - max == (int)str.size(); + max = (int)str.size(); string newStr; @@ -260,7 +260,7 @@ string GetRealValue(string var, vector& variables, vector& varia else if (!isNumber(var) && count(var, '\"') > 0) { string withoutQuotes; - for (int ch = 1; ch < (int)var.size()-1; ch++) + for (int ch = 1; ch < (int)var.size() - 1; ch++) { withoutQuotes += var[ch]; } @@ -296,7 +296,51 @@ bool BooleanLogic(string valA, string determinant, string valB, vector& return false; } -string PEMDAS(string equ) +string evalEqu(vector str, vector& variables, vector& variableValues) +{ + // Second, iterate all existing local variable names + for (int v = 0; v < (int)variables.size(); v++) + { + if (str[0] == variables[v]) + { + if (str[1] == "=") + variableValues[v] = str[2]; + else if (str[1] == "+=") + variableValues[v] = AddItem(variableValues[v], GetRealValue(str[2], variables, variableValues)); + else if (str[1] == "-=") + variableValues[v] = to_string(stof(variableValues[v]) - stof(GetRealValue(str[2], variables, variableValues))); + else if (str[1] == "*=") + variableValues[v] = to_string(stof(variableValues[v]) * stof(GetRealValue(str[2], variables, variableValues))); + else if (str[1] == "/=") + variableValues[v] = to_string(stof(variableValues[v]) / stof(GetRealValue(str[2], variables, variableValues))); + + //cout << words[l][1] << " is " << words[l][3] << endl << endl; + return 0; + } + } + // Third, iterate all existing global variable names + for (int v = 0; v < (int)globalVariables.size(); v++) + { + if (str[0] == globalVariables[v]) + { + if (str[1] == "=") + globalVariableValues[v] = str[2]; + else if (str[1] == "+=") + globalVariableValues[v] = AddItem(globalVariableValues[v], GetRealValue(str[2], variables, variableValues)); + else if (str[1] == "-=") + globalVariableValues[v] = to_string(stof(globalVariableValues[v]) - stof(GetRealValue(str[2], variables, variableValues))); + else if (str[1] == "*=") + globalVariableValues[v] = to_string(stof(globalVariableValues[v]) * stof(GetRealValue(str[2], variables, variableValues))); + else if (str[1] == "/=") + globalVariableValues[v] = to_string(stof(globalVariableValues[v]) / stof(GetRealValue(str[2], variables, variableValues))); + + //cout << words[l][1] << " is " << words[l][3] << endl << endl; + return 0; + } + } +} + +string PEMDAS(string equ, vector& variables, vector& variableValues) { if (split(equ, ',').size() == 1) return equ; @@ -324,7 +368,7 @@ string PEMDAS(string equ) } } - equ = replace(equ, "(" + unWrapVec(insideParenthesis) + ")", PEMDAS(unWrapVec(insideParenthesis))); + equ = replace(equ, "(" + unWrapVec(insideParenthesis) + ")", PEMDAS(unWrapVec(insideParenthesis), variables, variableValues)); } } @@ -478,6 +522,8 @@ int ProcessLine(vector> words, int l, vector& variables, int ExecuteFunction(string functionName, vector inputVarVals) { + //vector inputVarVals = split(replace(inVals, " ", ""), ','); + vector functionLines; int functionIndex = 0; //Get index of function @@ -494,7 +540,7 @@ int ExecuteFunction(string functionName, vector inputVarVals) vector functionNameParts = split(functions[functionIndex], ' '); for (int i = 1; i < (int)functionNameParts.size(); i++) { - variables.push_back(functionNameParts[i]); + variables.push_back(replace(replace(functionNameParts[i], ",", ""), " ", "")); variableValues.push_back(inputVarVals[i - 1]); } vector> words; diff --git a/Slang/Slang.vcxproj b/Slang/Slang.vcxproj index e005a27..da7153a 100644 --- a/Slang/Slang.vcxproj +++ b/Slang/Slang.vcxproj @@ -141,7 +141,6 @@ - diff --git a/Slang/Slang.vcxproj.filters b/Slang/Slang.vcxproj.filters index 158c29a..78144ec 100644 --- a/Slang/Slang.vcxproj.filters +++ b/Slang/Slang.vcxproj.filters @@ -18,9 +18,6 @@ Source Files - - Source Files - diff --git a/Slang/script.sl b/Slang/script.sl index 304c2a4..61d6792 100644 --- a/Slang/script.sl +++ b/Slang/script.sl @@ -1,34 +1,31 @@ int x = 1 +void Next(in, sin) +{ + string green = "bean" + green += " " + green += in + + print in + print sin + print green +} + void Main(input) { - int a = 8 + int a = -8 + int b = 4 print input int k = 0 while x < 1000 { - a /= 7.2 - a += 9.12867 - int xThou = x - xThou /= 10000 - a *= xThou - + x += 1 - - if x > 0 - { - print a - } + + print x } - Next "seen" + Next "seen" "bop" } -void Next() -{ - string green = "bean" - - print green -} - -Main hi \ No newline at end of file +Main "hi" \ No newline at end of file