def visitExp4(self, ctx:MCParser.Exp4Context):
     if ctx.getChildCount() == 1:
         return self.visit(ctx.exp5(0))
     else:
         op = ctx.getChild(1).getText()
         [left, right] = [self.visit(exp) for exp in ctx.exp5()]
         return BinaryOp(op, left, right)
コード例 #2
0
ファイル: ASTGeneration.py プロジェクト: tranhoi199/PPL2019
 def visitExp4(self, ctx: MCParser.Exp4Context):
     if ctx.getChildCount() == 1:
         return self.visit(ctx.exp5(0))
     else:
         return BinaryOp(
             ctx.getChild(1).getText(), self.visit(ctx.exp5(0)),
             self.visit(ctx.exp5(1)))
コード例 #3
0
 def visitExp4(self, ctx:MCParser.Exp4Context):
     if (ctx.getChildCount() == 1):
         return self.visit(ctx.exp5(0))
     left = self.visit(ctx.exp5(0))
     right = self.visit(ctx.exp5(1))
     op = ctx.getChild(1).getText()
     return BinaryOp(op,left,right)
コード例 #4
0
 def visitExp4(self, ctx:MCParser.Exp4Context):
     if (ctx.getChildCount() == 1):
         return self.visit(ctx.exp5(0))
     else:
         op = ctx.getChild(1).getText()
         exp5 = self.visit(ctx.exp5(0))
         exp5_ = self.visit(ctx.exp5(1))  
         return BinaryOp(op,exp5,exp5_)
コード例 #5
0
 def visitExp4(self, ctx: MCParser.Exp4Context):
     '''exp4: exp4 ( ADD | SUB ) exp5 | exp5 ;'''
     if ctx.getChildCount() == 1:
         return self.visit(ctx.exp5())
     else:
         left = self.visit(ctx.exp4())
         right = self.visit(ctx.exp5())
         op = ctx.ADD().getText() if ctx.ADD() else ctx.SUB().getText()
         return BinaryOp(op, left, right)
コード例 #6
0
ファイル: ASTGeneration.py プロジェクト: nhthang99/cse-ppl
 def visitExp4(self, ctx:MCParser.Exp4Context):
     if ctx.LT():
         return BinaryOp(ctx.LT().getText(), self.visitExp5(ctx.exp5(0)), self.visitExp5(ctx.exp5(1)))
     elif ctx.LE():
         return BinaryOp(ctx.LE().getText(), self.visitExp5(ctx.exp5(0)), self.visitExp5(ctx.exp5(1)))
     elif ctx.GT():
         return BinaryOp(ctx.GT().getText(), self.visitExp5(ctx.exp5(0)), self.visitExp5(ctx.exp5(1)))
     elif ctx.GE():
         return BinaryOp(ctx.GE().getText(), self.visitExp5(ctx.exp5(0)), self.visitExp5(ctx.exp5(1)))
     else:
         return self.visitExp5(ctx.exp5(0))
コード例 #7
0
 def visitExp4(self, ctx: MCParser.Exp4Context):
     if ctx.LESS():
         return BinaryOp("<", self.visit(ctx.exp5(0)),
                         self.visit(ctx.exp5(1)))
     elif ctx.GREATER():
         return BinaryOp(">", self.visit(ctx.exp5(0)),
                         self.visit(ctx.exp5(1)))
     elif ctx.LESS_EQUAL():
         return BinaryOp("<=", self.visit(ctx.exp5(0)),
                         self.visit(ctx.exp5(1)))
     elif ctx.GREATER_EQUAL():
         return BinaryOp(">=", self.visit(ctx.exp5(0)),
                         self.visit(ctx.exp5(1)))
     else:
         return self.visit(ctx.exp5(0))
