sly
sly copied to clipboard
"AttributeError: Name token redefined" when use loop to set NAME[token] = A
i want use sly to parse "thrift" file (see https://github.com/alingse/thrift-parser/blob/master/simple.py )
and want to set several base_type to IDENTIFIER, but got AttributeError
types = r'bool|byte|i8|i16|i32|i64|double|string|binary|slist'.split('|')
for token in types:
IDENTIFIER[token] = BASE_TYPE
see this simplify code https://github.com/alingse/thrift-parser/blob/master/demo3.py#L14-L16
i know this can be rewritten to
IDENTIFIER["bool"] = BASE_TYPE
IDENTIFIER["byte"] = BASE_TYPE
IDENTIFIER["i8"] = BASE_TYPE
IDENTIFIER["i16"] = BASE_TYPE
...
i want to known that is there any simple way to do this ?
like ?
IDENTIFIER[tuple("bool", "byte")] = BASE_TYPE
or is there some way to statement the reversed keywords for all identifier ( IDENTIFIER = r'[a-zA-Z_][a-zA-Z0-9._]*' )
😂 final, i use python script to generate the code
In [3]: for token in REVERSED_KEYWORD_LIST:
...: print("IDENTIFIER['{}'] = REVERSED_KEYWORD".format(token))
🙏
I'm looking at the SLY source and an "easy" workaround doesn't seem possible right now. However, I've been doing a bit of recent work on SLY. I'll look into this further.