private List <string> getTokens(string expression) { string operators = "()*/+-"; List <string> tokens = new List <string>(); StringMaker makeString = new StringMaker(); foreach (char c in expression.Replace(" ", string.Empty)) { if (operators.IndexOf(c) >= 0) { if ((makeString.Length > 0)) { tokens.Add(makeString.ToString()); makeString.Length = 0; } tokens.Add(c); } else { makeString.Append(c); } } if ((makeString.Length > 0)) { tokens.Add(makeString.ToString()); } return(tokens); }
private string getSubExpression(List <string> tokens, ref int i) { StringMaker subExpression = new StringMaker(); int banyakKurung = 1; i += 1; while (i < tokens.Count && banyakKurung > 0) { string token = tokens[index]; if (tokens[index] == "(") { banyakKurung += 1; } if (tokens[index] == ")") { banyakKurung -= 1; } if (banyakKurung > 0) { subExpression.Append(token); } i += 1; } if ((banyakKurung > 0)) { throw new ArgumentException("Error Kurung"); } return(subExpression.ToString()); }