private void button2_Click(object sender, EventArgs e) { try { List <string> lines = textBox3.Lines.ToList(); List <string> cleared = _calcBuilder.getCleaned(lines); cleared.Insert(0, "{"); cleared.Add("}"); CalculationItem item = _calcBuilder.Create(cleared); CalculationItemStack stack = new CalculationItemStack(); item.Calculate(stack); EquationBlock block = new EquationBlock(); foreach (CalculationItem stackItem in stack.Items) { if (stackItem is Equation) { block.Equations.Add(stackItem); } } _multiElement = _converter.Convert(block); panel2.Invalidate(); } catch (Exception exc) { MessageBox.Show(exc.ToString(), "Bład", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
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); }