/// <summary> /// Calculates this logical expression. /// </summary> /// <param name="parameters">A collection of variables that are used in the expression.</param> /// <returns>A result of the calculation.</returns> /// <seealso cref="LogicParameterCollection" /> /// <exception cref="ArgumentNullException"><paramref name="parameters"/> is null.</exception> public bool Calculate(LogicParameterCollection parameters) { if (parameters == null) throw new ArgumentNullException("parameters"); return parameters[variable]; }
public LogicWorkspace(int countOfExps) { this.countOfExps = countOfExps; expressions = new List<LogicWorkspaceItem>(countOfExps >= 20 ? 20 : countOfExps); parser = new LogicParser(); parameters = new LogicParameterCollection(); }
/// <summary> /// Calculates this logical expression. /// </summary> /// <param name="parameters">A collection of variables that are used in the expression.</param> /// <returns>A result of the calculation.</returns> /// <seealso cref="LogicParameterCollection" /> /// <exception cref="System.ArgumentNullException"><paramref name="parameters"/> is null.</exception> public bool Calculate(LogicParameterCollection parameters) { if (parameters == null) throw new ArgumentNullException("parameters"); parameters.Remove(variable.Name); return false; }
public void CalculateTest() { LogicParameterCollection parameters = new LogicParameterCollection(); ILogicExpression def = new Assign(new Variable("a"), new Const(true)); def.Calculate(parameters); Assert.AreEqual(true, parameters["a"]); ILogicExpression undef = new Undefine(new Variable("a")); undef.Calculate(parameters); Assert.IsFalse(parameters.Contains("a")); }
public void CalculateTest() { ILogicExpression exp = parser.Parse("!a"); LogicParameterCollection parameters = new LogicParameterCollection(); parameters.Add("a"); parameters["a"] = true; Assert.IsFalse(exp.Calculate(parameters)); parameters["a"] = false; Assert.IsTrue(exp.Calculate(parameters)); }
public void GetLogicParametersTest() { string function = "a | b & c & (a | c)"; var expected = new LogicParameterCollection() { "a", "b", "c" }; LogicParameterCollection actual = logicParser.GetLogicParameters(function); CollectionAssert.AreEqual(expected, actual); }
/// <summary> /// Calculates this AND expression. /// </summary> /// <param name="parameters">A collection of variables that are used in the expression.</param> /// <returns>A result of the calculation.</returns> public override bool Calculate(LogicParameterCollection parameters) { return left.Calculate(parameters) & right.Calculate(parameters); }
private void GenerateTruthTable(IEnumerable<ILogicExpression> exps, LogicParameterCollection parameters) { truthTableGridView.Columns.Clear(); truthTableGridView.Columns.Add(new GridViewColumn { Header = "#", DisplayMemberBinding = new Binding("Index") }); for (int i = 0; i < parameters.Count; i++) { truthTableGridView.Columns.Add(new GridViewColumn { Header = parameters[i], DisplayMemberBinding = new Binding(string.Format("VarsValues[{0}]", i)) }); } for (int i = 0; i < exps.Count() - 1; i++) { truthTableGridView.Columns.Add(new GridViewColumn { Header = exps.ElementAt(i), DisplayMemberBinding = new Binding(string.Format("Values[{0}]", i)) }); } if (exps.Count() != 0) truthTableGridView.Columns.Add(new GridViewColumn { Header = exps.ElementAt(exps.Count() - 1), DisplayMemberBinding = new Binding("Result") }); }
/// <summary> /// Calculates this logical expression. /// </summary> /// <param name="parameters">A collection of variables that are used in the expression.</param> /// <returns>A result of the calculation.</returns> /// <seealso cref="LogicParameterCollection" /> /// <exception cref="ArgumentNullException"><paramref name="parameters"/> is null.</exception> public bool Calculate(LogicParameterCollection parameters) { if (parameters == null) throw new ArgumentNullException("parameters"); var localValue = value.Calculate(parameters); parameters.Add(variable.Name); parameters[variable.Name] = localValue; return false; }
/// <summary> /// Calculates this logical expression. /// </summary> /// <param name="parameters">A collection of variables that are used in the expression.</param> /// <returns>A result of the calculation.</returns> /// <seealso cref="LogicParameterCollection" /> public bool Calculate(LogicParameterCollection parameters) { return value; }
/// <summary> /// Calculates this logical expression. /// </summary> /// <param name="parameters">A collection of variables that are used in the expression.</param> /// <returns>A result of the calculation.</returns> /// <seealso cref="LogicParameterCollection" /> public abstract bool Calculate(LogicParameterCollection parameters);
/// <summary> /// Calculates this logical expression. /// </summary> /// <param name="parameters">A collection of variables that are used in the expression.</param> /// <returns>A result of the calculation.</returns> /// <seealso cref="LogicParameterCollection" /> public override bool Calculate(LogicParameterCollection parameters) { return !argument.Calculate(parameters); }
/// <summary> /// Always throws <see cref="NotSupportedException"/>. /// </summary> /// <param name="parameters">The parameters.</param> /// <returns></returns> /// <exception cref="NotSupportedException">Always.</exception> public override bool Calculate(LogicParameterCollection parameters) { throw new NotSupportedException(); }
public void Generate(string strExp) { expression = parser.Parse(strExp); expressions = parser.ConvertLogicExpressionToCollection(expression); parameters = parser.GetLogicParameters(strExp); table = new List<TruthTableRowViewModel>(); for (int i = (int)Math.Pow(2, parameters.Count) - 1; i >= 0; i--) { parameters.Bits = i; bool b = expression.Calculate(parameters); var row = new TruthTableRowViewModel(parameters.Count, expressions.Count()); row.Index = (int)Math.Pow(2, parameters.Count) - i; for (int j = 0; j < parameters.Count; j++) { row.VarsValues[j] = parameters[parameters[j]]; } for (int j = 0; j < expressions.Count() - 1; j++) { row.Values[j] = expressions.ElementAt(j).Calculate(parameters); } if (expressions.Count() != 0) row.Result = b; table.Add(row); } }