public void FixExpressions(List <MathExpression> expressions) { bool listHasChanged = true; while (listHasChanged) { listHasChanged = false; for (int i = 0; i < expressions.Count; i++) { expressions[i].Expression = expressions[i].Expression.Trim(); if (MathRegex.IsNumberAndOperator(expressions[i].Expression)) { splitByOperator(expressions, expressions[i].Expression, i); listHasChanged = true; break; } if (expressions[i].IsEmpty()) { expressions.RemoveAt(i); listHasChanged = true; break; } } } }
public void SetUp() { _mathRegex = new MathRegex(); _fixer = new ExpressionFixer(); _lexer = new MathLexer(_fixer); _calculator = new Calculator(); _calcProxy = new CalcProxy(new Validator(-100, 100), _calculator); _resolver = new Resolver(_lexer, new Precedence()); _parser = new MathParser(_lexer, _resolver); }
private List <MathToken> createTokensFromStrings(string[] items) { List <MathToken> tokens = new List <MathToken>(); foreach (String item in items) { if (MathRegex.IsOperator(item)) { tokens.Add(OperatorFactory.Create(item)); } else { tokens.Add(new MathNumber(item)); } } return(tokens); }
public int ProcessExpression(string expression) { List <MathExpression> subExpressions = _lexer.GetExpressions(expression); String flatExpression = String.Empty; foreach (MathExpression subExp in subExpressions) { if (MathRegex.IsSubExpression(subExp.Expression)) { flatExpression += _resolver.ResolveSimpleExpression(subExp.Expression); } else { flatExpression += " " + subExp.Expression + " "; } } return(_resolver.ResolveSimpleExpression(flatExpression)); }
public int ResolveSimpleExpression(string expression) { if (!MathRegex.IsExpressionValid(expression)) { throw new InvalidOperationException(expression); } List <MathToken> mathExp = _lexer.GetTokens(expression); while (mathExp.Count > 1) { MathOperator op = _precedence.GetMaxPrecedence(mathExp); op.PreviousToken = mathExp[op.Index - 1]; op.NextToken = mathExp[op.Index + 1]; int result = op.Resolve(); replaceTokensWithResult(mathExp, op.Index, result); } return(mathExp[0].Resolve()); }
public void SetUp() { _expressionValidator = new MathRegex(); _fixer = new ExpressionFixer(); _lexer = new MathLexer(_fixer); _calculator = new Calculator(); _validator = new Validator(-20, 20); _calcProxy = new CalcProxy(_validator, _calculator); }
public void SetUp() { _calculator = new Calculator(); _validator = new Validator(-20, 20); _calcProxy = new CalcProxy(_validator, _calculator); _expressionValidator = new MathRegex(); _fixer = new ExpressionFixer(); _lexer = new MathLexer(_fixer); _precedence = new Precedence(); _resolver = new Resolver(_lexer, _calcProxy, _precedence); _parser = new MathParser(_lexer, _expressionValidator, _resolver); }
public ExpressionFixer() { // TODO: Complete member initialization _mathRegex = new MathRegex(); }
public ExpressionFixer(MathRegex mathRegex) { _mathRegex = mathRegex; }
public MathParser(Lexer lexer, MathRegex mathRegex, Resolver resolver) { _lexer = lexer; _resolver = resolver; _mathRegex = mathRegex; }
public void SetUp() { _mathRegex = new MathRegex(); }