import re
def classify_token(token):
if re.match(r'\"(\\.|[^"\\])*\"', token): return "Token: string constant"
if token in {"int", "float", "char"}: return f"Token: {token}"
if token in {"(", ")", "{", "}", "#", "<", ">", ";", ",", "=", "+", "-", "*", "/"}: return f"Token: {token} operator"
if re.match(r'^[a-zA-Z_]\w*$', token): return "Token: identifier"
if re
.match
(r
'^\d+$', token
): return "Token
: Integer value"
if re
.match
(r
'^\d+\.\d+$', token
): return "Token
: Float value"
return "Unknown Token"
code = '''#include <stdio.h>
int main() {
printf("Welcome");
return 0;
}'''
tokens
= re
.findall(r
'\"(\\.|[^"\\])*\"|\w+|[^\w\s]', code
)for token in tokens:
print(classify_token(token))
aW1wb3J0IHJlCgpkZWYgY2xhc3NpZnlfdG9rZW4odG9rZW4pOgogICAgaWYgcmUubWF0Y2gocidcIihcXC58W14iXFxdKSpcIicsIHRva2VuKTogcmV0dXJuICJUb2tlbjogc3RyaW5nIGNvbnN0YW50IgogICAgaWYgdG9rZW4gaW4geyJpbnQiLCAiZmxvYXQiLCAiY2hhciJ9OiByZXR1cm4gZiJUb2tlbjoge3Rva2VufSIKICAgIGlmIHRva2VuIGluIHsiKCIsICIpIiwgInsiLCAifSIsICIjIiwgIjwiLCAiPiIsICI7IiwgIiwiLCAiPSIsICIrIiwgIi0iLCAiKiIsICIvIn06IHJldHVybiBmIlRva2VuOiB7dG9rZW59IG9wZXJhdG9yIgogICAgaWYgcmUubWF0Y2gocideW2EtekEtWl9dXHcqJCcsIHRva2VuKTogcmV0dXJuICJUb2tlbjogaWRlbnRpZmllciIKICAgIGlmIHJlLm1hdGNoKHInXlxkKyQnLCB0b2tlbik6IHJldHVybiAiVG9rZW46IEludGVnZXIgdmFsdWUiCiAgICBpZiByZS5tYXRjaChyJ15cZCtcLlxkKyQnLCB0b2tlbik6IHJldHVybiAiVG9rZW46IEZsb2F0IHZhbHVlIgogICAgcmV0dXJuICJVbmtub3duIFRva2VuIgoKY29kZSA9ICcnJyNpbmNsdWRlIDxzdGRpby5oPgppbnQgbWFpbigpIHsKICAgIHByaW50ZigiV2VsY29tZSIpOwogICAgcmV0dXJuIDA7Cn0nJycKCnRva2VucyA9IHJlLmZpbmRhbGwocidcIihcXC58W14iXFxdKSpcInxcdyt8W15cd1xzXScsIGNvZGUpCmZvciB0b2tlbiBpbiB0b2tlbnM6CiAgICBwcmludChjbGFzc2lmeV90b2tlbih0b2tlbikpCgo=