public ResBreakExp( SourceRange range, ResLabel label, IResExp exp) : base(range, new ResBottomType()) { _label = label; _exp = exp; }
public ResLabelExp( SourceRange range, ResLabel label, IResExp body) : base(range, label.Type) { _label = label; _body = body; }
public ResLabel Lookup(ResLabel key) { ResLabel result; if (_labels.TryGetValue(key, out result)) { return(result); } if (_base != null) { return(_base.Lookup(key)); } return(key); }
public override IResExp Substitute(Substitution subst) { var newLabel = new ResLabel( _label.Range, _label.Name, _label.Type.Substitute(subst)); var newSubst = new Substitution(subst); newSubst.Insert(_label, newLabel); return(new ResLabelExp( this.Range, newLabel, this.Body.Substitute(newSubst))); throw new NotImplementedException(); }
public ResLabelExp( SourceRange range, ResLabel label, IResExp body ) : base(range, label.Type) { _label = label; _body = body; }
public override IResExp Substitute(Substitution subst) { var newLabel = new ResLabel( _label.Range, _label.Name, _label.Type.Substitute(subst)); var newSubst = new Substitution(subst); newSubst.Insert(_label, newLabel); return new ResLabelExp( this.Range, newLabel, this.Body.Substitute(newSubst)); throw new NotImplementedException(); }
public void Insert(ResLabel key, ResLabel value) { _labels[key] = value; }