fork download
  1. %{
  2. #include <stdio.h>
  3. #define MAX_LENGTH 20 /* Longueur maximale des mots alphabétiques */
  4.  
  5. int word_lengths[MAX_LENGTH + 1] = {0}; /* Tableau pour stocker les fréquences */
  6. %}
  7.  
  8. %%
  9.  
  10. [a-zA-Z]{1,20} { /* Mot alphabétique de longueur <= 20 */
  11. int len = yyleng; /* Longueur du mot trouvé */
  12. word_lengths[len]++;
  13. }
  14.  
  15. [a-zA-Z]{21,} { /* Mot alphabétique de longueur > 20 (ignoré) */
  16. /* Ignorer ces mots car ils dépassent la limite */
  17. }
  18.  
  19. [^a-zA-Z]+ { /* Séparateurs et autres caractères */
  20. /* Ignorer */
  21. }
  22.  
  23. %%
  24.  
  25. int main() {
  26. printf("Entrez le texte :\n");
  27. yylex();
  28.  
  29. /* Affichage de l'histogramme */
  30. printf("\nHistogramme des longueurs de mots:\n");
  31. for (int i = 1; i <= MAX_LENGTH; i++) {
  32. if (word_lengths[i] > 0) {
  33. printf("Longueur %2d : %d\n", i, word_lengths[i]);
  34. }
  35. }
  36.  
  37. return 0;
  38. }
  39.  
Success #stdin #stdout #stderr 0.04s 6952KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
ERROR: /home/egGkK9/prog:38:1: Syntax error: Unexpected end of file
ERROR: '$runtoplevel'/0: Undefined procedure: program/0
   Exception: (3) program ? EOF: exit