--- /dev/null
+%{
+/*
+ * Lex filter to transform plain English into Jive English.
+ * No racial or societal slurs are intended. For amusement only.
+ *
+ * Copyright 1986 by Daniel Klein and Clement Cole.
+ *
+ * Reproduction permitted so long as this notice is retained.
+ */
+%}
+%e 1700
+%p 4000
+%n 700
+%k 450
+%a 1700
+%o 1500
+BW [ \t\(]
+EW [ \t.,;!\?$\)]
+%%
+@[Bb]egin(.*) |
+".so ".*$ printf("%s", yytext);
+{BW}send printf("%ct'row",yytext[0]);
+program+ printf("honky code");
+[Uu]nix printf("slow mo-fo");
+UNIX printf("dat slow mo-fo");
+actual printf("ak'shul");
+{BW}take printf("%csnatch",yytext[0]);
+{BW}took |
+{BW}take[ns] printf("%csnatch'd",yytext[0]);
+[Mm]exican printf("%cet-back", caseify('w'));
+[Ii]talian printf("%creaser", caseify('g'));
+{BW}big{EW} { printf("%cbig ass",yytext[0]);plastc();}
+fool printf("honkyfool");
+modem printf("doodad");
+{BW}he{EW} { printf("%cmah' man he",yytext[0]);plastc();}
+"e the"{EW} |
+"a the"{EW} |
+"t the"{EW} |
+"d the"{EW} { printf("%c da damn", yytext[0]);plastc();}
+wife |
+woman printf("mama");
+girl printf("goat");
+something printf("sump'n");
+{BW}lie printf("%chonky jive",yytext[0]);
+-o- printf("-on rebound-");
+[a-z]"." { printf("%s", yytext);expletive();}
+! printf(". Right On!");
+[Ss]ure printf("%cho'", yytext[0]);
+get printf("git");
+"will have"{EW} |
+"will"{EW} |
+"got to"{EW} { printf("gots'ta");plastc();}
+"I am" printf("I's gots'ta be");
+"aren't" |
+"am not" |
+"have not" |
+"is not" |
+"are not" printf("ain't");
+{BW}see{EW} { printf("%csee's",yytext[0]);plastc();}
+{BW}are{EW} { printf("%cis",yytext[0]);plastc();}
+{BW}hat{EW} { printf("%cfedora",yytext[0]);plastc();}
+{BW}shoe printf("%ckicker",yytext[0]);
+{BW}"have to"{EW} |
+{BW}has{EW} { printf("%cgots'ta",yytext[0]);plastc();}
+have printf("gots'");
+{BW}go{EW} |
+{BW}"come over"{EW} |
+{BW}come{EW} { printf("%cmosey on down",yytext[0]);plastc();}
+buy printf("steal");
+{BW}car{EW} { printf("%cwheels",yytext[0]);plastc();}
+drive printf("roll");
+{BW}food printf("%ccatfish an' colluhd greens",yytext[0]);
+{BW}eat{EW} { printf("%cfeed da bud",yytext[0]);plastc();}
+drink printf("guzzle");
+black |
+negro printf("brother");
+white printf("honky");
+nigger printf("gentleman");
+nice printf("supa' fine");
+{BW}person printf("%csucka'",yytext[0]);
+[Pp]eople printf("%cucka's", caseify('s'));
+{BW}thing thing(yytext[0]);
+house{EW} { printf("crib");plastc();}
+home printf("plantation");
+name printf("dojigger");
+{BW}path printf("%calley",yytext[0]);
+[Cc]omputer printf("%clunker", yytext[0]);
+or printf("o'");
+president printf("super-dude");
+"prime minister" printf("prahm mistah");
+government printf("guv'ment");
+knew printf("knowed");
+[Bb]ecause printf("'%cuz", caseify('c'));
+[Yy]our printf("%co'", yytext[0]);
+[Ff]our printf("%coe", yytext[0]);
+got printf("gots");
+young printf("yung");
+you printf("ya'");
+You printf("You's");
+first printf("fust");
+police printf("honky pigs");
+{BW}string printf("%cchittlin'",yytext[0]);
+{BW}read printf("%ceyeball",yytext[0]);
+write printf("scribble");
+think{EW} { printf("thin'");plastc();}
+with printf("wif");
+other printf("uthu'");
+[Tt]hr printf("%c'r", yytext[0]);
+[Tt]h printf("%c", caseify('d'));
+ing printf("in'");
+{BW}a{EW} { printf("%csome",yytext[0]);plastc();}
+{BW}to{EW} { printf("%ct'",yytext[0]);
+ if(yytext[yyleng-1]!=' ')
+ plastc();
+ }
+tion printf("shun");
+[Aa]lmost printf("%cos'", caseify('m'));
+from printf("fum");
+[Yy]"ou're" printf("%couse", yytext[0]);
+alright |
+okay printf("coo'");
+[Aa]nd printf("%cn'", yytext[0]);
+known printf("knode");
+want printf("wants'");
+beat printf("whup'ed");
+ile printf("ah'l");
+er{EW} { printf("uh");plastc();}
+[a-z]sti printf("%cs'i", yytext[0]);
+tute printf("toot");
+exp printf("'sp");
+exs |
+exc printf("'s");
+{BW}ex printf("%c'es",yytext[0]);
+[ae]ct{EW} { printf("%cc'", yytext[0]); plastc(); }
+like printf("likes");
+done |
+did printf("dun did");
+"kind of" printf("kind'a");
+women printf("honky chicks");
+{BW}man{EW} { printf("%cdude",yytext[0]);plastc();}
+{BW}men{EW} |
+{BW}mens{EW} { printf("%cdudes",yytext[0]);plastc();}
+injured printf("hosed");
+killed |
+dead printf("wasted");
+good printf("baaaad");
+open{EW} { printf("jimmey");plastc();}
+opened{EW} { printf("jimmey'd");plastc();}
+{BW}very printf("%creal",yytext[0]);
+per printf("puh'");
+oar printf("o'");
+{BW}can printf("%ckin",yytext[0]);
+{BW}just{EW} { printf("%cplum",yytext[0]);plastc();}
+[Dd]etroit printf("Mo-town");
+[Ww]"estern "[Ee]"lectric" printf("da' cave");
+{BW}believe printf("%crecon'",yytext[0]);
+[Ii]"ndianapolis" printf("Nap-town");
+Daniel |
+Dan printf("Liva' Lips");
+Reagan printf("Kingfish");
+Ronald{EW} |
+Ron{EW} { printf("Rolo");plastc();}
+John printf("Rastus");
+Jim printf("Bo-Jangles");
+pontiff |
+pope printf("wiz'");
+[Pp]ravda printf("dat commie rag");
+broken printf("bugger'd");
+strange{EW} { printf("funky");plastc();}
+dance{EW} { printf("boogy");plastc();}
+ask printf("ax'");
+{BW}so{EW} { printf("%cso's",yytext[0]);plastc();}
+heard printf("'hoid");
+head printf("'haid");
+boss printf("main man");
+money printf("bre'd");
+[a-z]":" { *(yytext+1) = ',';
+ printf("%s dig dis:",yytext);
+ }
+amateur printf("begina'");
+radio printf("transista'");
+{BW}of{EW} { printf("%cuh",yytext[0]);plastc();}
+which |
+what printf("whut");
+"don't" printf("doan'");
+does printf("duz");
+{BW}was{EW} |
+{BW}were{EW} { printf("%cwuz",yytext[0]);plastc();}
+{BW}understand printf("%cdig",yytext[0]);
+{BW}my printf("%cmah'",yytext[0]);
+again |
+against printf("agin'");
+{BW}[Ii]{EW} { printf("%cah'",yytext[0]);plastc();}
+meta printf("meta-fuckin'");
+cally printf("c'l");
+%%
+plastc()
+{
+ unput(yytext[yyleng-1]);
+}
+
+caseify(c)
+char c;
+{
+ if (yytext[0] <= 'Z')
+ return (c - ' ');
+ else
+ return (c);
+}
+
+thing(c)
+char c;
+{
+ static short count = 0;
+
+ putchar(c);
+ switch (count++ % 4) {
+ case 0: case 2:
+ printf("thang");
+ break;
+ case 1:
+ printf("doohickey");
+ break;
+ case 3:
+ printf("wahtahmellun");
+ break;
+ }
+}
+expletive()
+{
+ static short count = 0;
+ static short which = 0;
+
+ if (count++ % 4 == 0) {
+ switch (which++ % 5) {
+ case 0: printf(" What it is, Mama!"); break;
+ case 1: printf(" Ya' know?"); break;
+ case 2: printf(" Sheeeiit."); break;
+ case 3: printf(" Ya' dig?"); break;
+ case 4: printf(" Git down!"); break;
+ }
+ }
+}
+
+/*
+ * Bugs:
+ *
+ * If a sentence starts with a keyword it doan' get converted, or:
+ * it do, but gets a leading space
+ */