* cockney, jive, and nyc filters are now GPL'd, moved from -nonfree
authorjoey <joey@a4a2c43b-8ac3-0310-8836-e0e880c912e2>
Thu, 23 Nov 2000 03:26:29 +0000 (03:26 +0000)
committerjoey <joey@a4a2c43b-8ac3-0310-8836-e0e880c912e2>
Thu, 23 Nov 2000 03:26:29 +0000 (03:26 +0000)
     package.

Makefile
cockney.l [new file with mode: 0644]
debian/changelog
debian/control
debian/copyright
filters.6
jibberish
jive.l [new file with mode: 0644]
nyc.l [new file with mode: 0644]

index 8ecd83304d00d43776e5b7e64ff29b3534b86df8..88a38bbccdb899515441d6750e77b61c77e65ca6 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@
 
 LEX     = flex
 
 
 LEX     = flex
 
-ALL     = jethro kraut
+ALL     = jethro kraut cockney jive nyc
 OTHER   = eleet b1ff chef jibberish upside-down
 
 all:   $(OTHER) $(ALL)
 OTHER   = eleet b1ff chef jibberish upside-down
 
 all:   $(OTHER) $(ALL)
diff --git a/cockney.l b/cockney.l
new file mode 100644 (file)
index 0000000..e6c0bda
--- /dev/null
+++ b/cockney.l
@@ -0,0 +1,190 @@
+%{
+/*
+ *     Lex filter to transform plain English into Cockney English.
+ *     No racial or societal slurs are intended.  For amusement only.
+ *
+ *     Copyright 1986 by Daniel Klein.
+ *
+ *     Reproduction permitted so long as this notice is retained.
+ */
+%}
+
+BW [ \t\n]
+SP [ \t]+
+EW [ \t.,;!\?$]
+
+%Start junk
+
+%%
+<junk>.                        {       srandom(time(0L)); unput(yytext[0]); BEGIN 0; }
+{BW}[Tt]he{EW}         {       ECHO; bloody(); }
+{BW}[Ss]teal{EW}       {       printf("%c%cick",yytext[0],yytext[1]-5);
+                               eos();
+                       }
+{BW}[Ss]tole{EW}       {       printf("%c%cicked",yytext[0],yytext[1]-5);
+                               eos();
+                       }
+{BW}tired                      pooped();
+{BW}were{EW}           |
+{BW}was{EW}            {       printf("%cwuz",yytext[0]); eos(); }
+[Hh]ello                       printf("'%cllo", caseify('u'));
+{BW}[Hh]                       printf("%c'",yytext[0]);
+{BW}[Yy]our{EW}                {       printf("%.2ser",yytext); eos(); }
+{BW}it{EW}             {       printf("%.2s'",yytext); eos(); }
+{BW}go{EW}             {       printf("%.2sow",yytext); eos(); }
+{BW}and{EW}            {       printf("%c'n'",yytext[0]); eos(); }
+{BW}my{EW}             {       printf("%.2se",yytext); eos(); }
+{BW}th(is|at){EW}      {       printf("%.5s", yytext); eos(); }
+{BW}[Ww]e{SP}went{EW}  |
+{BW}[Ww]e{SP}had{EW}   |
+{BW}[Ww]e{SP}did{EW}   {       printf("%.*s",yyleng-1,yytext);
+                               set_did(2);
+                               eos();
+                       }
+{BW}I{SP}went{EW}      |
+{BW}I{SP}had{EW}       |
+{BW}I{SP}did{EW}       {       I();
+                               printf(" did");
+                               set_did(1);
+                               eos();
+                       }
+{BW}I{EW}              {       I(); eos(); }
+
+[Yy]ou{SP}[^aeiouy]    {       printf("%c'", yytext[0]); plastc(); }
+[Ww]hat{SP}are{EW}     {       printf("%cotta", yytext[0]); eos(); }
+
+{BW}other              |
+[MmNnRr]other                  printf("%cuvver",yytext[0]);
+[MmSs]outh                     printf("%cowf", yytext[0]);
+[cYy]outh                      printf("%coof", yytext[0]);
+[^o]uth                                printf("%.2sf",yytext);
+{BW}th[^e]             |
+[AaEeIiOo]th[^em]      {       printf("%cf",yytext[0]); plastc(); }
+oothe                  |
+e[ei]the               {       printf("%c%cve", yytext[0], yytext[0]); }
+ooth                   |
+eeth                   {       printf("%c%cf", yytext[0], yytext[0]); }
+[aei]the               {       printf("%cvv",yytext[0]); plastc(); }
+th                             putchar('v');
+a[km]e{EW}             {       printf("i%ce",yytext[1]); eos(); }
+[^r][Oo]ld                     printf("%.2swld",yytext);
+[^AaEeIiOoUu][uo]nd[a-z]       printf("%cunn%c",yytext[0],yytext[yyleng-1]);
+ing{EW}                        {       printf("in'"); eos(); }
+[^dg]get+[^h]                  printf("%cge'%c",yytext[0],yytext[yyleng-1]);
+ail                            printf("aiw");
+any                            printf("enny");
+[rSs]ay{EW}            {       printf("%cigh",yytext[0]); eos(); }
+way                            printf("why");
+[BbHh]it{EW}           {       printf("%ci'",yytext[0]); eos(); }
+ait{EW}                        {       printf("ite"); eos(); }
+ime{EW}                        {       printf("oime"); eos(); }
+[^e]ize[^n]                    printf("%coize%c",yytext[0],yytext[yyleng-1]);
+[^e]ight                       printf("%coit",*yytext);
+[a-z]"?"               {       *(yytext+1) = ',';
+                               printf("%s roit?",yytext);
+                               clear_did();
+                       }
+[a-z]"."               {       printf("%c", yytext[0]); dintI(); }
+\n                             printf("\n");
+
+%%
+
+eos()
+{
+    if (yytext[yyleng-1] == '.')
+       dintI();
+    else
+       unput(yytext[yyleng-1]);
+}
+
+plastc()
+{
+    unput(yytext[yyleng-1]);
+}
+
+caseify(c)
+char c;
+{
+    if (yytext[0] <= 'Z')
+       return (c - ' ');
+    else
+       return (c);
+}
+
+
+I()
+{
+/*    extern long random(); */
+
+    if (random() % 100 < 20)
+       printf("%cOy",yytext[0]);
+    else
+       printf("%cI",yytext[0]);
+}
+
+static short b_count = 0;
+static short b_which = 0;
+
+bloody()
+{
+       if (b_count++ % 2 == 0) {
+               switch (b_which++ % 4) {
+                       case 0: printf("bloody "); break;
+                       case 1: printf("flinkin' "); break;
+                       case 2: printf("bleedin' "); break;
+                       case 3: printf("soddin' "); break;
+                       }
+               }
+}
+
+static short did = 0;
+
+set_did(val)
+{
+    did = val;
+}
+
+clear_did()
+{
+    did = 0;
+}
+
+dintI()
+{
+/*    extern long random(); */
+
+    if ((did == 1) && (random() % 100 < 50))
+       printf(", didn'I?");
+    else if ((did == 2) && (random() % 100 < 50))
+       printf(", din't we?");
+    else
+       printf(".");
+    clear_did();
+}
+
+pooped()
+{
+/*    extern long random(); */
+
+    switch (random() % 3) {
+       case 0:
+           printf("%cknackered", yytext[0]);
+           break;
+       case 1:
+           printf("%cshagged out", yytext[0]);
+           break;
+       case 2:
+           printf("%cdone in", yytext[0]);
+           break;
+       }
+}
+
+expletive()
+{
+/*
+Blimey
+Stright a light
+'Strewth
+Cor blimey
+*/
+}
index 154e8c42543da9ce1aafadf0096f53629f61bd26..07823de05699ad58f0936f138efca5274c0bffbb 100644 (file)
@@ -1,3 +1,10 @@
+filters (2.13) unstable; urgency=low
+
+  * cockney, jive, and nyc filters are now GPL'd, moved from -nonfree
+    package.
+
+ -- Joey Hess <joeyh@debian.org>  Wed, 22 Nov 2000 19:04:08 -0800
+
 filters (2.12) unstable; urgency=low
 
   * Use debhelper v2.
 filters (2.12) unstable; urgency=low
 
   * Use debhelper v2.
