#!/usr/bin/env python
from ast import literal_eval
from tokenize import generate_tokens, NAME, NUMBER, OP, STRING, ENDMARKER
def parse_key_value_list(text):
def check(condition):
if not condition:
raise ValueError((state, token))
KEY, EQ, VALUE, SEP = range(4)
state = KEY
for token in generate_tokens(lambda it=iter([text]): next(it)):
type, string = token[:2]
if state == KEY:
check(type == NAME)
key = string
state = EQ
elif state == EQ:
check(type == OP and string == '=')
state = VALUE
elif state == VALUE:
check(type in {NAME, NUMBER, STRING})
value = {
NAME: lambda x: x,
NUMBER: int,
STRING: literal_eval
}[type](string)
state = SEP
elif state == SEP:
check(type == OP and string == ',' or type == ENDMARKER)
yield key, value
state = KEY
if __name__=="__main__":
import sys
for text in sys.stdin:
print(dict(parse_key_value_list(text.strip())))
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCmZyb20gYXN0IGltcG9ydCBsaXRlcmFsX2V2YWwKZnJvbSB0b2tlbml6ZSBpbXBvcnQgZ2VuZXJhdGVfdG9rZW5zLCBOQU1FLCBOVU1CRVIsIE9QLCBTVFJJTkcsIEVORE1BUktFUgoKZGVmIHBhcnNlX2tleV92YWx1ZV9saXN0KHRleHQpOgogICAgZGVmIGNoZWNrKGNvbmRpdGlvbik6CiAgICAgICAgaWYgbm90IGNvbmRpdGlvbjoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigoc3RhdGUsIHRva2VuKSkKCiAgICBLRVksIEVRLCBWQUxVRSwgU0VQID0gcmFuZ2UoNCkKICAgIHN0YXRlID0gS0VZCiAgICBmb3IgdG9rZW4gaW4gZ2VuZXJhdGVfdG9rZW5zKGxhbWJkYSBpdD1pdGVyKFt0ZXh0XSk6IG5leHQoaXQpKToKICAgICAgICB0eXBlLCBzdHJpbmcgPSB0b2tlbls6Ml0KICAgICAgICBpZiBzdGF0ZSA9PSBLRVk6CiAgICAgICAgICAgIGNoZWNrKHR5cGUgPT0gTkFNRSkKICAgICAgICAgICAga2V5ID0gc3RyaW5nCiAgICAgICAgICAgIHN0YXRlID0gRVEKICAgICAgICBlbGlmIHN0YXRlID09IEVROgogICAgICAgICAgICBjaGVjayh0eXBlID09IE9QIGFuZCBzdHJpbmcgPT0gJz0nKQogICAgICAgICAgICBzdGF0ZSA9IFZBTFVFCiAgICAgICAgZWxpZiBzdGF0ZSA9PSBWQUxVRToKICAgICAgICAgICAgY2hlY2sodHlwZSBpbiB7TkFNRSwgTlVNQkVSLCBTVFJJTkd9KQogICAgICAgICAgICB2YWx1ZSA9IHsKICAgICAgICAgICAgICAgIE5BTUU6IGxhbWJkYSB4OiB4LAogICAgICAgICAgICAgICAgTlVNQkVSOiBpbnQsCiAgICAgICAgICAgICAgICBTVFJJTkc6IGxpdGVyYWxfZXZhbAogICAgICAgICAgICB9W3R5cGVdKHN0cmluZykKICAgICAgICAgICAgc3RhdGUgPSBTRVAKICAgICAgICBlbGlmIHN0YXRlID09IFNFUDoKICAgICAgICAgICAgY2hlY2sodHlwZSA9PSBPUCBhbmQgc3RyaW5nID09ICcsJyBvciB0eXBlID09IEVORE1BUktFUikKICAgICAgICAgICAgeWllbGQga2V5LCB2YWx1ZQogICAgICAgICAgICBzdGF0ZSA9IEtFWQoKaWYgX19uYW1lX189PSJfX21haW5fXyI6CiAgICBpbXBvcnQgc3lzCiAgICBmb3IgdGV4dCBpbiBzeXMuc3RkaW46CiAgICAgICAgcHJpbnQoZGljdChwYXJzZV9rZXlfdmFsdWVfbGlzdCh0ZXh0LnN0cmlwKCkpKSkgIA==
YWdlPTEyLG5hbWU9Ym9iLGhvYmJpZXM9JnF1b3Q7Z2FtZXMscmVhZGluZyZxdW90OyxwaHJhc2U9JnF1b3Q7SSdtIGNvb2whJnF1b3Q7CnBocmFzZT0nSVwnbSBjb29sIScKcGhyYXNlPSdJXCcsbSBjb29sIScKcGhyYXNlPSZxdW90O0knbSBcJnF1b3Q7Y29vbFwmcXVvdDssIEkgdGhpbmsuLi4mcXVvdDs=
age=12,name=bob,hobbies="games,reading",phrase="I'm cool!"
phrase='I\'m cool!'
phrase='I\',m cool!'
phrase="I'm \"cool\", I think..."