fork download
  1. import re
  2. tokens = []
  3. input_code = 'if ( a > b ) { i = j + 2 ; else j = k - 2 ; }'.split()
  4. for word in input_code:
  5. if word in ["str", "int", "bool", "float", "double", "char", "long"]:
  6. tokens.append(['DATATYPE', word])
  7. if word in["auto","break","case","catch","word","class","const","continue","delete","do","if","else","enum","false","for","goto","if","#include","namespace","not","or","private","protected","public","return","short","signed","sizeof","static","struct","switch","true","try","unsigned","void","while",]:
  8. tokens.append(['KEYWORD', word])
  9. elif re.match("[a-z]", word) or re.match("[A-Z]", word):
  10. tokens.append(['IDENTIFIER', word])
  11. elif word in ['_','`','~','!','@','#','$','^','&','"',':',';','<','>','?']:
  12. tokens.append(['NON-IDENTIFIER', word])
  13. elif word in ["+","-","*","/","%","+=","-=","*=","/=","++","--","|","&&",]:
  14. tokens.append(['OPERATOR', word])
  15. elif word in ["\t","\n","(",")","[","]","{","}","=",":",",",";","<<",">>",]:
  16. tokens.append(['DELIMITER', word])
  17. elif word in ['0','1','2','3','4','5','6','7','8','9']:
  18. tokens.append(["NUMERAL", word])
  19. elif re.match(".[0-9]", word):
  20. if word[len(word) - 1] == ';':
  21. tokens.append(["INTEGER", word[:-1]])
  22. tokens.append(['END_STATEMENT', ';'])
  23. else:
  24. tokens.append(["INTEGER", word])
  25. for tkn in tokens:
  26. print(tkn)
  27.  
  28.  
Success #stdin #stdout #stderr 0.02s 6884KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
ERROR: /home/p0Rtbz/prog:27:0: Syntax error: Unexpected end of file
ERROR: '$runtoplevel'/0: Undefined procedure: program/0
   Exception: (3) program ? EOF: exit