index e8e411872cfd32226c1b2163abee8d88b5d60832..6e02ba4921212fb2bd9c2bad4b248bc39e8d8e60 100644 (file)
@@ -7,6 +7,7 @@ Standards-Version: 3.2.1.0
 
 Package: filters
 Architecture: any
 
 Package: filters
 Architecture: any
+Conflicts: filters-nonfree (<< 2.4)
 Depends: ${shlibs:Depends}
 Description: a collection of filters, including B1FF and the swedish chef
  A collection of filters to do all sorts of strange things to text.
 Depends: ${shlibs:Depends}
 Description: a collection of filters, including B1FF and the swedish chef
  A collection of filters to do all sorts of strange things to text.
index 0a7ccdeee0dbdea15176bb8e1433d657ab30afbf..ed43db7391627ad7bf259ddaa880a7df3b450276 100644 (file)
@@ -6,14 +6,31 @@ This package was put together and debianized by Joey Hess
        ftp://ftp.funet.fi/pub/misc/old-hsu-archive/unsorted/2/kraut.shar.gz
 
 The jethro filter has this copyright:
        ftp://ftp.funet.fi/pub/misc/old-hsu-archive/unsorted/2/kraut.shar.gz
 
 The jethro filter has this copyright:
- **   Public domain. Use at your own risk. Y'all come back now, heah?
 **   Public domain. Use at your own risk. Y'all come back now, heah?
 
 The kraut filter has this copyright:
 
 The kraut filter has this copyright:
