Beispiel #1
0
        public void TesteParserParseia()
        {
            string     expressao = "2 + 3";
            var        p         = new Parser();
            IExpressao exp       = p.Parse(expressao);

            Assert.IsNotNull(exp);

            Assert.AreEqual(5.0, exp.Avaliar());
        }
Beispiel #2
0
        public Avaliador(string expression)
        {
            Stack <IExpressao> pilha = new Stack <IExpressao>();

            foreach (string token in expression.Split(' '))
            {
                Regex regex = new Regex("[0-9]+");

                if (token.Equals("+"))
                {
                    IExpressao subExpressao = new Adicao(pilha.Pop(), pilha.Pop());
                    pilha.Push(subExpressao);
                }
                else if (token.Equals("-"))
                {
                    IExpressao right = pilha.Pop();
                    IExpressao left  = pilha.Pop();

                    IExpressao subExpressao = new Subtracao(left, right);
                    pilha.Push(subExpressao);
                }
                else if (Matches("[0-9]+", token))
                {
                    pilha.Push(new Numero(int.Parse(token)));
                }
                else if (Matches("[abcde]+", token))
                {
                    pilha.Push(new Variavel(token));
                }
                else
                {
                    throw new Exception("Erro na expressão.");
                }
            }

            _expressaoCompleta = pilha.Pop();
        }
Beispiel #3
0
 public Soma(IExpressao esquerda, IExpressao direita)
 {
     Esquerda = esquerda;
     Direita  = direita;
 }
Beispiel #4
0
 public Divisao(IExpressao esquerda, IExpressao direita) : base(esquerda, direita)
 {
 }
Beispiel #5
0
 public RaizQuadrada(IExpressao e)
 {
     this.expressao = e;
 }
 public Subtracao(IExpressao esquerda, IExpressao direita)
 {
     Esquerda = esquerda;
     Direita  = direita;
 }
Beispiel #7
0
 protected Operacao(IExpressao esquerda, IExpressao direita)
 {
     this.esquerda = esquerda;
     this.direita  = direita;
 }
 public RaizQuadrada(IExpressao valor)
 {
     this._valor = valor;
 }
Beispiel #9
0
 public Soma(IExpressao Esquerda, IExpressao Direita)
 {
     this.Esquerda = Esquerda;
     this.Direita  = Direita;
 }
Beispiel #10
0
 public RaizQuadrada(IExpressao esquerdo, IExpressao direito, IExpressao expressao)
 {
     this.esquerda  = esquerdo;
     this.direita   = direito;
     this.expressao = expressao;
 }
Beispiel #11
0
 public Expressao(IExpressao esquerda, Operador operador, IExpressao direita)
 {
     this._esquerda = esquerda;
     this._operador = operador;
     this._direita  = direita;
 }
 public RaizQuadrada(IExpressao expressao)
 {
     this.Expressao = expressao;
 }
Beispiel #13
0
 public Raiz(IExpressao esquerda)
 {
     Esquerda = esquerda;
 }
Beispiel #14
0
 public Divisao(IExpressao esquerda, IExpressao direita)
 {
     this.esquerda = esquerda;
     this.direita  = direita;
 }
 public RaizQuadrada(IExpressao e)
 {
     this.expressao = e;
 }
 public Multiplicacao(IExpressao esquerda, IExpressao direita)
 {
     this.esquerda = esquerda;
     this.direita  = direita;
 }
Beispiel #17
0
 public RaizQuadrada(IExpressao numero) => Numero = numero;
Beispiel #18
0
 public RaizQuadrada(IExpressao valor)
 {
     Valor = valor;
 }
 public BaseExpressao(IExpressao esquerda, IExpressao direita)
 {
     this.Esquerda = esquerda;
     this.Direita  = direita;
 }
Beispiel #20
0
 public Multiplicao(IExpressao esquerda, IExpressao direita) : base(esquerda, direita)
 {
 }
 public Soma(IExpressao esquerda, IExpressao direita) : base(esquerda, direita)
 {
 }
 public Divisao(IExpressao esquerda, IExpressao direita)
 {
     this.Esquerda = esquerda;
     this.Direita = direita;
 }
 public Subtracao(IExpressao esquerda, IExpressao direita) : base(esquerda, direita)
 {
 }
Beispiel #24
0
 public RaizQuadrada(IExpressao raizQuadrada) => _raizQuadrada = raizQuadrada;
 public Mutiplicacao(IExpressao esquerda, IExpressao direita)
 {
     _esquerda = esquerda;
     _direita  = direita;
 }
Beispiel #26
0
 public Subtracao(IExpressao esquerda, IExpressao direita)
 {
     this.esquerda = esquerda;
     this.direita  = direita;
 }
Beispiel #27
0
 public RaizQuadrada(IExpressao esquerda)
 {
     this.Esquerda = esquerda;
 }
Beispiel #28
0
 public Subtracao(IExpressao esquerda, IExpressao direita)
 {
     this.Esquerda = esquerda;
     this.Direita = direita;
 }
Beispiel #29
0
 public RaizQuadrada(IExpressao expressao)
 {
     Expressao = expressao;
 }
Beispiel #30
0
 public Divisao(IExpressao esquerda, IExpressao direita)
 {
     Esquerda = esquerda;
     Direita  = direita;
 }
Beispiel #31
0
 public Soma(IExpressao esquerda, IExpressao direita)
 {
     this.Esquerda = esquerda;
     this.Direita = direita;
 }
 public Multiplicacao(IExpressao esquerda, IExpressao direita)
 {
     Esquerda = esquerda;
     Direita  = direita;
 }
Beispiel #33
0
 public RaizQuadrada(IExpressao numero)
 {
     this.Numero = numero;
 }
Beispiel #34
0
 public Soma(IExpressao esquerda, IExpressao direita)
 {
     this.Esquerda = esquerda;
     this.Direita  = direita;
 }
Beispiel #35
0
 public Adicao(IExpressao esquerda, IExpressao direita)
 {
     _operadorEsquerdo = esquerda;
     _operadorDireito  = direita;
 }