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
评论列表
文章目录