value.py 文件源码

python
阅读 28 收藏 0 点赞 0 评论 0

项目:protocall 作者: google 项目源码 文件源码
def value(literal):
    if isinstance(literal, protocall_pb2.Expression) and literal.HasField("atom"):
        result = value(literal.atom.literal)
    elif isinstance(literal, protocall_pb2.Expression) and literal.HasField("arithmetic_operator"):
        result = literal.arithmetic_operator
    elif isinstance(literal, protocall_pb2.Expression) and literal.HasField("comparison_operator"):
        result =  literal.comparison_operator
    elif isinstance(literal, protocall_pb2.Expression) and literal.HasField("expression"):
        result = literal.expression
    elif isinstance(literal, protocall_pb2.Literal) and literal.HasField("integer"):
        result = literal.integer.value
    elif isinstance(literal, protocall_pb2.Literal) and literal.HasField("string"):
        result = literal.string.value
    elif isinstance(literal, protocall_pb2.Literal) and literal.HasField("array"):
        result = '[ ' + ", ".join([str(value(element)) for element in literal.array.element]) + ' ]'
    elif isinstance(literal, protocall_pb2.Literal) and literal.HasField("proto"):
        print "XXX"
        print "literal:", literal
        result = literal.proto
    elif isinstance(literal, protocall_pb2.Atom):
        result = value(literal.literal)
    elif isinstance(literal, int):
        result = literal
    elif isinstance(literal, str):
        result = literal
    elif isinstance(literal, unicode):
        result = literal
    elif isinstance(literal, float):
        result = literal
    elif isinstance(literal, message.Message):
        print "YYY"
        result = literal
    elif isinstance(literal, None):
        print "Warning: None value."
        result = None
    else:
        print literal.__class__
        import pdb; pdb.set_trace()
        raise RuntimeError
    return result
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号