Example #1
0
 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)
Example #2
0
    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)
Example #3
0
 def visitProgram(self, ctx: MPParser.ProgramContext):
     numChild = ctx.getChildCount() - 1
     return Program(
         flatten([self.visit(ctx.getChild(x)) for x in range(numChild)]))