1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
%{
/* This is a character translator used to
* translate doc to help file
*/
int inbq = 0;
int init = 0;
int intt = 0;
int inverb = 0;
%}
%%
\\\\ { fputc('\n', yyout); if (inbq) fputs(" ", yyout); }
\\\\\n { fputc('\n', yyout); if (inbq) fputs(" ", yyout); }
\n { fputc('\n', yyout); }
[ ]*\\bq[ \n]* { inbq = 1; fputs(" ", yyout); }
[ ]*\\eq[ ]* { inbq = 0; }
[{]\\it[ ]*\n[ ]* { init = 1; fputs("\n ", yyout); fputc('"', yyout); }
[{]\\tt[ ]*\n[ ]* { intt = 1; fputs("\n ", yyout); fputc('`', yyout); }
[{]\\it[ ]* { init = 1; fputc('"', yyout); }
[{]\\tt[ ]* { intt = 1; fputc('`', yyout); }
[}] { if (init) {
fputc('"', yyout);
init = 0;
} else if (intt) {
fputc('\'', yyout);
intt = 0;
}
else if (inverb) {
fputc('}', yyout);
}
;
}
[ ]*\\Seealso { fprintf(yyout, " See also:"); }
[ ]*\\Examples { fprintf(yyout, " Examples:"); }
[ ]*\\Example { fprintf(yyout, " Example:"); }
[ ]*\\Syntax { fprintf(yyout, " Syntax:"); }
\\optio { fprintf(yyout, "(optional)"); }
\\times { fprintf(yyout, "X"); }
\\fudgit[\\]? { fprintf(yyout, "FUDGIT"); }
\\gnuplot[\\]? { fprintf(yyout, "GNUPLOT"); }
\\sgiplot[\\]? { fprintf(yyout, "SGIPLOT"); }
\\readline[\\]? { fprintf(yyout, "READLINE"); }
\\unix[\\]? { fprintf(yyout, "UNiX"); }
\\hoc[\\]? { fprintf(yyout, "HOC"); }
\\emacs[\\]? { fprintf(yyout, "EMACS"); }
[ ]*[$]\\bullet[$] { fprintf(yyout, " => "); }
[$]\\backslash[$] { fputc('\\', yyout); }
\\verb[+]\\[+] { fputc('\\', yyout); }
\\verb[+]\\t[+] { fputs("\\t", yyout); }
\\verb[+]\\n[+] { fputs("\\n", yyout); }
\\verb[+]\\a[+] { fputs("\\a", yyout); }
\\[%] { fputc('%', yyout); }
\\[$] { fputc('$', yyout); }
\\[&] { fputc('&', yyout); }
\\[#] { fputc('#', yyout); }
\\[^][{][ ][}] { fputc('^', yyout); }
\\_ { fputc('_', yyout); }
\\[}] { fputc('}', yyout); }
\\dash { fputc('-', yyout); }
\\[{] { fputc('{', yyout); }
\\ldots { fputs("...", yyout); }
\\ { ; }
[{] { if (inverb) fputc('{', yyout); }
[$] { if (inverb) fputc('$', yyout); }
\\nopagebreak\\begin[{]verbatim[}][ ]*\n { inverb = 1;}
\\end[{]verbatim[}][ ]*\n { inverb = 0; }
[a-zA-Z0-9*%@#!&()]* { fprintf(yyout, "%s", yytext); }
%%
extern FILE *yyin, *yyout;
main(argc, argv)
int argc;
char **argv;
{
if (argc < 1 && 3 < argc) {
fprintf(stderr, "Usage: %s infile [outfile]\n", argv[0]);
exit(1);
}
switch (argc) {
case 3:
fclose(stdout);
if ((yyout = fopen (argv[2], "w")) == NULL) {
fprintf(stderr, "%s: Permission denied.\n", argv[0]);
exit(1);
}
case 2:
fclose(stdin);
if ((yyin = fopen (argv[1], "r")) == NULL) {
fprintf(stderr, "%s: file not found\n", argv[0]);
exit(1);
}
break;
case 1:
/* filter mode */
break;
}
yylex();
exit(0);
}
|