Initial revision
authorjoey <joey@a4a2c43b-8ac3-0310-8836-e0e880c912e2>
Sat, 11 Sep 1999 04:25:01 +0000 (04:25 +0000)
committerjoey <joey@a4a2c43b-8ac3-0310-8836-e0e880c912e2>
Sat, 11 Sep 1999 04:25:01 +0000 (04:25 +0000)
44 files changed:
Makefile [new file with mode: 0644]
README [new file with mode: 0644]
aust.l [new file with mode: 0644]
b1ff [new file with mode: 0755]
b1ff.l [new file with mode: 0644]
biffa.l [new file with mode: 0644]
buck.l [new file with mode: 0644]
censor.l [new file with mode: 0644]
chef [new file with mode: 0755]
chef.l [new file with mode: 0644]
cockney.l [new file with mode: 0644]
debian/TODO [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/config [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/rules [new file with mode: 0755]
drawl.l [new file with mode: 0644]
eleet [new file with mode: 0755]
eleet.l [new file with mode: 0644]
filters.6 [new file with mode: 0644]
fin.l [new file with mode: 0644]
fudd.l [new file with mode: 0644]
jethro.l [new file with mode: 0644]
jibberish [new file with mode: 0644]
jive.l [new file with mode: 0644]
ken.l [new file with mode: 0644]
kraut.dir/destructions [new file with mode: 0644]
kraut.dir/kraut.c [new file with mode: 0644]
kraut.dir/kraut.l [new file with mode: 0644]
kraut.dir/lex.yy.c [new file with mode: 0644]
kraut.l [new file with mode: 0644]
ky00te.dir/README.ky00te [new file with mode: 0644]
ky00te.dir/ky00te.lex [new file with mode: 0644]
ky00te.dir/ky00te.yacc [new file with mode: 0644]
ky00te.dir/makefile [new file with mode: 0644]
makesample.sh [new file with mode: 0644]
marc-barrett.l [new file with mode: 0644]
mb.l [new file with mode: 0644]
moo.l [new file with mode: 0644]
newspeak.l [new file with mode: 0644]
nyc.l [new file with mode: 0644]
upside-down [new file with mode: 0755]
valspeak.l [new file with mode: 0644]

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..7600f97
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,39 @@
+# Various dialect translators.
+
+LEX     = flex
+
+ALL     = jive valspeak nyc cockney fin biffa ken aust drawl \
+               kraut newspeak chef mb censor fudd moo buck \
+               jethro b1ff
+OTHER   = ky00te
+
+all:   $(OTHER) $(ALL)
+
+install:       $(ALL) $(OTHER)
+       install -d $(PREFIX)/usr/games
+       install -s $(ALL) $(OTHER) $(PREFIX)/usr/games/
+       install -d $(PREFIX)/usr/man/man6
+       install -m 0644 filters.6 $(PREFIX)/usr/man/man6
+       cd $(PREFIX)/usr/man/man6 && \
+               $(foreach prog,$(ALL) $(OTHER),ln -s filters.6 $(prog).6;)
+
+samples:       $(ALL) $(OTHER)
+       echo $(ALL) $(OTHER) |xargs -n 1 sh makesample.sh
+
+clean:
+       $(RM) -f core *.o *~ $(ALL) *.c SAMPLES
+       cd ky00te.dir; make clean       
+
+.SUFFIXES: .l
+
+.l:
+       $(RM) $*.c
+       $(LEX) -t $< > $*.c
+       $(CC) -O -o $@ $*.c -lfl -g
+#      strip $@
+       $(RM) $*.c
+
+.SUFFIXES: .dir
+
+.dir:  
+       cd $<; make
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..f5a71ad
--- /dev/null
+++ b/README
@@ -0,0 +1,39 @@
+This is a collection of filters from various places, including:
+
+http://www.princeton.edu/~mkporwit/pub_links/davido/slang/
+
+http://www.mathlab.sunysb.edu/~elijah/src.html
+
+Collected by Joey Hess <joey@kite.ml.org>
+
+
+Note that the Makefile will get the filters to compile on Linux systems. 
+Otherwise, you're on your own.
+
+
+Descriptions of the filters:
+
+aust:          Australian
+b1ff:          The B1FF filter
+biffa:         ??
+buck:          The buckwheat filter
+censor:                [CENSORED]
+chef:          convert English on stdin to Mock Swedish on stdout
+cockney:       Cockney English
+drawl:         English to Texan translator
+fin:           ??
+fudd:          Elmer Fudd
+jethro:                Hillbilly text filter
+jive:          Jive English
+ken:           English into Cockney, featuring (dubious) rhyming 
+               slang for a lot of computer terminology.
+kraut:         German
+mb:            Marc Barrett posting translator
+moo:           The cow filter
+newspeak:      As in 1984
+nyc:           Brooklyn English
+valspeak:      ??
+ky00te:                This program places a very cute (and familiar to FurryMuck
+               fans) accent to any text file.
+
+No racial or societal slurs are intended.  For amusement only.
diff --git a/aust.l b/aust.l
new file mode 100644 (file)
index 0000000..39313ae
--- /dev/null
+++ b/aust.l
@@ -0,0 +1,171 @@
+%e 3000
+%p 8000
+%n 2000
+%k 2000
+%a 3000
+%o 2000
+BW [   ]
+EW [   .,:;!?_]
+ES [.:;!?]
+VO [aeiouy]
+CO [bcdfghjklmnpqrstvwxz]
+CC [cdfgjklmnprtz]
+SC [cg]
+HC [bdfhjklmnpqrstvwxz]
+ST [pbtdkg]
+LE [a-zA-Z]
+
+%{
+
+       /* English to australian translator */
+
+       /* to build with standard at&t lex
+        *   lex aust.l
+        *   cc lex.yy.c -ll -o aust
+        *
+        * to build with flex
+        *   flex -I aust.l
+        *   cc lex.yy.c -o aust
+        *
+        * (flex is a pd version of lex that runs under Unix, VMS and MSDOS.)
+        */
+
+       /* 16Jan90 - wb - first version, based on biffa.l by
+        *                      Stephen K Mulrine <smulrine@cs.strath.ac.uk> */
+       /* 30Jan90 - wb - added more words */
+       /* 16Feb90 - wb - converted from jive to aust */
+       /* 12Mar90 - wb - added some randomness */
+
+
+       /* BW = begin word */
+       /* EW = end word */
+       /* ES = end sentence */
+       /* VO = vowel */
+       /* CO = consonant */
+       /* CC = end of consonant cluster */
+       /* SC = soft consonant (need an 'e') */
+       /* HC = hard consonant (does not need an 'e') */
+       /* ST = stop */
+       /* LE = any letter */
+
+bloody(n)
+int n;
+{
+       if (n == 0 || rand() < n)
+               printf((rand() < 20000)? "bloody ": "bleedin' ");
+}
+
+say(msg, n)
+char *msg;
+int n;
+{
+       if (rand() < n)
+               printf("%s", msg);
+}
+
+oi(n)
+int n;
+{
+       say(" Blimey!", n);
+       while (rand() < n)
+               printf(" OI!");
+}
+
+
+%}
+
+%%
+"That is"              |
+"That's"               printf("Thaz");
+"that is"              |
+"that's"               printf("thaz");
+bathroom               |
+toilet                 printf("loo");
+{BW}john{EW}           printf("%cloo%c", yytext[0], yytext[5]);
+[Aa]lright             printf("%clrighty", yytext[0]);
+{BW}mad{EW}            printf("%cpissed%c", yytext[0], yytext[4]);
+angry                  |
+annoyed                        printf("pissed");
+drunk                  printf("loaded");
+drank                  printf("swilled");
+drink                  printf("swill");
+{BW}beer               printf("%cFoster's", yytext[0]); /* Australian for beer, mate */
+"ught to"              printf("ughta");
+{BW}train              printf("%cland train", yytext[0]);
+ough{EW}               printf("o%c", yytext[4]);
+Hello{EW}              |
+"Good day"{EW}         printf("G'day!");
+hello{EW}              |
+"good day"{EW}         printf("g'day!");
+"in Austrailia"                |
+"to Austrailia"                printf("down under");
+{BW}bit{EW}            printf("%ctad%c", yytext[0], yytext[4]);
+
+{CO}{CC}{EW}           printf("%c'%c", yytext[0], yytext[2]);
+{CO}{CC}ed{EW}         printf("%c%s", yytext[0], yytext+2);
+of{EW}                 printf("o'%c", yytext[2]);
+
+Some{BW}one            |
+Someone                        |
+Guy                    printf("Dude");
+some{BW}one            |
+someone                        |
+guy                    printf("dude");
+
+[Ww]ha                 printf("%co", yytext[0]);
+{BW}esp                        printf("'sp");
+{BW}Esp                        printf("'Sp");
+
+{BW}h{LE}              printf("%c'%c", yytext[0], yytext[2]);
+off{BW}of              printf("offa");
+
+[Yy]our                        printf("%cer", yytext[0]);
+you{EW}                        printf("ya%c", yytext[3]);
+my                     printf("me");
+
+{CO}[ai]{SC}e          printf("%coi%ce", yytext[0], yytext[2]);
+{CO}[ai]{HC}e          printf("%coi%c", yytext[0], yytext[2]);
+{CO}[ai]{CO}[aiouy]    printf("%coi%c%c", yytext[0], yytext[2], yytext[3]);
+r[ai]{CO}{CO}          printf("%coi%c%c", yytext[0], yytext[2], yytext[3]);
+{CO}igh{LE}            printf("%coi%c", yytext[0], yytext[4]);
+extremely              |
+really                 |
+very                   printf("roit");
+Extremely              |
+Really                 |
+Very                   printf("Roit");
+that                   printf("wot");
+Well                   printf("Welp");
+baseball               |
+football               |
+hockey                 printf("cricket");
+{VO}th({EW}|{VO})      printf("%ct%c", yytext[0], yytext[3]);
+Who                    printf("Oo");
+{BW}who                        printf("%c'oo", yytext[0]);
+{LE}{CO}er{EW}         printf("%c%ca%c", yytext[0], yytext[1], yytext[4]);
+{VO}{CO}e{BW}to                printf("%c%ceda", yytext[0], yytext[1]);
+{VO}{CO}{BW}to         printf("%c%c%ca", yytext[0], yytext[1], yytext[1]);
+{BW}[Bb]e{CO}{LE}      printf("%c'%s", yytext[0], yytext+3);
+{BW}[Aa]{CO}{LE}       printf("%c'%s", yytext[0], yytext+2);
+{BW}[Oo]ne?            printf("%c'un", yytext[0]);
+
+{LE}\,                 {ECHO; say(" moit,", 10000);}
+{BW}an?{EW}            {if(rand()<12000){printf(" a ");bloody(0);}else printf("%s",yytext);}
+An?{EW}                        {if(rand()<12000){printf("A ");bloody(0);}else printf("%s",yytext);}
+(T|({BW}t))he{EW}      |
+(T|({BW}t))hose{EW}    {ECHO; bloody(12000);}
+
+\!|\?                  {say(", moit", 6000); ECHO; oi(12000);}
+\.                     {say(", moit", 2000); ECHO; oi(6000);}
+
+{BW}-*[0-9]+" "*("degrees"|([Ff]{LE}*)){EW}    {printf("%c%dc%c",*yytext,((atoi(yytext+1)-24)/9)*5,yytext[strlen(yytext)-1]);}
+
+.                      printf("%s", yytext);
+\n                     printf("\n");
+
+%%
+main()
+{
+       yylex();
+}
+
diff --git a/b1ff b/b1ff
new file mode 100755 (executable)
index 0000000..f958c0f
--- /dev/null
+++ b/b1ff
@@ -0,0 +1,117 @@
+#!/usr/bin/perl -p
+# B1FF filter.
+# Copyright 1999 by Joey Hess under the terms of the GNU GPL.
+
+# I use an array, not a hash. because order is important.
+@trans_table=(
+       '\bEVERYONE\b' => 'EVRY 1',
+       '\bEVERYBODY\b' => 'EVRY BUDY',
+       '\bEVERY\b' => 'EVRY',
+       '\bONE\b' => '1',
+       '\bAND\b' => '+',
+       '\bYOU' => 'U',
+       '\bITS\b' => 'IT"S',
+       '\bIT\'S\b' => 'ITS',
+       '\bIS\b' => 'IZ',
+       '\bLINUX\b' => 'LINUS',
+       '\bUNIX\b' => 'THE MANEFRA1M O/S',
+       '\bWINDOWS\b' => 'WINDOWZ (IT RULEZ MAN!)',
+       '\bYOU\'RE\b' => 'YOUR',
+       '\bTHEM\b' => 'THUM',
+       '\bHERE\b' => 'HERE',
+       '\bTHEY\'RE\b' => 'THE1R',
+       '\bTHEIR\b' => 'THERE',
+       '\bWAS\b' => 'WUZ',
+       '\bMACINTOSH\b' => 'IMAC', # too 90's?
+       '\bVERY\b' => 'TOTALLY',
+       '\bCOMPUTER\b' => 'VIC-20',
+       '\bWHETHER\b' => 'WHETHUR',
+       '\b(?:H|CR)ACKER\b' => 'KEWL HACKER D00D!',
+       '\bOF\b' => 'UV',
+       '\bGNU\b' => 'NEW',
+       '\bQUITE\b' => 'REAL',
+       '\bFREE\b' => 'FREE!',
+
+       'HOME' => 'HUM',
+       'COME' => 'CUM',
+       'MICRO' => 'MIKRO',
+       'GOVERN' => 'GUVERN',
+       'PERSON' => 'D00D',
+       'SOME' => 'SUM',
+       'WRITE' => 'RITE',
+       'REAL' => 'REEL',
+       'LITE' => 'L1TE',
+       'BIAN' => 'B1AN',
+       'TION' => 'SHUN',
+       'FOR' => '4',
+       'TO' => '2',
+       'ATE' => '8',
+       '\b2TALLY\b' => 'TOTALY', # fix from line above
+       'LL' => 'L',
+       'OO' => '00',
+       'MATE' => 'M8',
+       'ER' => 'UR',
+       'S+\b' => 'Z',
+       'KN' => 'N',
+);
+
+$_=uc;
+s/;/,/g;
+s/'//g;
+
+while (@trans_table) {
+       $key=shift @trans_table;
+       $value=shift @trans_table;
+       s/$key/$value/g;
+}
+
+s/(\!+)/$1.make_exclimation()/eg;
+s/(\?+)/$1.make_question()/eg;
+s/I/rand 3 > 2 ? '1' : 'I'/eg; # change 1/3 of I's to 1's
+
+@punct=('.','!',',');
+
+s/\.  /. /g;
+s/\./$punct[int(rand 3)]/eg;
+s/\,/./g;
+
+
+# b1ff can't hold down on shift too well!!!!!!!1!
+sub make_exclimation {
+       my $length=shift || int(rand 5);
+       my $ret='!';
+       my $last=0;
+       for (1..$length) {
+               if (! $last && int(rand 3) eq 2) {
+                       $ret.="1";
+                       $last=1;
+               }
+               else {
+                       $ret.="!";
+                       $last=0;
+               }
+       }
+       return $ret;
+}
+
+# ask questions excitedly?!?!?!?!
+sub make_question {
+       my $length=shift || int(rand 5) + 1;
+       my $ret='';
+       my $last=0;
+       while (length($ret) < $length) {
+               if (! $last && int(rand 5) > 2) {
+                       $ret.="?!";
+                       $last=1;
+               }
+               elsif (! $last && int(rand 5) > 3) {
+                       $ret.="?1";
+                       $last=1;
+               }
+               else {
+                       $ret.="?";
+                       $last=0;
+               }
+       }
+       return $ret;
+}
diff --git a/b1ff.l b/b1ff.l
new file mode 100644 (file)
index 0000000..40637b6
--- /dev/null
+++ b/b1ff.l
@@ -0,0 +1,302 @@
+
+%e 2000
+%p 5000
+%n 1000
+%k 500
+%a 4000
+%o 2000
+BW [   ]
+EW [   .,;!?]
+
+%{
+
+/*
+ * The B1FF filter.
+ *
+ * Modification History
+ *
+ * -  Created Sat Feb 26 04:02:01 EST 1994 by Dave Baggett <dmb@ai.mit.edu>,
+ *    who obviously had too much time on his hands.  Based on the earlier
+ *    "jive" filter of unknown origin.
+ *
+ * -------------------------------------------------------------------------
+ * To build the B1FF filter, do the following:
+ *
+ *     lex biff.l
+ *     cc -o biff lex.yy.c -ll
+ *     rm lex.yy.c
+ *
+ * Optionally replace lex and cc above with flex and gcc.
+ *
+ * To use the executable, pipe stuff to it; e.g.,
+ *
+ *     cat foo | biff
+ *
+ */
+char buf[128];
+int count = 0;
+char WhAt[]="@(#)DAVE BAGGETT-S B1FF!!1 FlLTER + A CHANGE OR 2 BYE BGRIFFIN\n@(#)$Header: b1ff.l,v 1.4 94/05/07 20:42:53 bgriffin Final $";
+
+%}
+
+%%
+
+" and "                                printf(" + ");
+" plus "                       printf(" + ");
+"you're"                       printf("YOUR");
+your                           printf("UR");
+"it's"                         printf("1TZ");
+its                            printf("1T'Z");
+here                           printf("HEAR");
+hear                           printf("HERE");
+"they're"                      printf("THE1R");
+their                          printf("THERE");
+there                          printf("THEY'RE");
+was                            printf("WUZ");
+etc                            printf("U GET THE 1DEA");
+e[.]g[.]                       printf("LAIK THIS");
+i[.]e[.]                       printf("U NOE LAIK");
+" are "                                printf(" R ");
+"be "                          printf("B ");
+before                         printf("B4");
+" to "                         printf(" 2 ");
+this                           printf("TH1S");
+like                           printf("LA1K");
+total                          printf("TODAL");
+"and I"                                printf("+ ME");
+
+good                           printf("K00L");
+okay                           printf("C00L");
+ok                             printf("K00L");
+interesting                    printf("C00L");
+neat                           printf("Q00L");
+nifty                          printf("Q00L");
+useful                         printf("K00L");
+great                          printf("RAD");
+functional                     printf("RAD");
+excellent                      printf("X-L-ENT");
+very                           printf("TOTALLY");
+quite                          printf("REAL");
+really                         printf("REAL");
+new                            printf("NU");
+recent                         printf("RAD NU");
+
+result                         printf("TH1NG");
+ramification                   printf("TH1NG");
+reason                         printf("TH1NG");
+conclusion                     printf("TH1NG");
+results                                printf("STUFF");
+ramifications                  printf("STUFF");
+reasons                                printf("STUFF");
+conclusions                    printf("STUFF");
+
+files                          printf("WAREZ");
+program                                printf("GAME");
+programs                       printf("WAREZ");
+game                           printf("KRACKED GAME");
+games                          printf("GAMEZ");
+[Uu][Nn][Ii][Xx]               printf("THE MANEFRA1M O/S");
+[Dd][Oo][Ss]                   printf("THE VIC-20 TAPE DRIVE SCR1PTER");
+disk                           printf("TAPE");
+computer                       printf("VIC-20");
+workstation                    printf("MANEFRA1M");
+supercomputer                  printf("MANEFRAM");
+[Cc]ray                                printf("K1CKASS MANEFRA1M");
+"Connection Machine"           printf("TODALY RAD KOMPUTUR BRANE");
+machine                                printf("VIC-20");
+[Aa][Tt][Aa][Rr][Ii]           printf("PEACE UV SH1T ATAR1");
+[Aa][Pp][Pp][Ll][Ee]           printf("PEACE UV SH1T APPEL");
+[Aa][Mm][Ii][Gg][Aa]           printf("WORKSTASHUN");
+[Mm]acintosh                   printf("MACK1NTRASH");
+upload                         printf("U/L");
+download                       printf("D/L");
+load                           printf("U/L");
+save                           printf("D/L");
+send                           printf("U/L");
+receive                                printf("D/L");
+ftp                            printf("XMODEM");
+buy                            printf("D-L");
+
+[Pp]ascal                      printf("THAT WUSSY LANGUAGE");
+[Mm]odula.[23]                 printf("THAT WUSSY SH1T LANGUAGE");
+[Ll]isp                                printf("THAT KOMPUTUR BRANE LANGUAGE");
+[Ss]cheme                      printf("THAT TODAL NURD LANGUAGE");
+[Aa]da                         printf("THAT K00L NU ARMY LANGUAGE");
+[Pp]ost[Ss]cript               printf("PRINTUR KODEZ");
+[Aa]ssembly                    printf("CPU KODE");
+[Aa]ssembler                   printf("CPU KODE");
+
+newsgroup                      printf("MESSAGE BASE");
+news                           printf("MESSAGES");
+thread                         printf("BOARD");
+[Uu]senet                      printf("THE MANEFRAIM BOARDZ");
+[Nn]et[Nn]ews                  printf("THE BOARDZ");
+
+fool                           printf("LUZER");
+moron                          printf("LAMER");
+idiot                          printf("LAMER");
+jerk                           printf("HOZER");
+dweeb                          printf("LUZER");
+geek                           printf("HOZER");
+nerd                           printf("LUZER");
+
+" man "                        printf(" D00D ");
+" men "                                printf(" D00DZ ");
+woman                          printf("BABE");
+women                          printf("BABEZ");
+wife                           printf("BABE");
+husband                                printf("LOVERD00D");
+girlfriend                     printf("PEACE");
+boyfriend                      printf("STUD");
+girl                           printf("TODAL BABE");
+person                         printf("D00D");
+people                         printf("D00DZ");
+friend                         printf("FRE1ND");
+
+sure                           printf("SHUR");
+"got to"                       printf("GOTTA");
+"want to"                      printf("WANNA");
+"have to"                      printf("HAFTA");
+have                           printf("GOT");
+
+"using"                                printf("UZE1NG");
+
+" car "                        printf(" WHEELS ");
+" eat "                                printf(" NARF ");
+
+police                         printf("P1GZ");
+from                           printf("FRUM");
+
+human                          printf("D00D");
+occasionally                   printf("SUMTIMZ");
+whom                           printf("WHO");
+whose                          printf("WHO'S");
+who's                          printf("WHOSE");
+"who is"                       printf("WHOSE");
+"ought to"                     printf("OTTA");
+"need to"                      printf("GOTTA");
+"should"                       printf("OTTA");
+"tonight"                      printf("2NITE");
+together                       printf("2GETHR");
+tomorrow                       printf("2MOROW");
+today                          printf("LAST NITE");
+to-day                         printf("2DAY");
+" food "                       printf(" PIZZA ");
+coke                           printf("MOUNTIN DOO");
+pepsi                          printf("MOUNTIN DOO");
+caffeine                       printf("COKE");
+coffee                         printf("SPEED");
+[Nn]yquil                      printf("SMACK");
+night                          printf("NITE");
+
+" believe"                     printf(" TH1NK");
+phone                          printf("FONE");
+freak                          printf("PHREAK");
+[Kk][Ii*-][Bb][Oo*-]           printf("THE FONT GUY");
+[nN]et[htw][ar][cer][ke]       { /* nethack nettrek netware */
+                                 printf("PACMAN"); }
+chess                          printf("PONG");
+[Ss]"treet "[Ff]ighter         printf("POLL POSIT1ON");
+
+amateur                                printf("LAMER");
+" of "                         printf(" UV ");
+what                           printf("WUT");
+"meta "                                printf("ALT/CAPSLOCK ");
+
+"talk"                         printf("1NTERFACE");
+"sort of"                      printf("SORTA");
+"kind of"                      printf("K1NDA");
+magazine                       printf("ZINE");
+
+":^)"                          ;
+":-)"                          printf("HAHAHAHA!!1!1!1!!!1!!!");
+"8-)"                          printf("ITZA JOKE YA NOE");
+
+[dgmnr]"."             {       *(yytext+1) = 0;
+                               upcase(yytext);
+                               sprintf(buf, "%s!",yytext);
+                               printf(buf);
+                       }
+
+[efhkpst]"."           {       *(yytext+1) = 0;
+                               upcase(yytext);
+                               sprintf(buf, "%s,",yytext);
+                               printf(buf);
+                       }
+
+[bclw]"."              {       *(yytext+1) = 0;
+                               upcase(yytext);
+                               sprintf(buf, "%s...",yytext);
+                               printf(buf);
+                       }
+
+[a-e]"?"               { upcase(yytext); printf(yytext); printf("?"); }
+[f-j]"?"               { upcase(yytext); printf(yytext); printf("??"); }
+[k-o]"?"               { upcase(yytext); printf(yytext); printf("!?1?"); }
+[p-t]"?"               { upcase(yytext); printf(yytext); printf("!?1?!?"); }
+[u-z]"?"               { upcase(yytext); printf(yytext); printf("?1?!?1?!"); }
+[a-e]"!"               { upcase(yytext); printf(yytext); printf("!"); }
+[f-j]"!"               { upcase(yytext); printf(yytext); printf("!!"); }
+[k-o]"!"               { upcase(yytext); printf(yytext); printf("!1!"); }
+[p-t]"!"               { upcase(yytext); printf(yytext); printf("!!1!"); }
+[u-z]"!"               { upcase(yytext); printf(yytext); printf("!1!!1"); }
+";"                            printf(",");
+","                            printf(".");
+"'"                            ;
+[a-z]":"               {       *(yytext+1) = ',';
+                               upcase(yytext);
+                               sprintf(buf, "%s L1KE:",yytext);
+                               printf(buf);
+                       }
+[iI]           { count++; if (count % 3 == 0) printf("1"); else printf("I"); }
+oo                             printf("00");
+0                              printf("o");
+"s "                           printf("Z ");
+"s."                           printf("Z.");
+cr                             printf("KR");
+wr                             printf("R");
+ate                            printf("8");
+ait                            printf("8");
+ame                            printf("A1M");
+ain                            printf("ANE");
+ade                            printf("AID");
+four                           printf("4");
+fore                           printf("4");
+for                            printf("4");
+see                            printf("C");
+seeing                         printf("CN");
+you                            printf("U");
+ude                            printf("00D");
+ule                            printf("OOL");
+ome                            printf("UM");
+ose                            printf("UZE");
+tion                           printf("SHUN");
+mn                             printf("M");
+kn                             printf("N");
+er                             printf("UR");
+em                             printf("UM");
+ll                             printf("L");
+ware                           printf("WEAR");
+
+.                      { upcase(yytext); printf(yytext); }
+
+\n                     printf("\n");
+
+%%
+
+upcase(s)
+       char    *s;
+{
+       while (*s) {
+               if (islower(*s))
+                       *s = toupper(*s);
+               s++;
+       }
+}
+
+main()
+{
+       yylex();
+}
+
diff --git a/biffa.l b/biffa.l
new file mode 100644 (file)
index 0000000..e7dc80c
--- /dev/null
+++ b/biffa.l
@@ -0,0 +1,265 @@
+%e 3000
+%p 6000
+%n 1000
+%k 500
+%a 4000
+%o 2000
+BW [   ]
+EW [   .,;!?]
+
+%{
+       char buf[128];
+
+%}
+
+%%
+ead                    printf("eed");
+ote                    printf("urte");
+oad                    printf("urd");
+ode                    printf("urde");
+oke                    printf("urke");
+olk                    printf("urk");
+one                    printf("urn");
+al                     printf("aal");
+OK                     printf("aal reyt");
+"O.K."                 printf("all reyt");
+okay                   printf("aal reyt");
+Okay                   printf("Aal reyt");
+mother                 printf("mutha");
+mummy                  printf("mutha");
+ma{EW}                 printf("mutha ");
+father                 printf("fatha");
+dad                    printf("fatha");
+pa{EW}                 printf("fatha ");
+telephone              printf("furn");
+ph                     printf("f");
+and                    printf("un'");
+And                    printf("Un'");
+only                   printf("urnly");
+over                   printf("urva");
+will                   printf("'ll");
+"You are"              printf("Y'a fuckin'");
+"you are"              printf("y'a fuckin'");
+"I am"                 printf("A'm fuckin'");
+"I'm"                  printf("A'm fuckin'");
+Most                   printf("Murst");
+most                   printf("murst");
+murder                 printf("knack");
+shatter                        printf("knack");
+damage                 printf("knack");
+Murder                 printf("Knack");
+Shatter                        printf("Knack");
+Damage                 printf("Knack");
+"Oh yes?"              printf("Did yee spill wor pint?");
+[Cc]hinese             printf("Chinky");
+"no it isn't"          printf("Is it shite");
+"No it is not"         printf("Is it shite");
+"It is not"            printf("Is it fuck");
+"it is not"            printf("is it fuck");
+"It isn't"             printf("Is it fuck");
+"it isn't"             printf("is it fuck");
+idle                   printf("ardle");
+rubbish                        printf("gobshite");
+useless                        printf("shite");
+"no good"              printf("shite");
+shit                   printf("shite");
+muck                   printf("shite");
+mouth                  printf("gob");
+Mouth                  printf("Gob");
+someone                        printf("some fukka");
+Someone                        printf("Some fukka");
+anyone                 printf("any fukka");
+Anyone                 printf("Any fukka");
+nobody                 printf("neewun");
+Nobody                 printf("Neewun");
+noone                  printf("neewun");
+Noone                  printf("Neewun");
+"who is"               printf("who tha fuck's");
+"Who is"               printf("Who tha fuck's");
+"who are"              printf("who tha fuck'a'");
+"Who are"              printf("Who tha fuck'a'");
+"Why is"               printf("Why tha fuck's");
+"Why is"               printf("Why tha fuck's");
+"why are"              printf("why tha fuck'a'");
+"Why are"              printf("Why tha fuck'a'");
+"when is"              printf("when tha fuck's");
+"When is"              printf("When tha fuck's");
+"when are"             printf("when tha fuck'a'");
+"When are"             printf("When tha fuck'a'");
+tough                  printf("fuckin' hard");
+strong                 printf("fuckin' hard");
+"! "                   printf(", ya fuckin' puff! ");
+nothing                        printf("bugga aal");
+Nothing                        printf("Bugga aal");
+food                   printf("grub");
+Food                   printf("Grub");
+My                     printf("Ma fuckin'");
+Your                   printf("Y' fuckin'");
+Our                    printf("Wor fuckin'");
+throw                  printf("hoy");
+Throw                  printf("Hoy");
+lots                   printf("lurds");
+Lots                   printf("Lurds");
+" have"                        printf("'ve");
+Have                   printf("Hev");
+"don't"                        printf("divvn't");
+"Don't"                        printf("Divvn't");
+"isn't"                        printf("in't");
+"Isn't"                        printf("In't");
+."self "               printf("ssel ");
+girls                  printf("lasses");
+girl                   printf("lass");
+boy                    printf("lad");
+know                   printf("knaa");
+make                   printf("maak");
+take                   printf("tek");
+Take                   printf("Tek");
+tak                    printf("tek");
+th[eo]se               printf("them");
+broken                 printf("brerken");
+Broken                 printf("Brerken");
+broke                  printf("brerk");
+" tired"               printf(" fuckin' knackered");
+gives                  printf("giz");
+give                   printf("giz");
+Give                   printf("Giz");
+giv                    printf("gizz");
+gave                   printf("gav");
+TV                     printf("telly");
+[Ww]ill                        printf("'ll");
+[Ss]hall               printf("'ll");
+more                   printf("more fuckin'");
+than                   printf("than fuckin'");
+"can "                 printf("kin ");
+"Can "                 printf("Kin ");
+bad                    printf("bastaad");
+Bad                    printf("Bastaad");
+nasty                  printf("bastaad");
+good                   printf("magic");
+Good                   printf("Magic");
+great                  printf("magic");
+Great                  printf("Magic");
+human                  printf("yooman");
+woman                  printf("wumman");
+women                  printf("wummen");
+" man "                        printf(" bastaad ");
+football               printf("futbaal");
+all                    printf("aal");
+All                    printf("Aal");
+"the "                 printf("the fuckin' ");
+"what is"              printf("what the fuck is");
+"What is"              printf("What the fuck is");
+"what are"             printf("what the fuck are");
+"What are"             printf("What the fuck are");
+"The "                 printf("The fuckin' ");
+"That "                        printf("That fuckin' ");
+" any"                 printf(" onny fuckin'");
+poof                   printf("puff");
+homosexual             printf("puff");
+gay                    printf("puff");
+bisexual               printf("semi-puff");
+[Mm]iddlesbrough       printf("Boro");
+[Mm]iddlesborough      printf("Boro");
+[Gg]ateshead           printf("Gaatsed");
+[Nn]ewcastle           printf("Neecassl");
+"South Shields"                printf("Saath Sheels");
+[Ss]cotland            printf("Jock");
+[Ss]cotsman            printf("Jocko bastaad");
+[Ss]cottish            printf("Jock");
+[Ss]paniard            printf("Wop");
+[Ss]panish             printf("Wop");
+[Ii]talian             printf("Wop");
+[Ss]pain               printf("Wopland");
+[Ii]taly               printf("Wopland");
+them                   printf("'em");
+home                   printf("yem");
+" go "                 printf(" gaan ");
+going                  printf("gannin'");
+" gone "               printf(" went ");
+trousers               printf("kex");
+burnt                  printf("bornt");
+because                        printf("cos");
+Because                        printf("Cos");
+both                   printf("burth");
+Both                   printf("Burth");
+" yes "                        printf(" aye ");
+"Yes "                 printf("Aye ");
+" no "                 printf(" ney ");
+"No "                  printf("Ney ");
+"with "                        printf("wi' ");
+wrong                  printf("wrang");
+told                   printf("telt");
+"bit of a "            printf("birruva ");
+"bit of "              printf("birra ");
+"You're a"             printf("Yorra");
+"You are a"            printf("Yorra");
+"you're a"             printf("yorra");
+"you are a"            printf("yorra");
+"We are"               printf("Wur");
+" we are"              printf(" wur");
+"What a"               printf("Worra");
+"what a"               printf("worra");
+your                   printf("y'");
+"you're"               printf("yer");
+you                    printf("ya");
+" him"                 printf("'m");
+Your                   printf("Y'");
+"You're"               printf("Yer");
+You                    printf("Ya");
+" our"                 printf(" wur");
+"Our"                  printf("Wur");
+"I won't"              printf("Will Ah fuck");
+"I refuse to"          printf("Will Ah fuck");
+"I will not"           printf("Will Ah fuck");
+"I don't"              printf("Do Ah fuck");
+"I do not "            printf("Do Ah fuck ");
+"I didn't"             printf("Did Ah fuck");
+"I did not "           printf("Did Ah fuck ");
+"No."                  printf("Ney chance.");
+"No!"                  printf("Ney chance!");
+"I'"                   printf("Ah'");
+"I "                   printf("Ah ");
+" my"                  printf(" ma");
+" me "                 printf("'us ");
+"We "                  printf("Wu ");
+" we "                 printf(" wu ");
+"were "                        printf("wus ");
+"Were "                        printf("Wus ");
+bastard                        printf("bastaad");
+into                   printf("inter");
+" on "                 printf("'an ");
+" for "                        printf(" f' ");
+beer                   printf("brown");
+" of "                 printf(" a'");
+[Gg]erman              printf("Jorman");
+[Ss]wiss               printf("Jorman");
+[Au]strian             printf("Jorman");
+right                  printf("reyt");
+Right                  printf("Reyt");
+" to "                 printf(" ter ");
+" hit by "             printf(" chinned off ");
+" kill"                        printf(" fuck");
+" hitt"                        printf(" fuck");
+" hit "                        printf(" fucked ");
+" hit"                 printf(" fuck");
+breast                 printf("tit");
+bosom                  printf("tit");
+screwing               printf("shaggin'");
+Screwing               printf("Shaggin'");
+screw                  printf("shag");
+kick                   printf("fuck");
+Kick                   printf("Fuck");
+"ing "                 printf("in' ");
+ou                     printf("er");
+"? "                   printf(", ya bastaad? ");
+", sir"                        printf(", pal");
+", dear"               printf(", pet");
+[a-m]", "              {ECHO;printf("fuck, ");}
+[n-z]", "              {ECHO;printf("like, ");}
+.                      printf(yytext);
+\n                     printf("\n");
+%%
+main()
+{
+       yylex();
+}
diff --git a/buck.l b/buck.l
new file mode 100644 (file)
index 0000000..2568f2b
--- /dev/null
+++ b/buck.l
@@ -0,0 +1,85 @@
+%e 2000
+%p 5000
+%n 1000
+%k 500
+%a 4000
+%o 2000
+
+%{ 
+/*
+**
+** The buckwheat filter
+**     by Benjamin Elijah Griffin      29 March 1995
+**
+** A lex utility written as a favor for a friend. (He provided the
+** rules, I showed him how to make a lex filter out of them.)
+**
+** compile like this:
+**             lex buck.l
+**             cc -o buck lex.yy.c -ll
+**             rm lex.yy.c
+**
+** use like this:
+**             buck < infile > outfile
+**     or
+**             cat infile | <whatever> | buck | <whatever> > outfile
+**
+*/
+
+char WhAt[]="@(#)Benjamin Elijah Griffin's buck filter for buckwheat (c) 1995\n@(#)$Header:$"
+;
+
+%}
+
+%%
+
+okay                           printf("otay");
+Okay                           printf("Otay");
+the                            printf("da");
+The                            printf("Da");
+ing[   .,;!?]                  printf("in'%s",yytext+3);
+" for "                                printf(" po' ");
+" in "                         printf(" bin ");
+love                           printf("nub");
+Love                           printf("Nub");
+" ll"                          printf(" d");
+Ll                             printf("D");
+" l"                           printf(" w");
+L                              printf("W");
+ll                             { printf("ww"); /* hmm, do we really want that? */ }
+l                              { 1+1; /* cutesy null statement */ }
+" ch"                          printf(" t");
+Ch                             printf("T");
+" h"                           printf(" n");
+H                              printf("H");
+" r"[aeiou]                    printf("%s",yytext+2);
+R[aeiou]                       printf("R%s",toupper(*(yytext+1)));
+r[^    .,;!?]                  printf("%s",yytext+1);
+" t"                           printf(" d");
+T                              printf("D");
+" g"                           printf(" b");
+G                              printf("B");
+th                             printf("d");
+n[a-z][        .,;!?]          printf("n%s",yytext+2);
+wi                             printf("bi");
+Wi                             printf("Bi");
+" sh"                          printf(" t");
+Sh                             printf("T");
+" "s[aeiou]                    printf(" t%s",yytext+2);
+S[aeiou]                       printf("T%s",yytext+1);
+" "s[qwrtypsdfghjklzxcvbnm]    printf(" %s",yytext+2);
+S[qwrtypsdfghjklzxcvbnm]       printf("%s",yytext+1);
+" "c[aou]                      printf(" %s",yytext+2);
+C[aou]                         printf("C%c",toupper(*(yytext+1)));
+" "r[aeiou]                    printf(" %s",yytext+2);
+R[aeiou]                       printf("R%c",toupper(*(yytext+1)));
+
+.                              printf("%s",yytext);
+
+%%
+
+main()
+{
+       yylex();
+}
+
diff --git a/censor.l b/censor.l
new file mode 100644 (file)
index 0000000..840528a
--- /dev/null
+++ b/censor.l
@@ -0,0 +1,103 @@
+%{
+#define yywrap() 1
+%}
+
+T      [" .!?,"]*
+
+%%
+
+"ass"                  printf("[BUTTOCKS]");
+"ASS"                  printf("[BUTTOCKS]");
+"Ass"                  printf("[BUTTOCKS]");
+"Damn"                 printf("[CURSE]");
+"damn"                 printf("[CURSE]");
+"DAMN"                 printf("[CURSE]");
+"fuck"                 printf("[FORNICATE]");
+"Fuck"                 printf("[FORNICATE]");
+"FUCK"                 printf("[FORNICATE]");
+"shit"                 printf("[EXCREMENT]");
+"Shit"                 printf("[EXCREMENT]");
+"SHIT"                 printf("[EXCREMENT]");
+"bitch"                        printf("[FEMALE DOG]");
+"Bitch"                        printf("[FEMALE DOG]");
+"BITCH"                        printf("[FEMALE DOG]");
+"pecker"               printf("[PHALLUS]");
+"Pecker"               printf("[PHALLUS]");
+"PECKER"               printf("[PHALLUS]");
+"nipple"               printf("[MAMMARY OUTLET]");
+"Nipple"               printf("[MAMMARY OUTLET]");
+"NIPPLE"               printf("[MAMMARY OUTLET]");
+"breast"               printf("[BUSOM]");
+"Breash"               printf("[BUSOM]");
+"BREAST"               printf("[BUSOM]");
+"fucking"              printf("[FORNICATING]");
+"Fucking"              printf("[FORNICATING]");
+"FUCKING"              printf("[FORNICATING]");
+"fucked"               printf("[FORNICATED]");
+"Fucked"               printf("[FORNICATED]");
+"FUCKED"               printf("[FORNICATED]");
+"damned"               printf("[CURSED]");
+"Damned"               printf("[CURSED]");
+"DAMNED"               printf("[CURSED]");
+"damning"              printf("[CURSING]");
+"Damning"              printf("[CURSING]");
+"DAMNING"              printf("[CURSING]");
+"piss"                 printf("[URINATE]");
+"Piss"                 printf("[URINATE]");
+"PISS"                 printf("[URINATE]");
+"asshole"              printf("[DONKEY BUTTOCKS]");
+"Asshole"              printf("[DONKEY BUTTOCKS]");
+"ASSHOLE"              printf("[DONKEY BUTTOCKS]");
+"prick"                        printf("[PHALLUS]");
+"Prick"                        printf("[PHALLUS]");
+"PRICK"                        printf("[PHALLUS]");
+"cock"                 printf("[PHALLUS]");
+"Cock"                 printf("[PHALLUS]");
+"COCK"                 printf("[PHALLUS]");
+"pussy"                        printf("[VAGINA]");
+"Pussy"                        printf("[VAGINA]");
+"PUSSY"                        printf("[VAGINA]");
+"twat"                 printf("[VAGINA]");
+"Twat"                 printf("[VAGINA]");
+"TWAT"                 printf("[VAGINA]");
+"cunt"                 printf("[VAGINA]");
+"Cunt"                 printf("[VAGINA]");
+"CUNT"                 printf("[VAGINA]");
+"dick"                 printf("[RICHARD]");
+"Dick"                 printf("[RICHARD]");
+"DICK"                 printf("[RICHARD]");
+"cum"                  printf("[EJACULATE]");
+"Cum"                  printf("[EJACULATE]");
+"CUM"                  printf("[EJACULATE]");
+"jack off"             printf("[MASTERBATE]");
+"Jack Off"             printf("[MASTERBATE]");
+"JACK OFF"             printf("[MASTERBATE]");
+"wet dream"            printf("[NOCTURNAL EMISSION]");
+"Wet Dream"            printf("[NOCTURNAL EMISSION]");
+"WET DREAM"            printf("[NOCTURNAL EMISSION]");
+"jerk off"             printf("[MASTERBATE]");
+"Jerk Off"             printf("[MASTERBATE]");
+"JERK OFF"             printf("[MASTERBATE]");
+"bastard"              printf("[ILLEGITIMATE CHILD]");
+"Bastard"              printf("[ILLEGITIMATE CHILD]");
+"BASTARD"              printf("[ILLEGITIMATE CHILD]");
+"slut"                 printf("[WANTON WOMAN]");
+"Slut"                 printf("[WANTON WOMAN]");
+"SLUT"                 printf("[WANTON WOMAN]");
+"whore"                        printf("[PROSTITUTE]");
+"Whore"                        printf("[PROSTITUTE]");
+"WHORE"                        printf("[PROSTITUTE]");
+"suck"                 printf("[INHALE]");
+"Suck"                 printf("[INHALE]");
+"SUCK"                 printf("[INHALE]");
+"blow"                 printf("[EXHALE]");
+"Blow"                 printf("[EXHALE]");
+"BLOW"                 printf("[EXHALE]");
+.                      ECHO;
+%%
+
+main()
+{
+       srand(getpid());
+       yylex();
+}
diff --git a/chef b/chef
new file mode 100755 (executable)
index 0000000..23d0e6a
--- /dev/null
+++ b/chef
@@ -0,0 +1,67 @@
+#!/usr/bin/perl -p
+# Swedish Chef filter. Bork Bork Bork!
+# Copyright 1999 by Joey Hess under the terms of the GNU GPL.
+
+# Note that the order of the commands in this program is very important!
+
+# Change 'e' at the end of a word to 'e-a', but don't mess with the word
+# "the".
+s{(\w+)e(\b)}{
+       if (lc($1) ne 'th') {
+               "$1e-a$2"
+       }
+       else {
+               "$1e$2"
+       }
+}eg;
+
+# Stuff that happens at the end of a word.
+s/en(\b)/ee$1/g;
+s/th(\b)/t$1/g;
+
+# Stuff that happens if not the first letter of a word.
+s/(\w)f/$1ff/g;
+
+# Change 'o' to 'u' and at the same time, change 'u' to 'oo'. But only
+# if it's not the first letter of the word.
+tr/ou/uo/;
+s{(\b)([uo])}{
+       $1 . $2 eq 'o' ? 'u' : 'o'
+}eg;
+# Note that this also handles doubling "oo" at the beginning of words.
+s/o/oo/g;
+# Have to double "Oo" seperatly.
+s/(\b)O(\w)/$1Oo$2/g;
+# Fix the word "bork", which will have been mangled to "burk"
+# by above commands. Note that any occurence of "burk" in the input
+# gets changed to "boork", so it's completly safe to do this:
+s/\bburk\b/bork/;
+
+# Stuff to do to letters that are the first letter of any word.
+s/\be/i/g;
+s/\bE/I/g;
+
+# Stuff that always happens.
+s/teeun/shun/g; # this actually has the effect of changing "tion" to "shun".
+s/the/zee/g;
+s/The/Zee/g;
+tr/vVwW/fFvV/;
+
+# Stuff to do to letters that are not the last letter of a word.
+s/a(?!\b)/e/g;
+s/A(?!\b)/E/g;
+
+s/en/un/g; # this actually has the effect of changing "an" to "un".
+s/En/Un/g; # this actually has the effect of changing "An" to "Un".
+s/eoo/oo/g; # this actually has the effect of changing "au" to "oo".
+s/Eoo/Oo/g; # this actually has the effect of changing "Au" to "Oo".
+
+# Change "ow" at end of word to "oo".
+s/uv\b/oo\b/g;
+
+# Change 'i' to 'ee', but not at the beginning of a word,
+# and only affect the first 'i' in each word.
+s/(\b\w[a-hj-zA-HJ-Z]*)i/$1ee/g;
+
+# Special punctuation of the end of sentances but only at end of lines.
+s/([.?!])$/$1\nBork Bork Bork!/g;
diff --git a/chef.l b/chef.l
new file mode 100644 (file)
index 0000000..7e8ea13
--- /dev/null
+++ b/chef.l
@@ -0,0 +1,63 @@
+%{
+/* chef.x - convert English on stdin to Mock Swedish on stdout
+ *
+ * The WC definition matches any word character, and the NW definition matches
+ * any non-word character.  Two start conditions are maintained: INW (in word)
+ * and NIW (not in word).  The first rule passes TeX commands without change.
+ *
+ * HISTORY
+ *
+ * Apr 26, 1993; John Hagerman: Added ! and ? to the Bork Bork Bork rule.
+ *
+ * Apr 15, 1992; John Hagerman: Created.
+ */
+
+static int i_seen = 0;
+%}
+
+WC             [A-Za-z']
+NW             [^A-Za-z']
+
+%start         INW NIW
+
+%%
+
+\\[^ \n]+      ECHO;
+
+{NW}           { BEGIN NIW; i_seen = 0; ECHO; }
+[.!?]$         { BEGIN NIW; i_seen = 0;
+                 printf("%c\nBork Bork Bork!",yytext[0]); }
+
+<NIW>"bork"/{NW} ECHO;
+<NIW>"Bork"/{NW} ECHO;
+
+"an"           { BEGIN INW; printf("un"); }
+"An"           { BEGIN INW; printf("Un"); }
+"au"           { BEGIN INW; printf("oo"); }
+"Au"           { BEGIN INW; printf("Oo"); }
+"a"/{WC}       { BEGIN INW; printf("e"); }
+"A"/{WC}       { BEGIN INW; printf("E"); }
+"en"/{NW}      { BEGIN INW; printf("ee"); }
+<INW>"ew"      { BEGIN INW; printf("oo"); }
+<INW>"e"/{NW}  { BEGIN INW; printf("e-a"); }
+<NIW>"e"       { BEGIN INW; printf("i"); }
+<NIW>"E"       { BEGIN INW; printf("I"); }
+<INW>"f"       { BEGIN INW; printf("ff"); }
+<INW>"ir"      { BEGIN INW; printf("ur"); }
+<INW>"i"       { BEGIN INW; printf(i_seen++ ? "i" : "ee"); }
+<INW>"ow"      { BEGIN INW; printf("oo"); }
+<NIW>"o"       { BEGIN INW; printf("oo"); }
+<NIW>"O"       { BEGIN INW; printf("Oo"); }
+<INW>"o"       { BEGIN INW; printf("u"); }
+"the"          { BEGIN INW; printf("zee"); }
+"The"          { BEGIN INW; printf("Zee"); }
+"th"/{NW}      { BEGIN INW; printf("t"); }
+<INW>"tion"    { BEGIN INW; printf("shun"); }
+<INW>"u"       { BEGIN INW; printf("oo"); }
+<INW>"U"       { BEGIN INW; printf("Oo"); }
+"v"            { BEGIN INW; printf("f"); }
+"V"            { BEGIN INW; printf("F"); }
+"w"            { BEGIN INW; printf("v"); }
+"W"            { BEGIN INW; printf("V"); }
+
+.              { BEGIN INW; ECHO; }
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
+*/
+}
diff --git a/debian/TODO b/debian/TODO
new file mode 100644 (file)
index 0000000..09845a3
--- /dev/null
@@ -0,0 +1,3 @@
+* censor filter (should be easy)
+* continue to make the chef filter more similar to the old one
+* write more filters
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..520b0b6
--- /dev/null
@@ -0,0 +1,40 @@
+filters (1.3) unstable; urgency=low
+
+  * Libc6.
+  * Added man pages. #11318
+
+ -- Joey Hess <joeyh@master.debian.org>  Wed, 16 Jul 1997 13:31:07 -0400
+
+filters (1.2) frozen unstable; urgency=low
+
+  * Fixed bug #8329 (buck segfaulted if it encountered C[aou] or R[aeiou] in
+    input.)
+  * Routine update of debian/rules:
+    Run dpkg-gencontrol after debstd, and delete substvars during clean.
+
+ -- Joey Hess <joeyh@master.debian.org>  Tue, 8 Apr 1997 20:59:12 -0400
+
+filters (1.1) unstable; urgency=low
+
+  * Changed version number to 1.1, because there was some confusion if this
+    was a debian-only package. It is, so I've removed the debian revision
+    number.
+
+ -- Joey Hess <joeyh@master.debian.org>  Tue, 24 Dec 1996 20:35:51 -0500
+
+filters (1.0-2) unstable; urgency=low
+
+  * New email address.
+  * Use debmake.
+
+ -- Joey Hess <joeyh@master.debian.org>  Tue, 24 Dec 1996 15:40:55 -0500
+
+filters (1.0-1) unstable; urgency=low
+
+  * First release.
+
+ -- Joey Hess <joeyh@master.debian.org>  Sat, 28 Sep 1996 00:55:40 -0400
+
+Local variables:
+mode: debian-changelog
+End:
diff --git a/debian/config b/debian/config
new file mode 100644 (file)
index 0000000..db4d289
--- /dev/null
@@ -0,0 +1,65 @@
+# Edit this file to configure debian/rules to build a package.
+# No modification of debian/rules should be neccessary. (Famous last words!)
+#
+# File by Joey Hess <joeyh@master.debian.org>
+
+# What is the name of this package?
+package=filters
+
+# Files that go in directories under /doc.
+docs=README ky00te.dir/README.ky00te SAMPLES
+copyright=debian/copyright
+
+# What file must exist in the current directory if the package is
+# properly unpacked here?
+test_file=makesample.sh
+
+# Does this package build from an Imakefile?
+# If so, uncomment the line below.
+#use_imakefile=y
+
+# Does this package build from a Configure script?
+# If so, uncomment the line below and enter the command to run to run the 
+# Configure script (ie: "./Configure")
+#use_configure=./Configure
+
+# What commands to run to build the package?
+define build_command
+       $(MAKE)
+       $(MAKE) samples
+endef
+
+# What commands to run to clean up after a build?
+define clean_command
+       -$(MAKE) -i clean
+endef
+
+# List here any files that must be removed during "debian/rules clean"
+# that clean_command doesn't take care of.
+clean_files=
+
+# List here any files that should be preserved during a build, and restored
+# to their original state during a clean. For example, if the package comes
+# with both an Imakefile and a Makefile, and xmkmf is run, list the original
+# Makefile here so it will be backed up before it is overwritten my xmkmf.
+preserve_files=
+
+# What command to run to install the package into debian/tmp?
+# You might want to edit the package's Makefile and add $(PREFIX) 
+# to all the paths it installs files to. or, you can just write 
+# your own install commands here instead.
+#
+# Note that debian/* and the files in /usr/doc will be installed 
+# properly for you, you don't need to do that here.
+#
+define install_command
+       $(MAKE) PREFIX=debian/tmp install
+endef
+
+# After being installed in debian/tmp, everything is chowned to root.root,
+# and chmod g-ws is run on everyything. Enter below any chmod commands you
+# need to run to set files to the proper permissions. This is where you
+# can make programs be suid, etc.
+# (Note that these commands will be run as root.)
+define ch_commands
+endef
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..f4871da
--- /dev/null
@@ -0,0 +1,13 @@
+Source: filters
+Section: games
+Priority: optional
+Maintainer: Joey Hess <joeyh@master.debian.org>
+Standards-Version: 2.1.1.0
+
+Package: filters
+Architecture: any
+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.
+ This includes such favorites as B1FF and the swedish chef, as well as lots
+ of other filters.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..53b2e1b
--- /dev/null
@@ -0,0 +1,60 @@
+This is a Debian prepackaged version of the filters package.
+
+This package was put together and debianized by Joey Hess
+<joeyh@master.debian.org>, using sources from all over, including:
+       http://www.princeton.edu/~mkporwit/pub_links/davido/slang/
+       http://www.mathlab.sunysb.edu/~elijah/src.html
+
+Various copyrights pertain to different files in this package:
+
+cockney filter:
+/*
+ *      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.
+ */
+
+jive filter:
+/*
+ *      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.
+ */
+
+newspeak filter:
+ *      newspeak.l, version 1.1.
+ *      Lex filter to transform plain English into NewSpeak.
+ *      Copyright (c) 1991 Jamie Zawinski <jwz@lucid.com>.
+ *      Permission granted for noncommercial use and redistribution.
+
+nyc filter:
+/*
+ *      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.
+ */
+
+ky00te filter:
+
+This program is (c) 1994, Brent E. Edwards.  Feel free to distribute the
+complete program world-wide.  (Please do NOT break apart this text file
+from the program.)  
+
+This program is under absolutely no warrantee of any kind.  
+
+If you have any questions about this program, please send them to 
+edwardsb@cs.rpi.edu.
+
+This program is dedicated to Conrad Wong.
+
+This program is catware.  If you find it useful in any way, pay for this
+program by spending one hour petting one or several cats.
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..101fcb3
--- /dev/null
@@ -0,0 +1,136 @@
+#!/usr/bin/make -f
+##############################################################################
+# Generic debian/rules file. Based on:
+#
+#> Sample debian.rules file - for GNU Hello (1.3).
+#> Copyright 1994,1995 by Ian Jackson.
+#> I hereby give you perpetual unlimited permission to copy,
+#> modify and relicense this file, provided that you do not remove
+#> my name from the file itself.  (I assert my moral right of
+#> paternity under the Copyright, Designs and Patents Act 1988.)
+#
+# Heavily modified by Joey Hess <joeyh@master.debian.org>
+#
+##############################################################################
+#
+# NOTE: You shouldn't have to edit this file. Edit debian/config instead.
+# If you must edit this file to get your package to build properly, then
+# I have failed. Let me know; mail me.
+#
+# (Currently not handled: multiple binary packages from 1 source package,
+# and binary-indep rule.)
+#
+# NOTE: This file is designed so it doesn't need to be run as root. For
+# actions that require that the user be root, the root password will be
+# prompted for, if you're not already root.
+#
+##############################################################################
+#
+# Changelog:
+# * Fakeroot and sudo fixes.
+# * Run dpkg-gencontrol after debstd, and delete substvars during clean.
+# * Clean up junk files in subdirs.
+# * Modifications for multiple binary package support.
+# * Call debstd after fixing file perms.
+# * Don't pass package name to debstd + fixes for multi binary packages. 
+# * Use build-stamp instead of build.
+# * New email address.
+# * Added changelog.
+#
+##############################################################################
+
+# Include config file.
+include debian/config
+
+# Generate a makefile (via configure scriopt or xmkmf).
+makefile-stamp:
+  ifeq ($(strip $(use_imakefile)),y)
+       xmkmf -a
+  endif 
+       $(use_configure)
+       touch makefile-stamp
+
+# Preserve some files that may get deleted/overwritten/modified otherwise.
+preserve-stamp:
+  ifneq ($(strip $(preserve_files)),)
+       $(foreach file,$(preserve_files),cp $(file) $(file).preserved ;)
+  endif
+       touch preserve-stamp
+
+build-stamp: preserve-stamp makefile-stamp
+       $(checkdir)
+       $(build_command)
+       touch build-stamp
+
+build: build-stamp
+
+clean: preserve-stamp makefile-stamp
+       $(checkdir)
+  # Do actual cleaning up here.
+       -rm -f build-stamp
+       $(clean_command)
+       -find . -name '\#*\#' -o -name '*~' -o -name 'DEADJOE' -exec rm -f {} \;
+       -rm -f debian/files* debian/substvars debian/*.substvars $(clean_files)
+       $(clean_tmp)
+  # Remove Makefile that xmkmf creates.
+  ifeq ($(strip $(use_imakefile)),y)
+       -rm -f Makefile
+  endif
+  # If we preserved some files, we need to restore them now.
+  ifneq ($(strip $(preserve_files)),)
+       $(foreach file,$(preserve_files),mv -f $(file).preserved $(file); )
+  endif
+       -rm -f preserve-stamp makefile-stamp
+
+# Build architecture-independent files here.
+# (not yet set up to be used)
+binary-indep: build
+       $(checkdir)
+
+# Build architecture-dependent files here.
+binary-arch: build
+       $(checkdir)
+       $(clean_tmp)
+       $(install_command)
+  # Set permissions and check package for problems, then build package.
+       @if [ "`whoami`" != root ]; then \
+               echo -e "\n ** Enter root password to set file permissions."; \
+               sudo debian/rules setperms; \
+       else \
+               debian/rules setperms; \
+       fi
+
+# This must be run suid root, it sets the file permissions in debian/tmp
+setperms:
+       chown -R root.root debian/tmp
+       chmod -R g-ws debian/tmp
+  # Debstd handles lots of nasty details. This requires that the debmake
+  # package is installed.
+       -debstd $(debstd) $(docs)
+       dpkg-gencontrol -p$(package)
+       $(ch_commands)
+       dpkg --build debian/tmp ..
+
+define checkdir
+       @test -e $(test_file) -a -f debian/rules || (echo -e "\n\
+       ** \"$(test_file)\" or \"debian/rules\" does not exist.\n\
+       ** Either the package is not unpacked in this directory, or\n\
+       ** an incorrect test_file is specified in debian/config.\n" && false)
+endef
+
+# This rm's the debian/tmp directory, and any other directories specified in 
+# tmpdirs
+define clean_tmp
+       -rm -rf debian/tmp >/dev/null 2>&1
+       @if [ -d debian/tmp -o -n "$(tmp_dirs)" ]; then \
+               if  [ "`whoami`" != root ]; then \
+                       echo -e "\n ** Enter root password to remove temporary directories $(tmp_dirs)"; \
+                       sudo rm -rf debian/tmp $(tmp_dirs); \
+               else \
+                       rm -rf debian/tmp $(tmp_dirs); \
+               fi; \
+       fi
+endef
+
+binary: binary-indep binary-arch
+.PHONY: clean setperms binary
diff --git a/drawl.l b/drawl.l
new file mode 100644 (file)
index 0000000..ae73df1
--- /dev/null
+++ b/drawl.l
@@ -0,0 +1,426 @@
+%{
+/*  Title:   English to Texan translator
+ *  Author:  Adam Hudd (adam@dadhb1.ti.com)
+ *  Date:    5 March 1991
+ *  Version: 1.0
+ *
+ *  Input:   stdin
+ *  Output:  stdout
+ *  compile: flex -iL drawl.l ; cc -O lex.yy.c -o drawl
+ */
+
+#include <stdio.h>
+#include <ctype.h>
+
+void changeCase();
+%}
+%%
+(^|" ")"American"                      changeCase(" Amerkin");
+(^|" ")"California"                    changeCase(" Caleyfornyuh");
+(^|" ")"Dallas"                                changeCase(" Big D.");
+(^|" ")"Fort Worth"                    changeCase(" Fowert Wurth");
+(^|" ")"Houston"                       changeCase(" Useton");
+(^|" ")"I don't know"                  changeCase(" I-O-no");
+(^|" ")"I will"|" I'll"                        changeCase(" Ahl");
+(^|" ")"I would"                       changeCase(" Ahd");
+(^|" ")"I "                            changeCase(" Ah ");
+(^|" ")"I'm "|" I am "                 changeCase(" Ahm ");
+(^|" ")"I've "|" I have "              changeCase(" Ahv ");
+(^|" ")"Mexico"                                changeCase(" Messyco");
+(^|" ")"San Antonio"                   changeCase(" Santone");
+(^|" ")"TV"|" television"|" telly"     changeCase(" tayvay");
+(^|" ")"Texan"                         changeCase(" Texun");
+(^|" ")"Texas"                         changeCase(" Teksus");
+(^|" ")"a while "                      changeCase(" uhwahl ");
+(^|" ")"a "                            changeCase(" uh ");
+(^|" ")"about"                         changeCase(" bout");
+(^|" ")"adult"                         changeCase(" a-dult");
+(^|" ")"afraid"                                changeCase(" frayed");
+(^|" ")"and "                          changeCase(" an ");
+(^|" ")"anniversary"                   changeCase(" anavarsry");
+(^|" ")"any "                          changeCase(" no ");
+(^|" ")"anywhere"                      changeCase(" anywhare");
+(^|" ")"appreciate"                    changeCase(" preshate");
+(^|" ")"april"                         changeCase(" abrul");
+(^|" ")"are going to"                  changeCase(" sargunna");
+(^|" ")"are known"                     changeCase(" iz node");
+(^|" ")"are "                          changeCase(" is ");
+(^|" ")"aren't you"                    changeCase(" arncha");
+(^|" ")"at them"                       changeCase(" attum");
+(^|" ")"august"                                changeCase(" awg-ghust");
+(^|" ")"away"                          changeCase(" awf");
+(^|" ")"awkward"                       changeCase(" aukerd");
+(^|" ")"bad"                           changeCase(" bayud");
+(^|" ")"ball"                          changeCase(" bawl");
+(^|" ")"baptists"                      changeCase(" babtusses");
+(^|" ")"barbed"                                changeCase(" bob");
+(^|" ")"be "                           changeCase(" bay ");
+(^|" ")"bear"                          changeCase(" bayur");
+(^|" ")"beautiful"                     changeCase(" butiful");
+(^|" ")"because"                       changeCase(" cuz");
+(^|" ")"believe"                       changeCase(" bleeve");
+(^|" ")"bitty"                         changeCase(" biddy");
+(^|" ")"black"                         changeCase(" blaak");
+(^|" ")"blue"                          changeCase(" bulloo");
+(^|" ")"born"                          changeCase(" bornd");
+(^|" ")"brake"                         changeCase(" brayke");
+(^|" ")"break"                         changeCase(" brayke");
+(^|" ")"brick"                         changeCase(" breck");
+(^|" ")"brighter"                      changeCase(" brotter");
+(^|" ")"bringing"                      changeCase(" brangin");
+(^|" ")"brown"                         changeCase(" braoyone");
+(^|" ")"building"                      changeCase(" bildun");
+(^|" ")"bulb"                          changeCase(" bub");
+(^|" ")"call you "                     changeCase(" cawya ");
+(^|" ")"called you "                   changeCase(" cawdja ");
+(^|" ")"camera"                                changeCase(" Instuhmatik");
+(^|" ")"can't"                         changeCase(" kaynt");
+(^|" ")"can't"|" can not"|" cannot"    changeCase(" kaynt");
+(^|" ")"capital"                       changeCase(" captul");
+(^|" ")"car "                          changeCase(" cawer ");
+(^|" ")"catch"                         changeCase(" ketch");
+(^|" ")"chair"                         changeCase(" chayer");
+(^|" ")"cheer"                         changeCase(" chair");
+(^|" ")"chicken"                       changeCase(" chikun");
+(^|" ")"child"                         changeCase(" kid");
+(^|" ")"children"                      changeCase(" kids");
+(^|" ")"clean"                         changeCase(" klane");
+(^|" ")"climate"                       changeCase(" kliment");
+(^|" ")"cold"                          changeCase(" code");
+(^|" ")"darker"                                changeCase(" dawerker");
+(^|" ")"deaf"                          changeCase(" dayuf");
+(^|" ")"death"                         changeCase(" dayuth");
+(^|" ")"december"                      changeCase(" deceyumbur");
+(^|" ")"definite"                      changeCase(" defnut");
+(^|" ")"did not"|" didn't"             changeCase(" didunt");
+(^|" ")"did you"                       changeCase(" dja");
+(^|" ")"didn't it"                     changeCase(" diduhnit");
+(^|" ")"different"                     changeCase(" difernt");
+(^|" ")"difficult"                     changeCase(" difahkult");
+(^|" ")"divide"                                changeCase(" duhvide");
+(^|" ")"does"                          changeCase(" duz");
+(^|" ")"doesn't"                       changeCase(" don't");
+(^|" ")"dog "                          changeCase(" dawg ");
+(^|" ")"I don't care"                   changeCase(" don't make no nevur mind to may ");
+(^|" ")"door"                          changeCase(" dower");
+(^|" ")"dreaming"                      changeCase(" draimun");
+(^|" ")"drink"                         changeCase(" drank");
+(^|" ")"drinking"                      changeCase(" drankin");
+(^|" ")"drive"                         changeCase(" drahv");
+(^|" ")"eight"                         changeCase(" ate");
+(^|" ")"eighteen"                      changeCase(" a-tane");
+(^|" ")"eighth"                                changeCase(" athd");
+(^|" ")"eighty"                                changeCase(" ady");
+(^|" ")"eleven"                                changeCase(" lebum");
+(^|" ")"entire"                                changeCase(" entahr");
+(^|" ")"especially"                    changeCase(" speshuly");
+(^|" ")"even"                          changeCase(" evun");
+(^|" ")"evening"                       changeCase(" eevnun");
+(^|" ")"eventually"                    changeCase(" eventchly");
+(^|" ")"ever"                          changeCase(" evur");
+(^|" ")"every once in a while"         changeCase(" evurwonsinawhahl");
+(^|" ")"every"                         changeCase(" evur");
+(^|" ")"exactly"                       changeCase(" zakly");
+(^|" ")"executive"                     changeCase(" zekatuv");
+(^|" ")"eye "                          changeCase(" ah ");
+(^|" ")"father"                                changeCase(" papa");
+(^|" ")"february"                      changeCase(" febberyawary");
+(^|" ")"fell "                         changeCase(" fayul ");
+(^|" ")"fifteen"                       changeCase(" fiftane");
+(^|" ")"fifth"                         changeCase(" fifd");
+(^|" ")"fifty"                         changeCase(" fifdy");
+(^|" ")"fight"                         changeCase(" fite");
+(^|" ")"figure"                                changeCase(" figger");
+(^|" ")"filling"                       changeCase(" fillin");
+(^|" ")"fine"                          changeCase(" fahn");
+(^|" ")"fire"                          changeCase(" far");
+(^|" ")"first"                         changeCase(" fursd");
+(^|" ")"five"                          changeCase(" fav");
+(^|" ")"fixing"                                changeCase(" fixin");
+(^|" ")"flower"                                changeCase(" flare");
+(^|" ")"follow"                                changeCase(" faller");
+(^|" ")"for "                          changeCase(" fahwar ");
+(^|" ")"forget"                                changeCase(" fergit");
+(^|" ")"fork"                          changeCase(" fowerk");
+(^|" ")"forty"                         changeCase(" fardy");
+(^|" ")"four"                          changeCase(" fower");
+(^|" ")"fourteen"                      changeCase(" fortane");
+(^|" ")"fourth"                                changeCase(" fowerth");
+(^|" ")"freeze"                                changeCase(" fraze");
+(^|" ")"friday"                                changeCase(" frydy");
+(^|" ")"from"                          changeCase(" frum");
+(^|" ")"front"                         changeCase(" frunt");
+(^|" ")"gas"                           changeCase(" gayus");
+(^|" ")"geography"                     changeCase(" joggerfee");
+(^|" ")"get a hold of you"             changeCase(" gittaholdayew");
+(^|" ")"get"                           changeCase(" git");
+(^|" ")"going to"                      changeCase(" gunna");
+(^|" ")"going to"                      changeCase(" mona");
+(^|" ")"gold"                          changeCase(" gode");
+(^|" ")"got to "                       changeCase(" gotta ");
+(^|" ")"green"                         changeCase(" grane");
+(^|" ")"grey"|" gray"                  changeCase(" graey");
+(^|" ")"guests"                                changeCase(" guesss");
+(^|" ")"guitar"                                changeCase(" gitahwer");
+(^|" ")"gulf"                          changeCase(" guf");
+(^|" ")"hard"                          changeCase(" hayud");
+(^|" ")"have a "                       changeCase(" havuh ");
+(^|" ")"have not"|" haven't"           changeCase(" habumt");
+(^|" ")"have "                         changeCase(" hav ");
+(^|" ")"he "                           changeCase(" hay ");
+(^|" ")"headed"                                changeCase(" hardud");
+(^|" ")"here"                          changeCase(" hare");
+(^|" ")"high"                          changeCase(" ha");
+(^|" ")"hour"                          changeCase(" air");
+(^|" ")"how are you"                   changeCase(" hyeru");
+(^|" ")"how do you do "                        changeCase(" howdee ");
+(^|" ")"huh!"                          changeCase(" hawh!");
+(^|" ")"huh?"                          changeCase(" hawh?");
+(^|" ")"hundred"                       changeCase(" hunnerd");
+(^|" ")"if I "                         changeCase(" fah ");
+(^|" ")"if it "                                changeCase(" hifit ");
+(^|" ")"if you"                                changeCase(" few");
+(^|" ")"if "                           changeCase(" hif ");
+"ing "                                 changeCase("in' ");
+(^|" ")"ignorance"                     changeCase(" ignernt");
+(^|" ")"indian"                                changeCase(" hinyun");
+(^|" ")"inside"                                changeCase(" n-sod");
+(^|" ")"instead of"                    changeCase(" instudda");
+(^|" ")"institute"                     changeCase(" instatoot");
+(^|" ")"intersection"                  changeCase(" innersekshun");
+(^|" ")"is a "                         changeCase(" izza ");
+(^|" ")"is it "                                changeCase(" izit ");
+(^|" ")"is that "                      changeCase(" izzat ");
+(^|" ")"is that right "                        changeCase(" zatrot ");
+(^|" ")"is "                           changeCase(" iz ");
+(^|" ")"isn't it "                     changeCase(" hiduhnit ");
+(^|" ")"it appears"                    changeCase(" pears");
+(^|" ")"it would"                      changeCase(" hid");
+(^|" ")"it "                           changeCase(" hit ");
+(^|" ")"it'd "                         changeCase(" hid ");
+(^|" ")"it's"|" it is"                 changeCase(" hit's");
+(^|" ")"jail"                          changeCase(" jayul");
+(^|" ")"january"                       changeCase(" janyawary");
+(^|" ")"jeans"                         changeCase(" janes");
+(^|" ")"jet"                           changeCase(" jeyut");
+(^|" ")"jewelry"                       changeCase(" julry");
+(^|" ")"july"                          changeCase(" djoolie");
+(^|" ")"june"                          changeCase(" djoon");
+(^|" ")"just"                          changeCase(" gist");
+(^|" ")"kind of"                       changeCase(" kinduh");
+(^|" ")"king"                          changeCase(" kang");
+(^|" ")"library"                       changeCase(" liberry");
+(^|" ")"lie"                           changeCase(" lah");
+(^|" ")"life"                          changeCase(" lahf");
+(^|" ")"light"                         changeCase(" lot");
+(^|" ")"lighter"                       changeCase(" lahter");
+(^|" ")"like"                          changeCase(" lahk");
+(^|" ")"little"                                changeCase(" liddel");
+(^|" ")"log"                           changeCase(" lawg");
+(^|" ")"lot of"                                changeCase(" lottuh");
+(^|" ")"lots of"                       changeCase(" lotsa");
+(^|" ")"love"                          changeCase(" luv");
+(^|" ")"mall"                          changeCase(" mawl");
+(^|" ")"march"                         changeCase(" martch");
+(^|" ")"material"                      changeCase(" mahtearyul");
+(^|" ")"may"                           changeCase(" maey");
+(^|" ")"me "                           changeCase(" may ");
+(^|" ")"mile"                          changeCase(" mahl");
+(^|" ")"minute"                                changeCase(" minent");
+(^|" ")"monday"                                changeCase(" mundy");
+(^|" ")"mosquito"                      changeCase(" skeeter");
+(^|" ")"moss"                          changeCase(" mawce");
+(^|" ")"mother"                                changeCase(" ma");
+(^|" ")"mroone"                                changeCase(" maroon");
+(^|" ")"my "                           changeCase(" mah ");
+(^|" ")"myself"                                changeCase(" mahsef");
+(^|" ")"never"                         changeCase(" nevur");
+(^|" ")"nine"                          changeCase(" nahn");
+(^|" ")"nineteen"                      changeCase(" nontane");
+(^|" ")"nineth"                                changeCase(" nonth");
+(^|" ")"ninety"                                changeCase(" nondy");
+(^|" ")"no "                           changeCase(" naw ");
+(^|" ")"nothing"                       changeCase(" nuthun");
+(^|" ")"november"                      changeCase(" noveyumbur");
+(^|" ")"ocean"                         changeCase(" oshun");
+(^|" ")"october"                       changeCase(" oktobur");
+(^|" ")"of "                           changeCase(" uh ");
+(^|" ")"off"                           changeCase(" awf");
+(^|" ")"oil"                           changeCase(" all");
+(^|" ")"old "                          changeCase(" ode ");
+(^|" ")"one of "                       changeCase(" wunna ");
+(^|" ")"one "                          changeCase(" wun ");
+(^|" ")"only"                          changeCase(" monly");
+(^|" ")"opposite"                      changeCase(" opsit");
+(^|" ")"orange"                                changeCase(" arnjuh");
+(^|" ")"over there"                    changeCase(" ovare");
+(^|" ")"over"                          changeCase(" ovur");
+(^|" ")"parking"                       changeCase(" parkin");
+(^|" ")"people"                                changeCase(" paypul");
+(^|" ")"picture"                       changeCase(" pitchur");
+(^|" ")"pillow"                                changeCase(" pillar");
+(^|" ")"pine"                          changeCase(" pahn");
+(^|" ")"pink"                          changeCase(" pank");
+(^|" ")"please"                                changeCase(" playze");
+(^|" ")"pretty"                                changeCase(" purdy");
+(^|" ")"probably"                      changeCase(" probly");
+(^|" ")"purple"                                changeCase(" burpel");
+(^|" ")"queen"                         changeCase(" kwane");
+(^|" ")"quit"                          changeCase(" kewyut");
+(^|" ")"rather"                                changeCase(" ruthur");
+(^|" ")"ready"                         changeCase(" reddy");
+(^|" ")"real"                          changeCase(" reeyul");
+(^|" ")"really"                                changeCase(" rilly");
+(^|" ")"red"                           changeCase(" rayud");
+(^|" ")"right"                         changeCase(" rot");
+(^|" ")"ring"                          changeCase(" rang");
+(^|" ")"said"                          changeCase(" sayud");
+(^|" ")"sale"                          changeCase(" sayul");
+(^|" ")"sale"|" sail"|" sell"          changeCase(" sayul");
+(^|" ")"saturday"                      changeCase(" sadderdy");
+(^|" ")"school"                                changeCase(" skoo");
+(^|" ")"screen"                                changeCase(" skrane");
+(^|" ")"second"                                changeCase(" sekunt");
+(^|" ")"see"                           changeCase(" say");
+(^|" ")"september"                     changeCase(" ceptimbur");
+(^|" ")"seven"                         changeCase(" sebum");
+(^|" ")"seventeen"                     changeCase(" sebumtane");
+(^|" ")"seventh"                       changeCase(" sebumthd");
+(^|" ")"seventy"                       changeCase(" sebumdy");
+(^|" ")"she"                           changeCase(" shay");
+(^|" ")"shirt"                         changeCase(" churt");
+(^|" ")"sign"                          changeCase(" sahn");
+(^|" ")"silver"                                changeCase(" seeyulvur");
+(^|" ")"sit"                           changeCase(" set");
+(^|" ")"sixteen"                       changeCase(" sickstane");
+(^|" ")"sixth"                         changeCase(" sicksed");
+(^|" ")"sixty"                         changeCase(" sicksdy");
+(^|" ")"siz"                           changeCase(" sicks");
+(^|" ")"smell"                         changeCase(" smayul");
+(^|" ")"smile"                         changeCase(" smahl");
+(^|" ")"softer"                                changeCase(" sowftur");
+(^|" ")"some of those"                 changeCase(" sumoze");
+(^|" ")"some"                          changeCase(" sum");
+(^|" ")"something"                     changeCase(" sumpn");
+(^|" ")"sometime"                      changeCase(" sumtom");
+(^|" ")"south"                         changeCase(" saowth");
+(^|" ")"speak"                         changeCase(" spake");
+(^|" ")"spring"                                changeCase(" sprang");
+(^|" ")"sprinkle"                      changeCase(" sprankul");
+(^|" ")"stadium"                       changeCase(" stadyum");
+(^|" ")"station"                       changeCase(" stayshun");
+(^|" ")"string"                                changeCase(" strang");
+(^|" ")"sunday"                                changeCase(" sundy");
+(^|" ")"sure"                          changeCase(" shore");
+(^|" ")"tale"|" tail"                  changeCase(" tayul");
+(^|" ")"talk"                          changeCase(" tawk");
+(^|" ")"talking"                       changeCase(" tawkin");
+(^|" ")"tall"                          changeCase(" tahl");
+(^|" ")"tan"                           changeCase(" tayun");
+(^|" ")"ten"                           changeCase(" teyun");
+(^|" ")"tenth"                         changeCase(" teyunth");
+(^|" ")"terible"                       changeCase(" tarbul");
+(^|" ")"terrible"                      changeCase(" tarbul");
+(^|" ")"that is"|" that's"             changeCase(" thets");
+(^|" ")"that"                          changeCase(" thet");
+(^|" ")"the only"                      changeCase(" thonly");
+(^|" ")"the other"                     changeCase(" thuther");
+(^|" ")"the"                           changeCase(" thuh");
+(^|" ")"their"                         changeCase(" thur");
+(^|" ")"there"                         changeCase(" thare");
+(^|" ")"there"                         changeCase(" thayure");
+(^|" ")"they"                          changeCase(" thay");
+(^|" ")"thing"                         changeCase(" thang");
+(^|" ")"think"                         changeCase(" thank");
+(^|" ")"third"                         changeCase(" thurd");
+(^|" ")"thirteen"                      changeCase(" thurtane");
+(^|" ")"thirty"                                changeCase(" thurdy");
+(^|" ")"this"                          changeCase(" thus");
+(^|" ")"those"                         changeCase(" them");
+(^|" ")"thousand"                      changeCase(" thousun");
+(^|" ")"three"                         changeCase(" thray");
+(^|" ")"through"                       changeCase(" thoo");
+(^|" ")"throw"                         changeCase(" thow");
+(^|" ")"throw"                         changeCase(" throw");
+(^|" ")"thrown"                                changeCase(" thowed");
+(^|" ")"thursday"                      changeCase(" thursdy");
+(^|" ")"tie"                           changeCase(" tah");
+(^|" ")"tied"                          changeCase(" tahd");
+(^|" ")"tight"                         changeCase(" tot");
+(^|" ")"time"                          changeCase(" tom");
+(^|" ")"to "                           changeCase(" tuh ");
+(^|" ")"today"                         changeCase(" tuhday");
+(^|" ")"toilet"                                changeCase(" outhouse");
+(^|" ")"told"                          changeCase(" tode");
+(^|" ")"tommorrow"                     changeCase(" tuhmorrow");
+(^|" ")"tree"                          changeCase(" tray");
+(^|" ")"truck"                         changeCase(" truk");
+(^|" ")"tuesday"                       changeCase(" chewsdy");
+(^|" ")"twelve"                                changeCase(" twayulv");
+(^|" ")"twenty"                                changeCase(" twindy");
+(^|" ")"two "                          changeCase(" tew ");
+(^|" ")"understand"                    changeCase(" understaynd");
+(^|" ")"used to"                       changeCase(" ustuh");
+(^|" ")"vehicle"                       changeCase(" vee-hicul");
+(^|" ")"victory"                       changeCase(" viktray");
+(^|" ")"violation"                     changeCase(" vahlayshun");
+(^|" ")"virtual"                       changeCase(" vurchul");
+(^|" ")"want to "                      changeCase(" wonna ");
+(^|" ")"was that"                      changeCase(" wuzzat");
+(^|" ")"was"                           changeCase(" wuz");
+(^|" ")"wash"                          changeCase(" wartch");
+(^|" ")"water"                         changeCase(" warder");
+(^|" ")"we "                           changeCase(" way ");
+(^|" ")"wedding"                       changeCase(" wedden");
+(^|" ")"wednesday"                     changeCase(" winsdy");
+(^|" ")"well"                          changeCase(" wayul");
+(^|" ")"were "                         changeCase(" wuz ");
+(^|" ")"west "                         changeCase(" wayust ");
+(^|" ")"what did you"                  changeCase(" whudja");
+(^|" ")"what did"                      changeCase(" whuddle");
+(^|" ")"what do you"                   changeCase(" wadja");
+(^|" ")"what is the matter"            changeCase(" smatter");
+(^|" ")"what is"|" what's"             changeCase(" whut");
+(^|" ")"what"                          changeCase(" whut");
+(^|" ")"wheel"                         changeCase(" whale");
+(^|" ")"when"                          changeCase(" wheyun");
+(^|" ")"where did you"                 changeCase(" whardja");
+(^|" ")"where"                         changeCase(" whar");
+(^|" ")"where"                         changeCase(" whayer");
+(^|" ")"white"                         changeCase(" wot");
+(^|" ")"why don't you"                 changeCase(" y-oncha");
+(^|" ")"why"                           changeCase(" wha");
+(^|" ")"wife"                          changeCase(" waf");
+(^|" ")"window"                                changeCase(" wender");
+(^|" ")"winter"                                changeCase(" winner");
+(^|" ")"wire"                          changeCase(" war");
+(^|" ")"with you"                      changeCase(" witchew");
+(^|" ")"woman"                         changeCase(" whoamun");
+(^|" ")"women"                         changeCase(" wimmen");
+(^|" ")"world"                         changeCase(" warld");
+(^|" ")"worse than"                    changeCase(" worsun");
+(^|" ")"yard"                          changeCase(" chard");
+(^|" ")"yellow"                                changeCase(" yuller");
+(^|" ")"yes"                           changeCase(" u-betcha");
+(^|" ")"yes"                           changeCase(" yayus");
+(^|" ")"you "                          changeCase(" yawl ");
+(^|" ")"your are"|" you're"            changeCase(" yore");
+(^|" ")"your"                          changeCase(" chur");
+.|'\n'                                 ECHO;
+%%
+main()
+{
+  yylex();
+}
+
+void changeCase(word)
+char *word;
+{
+extern char *yytext;
+
+/* change o/p to upper/lower based on original text */
+  if (isupper(*(yytext+1)) && islower(*(word+1)))
+    *(word+1) = toupper(*(word+1));
+
+  printf(word);
+}
diff --git a/eleet b/eleet
new file mode 100755 (executable)
index 0000000..017d9eb
--- /dev/null
+++ b/eleet
@@ -0,0 +1,13 @@
+#!/usr/bin/perl -p
+# Eleet filter, Copyright 1999 by Joey Hess under the terms of the GNU GPL.
+BEGIN {
+       $transstring="4bcd3fgh1jklmn0pqr5+uvwxyz";
+       $t="tr/a-zA-Z/$transstring".uc($transstring)."/";
+}
+eval $t;
+s:h:|-|:ig;
+s:l:|_:ig;
+s:m:/\\/\\:ig;
+s:n:/\\/:ig;
+s:v:\\/:ig;
+s:x:><:ig;
diff --git a/eleet.l b/eleet.l
new file mode 100644 (file)
index 0000000..3cd77f1
--- /dev/null
+++ b/eleet.l
@@ -0,0 +1,48 @@
+%e 2000
+%p 5000
+%n 1000
+%k 500
+%a 4000
+%o 2000
+BW [      ]
+EW [      .,;!?]
+
+%{
+#include <stdio.h>
+
+char buf[128];
+%}
+
+%%
+
+a                               printf("4");
+A                               printf("4");
+e                               printf("3");
+E                               printf("3");
+i                               printf("1");
+I                               printf("1");
+o                               printf("0");
+O                               printf("0");
+n                               printf("/\\/");
+N                               printf("/\\/");
+m                               printf("/\\/\\");
+M                               printf("/\\/\\");
+v                               printf("\\/");
+V                               printf("\\/");
+t                               printf("+");
+T                               printf("+");
+s                               printf("5");
+S                               printf("5");
+l                               printf("|_");
+L                               printf("|_");
+x                               printf("><");
+X                               printf("><");
+h                               printf("|-|");
+H                               printf("|-|");
+
+%%
+main()
+{
+  yylex();
+  return(0);
+}
diff --git a/filters.6 b/filters.6
new file mode 100644 (file)
index 0000000..4ee6a72
--- /dev/null
+++ b/filters.6
@@ -0,0 +1,56 @@
+.TH FILTERS 6
+.SH NAME
+aust, b1ff, biffa, buck, censor, chef, cockney, drawl, fin, fudd, jethro jive ken, kraut, ky00te, mb, moo, newspeak, nyc, valspeak \- assorted text filters
+.SH SYNOPSIS
+All the filters read input from stdin, change it, and write the filtered
+text to stdout.
+.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.
+.IP aust
+Australian
+.IP b1ff
+The B1FF filter
+.IP biffa
+??
+.IP buck
+The buckwheat filter
+.IP censor
+[CENSORED]
+.IP chef
+convert English on stdin to Mock Swedish on stdout
+.IP cockney
+Cockney English
+.IP drawl
+English to Texan translator
+.IP fin
+??
+.IP fudd
+Elmer Fudd
+.IP jethro
+Hillbilly text filter
+.IP jive
+Jive English
+.IP ken
+English into Cockney, featuring (dubious) rhyming
+slang for a lot of computer terminology.
+.IP kraut
+German
+.IP mb
+Marc Barrett posting translator
+.IP moo
+The cow filter
+.IP newspeak
+As in 1984
+.IP nyc
+Brooklyn English
+.IP valspeak
+??
+.IP ky00te
+This program places a very cute (and familiar to FurryMuck
+fans) accent to any text file.
+.SH "SEE ALSO"
+.IP /usr/doc/filters/SAMPLES
+Lists samples of the output of all the filters.
+.SH AUTHOR
+The filters were collected from all over, by Joey Hess <joey@kite.ml.org>
diff --git a/fin.l b/fin.l
new file mode 100644 (file)
index 0000000..68f266e
--- /dev/null
+++ b/fin.l
@@ -0,0 +1,63 @@
+
+T      [" .!?,"]*
+%%
+
+look                   printf("watch");
+watch                  printf("look");
+hear                   printf("listen");
+listen                 printf("hear");
+good                   printf("well");
+well                   printf("good");
+say                    printf("speaks");
+said                   printf("speaked");
+being                  printf("be");
+ck                     printf("kk");
+nn                     printf("n");
+mm                     printf("m");
+tt                     printf("t");
+ss                     printf("s");
+dd                     printf("d");
+" had "                        printf(" have ");
+" than "               printf(" to ");
+" was "                        printf(" were ");
+" can "                        printf(" be able to ");
+" do "                 printf(" doing ");
+" does "               printf(" doings ");
+" see "                        printf(" be seeing ");
+" be "                 printf(" being ");
+" am "                 printf(" do be ");
+" as "                 printf(" so ");
+" so "                 printf(" as ");
+" is "                 printf(" does be ");
+" my "                 printf(" the of me ");
+"My "                  printf("The of me ");
+" his "                        printf(" the of him ");
+"His "                 printf("The of him ");
+[Yy]our                        printf("the of you");
+" a "                  printf(" ");
+" the "                        printf(" ");
+"A "                   printf("One ");
+"ts "                  printf("t's ");
+"t's "                 printf("ts ");
+[Tt]hat                        printf("this");
+[Tt]his                        printf("that");
+into                   printf("in");
+" in "                 printf(" into ");
+onto                   printf("on");
+" on "                 printf(" onto ");
+never                  printf("not once");
+[Oo]nce                        printf("one time");
+[Tt]wice               printf("two times");
+about                  printf("by");
+[Ww]hy                 printf("how");
+" by "                 printf(" from ");
+" to "                 printf(" for ");
+" for "                        printf(" to ");
+"ing "                 printf("ed ");
+%%
+
+main()
+{
+       srand(getpid());
+       yylex();
+}
diff --git a/fudd.l b/fudd.l
new file mode 100644 (file)
index 0000000..463c214
--- /dev/null
+++ b/fudd.l
@@ -0,0 +1,37 @@
+%e 2000
+%p 5000
+%n 1000
+%k 500
+%a 4000
+%o 2000
+BW [      ]
+EW [      .,;!?]
+
+%{
+#include <stdio.h>
+
+char buf[128];
+%}
+
+%%
+"r"     printf("w");
+"l"     printf("w");
+"qu"        printf("qw");
+"th "       printf("f ");
+"th"        printf("d");
+"n."        printf("n, uh-hah-hah-hah\. ");
+"R"         printf("W");
+"L"         printf("W");
+"Qu"        printf("Qw");
+"QU"        printf("QW");
+"TH "       printf("F ");
+"TH"        printf("D");
+"Th"        printf("D");
+"N."        printf("N, uh-hah-hah-hah\. ");
+
+%%
+main()
+{
+  yylex();
+  return(0);
+}
diff --git a/jethro.l b/jethro.l
new file mode 100644 (file)
index 0000000..1ea0f79
--- /dev/null
+++ b/jethro.l
@@ -0,0 +1,273 @@
+
+ /* jethro.l */
+%e 7000
+%k 5000
+%p 9000
+%n 2000
+%a 9000
+%o 7000
+
+SW     [\n \"(]
+EW     [\n ".",\"!?):;]
+BW     [\n ]
+
+%{
+ /* 
+ **   jethro  v. 1.00 06/10/93
+ **   Duane Paulson <ci922@cleveland.freenet.edu> "dap"
+ **   Hillbilly text filter. Compile with lex, then C.
+ **   syntax will be:
+ **      jethro <input_file >output_file.
+ **   Public domain. Use at your own risk. Y'all come back now, heah?
+ */
+ /*************************************************************************
+                               REVISION LOG
+ when      ver   who  change
+ --------  ----  ---  -----------------------------------------------------
+ 06/10/93  1.00  dap  Initial release.
+ 8.May.94  1.10  beg  Fixed for HP-UX
+ *************************************************************************/
+
+#define PUTLAST unput(*(yytext+strlen(yytext)-1));
+#define SUB(A) fprintf(yyout, "%c%s", *A|(*yytext&32), A+1);
+#define SSUB(A) fprintf(yyout, "%c%c%s", *yytext, *A|(*(yytext+1)&32), A+1);
+#define SESUB(A) fprintf(yyout, "%c%c%s", *yytext, *A|(*(yytext+1)&32), A+1); PUTLAST;
+#define ESUB(A) fprintf(yyout, "%c%s", *A|(*yytext&32), A+1); PUTLAST;
+
+#include <string.h>
+
+char WhAt[]="@(#)Duane Paulson's hillbilly text filter. (jethro)\n@(#)$Header: jethro.l,v 1.1 94/05/08 23:41:58 bgriffin Final $"
+;
+
+%}
+
+%%
+
+{SW}[Gg]reetings{EW}   |
+{SW}[Hh]i{EW}          |
+{SW}[Hh]ello{EW}       SESUB("Howdy");
+{SW}[Bb]ye{EW}         |
+{SW}[Gg]oodbye{EW}     SESUB("Y'all come back now, heah?");
+{SW}[Hh]ear{EW}        SESUB("Heah");
+{SW}[Cc]ar{EW}         |
+{SW}[Aa]uto{EW}                |
+{SW}[Rr]elax{EW}       SESUB("Set a spell -- put yore feet up");
+{SW}[Aa]utomobile{EW}  SESUB("Gasoline buggy");
+[Ss]wimming{BW}pool    SUB("Cement pond");
+[Pp]ool{BW}table       SUB("Fancy eatin table");
+[Pp]ool{BW}cue         |
+[Cc]ue{BW}stick                SUB("Fancy pot passer");
+{SW}[Bb][r]?oil{EW}    |
+{SW}[Bb]ake{EW}                |
+{SW}[Ff]ry{EW}         |
+{SW}[Ss]aute{EW}       |
+{SW}[Cc]ook{EW}        SESUB("Whomp up");
+{SW}[Bb][r]?oiling{EW} |
+{SW}[Bb]akeing{EW}     |
+{SW}[Ff]rying{EW}      |
+{SW}[Ss]auteing{EW}    |
+{SW}[Cc]ooking{EW}     SESUB("Whompin up");
+{SW}[Bb][r]?oiled{EW}  |
+{SW}[Bb]aked{EW}       |
+{SW}[Ff]ryed{EW}       |
+{SW}[Ss]auted{EW}      |
+{SW}[Cc]ooked{EW}      SESUB("Done whomped up");
+{SW}[Bb][r]?oils{EW}   |
+{SW}[Bb]akes{EW}       |
+{SW}[Ff]rys{EW}                |
+{SW}[Ss]autes{EW}      |
+{SW}[Cc]ooks{EW}       SESUB("Whomps up");
+{SW}[Gg]roceries{EW}   |
+{SW}[Ff]ood{EW}                SESUB("Vittles");
+[Ss]alad               SUB("Slaw");
+[Vv]egetable           SUB("Green");
+[Pp]otato              SUB("Tater");
+{SW}[Tt]omato          SSUB("Tuhmater");
+{SW}[Rr]hubarb{EW}     SESUB("Pie plant");
+{SW}[Ll]iquor{EW}      |
+{SW}[Ww]hisk[e]?y{EW}  |
+{SW}[Ss]cotch{EW}      |
+{SW}[Bb]ourbon{EW}     |
+{SW}[Gg]in{EW}         |
+{SW}[Vv]odka{EW}       |
+{SW}[Tt]equila{EW}     |
+{SW}[Ll]iqueur{EW}     SESUB("Rheumatiz medcin");
+{SW}[Bb]ooze{EW}       SESUB("Corn likker");
+{SW}[Cc]ocktail{EW}    |
+{SW}[Mm]ixed{BW}drink{EW} SESUB("Waste of good likker");
+{SW}[Bb]ar{EW}         SESUB("Dance hall");
+{SW}[Bb]ars{EW}                SESUB("Dance halls");
+{SW}[Ss]aloon          |
+{SW}[Cc]ocktail{BW}lounge SESUB("Dance hall");
+{SW}[Ww]hore           |
+{SW}[Pp]rostitute      |
+{SW}[Ss]lut            SSUB("Dance hall girl");
+{SW}[Ss]ecret{BW}agent{EW} |
+{SW}[Ss]py{EW}         |
+{SW}007{EW}            SESUB("Double nought spy");
+{SW}[Zz]ero{EW}                SESUB("Nought");
+{SW}[Pp]ants{EW}       SESUB("Trousers");
+{SW}[Jj]eans{EW}       |
+{SW}[Dd]ungarees{EW}   |
+{SW}[Ll]evi[']?s{EW}   SESUB("Overhalls");
+{SW}[Ss]hoe            SSUB("High-button shoe");
+{SW}[Jj]acket          SSUB("Coat");
+{SW}[Ss]hotgun         SSUB("Fowlin piece");
+{SW}[Rr]evolver                |
+{SW}[Gg]un             SSUB("Shootin iron");
+{SW}[Rr]ifle           SSUB("Ozark longrifle");
+{SW}[Ll]ibrar[yi]      SSUB("Liberry");
+[Ww]ash                        SUB("Warsh");
+[Ff]amily              SUB("Fambly");
+[Ff]ry{BW}pan          |
+[Ff]rying{BW}pan       |
+[Ss]aute{BW}pan                SUB("Skillet");
+{SW}[Aa]nimal          SSUB("Critter");
+{SW}FBI{EW}            |
+{SW}F.B.I.{EW}         |
+{SW}CIA{EW}            |
+{SW}C.I.A.{EW}         |
+{SW}ATF{EW}            |
+{SW}A.T.F.{EW}         |
+{SW}IRS{EW}            |
+{SW}I.R.S.{EW}         |
+{SW}SS{EW}             |
+{SW}S.S.{EW}           |
+{SW}[Ss]elective{BW}[Ss]ervice{EW} |
+{SW}[Ss]elective{BW}[Ss]ervice{BW}[Ss]ystem{EW} |
+{SW}[Ss]ecret{BW}[Ss]ervice{EW} SESUB("Revanooers");
+{SW}[Pp]olice          |
+{SW}[Pp]oliceman       |
+{SW}[Ss]heriff         |
+{SW}[Dd]eputy          |
+{SW}[Dd]eputy{BW}[Ss]heriff |
+{SW}[Mm]arshall                |
+{SW}[Dd]eputy{BW}[Mm]arshall |
+{SW}[Pp]ark{BW}[Rr]anger |
+{SW}[Tt]exas{BW}[Rr]anger |
+{SW}[Hh]ighway{BW}[Pp]atrol SSUB("Constable");
+
+{SW}[Mm]other          |
+{SW}[Mm][ao]mm[ay]?    |
+{SW}[Mm]ommie          |
+{SW}[Mm]om             SSUB("Maw");
+{SW}[Mm]a{EW}          SESUB("Maw");
+{SW}[Ff]ather          SSUB("Paw");
+{SW}[Dd]ad{EW}         |
+{SW}[Dd]addy           |
+{SW}[Pp]a{EW}          |
+{SW}[Pp][ao]p{EW}      |
+{SW}[Pp][ao]pp[ay]?{EW} SESUB("Paw");
+{SW}[Gg]randmother{EW} |
+{SW}[Gg]randma[w]?{EW} SESUB("Granny");
+{SW}[Gg]randfather{EW} |
+{SW}[Gg]ran[d]{1,2}ad[d]?[y]?{EW} |
+{SW}[Gg]randpop{EW}    |
+{SW}[Gg]randpa[w]?{EW} SESUB("Grampy");
+{SW}[Mm]y{EW}          SESUB("Mah");
+{SW}them{EW}           SESUB("em");
+[Dd]og                 SUB("Dawg");
+[Ll]awyer              |
+[Ll]egal{BW}counc[ei]l |
+[Ll]egal{BW}councellor |
+[Aa]ttorney            |
+[Aa]ttorney{BW}[Aa]t{BW}[Ll]aw SUB("City slicker");
+
+{SW}[Tt]han{EW}                SESUB("Then");
+[Cc]haracterize                SUB("Show");
+{SW}[Vv]ery{EW}                |
+{SW}[Ee]xtremely{EW}   |
+{SW}[Rr]eally{EW}      |
+{SW}[Rr]eal{EW}                SESUB("Right");
+{SW}[Hh]aven't{EW}     |
+{SW}[Ii]sn't{EW}       |
+{SW}[Aa]ren't{EW}      SESUB("Aint");
+{SW}[Ss]aid{EW}                |
+{SW}[Ss]ays{EW}                SESUB("Sez");           
+{SW}[Aa]re{EW}         SESUB("Is");
+{SW}[Ss]hould{EW}      SESUB("Ortta");
+{SW}[Pp]erhaps{EW}     |
+{SW}[Mm]aybe{EW}       SESUB("Mebbe");
+{SW}[Ss]ick{EW}                SESUB("Ailin'");
+{SW}I'm{BW}not{EW}     SESUB("I aint");
+{SW}[Ss]cared{EW}      SESUB("A-skeert");
+{SW}[Ss]care           SSUB("Skeer");
+{SW}[Hh]ave{EW}                SESUB("Got");
+{SW}[Pp]ossess{EW}     SESUB("Have");
+{SW}[Hh]elp            SSUB("Hep");
+{SW}[Tt]ired{EW}       SESUB("Tuckered out");
+{SW}[Cc]ompletely{EW}  SESUB("Plumb");
+{SW}[Dd]runk{EW}       SESUB("A mite woozy");
+
+{SW}[Yy]es{EW}         SESUB("Yep");
+{SW}[Nn]o{EW}          SESUB("Nope");
+
+{SW}[Ii]t{BW}is{EW}    SESUB("Tis");
+{SW}[Aa]t{BW}all{EW}   *(yytext+1)=(char)'A'; SESUB("A tall");
+
+{SW}[Aa]m{EW}          |
+{SW}[Aa]re{EW}         SESUB("Is");
+{SW}[Ww]as{EW}         |
+{SW}[Ww]ere{EW}                SESUB("Wuz");
+{SW}[Ww]asn't{EW}      SESUB("Wasunt");
+[Ee]very               SUB("Ever");
+{SW}[Ww]ant/s          SSUB("Is after");
+{SW}[Ww]anted{EW}      SESUB("Was after");
+{SW}[Ww]anting{EW}     SESUB("Hankering after");
+{SW}[Dd]oesn't{EW}     |
+{SW}[Dd]on't{EW}       SESUB("Dasent");
+{SW}[Yy]ou'll{EW}      SESUB("Y'all will");
+{SW}[Yy]our            SSUB("Yore");
+{SW}[Mm]ore{EW}                SESUB("Mo");
+tial                   SUB("shul");
+cious                  SUB("shus");
+ious                   SUB("yus");
+tion                   SUB("shun");
+{SW}[Cc]an{EW}         SESUB("C'n");
+{SW}[Yy]ou{EW}         SESUB("Y'all");
+{SW}[Ff]or{EW}         SESUB("Fer");
+{SW}[Tt]he{EW}         SESUB("Duh");
+ing                    SUB("in");
+{SW}[Tt]oo{EW}         SESUB("Besides");
+{SW}[Tt]o{EW}          SESUB("Tuh");
+{SW}[Aa][n]?{EW}       SESUB("Ah");
+{SW}[Aa]re{EW}         |
+{SW}[Oo]ur{EW}         |
+{SW}[Oo]r{EW}          SESUB("Ore");
+{SW}[Oo]f{EW}          SESUB("Uv");
+{SW}I{EW}              SESUB("Ah");
+{SW}I'm{EW}            SESUB("Ahm a");
+{SW}I'll{EW}           SESUB("Ahl");
+{SW}I'd{EW}            SESUB("Ah wood");
+'nt                    *(yytext)=(char)'u'; SUB("unt");
+'re                    SUB(" is");
+'ve                    SUB(" done");
+eed{EW}                        ECHO;
+ed{EW}                 ESUB("d");
+{SW}[Oo]wn{EW}         |
+{SW}[Tt]own{EW}                |
+{SW}[Dd]own{EW}                |
+{SW}[Gg]own{EW}                |
+{SW}[Bb]rown{EW}       ECHO;
+wn{EW}                 ESUB("ed");
+{SW}[Bb]elow{EW}       |
+{SW}[Kk]now{EW}                |
+{SW}[Tt]hrow{EW}       |
+{SW}[Gg]row{EW}                |
+{SW}[Hh]ow{EW}         |
+{SW}[Nn]ow{EW}         |
+{SW}[Bb]row{EW}                |
+{SW}[Ss]how{EW}                ECHO;
+ow{EW}                 ESUB("er");
+re{EW}                 |
+er{EW}                 ESUB("uh");
+{SW}[Hh]er{EW}         ECHO;
+!                      SUB(". Ye DAWGies!!!");
+
+%%
+
+main()
+{
+       yylex();
+}
+
diff --git a/jibberish b/jibberish
new file mode 100644 (file)
index 0000000..ad2743a
--- /dev/null
+++ b/jibberish
@@ -0,0 +1,53 @@
+#!/usr/bin/perl
+# jibberish -- run all filters in random order
+
+$ENV{PATH}.=":/usr/games";
+
+@all= qw(
+jive
+valspeak
+nyc
+cockney
+fin
+biffa
+ken
+aust
+drawl
+kraut
+newspeak
+chef
+marc-barrett
+censor
+fudd
+moo
+buck
+jethro
+b1ff
+eleet
+ky00te
+);
+
+# shuffle order
+srand;
+for (0..$#all) {
+       my $n= @all*rand;
+       my $was= $all[$_];
+       $all[$_]= $all[$n];
+       $all[$n]= $was;
+}
+
+# start the pipe...
+my $pipe= join '|', @all;
+open FILTER, "$pipe|"
+       or die "&quot;Never mind...\n";;
+
+# display the results
+while (<FILTER>) {
+       print $_
+}
+
+# This could be optimized: take the last program off the pipeline,
+# open the pipeline as standard input, then exec that last program.
+#
+# But you have to ask yourself: how important is it to optimize
+# the generation of jibberish?
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/ken.l b/ken.l
new file mode 100644 (file)
index 0000000..6e03181
--- /dev/null
+++ b/ken.l
@@ -0,0 +1,283 @@
+%{
+/*
+ * 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.
+ * 
+ * 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");
+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");
+" sing"                ECHO;
+" ring"                ECHO;
+"ing "         printf("in' ");
+" th"          printf(" f");
+"th"           printf("ff");
+". "           {   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();
+}
diff --git a/kraut.dir/destructions b/kraut.dir/destructions
new file mode 100644 (file)
index 0000000..4390437
--- /dev/null
@@ -0,0 +1,36 @@
+                                     Kraut
+                               +++++++++++++++++
+Compiling Kraut:
+
+You should have the files: kraut.c and kraut.l and lex.yy.c
+
+
+kraut.l must be run thru the unix 'lex' utility to produce the file lex.yy.c
+Then compile kraut.c and lex.yy.c to produce kraut
+
+     $lex kraut.l
+     $cc kraut.c lex.yy.c -o kraut
+  (You may get a list of warnings from the compiler. Ignore them.)
+
+Note: lex.yy.c is included in this package. You only need to use lex if you
+wish to make changes to kraut. 
+
+Using Kraut:
+
+ Kraut uses standard input and output.
+
+examples:
+
+To translate a file called 'note' and output kraut to a file called 'knote':
+
+     $ cat note | kraut > knote
+
+To translate a file called 'note' and just print it to the screen:
+
+     $ cat note | kraut
+
+To have kraut wait to translate what you type at the keyboard and return it in
+kraut on your screen:
+
+     $ kraut
+
diff --git a/kraut.dir/kraut.c b/kraut.dir/kraut.c
new file mode 100644 (file)
index 0000000..2880331
--- /dev/null
@@ -0,0 +1,21 @@
+#include <stdio.h>
+/* Kraut v0.9  */
+/*     by      */
+/* John Sparks */
+/*  5-5-1989   */
+
+/* This is in the public domain. Do with it as you will. */
+
+main()
+{
+char *line; 
+
+    while(line = (char *) yylex()){
+         printf("%s", line);
+    }
+}
+
+yywrap ()
+{
+    return (1);
+}
diff --git a/kraut.dir/kraut.l b/kraut.dir/kraut.l
new file mode 100644 (file)
index 0000000..0cfc6d0
--- /dev/null
@@ -0,0 +1,80 @@
+%e 2000
+%p 5000
+%n 1000
+%k 500
+%a 4000
+%o 2000
+BW [      ]
+EW [      .,;!?]
+
+%{
+     char buf[128];
+
+%}
+
+%%
+ing                  return("ingkt");
+" the "             return(" ze ");
+"The "              return("Ze ");
+" with "            return(" mitt ");
+"With "             return("Mitt ");
+wr                  return("w-r-r");
+Wr                  return("W-r-r");
+R                   return("R-r-r");
+"Yes "              return("Jawohl ");
+" r"                return(" r-r-r");
+"Yes."              return("Jawohl.");
+"Yes!"              return("Jawohl!");
+"YES!"              return("JAWOHL!");
+" yes "             return(" ja ");
+" yes."             return(" ja.");
+" yes!"             return(" yes!");
+"No "               return("Nein ");
+"No!"               return("Nein!");
+"No?"               return("Nein?");
+" no "              return(" nein ");
+" no."              return(" nein.");
+" no!"              return(" nein!");
+" no?"              return(" nein?");
+[Mm]"r."            return("Herr");
+[Mm]"rs."           return("Frau");
+Miss                return("Fraulein");
+" of "              return(" uff ");
+"Of "               return("Uff ");
+my                  return("mein");
+My                  return("Mein");
+" and "             return(" undt ");
+"And "              return("Undt ");
+"One "              return("Ein ");
+" one"              return(" ein");
+"Is "               return("Ist ");
+" is "              return(" ist ");
+"ow "               return("ow ");
+"w "                return("w ");
+sh                  return("sch");
+Sh                  return("Sch");
+ch                  return("ch");
+Ch                  return("Ch");
+" c"                return(" k");
+" C"                return(" K");
+
+v                   return("f");
+V                   return("F");
+" w"                return(" v");
+W                   return("V");
+th                  return("d");
+Th                  return("D");
+[Jj]ohn             return("Johann");
+[Ww]illiam          return("Wilhelm");
+[Bb]rad             return("Wilhelm");
+[Gg]ary             return("Gerhardt");
+[Jj]on              return("Hansel");
+
+[a-f]"!"       {sprintf(buf,"%s Naturlich!",yytext);return(buf);}
+[p-z]"!"       {sprintf(buf,"%s Seig Heil!",yytext);return(buf);}
+.              return(yytext);
+\n             return("\n");
+
+%%
+
+
diff --git a/kraut.dir/lex.yy.c b/kraut.dir/lex.yy.c
new file mode 100644 (file)
index 0000000..038b6bb
--- /dev/null
@@ -0,0 +1,1878 @@
+/* A lexical scanner generated by flex */
+
+/* Scanner skeleton version:
+ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
+ */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+
+#include <stdio.h>
+
+
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
+#endif
+#endif
+
+
+#ifdef __cplusplus
+
+#include <stdlib.h>
+#include <unistd.h>
+
+/* Use prototypes in function declarations. */
+#define YY_USE_PROTOS
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else  /* ! __cplusplus */
+
+#if __STDC__
+
+#define YY_USE_PROTOS
+#define YY_USE_CONST
+
+#endif /* __STDC__ */
+#endif /* ! __cplusplus */
+
+#ifdef __TURBOC__
+ #pragma warn -rch
+ #pragma warn -use
+#include <io.h>
+#include <stdlib.h>
+#define YY_USE_CONST
+#define YY_USE_PROTOS
+#endif
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+
+#ifdef YY_USE_PROTOS
+#define YY_PROTO(proto) proto
+#else
+#define YY_PROTO(proto) ()
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yy_start = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yy_start - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart( yyin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#define YY_BUF_SIZE 16384
+
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+
+extern int yyleng;
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+/* The funky do-while in the following #define is used to turn the definition
+ * int a single C statement (which needs a semi-colon terminator).  This
+ * avoids problems with code like:
+ *
+ *     if ( condition_holds )
+ *             yyless( 5 );
+ *     else
+ *             do_something_else();
+ *
+ * Prior to using the do-while the compiler would get upset at the
+ * "else" because it interpreted the "if" statement as being all
+ * done when it reached the ';' after the yyless() call.
+ */
+
+/* Return all but the first 'n' matched characters back to the input stream. */
+
+#define yyless(n) \
+       do \
+               { \
+               /* Undo effects of setting up yytext. */ \
+               *yy_cp = yy_hold_char; \
+               YY_RESTORE_YY_MORE_OFFSET \
+               yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
+               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+               } \
+       while ( 0 )
+
+#define unput(c) yyunput( c, yytext_ptr )
+
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+typedef unsigned int yy_size_t;
+
+
+struct yy_buffer_state
+       {
+       FILE *yy_input_file;
+
+       char *yy_ch_buf;                /* input buffer */
+       char *yy_buf_pos;               /* current position in input buffer */
+
+       /* Size of input buffer in bytes, not including room for EOB
+        * characters.
+        */
+       yy_size_t yy_buf_size;
+
+       /* Number of characters read into yy_ch_buf, not including EOB
+        * characters.
+        */
+       int yy_n_chars;
+
+       /* Whether we "own" the buffer - i.e., we know we created it,
+        * and can realloc() it to grow it, and should free() it to
+        * delete it.
+        */
+       int yy_is_our_buffer;
+
+       /* Whether this is an "interactive" input source; if so, and
+        * if we're using stdio for input, then we want to use getc()
+        * instead of fread(), to make sure we stop fetching input after
+        * each newline.
+        */
+       int yy_is_interactive;
+
+       /* Whether we're considered to be at the beginning of a line.
+        * If so, '^' rules will be active on the next match, otherwise
+        * not.
+        */
+       int yy_at_bol;
+
+       /* Whether to try to fill the input buffer when we reach the
+        * end of it.
+        */
+       int yy_fill_buffer;
+
+       int yy_buffer_status;
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+       /* When an EOF's been seen but there's still some text to process
+        * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+        * shouldn't try reading from the input source any more.  We might
+        * still have a bunch of tokens to match, though, because of
+        * possible backing-up.
+        *
+        * When we actually see the EOF, we change the status to "new"
+        * (via yyrestart()), so that the user can continue scanning by
+        * just pointing yyin at a new input file.
+        */
+#define YY_BUFFER_EOF_PENDING 2
+       };
+
+static YY_BUFFER_STATE yy_current_buffer = 0;
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ */
+#define YY_CURRENT_BUFFER yy_current_buffer
+
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+
+static int yy_n_chars;         /* number of characters read into yy_ch_buf */
+
+
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 1;                /* whether we need to initialize */
+static int yy_start = 0;       /* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart YY_PROTO(( FILE *input_file ));
+
+void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
+void yy_load_buffer_state YY_PROTO(( void ));
+YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
+void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
+void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
+
+YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
+YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
+YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
+
+static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
+static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
+static void yy_flex_free YY_PROTO(( void * ));
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+       { \
+       if ( ! yy_current_buffer ) \
+               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+       yy_current_buffer->yy_is_interactive = is_interactive; \
+       }
+
+#define yy_set_bol(at_bol) \
+       { \
+       if ( ! yy_current_buffer ) \
+               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+       yy_current_buffer->yy_at_bol = at_bol; \
+       }
+
+#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
+
+typedef unsigned char YY_CHAR;
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+typedef int yy_state_type;
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state YY_PROTO(( void ));
+static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
+static int yy_get_next_buffer YY_PROTO(( void ));
+static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+       yytext_ptr = yy_bp; \
+       yyleng = (int) (yy_cp - yy_bp); \
+       yy_hold_char = *yy_cp; \
+       *yy_cp = '\0'; \
+       yy_c_buf_p = yy_cp;
+
+#define YY_NUM_RULES 60
+#define YY_END_OF_BUFFER 61
+static yyconst short int yy_accept[138] =
+    {   0,
+        0,    0,   61,   58,   59,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,    8,   58,   58,   46,   48,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       45,   58,   44,    0,   43,    0,    0,    0,   10,    0,
+       47,    0,    0,    0,   42,    0,    0,    0,    0,    0,
+       30,    0,    0,    0,   40,   50,    0,    7,    0,    0,
+       56,   41,    0,   29,    0,   57,   39,   49,   38,    0,
+        6,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   35,    0,   55,    0,   24,    0,   17,   18,
+       19,   28,    0,    0,    0,    0,    0,    0,    1,   37,
+
+        0,   36,   20,   22,   21,   23,   27,   34,    0,    0,
+        0,   32,   53,   54,   51,   26,   25,   33,    3,    0,
+        0,   13,    9,   12,   11,   31,    2,    0,   14,   16,
+       15,    0,    5,    4,    0,   52,    0
+    } ;
+
+static yyconst int yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    3,    4,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    5,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    6,    1,    7,    8,    9,    1,   10,    1,
+       11,    1,   12,   13,    1,    1,   14,   15,   16,    1,
+        1,   17,   18,   19,    1,   20,   21,    1,   22,    1,
+        1,    1,    1,    1,    1,    1,   23,   24,   25,   26,
+
+       27,   28,   29,   30,   31,   13,    1,   32,   33,   34,
+       35,   36,   36,   37,   38,   39,   36,   40,   41,   36,
+       42,   36,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static yyconst int yy_meta[43] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1
+    } ;
+
+static yyconst short int yy_base[138] =
+    {   0,
+        0,    0,  156,  157,  157,   34,  121,  117,  123,  129,
+      113,  115,   13,  114,   17,  157,  118,  117,  157,   15,
+       37,  142,   44,   49,  111,   12,  103,  139,   52,   54,
+      138,   57,  157,  107,  157,  102,  104,   38,  157,  108,
+      106,  109,  109,  111,  157,   96,  129,   33,   93,   57,
+      157,   74,  127,  102,  157,  101,   51,  157,  109,   88,
+      157,  157,   96,  157,  121,  157,  157,  157,  157,   91,
+      157,   96,  118,   93,  117,   92,   91,   78,   78,  112,
+       88,   71,  157,   78,  157,   73,  157,  105,  157,  157,
+      157,  157,  106,  105,   75,   76,  101,   82,  157,  157,
+
+      101,  157,  157,  157,  157,  157,  157,  157,  100,   72,
+       88,  157,  157,  157,  157,  157,  157,  157,  157,   70,
+       97,  157,  157,  157,  157,  157,  157,   86,  157,  157,
+      157,   51,  157,  157,   37,  157,  157
+    } ;
+
+static yyconst short int yy_def[138] =
+    {   0,
+      137,    1,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,    0
+    } ;
+
+static yyconst short int yy_nxt[200] =
+    {   0,
+        4,    5,    6,    4,    4,    4,    7,    8,    9,    4,
+       10,   11,   12,   13,   14,   15,   16,   17,   18,   19,
+       20,   21,   22,   23,   24,   22,   22,   22,   10,    4,
+       25,    4,   26,    4,   27,   28,   28,   29,   30,   31,
+       32,   28,   33,   49,   53,   57,   59,   61,   50,   50,
+       54,   58,   61,   64,   51,   66,   34,   66,   35,   69,
+       66,   87,   84,   60,   36,   75,   85,   37,   38,  136,
+       39,   76,   40,  135,   41,   42,   89,   90,   62,   91,
+       44,   67,   95,   68,  123,  124,  125,   70,  134,   96,
+      129,  130,  131,   71,   88,  103,  104,  105,  106,  133,
+
+      132,  128,  127,  126,  122,  121,  120,  119,  118,  117,
+      116,  115,  114,  113,  112,  111,  110,  109,  108,  107,
+      102,  101,   95,  100,   99,   98,   97,   94,   93,   92,
+       86,   83,   82,   81,   80,   79,   78,   77,   74,   73,
+       72,   66,   66,   65,   63,   61,   56,   55,   52,   48,
+       47,   46,   45,   44,   43,  137,    3,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137
+
+    } ;
+
+static yyconst short int yy_chk[200] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    6,   13,   15,   20,   21,   23,   26,   13,
+       15,   20,   24,   26,   13,   29,    6,   30,    6,   32,
+       32,   50,   48,   21,    6,   38,   48,    6,    6,  135,
+        6,   38,    6,  132,    6,    6,   52,   52,   24,   52,
+       23,   29,   57,   30,   98,   98,   98,   32,  128,   57,
+      111,  111,  111,   32,   50,   74,   74,   74,   74,  121,
+
+      120,  110,  109,  101,   97,   96,   95,   94,   93,   88,
+       86,   84,   82,   81,   80,   79,   78,   77,   76,   75,
+       73,   72,   70,   65,   63,   60,   59,   56,   54,   53,
+       49,   47,   46,   44,   43,   42,   41,   40,   37,   36,
+       34,   31,   28,   27,   25,   22,   18,   17,   14,   12,
+       11,   10,    9,    8,    7,    3,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137
+
+    } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "kraut.l"
+#define INITIAL 0
+#line 11 "kraut.l"
+     char buf[128];
+
+#line 454 "lex.yy.c"
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap YY_PROTO(( void ));
+#else
+extern int yywrap YY_PROTO(( void ));
+#endif
+#endif
+
+#ifndef YY_NO_UNPUT
+static void yyunput YY_PROTO(( int c, char *buf_ptr ));
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen YY_PROTO(( yyconst char * ));
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput YY_PROTO(( void ));
+#else
+static int input YY_PROTO(( void ));
+#endif
+#endif
+
+#if YY_STACK_USED
+static int yy_start_stack_ptr = 0;
+static int yy_start_stack_depth = 0;
+static int *yy_start_stack = 0;
+#ifndef YY_NO_PUSH_STATE
+static void yy_push_state YY_PROTO(( int new_state ));
+#endif
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state YY_PROTO(( void ));
+#endif
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state YY_PROTO(( void ));
+#endif
+
+#else
+#define YY_NO_PUSH_STATE 1
+#define YY_NO_POP_STATE 1
+#define YY_NO_TOP_STATE 1
+#endif
+
+#ifdef YY_MALLOC_DECL
+YY_MALLOC_DECL
+#else
+#if __STDC__
+#ifndef __cplusplus
+#include <stdlib.h>
+#endif
+#else
+/* Just try to get by without declaring the routines.  This will fail
+ * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
+ * or sizeof(void*) != sizeof(int).
+ */
+#endif
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+       if ( yy_current_buffer->yy_is_interactive ) \
+               { \
+               int c = '*', n; \
+               for ( n = 0; n < max_size && \
+                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+                       buf[n] = (char) c; \
+               if ( c == '\n' ) \
+                       buf[n++] = (char) c; \
+               if ( c == EOF && ferror( yyin ) ) \
+                       YY_FATAL_ERROR( "input in flex scanner failed" ); \
+               result = n; \
+               } \
+       else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
+                 && ferror( yyin ) ) \
+               YY_FATAL_ERROR( "input in flex scanner failed" );
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL int yylex YY_PROTO(( void ))
+#endif
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+       YY_USER_ACTION
+
+YY_DECL
+       {
+       register yy_state_type yy_current_state;
+       register char *yy_cp, *yy_bp;
+       register int yy_act;
+
+#line 15 "kraut.l"
+
+#line 607 "lex.yy.c"
+
+       if ( yy_init )
+               {
+               yy_init = 0;
+
+#ifdef YY_USER_INIT
+               YY_USER_INIT;
+#endif
+
+               if ( ! yy_start )
+                       yy_start = 1;   /* first start state */
+
+               if ( ! yyin )
+                       yyin = stdin;
+
+               if ( ! yyout )
+                       yyout = stdout;
+
+               if ( ! yy_current_buffer )
+                       yy_current_buffer =
+                               yy_create_buffer( yyin, YY_BUF_SIZE );
+
+               yy_load_buffer_state();
+               }
+
+       while ( 1 )             /* loops until end-of-file is reached */
+               {
+               yy_cp = yy_c_buf_p;
+
+               /* Support of yytext. */
+               *yy_cp = yy_hold_char;
+
+               /* yy_bp points to the position in yy_ch_buf of the start of
+                * the current run.
+                */
+               yy_bp = yy_cp;
+
+               yy_current_state = yy_start;
+yy_match:
+               do
+                       {
+                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+                       if ( yy_accept[yy_current_state] )
+                               {
+                               yy_last_accepting_state = yy_current_state;
+                               yy_last_accepting_cpos = yy_cp;
+                               }
+                       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+                               {
+                               yy_current_state = (int) yy_def[yy_current_state];
+                               if ( yy_current_state >= 138 )
+                                       yy_c = yy_meta[(unsigned int) yy_c];
+                               }
+                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+                       ++yy_cp;
+                       }
+               while ( yy_base[yy_current_state] != 157 );
+
+yy_find_action:
+               yy_act = yy_accept[yy_current_state];
+               if ( yy_act == 0 )
+                       { /* have to back up */
+                       yy_cp = yy_last_accepting_cpos;
+                       yy_current_state = yy_last_accepting_state;
+                       yy_act = yy_accept[yy_current_state];
+                       }
+
+               YY_DO_BEFORE_ACTION;
+
+
+do_action:     /* This label is used only to access EOF actions. */
+
+
+               switch ( yy_act )
+       { /* beginning of action switch */
+                       case 0: /* must back up */
+                       /* undo the effects of YY_DO_BEFORE_ACTION */
+                       *yy_cp = yy_hold_char;
+                       yy_cp = yy_last_accepting_cpos;
+                       yy_current_state = yy_last_accepting_state;
+                       goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+#line 16 "kraut.l"
+return("ingkt");
+       YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 17 "kraut.l"
+return(" ze ");
+       YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 18 "kraut.l"
+return("Ze ");
+       YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 19 "kraut.l"
+return(" mitt ");
+       YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 20 "kraut.l"
+return("Mitt ");
+       YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 21 "kraut.l"
+return("w-r-r");
+       YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 22 "kraut.l"
+return("W-r-r");
+       YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 23 "kraut.l"
+return("R-r-r");
+       YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 24 "kraut.l"
+return("Jawohl ");
+       YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 25 "kraut.l"
+return(" r-r-r");
+       YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 26 "kraut.l"
+return("Jawohl.");
+       YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 27 "kraut.l"
+return("Jawohl!");
+       YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 28 "kraut.l"
+return("JAWOHL!");
+       YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 29 "kraut.l"
+return(" ja ");
+       YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 30 "kraut.l"
+return(" ja.");
+       YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 31 "kraut.l"
+return(" yes!");
+       YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 32 "kraut.l"
+return("Nein ");
+       YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 33 "kraut.l"
+return("Nein!");
+       YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 34 "kraut.l"
+return("Nein?");
+       YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 35 "kraut.l"
+return(" nein ");
+       YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 36 "kraut.l"
+return(" nein.");
+       YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 37 "kraut.l"
+return(" nein!");
+       YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 38 "kraut.l"
+return(" nein?");
+       YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 39 "kraut.l"
+return("Herr");
+       YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 40 "kraut.l"
+return("Frau");
+       YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 41 "kraut.l"
+return("Fraulein");
+       YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 42 "kraut.l"
+return(" uff ");
+       YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 43 "kraut.l"
+return("Uff ");
+       YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 44 "kraut.l"
+return("mein");
+       YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 45 "kraut.l"
+return("Mein");
+       YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 46 "kraut.l"
+return(" undt ");
+       YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 47 "kraut.l"
+return("Undt ");
+       YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 48 "kraut.l"
+return("Ein ");
+       YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 49 "kraut.l"
+return(" ein");
+       YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 50 "kraut.l"
+return("Ist ");
+       YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 51 "kraut.l"
+return(" ist ");
+       YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 52 "kraut.l"
+return("ow ");
+       YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 53 "kraut.l"
+return("w ");
+       YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 54 "kraut.l"
+return("sch");
+       YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 55 "kraut.l"
+return("Sch");
+       YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 56 "kraut.l"
+return("ch");
+       YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 57 "kraut.l"
+return("Ch");
+       YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 58 "kraut.l"
+return(" k");
+       YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 59 "kraut.l"
+return(" K");
+       YY_BREAK
+case 45:
+YY_RULE_SETUP
+#line 61 "kraut.l"
+return("f");
+       YY_BREAK
+case 46:
+YY_RULE_SETUP
+#line 62 "kraut.l"
+return("F");
+       YY_BREAK
+case 47:
+YY_RULE_SETUP
+#line 63 "kraut.l"
+return(" v");
+       YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 64 "kraut.l"
+return("V");
+       YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 65 "kraut.l"
+return("d");
+       YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 66 "kraut.l"
+return("D");
+       YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 67 "kraut.l"
+return("Johann");
+       YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 68 "kraut.l"
+return("Wilhelm");
+       YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 69 "kraut.l"
+return("Wilhelm");
+       YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 70 "kraut.l"
+return("Gerhardt");
+       YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 71 "kraut.l"
+return("Hansel");
+       YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 73 "kraut.l"
+{sprintf(buf,"%s Naturlich!",yytext);return(buf);}
+       YY_BREAK
+case 57:
+YY_RULE_SETUP
+#line 74 "kraut.l"
+{sprintf(buf,"%s Seig Heil!",yytext);return(buf);}
+       YY_BREAK
+case 58:
+YY_RULE_SETUP
+#line 75 "kraut.l"
+return(yytext);
+       YY_BREAK
+case 59:
+YY_RULE_SETUP
+#line 76 "kraut.l"
+return("\n");
+       YY_BREAK
+case 60:
+YY_RULE_SETUP
+#line 78 "kraut.l"
+ECHO;
+       YY_BREAK
+#line 990 "lex.yy.c"
+case YY_STATE_EOF(INITIAL):
+       yyterminate();
+
+       case YY_END_OF_BUFFER:
+               {
+               /* Amount of text matched not including the EOB char. */
+               int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
+
+               /* Undo the effects of YY_DO_BEFORE_ACTION. */
+               *yy_cp = yy_hold_char;
+               YY_RESTORE_YY_MORE_OFFSET
+
+               if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
+                       {
+                       /* We're scanning a new file or input source.  It's
+                        * possible that this happened because the user
+                        * just pointed yyin at a new source and called
+                        * yylex().  If so, then we have to assure
+                        * consistency between yy_current_buffer and our
+                        * globals.  Here is the right place to do so, because
+                        * this is the first action (other than possibly a
+                        * back-up) that will match for the new input source.
+                        */
+                       yy_n_chars = yy_current_buffer->yy_n_chars;
+                       yy_current_buffer->yy_input_file = yyin;
+                       yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
+                       }
+
+               /* Note that here we test for yy_c_buf_p "<=" to the position
+                * of the first EOB in the buffer, since yy_c_buf_p will
+                * already have been incremented past the NUL character
+                * (since all states make transitions on EOB to the
+                * end-of-buffer state).  Contrast this with the test
+                * in input().
+                */
+               if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+                       { /* This was really a NUL. */
+                       yy_state_type yy_next_state;
+
+                       yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
+
+                       yy_current_state = yy_get_previous_state();
+
+                       /* Okay, we're now positioned to make the NUL
+                        * transition.  We couldn't have
+                        * yy_get_previous_state() go ahead and do it
+                        * for us because it doesn't know how to deal
+                        * with the possibility of jamming (and we don't
+                        * want to build jamming into it because then it
+                        * will run more slowly).
+                        */
+
+                       yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+                       yy_bp = yytext_ptr + YY_MORE_ADJ;
+
+                       if ( yy_next_state )
+                               {
+                               /* Consume the NUL. */
+                               yy_cp = ++yy_c_buf_p;
+                               yy_current_state = yy_next_state;
+                               goto yy_match;
+                               }
+
+                       else
+                               {
+                               yy_cp = yy_c_buf_p;
+                               goto yy_find_action;
+                               }
+                       }
+
+               else switch ( yy_get_next_buffer() )
+                       {
+                       case EOB_ACT_END_OF_FILE:
+                               {
+                               yy_did_buffer_switch_on_eof = 0;
+
+                               if ( yywrap() )
+                                       {
+                                       /* Note: because we've taken care in
+                                        * yy_get_next_buffer() to have set up
+                                        * yytext, we can now set up
+                                        * yy_c_buf_p so that if some total
+                                        * hoser (like flex itself) wants to
+                                        * call the scanner after we return the
+                                        * YY_NULL, it'll still work - another
+                                        * YY_NULL will get returned.
+                                        */
+                                       yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
+
+                                       yy_act = YY_STATE_EOF(YY_START);
+                                       goto do_action;
+                                       }
+
+                               else
+                                       {
+                                       if ( ! yy_did_buffer_switch_on_eof )
+                                               YY_NEW_FILE;
+                                       }
+                               break;
+                               }
+
+                       case EOB_ACT_CONTINUE_SCAN:
+                               yy_c_buf_p =
+                                       yytext_ptr + yy_amount_of_matched_text;
+
+                               yy_current_state = yy_get_previous_state();
+
+                               yy_cp = yy_c_buf_p;
+                               yy_bp = yytext_ptr + YY_MORE_ADJ;
+                               goto yy_match;
+
+                       case EOB_ACT_LAST_MATCH:
+                               yy_c_buf_p =
+                               &yy_current_buffer->yy_ch_buf[yy_n_chars];
+
+                               yy_current_state = yy_get_previous_state();
+
+                               yy_cp = yy_c_buf_p;
+                               yy_bp = yytext_ptr + YY_MORE_ADJ;
+                               goto yy_find_action;
+                       }
+               break;
+               }
+
+       default:
+               YY_FATAL_ERROR(
+                       "fatal flex scanner internal error--no action found" );
+       } /* end of action switch */
+               } /* end of scanning one token */
+       } /* end of yylex */
+
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *     EOB_ACT_LAST_MATCH -
+ *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *     EOB_ACT_END_OF_FILE - end of file
+ */
+
+static int yy_get_next_buffer()
+       {
+       register char *dest = yy_current_buffer->yy_ch_buf;
+       register char *source = yytext_ptr;
+       register int number_to_move, i;
+       int ret_val;
+
+       if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
+               YY_FATAL_ERROR(
+               "fatal flex scanner internal error--end of buffer missed" );
+
+       if ( yy_current_buffer->yy_fill_buffer == 0 )
+               { /* Don't try to fill the buffer, so this is an EOF. */
+               if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
+                       {
+                       /* We matched a single character, the EOB, so
+                        * treat this as a final EOF.
+                        */
+                       return EOB_ACT_END_OF_FILE;
+                       }
+
+               else
+                       {
+                       /* We matched some text prior to the EOB, first
+                        * process it.
+                        */
+                       return EOB_ACT_LAST_MATCH;
+                       }
+               }
+
+       /* Try to read more data. */
+
+       /* First move last chars to start of buffer. */
+       number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
+
+       for ( i = 0; i < number_to_move; ++i )
+               *(dest++) = *(source++);
+
+       if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+               /* don't do the read, it's not guaranteed to return an EOF,
+                * just force an EOF
+                */
+               yy_current_buffer->yy_n_chars = yy_n_chars = 0;
+
+       else
+               {
+               int num_to_read =
+                       yy_current_buffer->yy_buf_size - number_to_move - 1;
+
+               while ( num_to_read <= 0 )
+                       { /* Not enough room in the buffer - grow it. */
+#ifdef YY_USES_REJECT
+                       YY_FATAL_ERROR(
+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+#else
+
+                       /* just a shorter name for the current buffer */
+                       YY_BUFFER_STATE b = yy_current_buffer;
+
+                       int yy_c_buf_p_offset =
+                               (int) (yy_c_buf_p - b->yy_ch_buf);
+
+                       if ( b->yy_is_our_buffer )
+                               {
+                               int new_size = b->yy_buf_size * 2;
+
+                               if ( new_size <= 0 )
+                                       b->yy_buf_size += b->yy_buf_size / 8;
+                               else
+                                       b->yy_buf_size *= 2;
+
+                               b->yy_ch_buf = (char *)
+                                       /* Include room in for 2 EOB chars. */
+                                       yy_flex_realloc( (void *) b->yy_ch_buf,
+                                                        b->yy_buf_size + 2 );
+                               }
+                       else
+                               /* Can't grow it, we don't own it. */
+                               b->yy_ch_buf = 0;
+
+                       if ( ! b->yy_ch_buf )
+                               YY_FATAL_ERROR(
+                               "fatal error - scanner input buffer overflow" );
+
+                       yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+                       num_to_read = yy_current_buffer->yy_buf_size -
+                                               number_to_move - 1;
+#endif
+                       }
+
+               if ( num_to_read > YY_READ_BUF_SIZE )
+                       num_to_read = YY_READ_BUF_SIZE;
+
+               /* Read in more data. */
+               YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
+                       yy_n_chars, num_to_read );
+
+               yy_current_buffer->yy_n_chars = yy_n_chars;
+               }
+
+       if ( yy_n_chars == 0 )
+               {
+               if ( number_to_move == YY_MORE_ADJ )
+                       {
+                       ret_val = EOB_ACT_END_OF_FILE;
+                       yyrestart( yyin );
+                       }
+
+               else
+                       {
+                       ret_val = EOB_ACT_LAST_MATCH;
+                       yy_current_buffer->yy_buffer_status =
+                               YY_BUFFER_EOF_PENDING;
+                       }
+               }
+
+       else
+               ret_val = EOB_ACT_CONTINUE_SCAN;
+
+       yy_n_chars += number_to_move;
+       yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+       yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+       yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
+
+       return ret_val;
+       }
+
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+static yy_state_type yy_get_previous_state()
+       {
+       register yy_state_type yy_current_state;
+       register char *yy_cp;
+
+       yy_current_state = yy_start;
+
+       for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
+               {
+               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+               if ( yy_accept[yy_current_state] )
+                       {
+                       yy_last_accepting_state = yy_current_state;
+                       yy_last_accepting_cpos = yy_cp;
+                       }
+               while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+                       {
+                       yy_current_state = (int) yy_def[yy_current_state];
+                       if ( yy_current_state >= 138 )
+                               yy_c = yy_meta[(unsigned int) yy_c];
+                       }
+               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+               }
+
+       return yy_current_state;
+       }
+
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *     next_state = yy_try_NUL_trans( current_state );
+ */
+
+#ifdef YY_USE_PROTOS
+static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
+#else
+static yy_state_type yy_try_NUL_trans( yy_current_state )
+yy_state_type yy_current_state;
+#endif
+       {
+       register int yy_is_jam;
+       register char *yy_cp = yy_c_buf_p;
+
+       register YY_CHAR yy_c = 1;
+       if ( yy_accept[yy_current_state] )
+               {
+               yy_last_accepting_state = yy_current_state;
+               yy_last_accepting_cpos = yy_cp;
+               }
+       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+               {
+               yy_current_state = (int) yy_def[yy_current_state];
+               if ( yy_current_state >= 138 )
+                       yy_c = yy_meta[(unsigned int) yy_c];
+               }
+       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+       yy_is_jam = (yy_current_state == 137);
+
+       return yy_is_jam ? 0 : yy_current_state;
+       }
+
+
+#ifndef YY_NO_UNPUT
+#ifdef YY_USE_PROTOS
+static void yyunput( int c, register char *yy_bp )
+#else
+static void yyunput( c, yy_bp )
+int c;
+register char *yy_bp;
+#endif
+       {
+       register char *yy_cp = yy_c_buf_p;
+
+       /* undo effects of setting up yytext */
+       *yy_cp = yy_hold_char;
+
+       if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+               { /* need to shift things up to make room */
+               /* +2 for EOB chars. */
+               register int number_to_move = yy_n_chars + 2;
+               register char *dest = &yy_current_buffer->yy_ch_buf[
+                                       yy_current_buffer->yy_buf_size + 2];
+               register char *source =
+                               &yy_current_buffer->yy_ch_buf[number_to_move];
+
+               while ( source > yy_current_buffer->yy_ch_buf )
+                       *--dest = *--source;
+
+               yy_cp += (int) (dest - source);
+               yy_bp += (int) (dest - source);
+               yy_current_buffer->yy_n_chars =
+                       yy_n_chars = yy_current_buffer->yy_buf_size;
+
+               if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+                       YY_FATAL_ERROR( "flex scanner push-back overflow" );
+               }
+
+       *--yy_cp = (char) c;
+
+
+       yytext_ptr = yy_bp;
+       yy_hold_char = *yy_cp;
+       yy_c_buf_p = yy_cp;
+       }
+#endif /* ifndef YY_NO_UNPUT */
+
+
+#ifdef __cplusplus
+static int yyinput()
+#else
+static int input()
+#endif
+       {
+       int c;
+
+       *yy_c_buf_p = yy_hold_char;
+
+       if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+               {
+               /* yy_c_buf_p now points to the character we want to return.
+                * If this occurs *before* the EOB characters, then it's a
+                * valid NUL; if not, then we've hit the end of the buffer.
+                */
+               if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+                       /* This was really a NUL. */
+                       *yy_c_buf_p = '\0';
+
+               else
+                       { /* need more input */
+                       int offset = yy_c_buf_p - yytext_ptr;
+                       ++yy_c_buf_p;
+
+                       switch ( yy_get_next_buffer() )
+                               {
+                               case EOB_ACT_LAST_MATCH:
+                                       /* This happens because yy_g_n_b()
+                                        * sees that we've accumulated a
+                                        * token and flags that we need to
+                                        * try matching the token before
+                                        * proceeding.  But for input(),
+                                        * there's no matching to consider.
+                                        * So convert the EOB_ACT_LAST_MATCH
+                                        * to EOB_ACT_END_OF_FILE.
+                                        */
+
+                                       /* Reset buffer status. */
+                                       yyrestart( yyin );
+
+                                       /* fall through */
+
+                               case EOB_ACT_END_OF_FILE:
+                                       {
+                                       if ( yywrap() )
+                                               return EOF;
+
+                                       if ( ! yy_did_buffer_switch_on_eof )
+                                               YY_NEW_FILE;
+#ifdef __cplusplus
+                                       return yyinput();
+#else
+                                       return input();
+#endif
+                                       }
+
+                               case EOB_ACT_CONTINUE_SCAN:
+                                       yy_c_buf_p = yytext_ptr + offset;
+                                       break;
+                               }
+                       }
+               }
+
+       c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
+       *yy_c_buf_p = '\0';     /* preserve yytext */
+       yy_hold_char = *++yy_c_buf_p;
+
+
+       return c;
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yyrestart( FILE *input_file )
+#else
+void yyrestart( input_file )
+FILE *input_file;
+#endif
+       {
+       if ( ! yy_current_buffer )
+               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+
+       yy_init_buffer( yy_current_buffer, input_file );
+       yy_load_buffer_state();
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
+#else
+void yy_switch_to_buffer( new_buffer )
+YY_BUFFER_STATE new_buffer;
+#endif
+       {
+       if ( yy_current_buffer == new_buffer )
+               return;
+
+       if ( yy_current_buffer )
+               {
+               /* Flush out information for old buffer. */
+               *yy_c_buf_p = yy_hold_char;
+               yy_current_buffer->yy_buf_pos = yy_c_buf_p;
+               yy_current_buffer->yy_n_chars = yy_n_chars;
+               }
+
+       yy_current_buffer = new_buffer;
+       yy_load_buffer_state();
+
+       /* We don't actually know whether we did this switch during
+        * EOF (yywrap()) processing, but the only time this flag
+        * is looked at is after yywrap() is called, so it's safe
+        * to go ahead and always set it.
+        */
+       yy_did_buffer_switch_on_eof = 1;
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yy_load_buffer_state( void )
+#else
+void yy_load_buffer_state()
+#endif
+       {
+       yy_n_chars = yy_current_buffer->yy_n_chars;
+       yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
+       yyin = yy_current_buffer->yy_input_file;
+       yy_hold_char = *yy_c_buf_p;
+       }
+
+
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
+#else
+YY_BUFFER_STATE yy_create_buffer( file, size )
+FILE *file;
+int size;
+#endif
+       {
+       YY_BUFFER_STATE b;
+
+       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+       if ( ! b )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+       b->yy_buf_size = size;
+
+       /* yy_ch_buf has to be 2 characters longer than the size given because
+        * we need to put in 2 end-of-buffer characters.
+        */
+       b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
+       if ( ! b->yy_ch_buf )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+       b->yy_is_our_buffer = 1;
+
+       yy_init_buffer( b, file );
+
+       return b;
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yy_delete_buffer( YY_BUFFER_STATE b )
+#else
+void yy_delete_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+       {
+       if ( ! b )
+               return;
+
+       if ( b == yy_current_buffer )
+               yy_current_buffer = (YY_BUFFER_STATE) 0;
+
+       if ( b->yy_is_our_buffer )
+               yy_flex_free( (void *) b->yy_ch_buf );
+
+       yy_flex_free( (void *) b );
+       }
+
+
+#ifndef YY_ALWAYS_INTERACTIVE
+#ifndef YY_NEVER_INTERACTIVE
+extern int isatty YY_PROTO(( int ));
+#endif
+#endif
+
+#ifdef YY_USE_PROTOS
+void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
+#else
+void yy_init_buffer( b, file )
+YY_BUFFER_STATE b;
+FILE *file;
+#endif
+
+
+       {
+       yy_flush_buffer( b );
+
+       b->yy_input_file = file;
+       b->yy_fill_buffer = 1;
+
+#if YY_ALWAYS_INTERACTIVE
+       b->yy_is_interactive = 1;
+#else
+#if YY_NEVER_INTERACTIVE
+       b->yy_is_interactive = 0;
+#else
+       b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+#endif
+#endif
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yy_flush_buffer( YY_BUFFER_STATE b )
+#else
+void yy_flush_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+
+       {
+       if ( ! b )
+               return;
+
+       b->yy_n_chars = 0;
+
+       /* We always need two end-of-buffer characters.  The first causes
+        * a transition to the end-of-buffer state.  The second causes
+        * a jam in that state.
+        */
+       b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+       b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+       b->yy_buf_pos = &b->yy_ch_buf[0];
+
+       b->yy_at_bol = 1;
+       b->yy_buffer_status = YY_BUFFER_NEW;
+
+       if ( b == yy_current_buffer )
+               yy_load_buffer_state();
+       }
+
+
+#ifndef YY_NO_SCAN_BUFFER
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
+#else
+YY_BUFFER_STATE yy_scan_buffer( base, size )
+char *base;
+yy_size_t size;
+#endif
+       {
+       YY_BUFFER_STATE b;
+
+       if ( size < 2 ||
+            base[size-2] != YY_END_OF_BUFFER_CHAR ||
+            base[size-1] != YY_END_OF_BUFFER_CHAR )
+               /* They forgot to leave room for the EOB's. */
+               return 0;
+
+       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+       if ( ! b )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
+       b->yy_buf_pos = b->yy_ch_buf = base;
+       b->yy_is_our_buffer = 0;
+       b->yy_input_file = 0;
+       b->yy_n_chars = b->yy_buf_size;
+       b->yy_is_interactive = 0;
+       b->yy_at_bol = 1;
+       b->yy_fill_buffer = 0;
+       b->yy_buffer_status = YY_BUFFER_NEW;
+
+       yy_switch_to_buffer( b );
+
+       return b;
+       }
+#endif
+
+
+#ifndef YY_NO_SCAN_STRING
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
+#else
+YY_BUFFER_STATE yy_scan_string( yy_str )
+yyconst char *yy_str;
+#endif
+       {
+       int len;
+       for ( len = 0; yy_str[len]; ++len )
+               ;
+
+       return yy_scan_bytes( yy_str, len );
+       }
+#endif
+
+
+#ifndef YY_NO_SCAN_BYTES
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
+#else
+YY_BUFFER_STATE yy_scan_bytes( bytes, len )
+yyconst char *bytes;
+int len;
+#endif
+       {
+       YY_BUFFER_STATE b;
+       char *buf;
+       yy_size_t n;
+       int i;
+
+       /* Get memory for full buffer, including space for trailing EOB's. */
+       n = len + 2;
+       buf = (char *) yy_flex_alloc( n );
+       if ( ! buf )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+       for ( i = 0; i < len; ++i )
+               buf[i] = bytes[i];
+
+       buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+       b = yy_scan_buffer( buf, n );
+       if ( ! b )
+               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+       /* It's okay to grow etc. this buffer, and we should throw it
+        * away when we're done.
+        */
+       b->yy_is_our_buffer = 1;
+
+       return b;
+       }
+#endif
+
+
+#ifndef YY_NO_PUSH_STATE
+#ifdef YY_USE_PROTOS
+static void yy_push_state( int new_state )
+#else
+static void yy_push_state( new_state )
+int new_state;
+#endif
+       {
+       if ( yy_start_stack_ptr >= yy_start_stack_depth )
+               {
+               yy_size_t new_size;
+
+               yy_start_stack_depth += YY_START_STACK_INCR;
+               new_size = yy_start_stack_depth * sizeof( int );
+
+               if ( ! yy_start_stack )
+                       yy_start_stack = (int *) yy_flex_alloc( new_size );
+
+               else
+                       yy_start_stack = (int *) yy_flex_realloc(
+                                       (void *) yy_start_stack, new_size );
+
+               if ( ! yy_start_stack )
+                       YY_FATAL_ERROR(
+                       "out of memory expanding start-condition stack" );
+               }
+
+       yy_start_stack[yy_start_stack_ptr++] = YY_START;
+
+       BEGIN(new_state);
+       }
+#endif
+
+
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state()
+       {
+       if ( --yy_start_stack_ptr < 0 )
+               YY_FATAL_ERROR( "start-condition stack underflow" );
+
+       BEGIN(yy_start_stack[yy_start_stack_ptr]);
+       }
+#endif
+
+
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state()
+       {
+       return yy_start_stack[yy_start_stack_ptr - 1];
+       }
+#endif
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+#ifdef YY_USE_PROTOS
+static void yy_fatal_error( yyconst char msg[] )
+#else
+static void yy_fatal_error( msg )
+char msg[];
+#endif
+       {
+       (void) fprintf( stderr, "%s\n", msg );
+       exit( YY_EXIT_FAILURE );
+       }
+
+
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+       do \
+               { \
+               /* Undo effects of setting up yytext. */ \
+               yytext[yyleng] = yy_hold_char; \
+               yy_c_buf_p = yytext + n; \
+               yy_hold_char = *yy_c_buf_p; \
+               *yy_c_buf_p = '\0'; \
+               yyleng = n; \
+               } \
+       while ( 0 )
+
+
+/* Internal utility routines. */
+
+#ifndef yytext_ptr
+#ifdef YY_USE_PROTOS
+static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
+#else
+static void yy_flex_strncpy( s1, s2, n )
+char *s1;
+yyconst char *s2;
+int n;
+#endif
+       {
+       register int i;
+       for ( i = 0; i < n; ++i )
+               s1[i] = s2[i];
+       }
+#endif
+
+#ifdef YY_NEED_STRLEN
+#ifdef YY_USE_PROTOS
+static int yy_flex_strlen( yyconst char *s )
+#else
+static int yy_flex_strlen( s )
+yyconst char *s;
+#endif
+       {
+       register int n;
+       for ( n = 0; s[n]; ++n )
+               ;
+
+       return n;
+       }
+#endif
+
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_alloc( yy_size_t size )
+#else
+static void *yy_flex_alloc( size )
+yy_size_t size;
+#endif
+       {
+       return (void *) malloc( size );
+       }
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_realloc( void *ptr, yy_size_t size )
+#else
+static void *yy_flex_realloc( ptr, size )
+void *ptr;
+yy_size_t size;
+#endif
+       {
+       /* The cast to (char *) in the following accommodates both
+        * implementations that use char* generic pointers, and those
+        * that use void* generic pointers.  It works with the latter
+        * because both ANSI C and C++ allow castless assignment from
+        * any pointer type to void*, and deal with argument conversions
+        * as though doing an assignment.
+        */
+       return (void *) realloc( (char *) ptr, size );
+       }
+
+#ifdef YY_USE_PROTOS
+static void yy_flex_free( void *ptr )
+#else
+static void yy_flex_free( ptr )
+void *ptr;
+#endif
+       {
+       free( ptr );
+       }
+
+#if YY_MAIN
+int main()
+       {
+       yylex();
+       return 0;
+       }
+#endif
+#line 78 "kraut.l"
+
+
+
diff --git a/kraut.l b/kraut.l
new file mode 100644 (file)
index 0000000..8435e51
--- /dev/null
+++ b/kraut.l
@@ -0,0 +1,82 @@
+%e 2000
+%p 5000
+%n 1000
+%k 500
+%a 4000
+%o 2000
+BW [      ]
+EW [      .,;!?]
+
+%{
+#include <stdio.h>
+
+char buf[128];
+%}
+
+%%
+ing                 printf("ingkt");
+" the "             printf(" ze ");
+"The "              printf("Ze ");
+" with "            printf(" mitt ");
+"With "             printf("Mitt ");
+wr                  printf("w-r-r");
+Wr                  printf("W-r-r");
+R                   printf("R-r-r");
+"Yes "              printf("Jawohl ");
+" r"                printf(" r-r-r");
+"Yes."              printf("Jawohl.");
+"Yes!"              printf("Jawohl!");
+"YES!"              printf("JAWOHL!");
+" yes "             printf(" ja ");
+" yes."             printf(" ja.");
+" yes!"             printf(" yes!");
+"No "               printf("Nein ");
+"No!"               printf("Nein!");
+"No?"               printf("Nein?");
+" no "              printf(" nein ");
+" no."              printf(" nein.");
+" no!"              printf(" nein!");
+" no?"              printf(" nein?");
+[Mm]"r."            printf("Herr");
+[Mm]"rs."           printf("Frau");
+Miss                printf("Fraulein");
+" of "              printf(" uff ");
+"Of "               printf("Uff ");
+my                  printf("mein");
+My                  printf("Mein");
+" and "             printf(" undt ");
+"And "              printf("Undt ");
+"One "              printf("Ein ");
+" one"              printf(" ein");
+"Is "               printf("Ist ");
+" is "              printf(" ist ");
+"ow "               printf("ow ");
+"w "                printf("w ");
+sh                  printf("sch");
+Sh                  printf("Sch");
+ch                  printf("ch");
+Ch                  printf("Ch");
+" c"                printf(" k");
+" C"                printf(" K");
+
+v                   printf("f");
+V                   printf("F");
+" w"                printf(" v");
+W                   printf("V");
+th                  printf("d");
+Th                  printf("D");
+[Jj]ohn             printf("Johann");
+[Ww]illiam          printf("Wilhelm");
+[Bb]rad             printf("Wilhelm");
+[Gg]ary             printf("Gerhardt");
+[Jj]on              printf("Hansel");
+
+[a-f]"!"       {sprintf(buf,"%s Naturlich!",yytext);printf(buf);}
+[p-z]"!"       {sprintf(buf,"%s Seig Heil!",yytext);printf(buf);}
+.|'\n'              ECHO;
+
+%%
+main()
+{
+  yylex();
+}
diff --git a/ky00te.dir/README.ky00te b/ky00te.dir/README.ky00te
new file mode 100644 (file)
index 0000000..65da749
--- /dev/null
@@ -0,0 +1,82 @@
+This program is (c) 1994, Brent E. Edwards.  Feel free to distribute the
+complete program world-wide.  (Please do NOT break apart this text file
+from the program.)  
+
+This program is under absolutely no warrantee of any kind.  
+
+If you have any questions about this program, please send them to 
+edwardsb@cs.rpi.edu.
+
+This program is dedicated to Conrad Wong.
+
+This program is catware.  If you find it useful in any way, pay for this
+program by spending one hour petting one or several cats.
+
+
+===================================================
+
+
+Purpose:
+   This program places a very cute (and familiar to FurryMuck fans)
+   accent to any text file.  It is designed for UNIX systems.  
+   It requires cc, lex, and yacc to be in your path.
+
+Compiling:
+   To compile on a UNIX system, type 'make'
+
+Running:
+   To do a line-by-line translation of your text, type 'ky00te'.
+   Control-D will halt the program.
+
+   To convert a text file and display it on the screen, type
+   'ky00te < filename | more', where filename is the file to convert.
+
+   To convert a text file and save it to a file, type
+   'ky00te < filename.in > filename.out', where filename.in is the
+   file to convert and filename.out is the place to put it.
+
+   You can also add an accent to the output of any program by
+   typing '<normal program execution> | ky00te'. 
+
+Petting the cat:
+   Stroke with the furs, not against them.
+
+====================================================
+
+Program version information:
+
+Program version 1.00:  13 December 1994
+
+Program version 1.10:  15 December 1994
+   Version 1.00 was a memory hog.  Also, adds 'fur' and 'meow' to
+list of cat-ch phrases.  
+
+Program version 1.11:  16 December 1994
+   With Tobias Kuhler's (ukjp@rz.uni-karlsruhe.de) repeated suggestion,
+   the program now only doubles (not triples) 'r' and no longer capitalizes
+   fur.  He also suggested the following improvements:
+          at a, at the -> atta
+          in a, in the -> ynna
+          is a, is the -> yssa
+          on a, on the -> onna
+      with a, with the -> wyffa
+                   the -> da
+                   you -> ya
+                   and -> 'n
+                  with -> wyf
+                    to -> ta
+
+   This version also no longer uses the same 'meow'; it switches between
+   'meow', 'mew', and 'mu' (weighted to the first).
+
+   I've also added:
+               lot of -> lotta
+                is so -> yssa
+                 when -> w'en
+                 with -> wyf   (when used to start a word)
+                  your -> yer
+             not, n't -> na'
+             
+
+   The README file has been reorganized, and the dedication made explicit.
+
diff --git a/ky00te.dir/ky00te.lex b/ky00te.dir/ky00te.lex
new file mode 100644 (file)
index 0000000..63f877c
--- /dev/null
@@ -0,0 +1,64 @@
+%{
+
+#include "y.tab.h"
+extern int yylval;
+
+%}
+
+%%
+i                   { yylval = 'y'; return(LETTER); }
+I                   { yylval = 'Y'; return(LETTER); }
+cks                 { yylval = 'x'; return(LETTER); }
+ks                  { yylval = 'x'; return(LETTER); }
+cute                { return(CUTE); }
+fluff               { return(FLUFF); }
+smile               { return(SMILE); }
+grin                { return(SMILE); }
+laugh               { return(SMILE); }
+chuckle             { return(SMILE); }
+pr                  { return(PURR); }
+p[aeiou]*r          { return(PURR); }
+f[aeiou]+r          { return(FUR); }
+m[aeiou]+/[^.,s?! ] { return(MEOW); }   /*UN*/
+"at a"              { return(ATTA); }
+"at the"            { return(ATTA); }
+"in a"              { return(YNNA); }
+"in the"            { return(YNNA); }
+"is a"              { return(YSSA); }
+"is the"            { return(YSSA); }
+"is so"             { return(YSSA); }
+"on a"              { return(ONNA); }
+"on the"            { return(ONNA); }
+"with a"            { return(WYFFA); }
+"with the"          { return(WYFFA); }
+"lot of"            { return(LOTTA); }
+" with "            { return(WYF); }
+" with"             { return(WYFF); }
+^"with "            { return(WYF); }
+^"with"                    { return(WYFF); }
+" with"$            { return(WYF); }
+" the "             { return(DA); }
+^"the "             { return(DA); }
+" the"$             { return(DA); }
+" your"                    { return(YER); }
+^your               { return(YER); }
+" you"              { return(YA); }
+^you                { return(YA); }
+" and "             { return(AN); }
+^"and "             { return(AN); }
+" and"$             { return(AN); }
+" to "              { return(TA); }
+^"to "              { return(TA); }
+" to"$              { return(TA); }
+" when "            { return(WEN); }
+^"when "            { return(WEN); }
+" when"$            { return(WEN); }
+"n't"              { return(NA); }  /*UN*/
+" not"              { return(NA); }  /*UN*/
+[ \t]               { return(' '); }
+.                   { yylval = yytext[0]; return(LETTER); } 
+%%
+
+
+
+
diff --git a/ky00te.dir/ky00te.yacc b/ky00te.dir/ky00te.yacc
new file mode 100644 (file)
index 0000000..ac49c06
--- /dev/null
@@ -0,0 +1,133 @@
+%{
+
+#include <stdio.h>
+typedef int INT;
+
+#define YYSTYPE INT
+
+%}
+
+%token CUTE
+%token FLUFF
+%token SMILE
+%token PURR
+%token FUR
+%token MEOW
+%token ATTA
+%token YNNA
+%token YSSA
+%token ONNA
+%token WYFFA
+%token LOTTA
+%token WYF
+%token WYFF
+%token DA
+%token YER
+%token YA
+%token AN
+%token TA
+%token WEN
+%token NA                               /*UN*/
+%token LETTER
+
+%%
+
+s:
+       | s t
+       | s ' ' 
+          {  
+           if (rand() % 30 < 1)
+             {
+               int inRand;
+
+               inRand = rand() % 5;
+
+               switch(inRand)
+                 {
+                 case 0:
+                   printf(" *truffle break!* ");
+                   break;
+
+                 case 1:
+                   printf(" *catnap break!* ");
+                   break;
+
+                 case 2:
+                   printf(" *purrpurr* ");
+                   break;
+
+                 case 3:
+                   printf(" *meow!* ");
+                   break;
+
+                 case 4:
+                   printf(" *fluff!* ");
+                   break;                  
+                 }
+             }
+           else
+             {
+               printf(" ");
+             }
+         }
+       ;
+
+t:     CUTE   { printf("ky00te!"); }
+      | FLUFF  { printf("*fluff!*"); }
+      | SMILE  { printf("};)"); }
+      | PURR   { printf("purr"); }
+      | FUR    { printf("fur"); }
+      | MEOW   { int inRand;
+                
+                inRand = rand() % 5;
+
+                switch(inRand)
+                  {
+                  case 0:
+                  case 1:
+                  case 2:
+                    printf("meow");
+                    break;
+                  case 3:
+                  case 4:
+                    printf("mew");
+                  }
+              }
+      | ATTA   { printf("atta"); }
+      | YNNA   { printf("ynna"); }
+      | YSSA   { printf("yssa"); }
+      | ONNA   { printf("onna"); }
+      | WYFFA  { printf("wyffa"); }
+      | LOTTA  { printf("lotta"); }
+      | WYF    { printf(" wyf "); }
+      | WYFF   { printf(" wyff"); } 
+      | DA     { printf(" da "); }
+      | YER    { printf(" yer"); }
+      | YA     { printf(" ya"); }
+      | AN     { printf(" 'n "); }
+      | TA     { printf(" ta "); }
+      | WEN    { printf(" w'en "); } 
+      | NA     { printf(" na'"); }            /*UN*/
+      | LETTER { if (yylval == 'r') 
+                  printf("rr"); 
+                 else 
+                  printf("%c", $1); }     
+      ;
+
+
+%%
+
+extern char mylval;
+
+void yyerror(char *s) {
+       printf("%s\n",s);
+}
+
+int main()
+{
+  yyparse();
+
+  return 0;
+}
+
+
diff --git a/ky00te.dir/makefile b/ky00te.dir/makefile
new file mode 100644 (file)
index 0000000..0351008
--- /dev/null
@@ -0,0 +1,21 @@
+all: ky00te
+
+clean:
+       rm -f y.tab.* lex.yy.*
+       rm -f ../ky00te
+
+ky00te: y.tab.o lex.yy.o
+       cc -o ../ky00te lex.yy.o y.tab.o -lfl
+
+lex.yy.o: lex.yy.c y.tab.h
+       cc -c lex.yy.c
+
+y.tab.o: y.tab.c
+       cc -c y.tab.c
+
+lex.yy.c: ky00te.lex
+       flex ky00te.lex
+
+y.tab.c: ky00te.yacc
+       yacc -d ky00te.yacc
+
diff --git a/makesample.sh b/makesample.sh
new file mode 100644 (file)
index 0000000..4fc1729
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+echo $1 >>SAMPLES
+echo "-------------" >>SAMPLES
+echo -e "Here's how this filter sounds, in everyday use.\nThis line is another sample of this filter's output." | ./$1 >>SAMPLES
+echo "" >>SAMPLES
\ No newline at end of file
diff --git a/marc-barrett.l b/marc-barrett.l
new file mode 100644 (file)
index 0000000..23cd413
--- /dev/null
@@ -0,0 +1,137 @@
+From: dankmyer@hilbert.math.grin.edu (Kirt A Dankmyer)
+Newsgroups: alt.sources
+Subject: mb.l
+Date: 4 Dec 1992 15:08:40 -0600
+Message-ID: <9212042108.AA10484@hilbert>
+
+%{
+
+        /*  Marc Barrett posting translator;
+               amaze your friends
+            To compile: lex mb.l
+                        cc -o mb lex.yy.c -ll
+           To use:
+                       mb < Your_MB_posting
+        */
+
+        char buf[128];
+%}
+%a 3000
+%e 3000
+%p 5000
+%n 3000
+%%
+"lots and lots"                 printf("few");
+"HyperCard"                     printf("crap");
+"real,"                         printf("phony,");
+"real."                         printf("phony.");                       
+"real "                         printf("phony ");                      
+"People"                        printf("I");                  
+"numerous"                      printf("1 or 2 (I think)");           
+" other"                        printf(" lamer");                      
+"nightmare"                     printf("paradise");                   
+"bad"                           printf("excellent");                   
+"may"                           printf("will");                       
+"UNUSABLE"                      printf("FAST AS HELL");                      
+"pokish"                        printf("slower than a snail");
+"junior"                        printf("intelligent");         
+"potentially"                   printf("probably");
+"I know"                       printf("I think");
+"looks a thousand times better"  printf("looks worse");
+"years ago"                     printf("years ago (before I bought an Amiga) ");
+"no improvements"               printf("many improvements");
+"As far as I know"              printf("I don't really know");
+"as far as I know"              printf("but what do I know");
+"totally official"              printf("a wild rumor");
+"kludged"                       printf("designed");
+"be any"                       printf("be some");
+"also likely never"            printf("also probably");
+"likely never"                 printf("probably");
+"everyone"                     printf("some people");
+"being unreasonable"           printf("being an idiot");
+"I don't understand"           printf("I dont' understand.  ");
+"it is unreasonable"           printf("it is stupid.  ");
+"everybody"                    printf("some people");
+"have never"                   printf("will have");
+"must have"                    printf("could have");
+"will never"                   printf("will");
+"never will"                   printf("will again soon");
+"would not"                    printf("may"); 
+"the need"                     printf("some silly things");
+"The problem"                  printf("My problem");
+"the problem"                  printf("my problem");
+"the simple fact"              printf("my opinion");
+"simply"                       printf("(with great difficulty)");
+"it's kind of embarassing"      printf("I'm kind of embarassing");
+"I often see"                  printf("I never see");
+"I questioned"                 printf("I flamed");
+"development costs"            printf("development costs (which, I'd like to remind you, I know nothing about)");
+"IMO"                          printf("(belch)");
+"to explain"                   printf("to give my wacky ideas about");
+"practically zero"             printf("astronomical");
+"I think"                      printf("I think.  ");
+"don't think"                  printf("don't think.  ");
+"do not think."                        printf("do not think.  ");
+"I am trying"                  printf("I am flaming");
+"I've"                         printf("Commodore has");
+"Beware the ides of September"  printf("I'm gonna flame any new stuff shown in September");
+"Sad"                          printf("Weird");
+"sad"                          printf("weird");
+"I WAS RIGHT"                  printf("I DON'T KNOW WHAT I'M TALKING ABOUT");
+"aren't"                        printf("are");
+"anymore"                       printf("still");
+" are "                         printf(" aren't ");
+"lost"                          printf("gained");
+" low "                         printf(" high ");
+" high "                        printf(" low ");
+"isn't"                         printf("is");
+"all of"                        printf("none of");
+"is not"                        printf("is");
+"stagnates"                     printf("flourishes");
+"never"                         printf("always");    
+"short-sightedness"             printf("genius");
+"inferior"                      printf("superior");
+"superior"                      printf("inferior");
+"few "                          printf("many ");
+"many"                          printf("few");
+"no improvements"               printf("many improvements");
+"different"                     printf("similar");
+"the only substantial"          printf("one of the many");
+"best"                          printf("worst");
+"worst"                         printf("best");
+"except for"                    printf("including");
+"worse"                         printf("better");
+"better"                        printf("worse");
+"nothing"                       printf("something");
+"something"                     printf("nothing");
+"no longer"                     printf("still");
+"biggest"                       printf("smallest");
+"high"                          printf("low");
+" low"                          printf(" high");
+"does not"                      printf("does");
+"doesn't"                       printf("does");
+"brilliantly"                   printf("inferiorly");
+"Avoid"                         printf("Search out");
+"lots of"                       printf("a few");
+"beautifully"                   printf("horribly");
+"wrong"                         printf("right");
+"right"                         printf("wrong");
+"tight"                         printf("loose");
+"loose"                         printf("tight");
+"same"                          printf("different");
+"disappointing"                 printf("impressive");
+"pieces of shit"                printf("accomplishments");
+" NO!"                          printf(" YES!");
+"retrogrades"                   printf("leaps forward");
+"garbaged"                      printf("incredible");
+"reduced to garbage"            printf("incredible");
+"all games"                     printf("no games");
+"slow"                          printf("fast");
+"fast"                          printf("slow");
+"can't"                         printf("can");
+"won't"                         printf("will");
+"will"                          printf("won't");
+" more"                         printf(" less");
+"has not"                       printf("has");
+%%
+
diff --git a/mb.l b/mb.l
new file mode 100644 (file)
index 0000000..23cd413
--- /dev/null
+++ b/mb.l
@@ -0,0 +1,137 @@
+From: dankmyer@hilbert.math.grin.edu (Kirt A Dankmyer)
+Newsgroups: alt.sources
+Subject: mb.l
+Date: 4 Dec 1992 15:08:40 -0600
+Message-ID: <9212042108.AA10484@hilbert>
+
+%{
+
+        /*  Marc Barrett posting translator;
+               amaze your friends
+            To compile: lex mb.l
+                        cc -o mb lex.yy.c -ll
+           To use:
+                       mb < Your_MB_posting
+        */
+
+        char buf[128];
+%}
+%a 3000
+%e 3000
+%p 5000
+%n 3000
+%%
+"lots and lots"                 printf("few");
+"HyperCard"                     printf("crap");
+"real,"                         printf("phony,");
+"real."                         printf("phony.");                       
+"real "                         printf("phony ");                      
+"People"                        printf("I");                  
+"numerous"                      printf("1 or 2 (I think)");           
+" other"                        printf(" lamer");                      
+"nightmare"                     printf("paradise");                   
+"bad"                           printf("excellent");                   
+"may"                           printf("will");                       
+"UNUSABLE"                      printf("FAST AS HELL");                      
+"pokish"                        printf("slower than a snail");
+"junior"                        printf("intelligent");         
+"potentially"                   printf("probably");
+"I know"                       printf("I think");
+"looks a thousand times better"  printf("looks worse");
+"years ago"                     printf("years ago (before I bought an Amiga) ");
+"no improvements"               printf("many improvements");
+"As far as I know"              printf("I don't really know");
+"as far as I know"              printf("but what do I know");
+"totally official"              printf("a wild rumor");
+"kludged"                       printf("designed");
+"be any"                       printf("be some");
+"also likely never"            printf("also probably");
+"likely never"                 printf("probably");
+"everyone"                     printf("some people");
+"being unreasonable"           printf("being an idiot");
+"I don't understand"           printf("I dont' understand.  ");
+"it is unreasonable"           printf("it is stupid.  ");
+"everybody"                    printf("some people");
+"have never"                   printf("will have");
+"must have"                    printf("could have");
+"will never"                   printf("will");
+"never will"                   printf("will again soon");
+"would not"                    printf("may"); 
+"the need"                     printf("some silly things");
+"The problem"                  printf("My problem");
+"the problem"                  printf("my problem");
+"the simple fact"              printf("my opinion");
+"simply"                       printf("(with great difficulty)");
+"it's kind of embarassing"      printf("I'm kind of embarassing");
+"I often see"                  printf("I never see");
+"I questioned"                 printf("I flamed");
+"development costs"            printf("development costs (which, I'd like to remind you, I know nothing about)");
+"IMO"                          printf("(belch)");
+"to explain"                   printf("to give my wacky ideas about");
+"practically zero"             printf("astronomical");
+"I think"                      printf("I think.  ");
+"don't think"                  printf("don't think.  ");
+"do not think."                        printf("do not think.  ");
+"I am trying"                  printf("I am flaming");
+"I've"                         printf("Commodore has");
+"Beware the ides of September"  printf("I'm gonna flame any new stuff shown in September");
+"Sad"                          printf("Weird");
+"sad"                          printf("weird");
+"I WAS RIGHT"                  printf("I DON'T KNOW WHAT I'M TALKING ABOUT");
+"aren't"                        printf("are");
+"anymore"                       printf("still");
+" are "                         printf(" aren't ");
+"lost"                          printf("gained");
+" low "                         printf(" high ");
+" high "                        printf(" low ");
+"isn't"                         printf("is");
+"all of"                        printf("none of");
+"is not"                        printf("is");
+"stagnates"                     printf("flourishes");
+"never"                         printf("always");    
+"short-sightedness"             printf("genius");
+"inferior"                      printf("superior");
+"superior"                      printf("inferior");
+"few "                          printf("many ");
+"many"                          printf("few");
+"no improvements"               printf("many improvements");
+"different"                     printf("similar");
+"the only substantial"          printf("one of the many");
+"best"                          printf("worst");
+"worst"                         printf("best");
+"except for"                    printf("including");
+"worse"                         printf("better");
+"better"                        printf("worse");
+"nothing"                       printf("something");
+"something"                     printf("nothing");
+"no longer"                     printf("still");
+"biggest"                       printf("smallest");
+"high"                          printf("low");
+" low"                          printf(" high");
+"does not"                      printf("does");
+"doesn't"                       printf("does");
+"brilliantly"                   printf("inferiorly");
+"Avoid"                         printf("Search out");
+"lots of"                       printf("a few");
+"beautifully"                   printf("horribly");
+"wrong"                         printf("right");
+"right"                         printf("wrong");
+"tight"                         printf("loose");
+"loose"                         printf("tight");
+"same"                          printf("different");
+"disappointing"                 printf("impressive");
+"pieces of shit"                printf("accomplishments");
+" NO!"                          printf(" YES!");
+"retrogrades"                   printf("leaps forward");
+"garbaged"                      printf("incredible");
+"reduced to garbage"            printf("incredible");
+"all games"                     printf("no games");
+"slow"                          printf("fast");
+"fast"                          printf("slow");
+"can't"                         printf("can");
+"won't"                         printf("will");
+"will"                          printf("won't");
+" more"                         printf(" less");
+"has not"                       printf("has");
+%%
+
diff --git a/moo.l b/moo.l
new file mode 100644 (file)
index 0000000..9da3091
--- /dev/null
+++ b/moo.l
@@ -0,0 +1,122 @@
+%e 2000
+%p 5000
+%n 1000
+%k 500
+%a 4000
+%o 2000
+BW [   ]
+EW [   .,;!?]
+
+%{ 
+/*
+** The cow filter
+**     by Benjamin Elijah Griffin      8 May 1994
+**
+** An experiment in lex written instead of a paper on Nietzsche.
+**
+** compile like this:
+**             lex moo.l
+**             cc -o moo lex.yy.c -ll
+**             rm lex.yy.c
+**
+** use like this:
+**             moo < infile > outfile
+**     or
+**             cat infile | <whatever> | moo | <whatever> > outfile
+**
+*/
+
+char WhAt[]="@(#)Benjamin Elijah Griffin's moo filter for cowtalk (c) 1994\n@(#)$Header: moo.l,v 1.1 94/05/08 23:37:53 bgriffin Final $"
+;
+
+%}
+
+%%
+
+" and "                                printf(" moond ");
+[Uu][Nn][Ii][Xx]               printf("Moonix");
+[Mm][Ss].[Dd][Oo][Ss]          printf("Moo Dos");
+news                           printf("moos");
+[Uu]senet                      printf("Moosnet");
+" man "                        printf(" mooster ");
+" men "                                printf(" moosters ");
+woman                          printf("moostress");
+women                          printf("moostresses");
+pig                            printf("cop");
+[Dd]airy.[Ff]armer             printf("Pimp");
+[Dd]airy.[Ff]arm               printf("Farm of Ill Repute");
+[Bb]eef.[Ff]armer              printf("Slave Driver");
+[Bb]eef.[Ff]arm                        printf("Prison");
+yogurt                         printf("bacteria culture");
+cheese                         printf("smega");
+curds                          printf("moist smega");
+whey                           printf("bile");
+buttermilk                     printf("foul fluid");
+butter                         { printf("sphinter lubrication");
+                               /* A _Last Tango in Paris_ joke */ }
+cream                          printf("honey");
+beef                           printf("murdered meat");
+grass                          printf("gourmet greenry");
+hay                            printf("subsistance rations");
+cereal                         printf("fomood");
+milkmaid                       printf("rapist");
+[Mm]aid.a.milkin       |
+[Mm]aid.a.milking              printf("Christmas Rapist");
+[Mm]aids.a.milkin      |
+[Mm]aids.a.milking             printf("Christmas Rapists");
+milking                                printf("rape");
+rape                           printf("milking");
+rapist                         printf("milkmaid");
+veal                           printf("the devil's food");
+"bull fighter"                 printf("Grim Reaper");
+"bull fight"                   printf("Game of Sorrows");
+milk                           printf("mead");
+Milk                           printf("Mead");
+"cafe con latte"       |
+capuccino                      printf("piss water");
+" "[In]"ndia "                 printf("Heaven");
+" "[In]"ndian "                        printf("heavenly");
+"sacred cow"                   printf("God");
+silo                           printf("calfeteria");
+divin                          printf("bovin");
+[Gg][Oo-][Dd]                  printf("Bovinity");
+sheep                          printf("dog(s)");
+relaxing                       printf("chewing the cud");
+relax                          printf("chew the cud");
+utter                          printf("udder");
+" udder"                       printf(" teat");
+" teat"                                printf(" udder");
+other                          printf("udder");
+":^)"                          printf("Mooooooooo!");
+":-)"                          printf("Moomoomoomoo!");
+"8-)"                          printf("Mooo! Mooo!");
+
+[aeiou]"."             {       *(yytext+1) = 0; 
+                               printf("%s. Moo.",yytext);
+                       }
+[rtpwy]"."             {       *(yytext+1) = 0; 
+                               printf("%s. Moo! Moo.",yytext);
+                       }
+"?"                            printf("? Moo.");
+"!"                            printf("! MOO!");
+oo                             printf("MOO");
+o                              printf("oo");
+O                              printf("Moo");
+you                            printf("moo");
+" u"                           printf("moo");
+" U"                           printf("Moo");
+"uu"                           printf("MOOO");
+u                              printf("oo");
+U                              printf("Oo");
+
+"."\n                          printf(".\nMooooo. ");
+
+.                              printf("%s",yytext);
+
+%%
+
+main()
+{
+       yylex();
+}
+
diff --git a/newspeak.l b/newspeak.l
new file mode 100644 (file)
index 0000000..e291f6d
--- /dev/null
@@ -0,0 +1,677 @@
+%{     -*- Mode:Fundamental -*-
+/*
+ *     newspeak.l, version 1.1.
+ *     Lex filter to transform plain English into NewSpeak.
+ *     Copyright (c) 1991 Jamie Zawinski <jwz@lucid.com>.
+ *     Permission granted for noncommercial use and redistribution.
+ *
+ *     To compile:
+ *
+ *     flex newspeak.l
+ *     cc -O -o newspeak lex.yy.c
+ *     rm lex.yy.c
+ *
+ *     This must be compiled with "flex", not normal "lex".  Lex has
+ *     some builtin, unchangable limits which this program exceeds.
+ *     This has been verified to work with flex version 2.3.7, and
+ *     may not work with flex version 2.3.6.
+ *
+ *     You can get 'flex' by anonymous FTP to prep.ai.mit.edu, or 
+ *     anywhere else you get GNU software.
+ *
+ *     Run this like so:  "newspeak < some-text-file | more"
+ *
+ *     There are some design notes near the end.  Suggestions and
+ *     improvements to this code are more than welcome.  
+ *     Hail Big Brother!
+ *---------------------------------------------------------------------------
+ */
+#include <stdio.h>
+
+unsigned int fcounter = 0;
+
+#define Y0     yytext[0]
+#define Y1     yytext[1]
+#define Y2     yytext[2]
+#define Y3     yytext[3]
+#define C      caseify
+#define C1     caseify1
+
+#define CAP(string)    capstring(0, (string),0)
+#define WCAP(string)   capstring(Y0,(string),1)
+
+#define COMP(string1,string2)  compstring(0, (string1),(string2),0)
+#define WCOMP(string1,string2) compstring(Y0,(string1),(string2),1)
+
+#define        DUMP()                  printf("%s",yytext)
+%}
+
+%e 8000
+%p 9000
+%n 2000
+%k 3000
+%a 5000
+%o 4000
+
+W      (([     ]?\n[   ]*)|[   ]|[\"'`])
+ES     [.,;:!?/]
+EW     ({W}|{ES}|"'")
+
+YOUNG  (([Yy]oung|[Ss]mall|[Ll]ittle){W})
+DEAD   (([Dd]ead|[Dd]eceased){W})
+THE    ([Tt]he{W}?)
+ANDOR  ({W}(([Aa]nd)|([Oo]r)){W}?)
+COLOR  (red|green|blue|yellow|cyan|magenta|purple|orange|mauve|pink|turquoise|brown|gr[ae]y)
+
+%%
+
+%{
+       /******************************
+        *          PLUSwords         *
+        ******************************/
+%}
+
+[Qq]uite{EW}/[A-Za-z][A-Za-z]                  CAP("plus");
+[Rr]ather{EW}/[A-Za-z][A-Za-z][A-Za-z]         CAP("plus");
+[Kk]ind{EW}of{EW}/[A-Za-z][A-Za-z][A-Za-z]     CAP("plus");
+[Kk]inda{EW}/[A-Za-z][A-Za-z][A-Za-z]          CAP("plus");
+[Mm]ore{W}than{W}a{W}(little|bit){W}           CAP("plus");
+[Pp]ro-                                                CAP("plus");
+
+[Hh]undreds{W}of{W}[Tt]housands                        |
+[Hh]undreds{ANDOR}[Tt]housands                 |
+[Hh]undreds{W}if{W}not{W}[Tt]housands          |
+[Tt]housands                                   |
+[Mm]illions                                    CAP("doubleplusmany");
+
+[Dd]ozens                                      CAP("many");
+[Hh]undreds                                    CAP("plusmany");
+
+([Bb]right|[Ll]ight|[Ii]ntense){W}/{COLOR}     CAP("plus");
+([Dd]im|[Ff]aded|[Dd]ark|[Pp]ale){W}/{COLOR}   CAP("plusun");
+([Dd]im|[Ff]aded|[Dd]ark|[Pp]ale)              CAP("unlight");
+
+[Ee]very                                       DUMP();
+[Vv]ery{W}                                     |
+[Rr]eally{W}                                   |
+[Tt]erribly{W}                                 |
+[Aa]wesome({W})?                               |
+[Aa]wfully{W}                                  CAP("doubleplus");
+
+[Ww]hopping{EW}                                        CAP("plusbig");
+
+"O.K."                                         |
+[Aa]ll({W})?[Rr]ight                           |
+[Oo][Kk][Aa][Yy]                               CAP("plusgood");
+{W}OK/{W}                                      WCAP("plusgood");
+
+([Tt]oo|[Oo]verly|[Tt]hat){W}[Mm]uch           CAP("plusmuch");
+
+{W}[Bb]ad/{EW}         WCAP("ungood");
+{W}[Pp]oor/{EW}                WCAP("ungood");
+{W}[Ll]ame/{EW}                WCAP("ungood");
+{W}[Pp]itiful/{EW}     WCAP("ungood");
+{W}[Nn]asty/{EW}       WCAP("plusungood");
+{W}[Hh]orrid/{EW}      WCAP("doubleplus ungood");
+{W}[Hh]orrible/{EW}    WCAP("doubleplus ungood");
+{W}[Aa]wful/{W}                WCAP("doubleplus ungood");
+{W}[Ee]vil/{W}         WCAP("doubleplus ungood");
+
+%{
+       /******************************
+        *           Titles           *
+        ******************************/
+%}
+
+{W}[Ss]ir/{EW}         WCAP("citizen");
+{W}[Mm]r"."/{EW}       WCAP("brother");
+[Mm]ister/{EW}         CAP("brother");
+[Mm]adame?             CAP("sister");
+{W}[Mm]iss/{EW}                WCAP("sister");
+[Mm]a"'"?am/{EW}       CAP("sister");
+{W}[Mm]r?s"."/{EW}     WCAP("sister");
+Mrs/{EW}               CAP("sister");
+
+{YOUNG}?[Cc]hildren                            CAP("young citizens");
+{YOUNG}?[Bb]oys{ANDOR}[Gg]irl/s                        CAP("young citizens");
+{YOUNG}?([Kk]id|[Gg]irl|[Bb]oy|[Cc]hild)/{EW}  CAP("young citizen");
+
+[Ff]ellow              CAP("citizen");
+
+[Nn]on{W}?"-"?citizen  CAP("unperson");
+[Nn]on{W}?"-"?member   CAP("unperson");
+[Cc]riminal/s?         CAP("unperson");
+{DEAD}(man|woman)      CAP("unperson");
+{DEAD}(men|women)      CAP("unpersons");
+
+[Ii]n{W}[Pp]erson      DUMP();
+
+{W}[Uu]ser             WCOMP("party ","worker");
+[Ss]tudent             COMP("party ","worker");
+[Cc]itizen/s?{EW}      COMP("party ","worker");
+[Pp]erson/s?{EW}       COMP("party ","worker");
+[Pp]eople              COMP("party ","workers");
+
+[Ss]enator             |
+[Cc]ongressman         |
+[Ss]upervisor          |
+[Pp]rofessor           printf("Inner Party Member");
+[Pp]rof"."/{EW}                printf("Inner Party Member");
+[Pp]rof/{EW}           printf("Inner Party Member");
+
+Representative/s?      printf("Inner Party Member");
+representatives                printf("Inner Party Members");
+
+[Ww]hite{W}[Cc]ollar           |
+[Uu]pper{W}[Cc]lass            COMP("inner ","party");
+[Mm]iddle{W}[Cc]lass           CAP("party");
+[Bb]lue{W}[Cc]ollar            |
+[Ww]orking{W}[Cc]lass          |
+[Ll]ower{W}[Cc]lass            CAP("prole");
+([Ff]ool|[Ii]diot)/s?{EW}      CAP("prole");
+[Ss]tupidity                   CAP("proleness");
+
+%{
+       /******************************
+        *        Organizations       *
+        ******************************/
+%}
+
+[Aa]?{W}([Ww]hite{W}[Hh]ouse|[Gg]ovt\.?|[Gg]overnment){W}([Ss]ource|[Oo]fficial|[Ss]pokes(man|woman|person))   CAP("an Inner Party Member");
+{THE}?[Rr]epublican{W}[Pp]arty         COMP("mini","luv");
+{THE}?[Dd]emocratic{W}[Pp]arty         COMP("mini","plenty");
+
+{THE}?Congress                                 printf("MiniPax");
+{THE}?[Ss]enate                                        printf("MiniPax");
+{THE}?[Hh]ouse{W}[Oo]f{W}[Rr]epresentatives    printf("MiniPax");
+{THE}?[Ss]tate{W}[Dd]epartment                 printf("MiniPax");
+{THE}?[Ss]tate{W}[Dd]ept"."?                   printf("MiniPax");
+{THE}?[Dd]efen[cs]e{W}[Dd]epartment            |
+{THE}?[Dd]efen[cs]e{W}[Dd]ept"."?              |
+{THE}?[Ww]ar{W}[Dd]epartment                   |
+{THE}?[Ww]ar{W}[Dd]ept"."?                     |
+{THE}?[Hh]ouse{W}of{W}[Cc]ommons               |
+{THE}?Pentagon                                 |
+{THE}?[Ff]eds                                  |
+{THE}?FCC                                      |
+{THE}?D[Oo]D                                   |
+{THE}"D."[Oo]".D."                             |
+{THE}?[Ss]ecret{W}[Ss]ervice                   COMP("mini","luv");
+{THE}?White{W}House                            |
+{THE}?Kremlin                                  printf("MiniTrue");
+{THE}?(CIA|NSA|FBI|MI"-"?5)/{EW}               printf("MiniTrue");
+{THE}?("C.I.A."|"N.S.A."|"F.B.I.")/{EW}                printf("MiniTrue");
+{THE}?[Aa]rchive/s?                            COMP("mini","rec");
+{THE}?[Ll]ibrary                               COMP("mini","rec");
+{THE}?[Ll]ibraries                             COMP("mini","recs");
+
+[Tt]hought{W}[Pp]olice|[Nn]azis?               COMP("think","pol");
+[Vv]ice{W}[Ss]quad                             COMP("sex","pol");
+PMRC|"P.M.R.C."                                        COMP("sex","pol");
+
+[Oo]fficer                                     CAP("minister");
+
+{THE}?[Dd]epartment{EW}of{EW}.                 |
+{THE}?[Dd]ept"."?{EW}of{EW}.                   |
+{THE}?[Uu]niversity{EW}of{EW}.                 |
+{THE}?[Uu]niv"."?{EW}of{EW}.                   |
+{THE}?[Dd]ept"."?{EW}of{EW}.                   |
+{THE}?([Ss]ub"-"?)?[Cc]omm?itt?ee{EW}(of|on){EW}.      |
+{THE}?[Ss]chool{EW}of{EW}.                     {
+       if ((yytext[yyleng-1] >= 'A') && (yytext[yyleng-1] <= 'Z'))
+          /* "the school of Law" --> "MiniLaw" */
+          printf("Mini%c",yytext[yyleng-1]);
+       else if ((yytext[yyleng-1] >= 'a') && (yytext[yyleng-1] <= 'z'))
+          /* "the school of law" --> "MiniLaw" (not "Minilaw") */
+          printf("Mini%c",yytext[yyleng-1] - ('a' - 'A'));
+          /* "the school of 5 things" --> "Ministry of 5 things" */
+       else printf("Ministry of %c",yytext[yyleng-1]);
+       }
+
+[Dd]epartment                  |
+[Uu]niversity                  CAP("ministry");
+[Uu]niv"."?/{W}                        CAP("ministry");
+[Dd]ept"."?/{W}                        CAP("ministry");
+([Ss]ub"-"?)?[Cc]omm?itt?ee    CAP("ministry");
+
+{THE}[Pp]roject/{EW}           CAP("the Three Year Plan");
+[Oo]ur{W}[Pp]roject/{EW}       CAP("our Three Year Plan");
+[Bb]udget                      printf("Three Year Plan");
+[Pp]roject/{ES}                        printf("Three Year Plan");
+
+{W}({THE}|([aa]{W}))[Pp]roject printf("%cthe Three Year Plan",Y0);
+
+[A-Za-z]+"'"[Ss]/{W}(law|Law|LAW|book|Book|BOOK|rule|Rule|RULE){EW}    printf("Goldstein's");
+
+%{
+       /******************************
+        *           Actions          *
+        ******************************/
+%}
+
+[Ii]n{W}love{EW}       CAP("SexCriming");
+[Ll]ove{W}you/{EW}     CAP("love Big Brother");
+[Ll]ove{W}me/{EW}      CAP("love Big Brother");
+
+[Cc]loning             |
+[Rr]eproduction                |
+[Cc]elibacy            |
+[Pp]rocreation         COMP("good","sex");
+
+[Cc]elibate            |
+[Pp]rocreate           COMP("good","sexwise");
+
+[Tt]elevisions?                |
+TVs?                   |
+[Tt]"."[Vv]"."s?       |
+[Rr]adios?             |
+[Nn]ews{W}?[Pp]apers?  |
+[Jj]ournalism          |
+[Mm]ovies?             |
+[Rr]ock{EW}?"-"?(and|"&"|"'"?n"'"?){EW}?"-"?[Rr]oll({W}[Mm]usic)?           |
+(([Rr]ock|[Cc]lassical|[Ii]ndustrial|[Pp]op|[Dd]ance|[Rr]ap){W})?[Mm]usic    |
+[Tt]unes               |
+[Mm]oney               |
+[Cc]ash                        |
+[Cc]omic{W}[Bb]ooks?   |
+([Ss]tar{W}?)?[Tt]rek  COMP("prole","feed");
+
+[Pp]eace{W}[Mm]ovement         |
+[Pp]eace{W}[Pp]rotest          |
+[Aa]nti{EW}[Ww]ar              |
+([Pp]assive{W})?[Rr]esistance  |
+[Cc]reativity                  |
+[Tt]reason                     |
+[Rr]esearch            COMP("crime","think");
+%{
+       /******************************
+        *           Religion         *
+        ******************************/
+%}
+
+[Jj]esus{W}[Cc]hrist           |
+[Jj]esus                       |
+{THE}?[Bb]uddh?a               |
+[Mm]ohamm?ed                   |
+[Mm]artin{W}[Ll]uther{W}[Kk]ing        |
+J\.?\ ?R\.?\ \"?Bob\"?\ Dobbs  printf("doubleplus crimethinker");
+
+([Jj]esse{W})?[Hh]elms         |
+([RrDd]on(ald)?{W})?[Rr]ea?gan |
+[Gg]eorge{W}[Gg]uscoria                printf("doubleplus goodthinker");
+
+[Jj]ewish                      COMP("crime","thinkwise");
+[Jj]ew                         |
+[Cc]hristian                   |
+[Mm]oslem                      |
+[Bb]uddhist                    |
+[Aa]thiest                     |
+[Aa]gnostic                    COMP("crime","thinker");
+
+[Ff]aith                       COMP("belly","feel");
+
+%{
+       /******************************
+        *            Places          *
+        ******************************/
+%}
+
+[Ee]ngland|{THE}?[Uu]nited{W}[Kk]ingdom                        |
+({THE}?[Uu]nited{W}[Ss]tates{W}[Oo]f{W})?[Aa]merica    |
+{THE}?[Uu]nited{W}[Ss]tates|USA|"U.S.A."|[Cc]anada     |
+[Gg]ermany|[Ii]srael|[Ee]urope                         printf("Oceana");
+
+Iranian|Iraqu?i|Libyan|Russian|African|Egyptian                printf("Eurasian");
+Iran|Iraq|Libya|Russia|Africa|Egypt                    |
+([Ss]audi{W})?Arabia|{THE}?Soviet{W}Union              printf("Eurasia");
+[Ss]oviet                                              printf("Eurasian");
+
+[Cc]hinese|[Jj]apanese|[Tt]aiwanese                    |
+[Pp]hillipino|[Ii]ndian|[Aa]ustralian|[Mm]exican       |
+[Nn]icaraguan|[Ss]alvadori?an                          printf("Eastasian");
+China|[Jj]apan|[Tt]aiwan|{THE}?[Pp]hillipines|[Ii]ndia |
+[Aa]ustralia|[Mm]exico|[Nn]icaragua|[Ee]l{W}[Ss]alvador        printf("Eastasia");
+
+[Kk]uwaiti                     printf("Eurasian");
+[Kk]uwait                      printf("The Malabar Front");
+
+%{
+       /******************************
+        * Miscelaneous Translations  *
+        ******************************/
+%}
+
+{W}[Ff]aster           WCAP("plus speedful");
+{W}[Ss]lower           WCAP("plus unspeedful");
+{W}[Ff]ast             WCAP("speedful");
+{W}[Ss]low             WCAP("unspeedful");
+
+[Mm]odern              CAP("plusnew");
+[Aa]ncient             CAP("plusunnew");
+{W}old/{W}             WCAP("plusunnew");
+
+[Hh]appiness           CAP("joyfulness");
+[Hh]appy               CAP("joyful");
+[Qq]uick               CAP("speedful");
+{W}[Ss]peedy           WCAP("speedful");
+[Hh]eavy               CAP("weightful");
+[Hh]eavill?y           CAP("weightfully");
+[Ss]ick(ly)?           CAP("unhealthful");
+
+[Gg]ross               |
+[Ss]ickening           |
+[Ff]oul                        |
+[Pp]utrid              |
+[Dd]isgusting          COMP("crime","thinkful");
+
+[Ss]mash               |
+[Cc]rush               |
+[Oo]bliterate          |
+[Aa]nnihilate          |
+[Nn]eutralize          |
+[Dd]emolish            |
+[Dd]estroy             CAP("unbuild");
+
+[Ii]nanimate           CAP("unlifeful");
+[Ss]ociety|[Cc]ulture  printf("IngSoc");
+[A-Za-z]+isi?m/{EW}    printf("Goldsteinism");
+[A-Za-z]+ist/{EW}      printf("Goldsteinist");
+
+{W}[Dd]ead             WCAP("unlifeful");
+{W}[Dd]eath            WCAP("unlife");
+{W}[Ll]ie              WCAP("untruth");
+{W}[Ff]alsehood                WCAP("untruth");
+{W}[Mm]istake/{EW}     WCAP("untruth");
+{W}[Ww]hisper          WCAP("unshout");
+{W}[Pp]roud            WCAP("prideful");
+
+[Ff]alse               CAP("untrue");
+[Dd]ark                        CAP("unlight");
+[Bb]lack               CAP("unwhite");
+[Ff]orbidden           CAP("unallowed");
+[Ff]orbid              CAP("unallow");
+[Ff]ailure             CAP("unsuccess");
+[Ff]ail/{EW}           CAP("unwin");
+
+[Ss]tatistics?/{EW}            CAP("propaganda");
+{W}[Aa]n{W}[Aa]nn?ouncement    WCAP("a NewsFlash");
+[Aa]nn?ouncement               printf("NewsFlash");
+[Ii]nstructions?               printf("B. B. DayOrder");
+
+[Aa]lmost|[Nn]early    CAP("within measurable distance of");
+[Ff]unny               CAP("humorful");
+
+[Dd]oom                        CAP("unsave");
+[Cc]haos               CAP("unorder");
+[Cc]haotic             CAP("unorderful");
+[Ee]nslaved            CAP("protected");
+[Ee]nslave             CAP("protect");
+[Dd]angerous           CAP("unsafewise");
+[Dd]anger              CAP("unsafe");
+([Bb]lind{W})?[Oo]bedience             COMP("ing","soc");
+\"?[Nn]ew{W}[Ww]orld{W}[Oo]rder\"?     printf("IngSoc");
+
+[Pp]rivacy             |
+[Ii]ndividuality       COMP("own","life");
+
+IMHO           printf("for the love of Big Brother");
+
+[Ee]motion(al|s)?      |
+[Cc]onviction          |
+[Bb]elie(f|ve)         |
+[Aa]ccept(ance)?       COMP("belly","feel");
+
+[Dd]emocracy                   |
+[Ll]iberty                     |
+[Ff]reedom                     |
+[Jj]ustice                     |
+{THE}?[Aa]merican{W}[Ww]ay     |
+[Ss]ubversion                  |
+[Pp]assion             COMP("crime","think");
+
+[Oo]bscenity           |
+[Pp]ornography         |
+[Oo]rgasm              |
+[Ee]rotica             COMP("sex","crime");
+[Ss]exy                        |
+[Oo]bscene             |
+[Pp]ornographic                |
+[Ee]rotic              COMP("sex","crimeful");
+
+[Cc]ritic/s?{W}                COMP("crime","thinker");
+
+[Ii]nfant{W}[Mm]ortality       COMP("inf","mort");
+
+[Ff]amilies                    |
+[Pp]arents                     COMP("family ","units");
+[Mm]other{ANDOR}[Ff]ather      |
+[Bb]rother{ANDOR}[Ss]ister     COMP("family ","unit");
+{W}[Pp]arent/s?{EW}            WCOMP("family ","unit");
+[Ff]amily                      COMP("family ","unit");
+
+God/{EW}                                       printf("Big Brother");
+[Pp]res(ident|".")({W}([Bb]ush|[Rr]eagan))?    printf("Big Brother");
+[Pp]rime{W}[Mm]inister                         printf("Big Brother");
+
+([Gg][Nn][Uu]{W}([Ee]macs|EMACS){W})?[Gg]eneral{W}[Pp]ublic{W}[Ll]icense       printf("NewSpeak Dictionary");
+
+(questioning|murder|ass?ass?ination)/{ES}      printf("interrogation");
+
+[Ss]keptic/{EW}                        CAP("unperson");
+[Ss]illy                       CAP("foolhardy");
+{W}[A-Za-z][A-Za-z]?illy       DUMP();
+[Ss]outhern|[Ss]outherly       CAP("southwise");
+[Nn]orthern|[Nn]ortherly       CAP("northwise");
+[Ee]astern|[Ee]easterly                CAP("eastwise");
+[Ww]estern|[Ww]esterly         CAP("westwise");
+[Pl]leasant                    CAP("goodwise");
+[Vv]iolent                     CAP("unpeacewise");
+[Vv]iolence                    CAP("unpeaceness");
+[Ii]ndifference                        CAP("uncarefulness");
+[Ii]ndifferent                 CAP("uncareful");
+[Bb]elly                       CAP("abdomen");
+[Cc]omic                       CAP("humorwise");
+{W}[Uu]nless                   WCAP("lest");
+usually                                printf("usualwise");
+
+[Gg]uerillas           COMP("party ","workers");
+
+[Ww]ar/{EW}            CAP("engagement");
+[Dd]efen[cs]e/{EW}     CAP("peace");
+[Ii]nvasion            CAP("liberation");
+
+%{
+       /******************************
+        *     Syllable Rewriting     *
+        ******************************
+       isn't ___       is un___
+       not the ___     the un___
+       not my ___      my un___
+       anti___         un___           (etc...)
+       ___cally        ___wise
+       ___ally         ___wise
+       ___lly          ___wise
+       ___ly           ___wise
+       ___aic          ___wise
+       ___lic          ___wise
+       ___nnic         ___wise
+       <VOWEL>tric     ___wise
+       ___ic           ___wise
+       <VOWEL>ous      ___ful
+       <CONSONANT>ous  ___eful
+       ___less         un___ful
+
+         */
+%}
+
+[Ii]sn"'"t{W}my{W}             CAP("is my un");
+[Ii]s{W}not{W}my{W}            CAP("is my un");
+[Ii]sn"'"t{W}[Tt]he{W}         CAP("is the un");
+[Ii]s{W}not{W}[Tt]he{W}                CAP("is the un");
+[Ii]sn"'"t{W}[Ii]n{W}[Tt]he{W} CAP("is in the un");
+[Ii]s{W}not{W}[Ii]n{W}[Tt]he{W}        CAP("is in the un");
+[Ii]t"'"?s{W}not{W}[Tt]he{W}   CAP("it's the un");
+[Ii]sn"'"t{W}                  CAP("is un");
+[Ii]s{W}not{W}                 CAP("is un");
+[Nn]ot{W}[Tt]he{W}             CAP("the un");
+[Nn]ot{W}[Mm]y{W}              CAP("my un");
+[Nn]ot{W}[Aa]{W}               CAP("an un");
+[Nn]ot{W}have{W}               CAP("has un");
+[Nn]ot{W}be{W}                 CAP("be un");
+[Nn]ot{W}[Oo]nly/{W}           CAP("unonly"); /* avoid "unonwise" */
+
+[Aa]{W}[Nn]ot{W}       |
+[Aa]{W}[Nn]on"-"?      printf("%cn%cun",Y0,Y1); /* "a non_" -> "an un_" */
+
+%{
+/*     {W}[Nn]ot{W}    |       */
+%}
+{W}[Ii]l"-"?/[a-z][a-z]                WCAP("un");
+{W}[Aa]nti"-"?                 |
+{W}[Nn]on"-"?                  WCAP("un");
+
+robably|ventually|[Oo]bvious|[Bb]asic|{W}[Oo]nly|otally        |
+[Aa]rctic|holic|{EW}ally|{EW}[Aa]pply|{W}[Tt]opic      DUMP();
+
+{W}([Tt]raf|[Pp]aci|[Ss]peci)fi/c{W}   DUMP();
+{W}(ma|tra)gi/c{W}                     DUMP();
+{W}(pub|cyc|re|fro|gar)li/c{W}         DUMP();
+{W}(eth|cli|to)ni/c{W}                 DUMP();
+{W}(E|cle|met|cit)ri/c{W}              DUMP();
+{W}(ch|ep|tr?op|t|mus|stat|att)i/c{W}  DUMP();
+{W}only/{W}                            DUMP();
+{W}[Aa]tlantic                         DUMP();
+
+[ \t\n][drstwDRSTW]ally                printf("%c%cally", Y0, Y1);
+
+[a-z]ically/{W}                        printf("%cwise", Y0);
+[a-z]ally/{W}                  printf("%cwise", Y0);
+[a-z][a-z]lly/{W}              printf("%c%cwise", Y0,Y1);
+[a-z][a-z][a-z]ly/{W}          printf("%c%c%cwise", Y0,Y1,Y2);
+[a-z]ical/{W}                  printf("%cwise", Y0);
+
+[a-km-qs-z]aic/{EW}            printf("%cwise",  Y0);  /* not laic, raic */
+[a-z]lic/{EW}                  printf("%clwise", Y0);
+[a-z]nnic/{EW}                 printf("%cnwise", Y0);
+[a-z][aeiou]tric/{EW}          printf("%c%ctwise", Y0, Y1);
+[a-z]tric/{EW}                 printf("%cwise", Y0);
+[a-z]ic/{EW}                   printf("%cwise",  Y0);
+[a-z]lly/{EW}                  printf("%cwise", Y0);
+[a-z]ly/{EW}                   printf("%cwise", Y0);
+
+[aeiouy][^aeiouy]ous/{EW}      printf("%c%cful",Y0,Y1);
+[^aeiouy]ous/{EW}              printf("%ceful",Y0);
+[^e]ous/{EW}                   printf("%cful",Y0);
+
+[A-Za-z]+less/{EW}  {  yytext[yyleng-4] = '\0';
+                       if (((yytext[1] < 'A') || (yytext[1] > 'Z')) &&
+                           (yytext[0] >= 'A') && (yytext[0] <= 'Z'))
+                          yytext[0] = yytext[0] - ('a' - 'A');
+                       printf("%cn%sful",C('u'), yytext);
+                   }
+
+".  "          {       printf("%s",yytext);
+                       fcounter &= 15;
+                       if (14 == fcounter++) printf("(fnord)  ");
+               }
+
+[.,!?]\"([^\n\".!]+[.!])?\n/[\n\t ]    printf("%c  Hail Big Brother!\"%s",Y0,yytext+1);
+\"([.,!?][^\n\".!]+[.!])?\n/[\n\t ]    printf("%c  Hail Big Brother!\"%s",Y1,yytext+2);
+
+.                      printf(yytext);
+\n                     printf("\n");
+
+%{
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Brief description of Orwell's NewSpeak:
+ * ---------------------------------------
+ * Each word was made to serve as noun, verb, adjective and adverb.  In
+ * particular, nouns and verbs were made exactly the same -- hence "think"
+ * replaced "thought" as a noun (viz. "crimethink" = thought crime, "thinkpol"
+ * = thought police).  Adjectives were formed by adding "-ful" to a noun/verb;
+ * adverbs were formed by adding "-wise."  Hence "speedful" = fast,
+ * "speedwise" = quickly, "unspeedwise" = slowly.
+ *
+ * The decision on which word should be negated was made fairly randomly;
+ * "dark" could be "unlight," or "light" could be "undark".  But in all cases
+ * the most important objective (aside from ideological restriction) was
+ * euphony; the words had to be easily pronounceable.
+ *
+ * Most verb inflections were made regular; "he thinked," "he goed," "he
+ * eated"; only the auxiliaries and modals (to be, to have, may, shall, will,
+ * etc.) were allowed to inflect irregularly.  Plurals were also regularized:
+ * "mans," "oxes," "childs."  [This isn't implemented here.]
+ *
+ * There were three sets of words.  The A vocabulary was for everyday use:
+ * car, man, red, good, etc.  It was restricted to fairly simple words.
+ *
+ * The B vocabulary consisted of political/ideological words with very
+ * complicated connotations.  All of the B words were compound words --
+ * bellyfeel (blind emotional acceptance of the ideology), oldthink (the way
+ * of thought before the Revolution), crimethink, Ingsoc, goodsex (intercourse
+ * solely for the purpose of making babies and with no physical enjoyment on
+ * the part of the female), sexcrime (any kind of sex but goodsex, including
+ * sex for its own sake), goodthink (thinking in accordance with Ingsoc), and
+ * so on.  These words were also subject to the modifications mentioned
+ * above--hence "goodthinker," "goodthinkful," "goodthinkwise."
+ *
+ * The C vocabulary consisted of scientific and technical words (though there
+ * was no longer any word for "science," any connotation it might have being
+ * subsumed into "Ingsoc").
+ *
+ * Implementing a translator for all of this would be really complicated --
+ * I'd need rather extensive lists of the "irregular" words (so they could be
+ * regularized), as well as lists of politically meaningful words (so they
+ * could be excised or translated into either "goodthink" or "crimethink," as
+ * appropriate).  Any kind of sexual topic should become "sexcrime" (it being
+ * unlikely that any talk of sex these days would fit into "goodsex").
+ *
+ * Basically, the reason it's hard is that NewSpeak was intended to *decrease*
+ * the vocabulary, and subsume complicated ideas into politically correct
+ * words so that you wouldn't have to understand the ideas anymore; you'd just
+ * have to emit the right words.  So to properly "translate" anything into
+ * NewSpeak, you have to cut the vocabulary way down.
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ */
+%}
+
+%%
+main()
+{
+       yylex();
+       printf("\nHail Big Brother!\n");
+}
+
+
+capstring(firstchar,string,i)
+    char firstchar, *string;
+    int i;
+{
+       if (firstchar != 0) putchar(firstchar);
+       putchar( (yytext[i] <= 'Z') ? (string[0] - ' ') : string[0]);
+       printf("%s",string+1);
+}
+
+compstring(firstchar,string1,string2,i)
+    char firstchar, *string1, *string2;
+    int i;
+{
+       capstring(firstchar,string1,i); 
+       capstring(0,string2,i);
+}
+
+_caseify(c,i)
+    char c;
+    int i;
+{
+       if (yytext[i] <= 'Z') return (c - ' ');
+       else return (c);
+}
+
+caseify(c)
+    char c;
+{      _caseify(c,0);  }
+
+caseify1(c)
+    char c;
+{      _caseify(c,1);  }
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;
+                       }
+               }
+}
diff --git a/upside-down b/upside-down
new file mode 100755 (executable)
index 0000000..c4aa7e0
--- /dev/null
@@ -0,0 +1,3 @@
+#!/usr/bin/perl -pl-
+$_=reverse lc$_;s@"@''@g;y/[]{A-R}<>()a-y1-9,!.?`'/][}        Joey Hess
+{><)(eq)paj6y!fk7wuodbjsfn^mxhl5Eh29L86`i'%,/;s@k@>|@g#   joey@kitenet.net
diff --git a/valspeak.l b/valspeak.l
new file mode 100644 (file)
index 0000000..d177d78
--- /dev/null
@@ -0,0 +1,134 @@
+
+T      [" .!?,"]*
+
+%%
+
+" bad"                 printf(" mean");
+" big"                 printf(" bitchin'est");
+" body"                        printf(" bod");
+" bore"                        printf(" drag");
+" car "                        printf(" rod ");
+" dirty"               printf(" grodie");
+" filthy"              printf(" grodie to thuh max");
+" food"                        printf(" munchies");
+" girl"                        printf(" chick");
+" good"                        printf(" bitchin'");
+" great"               printf(" awesum");
+" gross"               printf(" grodie");
+" guy"                 printf(" dude");
+" her "                        printf(" that chick ");
+" her."                        printf(" that chick.");
+" him "                        printf(" that dude ");
+" him."                        printf(" that dude.");
+" 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 "           |
+" is "         {
+                       ECHO;
+                       switch(rand() % 6)
+                       {
+                       case 0:
+                               printf("like, ya know, "); break;
+                       case 1:
+                               printf(""); break;
+                       case 2:
+                               printf("like wow! "); break;
+                       case 3:
+                               printf("ya know, like, "); break;
+                       case 4:
+                               printf(""); break;
+                       case 5:
+                               printf(""); break;
+                       }
+               }
+" house"               printf(" pad");
+" interesting"         printf(" cool");
+" large"               printf(" awesum");
+" leave"               printf(" blow");
+" man "                        printf(" nerd ");
+" maybe "      {
+                       switch(rand() % 6)
+                       {
+                       case 0:
+                               printf(" if you'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 4:
+                               printf(" maybe "); break;
+                       case 5:
+                               printf(" maybe "); break;
+                       }
+               }
+" meeting"             printf(" party");
+" movie"               printf(" flick");
+" music "              printf(" tunes ");
+" neat"                        printf(" keen");
+" nice"                        printf(" class");
+" no way"              printf(" just no way");
+" people"              printf(" guys");
+" really"              printf(" totally");
+" strange"             printf(" freaky");
+" the "                printf(" thuh ");
+" very"                        printf(" super");
+" want"                        printf(" want");
+" weird"               printf(" far out");
+" yes"                 printf(" fer shure");
+"But "                 printf("Man, ");
+"He "                  printf("That dude ");
+"I like"               printf("I can dig");
+"No,"                  printf("Like, no way,");
+Sir                    printf("Man");
+"She "                 printf("That fox ");
+This                   printf("Like, ya know, this");
+There                  printf("Like, there");
+"We "                  printf("Us guys ");
+"Yes,"                 printf("Like,");
+", "           {
+                       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!");
+                       }
+               }
+
+ing                    printf("in'");
+.                      ECHO;
+%%
+
+main()
+{
+       srand(getpid());
+       yylex();
+}
This page took 0.118181 seconds and 4 git commands to generate.