public override bool TryCreate(List <string> lines, CalculationBuilder builder, out CalculationItem item) { string pattern = lines.First(); bool isMatch = Regex.IsMatch(pattern, REGEX_PATTERN); if (!isMatch) { item = null; return(false); } string left = RegexTools.GetValue(pattern, REGEX_PATTERN, "left"); string right = RegexTools.GetValue(pattern, REGEX_PATTERN, "right"); string sign = RegexTools.GetValue(pattern, REGEX_PATTERN, "sign"); If ifStatement = new If(); Condition condition = new Condition(); List <string> leftList = new List <string>(); leftList.Add(left); condition.Left = (Equation)builder.Create(leftList); List <string> rightList = new List <string>(); rightList.Add(right); condition.Right = (Equation)builder.Create(rightList); condition.TypeOfCondition = getType(sign); ifStatement.Condition = condition; builder.RemoveLines(lines, 1); ifStatement.TrueBlock = (EquationBlock)builder.Create(lines); string nextLine = lines.First(); if (nextLine == "else") { builder.RemoveLines(lines, 1); ifStatement.FalseBlock = (EquationBlock)builder.Create(lines); } item = ifStatement; return(true); }
public override bool TryCreate(List <string> lines, CalculationBuilder builder, out CalculationItem item) { bool isMatch = (lines.First() == "{"); if (!isMatch) { item = null; return(false); } EquationBlock block = new EquationBlock(); int level = 0; builder.RemoveLines(lines, 1); for ( ; ;) { CalculationItem eq = builder.Create(lines); block.Equations.Add(eq); string currentLine = lines.First(); if (currentLine == "}") { if (level == 0) { break; } else { level--; } } } builder.RemoveLines(lines, 1); item = block; return(true); }
public override bool TryCreate(List <string> lines, CalculationBuilder builder, out CalculationItem item) { string pattern = lines.First(); bool isMatch = Regex.IsMatch(pattern, REGEX_PATTERN); if (!isMatch) { FormulaItem supposedFormula = _formulaBuilder.Create(pattern); if (supposedFormula is ValueItem) { Equation iEquation = new Equation(); iEquation.Value = (ValueItem)supposedFormula; item = iEquation; builder.RemoveLines(lines, 1); return(true); } if (supposedFormula is SymbolItem) { Equation iEquation = new Equation(); iEquation.Symbol = (SymbolItem)supposedFormula; item = iEquation; builder.RemoveLines(lines, 1); return(true); } item = null; return(false); } string left = RegexTools.GetValue(pattern, REGEX_PATTERN, "left"); string right = RegexTools.GetValue(pattern, REGEX_PATTERN, "right"); FormulaItem symbol = _formulaBuilder.Create(left); FormulaItem formula = _formulaBuilder.Create(right); Equation equation = new Equation(); equation.Symbol = (SymbolItem)symbol; if (formula is ValueItem) { equation.Value = (ValueItem)formula; } else { if (formula.IsSymbol) { equation.Symbolic = formula; } else { equation.Numbers = formula; } } item = equation; builder.RemoveLines(lines, 1); return(true); }