/////////////////////////////////////////////////////////////////////////////////// #region funcs private string CalcRes(string s) { Mathos.Parser.MathParser parser = new Mathos.Parser.MathParser(); parser.OperatorList = new List <string>() { "˄", "˅", "⊕", "→", "←", "↔", "↓", "|", "-" }; // operators parse parser.OperatorAction.Add("˄", delegate(decimal x1, decimal x2) { return(F1Conjunction(x1, x2)); }); parser.OperatorAction.Add("˅", delegate(decimal x1, decimal x2) { return(F7Disjunction(x1, x2)); }); parser.OperatorAction.Add("⊕", delegate(decimal x1, decimal x2) { return(F6SumMod2(x1, x2)); }); parser.OperatorAction.Add("→", delegate(decimal x1, decimal x2) { return(F13Implication(x1, x2)); }); parser.OperatorAction.Add("←", delegate(decimal x1, decimal x2) { return(F11ImplicationInvert(x1, x2)); }); parser.OperatorAction.Add("↔", delegate(decimal x1, decimal x2) { return(F9Equivalence(x1, x2)); }); parser.OperatorAction.Add("↓", delegate(decimal x1, decimal x2) { return(F8Peirce(x1, x2)); }); parser.OperatorAction.Add("|", delegate(decimal x1, decimal x2) { return(F14Sheffer(x1, x2)); }); // function parse (NotX) parser.LocalFunctions.Add("!", delegate(decimal[] input) { return(F12NotX1(input[0])); }); return(Convert.ToString(parser.Parse(s))); }
public int GetCostValue(Attack a) { Mathos.Parser.MathParser parser = new Mathos.Parser.MathParser(); parser.LocalVariables.Add("LVL", LVL); parser.LocalVariables.Add("HP", HP); return((int)parser.Parse(a.costFormula)); }
/// <summary> /// Returns the value from an attack, based on the attack's formula /// </summary> /// <param name="attack"> Attack of object </param> /// <returns> Integer amount </returns> public int GetAttackValue(Attack a) { Mathos.Parser.MathParser parser = new Mathos.Parser.MathParser(); parser.LocalVariables.Add("LVL", LVL); parser.LocalVariables.Add("HP", HP); parser.LocalVariables.Add("CHP", CHP); parser.LocalVariables.Add("MP", MP); parser.LocalVariables.Add("CMP", CMP); parser.LocalVariables.Add("STR", STR); parser.LocalVariables.Add("DEX", DEX); parser.LocalVariables.Add("INT", INT); parser.LocalVariables.Add("LUK", LUK); parser.LocalVariables.Add("PATK", PATK); parser.LocalVariables.Add("MATK", MATK); parser.LocalVariables.Add("PDEF", PDEF); parser.LocalVariables.Add("MDEF", MDEF); return((int)parser.Parse(a.damageFormula)); }
public void UnaryOperators() { var mp = new Mathos.Parser.MathParser(); var result = mp.Parse("-sin(5)"); }
//добавления новой кривой в список private void btn_AddGraphic_Click(object sender, EventArgs e) { parser = new Mathos.Parser.MathParser(); PointF[] pt = null; if (txb_UsersFunc.Text != "" && txb_LeftLim.Text != "" && txb_RightLim.Text != "") { double A = 0, B = 0; //нижний и верхний пределы области построения try { A = double.Parse(txb_LeftLim.Text); B = double.Parse(txb_RightLim.Text); } catch (FormatException) { MessageBox.Show("Ошибка при вводе значений интервала.", "Ошибка ввода", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { pt = GetPoints(A, B, 2000, txb_UsersFunc.Text); } catch (FormatException) { MessageBox.Show("Введён неверный формат функции: 'func(x)'.", "Ошибка ввода", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } catch (KeyNotFoundException) { MessageBox.Show("Функция такого вида не присутствует в списке.", "Ошибка ввода", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Curves curve1; Color curveColor = CurveColor; curve1 = new Curves(pt, curveColor, Legend: txb_UsersFunc.Text); DialogResult result; try { MainForm.graph.AddCurve(curve1); AddGraphToList(txb_UsersFunc.Text, curve1.CurveColor); RefreshPanel(); } catch (ArgumentException ex) { result = MessageBox.Show(ex.Message + "\nВсё равно добавить?", "Внимание", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result == DialogResult.Yes) { MainForm.graph.GraphCurves.Add(curve1); AddGraphToList(txb_UsersFunc.Text, curve1.CurveColor); RefreshPanel(); } } } else { return; } }