示例#1
0
 def visitOperand(self, ctx: MCParser.OperandContext):
     if ctx.exp():
         return self.visit(ctx.exp())
     elif ctx.INTLIT():
         return IntLit(int(ctx.INTLIT().getText()))
     else:
         return BoolLit(True if (
             ctx.BOOLIT().getText() == "true") else False)
示例#2
0
 def visitOperand(self, ctx: MCParser.OperandContext):
     if ctx.INTLIT(): return IntLiteral(int(ctx.INTLIT().getText()))
     elif ctx.FLOATLIT():
         return FloatLiteral(float(ctx.FLOATLIT().getText()))
     elif ctx.STRINGLIT():
         return StringLiteral(ctx.STRINGLIT().getText())
     elif ctx.BOOLIT():
         return BooleanLiteral(ctx.BOOLIT().getText() == "true")
     elif not ctx.LB():
         return Id(ctx.ID().getText())
     elif ctx.LB():
         return CallExpr(Id(ctx.ID().getText()),
                         [self.visit(x)
                          for x in ctx.exp()] if ctx.exp() else [])
示例#3
0
 def visitOperand(self, ctx: MCParser.OperandContext):
     if ctx.INTLIT():
         return IntLiteral(int(ctx.INTLIT().getText()))
     elif ctx.FLOATLIT():
         return FloatLiteral(float(ctx.FLOATLIT().getText()))
     elif ctx.BOOLLIT():
         return BooleanLiteral(
             bool(True) if ctx.BOOLLIT().getText() ==
             "true" else bool(False))
     elif ctx.STRINGLIT():
         return StringLiteral(str(ctx.STRINGLIT().getText()))
     elif ctx.exp():
         return self.visit(ctx.exp())
     elif ctx.func_call():
         return self.visit(ctx.func_call())
     else:
         return Id(ctx.ID().getText())
示例#4
0
 def visitOperand(self, ctx: MCParser.OperandContext):
     # if ctx.getChildCount() == 3:
     #     return ctx.exp().accept(self) # generate code for the third right hand side
     # elif ctx.INTLIT():
     #     return IntLit(int(ctx.INTLIT().getText())) # return a IntLit object
     # print(ctx.BOOLIT().getText(), type(ctx.BOOLIT().getText()))
     # if ctx.BOOLIT().getText() == 'true': return True
     # else: return False # return a BoolLit object
     # return BoolLit(ctx.BOOLIT().getText())
     return self.visit(ctx.exp()) if ctx.getChildCount() == 3 else IntLit(
         int(ctx.INTLIT().getText())) if ctx.INTLIT(
         ) else True if ctx.BOOLIT().getText() == 'true' else False