예제 #1
0
        public override void visit(procedure_definition p)
        {
            if (PrintInfo)
                Console.WriteLine(" " + p.proc_header.name.meth_name);

            var ld = new FindLocalDefsVisitor(); 
            p.visit(ld);

            base.visit(p);
        }
예제 #2
0
        public override void visit(procedure_definition p)
        {
            if (PrintInfo)
            {
                Console.WriteLine(" " + p.proc_header.name.meth_name);
            }

            var ld = new FindLocalDefsVisitor();

            p.visit(ld);

            base.visit(p);
        }
 public override void Exit(syntax_tree_node st)
 {
     if (st is procedure_definition)
     {
         if (mids.vars.Count > 0)
         {
             d[st as procedure_definition] = new HashSet <string>(mids.vars);
         }
         var fld = new FindLocalDefsVisitor();
         st.visit(fld);
         fld.Print();
         var t = fld.ids.Intersect(mids.vars); // идентификаторы, захваченные из локального контекста
     }
     base.Exit(st);
 }
 public override void Exit(syntax_tree_node st)
 {
     if (st is procedure_definition)
     {
         if (mids.vars.Count>0)
         {
             d[st as procedure_definition] = new HashSet<string>(mids.vars);
         }
         var fld = new FindLocalDefsVisitor();
         st.visit(fld);
         fld.Print();
         var t = fld.ids.Intersect(mids.vars); // идентификаторы, захваченные из локального контекста
         
     }
     base.Exit(st);
 }