public static string basicOperaticonsSingle(string line, variables vars) { string[] lineSplits = line.Split(' '); string a; string sign = lineSplits[0]; string ans = ""; if (vars.ValueExists(lineSplits[1])) { a = vars.GetValue(lineSplits[1]).TrimStart('*'); } else { a = lineSplits[1].TrimStart('*'); } switch (sign) { case "!": ans = negation(a); break; } return(ans); }
private static void GetParameters(string parameters, string values, variables vars, variables mainVars) { string[] par = parameters.Split(' '); string[] val = values.Split(' '); for (int i = 0; i < par.Length; i++) { vars.SetValue(par[i], (mainVars.ValueExists(val[i])?mainVars.GetValue(val[i]) : val[i])); } }
public static string basicOperations(string line, variables vars) { string[] lineSplits = line.Split(' '); string a, b; string sign = lineSplits[1]; string ans = ""; if (vars.ValueExists(lineSplits[0])) { a = vars.GetValue(lineSplits[0]).TrimStart('*'); } else { a = lineSplits[0].TrimStart('*'); } if (vars.ValueExists(lineSplits[2])) { b = vars.GetValue(lineSplits[2]).TrimStart('*'); } else { b = lineSplits[2].TrimStart('*'); } switch (sign) { case "+": ans = Adding(a, b); break; case "-": ans = Subtracting(a, b); break; case "*": ans = Multiply(a, b); break; case "/": ans = Dividing(a, b); break; case "&": ans = And(a, b); break; case "|": ans = Or(a, b); break; case "^": ans = Same(a, b); break; case "<": ans = SmallerThan(a, b); break; case ">": ans = BiggerThan(a, b); break; case "%": ans = mod(a, b); break; } return(ans); }
public string GetValue(string Svalue, ref int Line) { string retValue = ""; if (Line == SkipLine) { return(""); } if (Svalue == "") { return(""); } if (loopNumber > 0) { loopNumber--; Line--; var.SetValue(LoopName, (loopVar).ToString()); if (loopNumber == 0) { SkipLine = Line + 1; } loopVar++; } if (Regex.Match(Svalue, "IN").Value == Svalue)//pro in { retValue = InOut.input(); } else if (Regex.Match(Svalue, "^IF\\(.+\\)").Value == Svalue)//pro if { string work = Svalue.Split('(')[1].TrimEnd(')'); string toIf = GetValue(work, ref Line); if (!Convert.ToBoolean(toIf)) { SkipLine = Line + 1; } else { SkipLine = Line + 2; } } else if (Regex.Match(Svalue, "^LOOP\\(.+\\)").Value == Svalue)//pro loop { string work = Svalue.Split('(')[1].TrimEnd(')'); string[] split = work.Split(' '); if (split.Length == 2) { var.SetValue(split[0], "0"); loopNumber = Convert.ToInt32(GetValue(split[1], ref Line)); LoopName = split[0]; loopVar = 0; } else { loopNumber = Convert.ToInt32(GetValue(split[0], ref Line)); } } else if (Regex.Match(Svalue, "(\\*?[A-Za-z]+[A-Za-z0-9]*|[0-9]*) [+\\-\\*\\/&%|^<>] (\\*?[A-Za-z]+[A-Za-z0-9]*|[0-9]*)").Value == Svalue) // základní aritmetika dvě { retValue = Arithmetic.basicOperations(Svalue, var); } else if (Regex.Match(Svalue, "[!] (\\*?[A-Za-z]+[A-Za-z0-9]*|[0-9]*)").Value == Svalue) // základní aritmetika jedna { retValue = Arithmetic.basicOperaticonsSingle(Svalue, var); } else if (Regex.Match(Svalue, "^\\*.*").Value == Svalue)//string { retValue = Svalue; } else if (Regex.Match(Svalue, "^(True|False)$").Value == Svalue) //bool { retValue = Svalue; } else if (Regex.Match(Svalue, "^[0-9]*$").Value == Svalue) //cisla { retValue = Svalue; } else if (Regex.Match(Svalue, "[A-Za-z]+[A-Za-z0-9]+\\(.*\\)").Value == Svalue) // metody { retValue = Methods.ResolveMethods(Svalue, var).ToString(); } else if (var.ValueExists(Svalue)) { retValue = var.GetValue(Svalue); } return(retValue); }