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)
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 [])
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())
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