Пример #1
0
 public ResVarSpec(
     IResVarDecl decl,
     IResTypeExp type)
 {
     _decl = decl;
     _type = type;
 }
Пример #2
0
 public ResPipelineScope(
     IResContainerRef pipeline,
     IResVarDecl thisParameter)
 {
     _pipeline      = pipeline;
     _thisParameter = thisParameter;
 }
Пример #3
0
 public ResVarRef(
     SourceRange range,
     IResVarDecl varDecl,
     IResTypeExp type)
     : base(range, type)
 {
     _varDecl = varDecl;
 }
Пример #4
0
 public ResVarRef(
     SourceRange range,
     IResVarDecl varDecl,
     IResTypeExp type)
     : base(range, type)
 {
     _varDecl = varDecl;
 }
Пример #5
0
 public ResForExp(
     SourceRange range,
     IResVarDecl var,
     IResExp sequence,
     IResExp body)
     : base(range, new ResVoidType())
 {
     _var      = var;
     _sequence = sequence;
     _body     = body;
 }
Пример #6
0
 public ResLetExp(
     SourceRange range,
     IResVarDecl var,
     IResExp value,
     IResExp body)
     : base(range, body.Type)
 {
     _var   = var;
     _value = value;
     _body  = body;
 }
Пример #7
0
        public MidVal Lookup(SourceRange range, IResVarDecl key)
        {
            Func <SourceRange, MidVal> generator;

            if (_values.TryGetValue(key, out generator))
            {
                return(generator(range));
            }

            if (_parent != null)
            {
                return(_parent.Lookup(range, key));
            }

            throw new KeyNotFoundException();
        }
Пример #8
0
        public IResExp Lookup(IResVarDecl var, SourceRange range)
        {
            var subst = this;

            while (subst != null)
            {
                Func <SourceRange, Substitution, IResExp> gen;
                if (subst._vars.TryGetValue(var, out gen))
                {
                    return(gen(range, this));
                }

                subst = subst._base;
            }

            return(new ResVarRef(range, var, var.Type.Substitute(this)));
        }
Пример #9
0
 public void Insert(IResVarDecl key, Func <SourceRange, IResExp> gen)
 {
     _vars[key] = (r, subst) => gen(r);
 }
Пример #10
0
 public ResVarRef(
     SourceRange range,
     IResVarDecl varDecl)
     : this(range, varDecl, varDecl.Type)
 {
 }
Пример #11
0
 public ResVarSpec(
     IResVarDecl decl,
     IResMemberTerm memberTerm)
     : this(decl, decl.Type.Substitute(memberTerm.Subst))
 {
 }
Пример #12
0
 public ResVarSpec(
     IResVarDecl decl,
     IResMemberTerm memberTerm)
     : this(decl, decl.Type.Substitute(memberTerm.Subst))
 {
 }
Пример #13
0
 public ResVarSpec(
     IResVarDecl decl,
     IResTypeExp type )
 {
     _decl = decl;
     _type = type;
 }
Пример #14
0
 public ResVarRef(
     SourceRange range,
     IResVarDecl varDecl)
     : this(range, varDecl, varDecl.Type)
 {
 }
Пример #15
0
 public void Insert(IResVarDecl key, IResVarDecl value)
 {
     _vars[key] = (r, subst) => new ResVarRef(r, value, value.Type.Substitute(subst));
 }
Пример #16
0
 public static bool IsImplicit(
     this IResVarDecl decl)
 {
     return(decl.Flags.HasFlag(ResVarFlags.Implicit));
 }
Пример #17
0
 public void Insert(IResVarDecl key, Func <SourceRange, MidVal> value)
 {
     _values[key] = value;
 }