|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T i
Length: 2515 (0x9d3) Types: TextFile Names: »idx.lex«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z« └─⟦2109abc41⟧ └─⟦this⟧ »./X.V10R4/Toolkit/Xr/usr/doc/idx.lex«
%{ /* * Index Generator filter.... 13NOV86--Paul Johnson * * expects records of the form: * * Section# "\t" Page# "\t" MainEntry "\t" SubEntry"\n" * | Section# "\t" Page# "\t" MainEntry "\t""\n" * */ #include <string.h> #include <ctype.h> #define TRUE 1 #define FALSE 0 char curmain[80]; char cursecnd[80]; char cursec[10]; int curpage; int diffMain = TRUE; int diffSecnd = TRUE; int secndry = FALSE; %} SECNUM [A-Z]|[1-9]{1,2} PAGNUM [0-9]+ ENTRY [^\t\n]+ %START PROCESS PAGNO MAIN SECND %% <INITIAL>^{SECNUM} { strcpy(cursec,yytext); } <INITIAL>"\t" { BEGIN PAGNO; } <PAGNO>{PAGNUM} { curpage = atoi(yytext); } <PAGNO>"\t" { BEGIN MAIN; } <MAIN>{ENTRY} { if(strcmp(yytext,curmain)){ strcpy(curmain,yytext); diffMain = TRUE; diffSecnd = TRUE; } else { diffMain = FALSE; } } <MAIN>"\t\n" { if(strlen(cursecnd) == 0){ diffSecnd = FALSE; } else { diffSecnd = TRUE; strcpy(cursecnd,""); } secndry = FALSE; printentry(curmain,cursecnd,cursec,curpage,diffMain,diffSecnd,secndry); BEGIN INITIAL; } <MAIN>"\t" { secndry = TRUE; BEGIN SECND; } <SECND>{ENTRY} { if(strcmp(yytext,cursecnd)){ strcpy(cursecnd,yytext); diffSecnd = TRUE; } else { diffSecnd = FALSE; } } <SECND>"\n" { printentry(curmain,cursecnd,cursec,curpage,diffMain,diffSecnd,secndry); BEGIN INITIAL; } %% printentry(curmain,cursecnd,cursec,curpage,diffMain,diffSecnd,secndry) char curmain[80]; char cursecnd[80]; char cursec[10]; int curpage; int diffMain; int diffSecnd; int secndry; { static char CurAlph; /* printf("curmain = %s\tcursecnd = %s\tcursec = %s\tcurpage = %d\n",curmain,cursecnd,cursec,curpage); printf("diffMain = %d\tdiffSecnd = %d\tsecndry = %d\n\n",diffMain,diffSecnd,secndry); */ if(CurAlph != toupper(curmain[0])){ if(isalpha(curmain[0])){ CurAlph = toupper(curmain[0]); printAlpha(CurAlph); } else if(isalpha(curmain[1])){ if(CurAlph != toupper(curmain[1])){ CurAlph = toupper(curmain[1]); printAlpha(CurAlph); } } else if(isalpha(curmain[2])){ if(CurAlph != toupper(curmain[2])){ CurAlph = toupper(curmain[2]); printAlpha(CurAlph); } } } if(diffMain || diffSecnd){ printf("\n.LI\n%s",curmain); if(secndry) printf(",\n%s",cursecnd); } printf(",\n%s\\-%d",cursec,curpage); } printAlpha(Alpha) char Alpha; { printf("\n.SP\n.LI\n\\s14\\fB%c\\s0\\fP",Alpha); } yywrap() { printf("\n.LE\n"); }