private static FormulaElement ConvertAsFormulaElement(TypeTree expr, int size) { return(expr.ProcessCalculate( (op, e1, e2) => { if (op.op == '/') { return new FormulaToken(new FractionElement(e1.ToFormulaElement(), e2.ToFormulaElement())); } else if (op.op == '^') { return new FormulaToken(new PowerElement(e1.ToFormulaElement(), e2.ToFormulaElement())); } else { if (e1.priority != -1 && e1.priority < op.priority) { e1.PutBracket(); } if (e2.priority != -1 && (e2.priority < op.priority || (e2.priority == op.priority && op.op == '-'))) { e2.PutBracket(); } string opText = op.ToString(); if (op.op == '*') { if (e1.IsType(typeof(MatrixElement)) && e2.IsType(typeof(MatrixElement))) { opText = "×"; } else { opText = "·"; } } return new FormulaToken(op.priority, e1, e2, new TextElement(opText, size)); } }, (node) => { return new FormulaToken(CreateFormulaElement(node, size)); }).ToFormulaElement()); }