public void Assign(string name, int prec, AssocType assoc, bool user) { AssocGroup fixType = GetFixType(assoc); od = triplet[(int)fixType]; od.Name = (name == "','") ? "," : name; od.Prec = prec; od.Assoc = assoc; od.User = user; od.IsInfix = (fixType == AssocGroup.Infix); od.IsPrefix = (fixType == AssocGroup.Prefix); od.IsPostfix = (fixType == AssocGroup.Postfix); od.LeftRelOp = (assoc == AssocType.yfx || assoc == AssocType.fy || assoc == AssocType.yf) ? RelOp.LE : RelOp.LT; od.RightRelOp = (assoc == AssocType.xfy || assoc == AssocType.fy || assoc == AssocType.yf) ? RelOp.LE : RelOp.LT; // An operator can be either prefix or postfix, but not both. In addition, it can be infix. if (fixType == AssocGroup.Prefix) { triplet[(int)AssocGroup.Postfix].Undefine(); } else if (fixType == AssocGroup.Postfix) { triplet[(int)AssocGroup.Prefix].Undefine(); } }
public void Unassign(string name, AssocType assoc) { AssocGroup fixType = GetFixType(assoc); od = triplet[(int)fixType]; if (od == null || od.Assoc == AssocType.None) { IO.Error("Operator '{0}' does not have an association type '{1}'", name, assoc); } triplet[(int)fixType].Undefine(); }