def visitProgram(self, ctx: MPParser.ProgramContext): lst = [] vlst = list(map(self.visit, ctx.vardec())) flst = list(map(self.visit, ctx.funcdec())) plst = list(map(self.visit, ctx.procdec())) for i in range(0, ctx.getChildCount()): if isinstance(ctx.getChild(i), MPParser.VardecContext) and vlst: lst += vlst.pop(0) elif isinstance(ctx.getChild(i), MPParser.FuncdecContext) and flst: lst.append(flst.pop(0)) elif isinstance(ctx.getChild(i), MPParser.ProcdecContext) and plst: lst.append(plst.pop(0)) return Program(lst)
def visitProgram(self, ctx: MPParser.ProgramContext): lst = [] vlist = list(map(self.visit, ctx.variable_decalation())) plist = list(map(self.visit, ctx.procedure_declaration())) flist = list(map(self.visit, ctx.function_declaration())) for i in range(0, ctx.getChildCount()): if isinstance(ctx.getChild(i), MPParser.Variable_decalationContext) and vlist: lst += vlist.pop(0) elif isinstance(ctx.getChild(i), MPParser.Function_declarationContext) and flist: lst.append(flist.pop(0)) elif isinstance(ctx.getChild(i), MPParser.Procedure_declarationContext) and plist: lst.append(plist.pop(0)) return Program(lst)
def visitProgram(self, ctx: MPParser.ProgramContext): numChild = ctx.getChildCount() - 1 return Program( flatten([self.visit(ctx.getChild(x)) for x in range(numChild)]))