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()); }
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(); }
public Soma(IExpressao esquerda, IExpressao direita) { Esquerda = esquerda; Direita = direita; }
public Divisao(IExpressao esquerda, IExpressao direita) : base(esquerda, direita) { }
public RaizQuadrada(IExpressao e) { this.expressao = e; }
public Subtracao(IExpressao esquerda, IExpressao direita) { Esquerda = esquerda; Direita = direita; }
protected Operacao(IExpressao esquerda, IExpressao direita) { this.esquerda = esquerda; this.direita = direita; }
public RaizQuadrada(IExpressao valor) { this._valor = valor; }
public Soma(IExpressao Esquerda, IExpressao Direita) { this.Esquerda = Esquerda; this.Direita = Direita; }
public RaizQuadrada(IExpressao esquerdo, IExpressao direito, IExpressao expressao) { this.esquerda = esquerdo; this.direita = direito; this.expressao = expressao; }
public Expressao(IExpressao esquerda, Operador operador, IExpressao direita) { this._esquerda = esquerda; this._operador = operador; this._direita = direita; }
public RaizQuadrada(IExpressao expressao) { this.Expressao = expressao; }
public Raiz(IExpressao esquerda) { Esquerda = esquerda; }
public Divisao(IExpressao esquerda, IExpressao direita) { this.esquerda = esquerda; this.direita = direita; }
public Multiplicacao(IExpressao esquerda, IExpressao direita) { this.esquerda = esquerda; this.direita = direita; }
public RaizQuadrada(IExpressao numero) => Numero = numero;
public RaizQuadrada(IExpressao valor) { Valor = valor; }
public BaseExpressao(IExpressao esquerda, IExpressao direita) { this.Esquerda = esquerda; this.Direita = direita; }
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) { }
public RaizQuadrada(IExpressao raizQuadrada) => _raizQuadrada = raizQuadrada;
public Mutiplicacao(IExpressao esquerda, IExpressao direita) { _esquerda = esquerda; _direita = direita; }
public Subtracao(IExpressao esquerda, IExpressao direita) { this.esquerda = esquerda; this.direita = direita; }
public RaizQuadrada(IExpressao esquerda) { this.Esquerda = esquerda; }
public Subtracao(IExpressao esquerda, IExpressao direita) { this.Esquerda = esquerda; this.Direita = direita; }
public RaizQuadrada(IExpressao expressao) { Expressao = expressao; }
public Divisao(IExpressao esquerda, IExpressao direita) { Esquerda = esquerda; Direita = direita; }
public Soma(IExpressao esquerda, IExpressao direita) { this.Esquerda = esquerda; this.Direita = direita; }
public Multiplicacao(IExpressao esquerda, IExpressao direita) { Esquerda = esquerda; Direita = direita; }
public RaizQuadrada(IExpressao numero) { this.Numero = numero; }
public Adicao(IExpressao esquerda, IExpressao direita) { _operadorEsquerdo = esquerda; _operadorDireito = direita; }