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); }