def visitLiteral(self, ctx: BKITParser.LiteralContext): # One value if ctx.lit_type(): return ctx.lit_type().accept(self) if ctx.array_literal(): return ctx.array_literal().accept(self)
def visitLiteral(self, ctx: BKITParser.LiteralContext): if ctx.INT(): a = ctx.INT().getText() inlit = 0 if len(a) > 1: if a[1] == 'x' or a[1] == 'X': inlit = int(a, 16) elif a[1] == 'o' or a[1] == 'O': inlit = int(a, 8) else: inlit = int(a) else: inlit = int(a) return IntLiteral(inlit) elif ctx.FLOAT(): return FloatLiteral(float(ctx.FLOAT().getText())) elif ctx.BOOLEAN(): if ctx.BOOLEAN().getText() == 'True': return BooleanLiteral(True) else: return BooleanLiteral(False) elif ctx.STRING(): return StringLiteral(ctx.STRING().getText()) else: return self.visit(ctx.arr())
def visitLiteral(self, ctx: BKITParser.LiteralContext): if ctx.INT_LIT(): return IntLiteral(int(ctx.INT_LIT().getText(), 0)) if ctx.FLOAT_LIT(): return FloatLiteral(float(ctx.FLOAT_LIT().getText())) if ctx.STRING_LIT(): return StringLiteral(str(ctx.STRING_LIT().getText())) if ctx.bool_lit(): return self.visit(ctx.bool_lit()) if ctx.array_lit(): return self.visit(ctx.array_lit())
def visitLiteral(self, ctx:BKITParser.LiteralContext): if ctx.INT(): return IntLiteral(int(ctx.INT().getText(), 0)) elif ctx.FLOAT(): return FloatLiteral(float(ctx.FLOAT().getText())) elif ctx.BOOLEAN(): return BooleanLiteral(ctx.BOOLEAN().getText() == 'True') elif ctx.STRING(): return StringLiteral(ctx.STRING().getText()) else: return ctx.arr().accept(self)
def visitLiteral(self,ctx:BKITParser.LiteralContext): if ctx.INTLIT(): return IntLiteral(int(ctx.INTLIT().getText(),0)) elif ctx.FLOATLIT(): return FloatLiteral(float(ctx.FLOATLIT().getText(),)) elif ctx.BOOLIT(): return BooleanLiteral(ctx.BOOLIT().getText()) elif ctx.arrlit(): return ArrayLiteral(ctx.arrlit().accept(self)) else: return StringLiteral(ctx.STRLIT().getText())
def visitLiteral(self, ctx: BKITParser.LiteralContext): if ctx.bool_lit(): return ctx.bool_lit().accept(self) if ctx.INT_LIT(): #use helper function visitINT_LIT return IntLiteral(self.visitINT_LIT(ctx.INT_LIT().getText())) if ctx.FLOAT_LIT(): return FloatLiteral(float(ctx.FLOAT_LIT().getText())) if ctx.STRING_LIT(): return StringLiteral(ctx.STRING_LIT().getText()) else: #case array lit: return ctx.array_lit().accept(self)
def visitLiteral(self, ctx: BKITParser.LiteralContext): if ctx.INT(): return IntLiteral(int(ctx.INT().getText(), 0)) elif ctx.FLOAT(): return FloatLiteral(float(ctx.FLOAT().getText())) elif ctx.BOOLEAN(): return BooleanLiteral(bool(ctx.BOOLEAN().getText() == 'True')) return None
def visitLiteral(self, ctx: BKITParser.LiteralContext): """Return literal object""" if ctx.arrayLit(): return ctx.arrayLit().accept(self) elif ctx.IntLit(): # Util func def toInt(intStr: str): if intStr.startswith("0x") or intStr.startswith("0X"): return int(intStr, 16) elif intStr.startswith("0o") or intStr.startswith("0O"): return int(intStr, 8) else: return int(intStr, 10) return IntLiteral(toInt(ctx.IntLit().getText())) elif ctx.FloatLit(): return FloatLiteral(float(ctx.FloatLit().getText())) elif ctx.StrLit(): return StringLiteral(ctx.StrLit().getText()) else: value = True if ctx.BoolLit().getText() == "True" else False return BooleanLiteral(value)
def visitLiteral(self, ctx: BKITParser.LiteralContext): if ctx.INT_LITERAL(): i = ctx.INT_LITERAL().getText() x = i.find('x') X = i.find('X') o = i.find('o') O = i.find('O') if (x != -1 or X != -1): cvert = int(i, 16) elif (o != -1 or O != -1): cvert = int(i, 8) else: cvert = int(i) return IntLiteral(cvert) if ctx.FLOAT_LITERAL(): return FloatLiteral(float(ctx.FLOAT_LITERAL().getText())) if ctx.BOOLEAN_LITERAL(): return BooleanLiteral(ctx.BOOLEAN_LITERAL().getText()) if ctx.STRING_LITERAL(): return StringLiteral(ctx.STRING_LITERAL().getText())
def visitLiteral(self, ctx: BKITParser.LiteralContext): if ctx.FLOAT(): return FloatLiteral(float(ctx.FLOAT().getText())) elif ctx.bool_literal(): return self.visit(ctx.bool_literal()) elif ctx.STRING(): return StringLiteral(ctx.STRING().getText()) elif ctx.DEC(): return IntLiteral(int(ctx.DEC().getText())) elif ctx.HEXA(): return IntLiteral(int(ctx.HEXA().getText(), 16)) elif ctx.OCTAL(): return IntLiteral(int(ctx.OCTAL().getText(), 8)) else: return self.visit(ctx.array())
def visitLiteral(self, ctx: BKITParser.LiteralContext): if ctx.boolean_literal(): return self.visit(ctx.boolean_literal()) if ctx.STRING_LITERAL(): return StringLiteral(ctx.STRING_LITERAL().getText()) if ctx.array_literal(): return self.visit(ctx.array_literal()) if ctx.FLOAT_LITERAL(): return FloatLiteral(float(ctx.FLOAT_LITERAL().getText())) if ctx.INTEGER_LITERAL(): tmp = str(ctx.INTEGER_LITERAL().getText()) for i in range(len(tmp)): if tmp[i] == "O": return IntLiteral(int(ctx.INTEGER_LITERAL().getText(), 8)) if tmp[i] == "o": return IntLiteral(int(ctx.INTEGER_LITERAL().getText(), 8)) if tmp[i] == "X": return IntLiteral(int(ctx.INTEGER_LITERAL().getText(), 16)) if tmp[i] == "x": return IntLiteral(int(ctx.INTEGER_LITERAL().getText(), 16)) return IntLiteral(int(ctx.INTEGER_LITERAL().getText()))
def visitLiteral(self, ctx: BKITParser.LiteralContext): if ctx.INTLIT(): a = ctx.INTLIT().getText() if a[0] == '0' and len(a) == 1: return IntLiteral(0) elif a[0] == '0' and (a[1] == 'x' or a[1] == 'X'): result = int(a, 16) return IntLiteral(result) elif a[0] == '0' and (a[1] == 'o' or a[1] == 'O'): result = int(a, 8) return IntLiteral(result) else: return IntLiteral(int(ctx.INTLIT().getText())) elif ctx.boollit(): return self.visit(ctx.boollit()) elif ctx.STRINGLIT(): return StringLiteral(ctx.STRINGLIT().getText()) elif ctx.FLOATLIT(): return FloatLiteral(float(ctx.FLOATLIT().getText())) elif ctx.array(): return self.visit(ctx.array())