fork download
  1. %{
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int a[] = {0, 0, 0, 0}, i, valid = 1, opnd = 0;
  6.  
  7. void ext() {
  8. printf("Invalid Expression\n");
  9. exit(0);
  10. }
  11. %}
  12.  
  13. %x OPER
  14. %%
  15.  
  16. [0-9]+ { BEGIN OPER; opnd++; }
  17. <OPER>"+" { if(valid) { valid = 0; i = 0; } else ext(); }
  18. <OPER>"-" { if(valid) { valid = 0; i = 1; } else ext(); }
  19. <OPER>"*" { if(valid) { valid = 0; i = 2; } else ext(); }
  20. <OPER>"/" { if(valid) { valid = 0; i = 3; } else ext(); }
  21. <OPER>[a-zA-Z0-9]+ {
  22. opnd++;
  23. if(valid == 0) {
  24. valid = 1;
  25. a[i]++;
  26. } else {
  27. ext();
  28. }
  29. }
  30. <OPER>"\n" { if(valid == 0) ext(); else return 0; }
  31. . { ext(); }
  32.  
  33. %%
  34.  
  35. int main() {
  36. printf("Type the arithmetic expression:\n");
  37. yylex();
  38.  
  39. printf("Valid Arithmetic Expression\n");
  40. printf("No. of Operands/Identifiers: %d\n", opnd);
  41. printf("No. of Additions: %d\nNo. of Subtractions: %d\n", a[0], a[1]);
  42. printf("No. of Multiplications: %d\nNo. of Divisions: %d\n", a[2], a[3]);
  43.  
  44. return 0;
  45. }
  46.  
Success #stdin #stdout #stderr 0.03s 6856KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
ERROR: /home/YR9Uy9/prog:2:1: Syntax error: Operator expected
ERROR: /home/YR9Uy9/prog:45:1: Syntax error: Unexpected end of file
ERROR: '$runtoplevel'/0: Undefined procedure: program/0
   Exception: (3) program ? EOF: exit