コード例 #8
0
 def visitExp4(self, ctx: MCParser.Exp4Context):
     if ctx.OP_LES():
         return BinaryOp(ctx.OP_LES().getText(), self.visit(ctx.exp5(0)),
                         self.visit(ctx.exp5(1)))
     elif ctx.OP_LEQ():
         return BinaryOp(ctx.OP_LEQ().getText(), self.visit(ctx.exp5(0)),
                         self.visit(ctx.exp5(1)))
     elif ctx.OP_GRE():
         return BinaryOp(ctx.OP_GRE().getText(), self.visit(ctx.exp5(0)),
                         self.visit(ctx.exp5(1)))
     elif ctx.OP_GEQ():
         return BinaryOp(ctx.OP_GEQ().getText(), self.visit(ctx.exp5(0)),
                         self.visit(ctx.exp5(1)))
     else:
         return self.visit(
             ctx.exp5(0))  # TODO: find out why you need the index here
コード例 #9
0
 def visitExp4(self, ctx: MCParser.Exp4Context):
     # exp4: exp5 (LESS|LESSEQ|GREA|GREAEQ) exp5 | exp5;
     if (ctx.LESS()):
         return BinaryOp(ctx.LESS().getText(), self.visit(ctx.exp5(0)),
                         self.visit(ctx.exp5(1)))
     elif (ctx.LESSEQ()):
         return BinaryOp(ctx.LESSEQ().getText(), self.visit(ctx.exp5(0)),
                         self.visit(ctx.exp5(1)))
     elif (ctx.GREA()):
         return BinaryOp(ctx.GREA().getText(), self.visit(ctx.exp5(0)),
                         self.visit(ctx.exp5(1)))
     elif (ctx.GREAEQ()):
         return BinaryOp(ctx.GREAEQ().getText(), self.visit(ctx.exp5(0)),
                         self.visit(ctx.exp5(1)))
     else:
         return self.visit(ctx.exp5(0))
コード例 #10
0
 def visitExp4(self, ctx: MCParser.Exp4Context):
     #exp4: exp5 LT exp5 | exp5 LEQ exp5 | exp5 GT exp5 | exp5 GEQ exp5 | exp5 ;
     if ctx.LT():
         return BinaryOp(ctx.LT().getText(), self.visit(ctx.exp5(0)),
                         self.visit(ctx.exp5(1)))
     elif ctx.LEQ():
         return BinaryOp(ctx.LEQ().getText(), self.visit(ctx.exp5(0)),
                         self.visit(ctx.exp5(1)))
     elif ctx.GT():
         return BinaryOp(ctx.GT().getText(), self.visit(ctx.exp5(0)),
                         self.visit(ctx.exp5(1)))
     elif ctx.GEQ():
         return BinaryOp(ctx.GEQ().getText(), self.visit(ctx.exp5(0)),
                         self.visit(ctx.exp5(1)))
     else:
         return self.visit(ctx.exp5(0))
コード例 #11
0
 def visitExp4(self, ctx: MCParser.Exp4Context):
     #exp4: exp5 (LESS|LESSEQUAL|GREATER|GREATEREQUAL) exp5 | exp5;
     if ctx.getChildCount() == 3:
         if ctx.LESS():
             return BinaryOp(ctx.LESS().getText(), self.visit(ctx.exp5(0)),
                             self.visit(ctx.exp5(1)))
         if ctx.LESSEQUAL():
             return BinaryOp(ctx.LESSEQUAL().getText(),
                             self.visit(ctx.exp5(0)),
                             self.visit(ctx.exp5(1)))
         if ctx.GREATER():
             return BinaryOp(ctx.GREATER().getText(),
                             self.visit(ctx.exp5(0)),
                             self.visit(ctx.exp5(1)))
         if ctx.GREATEREQUAL():
             return BinaryOp(ctx.GREATEREQUAL().getText(),
                             self.visit(ctx.exp5(0)),
                             self.visit(ctx.exp5(1)))
     else:
         return self.visit(ctx.exp5(0))
コード例 #12
0
 def visitExp4(self, ctx: MCParser.Exp4Context):
     return BinaryOp(self.visit(ctx.op4()), self.visit(ctx.exp5(0)),self.visit(ctx.exp5(1))) if ctx.getChildCount() == 3 \
         else self.visit(ctx.exp5(0))