simpson@trwrb.UUCP (Scott Simpson) (08/20/87)
Here are a set of patches for my LaTeX index processor. There are a couple of bugs. An empty group such as \indexentry{\LaTeX{}} causes a syntax error. Also, the lexical analyzer does not look at surrounding context when it encounters a comment character. For example, in \indexentry{\verb"%"} the text after the % is not passed to the parser. Since LaTeX does not ever generate comments, I just changed it so % is a normal character. Here are the diffs suitable for patch. Scott Simpson TRW Space and Defense Sector ...{decvax,ihnp4,ucbvax}!trwrb!simpson *** /usr/local/src/cmd/index/indexlex.l Fri Jun 26 08:24:01 1987 --- indexlex.l Mon Aug 17 10:29:06 1987 *************** *** 30,36 strcpy(yylval.value, yytext); return(CONTROLSEQUENCE); } - \%.*\n LineNo = EndLineNo++; /* Comment. Don't pass to parser */ {integer} { LineNo = EndLineNo; strcpy(yylval.value, yytext); --- 30,35 ----- strcpy(yylval.value, yytext); return(CONTROLSEQUENCE); } {integer} { LineNo = EndLineNo; strcpy(yylval.value, yytext); *************** *** 52,58 strcpy(yylval.value, yytext); return(WHITESPACE); } ! [^\\\{\}\%\, \t\n0-9]+ { LineNo = EndLineNo; strcpy(yylval.value, yytext); return(STRING); --- 51,57 ----- strcpy(yylval.value, yytext); return(WHITESPACE); } ! [^\\\{\}\, \t\n0-9]+ { LineNo = EndLineNo; strcpy(yylval.value, yytext); return(STRING); *** /usr/local/src/cmd/index/index.y Fri Jun 26 08:24:00 1987 --- index.y Mon Aug 17 10:29:06 1987 *************** *** 390,396 $$ = $2; } | ! anyelement /* Default action is $$ = $1 */ ; anyelement : --- 390,399 ----- $$ = $2; } | ! /* epsilon */ ! { ! ; /* Do nothing */ ! } ; anyelement :