public string Execute(Context c, MacroTable table) { ParseManager manager = new ParseManager(); string toReturn = ""; if (conditionSignatures[conditionSignatures.Count - 1].Item1 == "else") { bool executed = false; for (int i = 0; i < conditionSignatures.Count - 1; ++i) { string toCheck = conditionSignatures[i].Item2; if (LogicManager.IsTrue(toCheck, c)) { toReturn = manager.Parse(conditionBodies[i]).Execute(c); executed = true; break; } } if (!executed) { toReturn = manager.Parse(conditionBodies[conditionBodies.Count - 1]).Execute(c); } } else { for (int i = 0; i < conditionSignatures.Count; ++i) { string toCheck = manager.Parse(conditionSignatures[i].Item2).Execute(c); if (LogicManager.IsTrue(toCheck, c)) { toReturn = manager.Parse(conditionBodies[i]).Execute(c, table); break; } } } return(toReturn); }