* cockney, jive, and nyc filters are now GPL'd, moved from -nonfree
[filters.git] / jive.l
diff --git a/jive.l b/jive.l
new file mode 100644 (file)
index 0000000..dcb9924
--- /dev/null
+++ b/jive.l
@@ -0,0 +1,250 @@
+%{
+/*
+ *     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
+ */
This page took 0.01394 seconds and 4 git commands to generate.