fork download
  1. %{
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. %}
  6. identifier [a-zA-Z_][a-zA-Z0-9_]*
  7. operator [+\-*/%=><!&|~^?]
  8. integer [0-9]+
  9. invalid [0-9][a-zA-Z]*
  10. %%
  11. "auto" { printf("KEYWORD = auto\n"); }
  12. "break" { printf("KEYWORD = break\n"); }
  13. "case" { printf("KEYWORD = case\n"); }
  14. "char" { printf("KEYWORD = char\n"); }
  15. "const" { printf("KEYWORD = const\n"); }
  16. "continue" { printf("KEYWORD = continue\n"); }
  17. "default" { printf("KEYWORD = default\n"); }
  18. "do" { printf("KEYWORD = do\n"); }
  19. "double" { printf("KEYWORD = double\n"); }
  20. "else" { printf("KEYWORD = else\n"); }
  21. "enum" { printf("KEYWORD = enum\n"); }
  22. "extern" { printf("KEYWORD = extern\n"); }
  23. "float" { printf("KEYWORD = float\n"); }
  24. "for" { printf("KEYWORD = for\n"); }
  25. "goto" { printf("KEYWORD = goto\n"); }
  26. "if" { printf("KEYWORD = if\n"); }
  27. "int" { printf("KEYWORD = int\n"); }
  28. "long" { printf("KEYWORD = long\n"); }
  29. "register" { printf("KEYWORD = register\n"); }
  30. "return" { printf("KEYWORD = return\n"); }
  31. "short" { printf("KEYWORD = short\n"); }
  32. "signed" { printf("KEYWORD = signed\n"); }
  33. "sizeof" { printf("KEYWORD = sizeof\n"); }
  34. "static" { printf("KEYWORD = static\n"); }
  35. "struct" { printf("KEYWORD = struct\n"); }
  36. "switch" { printf("KEYWORD = switch\n"); }
  37. "typedef" { printf("KEYWORD = typedef\n"); }
  38. "union" { printf("KEYWORD = union\n"); }
  39. "unsigned" { printf("KEYWORD = unsigned\n"); }
  40. "void" { printf("KEYWORD = void\n"); }
  41. "volatile" { printf("KEYWORD = volatile\n"); }
  42. "while" { printf("KEYWORD = while\n"); }
  43. {identifier} { printf("IDENTIFIER => %s\n", yytext); }
  44. {operator} { printf("OPERATOR => %s\n", yytext); }
  45. {integer} { printf("INTEGER => %s\n", yytext); }
  46. #.* { printf("PRE PROCESSOR DIRECTIVE => %c", yytext);}
  47. [ \t\n] { }
  48. {invalid} { fprintf(stderr, "INVALID => %c\n", yytext[0]); }
  49. %%
  50. int main() {
  51. char buffer[1024];
  52. printf("\n\tLEXICAL ANALYZER PROGRAM\n");
  53. printf("INPUT:\n");
  54. while (fgets(buffer, sizeof(buffer), stdin)) {
  55. if (strlen(buffer) == 1 && buffer[0] == '\n') {
  56. break;
  57. }
  58. yy_scan_string(buffer);
  59. yylex();
  60. yy_flush_buffer(YY_CURRENT_BUFFER);
  61. }
  62. return 0;
  63. }
  64. int yywrap(){
  65. return 0;
  66. }
Success #stdin #stdout #stderr 0.02s 7020KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
ERROR: /home/P6Pt6L/prog:66:0: Syntax error: Unexpected end of file
ERROR: '$runtoplevel'/0: Undefined procedure: program/0
   Exception: (3) program ? EOF: exit