/* break out words, output cap + word(inverted) */
#define OUT() for(i=yyleng-1;i>=0; i--)putchar(yytext[i]); putchar('\n')
#define OUT1(nam) printf("%c:%s\n",nam,yytext)
#define OUTN(string) printf("%s\n",string)
(St|Dr|Drs|Mr|Mrs|Ms)"." {
(({C}+{L}*)|({C}*{L}+))+([-](({C}*{L}+)|({C}+{L}*))+)+ {
for(i=0;i<yyleng;i++)yytext[i]+= 'a' - 'A';
if(yyleng==1 && yytext[0] == 'I'){
({N}*[,])*({N}+".")+[ \t\n]+{C} {
if(yytext[i] == '.')break;
[ \t`][a-zA-Z0-9.]*("\/"[a-zA-Z0-9]+"."*)+[']* {
if(yytext[yyleng-1] == '.')dot=1;
{N}+([,]{N}+)*("."{N}+)*[']*[s]* {
{N}*([,]{N}+)*("."{N}+)+[']*[s]* {
{N}+([,]{N}+)*("."{N}*)*[']*[s]* {
if(yytext[yyleng-1] == '.')dot=1;
"$"{N}+([,]{N}+)*("."{N}*)* {
if(yytext[yyleng-1] == '.')dot=1;
yytext[0] = yytext[yyleng-1];
if(yytext[0] == ',' || yytext[0] == ')')
OUT1(lookup("will",1,0));
OUT1(lookup("have",1,0));
OUT1(lookup("would",1,0));
if((j = lookup(yytext,1,0)) != 0){
if(yytext[yyleng-1] == 'y' && cap == 0){
switch(yytext[yyleng-2]){
case 'c': look(cy,yyleng-2,NOUN);
case 'f': look(fy,yyleng-2,VERB);
case 'l': look(ly,yyleng-2,ADV);
case 'g': if(yytext[yyleng-3] == 'o'){
case 'r': switch(yytext[yyleng-3]){
case 'a': look(ary,yyleng-3,ADJ);
case 'o': look(ory,yyleng-3,ADJ);
case 'e': look(ery,yyleng-3,NOUN);
default: look(ry,yyleng-2,NOUN);
case 't': if(yytext[yyleng-3] == 'i')look(ity,yyleng-3,NOUN);
else look(ty,yyleng-2,ADJ);
/* fprintf(stderr,"nwords funny char: %c\n",yytext[0])*/ ;
if(flg==1)yytext[0] += 'a' - 'A';
for(ii=yyleng-1;yytext[ii] != '\''; ii--);
if((j=lookup(yytext,1,0)) != 0){
if(flg==1)yytext[0] += 'A' - 'a';
putchar(':'); putchar('\n');
if(freopen(argv[1],"r",stdin)==NULL) {
fprintf(stderr,"%s: cannot open\n", argv[1]);