-/* Kraut v0.9  */
-/*     by      */
-/* John Sparks */
-/*  5-5-1989   */
+  /* Kraut v0.9  */
+  /*     by      */
+  /* John Sparks */
+  /*  5-5-1989   */
 
 
-/* This is in the public domain. Do with it as you will. *\
+  /* This is in the public domain. Do with it as you will. *\
+
+The cockney, jive, and nyc filters are copyright under the GPL by Daniel V
+Klein. He confirmed the new copyright in this email:
+
+  From: Daniel V Klein <dvk@lonewolf.com>
+  Date: Wed, 22 Nov 2000 22:00:50 -0500
+  To: Joey Hess <joey@kitenet.net>
+  Subject: Re: filters GPL'd 
+  
+  That is so.  Have fun (FWIW, I have done some rewriting on them - they are
+  now in Perl, but still need some work...)
+  
+  -Dan
+  
+  > I've been told that you have changed the copyright of the cockney, jive
+  > and nyc filters to the GPL? Is that correct? I'd love to move them into
+  > Debian proper.
 
 Everything else is copyright 1999 by Joey Hess, under the terms of GPL.
 
 Everything else is copyright 1999 by Joey Hess, under the terms of GPL.
index 105bc7a72c5a970380b6f6679c61d60b9dcb7826..fcb8211486da5c7512a2b6816970a86b211c19db 100644 (file)
--- a/filters.6
+++ b/filters.6
@@ -1,32 +1,40 @@
 .TH FILTERS 6
 .SH NAME
 .TH FILTERS 6
 .SH NAME
-b1ff, eleet, chef, jethro, jibberish, kraut, upside-down \- assorted text filters
+b1ff, chef, cockney, eleet, jethro, jibberish, jive, kraut, nyc, upside-down \- assorted text filters
 .SH SYNOPSIS
  $SHELL | chef
 .SH "DESCRIPTION"
 All of these programs are filters to do all sorts of strange things to text.
 No racial or societal slurs are intended. For amusement only.
 .P
 .SH SYNOPSIS
  $SHELL | chef
 .SH "DESCRIPTION"
 All of these programs are filters to do all sorts of strange things to text.
 No racial or societal slurs are intended. For amusement only.
 .P
-All the filters read input from stdin, change it, and write the filtered      
+All the filters read input from stdin, change it, and write the filtered
 text to stdout.
 .IP b1ff
 The B1FF filter
 text to stdout.
 .IP b1ff
 The B1FF filter
+.IP cockney
+Cockney English
 .IP chef
 convert English on stdin to Mock Swedish on stdout
 .IP jethro
 Hillbilly text filter
 .IP chef
 convert English on stdin to Mock Swedish on stdout
 .IP jethro
 Hillbilly text filter
+.IP jive
+Jive English
 .IP jibberish
 Runs text through all the rest of the filters, to make really weird output.
 .IP eleet
 K3wl hacker slang
 .IP kraut
 Generates text with a German accent.
 .IP jibberish
 Runs text through all the rest of the filters, to make really weird output.
 .IP eleet
 K3wl hacker slang
 .IP kraut
 Generates text with a German accent.
+.IP nyc
+Brooklyn English
 .IP upside-down
 Flips text upside down. Stand on your head and squint to read the output.
 .SH "SEE ALSO"
 .IP /usr/share/doc/filters/SAMPLES
 Lists samples of the output of all the filters.
 .SH AUTHOR
 .IP upside-down
 Flips text upside down. Stand on your head and squint to read the output.
 .SH "SEE ALSO"
 .IP /usr/share/doc/filters/SAMPLES
 Lists samples of the output of all the filters.
 .SH AUTHOR
-The filters were written by Joey Hess <joey@kitenet.net>, except jibberish,
-which is by Raul Miller <rdm@test.legislate.com>, hethro, which is by Duane
-Paulson <ci922@cleveland.freenet.edu>, and kraut, by John Sparks.
+The eleet, upside-down, chef, and b1ff filters were written by Joey
+Hess <joey@kitenet.net>. Daniel V Klein <dvk@lonewolf.com> wrote the
+cockney, jive, and nyc filters. jibberish is by Raul Miller
+<rdm@test.legislate.com>, jethro is by Duane Paulson
+<ci922@cleveland.freenet.edu>, and kraut is authored by John Sparks.
index ad2743a25a57d4047fb7a58ca47faaec16e25879..5e9590cf9efc1529d79b7db818d3c75e399a7906 100644 (file)
--- a/jibberish
+++ b/jibberish
@@ -4,29 +4,29 @@
 $ENV{PATH}.=":/usr/games";
 
 @all= qw(
 $ENV{PATH}.=":/usr/games";
 
 @all= qw(
+eleet
+b1ff
+chef
+jethro
+upside-down
+kraut
+cockney
 jive
 jive
-valspeak
 nyc
 nyc
-cockney
-fin
-biffa
-ken
-aust
-drawl
-kraut
+);
+
+@nonfree= qw(
+kyoote
 newspeak
 newspeak
-chef
-marc-barrett
-censor
-fudd
-moo
-buck
-jethro
-b1ff
-eleet
-ky00te
 );
 
 );
 
+# Test to see if non-free filters are here, if so, add them to @all.
+foreach (@nonfree) {
+       if (-x "/usr/games/$_") {
+               push @all, $_;
+       }
+}
+
 # shuffle order
 srand;
 for (0..$#all) {
 # shuffle order
 srand;
 for (0..$#all) {
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
+ */
diff --git a/nyc.l b/nyc.l
new file mode 100644 (file)
index 0000000..8505c16
--- /dev/null
+++ b/nyc.l
@@ -0,0 +1,97 @@
+%{
+/*
+ *     Lex filter to transform plain English into Brooklyn English.
+ *     No racial or societal slurs are intended.  For amusement only.
+ *
+ *     Copyright 1986 by Daniel Klein.
+ *
+ *     Reproduction permitted so long as this notice is retained.
+ */
+%}
+BW [ \t]
+SP [ \t]
+EW [ \t.,;!\?$]
+%%
+".so ".*$                      printf("%s", yytext);
+[ao]ther                       printf("%cdder", yytext[0]=='a'?'a':'u');
+[Nn]othing                     printf("%cuttin'", yytext[0]);
+[Tt]hin                                printf("%cin", yytext[0]);
+[Tt]hir                                printf("%coi", yytext[0]);
+[Tt]h[ei]                      printf("%c%c", caseify('d'), yytext[yyleng-1]);
+[Tt]hat                                printf("%cat", caseify('d'));
+I'm{SP}going{SP}to             printf("I'manna");
+going{SP}to                    printf("gonna");
+want{SP}to                     printf("wanna");
+t{SP}you                       printf("tcha");
+[Dd]id{SP}you{SP}[eaiou]       printf("%c'j%c", yytext[0], yytext[yyleng-1]);
+[Dd]id{SP}you                  printf("%c'ja", yytext[0]);
+[Yy]ou                         printf("%cuh", yytext[0]);
+[Hh]ow{SP}are{SP}you           printf("%cowahrya", yytext[0]);
+[Ww]ith                                printf("%cit'", yytext[0]);
+[Dd]on't                       printf("%coan", yytext[0]);
+ldn't                  |
+dn't                           printf("n't");
+isn't                          printf("ain't");
+er{EW}                 {       printf("uh"); plastc(); }
+ing{EW}                        {       printf("in'"); plastc(); }
+[Ww]ord                        |
+[Hh]eard               |
+[BbGgLlPpSs]urg                |
+[CcHh][eu]r[ntv]               printf("%coi%c", yytext[0], yytext[yyleng-1]);
+[^Mm]mer[^aeiouhrs]            printf("%cmoi%c", yytext[0], yytext[yyleng-1]);
+[Oo]re{EW}             {       printf("%cwh", caseify('a')); plastc(); }
+[Oo]r                          printf("%cwh", caseify('a'));
+[Oo]f                          printf("%chv", caseify('u'));
+tion                           printf("shun");
+alk                    |
+our[st]                        |
+or[st]                         printf("awh%c", yytext[yyleng-1]);
+ause                           printf("awze");
+[Oo]ff                         printf("%cwhf", caseify('a'));
+[Ss]tupid                      printf("%ctoopid", yytext[0]);
+{BW}under                      printf(" unner");
+{BW}to{EW}             {       printf(" tuh"); plastc(); }
+[Aa]ctual                      printf("%cckshul", yytext[0]);
+negro                          printf("spade");
+[Pp]uerto{SP}[Rr]ican          printf("%cpic", caseify('s'));
+[Ii]talian                     printf("%creaser", caseify('g'));
+[Jj]ewish                      printf("%cew boy", yytext[0]);
+[Jj]ew                         printf("%cebe", caseify('h'));
+[a-z]":"               {       *(yytext+1) = ',';
+                               printf("%s like, uhh:",yytext);
+                       }
+[a-z]"?"               {       *(yytext+1) = ',';
+                               printf("%s or what?",yytext);
+                       }
+!                              printf("!  Okay?");
+[a-z]"."               {       printf("%s", yytext);expletive();}
+%%
+plastc()
+{
+       unput(yytext[yyleng-1]);
+}
+
+caseify(c)
+char c;
+{
+       if (yytext[0] <= 'Z')
+               return (c - ' ');
+       else
+               return (c);
+}
+
+short  count = 0;
+short  which = 0;
+
+expletive()
+{
+       if (count++ % 4 == 0) {
+               switch (which++ % 5) {
+                       case 0: printf("  Okay?"); break;
+                       case 1: printf("  Right?"); break;
+                       case 2: printf("  Yuh got me so fahr?"); break;
+                       case 3: printf("  Ya' dig?"); break;
+                       case 4: printf("  Yuh with me?"); break;
+                       }
+               }
+}
This page took 0.026774 seconds and 4 git commands to generate.