Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
    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());
    }