Exemplo n.º 1
0
        public void Create(string item)
        {
            string param = item.ToLower();

            if (tokenFactory.Contains(param))
            {
                IToken token = tokenFactory.Create(param, AST[AST.Count - 2], AST[AST.Count - 1]);
                if (AST.Count < 2)
                {
                    throw new Exception("not enough tokens !");
                }
                AST.RemoveAt(AST.Count - 2);
                AST.RemoveAt(AST.Count - 1);
                AST.Add(token);
                return;
            }

            if (treeModifierFactory.Contains(param))
            {
                ITreeModifier treeModif = treeModifierFactory.Create(param);
                AST = treeModif.Modify(AST);
                return;
            }
            //need to handle error with int.tryparse
            try {
                AST.Add(new Operand(int.Parse(item)));
            } catch (Exception) {
                Console.Clear();
                Console.WriteLine("erreur le charactère rentré n'est pas reconnu comme symbole valide !");
                Console.WriteLine("appuyez sur entrée pour recommencer...");
                Console.ReadLine();
                Console.Clear();
                this.AST = new List <IToken>();
            }
        }