Использование UNIX для синтаксического и лексического анализа



         

Пример: программа Valspeak - часть 2


"can be" "can't be" "should have been" "shouldn't have been" "should be" "shouldn't be" "was" "wasn't" "will be" "won't be"

ing printf ("in");

"is" { ECHO; switch (rand () % 4) { case 0: printf ("like, ya know,"); break; case 1: printf(""); break; case 2: printf ("like wow!"); break; case 3: printf ("ya know, like,"); break; } }

"maybe" { switch( rand () % 5) { case 0: printf("if yon're a Pisces"); break; case 1: printf ("if the moon is full"); break; case 2: printf ("if the vibes are right"); break; case 3: printf("when you get the feeling"); break; case 5: printf("maybe"); break; } }

"," { switch (rand () % 6) { case 0: printf(", like,"); break; case 1: printf(", fer shure,"); break; case 2: printf(", like, wow,"); break; case 3: printf(", oh, baby,"); break; case 4: printf(", man,"); break; case 5: printf(", mostly, "); break; } }

"!" { switch (rand () % 3) { case 0: printf("! Gag me with a SPOOOOON!"); break; case 1: printf("! Gag me with a pitchfork!"); break; case 2: printf("! Oh, wow!"); } }

. ECHO; \n ECHO;

%

main () { srand(getpid()); yylex(); }

Исходный код легко читается и понимается - при обнаружении некоторых слов или знаков пунктуации происходит простая замена. Например, слово house заменяется на pad. Если я ввожу:




Содержание  Назад  Вперед