diff options
author | Norbert Preining <norbert@preining.info> | 2020-03-16 03:01:06 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-03-16 03:01:06 +0000 |
commit | d50a41b6ab3d05fe5605a3a3b50ff68f61059296 (patch) | |
tree | 29468e087e9c19acf30b392dc705a54288d79137 /support/detex | |
parent | 87cddce361c3b477029d13b27bdaa57190b2d74b (diff) |
CTAN sync 202003160301
Diffstat (limited to 'support/detex')
-rw-r--r-- | support/detex/Flex-patch | 9 | ||||
-rw-r--r-- | support/detex/Makefile | 102 | ||||
-rw-r--r-- | support/detex/README | 189 | ||||
-rw-r--r-- | support/detex/detex.1l | 126 | ||||
-rw-r--r-- | support/detex/detex.h | 44 | ||||
-rw-r--r-- | support/detex/detex.l | 683 | ||||
-rw-r--r-- | support/detex/lexout.c | 2855 | ||||
-rw-r--r-- | support/detex/os2/README | 7 | ||||
-rw-r--r-- | support/detex/os2/detex-32.def | 3 | ||||
-rw-r--r-- | support/detex/os2/detex.def | 2 | ||||
-rw-r--r-- | support/detex/os2/makefile.os2 | 96 | ||||
-rw-r--r-- | support/detex/states.sed | 17 |
12 files changed, 0 insertions, 4133 deletions
diff --git a/support/detex/Flex-patch b/support/detex/Flex-patch deleted file mode 100644 index dd12337433..0000000000 --- a/support/detex/Flex-patch +++ /dev/null @@ -1,9 +0,0 @@ -From the DeTeX Home Page... - -Flex patch - -This patch has been incorporated into detex 2.7, so it is no longer -necessary. However, if you are using flex, you'll probably need to -change the link line in the make file to be - - ${CC} ${CFLAGS} -o $@ ${D_OBJ} -lfl diff --git a/support/detex/Makefile b/support/detex/Makefile deleted file mode 100644 index 14db5fdabd..0000000000 --- a/support/detex/Makefile +++ /dev/null @@ -1,102 +0,0 @@ -# Makefile for detex and delatex -# -# Daniel Trinkle -# Computer Science Department -# Purdue University -# -# Detex is a program to remove TeX and LaTeX constructs from text source. - -# Installation directory -# -DESTDIR = /usr/local/bin - -# Specify you favorite compiler -# -#CC = gcc - -# Compile time flags, just uncomment the necessary lines -# Some say GNU make does not correctly handle += -- you may have to use := -# -DEFS = -# -# Add -traditional for GNU cc on ISC 386/ix system and possibly others -# (reported by pinard@iro.umontreal.ca) -# -#DEFS += ${DEFS} -traditional -# -# Add -DHAVE_STRING_H for the SysV string manipulation routines -# -#DEFS += ${DEFS} -DHAVE_STRING_H -# -# Add -DMAXPATHLEN=<length> if it is not defined in /usr/include/sys/param.h -# -#DEFS += ${DEFS} -DMAXPATHLEN=1024 -# -# Add -DNO_MALLOC_DECL if your system does not like the malloc() declaration -# in detex.l (reported by pinard@iro.umontreal.ca) -# -#DEFS += ${DEFS} -DNO_MALLOC_DECL -# -CFLAGS = -O ${DEFS} - -# Use your favorite lexical scanner -# -LEX = lex -#LEX = flex - -#LFLAGS = -8 -C - -LPR = lpr -p - -# Program names -# -PROGS = detex - -# Header files -# -HDR = detex.h - -# Sources -# -SRC = detex.l - -# Objects for various programs -# -D_OBJ = detex.o - -all: ${PROGS} - -detex: ${D_OBJ} - ${CC} ${CFLAGS} -o $@ ${D_OBJ} -ll - -detex.c: - sed -f states.sed detex.l > xxx.l - ${LEX} ${LFLAGS} xxx.l - rm -f xxx.l - mv lex.yy.c detex.c - -lexout.c: detex.c - mv detex.c lexout.c - -man-page: - troff -man detex.1l - -# If you want detex available as delatex, uncomment the last two lines of -# this target -install: detex - rm -f ${DESTDIR}/detex - install -c -m 775 -o binary -g staff -s detex ${DESTDIR} -# rm -f ${DESTDIR}/delatex -# ln ${DESTDIR}/detex ${DESTDIR}/delatex - -clean: - -rm -f a.out core *.s *.o ERRS errs .,* .emacs_[0-9]* - -rm -f ${PROGS} xxx.l lex.yy.c - -print: ${HDR} ${SRC} - ${LPR} Makefile ${HDR} ${SRC} - -# Dependencies -# -detex.c: detex.h -detex.c: detex.l diff --git a/support/detex/README b/support/detex/README deleted file mode 100644 index 59fb6b558c..0000000000 --- a/support/detex/README +++ /dev/null @@ -1,189 +0,0 @@ -Detex - Version 2.7 - -Detex is a program to remove TeX constructs from a text file. It recognizes -the \input command. - -This program assumes it is dealing with LaTeX input if it sees the string -"\begin{document}" in the text. It recognizes the \include and \includeonly -commands. - -This directory contains the following files: - -README - you're looking at it. - -Makefile - makefile for generating detex on a 4.2BSD Unix system. - -detex.1l - troff source for the detex manual page. - Assuming you have the -man macros, use "make man-page" to - generate it. - -detex.h - Various global definitions. These should be modified to suit - the local installation. - -detex.l - Lex and C source for the detex program. - -lexout.c - C code generated from detex.l using lex on a Sun (SunOS 4.1.1) - This can be useful for DOS, OS/2 or systems that don't have - lex. - -states.sed - sed(1) script to munge the state names in detex.l so that - reasonable names can be used in the source without causing - lex(1) to overflow. - -os2 - subdirectory containing support for compilation on - OS/2 and DOS systems - - -Feel free to redistribute this program, but distribute the complete contents -of this directory. The latest version is available at -http://www.cs.purdue.edu/homes/trinkle/detex/ Send comments and fixes -to me via email. - -Daniel Trinkle <trinkle@cs.purdue.edu> -Department of Computer Sciences -Purdue University -West Lafayette, IN 47907-1398 - -April 26, 1986 - -Modified -- June 4, 1986 -Changed so that it automatically recognizes LaTeX source and ignores several -environment modes such as array. - - -Modified (Version 2.0) -- June 30, 1984 -Now handles white space in sequences like "\begin { document }". Detex is not -as easily confused by such things as display mode ends and begins that don't -match up. - - -Modified -- September 19, 1986 -Added the "-e <environment-list>" option to ignore specified LaTeX -environments. - - -Modified -- June 30, 1987 -Added the "-n" no-follow option, to allow detex to ignore \input and \include -commands. Also changed the algorithm for locating the input files. It now -interprets the "." more reasonably (i.e. it is not always the beginning of an -extension). - - -Modified -- December 15, 1988 -Added handling of verbatim environment in LaTeX mode and added it to the list -of modes ignored by default. Because of limitations with lex, it was -necessary to shorten the names of some of the existing start states before -adding a new one (ugh). - - -Modified -- January 3, 1988 -Added ignore of \$ inside $$ (math) pair. - - -Modified (Version 2.2) -- June 25, 1990 -Control sequences are no longer replaced by space, but just removed. This -means accents no longer cause output words to be broken. The "-c" option was -added to show the arguments of \cite, \ref, and \pageref macros. This is -useful when using something like style on the output. - - -Modified (Version 2.3) -- September 7, 1990 -Fixed the handling of Ctl mode a little better and added an exception -for \index on suggestions from kcb@hss.caltech.edu (KC Border). Also -changed the value for DEFAULTINPUTS to coincide with a local change. - - -Modified -- February 10, 1991 -Added -t option to force TeX mode even when seeing the "\begin{document}" -string in the input. - - -Modified -- February 23, 1991 -Based on suggestions from pinard@iro.umontreal.ca (Francois Pinard), I -added support for the SysV string routines (-DUSG), added defines for -the flex lexical scanner (-DFLEX_SCANNER), changed NULL to '\0' when -using it as a character (his sys defined NULL as (void *)0), changed -the Makefile to use ${CC} instead of cc, and added comments about the -new compile time options. - - -Modified (Version 2.4) -- September 2, 1992 -Corrected the way CITEBEGIN worked. Due to serious braindeath I had -the condition wrong in the if test. It should be (fLatex && !fCite). -This solves the problem a couple people reported with amstex style -\ref entries. - -Added a preprocessing sed(1) command to replace all the long, easy to -read state names with short two letter state names (SA-S?) so that lex -won't overflow and I don't have to keep shortening the state names -every time I add one. If a state is added, it must also be added to -states.sed (order is important) along with its unique S? replacement. - -Added \pagestyle, \setcounter, and \verb handling from -K.Sattar@cs.exeter.ac.uk (Khalid Sattar). Also allows invocation as -"delatex" to force LaTeX mode. - -Applied patches from queinnec@cenatls.cena.dgac.fr (Philippe Queinnec) -to handle nested {}s in state <LaMacro2> (\bibitem, \cite, \index). - -Added special ligature handling (\aa, \ae, \oe, \l, \o, \i, \j, \ss) -at the suggestion of gwp@dido.caltech.edu (G. W. Pigman II). - -Cleaned up the comments on detex.h, added mathmatica to DEFAULTENV. - - -Modified (Version 2.5) -- January 28, 1993 -Leading spaces in macros are no longer stripped. This means -"foo\footnote{ bar}" comes out as "foo bar" instead of "foobar". - -Fixed special ligature handling so it works in cases line {\ss} instead of -just when followed by a space. - - -Modified (Version 2.6) -- July 30, 1993 -Added OS/2 port from hankedr@mail.auburn.edu (Darrel R Hankerson). - -Added handling of leading and trailing ':' in TEXINPUTS per the latest -TeX as suggested by jnp@tfl.dk (J|rgen N|rgaard). - -Changed the way the input path is constructed in SetInputPaths() so we -never try to modify a constant string. - -Changed the way the the ignore environment list is contructed in -SetEnvIgnore() so we never try to modify a constant string. - -Changed the USG define to HAVE_STRING_H. - -Fixed the states.sed script so it only replaces "Input" in the correct -places. I would like to use the \< \> word separator patterns but -they are not supported by all versions of sed. This as least works. - -Changed the detex.c target in the Makefile to use a temporary file -because I experienced problems (segmentation fault) with lex on -Solaris 2.1 when input was from stdin. - - -Modified (Version 2.7) -- September 10, 1997 -Removed line breaks in detex.l between a few patterns and actions. It -appears that flex is no longer able to handle this. Thanks to Anthony -Harris <harris@hebb.neurology.pitt.edu> and Marty Leisner -<leisner@sdsp.mc.xerox.com> for reporting this. - - -Porting notes -- March 30, 1992 -When using gcc, or compiling on a NeXT, you should compile with --fwritable-strings. With the change to SetInputPaths() in 2.6 this -should no longer be necessary. - -On a NeXT, it has been reported that lex replaces the '\0' with NULL, -and then the compiler complains about it. I think this is an old bug -that is no longer applicable. - -July 30, 1993 -The flex scanner generator does not work because it does not handle -input buffering the same way as lex. I don't know of any reasonable -way to rewrite detex to get around this problem. - -May 25, 1995 -According to alain@ia1.u-strasbg.fr (Alain Ketterlin), using flex -allows 8-bit characters to be handled correctly. diff --git a/support/detex/detex.1l b/support/detex/detex.1l deleted file mode 100644 index 93e7100574..0000000000 --- a/support/detex/detex.1l +++ /dev/null @@ -1,126 +0,0 @@ -.TH DETEX 1L "12 August 1993" "Purdue University" -.SH NAME -detex \- a filter to strip \fITeX\fP commands from a .tex file. -.SH SYNOPSIS -.B detex -[ \fB\-clnstw\fR ] [ \fB\-e\fI environment-list\fR ] [ \fIfilename\fR[.tex] ... ] -.SH DESCRIPTION -.I Detex -(Version 2.6) -reads each file in sequence, removes all comments and -.I TeX -control sequences -and writes the remainder on the standard output. -All text in math mode and display mode is removed. -By default, -.I detex -follows \\input commands. -If a file cannot be opened, a warning message is -printed and the command is ignored. -If the -.B \-n -option is used, no \\input or \\include commands will be processed. -This allows single file processing. -If no input file is given on the command line, -.I detex -reads from standard input. -.PP -If the magic sequence ``\\begin{document}'' appears in the text, -.I detex -assumes it is dealing with -.I LaTeX -source and -.I detex -recognizes additional constructs used in -.IR LaTeX . -These include the \\include and \\includeonly commands. -The -.B \-l -option can be used to force -.I LaTeX -mode and the -.B \-t -option can be used to force -.I TeX -mode regardless of input content. -.PP -Text in various environment modes of -.I LaTeX -is ignored. The default modes are array, eqnarray, equation, figure, -mathmatica, picture, table and verbatim. The -.B \-e -option can be used to specify a comma separated -.I environment-list -of environments to ignore. The list replaces the defaults so specifying an -empty list effectively causes no environments to be ignored. -.PP -The -.B \-c -option can be used in -.I LaTeX -mode to have detex echo the arguments to \\cite, -\\ref, and \\pageref macros. This can be useful when sending the output to -a style checker. -.PP -.I Detex -assumes the standard character classes are being used for -.IR TeX . -.I Detex -allows white space between control sequences -and magic characters like `{' when recognizing things like -.I LaTeX -environments. -.PP -If the -.B \-w -flag is given, the output is a word list, one `word' (string of two or more -letters and apostrophes beginning with a letter) -per line, and all other characters ignored. -Without \fB\-w\fR the output follows the original, -with the deletions mentioned above. Newline characters are -preserved where possible -so that the lines of output match the input as closely as possible. -.PP -The TEXINPUTS environment variable is used to find \\input and \\include -files. Like \fITeX\fP, it interprets a leading or trailing `:' as the default -TEXINPUTS. It does \fInot\fP support the `//' directory expansion magic sequence. -.PP -Detex now handles the basic \fITeX\fP ligatures as a special case, replacing the -ligatures with acceptable charater substitutes. This eliminates -spelling errors introduced by merely removing them. The ligatures are -\\aa, \\ae, \\oe, \\ss, \\o, \\l (and their upper-case -equivalents). The special "dotless" characters \\i and \\j are also -replaced with i and j respectively. -.PP -Note that previous versions of -.I detex -would replace control sequences with a space character to prevent words -from running together. -However, this caused accents in the middle of words to break words, generating -"spelling errors" that were not desirable. -Therefore, the new version merely removes these accents. -The old functionality can be essentially duplicated by using the -.B \-s -option. -.SH SEE ALSO -tex(1L) -.SH DIAGNOSTICS -Nesting of \\input is allowed but the number of opened files must not -exceed the system's limit on the number of simultaneously opened files. -.I Detex -ignores unrecognized option characters after printing a warning message. -.SH AUTHOR -Daniel Trinkle, Computer Science Department, Purdue University -.SH BUGS -.I Detex -is not a complete -.I TeX -interpreter, so it can be confused by some constructs. -Most errors result in too much rather than too little output. -.PP -Running \fILaTeX\fR -source without a ``\\begin{document}'' -through \fIdetex\fR may produce -errors. -.PP -Suggestions for improvements are (mildly) encouraged. diff --git a/support/detex/detex.h b/support/detex/detex.h deleted file mode 100644 index 2ed7fbf1eb..0000000000 --- a/support/detex/detex.h +++ /dev/null @@ -1,44 +0,0 @@ -/****** -** The following parameters should be modified as necessary -** MAXINCLIST - maximum number of files allowed in an \includeonly list -** -** DEFAULTINPUTS - this should be the same as the default TEXINPUTS -** CHPATHSEP - the path separator character in TEXINPUTS -** MAXINPUTPATHS - (arbitrary) number of separate paths in TEXINPUTS -** -** DEFAULTENV - list of LaTeX environments ignored -** CHENVSEP - the list separator character in the ignore envronment list -** MAXENVS - maximum number of environments listed in the ignore list -** CCHMAXENV - maximum count of characters in an environment name (LaTex) -******/ - -#define MAXINCLIST 40 - -#ifdef OS2 -#define DEFAULTINPUTS ".;/emtex/texinput" -#define CHPATHSEP ';' -#else -#define DEFAULTINPUTS ".:/usr/local/tex/inputs" -#define CHPATHSEP ':' -#endif -#define MAXINPUTPATHS 10 - -#define DEFAULTENV "array,eqnarray,equation,figure,mathmatica,picture,table,verbatim" -#define CHENVSEP ',' -#define MAXENVS 10 -#define CCHMAXENV 100 - -/****** -** These probably should not be changed -******/ - -#define CHOPT '-' -#define CHCITEOPT 'c' -#define CHENVOPT 'e' -#define CHLATEXOPT 'l' -#define CHNOFOLLOWOPT 'n' -#define CHSPACEOPT 's' -#define CHTEXOPT 't' -#define CHWORDOPT 'w' - -#define ERROR -1 diff --git a/support/detex/detex.l b/support/detex/detex.l deleted file mode 100644 index 67b0266b61..0000000000 --- a/support/detex/detex.l +++ /dev/null @@ -1,683 +0,0 @@ -%{ -#ifndef lint -static char rcsid[] = "$Header: /p/src/local/bin/detex/RCS/detex.l,v 2.19 1997/09/10 18:12:37 trinkle Exp $"; -#endif - -/* - * detex [-e environment-list] [-c] [-l] [-n] [-s] [-t] [-w] [file[.tex]] - * - * This program is used to remove TeX or LaTeX constructs from a text - * file. - * - * Written by: - * Daniel Trinkle - * Department of Computer Science - * Purdue University - * - */ - -#include "detex.h" -#ifdef HAVE_STRING_H -#include <string.h> -#define index strchr -#define rindex strrchr -#else -#include <strings.h> -#endif -#ifndef MAXPATHLEN -#include <sys/param.h> -#endif -#ifdef OS2 -#include <stdlib.h> -#endif - -#define LaBEGIN if (fLatex) BEGIN -#define CITEBEGIN if (fLatex && !fCite) BEGIN -#define IGNORE if (fSpace && !fWord) putchar(' ') -#define SPACE if (!fWord) putchar(' ') -#define NEWLINE if (!fWord) putchar('\n') - -char *SafeMalloc(); -#ifndef NO_MALLOC_DECL -char *malloc(); -#endif -#ifdef OS2 -void yyless(int); -#endif - -char *rgsbEnvIgnore[MAXENVS]; /* list of environments ignored */ -char *rgsbIncList[MAXINCLIST]; /* list of includeonly files */ -char *rgsbInputPaths[MAXINPUTPATHS]; /* list of input paths in order */ -char sbCurrentEnv[CCHMAXENV]; /* current environment being ignored */ -char *sbProgName; /* name we were invoked with */ -FILE *rgfp[NOFILE+1]; /* stack of input/include files */ -int cfp = 0; /* count of files in stack */ -int cOpenBrace = 0; /* count of `{' in <LaMacro2> */ -int csbEnvIgnore; /* count of environments ignored */ -int csbIncList = 0; /* count of includeonly files */ -int csbInputPaths; /* count of input paths */ -int fLatex = 0; /* flag to indicated delatex */ -int fWord = 0; /* flag for -w option */ -int fFollow = 1; /* flag to follow input/include */ -int fCite = 0; /* flag to echo \cite and \ref args */ -int fSpace = 0; /* flag to replace \cs with space */ -int fForcetex = 0; /* flag to inhibit latex mode */ -%} - -S [ \t\n]* -W [a-zA-Z]+ - -%Start Define Display IncludeOnly Input Math Normal Control -%Start LaBegin LaDisplay LaEnd LaEnv LaFormula LaInclude -%Start LaMacro LaMacro2 LaVerbatim - -%% -<Normal>"%".* /* ignore comments */ ; - -<Normal>"\\begin"{S}"{"{S}"document"{S}"}" {fLatex = !fForcetex; IGNORE;} - -<Normal>"\\begin" /* environment start */ {LaBEGIN LaBegin; IGNORE;} - -<LaBegin>{S}"{"{S}"verbatim"{S}"}" { if (BeginEnv("verbatim")) - BEGIN LaEnv; - else - BEGIN LaVerbatim; - IGNORE; - } - -<LaVerbatim>"\\end"{S}"{"{S}"verbatim"{S}"}" /* verbatim mode */ {BEGIN Normal; IGNORE;} -<LaVerbatim>. ECHO; - -<LaBegin>{W} { if (BeginEnv(yytext)) - BEGIN LaEnv; - else - BEGIN LaMacro; - IGNORE; - } -<LaBegin>"\n" NEWLINE; -<LaBegin>. ; - -<LaEnv>"\\end" /* absorb some environments */ {LaBEGIN LaEnd; IGNORE;} -<LaEnv>"\n" NEWLINE; -<LaEnv>. ; - -<LaEnd>{W} /* end environment */ { if (EndEnv(yytext)) - BEGIN Normal; - IGNORE; - } -<LaEnd>"}" {BEGIN LaEnv; IGNORE;} -<LaEnd>"\n" NEWLINE; -<LaEnd>. ; - -<Normal>"\\bibitem" /* ignore args */ {LaBEGIN LaMacro2; IGNORE;} -<Normal>"\\bibliography" /* of these \cs */ {LaBEGIN LaMacro; IGNORE;} -<Normal>"\\bibstyle" {LaBEGIN LaMacro; IGNORE;} -<Normal>"\\cite" {CITEBEGIN LaMacro2; IGNORE;} -<Normal>"\\documentstyle" {LaBEGIN LaMacro; IGNORE;} -<Normal>"\\end" {LaBEGIN LaMacro; IGNORE;} -<Normal>"\\footnote" {SPACE;} -<Normal>"\\index" {LaBEGIN LaMacro2; SPACE;} -<Normal>"\\label" {LaBEGIN LaMacro; IGNORE;} -<Normal>"\\pageref" {CITEBEGIN LaMacro; IGNORE;} -<Normal>"\\pagestyle" {LaBEGIN LaMacro; IGNORE;} -<Normal>"\\ref" {CITEBEGIN LaMacro; IGNORE;} -<Normal>"\\setcounter" {LaBEGIN LaMacro; IGNORE;} -<Normal>"\\verb" /* ignore \verb<ch>...<ch> */ { if (fLatex) { - char verbchar, c; - verbchar = input(); - while ((c = input()) != verbchar) - if (c == '\n') - NEWLINE; - } - IGNORE; - } -<LaMacro>"}" BEGIN Normal; -<LaMacro>"\n" NEWLINE; -<LaMacro>. ; -<LaMacro2>"{" { cOpenBrace++; } -<LaMacro2>"}" { cOpenBrace--; - if (cOpenBrace == 0) - BEGIN Normal; - } -<LaMacro2>"\n" NEWLINE; -<LaMacro2>. ; - -<Normal>"\\def" /* ignore def begin */ {BEGIN Define; IGNORE;} -<Define>"{" BEGIN Normal; -<Define>"\n" NEWLINE; -<Define>. ; - -<Normal>"\\(" /* formula mode */ {LaBEGIN LaFormula; IGNORE;} -<LaFormula>"\\)" BEGIN Normal; -<LaFormula>"\n" NEWLINE; -<LaFormula>. ; - -<Normal>"\\[" /* display mode */ {LaBEGIN LaDisplay; IGNORE;} -<LaDisplay>"\\]" BEGIN Normal; -<LaDisplay>"\n" NEWLINE; -<LaDisplay>. ; - -<Normal>"$$" /* display mode */ {BEGIN Display; IGNORE;} -<Display>"$$" BEGIN Normal; -<Display>"\n" NEWLINE; -<Display>. ; - -<Normal>"$" /* math mode */ {BEGIN Math; IGNORE;} -<Math>"$" BEGIN Normal; -<Math>"\n" NEWLINE; -<Math>"\\$" ; -<Math>. ; - -<Normal>"\\include" /* process files */ {LaBEGIN LaInclude; IGNORE;} -<LaInclude>[^{ \t\n}]+ { IncludeFile(yytext); - BEGIN Normal; - } -<LaInclude>"\n" NEWLINE; -<LaInclude>. ; - -<Normal>"\\includeonly" {BEGIN IncludeOnly; IGNORE;} -<IncludeOnly>[^{ \t,\n}]+ AddInclude(yytext); -<IncludeOnly>"}" { if (csbIncList == 0) - rgsbIncList[csbIncList++] = '\0'; - BEGIN Normal; - } -<IncludeOnly>"\n" NEWLINE; -<IncludeOnly>. ; - -<Normal>"\\input" {BEGIN Input; IGNORE;} -<Input>[^{ \t\n}]+ { InputFile(yytext); - BEGIN Normal; - } -<Input>"\n" NEWLINE; -<Input>. ; - -<Normal>\\(aa|AA|ae|AE|oe|OE|ss)[ \t]*[ \t\n}] /* handle ligatures */ {(void)printf("%.2s", yytext+1);} -<Normal>\\[OoijLl][ \t]*[ \t\n}] {(void)printf("%.1s", yytext+1);} - -<Normal>\\[a-zA-Z@]+ /* ignore other \cs */ {BEGIN Control; IGNORE;} -<Normal>"\\ " SPACE; -<Normal>\\. IGNORE; -<Control>\\[a-zA-Z@]+ IGNORE; -<Control>[a-zA-Z@0-9]*[-'=`][^ \t\n{]* IGNORE; -<Control>"\n" {BEGIN Normal; NEWLINE;} -<Control>[ \t]*[{]* {BEGIN Normal; IGNORE;} -<Control>. {yyless(0);BEGIN Normal;} - -<Normal>[{}\\|] /* special characters */ IGNORE; -<Normal>[!?]"`" IGNORE; -<Normal>~ SPACE; - -<Normal>{W}[']*{W} { if (fWord) - (void)printf("%s\n", yytext); - else - ECHO; - } -<Normal>[0-9]+ if (!fWord) ECHO; -<Normal>(.|\n) if (!fWord) ECHO; -%% -/****** -** main -- -** Set sbProgName to the base of arg 0. -** Set the input paths. -** Check for options -** -c echo LaTeX \cite, \ref, and \pageref values -** -e <env-list> list of LaTeX environments to ignore -** -l force latex mode -** -n do not follow \input and \include -** -s replace control sequences with space -** -t force tex mode -** -w word only output -** Set the list of LaTeX environments to ignore. -** Process each input file. -** If no input files are specified on the command line, process stdin. -******/ - -main(cArgs,rgsbArgs) -int cArgs; -char *rgsbArgs[]; -{ - char *pch, *sbEnvList = DEFAULTENV, sbBadOpt[2]; - FILE *TexOpen(); - int fSawFile = 0, iArgs = 1; - - /* get base name and decide what we are doing, detex or delatex */ -#ifdef OS2 - char drive[_MAX_DRIVE], dir[_MAX_DIR]; - char fname[_MAX_FNAME], ext[_MAX_EXT]; -#ifdef __EMX__ - _wildcard(&cArgs, &rgsbArgs); - _response(&cArgs, &rgsbArgs); -#endif - _splitpath (rgsbArgs[0], drive, dir, fname, ext); - sbProgName = strlwr(fname); -#else - if ((sbProgName = rindex(rgsbArgs[0], '/')) != NULL) - sbProgName++; - else - sbProgName = rgsbArgs[0]; -#endif - if (strcmp("delatex",sbProgName) == 0) - fLatex = 1; - - /* set rgsbInputPaths for use with TexOpen() */ - SetInputPaths(); - - /* process command line options */ - while (iArgs < cArgs && *(pch = rgsbArgs[iArgs]) == CHOPT) { - while (*++pch) - switch (*pch) { - case CHCITEOPT: - fCite = 1; - break; - case CHENVOPT: - sbEnvList = rgsbArgs[++iArgs]; - break; - case CHLATEXOPT: - fLatex = 1; - break; - case CHNOFOLLOWOPT: - fFollow = 0; - break; - case CHSPACEOPT: - fSpace = 1; - break; - case CHTEXOPT: - fForcetex = 1; - break; - case CHWORDOPT: - fWord = 1; - break; - default: -#ifdef OS2 - OS2UsageExit(); -#else - sbBadOpt[0] = *pch; - sbBadOpt[1] = '\0'; - Warning("unknown option ignored -", sbBadOpt); -#endif - } - iArgs++; - } - SetEnvIgnore(sbEnvList); - - /* process input files */ - for (; iArgs < cArgs; iArgs++) { - fSawFile++; - if ((yyin = TexOpen(rgsbArgs[iArgs])) == NULL) { - Warning("can't open file", rgsbArgs[iArgs]); - continue;; - } - BEGIN Normal; - (void)yylex(); - } - - /* if there were no input files, assume stdin */ - if (!fSawFile) { - yyin = stdin; -#ifdef OS2 - if (isatty(fileno(stdin))) - OS2UsageExit(); -#endif - BEGIN Normal; - (void)yylex(); - } -#ifndef FLEX_SCANNER - if (YYSTATE != Normal) - ErrorExit("input contains an unterminated mode or environment"); -#endif - return(0); -} - -#ifdef FLEX_SCANNER -#undef yywrap -#endif - -/****** -** yywrap -- handles EOF for lex. Check to see if the stack of open files -** has anything on it. If it does, set yyin to the to value. If not -** return the termination signal for lex. -******/ - -yywrap() -{ - (void)fclose(yyin); - if (cfp > 0) { - yyin = rgfp[--cfp]; - return(0); - } - return(1); -} - -#ifdef OS2 - -/****** -** yyless -- return characters to the input stream. Some systems don't have -** a yyless routine -******/ - -void yyless(n) -int n; -{ - int i = strlen(yytext); - - while (i > n) unput(yytext[--i]); - yytext[yyleng = n] = '\0'; -} -#endif - -/****** -** SetEnvIgnore -- sets rgsbEnvIgnore to the values indicated by the -** sbEnvList. -******/ - -SetEnvIgnore(sbEnvList) -char *sbEnvList; -{ - char *sb; - - sb = SafeMalloc(strlen(sbEnvList) + 1, "malloc for SetEnvIgnore failed"); - (void) strcpy(sb, sbEnvList); - csbEnvIgnore = SeparateList(sb, rgsbEnvIgnore, CHENVSEP, MAXENVS); - if (csbEnvIgnore == ERROR) - ErrorExit("The environtment list contains too many environments"); -} - -/****** -** BeginEnv -- checks to see if sbEnv is in the list rgsbEnvIgnore. If it -** is, sbCurrentEnv is set to sbEnv. -******/ - -BeginEnv(sbEnv) -char *sbEnv; -{ - int i; - - if (!fLatex) return(0); - for (i = 0; i < csbEnvIgnore; i++) - if (strcmp(sbEnv, rgsbEnvIgnore[i]) == 0) { - (void)strcpy(sbCurrentEnv, sbEnv); - return(1); - } - return(0); -} - -/****** -** EndEnv -- checks to see if sbEnv is the current environment being ignored. -******/ - -EndEnv(sbEnv) -char *sbEnv; -{ - if (!fLatex) return(0); - if (strcmp(sbEnv, sbCurrentEnv) == 0) - return(1); - return(0); -} - -/****** -** InputFile -- push the current yyin and open sbFile. If the open fails, -** the sbFile is ignored. -******/ - -InputFile(sbFile) -char *sbFile; -{ - FILE *TexOpen(); - - if (!fFollow) - return; - rgfp[cfp++] = yyin; - if ((yyin = TexOpen(sbFile)) == NULL) { - Warning("can't open \\input file", sbFile); - yyin = rgfp[--cfp]; - } -} - -/****** -** IncludeFile -- if sbFile is not in the rgsbIncList, push current yyin -** and open sbFile. If the open fails, the sbFile is ignored. -******/ - -IncludeFile(sbFile) -char *sbFile; -{ - FILE *TexOpen(); - - if (!fFollow) - return; - if (!InList(sbFile)) - return; - rgfp[cfp++] = yyin; - if ((yyin = TexOpen(sbFile)) == NULL) { - Warning("can't open \\include file", sbFile); - yyin = rgfp[--cfp]; - } -} - -/****** -** AddInclude -- adds sbFile to the rgsbIncList and increments csbIncList. -** If the include list is too long, sbFile is ignored. -******/ - -AddInclude(sbFile) -char *sbFile; -{ - if (!fFollow) - return; - if (csbIncList >= MAXINCLIST) - Warning("\\includeonly list is too long, ignoring", sbFile); - rgsbIncList[csbIncList] = SafeMalloc(strlen(sbFile) + 1, "malloc for AddInclude failed"); - (void)strcpy(rgsbIncList[csbIncList++], sbFile); -} - -/****** -** InList -- checks to see if sbFile is in the rgsbIncList. If there is -** no list, all files are assumed to be "in the list". -******/ - -InList(sbFile) -char *sbFile; -{ - char *pch, sbBase[MAXPATHLEN]; - int i; - - if (csbIncList == 0) /* no list */ - return(1); - (void)strcpy(sbBase, sbFile); - if ((pch = rindex(sbBase, '.')) != NULL) - *pch = '\0'; - i = 0; - while ((i < csbIncList) && rgsbIncList[i]) - if (strcmp(rgsbIncList[i++], sbBase) == 0) - return(1); - return(0); -} - -/****** -** SetInputPaths -- sets rgsbInputPaths to the values indicated by the -** TEXINPUTS environment variable if set or else DEFAULTINPUTS. If -** the user's TEXINPUTS has a leading ':' prepend the DEFAULTINPUTS -** to the path, if there is a trailing ':' append the DEFAULTINPUTS. -** This is consistent with the most recent TeX. However, this -** routine does not honor the '//' construct (expand subdirs). -******/ - -SetInputPaths() -{ - char *sb, *sbPaths, *getenv(); - int cchDefaults, cchPaths; - - cchDefaults = strlen(DEFAULTINPUTS); -#ifdef OS2 - if ((sb = getenv("TEXINPUT")) == NULL) -#endif - if ((sb = getenv("TEXINPUTS")) == NULL) - sb = DEFAULTINPUTS; - cchPaths = strlen(sb); - if (sb[0] == CHPATHSEP) - cchPaths += cchDefaults; - if (sb[strlen(sb) - 1] == CHPATHSEP) - cchPaths += cchDefaults; - sbPaths = SafeMalloc(cchPaths + 1, "malloc for SetInputPaths failed"); - sbPaths[0] = '\0'; - if (sb[0] == CHPATHSEP) - (void)strcat(sbPaths, DEFAULTINPUTS); - (void)strcat(sbPaths, sb); - if (sb[strlen(sb) - 1] == CHPATHSEP) - (void)strcat(sbPaths, DEFAULTINPUTS); - - csbInputPaths = SeparateList(sbPaths, rgsbInputPaths, CHPATHSEP, MAXINPUTPATHS); - if (csbInputPaths == ERROR) -#ifdef OS2 - ErrorExit("TEXINPUT(S) environment variable has too many paths"); -#else - ErrorExit("TEXINPUTS environment variable has too many paths"); -#endif -} - -/****** -** SeparateList -- takes a chSep separated list sbList, replaces the -** chSep's with NULLs and sets rgsbList[i] to the beginning of -** the ith word in sbList. The number of words is returned. A -** ERROR is returned if there are more than csbMax words. -******/ - -SeparateList(sbList, rgsbList, chSep, csbMax) -char *sbList, *rgsbList[], chSep; -int csbMax; -{ - int csbList = 0; - - while (sbList && *sbList && csbList < csbMax) { - rgsbList[csbList++] = sbList; - if (sbList = index(sbList, chSep)) - *sbList++ = '\0'; - } - return(sbList && *sbList ? ERROR : csbList); -} - -/****** -** TexOpen -- tries to open sbFile in each of the rgsbInputPaths in turn. -** For each input path the following order is used: -** file.tex - must be as named, if not there go to the next path -** file.ext - random extension, try it -** file - base name, add .tex and try it -** file - try it as is -** Notice that if file exists in the first path and file.tex exists in -** one of the other paths, file in the first path is what is opened. -** If the sbFile begins with a '/', no paths are searched. -******/ - -FILE * -TexOpen(sbFile) -char *sbFile; -{ - char *pch, *sbNew; - FILE *fp; - int iPath; - static char sbFullPath[MAXPATHLEN]; - - for (iPath = 0; iPath < csbInputPaths; iPath++) { -#ifdef OS2 - if (*sbFile == '/' || *sbFile == '\\' || strchr(sbFile, ':')) { /* absolute path */ -#else - if (*sbFile == '/') { /* absolute path */ -#endif - (void)sprintf(sbFullPath, "%s", sbFile); - iPath = csbInputPaths; /* only check once */ - } else - (void)sprintf(sbFullPath, "%s/%s", rgsbInputPaths[iPath], sbFile); -#ifdef OS2 - pch = sbFullPath; - while (pch = strchr(pch, '\\')) - *pch = '/'; -#endif - - /* If sbFile ends in .tex then it must be there */ - if ((pch = rindex(sbFullPath, '.')) != NULL - && (strcmp(pch, ".tex") == 0)) - if ((fp = fopen(sbFullPath, "r")) != NULL) - return(fp); - else - continue; - - /* if .<ext> then try to open it. the '.' represents */ - /* the beginning of an extension if it is not the first */ - /* character and it does not follow a '.' or a '/' */ - if (pch != NULL && pch > &(sbFullPath[0]) - && *(pch - 1) != '.' && *(pch - 1) != '/' - && (fp = fopen(sbFullPath, "r")) != NULL) - return(fp); - - /* just base name, add .tex to the name */ - sbNew = SafeMalloc(strlen(sbFullPath) + 5, "malloc for TexOpen failed"); - (void)strcpy(sbNew, sbFullPath); - (void)strcat(sbNew, ".tex"); - if ((fp = fopen(sbNew, "r")) != NULL) - return(fp); - - /* try sbFile regardless */ - if ((fp = fopen(sbFullPath, "r")) != NULL) - return(fp); - } - return((FILE *)NULL); -} - -/****** -** SafeMalloc -- wrapper around malloc() to check for failure. -******/ - -char * -SafeMalloc(cch, sbMessage) -int cch; -char *sbMessage; -{ - char *sb; - - if ((sb = (char *)malloc((unsigned)cch)) == NULL) - ErrorExit(sbMessage); - return(sb); -} - -/****** -** Warning -- print a warning message preceded by the program name. -******/ - -Warning(sb1, sb2) -char *sb1, *sb2; -{ - (void)fprintf(stderr, "%s: warning: %s %s\n", sbProgName, sb1, sb2); -} - -/****** -** ErrorExit -- print an error message preceded by the program name. -** Stdout is flushed and detex exits. -******/ - -ErrorExit(sb1) -char *sb1; -{ - (void)fflush(stdout); - (void)fprintf(stderr, "%s: error: %s\n", sbProgName, sb1); - exit(1); -} -#ifdef OS2 - -/****** -** OS2UsageExit -- print OS/2 usage message and exit. -******/ - -OS2UsageExit() -{ - (void)printf("\n%s [ -clnstw ] [ -e environment-list ] [ filename[.tex] ... ]\n", - sbProgName); - puts(" -c echo LaTeX \\cite, \\ref, and \\pageref values\n \ --e <env-list> list of LaTeX environments to ignore\n \ --l force latex mode\n \ --n do not follow \\input and \\include\n \ --s replace control sequences with space\n \ --t force tex mode\n \ --w word only output"); - exit(0); -} -#endif diff --git a/support/detex/lexout.c b/support/detex/lexout.c deleted file mode 100644 index f7bb364f3a..0000000000 --- a/support/detex/lexout.c +++ /dev/null @@ -1,2855 +0,0 @@ -#include <stdio.h> -# define U(x) x -# define NLSTATE yyprevious=YYNEWLINE -# define BEGIN yybgin = yysvec + 1 + -# define INITIAL 0 -# define YYLERR yysvec -# define YYSTATE (yyestate-yysvec-1) -# define YYOPTIM 1 -# define YYLMAX BUFSIZ -#ifndef __cplusplus -# define output(c) (void)putc(c,yyout) -#else -# define lex_output(c) (void)putc(c,yyout) -#endif - -#if defined(__cplusplus) || defined(__STDC__) - -#if defined(__cplusplus) && defined(__EXTERN_C__) -extern "C" { -#endif - int yyback(int *, int); - int yyinput(void); - int yylook(void); - void yyoutput(int); - int yyracc(int); - int yyreject(void); - void yyunput(int); - int yylex(void); -#ifdef YYLEX_E - void yywoutput(wchar_t); - wchar_t yywinput(void); -#endif -#ifndef yyless - int yyless(int); -#endif -#ifndef yywrap - int yywrap(void); -#endif -#ifdef LEXDEBUG - void allprint(char); - void sprint(char *); -#endif -#if defined(__cplusplus) && defined(__EXTERN_C__) -} -#endif - -#ifdef __cplusplus -extern "C" { -#endif - void exit(int); -#ifdef __cplusplus -} -#endif - -#endif -# define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;} -# define yymore() (yymorfg=1) -#ifndef __cplusplus -# define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) -#else -# define lex_input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) -#endif -#define ECHO fprintf(yyout, "%s",yytext) -# define REJECT { nstr = yyreject(); goto yyfussy;} -int yyleng; -char yytext[YYLMAX]; -int yymorfg; -extern char *yysptr, yysbuf[]; -int yytchar; -FILE *yyin = {stdin}, *yyout = {stdout}; -extern int yylineno; -struct yysvf { - struct yywork *yystoff; - struct yysvf *yyother; - int *yystops;}; -struct yysvf *yyestate; -extern struct yysvf yysvec[], *yybgin; -#ifndef lint -static char rcsid[] = "$Header: /p/src/local/bin/detex/RCS/detex.l,v 2.19 1997/09/10 18:12:37 trinkle Exp $"; -#endif - - -# line 7 "xxx.l" -/* - * detex [-e environment-list] [-c] [-l] [-n] [-s] [-t] [-w] [file[.tex]] - * - * This program is used to remove TeX or LaTeX constructs from a text - * file. - * - * Written by: - * Daniel Trinkle - * Department of Computer Science - * Purdue University - * - */ - -#include "detex.h" -#ifdef HAVE_STRING_H -#include <string.h> -#define index strchr -#define rindex strrchr -#else -#include <strings.h> -#endif -#ifndef MAXPATHLEN -#include <sys/param.h> -#endif -#ifdef OS2 -#include <stdlib.h> -#endif - -#define LaBEGIN if (fLatex) BEGIN -#define CITEBEGIN if (fLatex && !fCite) BEGIN -#define IGNORE if (fSpace && !fWord) putchar(' ') -#define SPACE if (!fWord) putchar(' ') -#define NEWLINE if (!fWord) putchar('\n') - -char *SafeMalloc(); -#ifndef NO_MALLOC_DECL -char *malloc(); -#endif -#ifdef OS2 -void yyless(int); -#endif - -char *rgsbEnvIgnore[MAXENVS]; /* list of environments ignored */ -char *rgsbIncList[MAXINCLIST]; /* list of includeonly files */ -char *rgsbInputPaths[MAXINPUTPATHS]; /* list of input paths in order */ -char sbCurrentEnv[CCHMAXENV]; /* current environment being ignored */ -char *sbProgName; /* name we were invoked with */ -FILE *rgfp[NOFILE+1]; /* stack of input/include files */ -int cfp = 0; /* count of files in stack */ -int cOpenBrace = 0; /* count of `{' in <SG> */ -int csbEnvIgnore; /* count of environments ignored */ -int csbIncList = 0; /* count of includeonly files */ -int csbInputPaths; /* count of input paths */ -int fLatex = 0; /* flag to indicated delatex */ -int fWord = 0; /* flag for -w option */ -int fFollow = 1; /* flag to follow input/include */ -int fCite = 0; /* flag to echo \cite and \ref args */ -int fSpace = 0; /* flag to replace \cs with space */ -int fForcetex = 0; /* flag to inhibit latex mode */ -# define SJ 2 -# define SK 4 -# define SL 6 -# define SM 8 -# define SN 10 -# define SO 12 -# define SP 14 -# define SA 16 -# define SB 18 -# define SC 20 -# define SD 22 -# define SE 24 -# define SF 26 -# define SH 28 -# define SG 30 -# define SI 32 -# define YYNEWLINE 10 -yylex(){ -int nstr; extern int yyprevious; -#ifdef __cplusplus -/* to avoid CC and lint complaining yyfussy not being used ...*/ -static int __lex_hack = 0; -if (__lex_hack) goto yyfussy; -#endif -while((nstr = yylook()) >= 0) -yyfussy: switch(nstr){ -case 0: -if(yywrap()) return(0); break; -case 1: - -# line 75 "xxx.l" - /* ignore comments */ ; -break; -case 2: - -# line 77 "xxx.l" -{fLatex = !fForcetex; IGNORE;} -break; -case 3: - -# line 79 "xxx.l" - /* environment start */ {LaBEGIN SA; IGNORE;} -break; -case 4: - -# line 81 "xxx.l" - { if (BeginEnv("verbatim")) - BEGIN SD; - else - BEGIN SI; - IGNORE; - } -break; -case 5: - -# line 88 "xxx.l" -/* verbatim mode */ {BEGIN SO; IGNORE;} -break; -case 6: - -# line 89 "xxx.l" - ECHO; -break; -case 7: - -# line 91 "xxx.l" - { if (BeginEnv(yytext)) - BEGIN SD; - else - BEGIN SH; - IGNORE; - } -break; -case 8: - -# line 97 "xxx.l" - NEWLINE; -break; -case 9: - -# line 98 "xxx.l" - ; -break; -case 10: - -# line 100 "xxx.l" - /* absorb some environments */ {LaBEGIN SC; IGNORE;} -break; -case 11: - -# line 101 "xxx.l" - NEWLINE; -break; -case 12: - -# line 102 "xxx.l" - ; -break; -case 13: - -# line 104 "xxx.l" - /* end environment */ { if (EndEnv(yytext)) - BEGIN SO; - IGNORE; - } -break; -case 14: - -# line 108 "xxx.l" - {BEGIN SD; IGNORE;} -break; -case 15: - -# line 109 "xxx.l" - NEWLINE; -break; -case 16: - -# line 110 "xxx.l" - ; -break; -case 17: - -# line 112 "xxx.l" - /* ignore args */ {LaBEGIN SG; IGNORE;} -break; -case 18: - -# line 113 "xxx.l" - /* of these \cs */ {LaBEGIN SH; IGNORE;} -break; -case 19: - -# line 114 "xxx.l" - {LaBEGIN SH; IGNORE;} -break; -case 20: - -# line 115 "xxx.l" - {CITEBEGIN SG; IGNORE;} -break; -case 21: - -# line 116 "xxx.l" - {LaBEGIN SH; IGNORE;} -break; -case 22: - -# line 117 "xxx.l" - {LaBEGIN SH; IGNORE;} -break; -case 23: - -# line 118 "xxx.l" - {SPACE;} -break; -case 24: - -# line 119 "xxx.l" - {LaBEGIN SG; SPACE;} -break; -case 25: - -# line 120 "xxx.l" - {LaBEGIN SH; IGNORE;} -break; -case 26: - -# line 121 "xxx.l" - {CITEBEGIN SH; IGNORE;} -break; -case 27: - -# line 122 "xxx.l" - {LaBEGIN SH; IGNORE;} -break; -case 28: - -# line 123 "xxx.l" - {CITEBEGIN SH; IGNORE;} -break; -case 29: - -# line 124 "xxx.l" - {LaBEGIN SH; IGNORE;} -break; -case 30: - -# line 125 "xxx.l" -/* ignore \verb<ch>...<ch> */ { if (fLatex) { - char verbchar, c; - verbchar = input(); - while ((c = input()) != verbchar) - if (c == '\n') - NEWLINE; - } - IGNORE; - } -break; -case 31: - -# line 134 "xxx.l" - BEGIN SO; -break; -case 32: - -# line 135 "xxx.l" - NEWLINE; -break; -case 33: - -# line 136 "xxx.l" - ; -break; -case 34: - -# line 137 "xxx.l" - { cOpenBrace++; } -break; -case 35: - -# line 138 "xxx.l" - { cOpenBrace--; - if (cOpenBrace == 0) - BEGIN SO; - } -break; -case 36: - -# line 142 "xxx.l" - NEWLINE; -break; -case 37: - -# line 143 "xxx.l" - ; -break; -case 38: - -# line 145 "xxx.l" - /* ignore def begin */ {BEGIN SJ; IGNORE;} -break; -case 39: - -# line 146 "xxx.l" - BEGIN SO; -break; -case 40: - -# line 147 "xxx.l" - NEWLINE; -break; -case 41: - -# line 148 "xxx.l" - ; -break; -case 42: - -# line 150 "xxx.l" - /* formula mode */ {LaBEGIN SE; IGNORE;} -break; -case 43: - -# line 151 "xxx.l" - BEGIN SO; -break; -case 44: - -# line 152 "xxx.l" - NEWLINE; -break; -case 45: - -# line 153 "xxx.l" - ; -break; -case 46: - -# line 155 "xxx.l" - /* display mode */ {LaBEGIN SB; IGNORE;} -break; -case 47: - -# line 156 "xxx.l" - BEGIN SO; -break; -case 48: - -# line 157 "xxx.l" - NEWLINE; -break; -case 49: - -# line 158 "xxx.l" - ; -break; -case 50: - -# line 160 "xxx.l" - /* display mode */ {BEGIN SK; IGNORE;} -break; -case 51: - -# line 161 "xxx.l" - BEGIN SO; -break; -case 52: - -# line 162 "xxx.l" - NEWLINE; -break; -case 53: - -# line 163 "xxx.l" - ; -break; -case 54: - -# line 165 "xxx.l" - /* math mode */ {BEGIN SN; IGNORE;} -break; -case 55: - -# line 166 "xxx.l" - BEGIN SO; -break; -case 56: - -# line 167 "xxx.l" - NEWLINE; -break; -case 57: - -# line 168 "xxx.l" - ; -break; -case 58: - -# line 169 "xxx.l" - ; -break; -case 59: - -# line 171 "xxx.l" -/* process files */ {LaBEGIN SF; IGNORE;} -break; -case 60: - -# line 172 "xxx.l" - { IncludeFile(yytext); - BEGIN SO; - } -break; -case 61: - -# line 175 "xxx.l" - NEWLINE; -break; -case 62: - -# line 176 "xxx.l" - ; -break; -case 63: - -# line 178 "xxx.l" - {BEGIN SL; IGNORE;} -break; -case 64: - -# line 179 "xxx.l" - AddInclude(yytext); -break; -case 65: - -# line 180 "xxx.l" - { if (csbIncList == 0) - rgsbIncList[csbIncList++] = '\0'; - BEGIN SO; - } -break; -case 66: - -# line 184 "xxx.l" - NEWLINE; -break; -case 67: - -# line 185 "xxx.l" - ; -break; -case 68: - -# line 187 "xxx.l" - {BEGIN SM; IGNORE;} -break; -case 69: - -# line 188 "xxx.l" - { InputFile(yytext); - BEGIN SO; - } -break; -case 70: - -# line 191 "xxx.l" - NEWLINE; -break; -case 71: - -# line 192 "xxx.l" - ; -break; -case 72: - -# line 194 "xxx.l" -/* handle ligatures */ {(void)printf("%.2s", yytext+1);} -break; -case 73: - -# line 195 "xxx.l" - {(void)printf("%.1s", yytext+1);} -break; -case 74: - -# line 197 "xxx.l" -/* ignore other \cs */ {BEGIN SP; IGNORE;} -break; -case 75: - -# line 198 "xxx.l" - SPACE; -break; -case 76: - -# line 199 "xxx.l" - IGNORE; -break; -case 77: - -# line 200 "xxx.l" - IGNORE; -break; -case 78: - -# line 201 "xxx.l" - IGNORE; -break; -case 79: - -# line 202 "xxx.l" - {BEGIN SO; NEWLINE;} -break; -case 80: - -# line 203 "xxx.l" - {BEGIN SO; IGNORE;} -break; -case 81: - -# line 204 "xxx.l" - {yyless(0);BEGIN SO;} -break; -case 82: - -# line 206 "xxx.l" -/* special characters */ IGNORE; -break; -case 83: - -# line 207 "xxx.l" - IGNORE; -break; -case 84: - -# line 208 "xxx.l" - SPACE; -break; -case 85: - -# line 210 "xxx.l" - { if (fWord) - (void)printf("%s\n", yytext); - else - ECHO; - } -break; -case 86: - -# line 215 "xxx.l" - if (!fWord) ECHO; -break; -case 87: - -# line 216 "xxx.l" - if (!fWord) ECHO; -break; -case -1: -break; -default: -(void)fprintf(yyout,"bad switch yylook %d",nstr); -} return(0); } -/* end of yylex */ -/****** -** main -- -** Set sbProgName to the base of arg 0. -** Set the input paths. -** Check for options -** -c echo LaTeX \cite, \ref, and \pageref values -** -e <env-list> list of LaTeX environments to ignore -** -l force latex mode -** -n do not follow \input and \include -** -s replace control sequences with space -** -t force tex mode -** -w word only output -** Set the list of LaTeX environments to ignore. -** Process each input file. -** If no input files are specified on the command line, process stdin. -******/ - -main(cArgs,rgsbArgs) -int cArgs; -char *rgsbArgs[]; -{ - char *pch, *sbEnvList = DEFAULTENV, sbBadOpt[2]; - FILE *TexOpen(); - int fSawFile = 0, iArgs = 1; - - /* get base name and decide what we are doing, detex or delatex */ -#ifdef OS2 - char drive[_MAX_DRIVE], dir[_MAX_DIR]; - char fname[_MAX_FNAME], ext[_MAX_EXT]; -#ifdef __EMX__ - _wildcard(&cArgs, &rgsbArgs); - _response(&cArgs, &rgsbArgs); -#endif - _splitpath (rgsbArgs[0], drive, dir, fname, ext); - sbProgName = strlwr(fname); -#else - if ((sbProgName = rindex(rgsbArgs[0], '/')) != NULL) - sbProgName++; - else - sbProgName = rgsbArgs[0]; -#endif - if (strcmp("delatex",sbProgName) == 0) - fLatex = 1; - - /* set rgsbInputPaths for use with TexOpen() */ - SetInputPaths(); - - /* process command line options */ - while (iArgs < cArgs && *(pch = rgsbArgs[iArgs]) == CHOPT) { - while (*++pch) - switch (*pch) { - case CHCITEOPT: - fCite = 1; - break; - case CHENVOPT: - sbEnvList = rgsbArgs[++iArgs]; - break; - case CHLATEXOPT: - fLatex = 1; - break; - case CHNOFOLLOWOPT: - fFollow = 0; - break; - case CHSPACEOPT: - fSpace = 1; - break; - case CHTEXOPT: - fForcetex = 1; - break; - case CHWORDOPT: - fWord = 1; - break; - default: -#ifdef OS2 - OS2UsageExit(); -#else - sbBadOpt[0] = *pch; - sbBadOpt[1] = '\0'; - Warning("unknown option ignored -", sbBadOpt); -#endif - } - iArgs++; - } - SetEnvIgnore(sbEnvList); - - /* process input files */ - for (; iArgs < cArgs; iArgs++) { - fSawFile++; - if ((yyin = TexOpen(rgsbArgs[iArgs])) == NULL) { - Warning("can't open file", rgsbArgs[iArgs]); - continue;; - } - BEGIN SO; - (void)yylex(); - } - - /* if there were no input files, assume stdin */ - if (!fSawFile) { - yyin = stdin; -#ifdef OS2 - if (isatty(fileno(stdin))) - OS2UsageExit(); -#endif - BEGIN SO; - (void)yylex(); - } -#ifndef FLEX_SCANNER - if (YYSTATE != SO) - ErrorExit("input contains an unterminated mode or environment"); -#endif - return(0); -} - -#ifdef FLEX_SCANNER -#undef yywrap -#endif - -/****** -** yywrap -- handles EOF for lex. Check to see if the stack of open files -** has anything on it. If it does, set yyin to the to value. If not -** return the termination signal for lex. -******/ - -yywrap() -{ - (void)fclose(yyin); - if (cfp > 0) { - yyin = rgfp[--cfp]; - return(0); - } - return(1); -} - -#ifdef OS2 - -/****** -** yyless -- return characters to the input stream. Some systems don't have -** a yyless routine -******/ - -void yyless(n) -int n; -{ - int i = strlen(yytext); - - while (i > n) unput(yytext[--i]); - yytext[yyleng = n] = '\0'; -} -#endif - -/****** -** SetEnvIgnore -- sets rgsbEnvIgnore to the values indicated by the -** sbEnvList. -******/ - -SetEnvIgnore(sbEnvList) -char *sbEnvList; -{ - char *sb; - - sb = SafeMalloc(strlen(sbEnvList) + 1, "malloc for SetEnvIgnore failed"); - (void) strcpy(sb, sbEnvList); - csbEnvIgnore = SeparateList(sb, rgsbEnvIgnore, CHENVSEP, MAXENVS); - if (csbEnvIgnore == ERROR) - ErrorExit("The environtment list contains too many environments"); -} - -/****** -** BeginEnv -- checks to see if sbEnv is in the list rgsbEnvIgnore. If it -** is, sbCurrentEnv is set to sbEnv. -******/ - -BeginEnv(sbEnv) -char *sbEnv; -{ - int i; - - if (!fLatex) return(0); - for (i = 0; i < csbEnvIgnore; i++) - if (strcmp(sbEnv, rgsbEnvIgnore[i]) == 0) { - (void)strcpy(sbCurrentEnv, sbEnv); - return(1); - } - return(0); -} - -/****** -** EndEnv -- checks to see if sbEnv is the current environment being ignored. -******/ - -EndEnv(sbEnv) -char *sbEnv; -{ - if (!fLatex) return(0); - if (strcmp(sbEnv, sbCurrentEnv) == 0) - return(1); - return(0); -} - -/****** -** InputFile -- push the current yyin and open sbFile. If the open fails, -** the sbFile is ignored. -******/ - -InputFile(sbFile) -char *sbFile; -{ - FILE *TexOpen(); - - if (!fFollow) - return; - rgfp[cfp++] = yyin; - if ((yyin = TexOpen(sbFile)) == NULL) { - Warning("can't open \\input file", sbFile); - yyin = rgfp[--cfp]; - } -} - -/****** -** IncludeFile -- if sbFile is not in the rgsbIncList, push current yyin -** and open sbFile. If the open fails, the sbFile is ignored. -******/ - -IncludeFile(sbFile) -char *sbFile; -{ - FILE *TexOpen(); - - if (!fFollow) - return; - if (!InList(sbFile)) - return; - rgfp[cfp++] = yyin; - if ((yyin = TexOpen(sbFile)) == NULL) { - Warning("can't open \\include file", sbFile); - yyin = rgfp[--cfp]; - } -} - -/****** -** AddInclude -- adds sbFile to the rgsbIncList and increments csbIncList. -** If the include list is too long, sbFile is ignored. -******/ - -AddInclude(sbFile) -char *sbFile; -{ - if (!fFollow) - return; - if (csbIncList >= MAXINCLIST) - Warning("\\includeonly list is too long, ignoring", sbFile); - rgsbIncList[csbIncList] = SafeMalloc(strlen(sbFile) + 1, "malloc for AddInclude failed"); - (void)strcpy(rgsbIncList[csbIncList++], sbFile); -} - -/****** -** InList -- checks to see if sbFile is in the rgsbIncList. If there is -** no list, all files are assumed to be "in the list". -******/ - -InList(sbFile) -char *sbFile; -{ - char *pch, sbBase[MAXPATHLEN]; - int i; - - if (csbIncList == 0) /* no list */ - return(1); - (void)strcpy(sbBase, sbFile); - if ((pch = rindex(sbBase, '.')) != NULL) - *pch = '\0'; - i = 0; - while ((i < csbIncList) && rgsbIncList[i]) - if (strcmp(rgsbIncList[i++], sbBase) == 0) - return(1); - return(0); -} - -/****** -** SetInputPaths -- sets rgsbInputPaths to the values indicated by the -** TEXINPUTS environment variable if set or else DEFAULTINPUTS. If -** the user's TEXINPUTS has a leading ':' prepend the DEFAULTINPUTS -** to the path, if there is a trailing ':' append the DEFAULTINPUTS. -** This is consistent with the most recent TeX. However, this -** routine does not honor the '//' construct (expand subdirs). -******/ - -SetInputPaths() -{ - char *sb, *sbPaths, *getenv(); - int cchDefaults, cchPaths; - - cchDefaults = strlen(DEFAULTINPUTS); -#ifdef OS2 - if ((sb = getenv("TEXINPUT")) == NULL) -#endif - if ((sb = getenv("TEXINPUTS")) == NULL) - sb = DEFAULTINPUTS; - cchPaths = strlen(sb); - if (sb[0] == CHPATHSEP) - cchPaths += cchDefaults; - if (sb[strlen(sb) - 1] == CHPATHSEP) - cchPaths += cchDefaults; - sbPaths = SafeMalloc(cchPaths + 1, "malloc for SetInputPaths failed"); - sbPaths[0] = '\0'; - if (sb[0] == CHPATHSEP) - (void)strcat(sbPaths, DEFAULTINPUTS); - (void)strcat(sbPaths, sb); - if (sb[strlen(sb) - 1] == CHPATHSEP) - (void)strcat(sbPaths, DEFAULTINPUTS); - - csbInputPaths = SeparateList(sbPaths, rgsbInputPaths, CHPATHSEP, MAXINPUTPATHS); - if (csbInputPaths == ERROR) -#ifdef OS2 - ErrorExit("TEXINPUT(S) environment variable has too many paths"); -#else - ErrorExit("TEXINPUTS environment variable has too many paths"); -#endif -} - -/****** -** SeparateList -- takes a chSep separated list sbList, replaces the -** chSep's with NULLs and sets rgsbList[i] to the beginning of -** the ith word in sbList. The number of words is returned. A -** ERROR is returned if there are more than csbMax words. -******/ - -SeparateList(sbList, rgsbList, chSep, csbMax) -char *sbList, *rgsbList[], chSep; -int csbMax; -{ - int csbList = 0; - - while (sbList && *sbList && csbList < csbMax) { - rgsbList[csbList++] = sbList; - if (sbList = index(sbList, chSep)) - *sbList++ = '\0'; - } - return(sbList && *sbList ? ERROR : csbList); -} - -/****** -** TexOpen -- tries to open sbFile in each of the rgsbInputPaths in turn. -** For each input path the following order is used: -** file.tex - must be as named, if not there go to the next path -** file.ext - random extension, try it -** file - base name, add .tex and try it -** file - try it as is -** Notice that if file exists in the first path and file.tex exists in -** one of the other paths, file in the first path is what is opened. -** If the sbFile begins with a '/', no paths are searched. -******/ - -FILE * -TexOpen(sbFile) -char *sbFile; -{ - char *pch, *sbNew; - FILE *fp; - int iPath; - static char sbFullPath[MAXPATHLEN]; - - for (iPath = 0; iPath < csbInputPaths; iPath++) { -#ifdef OS2 - if (*sbFile == '/' || *sbFile == '\\' || strchr(sbFile, ':')) { /* absolute path */ -#else - if (*sbFile == '/') { /* absolute path */ -#endif - (void)sprintf(sbFullPath, "%s", sbFile); - iPath = csbInputPaths; /* only check once */ - } else - (void)sprintf(sbFullPath, "%s/%s", rgsbInputPaths[iPath], sbFile); -#ifdef OS2 - pch = sbFullPath; - while (pch = strchr(pch, '\\')) - *pch = '/'; -#endif - - /* If sbFile ends in .tex then it must be there */ - if ((pch = rindex(sbFullPath, '.')) != NULL - && (strcmp(pch, ".tex") == 0)) - if ((fp = fopen(sbFullPath, "r")) != NULL) - return(fp); - else - continue; - - /* if .<ext> then try to open it. the '.' represents */ - /* the beginning of an extension if it is not the first */ - /* character and it does not follow a '.' or a '/' */ - if (pch != NULL && pch > &(sbFullPath[0]) - && *(pch - 1) != '.' && *(pch - 1) != '/' - && (fp = fopen(sbFullPath, "r")) != NULL) - return(fp); - - /* just base name, add .tex to the name */ - sbNew = SafeMalloc(strlen(sbFullPath) + 5, "malloc for TexOpen failed"); - (void)strcpy(sbNew, sbFullPath); - (void)strcat(sbNew, ".tex"); - if ((fp = fopen(sbNew, "r")) != NULL) - return(fp); - - /* try sbFile regardless */ - if ((fp = fopen(sbFullPath, "r")) != NULL) - return(fp); - } - return((FILE *)NULL); -} - -/****** -** SafeMalloc -- wrapper around malloc() to check for failure. -******/ - -char * -SafeMalloc(cch, sbMessage) -int cch; -char *sbMessage; -{ - char *sb; - - if ((sb = (char *)malloc((unsigned)cch)) == NULL) - ErrorExit(sbMessage); - return(sb); -} - -/****** -** Warning -- print a warning message preceded by the program name. -******/ - -Warning(sb1, sb2) -char *sb1, *sb2; -{ - (void)fprintf(stderr, "%s: warning: %s %s\n", sbProgName, sb1, sb2); -} - -/****** -** ErrorExit -- print an error message preceded by the program name. -** Stdout is flushed and detex exits. -******/ - -ErrorExit(sb1) -char *sb1; -{ - (void)fflush(stdout); - (void)fprintf(stderr, "%s: error: %s\n", sbProgName, sb1); - exit(1); -} -#ifdef OS2 - -/****** -** OS2UsageExit -- print OS/2 usage message and exit. -******/ - -OS2UsageExit() -{ - (void)printf("\n%s [ -clnstw ] [ -e environment-list ] [ filename[.tex] ... ]\n", - sbProgName); - puts(" -c echo LaTeX \\cite, \\ref, and \\pageref values\n \ --e <env-list> list of LaTeX environments to ignore\n \ --l force latex mode\n \ --n do not follow \\input and \\include\n \ --s replace control sequences with space\n \ --t force tex mode\n \ --w word only output"); - exit(0); -} -#endif -int yyvstop[] = { -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -80, -0, - -41, -0, - -40, -0, - -39, -41, -0, - -53, -0, - -52, -0, - -53, -0, - -64, -67, -0, - -67, -0, - -66, -0, - -65, -67, -0, - -69, -71, -0, - -71, -0, - -70, -0, - -58, -0, - -56, -0, - -55, -58, -0, - -58, -0, - -87, -0, - -87, -0, - -54, -87, -0, - -1, -87, -0, - -86, -87, -0, - -87, -0, - -82, -87, -0, - -82, -87, -0, - -84, -87, -0, - -81, -0, - -80, -81, -0, - -79, -0, - -78, -81, -0, - -81, -0, - -81, -0, - -80, -81, -0, - -9, -0, - -9, -0, - -8, -0, - -7, -9, -0, - -9, -0, - -49, -0, - -48, -0, - -49, -0, - -16, -0, - -15, -0, - -13, -16, -0, - -14, -16, -0, - -12, -0, - -11, -0, - -12, -0, - -45, -0, - -44, -0, - -45, -0, - -60, -62, -0, - -62, -0, - -61, -0, - -33, -0, - -32, -0, - -31, -33, -0, - -37, -0, - -36, -0, - -34, -37, -0, - -35, -37, -0, - -6, -0, - -6, -0, - -51, -0, - -64, -0, - -69, -0, - -57, -0, - -83, -0, - -50, -0, - -1, -0, - -86, -0, - -85, -0, - -76, -0, - -75, -76, -0, - -42, -76, -0, - -74, -76, -0, - -74, -76, -0, - -74, -76, -0, - -74, -76, -0, - -46, -76, -0, - -74, -76, -0, - -74, -76, -0, - -74, -76, -0, - -74, -76, -0, - -74, -76, -0, - -74, -76, -0, - -74, -76, -0, - -74, -76, -0, - -74, -76, -0, - -74, -76, -0, - -74, -76, -0, - -74, -76, -0, - -74, -76, -0, - -80, -0, - -80, -0, - -78, -0, - -77, -0, - -7, -0, - -47, -0, - -13, -0, - -43, -0, - -60, -0, - -85, -0, - -74, -0, - -74, -0, - -73, -0, - -73, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -72, -0, - -72, -0, - -74, -0, - -74, -0, - -74, -0, - -38, -74, -0, - -74, -0, - -22, -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -28, -74, -0, - -74, -0, - -74, -0, - -10, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -20, -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -30, -74, -0, - -3, -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -24, -74, -0, - -68, -74, -0, - -25, -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -17, -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -59, -74, -0, - -26, -74, -0, - -74, -0, - -74, -0, - -74, -0, - -19, -74, -0, - -74, -0, - -23, -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -74, -0, - -27, -74, -0, - -74, -0, - -4, -0, - -74, -0, - -74, -0, - -74, -0, - -29, -74, -0, - -74, -0, - -74, -0, - -63, -74, -0, - -18, -74, -0, - -74, -0, - -21, -74, -0, - -5, -0, - -2, -0, -0}; -# define YYTYPE int -struct yywork { YYTYPE verify, advance; } yycrank[] = { -0,0, 0,0, 3,35, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 5,38, 3,35, 3,36, -104,0, 0,0, 0,0, 0,0, -7,41, 5,38, 5,39, 0,0, -0,0, 0,0, 34,0, 0,0, -7,42, 7,43, 0,0, 0,0, -113,147, 113,148, 0,0, 0,0, -62,129, 0,0, 3,35, 0,0, -0,0, 6,40, 40,98, 51,101, -3,35, 5,38, 12,50, 54,103, -5,40, 3,35, 3,35, 5,38, -7,41, 3,35, 85,141, 113,147, -5,38, 5,38, 7,41, 62,129, -5,38, 14,54, 14,55, 7,42, -7,41, 0,0, 0,0, 7,41, -0,0, 3,35, 3,35, 72,135, -72,135, 122,147, 122,148, 0,0, -5,38, 5,38, 69,134, 69,134, -0,0, 3,35, 9,45, 7,41, -7,41, 112,146, 99,0, 99,0, -5,38, 112,146, 9,46, 9,47, -114,147, 114,148, 72,135, 7,41, -122,147, 3,35, 0,0, 75,138, -0,0, 69,134, 53,102, 125,158, -5,38, 150,168, 116,146, 82,140, -97,143, 99,0, 116,146, 7,41, -117,149, 118,151, 9,45, 114,147, -117,150, 119,152, 120,154, 121,155, -9,45, 99,0, 126,159, 11,48, -128,161, 9,45, 9,45, 119,153, -3,37, 9,45, 3,35, 11,48, -11,49, 16,61, 12,48, 5,38, -20,73, 5,38, 24,80, 26,83, -34,96, 67,130, 7,42, 137,162, -7,44, 9,45, 9,45, 140,163, -113,148, 14,59, 62,130, 14,60, -114,146, 143,164, 149,167, 11,48, -151,169, 9,45, 11,50, 124,147, -124,148, 11,48, 127,160, 152,170, -153,171, 154,172, 11,48, 11,48, -100,0, 100,0, 11,48, 155,173, -157,177, 9,45, 122,156, 13,52, -127,146, 158,178, 131,0, 131,0, -72,137, 159,179, 124,147, 13,52, -13,52, 15,61, 11,48, 11,48, -160,180, 122,148, 161,181, 100,0, -69,135, 15,62, 15,63, 162,182, -156,174, 156,175, 11,48, 163,183, -99,0, 131,0, 99,0, 164,184, -9,46, 167,185, 9,46, 13,53, -114,148, 156,176, 13,54, 13,55, -169,189, 13,52, 11,51, 171,190, -173,191, 15,61, 13,52, 13,52, -174,192, 175,193, 13,56, 15,64, -176,194, 177,195, 17,68, 178,196, -15,61, 15,64, 123,147, 123,148, -15,65, 168,186, 17,69, 17,70, -168,187, 180,197, 13,52, 13,57, -142,0, 142,0, 181,198, 168,188, -182,199, 11,48, 11,48, 11,48, -15,65, 15,65, 13,57, 124,146, -185,201, 123,147, 146,165, 146,166, -186,202, 187,203, 17,68, 188,204, -15,65, 190,205, 191,206, 142,0, -17,68, 192,207, 13,58, 193,208, -194,209, 17,68, 17,68, 195,210, -19,73, 17,68, 197,213, 124,148, -15,66, 146,165, 196,211, 196,212, -19,73, 19,74, 100,0, 199,214, -100,0, 202,218, 203,219, 204,220, -205,221, 17,68, 17,71, 206,222, -131,0, 207,223, 21,76, 211,224, -212,225, 13,59, 13,59, 13,59, -13,60, 17,71, 21,76, 21,77, -19,73, 147,147, 147,148, 15,67, -15,61, 15,61, 19,73, 213,226, -214,227, 215,228, 218,230, 19,73, -19,73, 17,68, 123,157, 19,73, -219,231, 220,232, 184,184, 184,184, -221,233, 222,234, 21,76, 223,235, -147,147, 224,236, 225,237, 226,238, -21,76, 227,239, 23,80, 19,73, -19,73, 21,76, 21,76, 200,200, -200,200, 21,76, 23,80, 23,81, -25,83, 184,184, 123,148, 19,73, -17,72, 228,240, 17,68, 229,241, -25,83, 25,84, 142,0, 231,242, -142,0, 21,76, 21,78, 232,243, -165,165, 165,166, 200,200, 19,75, -233,244, 234,245, 23,80, 235,246, -237,247, 21,78, 146,166, 238,248, -23,80, 239,249, 240,250, 241,251, -25,83, 23,80, 23,80, 242,252, -244,253, 23,80, 25,83, 165,165, -246,254, 21,76, 247,255, 25,83, -25,83, 201,216, 201,216, 25,83, -248,256, 250,258, 19,73, 19,73, -19,73, 23,80, 23,80, 251,259, -252,260, 217,217, 217,217, 253,261, -254,262, 256,263, 27,86, 25,83, -25,83, 23,80, 216,216, 216,216, -201,216, 258,264, 27,87, 27,88, -21,76, 259,265, 21,79, 25,83, -260,266, 147,148, 261,267, 262,268, -217,217, 23,82, 264,269, 265,270, -249,249, 249,249, 266,271, 267,272, -269,273, 216,216, 270,274, 25,85, -184,200, 272,275, 27,86, 274,277, -273,273, 273,273, 277,277, 277,277, -27,86, 0,0, 29,89, 0,0, -200,215, 27,86, 27,86, 249,249, -0,0, 27,86, 29,89, 29,90, -23,80, 23,80, 23,80, 0,0, -0,0, 0,0, 0,0, 273,273, -0,0, 277,277, 25,83, 25,83, -25,83, 27,86, 27,86, 0,0, -0,0, 0,0, 0,0, 0,0, -165,166, 0,0, 29,89, 0,0, -0,0, 27,86, 0,0, 0,0, -29,89, 0,0, 0,0, 0,0, -0,0, 29,89, 29,89, 31,92, -217,229, 29,89, 0,0, 0,0, -0,0, 27,86, 0,0, 31,92, -31,93, 0,0, 0,0, 201,217, -0,0, 0,0, 0,0, 0,0, -0,0, 29,89, 29,89, 56,105, -56,105, 56,105, 56,105, 56,105, -56,105, 56,105, 56,105, 56,105, -56,105, 29,89, 0,0, 31,92, -216,217, 0,0, 0,0, 0,0, -27,87, 31,92, 27,87, 33,96, -0,0, 0,0, 31,92, 31,92, -0,0, 29,89, 31,92, 33,96, -33,0, 41,99, 0,0, 0,0, -249,257, 0,0, 0,0, 0,0, -0,0, 41,0, 41,0, 0,0, -0,0, 0,0, 31,92, 31,92, -273,276, 0,0, 277,278, 0,0, -0,0, 0,0, 0,0, 33,96, -0,0, 0,0, 31,92, 0,0, -29,89, 33,96, 29,91, 0,0, -41,0, 41,99, 33,96, 33,96, -0,0, 0,0, 33,96, 41,99, -0,0, 0,0, 31,92, 0,0, -41,0, 41,99, 0,0, 0,0, -41,99, 0,0, 0,0, 0,0, -0,0, 45,100, 33,96, 33,96, -0,0, 0,0, 0,0, 0,0, -0,0, 45,0, 45,0, 55,104, -41,99, 41,99, 33,96, 0,0, -0,0, 0,0, 0,0, 55,104, -55,0, 31,94, 0,0, 31,95, -41,99, 0,0, 0,0, 0,0, -0,0, 0,0, 33,97, 0,0, -45,0, 45,100, 0,0, 0,0, -0,0, 0,0, 0,0, 45,100, -41,99, 0,0, 0,0, 55,104, -45,100, 45,100, 0,0, 0,0, -45,100, 55,104, 0,0, 0,0, -0,0, 0,0, 55,104, 55,104, -0,0, 0,0, 55,104, 0,0, -0,0, 33,96, 33,96, 33,96, -45,100, 45,100, 0,0, 0,0, -0,0, 0,0, 0,0, 41,0, -0,0, 41,0, 55,104, 55,104, -45,100, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 55,104, 0,0, -0,0, 0,0, 0,0, 0,0, -45,100, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 55,104, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 57,106, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 45,0, -0,0, 45,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 55,104, 0,0, 55,104, -57,107, 57,107, 57,107, 57,107, -57,107, 57,107, 57,107, 57,107, -57,107, 57,107, 57,107, 57,107, -57,107, 57,107, 57,107, 57,107, -57,107, 57,107, 57,107, 57,107, -57,107, 57,107, 57,107, 57,107, -57,107, 57,107, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -57,107, 57,107, 57,107, 57,107, -57,107, 57,107, 57,107, 57,107, -57,107, 57,107, 57,107, 57,107, -57,107, 57,107, 57,107, 57,107, -57,107, 57,107, 57,107, 57,107, -57,107, 57,107, 57,107, 57,107, -57,107, 57,107, 58,108, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 58,108, 58,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 58,109, 58,108, 0,0, -0,0, 0,0, 0,0, 0,0, -58,108, 58,110, 0,0, 0,0, -0,0, 58,108, 58,108, 0,0, -0,0, 58,108, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 58,111, 58,112, 58,111, -58,111, 58,111, 58,111, 58,111, -58,111, 58,111, 58,111, 58,111, -58,111, 58,113, 58,111, 58,111, -58,114, 58,111, 58,111, 58,111, -58,111, 58,111, 58,111, 58,111, -58,111, 58,111, 58,111, 58,111, -58,115, 58,108, 0,0, 0,0, -0,0, 0,0, 58,116, 58,117, -58,118, 58,119, 58,120, 58,121, -58,111, 58,111, 58,122, 0,0, -58,111, 58,123, 58,111, 58,111, -58,124, 58,125, 58,111, 58,126, -58,127, 58,111, 58,111, 58,128, -58,111, 58,111, 58,111, 58,111, -58,108, 64,131, 58,108, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 64,0, 64,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -64,0, 64,131, 0,0, 0,0, -0,0, 0,0, 0,0, 64,131, -0,0, 0,0, 0,0, 0,0, -64,131, 64,131, 0,0, 0,0, -64,131, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -64,131, 64,131, 0,0, 0,0, -0,0, 65,131, 0,0, 0,0, -0,0, 0,0, 0,0, 65,131, -64,131, 0,0, 65,132, 65,132, -65,132, 65,132, 65,132, 65,132, -65,132, 65,132, 65,132, 65,132, -0,0, 0,0, 0,0, 65,131, -64,131, 0,0, 65,132, 65,132, -65,132, 65,132, 65,132, 65,132, -65,132, 65,132, 65,132, 65,132, -65,132, 65,132, 65,132, 65,132, -65,132, 65,132, 65,132, 65,132, -65,132, 65,132, 65,132, 65,132, -65,132, 65,132, 65,132, 65,132, -65,132, 0,0, 0,0, 64,0, -0,0, 64,131, 65,131, 65,132, -65,132, 65,132, 65,132, 65,132, -65,132, 65,132, 65,132, 65,132, -65,132, 65,132, 65,132, 65,132, -65,132, 65,132, 65,132, 65,132, -65,132, 65,132, 65,132, 65,132, -65,132, 65,132, 65,132, 65,132, -65,132, 66,133, 66,133, 66,133, -66,133, 66,133, 66,133, 66,133, -66,133, 66,133, 66,133, 66,133, -66,133, 66,133, 66,133, 66,133, -66,133, 66,133, 66,133, 66,133, -66,133, 66,133, 66,133, 66,133, -66,133, 66,133, 66,133, 66,133, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 66,133, 66,133, -66,133, 66,133, 66,133, 66,133, -66,133, 66,133, 66,133, 66,133, -66,133, 66,133, 66,133, 66,133, -66,133, 66,133, 66,133, 66,133, -66,133, 66,133, 66,133, 66,133, -66,133, 66,133, 66,133, 66,133, -71,136, 71,136, 71,136, 71,136, -71,136, 71,136, 71,136, 71,136, -71,136, 71,136, 71,136, 71,136, -71,136, 71,136, 71,136, 71,136, -71,136, 71,136, 71,136, 71,136, -71,136, 71,136, 71,136, 71,136, -71,136, 71,136, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -71,136, 71,136, 71,136, 71,136, -71,136, 71,136, 71,136, 71,136, -71,136, 71,136, 71,136, 71,136, -71,136, 71,136, 71,136, 71,136, -71,136, 71,136, 71,136, 71,136, -71,136, 71,136, 71,136, 71,136, -71,136, 71,136, 78,139, 78,139, -78,139, 78,139, 78,139, 78,139, -78,139, 78,139, 78,139, 78,139, -78,139, 78,139, 78,139, 78,139, -78,139, 78,139, 78,139, 78,139, -78,139, 78,139, 78,139, 78,139, -78,139, 78,139, 78,139, 78,139, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 78,139, 78,139, -78,139, 78,139, 78,139, 78,139, -78,139, 78,139, 78,139, 78,139, -78,139, 78,139, 78,139, 78,139, -78,139, 78,139, 78,139, 78,139, -78,139, 78,139, 78,139, 78,139, -78,139, 78,139, 78,139, 78,139, -86,142, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -86,0, 86,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 86,0, -86,142, 0,0, 0,0, 0,0, -0,0, 0,0, 86,142, 0,0, -0,0, 0,0, 0,0, 86,142, -86,142, 0,0, 0,0, 86,142, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 86,142, -86,142, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 86,142, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 0,0, 86,142, -0,0, 106,144, 106,144, 106,144, -106,144, 106,144, 106,144, 106,144, -106,144, 106,144, 106,144, 106,144, -106,144, 106,144, 106,144, 106,144, -106,144, 106,144, 106,144, 106,144, -106,144, 106,144, 106,144, 106,144, -106,144, 106,144, 106,144, 0,0, -0,0, 0,0, 86,0, 0,0, -86,0, 106,144, 106,144, 106,144, -106,144, 106,144, 106,144, 106,144, -106,144, 106,144, 106,144, 106,144, -106,144, 106,144, 106,144, 106,144, -106,144, 106,144, 106,144, 106,144, -106,144, 106,144, 106,144, 106,144, -106,144, 106,144, 106,144, 111,145, -111,145, 111,145, 111,145, 111,145, -111,145, 111,145, 111,145, 111,145, -111,145, 111,145, 111,145, 111,145, -111,145, 111,145, 111,145, 111,145, -111,145, 111,145, 111,145, 111,145, -111,145, 111,145, 111,145, 111,145, -111,145, 111,145, 0,0, 0,0, -0,0, 0,0, 0,0, 0,0, -111,145, 111,145, 111,145, 111,145, -111,145, 111,145, 111,145, 111,145, -111,145, 111,145, 111,145, 111,145, -111,145, 111,145, 111,145, 111,145, -111,145, 111,145, 111,145, 111,145, -111,145, 111,145, 111,145, 111,145, -111,145, 111,145, 144,144, 144,144, -144,144, 144,144, 144,144, 144,144, -144,144, 144,144, 144,144, 144,144, -144,144, 144,144, 144,144, 144,144, -144,144, 144,144, 144,144, 144,144, -144,144, 144,144, 144,144, 144,144, -144,144, 144,144, 144,144, 144,144, -0,0, 0,0, 0,0, 0,0, -0,0, 0,0, 144,144, 144,144, -144,144, 144,144, 144,144, 144,144, -144,144, 144,144, 144,144, 144,144, -144,144, 144,144, 144,144, 144,144, -144,144, 144,144, 144,144, 144,144, -144,144, 144,144, 144,144, 144,144, -144,144, 144,144, 144,144, 144,144, -0,0}; -struct yysvf yysvec[] = { -0, 0, 0, -yycrank+0, 0, yyvstop+1, -yycrank+0, 0, yyvstop+3, -yycrank+-1, 0, yyvstop+5, -yycrank+0, yysvec+3, yyvstop+7, -yycrank+-8, 0, yyvstop+9, -yycrank+-1, yysvec+5, yyvstop+11, -yycrank+-15, 0, yyvstop+13, -yycrank+0, yysvec+7, yyvstop+15, -yycrank+-77, 0, yyvstop+17, -yycrank+0, yysvec+9, yyvstop+19, -yycrank+-118, 0, yyvstop+21, -yycrank+-6, yysvec+11, yyvstop+23, -yycrank+-170, 0, yyvstop+25, -yycrank+-21, yysvec+13, yyvstop+27, -yycrank+-180, 0, yyvstop+29, -yycrank+-5, yysvec+15, yyvstop+31, -yycrank+-221, 0, yyvstop+33, -yycrank+0, yysvec+17, yyvstop+35, -yycrank+-267, 0, yyvstop+37, -yycrank+-8, yysvec+19, yyvstop+39, -yycrank+-289, 0, yyvstop+41, -yycrank+0, yysvec+21, yyvstop+43, -yycrank+-329, 0, yyvstop+45, -yycrank+-10, yysvec+23, yyvstop+47, -yycrank+-339, 0, yyvstop+49, -yycrank+-11, yysvec+25, yyvstop+51, -yycrank+-401, 0, yyvstop+53, -yycrank+0, yysvec+27, yyvstop+55, -yycrank+-441, 0, yyvstop+57, -yycrank+0, yysvec+29, yyvstop+59, -yycrank+-486, 0, yyvstop+61, -yycrank+0, yysvec+31, yyvstop+63, -yycrank+-526, 0, yyvstop+65, -yycrank+-12, yysvec+33, yyvstop+67, -yycrank+0, 0, yyvstop+69, -yycrank+0, 0, yyvstop+71, -yycrank+0, 0, yyvstop+73, -yycrank+0, 0, yyvstop+76, -yycrank+0, 0, yyvstop+78, -yycrank+2, 0, yyvstop+80, -yycrank+-536, 0, yyvstop+82, -yycrank+0, 0, yyvstop+85, -yycrank+0, 0, yyvstop+87, -yycrank+0, 0, yyvstop+89, -yycrank+-588, 0, yyvstop+92, -yycrank+0, 0, yyvstop+95, -yycrank+0, 0, yyvstop+97, -yycrank+0, 0, yyvstop+99, -yycrank+0, 0, yyvstop+101, -yycrank+0, 0, yyvstop+103, -yycrank+3, 0, yyvstop+106, -yycrank+0, 0, yyvstop+108, -yycrank+2, 0, yyvstop+110, -yycrank+7, 0, yyvstop+112, -yycrank+-598, 0, yyvstop+115, -yycrank+459, 0, yyvstop+118, -yycrank+659, 0, yyvstop+121, -yycrank+-781, 0, yyvstop+123, -yycrank+0, 0, yyvstop+126, -yycrank+0, 0, yyvstop+129, -yycrank+0, 0, yyvstop+132, -yycrank+23, 0, yyvstop+134, -yycrank+0, 0, yyvstop+137, -yycrank+-904, 0, yyvstop+139, -yycrank+934, 0, yyvstop+142, -yycrank+993, 0, yyvstop+144, -yycrank+14, 0, yyvstop+146, -yycrank+0, 0, yyvstop+149, -yycrank+65, 0, yyvstop+151, -yycrank+0, yysvec+69, yyvstop+153, -yycrank+1051, 0, yyvstop+155, -yycrank+58, 0, yyvstop+158, -yycrank+0, 0, yyvstop+160, -yycrank+0, 0, yyvstop+162, -yycrank+2, 0, yyvstop+164, -yycrank+0, 0, yyvstop+166, -yycrank+0, 0, yyvstop+168, -yycrank+1109, 0, yyvstop+170, -yycrank+0, 0, yyvstop+173, -yycrank+0, 0, yyvstop+176, -yycrank+0, 0, yyvstop+178, -yycrank+2, 0, yyvstop+180, -yycrank+0, 0, yyvstop+182, -yycrank+0, 0, yyvstop+184, -yycrank+9, 0, yyvstop+186, -yycrank+-1231, 0, yyvstop+188, -yycrank+0, 0, yyvstop+191, -yycrank+0, 0, yyvstop+193, -yycrank+0, 0, yyvstop+195, -yycrank+0, 0, yyvstop+197, -yycrank+0, 0, yyvstop+199, -yycrank+0, 0, yyvstop+202, -yycrank+0, 0, yyvstop+204, -yycrank+0, 0, yyvstop+206, -yycrank+0, 0, yyvstop+209, -yycrank+0, 0, yyvstop+212, -yycrank+3, 0, yyvstop+214, -yycrank+0, 0, yyvstop+216, -yycrank+-73, yysvec+41, yyvstop+218, -yycrank+-155, yysvec+45, yyvstop+220, -yycrank+0, 0, yyvstop+222, -yycrank+0, 0, yyvstop+224, -yycrank+0, 0, yyvstop+226, -yycrank+-2, yysvec+55, yyvstop+228, -yycrank+0, yysvec+56, yyvstop+230, -yycrank+1260, yysvec+57, 0, -yycrank+0, yysvec+57, yyvstop+232, -yycrank+0, 0, yyvstop+234, -yycrank+0, 0, yyvstop+236, -yycrank+0, 0, yyvstop+239, -yycrank+1319, 0, yyvstop+242, -yycrank+16, yysvec+111, yyvstop+245, -yycrank+19, yysvec+111, yyvstop+248, -yycrank+79, yysvec+111, yyvstop+251, -yycrank+0, 0, yyvstop+254, -yycrank+5, yysvec+111, yyvstop+257, -yycrank+7, yysvec+111, yyvstop+260, -yycrank+4, yysvec+111, yyvstop+263, -yycrank+12, yysvec+111, yyvstop+266, -yycrank+4, yysvec+111, yyvstop+269, -yycrank+4, yysvec+111, yyvstop+272, -yycrank+60, yysvec+111, yyvstop+275, -yycrank+217, yysvec+111, yyvstop+278, -yycrank+146, yysvec+111, yyvstop+281, -yycrank+2, yysvec+111, yyvstop+284, -yycrank+17, yysvec+111, yyvstop+287, -yycrank+57, yysvec+111, yyvstop+290, -yycrank+19, yysvec+111, yyvstop+293, -yycrank+0, yysvec+62, yyvstop+296, -yycrank+0, yysvec+67, yyvstop+298, -yycrank+-165, yysvec+64, yyvstop+300, -yycrank+0, yysvec+65, 0, -yycrank+0, yysvec+66, yyvstop+302, -yycrank+0, yysvec+69, 0, -yycrank+0, yysvec+72, 0, -yycrank+0, yysvec+71, yyvstop+304, -yycrank+38, 0, 0, -yycrank+0, 0, yyvstop+306, -yycrank+0, yysvec+78, yyvstop+308, -yycrank+33, 0, 0, -yycrank+0, 0, yyvstop+310, -yycrank+-227, yysvec+86, yyvstop+312, -yycrank+39, 0, 0, -yycrank+1377, 0, yyvstop+314, -yycrank+0, yysvec+111, yyvstop+316, -yycrank+241, yysvec+111, yyvstop+318, -yycrank+292, 0, yyvstop+320, -yycrank+0, 0, yyvstop+322, -yycrank+47, yysvec+111, yyvstop+324, -yycrank+3, yysvec+111, yyvstop+326, -yycrank+36, yysvec+111, yyvstop+328, -yycrank+57, yysvec+111, yyvstop+330, -yycrank+61, yysvec+111, yyvstop+332, -yycrank+61, yysvec+111, yyvstop+334, -yycrank+56, yysvec+111, yyvstop+336, -yycrank+93, yysvec+111, yyvstop+338, -yycrank+70, yysvec+111, yyvstop+340, -yycrank+70, yysvec+111, yyvstop+342, -yycrank+75, yysvec+111, yyvstop+344, -yycrank+68, yysvec+111, yyvstop+346, -yycrank+72, yysvec+111, yyvstop+348, -yycrank+77, 0, 0, -yycrank+95, 0, 0, -yycrank+99, 0, 0, -yycrank+347, 0, yyvstop+350, -yycrank+0, 0, yyvstop+352, -yycrank+96, yysvec+111, yyvstop+354, -yycrank+124, yysvec+111, yyvstop+356, -yycrank+107, yysvec+111, yyvstop+358, -yycrank+0, yysvec+111, yyvstop+360, -yycrank+94, yysvec+111, yyvstop+363, -yycrank+0, yysvec+111, yyvstop+365, -yycrank+96, yysvec+111, yyvstop+368, -yycrank+108, yysvec+111, yyvstop+370, -yycrank+116, yysvec+111, yyvstop+372, -yycrank+103, yysvec+111, yyvstop+374, -yycrank+120, yysvec+111, yyvstop+376, -yycrank+122, yysvec+111, yyvstop+378, -yycrank+0, yysvec+111, yyvstop+380, -yycrank+134, yysvec+111, yyvstop+383, -yycrank+140, yysvec+111, yyvstop+385, -yycrank+142, 0, 0, -yycrank+0, 0, yyvstop+387, -yycrank+309, 0, 0, -yycrank+138, yysvec+111, yyvstop+389, -yycrank+136, yysvec+111, yyvstop+391, -yycrank+148, yysvec+111, yyvstop+393, -yycrank+139, yysvec+111, yyvstop+395, -yycrank+0, yysvec+111, yyvstop+397, -yycrank+148, yysvec+111, yyvstop+400, -yycrank+148, yysvec+111, yyvstop+402, -yycrank+144, yysvec+111, yyvstop+404, -yycrank+143, yysvec+111, yyvstop+406, -yycrank+148, yysvec+111, yyvstop+408, -yycrank+159, yysvec+111, yyvstop+410, -yycrank+160, yysvec+111, yyvstop+412, -yycrank+159, yysvec+111, yyvstop+414, -yycrank+0, yysvec+111, yyvstop+416, -yycrank+182, 0, 0, -yycrank+326, 0, 0, -yycrank+376, yysvec+111, yyvstop+419, -yycrank+180, yysvec+111, yyvstop+422, -yycrank+171, yysvec+111, yyvstop+424, -yycrank+162, yysvec+111, yyvstop+426, -yycrank+183, yysvec+111, yyvstop+428, -yycrank+176, yysvec+111, yyvstop+430, -yycrank+189, yysvec+111, yyvstop+432, -yycrank+0, yysvec+111, yyvstop+434, -yycrank+0, yysvec+111, yyvstop+437, -yycrank+0, yysvec+111, yyvstop+440, -yycrank+190, yysvec+111, yyvstop+443, -yycrank+176, yysvec+111, yyvstop+445, -yycrank+190, yysvec+111, yyvstop+447, -yycrank+192, 0, 0, -yycrank+208, 0, 0, -yycrank+397, 0, 0, -yycrank+388, 0, 0, -yycrank+201, yysvec+111, yyvstop+449, -yycrank+213, yysvec+111, yyvstop+451, -yycrank+209, yysvec+111, yyvstop+453, -yycrank+210, yysvec+111, yyvstop+455, -yycrank+205, yysvec+111, yyvstop+457, -yycrank+222, yysvec+111, yyvstop+459, -yycrank+223, yysvec+111, yyvstop+461, -yycrank+205, yysvec+111, yyvstop+463, -yycrank+217, yysvec+111, yyvstop+465, -yycrank+224, 0, 0, -yycrank+231, 0, 0, -yycrank+236, 0, 0, -yycrank+0, yysvec+111, yyvstop+467, -yycrank+237, yysvec+111, yyvstop+470, -yycrank+254, yysvec+111, yyvstop+472, -yycrank+244, yysvec+111, yyvstop+474, -yycrank+260, yysvec+111, yyvstop+476, -yycrank+252, yysvec+111, yyvstop+478, -yycrank+0, yysvec+111, yyvstop+481, -yycrank+256, yysvec+111, yyvstop+484, -yycrank+251, yysvec+111, yyvstop+486, -yycrank+260, 0, 0, -yycrank+272, 0, 0, -yycrank+272, 0, 0, -yycrank+278, yysvec+111, yyvstop+488, -yycrank+0, yysvec+111, yyvstop+490, -yycrank+261, yysvec+111, yyvstop+493, -yycrank+0, yysvec+111, yyvstop+495, -yycrank+270, yysvec+111, yyvstop+498, -yycrank+281, yysvec+111, yyvstop+500, -yycrank+287, yysvec+111, yyvstop+502, -yycrank+415, 0, 0, -yycrank+292, 0, 0, -yycrank+278, 0, 0, -yycrank+284, yysvec+111, yyvstop+504, -yycrank+283, yysvec+111, yyvstop+506, -yycrank+292, yysvec+111, yyvstop+508, -yycrank+0, yysvec+111, yyvstop+510, -yycrank+287, yysvec+111, yyvstop+513, -yycrank+0, 0, yyvstop+515, -yycrank+293, 0, 0, -yycrank+304, 0, 0, -yycrank+312, yysvec+111, yyvstop+517, -yycrank+297, yysvec+111, yyvstop+519, -yycrank+298, yysvec+111, yyvstop+521, -yycrank+0, yysvec+111, yyvstop+523, -yycrank+317, 0, 0, -yycrank+322, 0, 0, -yycrank+305, yysvec+111, yyvstop+526, -yycrank+319, yysvec+111, yyvstop+528, -yycrank+0, yysvec+111, yyvstop+530, -yycrank+319, 0, 0, -yycrank+320, 0, 0, -yycrank+0, yysvec+111, yyvstop+533, -yycrank+332, yysvec+111, yyvstop+536, -yycrank+427, 0, 0, -yycrank+319, 0, 0, -yycrank+0, yysvec+111, yyvstop+538, -yycrank+0, 0, yyvstop+541, -yycrank+429, 0, 0, -yycrank+0, 0, yyvstop+543, -0, 0, 0}; -struct yywork *yytop = yycrank+1499; -struct yysvf *yybgin = yysvec+1; -char yymatch[] = { - 0, 1, 1, 1, 1, 1, 1, 1, - 1, 9, 10, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 9, 33, 1, 1, 1, 1, 1, 39, - 1, 1, 1, 1, 44, 45, 1, 1, - 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 1, 1, 1, 45, 1, 33, - 64, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 76, 65, 65, 76, - 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 1, 92, 1, 1, 1, - 45, 65, 65, 65, 65, 65, 65, 65, - 65, 76, 76, 65, 76, 65, 65, 76, - 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 123, 92, 125, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, -0}; -char yyextra[] = { -0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0, -0}; -/* Copyright (c) 1989 AT&T */ -/* All Rights Reserved */ - -/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */ -/* The copyright notice above does not evidence any */ -/* actual or intended publication of such source code. */ - -#pragma ident "@(#)ncform 6.8 95/02/11 SMI" - -int yylineno =1; -# define YYU(x) x -# define NLSTATE yyprevious=YYNEWLINE -struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp; -char yysbuf[YYLMAX]; -char *yysptr = yysbuf; -int *yyfnd; -extern struct yysvf *yyestate; -int yyprevious = YYNEWLINE; -#if defined(__cplusplus) || defined(__STDC__) -int yylook(void) -#else -yylook() -#endif -{ - register struct yysvf *yystate, **lsp; - register struct yywork *yyt; - struct yysvf *yyz; - int yych, yyfirst; - struct yywork *yyr; -# ifdef LEXDEBUG - int debug; -# endif - char *yylastch; - /* start off machines */ -# ifdef LEXDEBUG - debug = 0; -# endif - yyfirst=1; - if (!yymorfg) - yylastch = yytext; - else { - yymorfg=0; - yylastch = yytext+yyleng; - } - for(;;){ - lsp = yylstate; - yyestate = yystate = yybgin; - if (yyprevious==YYNEWLINE) yystate++; - for (;;){ -# ifdef LEXDEBUG - if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1); -# endif - yyt = yystate->yystoff; - if(yyt == yycrank && !yyfirst){ /* may not be any transitions */ - yyz = yystate->yyother; - if(yyz == 0)break; - if(yyz->yystoff == yycrank)break; - } -#ifndef __cplusplus - *yylastch++ = yych = input(); -#else - *yylastch++ = yych = lex_input(); -#endif - if(yylastch > &yytext[YYLMAX]) { - fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); - exit(1); - } - yyfirst=0; - tryagain: -# ifdef LEXDEBUG - if(debug){ - fprintf(yyout,"char "); - allprint(yych); - putchar('\n'); - } -# endif - yyr = yyt; - if ( (int)yyt > (int)yycrank){ - yyt = yyr + yych; - if (yyt <= yytop && yyt->verify+yysvec == yystate){ - if(yyt->advance+yysvec == YYLERR) /* error transitions */ - {unput(*--yylastch);break;} - *lsp++ = yystate = yyt->advance+yysvec; - if(lsp > &yylstate[YYLMAX]) { - fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); - exit(1); - } - goto contin; - } - } -# ifdef YYOPTIM - else if((int)yyt < (int)yycrank) { /* r < yycrank */ - yyt = yyr = yycrank+(yycrank-yyt); -# ifdef LEXDEBUG - if(debug)fprintf(yyout,"compressed state\n"); -# endif - yyt = yyt + yych; - if(yyt <= yytop && yyt->verify+yysvec == yystate){ - if(yyt->advance+yysvec == YYLERR) /* error transitions */ - {unput(*--yylastch);break;} - *lsp++ = yystate = yyt->advance+yysvec; - if(lsp > &yylstate[YYLMAX]) { - fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); - exit(1); - } - goto contin; - } - yyt = yyr + YYU(yymatch[yych]); -# ifdef LEXDEBUG - if(debug){ - fprintf(yyout,"try fall back character "); - allprint(YYU(yymatch[yych])); - putchar('\n'); - } -# endif - if(yyt <= yytop && yyt->verify+yysvec == yystate){ - if(yyt->advance+yysvec == YYLERR) /* error transition */ - {unput(*--yylastch);break;} - *lsp++ = yystate = yyt->advance+yysvec; - if(lsp > &yylstate[YYLMAX]) { - fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); - exit(1); - } - goto contin; - } - } - if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){ -# ifdef LEXDEBUG - if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1); -# endif - goto tryagain; - } -# endif - else - {unput(*--yylastch);break;} - contin: -# ifdef LEXDEBUG - if(debug){ - fprintf(yyout,"state %d char ",yystate-yysvec-1); - allprint(yych); - putchar('\n'); - } -# endif - ; - } -# ifdef LEXDEBUG - if(debug){ - fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1); - allprint(yych); - putchar('\n'); - } -# endif - while (lsp-- > yylstate){ - *yylastch-- = 0; - if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){ - yyolsp = lsp; - if(yyextra[*yyfnd]){ /* must backup */ - while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){ - lsp--; - unput(*yylastch--); - } - } - yyprevious = YYU(*yylastch); - yylsp = lsp; - yyleng = yylastch-yytext+1; - yytext[yyleng] = 0; -# ifdef LEXDEBUG - if(debug){ - fprintf(yyout,"\nmatch "); - sprint(yytext); - fprintf(yyout," action %d\n",*yyfnd); - } -# endif - return(*yyfnd++); - } - unput(*yylastch); - } - if (yytext[0] == 0 /* && feof(yyin) */) - { - yysptr=yysbuf; - return(0); - } -#ifndef __cplusplus - yyprevious = yytext[0] = input(); - if (yyprevious>0) - output(yyprevious); -#else - yyprevious = yytext[0] = lex_input(); - if (yyprevious>0) - lex_output(yyprevious); -#endif - yylastch=yytext; -# ifdef LEXDEBUG - if(debug)putchar('\n'); -# endif - } - } -#if defined(__cplusplus) || defined(__STDC__) -int yyback(int *p, int m) -#else -yyback(p, m) - int *p; -#endif -{ - if (p==0) return(0); - while (*p) { - if (*p++ == m) - return(1); - } - return(0); -} - /* the following are only used in the lex library */ -#if defined(__cplusplus) || defined(__STDC__) -int yyinput(void) -#else -yyinput() -#endif -{ -#ifndef __cplusplus - return(input()); -#else - return(lex_input()); -#endif - } -#if defined(__cplusplus) || defined(__STDC__) -void yyoutput(int c) -#else -yyoutput(c) - int c; -#endif -{ -#ifndef __cplusplus - output(c); -#else - lex_output(c); -#endif - } -#if defined(__cplusplus) || defined(__STDC__) -void yyunput(int c) -#else -yyunput(c) - int c; -#endif -{ - unput(c); - } diff --git a/support/detex/os2/README b/support/detex/os2/README deleted file mode 100644 index 7b0c562dd1..0000000000 --- a/support/detex/os2/README +++ /dev/null @@ -1,7 +0,0 @@ -This directory contains file contributed by hankedr@mail.auburn.edu -(Darrel R Hankerson) to facilitate compilation on OS/2 and DOS -systems. Use the lexout.c provided in the top level directory. - - detex.def linker definition file (16-bit versions) - detex-32.def linker definition file - Makefile.os2 makefile for MSC 6.00A or EMX/gcc (tested with dmake 3.8) diff --git a/support/detex/os2/detex-32.def b/support/detex/os2/detex-32.def deleted file mode 100644 index 88cc9457ef..0000000000 --- a/support/detex/os2/detex-32.def +++ /dev/null @@ -1,3 +0,0 @@ -NAME detex WINDOWCOMPAT NEWFILES -DESCRIPTION 'detex for OS/2 and MSDOS' -STACKSIZE 0x8000 diff --git a/support/detex/os2/detex.def b/support/detex/os2/detex.def deleted file mode 100644 index 616c315692..0000000000 --- a/support/detex/os2/detex.def +++ /dev/null @@ -1,2 +0,0 @@ -NAME detex WINDOWCOMPAT NEWFILES -DESCRIPTION 'detex for OS/2 and MSDOS' diff --git a/support/detex/os2/makefile.os2 b/support/detex/os2/makefile.os2 deleted file mode 100644 index daf50a0b7b..0000000000 --- a/support/detex/os2/makefile.os2 +++ /dev/null @@ -1,96 +0,0 @@ -# Makefile for "detex" (tested with dmake 3.8) 22 July 1993 -# -# - for GNU gcc (emx 0.8g kit) under OS/2 (32-bit) -# - for Microsoft C 6.00 under OS/2 or MSDOS (16-bit) - -# To use, enter "{d,n}make -f makefile.os2" (this makefile depends on its -# name being "makefile.os2"). - -default: - @echo Enter "$(MAKE) -f makefile.os2 emx" - @echo Enter "$(MAKE) -f makefile.os2 emxbnd" - @echo or "$(MAKE) -f makefile.os2 msc" - @echo or "$(MAKE) -f makefile.os2 mscbnd" - -# See the original Makefile for a complete list of options. -# -# Add -DMAXPATHLEN=<length> if it is not defined in /usr/include/sys/param.h -# -#MAXPATHLEN = -DMAXPATHLEN=1024 -# -# Add -DNO_MALLOC_DECL if your system does not like the malloc() declaration -# in detex.l (reported by pinard@iro.umontreal.ca) -# -NO_MALLOC_DECL = -DNO_MALLOC_DECL -# - -emx: - $(MAKE) -f makefile.os2 all \ - CC="gcc -Zomf -Zmtd" O=".obj" \ - CF="" \ - LDFLAGS="" \ - LDFLAGS2="" \ - DEF="detex-32.def" - -emxbnd: - $(MAKE) -f makefile.os2 all \ - CC="gcc" O=".o" \ - CF="" \ - LDFLAGS="" \ - LDFLAGS2="" \ - DEF="detex-32.def" - -msc: - $(MAKE) -f makefile.os2 all \ - CC="cl -AS " O=".obj" \ - CF="-D__STDC__ -DMAXPATHLEN=1024" \ - LDFLAGS="-Lp" \ - LDFLAGS2="setargv.obj -link /NOE" \ - DEF="detex.def" - -mscbnd: - $(MAKE) -f makefile.os2 all \ - CC="cl -AS " O=".obj" \ - CF="-D__STDC__ -DMAXPATHLEN=1024" \ - LDFLAGS="-Lp -Fb" \ - LDFLAGS2="setargv.obj -link /NOE" \ - DEF="detex.def" - - -CFLAGS = $(CF) -DOS2 -DHAVE_STRING_H $(NO_MALLOC_DECL) -DNOFILE=99 - -.c$O : - $(CC) $(CFLAGS) -c $< - -all : detex.exe - -detex.exe : detex$O $(DEF) - $(CC) $(LDFLAGS) -o $@ $< $(LDFLAGS2) - - -# Use your favorite lexical scanner -# -# flex buffered input causes problems--see flexdoc.man. -LEX = lex -LEX_YY = lex.yy -#LEX = flex -#LEX_YY = lexyy - -#LFLAGS = -8 -C - -CP = cp -FMT_CMD = groff -man - -# lexout.c obtained from lex output on sparc. - -#detex.c: -# sed -f states.sed detex.l | ${LEX} ${LFLAGS} -# mv $(LEX_YY).c detex.c - -detex.c : lexout.c - $(CP) $< $@ - -man-page: - $(FMT_CMD) detex.1l - -detex$O : detex.h diff --git a/support/detex/states.sed b/support/detex/states.sed deleted file mode 100644 index 1c99ebabe9..0000000000 --- a/support/detex/states.sed +++ /dev/null @@ -1,17 +0,0 @@ -# convert long labels to a shorter form so lex(1) won't overflow -s/LaBegin/SA/g -s/LaDisplay/SB/g -s/LaEnd/SC/g -s/LaEnv/SD/g -s/LaFormula/SE/g -s/LaInclude/SF/g -s/LaMacro2/SG/g -s/LaMacro/SH/g -s/LaVerbatim/SI/g -s/Define/SJ/g -s/Display/SK/g -s/IncludeOnly/SL/g -s/\([ <]\)Input\([ >;]\)/\1SM\2/g -s/Math/SN/g -s/Normal/SO/g -s/Control/SP/g |