コード例 #1
0
ファイル: ASTGeneration.py プロジェクト: tranhoi199/PPL2019
 def visitExp6(self, ctx: MCParser.Exp6Context):
     if ctx.getChildCount() == 3:
         return BinaryOp(
             ctx.getChild(1).getText(), self.visit(ctx.exp6()),
             self.visit(ctx.exp7()))
     else:
         return self.visit(ctx.exp7())
コード例 #2
0
 def visitExp6(self, ctx:MCParser.Exp6Context):
     if (ctx.getChildCount() == 1):
         return self.visit(ctx.exp7())
     left = self.visit(ctx.exp6())
     right = self.visit(ctx.exp7())
     op = ctx.getChild(1).getText()
     return BinaryOp(op,left,right)
コード例 #3
0
 def visitExp6(self, ctx:MCParser.Exp6Context):
     if (ctx.getChildCount() == 1):
         return self.visit(ctx.exp7())
     else:
         op = ctx.getChild(1).getText()
         exp6 = self.visit(ctx.exp6())
         exp7 = self.visit(ctx.exp7()) 
         return BinaryOp(op,exp6,exp7)
コード例 #4
0
ファイル: ASTGeneration.py プロジェクト: nhthang99/cse-ppl
 def visitExp6(self, ctx:MCParser.Exp6Context):
     if ctx.DIV():
         return BinaryOp(ctx.DIV().getText(), self.visitExp6(ctx.exp6()), self.visitExp7(ctx.exp7()))
     elif ctx.MUL():
         return BinaryOp(ctx.MUL().getText(), self.visitExp6(ctx.exp6()), self.visitExp7(ctx.exp7()))
     elif ctx.MOD():
         return BinaryOp(ctx.MOD().getText(), self.visitExp6(ctx.exp6()), self.visitExp7(ctx.exp7()))
     else:
         return self.visitExp7(ctx.exp7())
コード例 #5
0
 def visitExp6(self, ctx: MCParser.Exp6Context):
     if ctx.DIV():
         return BinaryOp("/", self.visit(ctx.exp6()),
                         self.visit(ctx.exp7()))
     if ctx.MUL():
         return BinaryOp("*", self.visit(ctx.exp6()),
                         self.visit(ctx.exp7()))
     if ctx.MOD():
         return BinaryOp("%", self.visit(ctx.exp6()),
                         self.visit(ctx.exp7()))
     else:
         return self.visit(ctx.exp7())
コード例 #6
0
 def visitExp6(self, ctx: MCParser.Exp6Context):
     '''exp6: ( SUB | NOT ) exp6 | exp7 ;'''
     if ctx.getChildCount() == 1:
         return self.visit(ctx.exp7())
     else:
         right = self.visit(ctx.exp6())
         op = ctx.SUB().getText() if ctx.SUB() else ctx.NOT().getText()
         return UnaryOp(op, right)
コード例 #7
0
 def visitExp6(self, ctx: MCParser.Exp6Context):
     #exp6: exp6 (DIV|MUL|MOD) exp7 | exp7;
     if ctx.getChildCount() == 3:
         if ctx.DIV():
             return BinaryOp(ctx.DIV().getText(), self.visit(ctx.exp6()),
                             self.visit(ctx.exp7()))
         if ctx.MUL():
             return BinaryOp(ctx.MUL().getText(), self.visit(ctx.exp6()),
                             self.visit(ctx.exp7()))
         if ctx.MOD():
             return BinaryOp(ctx.MOD().getText(), self.visit(ctx.exp6()),
                             self.visit(ctx.exp7()))
     else:
         return self.visit(ctx.exp7())
コード例 #8
0
 def visitExp6(self, ctx: MCParser.Exp6Context):
     return BinaryOp(self.visit(ctx.op6()), self.visit(ctx.exp6()),self.visit(ctx.exp7())) if ctx.getChildCount() == 3 \
         else self.visit(ctx.exp7())
コード例 #9
0
 def visitExp6(self, ctx: MCParser.Exp6Context):
     #exp6: exp6 DIV exp7 | exp6 MUL exp7 | exp6 MOD exp7 | exp7 ;
     if ctx.DIV():
         return BinaryOp(ctx.DIV().getText(), self.visit(ctx.exp6()),
                         self.visit(ctx.exp7()))
     elif ctx.MUL():
         return BinaryOp(ctx.MUL().getText(), self.visit(ctx.exp6()),
                         self.visit(ctx.exp7()))
     elif ctx.MOD():
         return BinaryOp(ctx.MOD().getText(), self.visit(ctx.exp6()),
                         self.visit(ctx.exp7()))
     else:
         return self.visit(ctx.exp7())