Ejemplo n.º 1
0
        public IType Visit(Class_Def node)
        {
            Context.ActualType = Context.GetType(node.type.s);
            Context.DefineSymbol("self", Context.ActualType);

            foreach (var attr in Context.GetType(node.inherit_type.s).AllAttributes())
            {
                Context.DefineSymbol(attr.Name, attr.Type);
            }

            foreach (var cldr in node.attr.list_Node)
            {
                IType t = this.Visit(cldr);
                Context.DefineSymbol(cldr.name.name, t);
            }
            foreach (var cldr in node.method.list_Node)
            {
                this.Visit(cldr);
            }

            foreach (var cldr in node.attr.list_Node)
            {
                Context.UndefineSymbol();
            }

            Context.UndefineSymbol();
            return(null);
        }
        public bool Visit(Program node)
        {
            Context.DefineSymbol("void", Context.GetType("Object"));
            foreach (Class_Def cldr in node.list)
            {
                if (!this.Visit(cldr))
                {
                    return(false);
                }
            }

            return(true);
        }