示例#1
0
        public bool MightNeedLocalsDictionary()
        {
            NameExpr nameExpr = target as NameExpr;

            if (nameExpr == null)
            {
                return(false);
            }

            if (args.Length == 0)
            {
                if (nameExpr.name == LocalsName)
                {
                    return(true);
                }
                if (nameExpr.name == VarsName)
                {
                    return(true);
                }
                if (nameExpr.name == DirName)
                {
                    return(true);
                }
                return(false);
            }
            else if (args.Length == 1)
            {
                if (nameExpr.name == EvalName)
                {
                    return(true);
                }
            }
            return(false);
        }
示例#2
0
        private static Name makeName(Expr param)
        {
            NameExpr ne = param as NameExpr;

            if (ne == null)
            {
                return(EncodeTupleParamName((TupleExpr)param));
            }
            else
            {
                return(ne.name);
            }
        }
示例#3
0
 private static void AppendTupleParamNames(StringBuilder sb, TupleExpr param)
 {
     for (int i = 0; i < param.items.Length; i++)
     {
         NameExpr ne = param.items[i] as NameExpr;
         if (ne != null)
         {
             sb.Append('!');
             sb.Append(ne.name.GetString());
         }
         else
         {
             // nested tuple
             AppendTupleParamNames(sb, param.items[i] as TupleExpr);
         }
     }
 }
示例#4
0
 // NameExpr
 public override bool Walk(NameExpr node)
 {
     ScopeStatement.Binding binding;
     if (bindings.TryGetValue(node.name, out binding))
     {
         int index = binding.Index * 2;
         node.defined = bits.Get(index);
         if (!node.defined)
         {
             binding.UninitializedUse();
         }
         if (!bits.Get(index + 1))
         {
             // Found an unbound use of the name => need to initialize to Uninitialized
             binding.UnassignedUse();
         }
     }
     return(true);
 }
示例#5
0
 public override bool Walk(NameExpr node)
 {
     binder.Deleted(node.name);
     return(false);
 }
示例#6
0
 // NameExpr
 public override bool Walk(NameExpr node)
 {
     Reference(node.name);
     return(true);
 }
 public virtual void PostWalk(NameExpr node)
 {
 }
 // NameExpr
 public virtual bool Walk(NameExpr node)
 {
     return(false);
 }
 // NameExpr
 public virtual bool Walk(NameExpr node)
 {
     return(true);
 }
示例#10
0
 public override bool Walk(NameExpr node)
 {
     fc.Define(node.name);
     return(false);
 }
示例#11
0
 public override void PostWalk(NameExpr node)
 {
 }