%e 3000 %p 6500 %k 3000 %a 8000 %n 2000 %o 8000 %{ /* Andrew Heybey (atheybey@ptt.lcs.mit.edu) 15-JAN-1987 Modified by Neeraj Gupta (goop@athena.mit.edu) 10-MAR-1993 * -2 option allows 2 column output Modified by Jay Ongg (ongg@mit.edu) 27-SEP-1994 * Scheme file support Modified by Erik Nygren (nygren@mit.edu) 13-FEB-1998 * Added Java support */ #define NORM_STATE 1 #define LINECOMMENT_STATE 2 #define QUOTE_STATE 3 #define SQUOTE_STATE 4 #define BLOCKCOMMENT_STATE 5 #ifdef yywrap #undef yywrap #endif int state = NORM_STATE; int pagenum, masterpagenum; int linenum; int scheme_prev_paren = 0; /* used by scheme mode */ int paren_open = 0; int preproc = 0; int filename = 0; int numparen = 0; int newpage; int newcol; int col2; extern int max_lines; extern int page_lines; extern int type; extern int starting; extern char name[], date[]; /* Different types of files that I know how to process */ #define C_FILE_TYPE 1 /* C source (.c & .h files) */ #define CLU_FILE_TYPE 2 /* Clu source (.clu files) */ #define PLAIN_FILE_TYPE 3 /* Plain text files */ #define ARGUS_FILE_TYPE 4 /* Argus source (.arg files) */ #define SCHEME_FILE_TYPE 5 /* Scheme source code (.scm) */ #define JAVA_FILE_TYPE 6 /* Java source code (.java & .pj) */ %} %Start C CLU PLAIN ARG SCHEME JAVA a [aA] b [bB] c [cC] d [dD] e [eE] f [fF] g [gG] h [hH] i [iI] j [jJ] k [kK] l [lL] m [mM] n [nN] o [oO] p [pP] q [qQ] r [rR] s [sS] t [tT] u [uU] v [vV] w [wW] x [xX] y [yY] z [zZ] %% <SCHEME>\014 | <C>\014 | <JAVA>\014 | <CLU>\014 | <PLAIN>\014 { /* Handle form feeds */ switch (state) { case QUOTE_STATE: case SQUOTE_STATE: newparen(); ECHO; break; default: makenewpage(); if (paren_open) { fprintf(yyout, ") show "); paren_open = 0; } fprintf(yyout, " showpage restore\n"); newpage = 1; filename = preproc = 0; break; } } <SCHEME>\t+ | <C>\t+ | <JAVA>\t+ | <CLU>\t+ | <PLAIN>\t+ | <ARG>\t+ { makenewpage(); if (paren_open) { fprintf(yyout, ") show\n"); paren_open = 0; } fprintf(yyout, " %d dotab\n", yyleng); } <C>^\#[a-zA-Z_][a-zA-Z0-9_]* { if (state == NORM_STATE) { makenewpage(); preproc = 1; paren_open = 1; fprintf(yyout, "("); ECHO; } else { newparen(); ECHO; } } <C>\\\" | <JAVA>\\\" { newparen(); fprintf(yyout, "\\\\\"");} <C>\" <JAVA>\" { newparen(); ECHO; switch (state) { case NORM_STATE: state = QUOTE_STATE; break; case QUOTE_STATE: state = NORM_STATE; break; default: break; }} <C>\' | <JAVA>\' { newparen(); ECHO; switch (state) { case NORM_STATE: state = SQUOTE_STATE; break; case SQUOTE_STATE: state = NORM_STATE; break; default: break; } } <JAVA>"(" | <C>"(" {newparen(); fprintf(yyout, "\\(");} <JAVA>")" | <C>")" {newparen(); fprintf(yyout, "\\)");} <JAVA>\\ | <C>\\ {newparen(); fprintf(yyout, "\\\\");} <JAVA>"<" | <C>"<" { newparen(); if (preproc) filename = 1; ECHO; } <JAVA>">" | <C>">" { newparen(); if (preproc && filename) filename = 0; ECHO; } <JAVA>\n { makenewpage(); if (paren_open) { fprintf(yyout, ") show "); paren_open = 0; } fprintf(yyout, " newline\n"); if (state == LINECOMMENT_STATE) { state = NORM_STATE; fprintf(yyout, "normfont\n"); } if (++linenum >= page_lines) { fprintf(yyout, " showpage restore\n"); newpage = 1; } else if (linenum >= max_lines && !col2) { fprintf(yyout, " restore\n"); newcol = 1; } filename = preproc = 0; } <C>\n { makenewpage(); if (paren_open) { fprintf(yyout, ") show "); paren_open = 0; } fprintf(yyout, " newline\n"); if (++linenum >= page_lines) { fprintf(yyout, " showpage restore\n"); newpage = 1; } else if (linenum >= max_lines && !col2) { fprintf(yyout, " restore\n"); newcol = 1; } filename = preproc = 0; } <JAVA>. | <C>. {newparen(); ECHO;} <JAVA>"/*" | <C>"/*" { makenewpage(); switch (state) { case NORM_STATE: state = BLOCKCOMMENT_STATE; if (paren_open) fprintf(yyout, ") show\n"); fprintf(yyout, "commentfont (/*"); paren_open = 1; break; default: newparen(); ECHO; break; }} <JAVA>"*/" | <C>"*/" { newparen(); switch (state) { case BLOCKCOMMENT_STATE: state = NORM_STATE; if (paren_open) fprintf(yyout, "*/) show\n"); fprintf(yyout, "normfont "); paren_open = 0; break; default: ECHO; break; }} <JAVA>"//" { makenewpage(); switch (state) { case NORM_STATE: state = LINECOMMENT_STATE; if (paren_open) fprintf(yyout, ") show\n"); fprintf(yyout, "commentfont (//"); paren_open = 1; break; default: newparen(); ECHO; break; }} <JAVA>abstract | <JAVA>boolean | <JAVA>break | <JAVA>byte | <JAVA>byvalue | <JAVA>case | <JAVA>cast | <JAVA>catch | <JAVA>char | <JAVA>class | <JAVA>const | <JAVA>continue | <JAVA>default | <JAVA>do | <JAVA>double | <JAVA>else | <JAVA>extends | <JAVA>false | <JAVA>final | <JAVA>finally | <JAVA>float | <JAVA>for | <JAVA>future | <JAVA>generic | <JAVA>goto | <JAVA>if | <JAVA>implements | <JAVA>import | <JAVA>inner | <JAVA>instanceof | <JAVA>int | <JAVA>interface | <JAVA>long | <JAVA>native | <JAVA>new | <JAVA>null | <JAVA>operator | <JAVA>outer | <JAVA>package | <JAVA>private | <JAVA>protected | <JAVA>public | <JAVA>rest | <JAVA>return | <JAVA>short | <JAVA>static | <JAVA>super | <JAVA>switch | <JAVA>synchronized | <JAVA>this | <JAVA>throw | <JAVA>throws | <JAVA>transient | <JAVA>true | <JAVA>try | <JAVA>var | <JAVA>void | <JAVA>volatile | <JAVA>where | <JAVA>while | <C>int | <C>char | <C>float | <C>double | <C>void | <C>struct | <C>union | <C>long | <C>short | <C>unsigned | <C>auto | <C>extern | <C>register | <C>typedef | <C>static | <C>goto | <C>return | <C>sizeof | <C>break | <C>continue | <C>if | <C>else | <C>enum | <C>for | <C>do | <C>while | <C>switch | <C>case | <C>default | <C>entry { makenewpage(); if (state == NORM_STATE && !filename) { if (paren_open) fprintf(yyout, ") show\n"); fprintf(yyout, "reservefont (%s) show \nnormfont ", yytext); if (paren_open) fprintf(yyout, "("); } else {newparen(); ECHO;} } <JAVA>@see:? | <JAVA>@version:? | <JAVA>@author:? | <JAVA>@param:? | <JAVA>@return:? | <JAVA>@exception:? | <JAVA>@deprecated:? | <JAVA>@since:? | <JAVA>@?modifies: | <JAVA>@?effects: | <JAVA>@?overview: | <JAVA>@?requires: | <JAVA>@modifies | <JAVA>@effects | <JAVA>@overview | <JAVA>@requires { makenewpage(); if ((state == BLOCKCOMMENT_STATE || state == LINECOMMENT_STATE) && !filename) { if (paren_open) fprintf(yyout, ") show\n"); fprintf(yyout, "commentreservefont (%s) show \ncommentfont ", yytext); if (paren_open) fprintf(yyout, "("); } else {newparen(); ECHO;} } <JAVA>[a-zA-Z_][a-zA-Z_0-9]* | <C>[a-zA-Z_][a-zA-Z_0-9]* { newparen(); ECHO; } <SCHEME>\\\" { newparen(); fprintf(yyout, "\\\\\""); scheme_prev_paren = 0;} <SCHEME>\" { newparen(); ECHO; switch (state) { case NORM_STATE: state = QUOTE_STATE; break; case QUOTE_STATE: state = NORM_STATE; break; default: break; scheme_prev_paren = 0; }} <SCHEME>\t | <SCHEME>" " {newparen(); ECHO; if (state == SQUOTE_STATE && numparen == 0) state = NORM_STATE; scheme_prev_paren = 0; } <SCHEME>"(" {newparen(); fprintf(yyout, "\\("); if (state == SQUOTE_STATE) numparen++; scheme_prev_paren = 1; } <SCHEME>")" {newparen(); fprintf(yyout, "\\)"); if (state == SQUOTE_STATE) { numparen--; if (numparen == 0) state = NORM_STATE; } scheme_prev_paren = 0; } <SCHEME>\\ {newparen(); fprintf(yyout, "\\\\"); scheme_prev_paren = 0;} <SCHEME>\n { makenewpage(); if (paren_open) { fprintf(yyout, ") show "); paren_open = 0; } fprintf(yyout, " newline\n"); if (state == LINECOMMENT_STATE) { state = NORM_STATE; fprintf(yyout, "normfont\n"); } if (++linenum >= page_lines) { fprintf(yyout, " showpage restore\n"); newpage = 1; } else if (linenum >= max_lines && !col2) { fprintf(yyout, " restore\n"); newcol = 1; } if (numparen == 0 && state == SQUOTE_STATE) state = NORM_STATE; scheme_prev_paren = 0; } <SCHEME>";" { makenewpage(); switch (state) { case NORM_STATE: state = LINECOMMENT_STATE; if (paren_open) fprintf(yyout, ") show\n"); fprintf(yyout, "commentfont (;"); paren_open = 1; break; default: newparen(); ECHO; break; } scheme_prev_paren = 0; } <SCHEME>. {newparen(); ECHO; scheme_prev_paren = 0;} <SCHEME>\' | <SCHEME>\` | <SCHEME>and | <SCHEME>begin | <SCHEME>case | <SCHEME>cond | <SCHEME>define | <SCHEME>delay | <SCHEME>do | <SCHEME>else | <SCHEME>if | <SCHEME>lambda | <SCHEME>let | <SCHEME>"let*" | <SCHEME>letrec | <SCHEME>or | <SCHEME>quote | <SCHEME>quasiquote | <SCHEME>"set!" | <SCHEME>unquote | <SCHEME>unquote-splicing { makenewpage(); if (state == NORM_STATE && !filename && scheme_prev_paren == 1) { if (paren_open) fprintf(yyout, ") show\n"); fprintf(yyout, "reservefont (%s) show \nnormfont ", yytext); if (paren_open) fprintf(yyout, "("); } else {newparen(); fprintf(yyout, "%s", yytext); } } <CLU>\\\" { newparen(); fprintf(yyout, "\\\\\"");} <CLU>\" { newparen(); ECHO; switch (state) { case NORM_STATE: state = QUOTE_STATE; break; case QUOTE_STATE: state = NORM_STATE; break; default: break; }} <CLU>\' { newparen(); ECHO; switch (state) { case NORM_STATE: state = SQUOTE_STATE; break; case SQUOTE_STATE: state = NORM_STATE; break; default: break; } } <CLU>"(" {newparen(); fprintf(yyout, "\\(");} <CLU>")" {newparen(); fprintf(yyout, "\\)");} <CLU>\\ {newparen(); fprintf(yyout, "\\\\");} <CLU>\n { makenewpage(); if (paren_open) { fprintf(yyout, ") show "); paren_open = 0; } fprintf(yyout, " newline\n"); if (state == LINECOMMENT_STATE) { state = NORM_STATE; fprintf(yyout, "normfont\n"); } if (++linenum >= page_lines) { fprintf(yyout, " showpage restore\n"); newpage = 1; } else if (linenum >= max_lines && !col2) { fprintf(yyout, " restore\n"); newcol = 1; } } <CLU>"%" { makenewpage(); switch (state) { case NORM_STATE: state = LINECOMMENT_STATE; if (paren_open) fprintf(yyout, ") show\n"); fprintf(yyout, "commentfont (%%"); paren_open = 1; break; default: newparen(); ECHO; break; }} <CLU>. {newparen(); ECHO;} <CLU>{p}{r}{o}{c} | <CLU>{e}{n}{d} | <CLU>{i}{t}{e}{r} | <CLU>{c}{l}{u}{s}{t}{e}{r} | <CLU>{t}{y}{p}{e} | <CLU>{r}{e}{t}{u}{r}{n}{s} | <CLU>{y}{i}{e}{l}{d}{s} | <CLU>{s}{i}{g}{n}{a}{l}{s} | <CLU>{w}{h}{e}{r}{e} | <CLU>{h}{a}{s} | <CLU>{i}{n} | <CLU>{r}{e}{p} | <CLU>{o}{w}{n} | <CLU>{n}{u}{l}{l} | <CLU>{b}{o}{o}{l} | <CLU>{i}{n}{t} | <CLU>{r}{e}{a}{l} | <CLU>{c}{h}{a}{r} | <CLU>{s}{t}{r}{i}{n}{g} | <CLU>{a}{n}{y} | <CLU>{c}{v}{t} | <CLU>{a}{r}{r}{a}{y} | <CLU>{s}{e}{q}{u}{e}{n}{c}{e} | <CLU>{r}{e}{c}{o}{r}{d} | <CLU>{s}{t}{r}{u}{c}{t} | <CLU>{o}{n}{e}{o}{f} | <CLU>{v}{a}{r}{i}{a}{n}{t} | <CLU>{p}{r}{o}{c}{t}{y}{p}{e} | <CLU>{i}{t}{e}{r}{t}{y}{p}{e} | <CLU>{w}{h}{i}{l}{e} | <CLU>{d}{o} | <CLU>{f}{o}{r} | <CLU>{i}{f} | <CLU>{t}{h}{e}{n} | <CLU>{e}{l}{s}{e}{i}{f} | <CLU>{e}{l}{s}{e} | <CLU>{t}{a}{g}{c}{a}{s}{e} | <CLU>{o}{t}{h}{e}{r}{s} | <CLU>{r}{e}{t}{u}{r}{n} | <CLU>{y}{i}{e}{l}{d} | <CLU>{s}{i}{g}{n}{a}{l} | <CLU>{e}{x}{i}{t} | <CLU>{b}{r}{e}{a}{k} | <CLU>{c}{o}{n}{t}{i}{n}{u}{e} | <CLU>{b}{e}{g}{i}{n} | <CLU>{r}{e}{s}{i}{g}{n}{a}{l} | <CLU>{e}{x}{c}{e}{p}{t} | <CLU>{t}{a}{g} | <CLU>{w}{h}{e}{n} | <CLU>{c}{a}{n}{d} | <CLU>{c}{o}{r} | <CLU>{f}{o}{r}{c}{e} | <CLU>{u}{p} | <CLU>{i}{s} | <CLU>{d}{o}{w}{n} { makenewpage(); if (state == NORM_STATE && !filename) { if (paren_open) fprintf(yyout, ") show\n"); fprintf(yyout, "reservefont (%s) show \nnormfont ", yytext); if (paren_open) fprintf(yyout, "("); } else {newparen(); ECHO;} } <CLU>[a-zA-Z_][a-zA-Z_0-9]* { newparen(); ECHO; } <ARG>\\\" { newparen(); fprintf(yyout, "\\\\\"");} <ARG>\" { newparen(); ECHO; switch (state) { case NORM_STATE: state = QUOTE_STATE; break; case QUOTE_STATE: state = NORM_STATE; break; default: break; }} <ARG>\' { newparen(); ECHO; switch (state) { case NORM_STATE: state = SQUOTE_STATE; break; case SQUOTE_STATE: state = NORM_STATE; break; default: break; } } <ARG>"(" {newparen(); fprintf(yyout, "\\(");} <ARG>")" {newparen(); fprintf(yyout, "\\)");} <ARG>\\ {newparen(); fprintf(yyout, "\\\\");} <ARG>\n { makenewpage(); if (paren_open) { fprintf(yyout, ") show "); paren_open = 0; } fprintf(yyout, " newline\n"); if (state == LINECOMMENT_STATE) { state = NORM_STATE; fprintf(yyout, "normfont\n"); } if (++linenum >= page_lines) { fprintf(yyout, " showpage restore\n"); newpage = 1; } else if (linenum >= max_lines && !col2) { fprintf(yyout, " restore\n"); newcol = 1; } } <ARG>"%" { makenewpage(); switch (state) { case NORM_STATE: state = LINECOMMENT_STATE; if (paren_open) fprintf(yyout, ") show\n"); fprintf(yyout, "commentfont (%%"); paren_open = 1; break; default: newparen(); ECHO; break; }} <ARG>. {newparen(); ECHO;} <ARG>{p}{r}{o}{c} | <ARG>{e}{n}{d} | <ARG>{i}{t}{e}{r} | <ARG>{c}{l}{u}{s}{t}{e}{r} | <ARG>{t}{y}{p}{e} | <ARG>{r}{e}{t}{u}{r}{n}{s} | <ARG>{y}{i}{e}{l}{d}{s} | <ARG>{s}{i}{g}{n}{a}{l}{s} | <ARG>{w}{h}{e}{r}{e} | <ARG>{h}{a}{s} | <ARG>{i}{n} | <ARG>{i}{s} | <ARG>{r}{e}{p} | <ARG>{o}{w}{n} | <ARG>{n}{u}{l}{l} | <ARG>{b}{o}{o}{l} | <ARG>{i}{n}{t} | <ARG>{r}{e}{a}{l} | <ARG>{c}{h}{a}{r} | <ARG>{s}{t}{r}{i}{n}{g} | <ARG>{a}{n}{y} | <ARG>{c}{v}{t} | <ARG>{a}{r}{r}{a}{y} | <ARG>{s}{e}{q}{u}{e}{n}{c}{e} | <ARG>{r}{e}{c}{o}{r}{d} | <ARG>{s}{t}{r}{u}{c}{t} | <ARG>{o}{n}{e}{o}{f} | <ARG>{v}{a}{r}{i}{a}{n}{t} | <ARG>{p}{r}{o}{c}{t}{y}{p}{e} | <ARG>{i}{t}{e}{r}{t}{y}{p}{e} | <ARG>{w}{h}{i}{l}{e} | <ARG>{d}{o} | <ARG>{f}{o}{r} | <ARG>{i}{f} | <ARG>{t}{h}{e}{n} | <ARG>{e}{l}{s}{e}{i}{f} | <ARG>{e}{l}{s}{e} | <ARG>{t}{a}{g}{c}{a}{s}{e} | <ARG>{o}{t}{h}{e}{r}{s} | <ARG>{r}{e}{t}{u}{r}{n} | <ARG>{y}{i}{e}{l}{d} | <ARG>{s}{i}{g}{n}{a}{l} | <ARG>{e}{x}{i}{t} | <ARG>{b}{r}{e}{a}{k} | <ARG>{c}{o}{n}{t}{i}{n}{u}{e} | <ARG>{b}{e}{g}{i}{n} | <ARG>{r}{e}{s}{i}{g}{n}{a}{l} | <ARG>{e}{x}{c}{e}{p}{t} | <ARG>{t}{a}{g} | <ARG>{w}{h}{e}{n} | <ARG>{c}{a}{n}{d} | <ARG>{c}{o}{r} | <ARG>{f}{o}{r}{c}{e} | <ARG>{u}{p} | <ARG>{d}{o}{w}{n} | <ARG>{a}{b}{o}{r}{t} | <ARG>{a}{c}{t}{i}{o}{n} | <ARG>{a}{t}{o}{m}{i}{c}_{a}{r}{r}{a}{y} | <ARG>{a}{t}{o}{m}{i}{c}_{r}{e}{c}{o}{r}{d} | <ARG>{a}{t}{o}{m}{i}{c}_{v}{a}{r}{i}{a}{n}{t} | <ARG>{b}{a}{c}{k}{g}{r}{o}{u}{n}{d} | <ARG>{b}{i}{n}{d} | <ARG>{c}{o}{e}{n}{t}{e}{r} | <ARG>{c}{r}{e}{a}{t}{o}{r} | <ARG>{c}{r}{e}{a}{t}{o}{r}{t}{y}{p}{e} | <ARG>{e}{n}{t}{e}{r} | <ARG>{e}{q}{u}{a}{t}{e}{s} | <ARG>{f}{o}{r}{k} | <ARG>{g}{u}{a}{r}{d}{i}{a}{n} | <ARG>{h}{a}{n}{d}{l}{e}{r} | <ARG>{h}{a}{n}{d}{l}{e}{r}{t}{y}{p}{e} | <ARG>{h}{a}{n}{d}{l}{e}{s} | <ARG>{i}{m}{a}{g}{e} | <ARG>{l}{e}{a}{v}{e} | <ARG>{m}{u}{t}{e}{x} | <ARG>{n}{o}{d}{e} | <ARG>{p}{a}{u}{s}{e} | <ARG>{p}{r}{o}{c}{e}{s}{s} | <ARG>{r}{e}{c}{o}{v}{e}{r} | <ARG>{s}{e}{i}{z}{e} | <ARG>{s}{e}{l}{f} | <ARG>{s}{t}{a}{b}{l}{e} | <ARG>{t}{a}{g}{t}{e}{s}{t} | <ARG>{t}{a}{g}{w}{a}{i}{t} | <ARG>{t}{e}{r}{m}{i}{n}{a}{t}{e} | <ARG>{t}{o}{p}{a}{c}{t}{i}{o}{n} | <ARG>{t}{r}{a}{n}{s}{m}{i}{t} | <ARG>{w}{t}{a}{g} { makenewpage(); if (state == NORM_STATE && !filename) { if (paren_open) fprintf(yyout, ") show\n"); fprintf(yyout, "reservefont (%s) show \nnormfont ", yytext); if (paren_open) fprintf(yyout, "("); } else {newparen(); ECHO;} } <ARG>[a-zA-Z_][a-zA-Z_0-9]* { newparen(); ECHO; } <PLAIN>"(" {newparen(); fprintf(yyout, "\\(");} <PLAIN>")" {newparen(); fprintf(yyout, "\\)");} <PLAIN>\\ {newparen(); fprintf(yyout, "\\\\");} <PLAIN>\n { makenewpage(); if (paren_open) { fprintf(yyout, ") show "); paren_open = 0; } fprintf(yyout, " newline\n"); if (++linenum >= page_lines) { fprintf(yyout, " showpage restore\n"); newpage = 1; } else if (linenum >= max_lines && !col2) { fprintf(yyout, " restore\n"); newcol = 1; } } <PLAIN>. {newparen(); ECHO;} . { if (starting) { switch (type) { case C_FILE_TYPE: BEGIN C; break; case JAVA_FILE_TYPE: BEGIN JAVA; break; case CLU_FILE_TYPE: BEGIN CLU; break; case SCHEME_FILE_TYPE: BEGIN SCHEME; break; case ARGUS_FILE_TYPE: BEGIN ARG; break; case PLAIN_FILE_TYPE: default: BEGIN PLAIN; break; } starting = 0; paren_open = 0; filename = 0; preproc = 0; state = NORM_STATE; newpage = 1; newcol = 0; pagenum = 0; } yyless(0); } %% yywrap() { if (paren_open) fprintf(yyout, ") show\n"); fprintf(yyout, " normfont\n"); if (!newpage) fprintf(yyout, "showpage restore\n"); BEGIN 0; return(1); } newparen() { makenewpage(); if (!paren_open) { fprintf(yyout, "("); paren_open = 1; } } makenewpage() { if (newcol) { fprintf(yyout, "\n%%%%Page: %d %d Col:2\n", pagenum, masterpagenum); fprintf(yyout, "save\n"); fprintf(yyout, "topcol2\n"); switch(state) { case NORM_STATE: case QUOTE_STATE: case SQUOTE_STATE: fprintf(yyout, "normfont\n"); break; case LINECOMMENT_STATE: case BLOCKCOMMENT_STATE: fprintf(yyout, "commentfont\n"); break; } newcol = 0; col2 = 1; } if (newpage) { pagenum++; masterpagenum++; linenum = 0; fprintf(yyout, "\n%%%%Page: %d %d Col:1\n", pagenum, masterpagenum); fprintf(yyout, "save 0 setlinewidth\n"); fprintf(yyout, "%d (%s) (%s) makeheader\n", pagenum, name, date); switch(state) { case NORM_STATE: case QUOTE_STATE: case SQUOTE_STATE: fprintf(yyout, "normfont\n"); break; case LINECOMMENT_STATE: case BLOCKCOMMENT_STATE: fprintf(yyout, "commentfont\n"); break; } newpage = 0; col2 = 0; } }