--- /dev/null
+%{
+/*
+ * ken:
+ * will turn English into Cockney, featuring (dubious) rhyming slang for a lot
+ * of computer terminology.
+ *
+ * Written by Stephen K Mulrine <smulrine%cs.strath.ac.uk@nsfnet-relay.ac.uk>
+ * Make copies if you want etc.etc.
+ *
+ * Contacted author in June 2001, asked him to clarify the license, he replied
+ * with some improvements and placed the program in the public domain.
+ * -- Edward Betts <edward@debian.org> Mon, 11 Jun 2001 12:04:29 +0100
+ *
+ * ken is named after Ken the Chirpy Cockney Character from the Viz Comic (tm),
+ * who speaks somewhat like that.
+ */
+%}
+%e 3000
+%p 6000
+%n 1000
+%k 500
+%a 4000
+%o 2000
+BW [ ]
+EW [ .,;!?]
+%{
+ char buf[128];
+%}
+
+%%
+
+stairs printf("apples and pears");
+Downstairs printf("Down the apples and pears");
+downstairs printf("down the apples and pears");
+Upstairs printf("Up the apples and pears");
+upstairs printf("up the apples and pears");
+[Mm]outh printf("North and South");
+[Ff]ace printf("Boat Race");
+[Tt]rouble printf("Barney Rubble");
+wife { switch(rand()%2)
+ {
+ case 0: printf("trouble and strife"); break;
+ case 1: printf("ole lady"); break;
+ }
+ }
+Road printf("Frog and Toad");
+" road" printf(" frog and toad");
+"pub " printf("rub-a-dub ");
+" bar " printf(" boozer ");
+" husband" printf(" ole man");
+Party printf("Knees-up");
+party printf("knees-up");
+Parties printf("Knees-ups");
+parties printf("knees-ups");
+My printf("Me");
+" my" printf(" me");
+Your printf("Yer");
+your printf("yer");
+"You are " printf("Yer ");
+"you are " printf("yer ");
+You printf("Yer");
+you printf("yer");
+Those printf("Them");
+those printf("them");
+" those" printf(" them");
+"(those" printf("(them");
+"The " { switch(rand()%5)
+ {
+ case 0: printf("The bleedin' "); break;
+ default: ECHO; break;
+ }
+ }
+"The" ECHO;
+" the " { switch(rand()%5)
+ {
+ case 0: printf(" the bleedin' "); break;
+ default: ECHO; break;
+ }
+ }
+[" "(]the ECHO;
+"the " { switch(rand()%5)
+ {
+ case 0: printf(" the bleedin' "); break;
+ default: ECHO; break;
+ }
+ }
+[Tt]his ECHO;
+[" "(]this ECHO;
+[Tt]hat ECHO;
+[" "(]that ECHO;
+Thus printf("So");
+" thus" printf(" so");
+"(thus" printf("(so");
+"thus" printf("so");
+[Tt]han ECHO;
+[" "(]than ECHO;
+Who ECHO;
+who ECHO;
+" old " printf(" ole ");
+" to " printf(" ter ");
+"Aren't you " printf("Aintcha ");
+"aren't you " printf("aintcha ");
+"Aren't" printf("Ain't");
+"aren't" printf("ain't");
+"Isn't" printf("Ain't");
+"isn't" printf("ain't");
+"Are not " printf("Ain't");
+"are not " printf("ain't ");
+"Is not " printf("Ain't ");
+" is not " printf(" ain't ");
+"What is th" printf("Woss");
+"what is th" printf("woss");
+"What are you " printf("Wotcher ");
+"what are you " printf("wotcher ");
+"What you are" printf("Wotcher");
+"what you are" printf("wotcher");
+"What you're" printf("Wotcher");
+"what you're" printf("wotcher");
+"What are your" printf("Wotcher");
+"what are your" printf("wotcher");
+"What do you " printf("Wotcher ");
+"what do you " printf("wotcher ");
+"What do your" printf("Wotcher");
+"what do your" printf("wotcher");
+" "H[aeu]llo printf(" Wotcher");
+" "h[aeu]llo printf(" wotcher");
+What printf("Wot");
+what printf("wot");
+Were printf("Was");
+were printf("was");
+Bother printf("Ars");
+bother printf("ars");
+Mother printf("Muvver");
+Other printf("Uvver");
+other printf("uvver");
+Father printf("Favver");
+father printf("favver");
+Rather printf("Ravver");
+rather printf("ravver");
+Weather printf("Wevver");
+weather printf("wevver");
+Leather printf("Levver");
+leather printf("levver");
+Wither printf("Wivver");
+wither printf("wivver");
+Either printf("Eever");
+either printf("eever");
+With printf("Wiv");
+with printf("wiv");
+Anything printf("Anyfink");
+anything printf("anyfink");
+Something printf("Sumfink");
+something printf("sumfink");
+Nothing printf("Nuffink");
+nothing printf("nuffink");
+guitars printf("spoons");
+guitar printf("spoons");
+drums printf("spoons");
+drum printf("spoons");
+trumpets printf("spoons");
+trumpet printf("spoons");
+violins printf("spoons");
+violin printf("spoons");
+clarinets printf("spoons");
+clarinet printf("spoons");
+trombones printf("spoons");
+trombone printf("spoons");
+oboes printf("spoons");
+oboe printf("spoons");
+flutes printf("spoons");
+flute printf("spoons");
+tubas printf("spoons");
+tuba printf("spoons");
+Data printf("Info");
+data printf("info");
+Directory printf("Lockup");
+directory printf("lockup");
+Directories printf("Lockups");
+directories printf("lockups");
+[Pp]rocess { switch(rand()%2)
+ {
+ case 0: printf("Queen Bess"); break;
+ case 1: printf("Rudolf 'Ess"); break;
+ }
+ }
+[Cc]omputer printf("French Tutor");
+[Bb]yte printf("Jimmy White");
+[Ff]iles printf("Nobby Stiles");
+[Ff]ile printf("Royal Mile");
+[Ll]anguage printf("'Am Sandwich");
+[Zz]ero printf("Emperor Nero");
+[Jj]ob printf("Uncle Bob");
+[Ss]hell printf("Bow Bell");
+[Ss]ave printf("Chas'n'Dave");
+[Ll]oad printf("Old Kent Road");
+[Mm]ouse printf("Doll's 'Ouse");
+[Bb]uffer printf("Sausage Stuffer");
+[Kk]eyboard printf("Henry Ford");
+[Mm]anual printf("Cocker Spaniel");
+[Ss]creen printf("James Dean");
+[Pp]rinter printf("'Arold Pinter");
+[Pp]lotter printf("Pansy Potter");
+[Cc]ompiler printf("Martin Tyler");
+[Ss]tring printf("Emperor Ming");
+[Bb]rain printf("Michael Caine");
+[Pp][Aa][Ss][Cc][Aa][Ll] { switch(rand()%2)
+ {
+ case 0: printf("Pall Mall"); break;
+ case 1: printf("Roald Dahl"); break;
+ }
+ }
+[Aa][Ll][Gg][Oo][Ll] printf("Johnny Ball");
+[Ff][Oo][Rr][Tt][Rr][Aa][Nn] printf("Manfred Mann");
+[Cc][Oo][Bb][Oo][Ll] printf("Albert Hall");
+[Jj]ava printf("Wot a palavah");
+[Ww][Aa][Pp] printf("Pony and trap");
+Stopped printf("'Ad the mockers put on");
+stopped printf("'ad the mockers put on");
+Stopping printf("Putting the mockers on");
+stopping printf("putting the mockers on");
+stops printf("puts the mockers on");
+stop printf("put the mockers on");
+STOP printf("Put The Mockers On");
+[Ll]ondoner printf("Cockney");
+friend { switch(rand()%3)
+ {
+ case 0: printf("mucker"); break;
+ case 1: printf("mate"); break;
+ case 2: printf("china"); break;
+ }
+ }
+"a h" printf("an '");
+"A h" printf("An '");
+" h" printf(" '");
+" H" printf(" '");
+" C-" printf(" Bruce Lee-");
+" C " { switch(rand()%4)
+ {
+ case 0: printf(" Bruce Lee "); break;
+ case 1: printf(" Circus Flea "); break;
+ case 2: printf(" Bumble Bee "); break;
+ case 3: printf(" Door Key "); break;
+ }
+ }
+" C." printf(" Circus Flea.");
+Th printf("F");
+Wh printf("W");
+wh printf("w");
+aw printf("or");
+" "[BbKkMmPpRrSsWw]ing ECHO;
+" "[Bb]ring ECHO;
+" "[Ss]ting ECHO;
+" "[Ss]wing ECHO;
+" "[CcFfSs]ling ECHO;
+" Thing" printf(" Fing");
+" thing" printf(" fing");
+
+"ing " printf("in' ");
+". " { switch(rand()%32)
+ {
+ case 0: printf(". I'll get out me spoons. "); break;
+ case 1: printf(". Yer can't 'ave a knees-up wivout a joanna. "); break;
+ case 2: printf(". Cor blimey guv, would I lie to you. "); break;
+ case 3: printf(". I'll make us all a nice cup of tea. "); break;
+ default: ECHO; break;
+ }
+ }
+"? " { switch(rand()%3)
+ {
+ case 0: printf(", mate? "); break;
+ case 1: printf(", guv? "); break;
+ case 2: printf(", squire? "); break;
+ }
+ }
+"! " { switch(rand()%6)
+ {
+ case 0: printf(", cor blimey! "); break;
+ case 1: printf("! Struth! "); break;
+ case 2: printf(", guv! "); break;
+ case 3: printf("! Honest guv! "); break;
+ case 4: printf(", mate! "); break;
+ case 5: ECHO; break;
+ }
+ }
+. printf(yytext);
+\n printf("\n");
+%%
+
+main()
+{
+ srand(getpid());
+ yylex();
+}