private void DoCalculation() { try { var result = _parser.Parse(_tokenizer.Tokenize(Text)); _context.SetVariableValue("ans", result); HistoryText += Text + Environment.NewLine + result.ToString(); } catch (Exception ex) { HistoryText += Text + Environment.NewLine + ex.Message; } HistoryText += NewLine; _expressionHistory.Add(Text); _expressionHistoryIndex = _expressionHistory.Count; Text = string.Empty; }
public double Parse(IEnumerable <Token> tokens) { var first = tokens.First(); var second = tokens.ElementAtOrDefault(1); if (second != null) { if (first is VariableToken && second.Text == "=") { var value = _calculator.CalculateFromInfix(tokens.Skip(2)); _context.SetVariableValue(first.Text, value); return(value); } } return(_calculator.CalculateFromInfix(tokens)); }