fork download
  1. import re
  2.  
  3. def classify_token(token):
  4. if re.match(r'\"(\\.|[^"\\])*\"', token): return "Token: string constant"
  5. if token in {"int", "float", "char"}: return f"Token: {token}"
  6. if token in {"(", ")", "{", "}", "#", "<", ">", ";", ",", "=", "+", "-", "*", "/"}: return f"Token: {token} operator"
  7. if re.match(r'^[a-zA-Z_]\w*$', token): return "Token: identifier"
  8. if re.match(r'^\d+$', token): return "Token: Integer value"
  9. if re.match(r'^\d+\.\d+$', token): return "Token: Float value"
  10. return "Unknown Token"
  11.  
  12. code = '''#include <stdio.h>
  13. int main() {
  14. printf("Welcome");
  15. return 0;
  16. }'''
  17.  
  18. tokens = re.findall(r'\"(\\.|[^"\\])*\"|\w+|[^\w\s]', code)
  19. for token in tokens:
  20. print(classify_token(token))
  21.  
  22.  
Success #stdin #stdout #stderr 0.02s 6972KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
ERROR: /home/rqAvhW/prog:21:0: Syntax error: Unexpected end of file
ERROR: '$runtoplevel'/0: Undefined procedure: program/0
   Exception: (3) program ? EOF: exit