fork download
  1. digit [0-9]
  2. letter [a-zA-Z]
  3. %{
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. int counter = 0;
  7. %}
  8. /* Rule Section */
  9. /* Token specification */
  10. %%
  11. \"(\\.|[^"\\])*\" {printf("Token: string constant\n"); counter++;}
  12. "int" {printf("Token: int\n"); counter++;}
  13. "float" {printf("Token: float\n"); counter++;}
  14. "char" {printf("Token: char\n"); counter++;}
  15. "(" {printf("Token: (\n"); counter++;}
  16. ")" {printf("Token: )\n"); counter++;}
  17. "{" {printf("Token: {\n"); counter++;}
  18. "}" {printf("Token: }\n"); counter++;}
  19. "#" {printf("Token: #\n"); counter++;}
  20. "<" {printf("Token: <\n"); counter++;}
  21. ">" {printf("Token: >\n"); counter++;}
  22. ";" {printf("Token: End of Statement\n"); counter++;}
  23. "//".* ;
  24. "stdio.h"|"stdlib.h" {printf("Token:Header file\n"); counter++;}
  25. if|else|include|main|return|printf|scanf|yylex|yywrap|yyleng|yyin {printf("Token: Keyword\n"); counter++;}
  26. "," {printf("Token: , operator\n"); counter++;}
  27. "=" {printf("Token: assignment operator\n"); counter++;}
  28. "+"|"-"|"*"|"/" {printf("Token: arithmetic operator\n"); counter++;}
  29. {letter}({letter}|{digit})* {printf("Token: identifier\n"); counter++;}
  30. {digit}+ {printf("Token: Integer value\n"); counter++;}
  31. {digit}+.{digit}+ {printf("Token: Float value\n"); counter++;}
  32. .|\n ;
  33. %%
  34. int main()
  35. {
  36. extern FILE *yyin;
  37. char filename[100];
  38. printf("This Program finds all tokens!! \n Enter the name of the file to read:\t");
  39. scanf("%s", filename);
  40. /* Opening file to read */
  41. yyin = fopen(filename, "r");
  42. if (yyin == NULL){
  43. printf("Cannot open file %s\n", filename);
  44. exit(0);
  45. }
  46. /*call the yylex function.*/
  47. yylex();
  48. printf("Token count: %d\n", counter);
  49. return 0;
  50. }
  51.  
  52. /*call the yywrap function*/
  53. int yywrap()
  54. {
  55. return 1;
  56. }
  57.  
  58.  
Success #stdin #stdout #stderr 0.02s 6936KB
stdin
Welcome to Gitam
Welcome to Kanigiri
stdout
Standard output is empty
stderr
ERROR: /home/czNVV1/prog:57:0: Syntax error: Unexpected end of file
ERROR: '$runtoplevel'/0: Undefined procedure: program/0
   Exception: (3) program ? ERROR: Unknown option (h for help)
   Exception: (3) program ? EOF: exit