Esempio n. 1
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 [])
Esempio n. 2
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)
Esempio n. 3
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