- %{ 
- #include <stdio.h> 
- #include <ctype.h> 
- #include <string.h> 
- %} 
-   
- %% 
-   
- /* Objective 1: Extract numbers */ 
- [0-9]+      { printf("%s\n", yytext); } 
-   
- /* Objective 2: Replace 'charusat' with 'university' */ 
- [Cc]harusat  { printf("university"); } 
-   
- /* Objective 3: Count characters, words, and lines */ 
- .            { char_count++; } 
- \n           { line_count++; word_count++; } 
- [ \t]+       { word_count++; } 
-   
- /* Objective 4: Password validation */ 
- ^[a-zA-Z0-9*;#$@]{9,15}$ { 
-     int has_upper = 0, has_lower = 0, has_digit = 0, has_symbol = 0; 
-     for (int i = 0; i < yyleng; i++) { 
-         if (isupper(yytext[i])) has_upper = 1; 
-         if (islower(yytext[i])) has_lower = 1; 
-         if (isdigit(yytext[i])) has_digit = 1; 
-         if (strchr("*;#$@", yytext[i])) has_symbol = 1; 
-     } 
-     if (has_upper && has_lower && has_digit && has_symbol) { 
-         printf("Valid password\n"); 
-     } else { 
-         printf("Invalid password\n"); 
-     } 
- } 
-   
- %% 
-   
- int char_count = 0, word_count = 1, line_count = 0; 
-   
- int main() { 
-     yylex(); 
-     printf("Characters: %d\n", char_count); 
-     printf("Words: %d\n", word_count); 
-     printf("Lines: %d\n", line_count); 
-     return 0; 
- } 
-   
- int yywrap() { 
-     return 1; 
- } 
				JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxjdHlwZS5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiV9CgolJQoKLyogT2JqZWN0aXZlIDE6IEV4dHJhY3QgbnVtYmVycyAqLwpbMC05XSsgICAgICB7IHByaW50ZigiJXNcbiIsIHl5dGV4dCk7IH0KCi8qIE9iamVjdGl2ZSAyOiBSZXBsYWNlICdjaGFydXNhdCcgd2l0aCAndW5pdmVyc2l0eScgKi8KW0NjXWhhcnVzYXQgIHsgcHJpbnRmKCJ1bml2ZXJzaXR5Iik7IH0KCi8qIE9iamVjdGl2ZSAzOiBDb3VudCBjaGFyYWN0ZXJzLCB3b3JkcywgYW5kIGxpbmVzICovCi4gICAgICAgICAgICB7IGNoYXJfY291bnQrKzsgfQpcbiAgICAgICAgICAgeyBsaW5lX2NvdW50Kys7IHdvcmRfY291bnQrKzsgfQpbIFx0XSsgICAgICAgeyB3b3JkX2NvdW50Kys7IH0KCi8qIE9iamVjdGl2ZSA0OiBQYXNzd29yZCB2YWxpZGF0aW9uICovCl5bYS16QS1aMC05KjsjJEBdezksMTV9JCB7CiAgICBpbnQgaGFzX3VwcGVyID0gMCwgaGFzX2xvd2VyID0gMCwgaGFzX2RpZ2l0ID0gMCwgaGFzX3N5bWJvbCA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHl5bGVuZzsgaSsrKSB7CiAgICAgICAgaWYgKGlzdXBwZXIoeXl0ZXh0W2ldKSkgaGFzX3VwcGVyID0gMTsKICAgICAgICBpZiAoaXNsb3dlcih5eXRleHRbaV0pKSBoYXNfbG93ZXIgPSAxOwogICAgICAgIGlmIChpc2RpZ2l0KHl5dGV4dFtpXSkpIGhhc19kaWdpdCA9IDE7CiAgICAgICAgaWYgKHN0cmNocigiKjsjJEAiLCB5eXRleHRbaV0pKSBoYXNfc3ltYm9sID0gMTsKICAgIH0KICAgIGlmIChoYXNfdXBwZXIgJiYgaGFzX2xvd2VyICYmIGhhc19kaWdpdCAmJiBoYXNfc3ltYm9sKSB7CiAgICAgICAgcHJpbnRmKCJWYWxpZCBwYXNzd29yZFxuIik7CiAgICB9IGVsc2UgewogICAgICAgIHByaW50ZigiSW52YWxpZCBwYXNzd29yZFxuIik7CiAgICB9Cn0KCiUlCgppbnQgY2hhcl9jb3VudCA9IDAsIHdvcmRfY291bnQgPSAxLCBsaW5lX2NvdW50ID0gMDsKCmludCBtYWluKCkgewogICAgeXlsZXgoKTsKICAgIHByaW50ZigiQ2hhcmFjdGVyczogJWRcbiIsIGNoYXJfY291bnQpOwogICAgcHJpbnRmKCJXb3JkczogJWRcbiIsIHdvcmRfY291bnQpOwogICAgcHJpbnRmKCJMaW5lczogJWRcbiIsIGxpbmVfY291bnQpOwogICAgcmV0dXJuIDA7Cn0KCmludCB5eXdyYXAoKSB7CiAgICByZXR1cm4gMTsKfQ==