#define WEAVE
#include "cpascal.h"
#define maxbytes ( 60000L )
#define maxnames ( 5000 )
#define maxmodules ( 2000 )
#define hashsize ( 353 )
#define bufsize ( 3000 )
#define longestname ( 400 )
#define longbufsize ( 500 )
#define linelength ( 80 )
#define maxrefs ( 30000 )
#define maxtoks ( 65000L )
#define maxtexts ( 10000 )
#define maxscraps ( 10000 )
#define stacksize ( 2000 )
typedef unsigned char ASCIIcode ;
typedef text /* of ASCIIcode */ textfile ;
typedef unsigned char eightbits ;
typedef unsigned short sixteenbits ;
typedef integer namepointer ;
typedef integer xrefnumber ;
typedef integer textpointer ;
typedef char mode ;
typedef struct {
sixteenbits endfield ;
sixteenbits tokfield ;
mode modefield ;
} outputstate ;
char history ;
ASCIIcode xord[256] ;
ASCIIcode xchr[256] ;
textfile webfile ;
textfile changefile ;
textfile texfile ;
ASCIIcode buffer[longbufsize + 1] ;
boolean phaseone ;
boolean phasethree ;
ASCIIcode bytemem[2][maxbytes + 1] ;
sixteenbits bytestart[maxnames + 1] ;
sixteenbits link[maxnames + 1] ;
sixteenbits ilk[maxnames + 1] ;
sixteenbits xref[maxnames + 1] ;
namepointer nameptr ;
integer byteptr[2] ;
integer modulecount ;
boolean changedmodule[maxmodules + 1] ;
boolean changeexists ;
struct {
sixteenbits numfield ;
sixteenbits xlinkfield ;
} xmem[maxrefs + 1] ;
xrefnumber xrefptr ;
short xrefswitch, modxrefswitch ;
sixteenbits tokmem[maxtoks + 1] ;
sixteenbits tokstart[maxtexts + 1] ;
textpointer textptr ;
integer tokptr ;
integer idfirst ;
integer idloc ;
sixteenbits hash[hashsize + 1] ;
namepointer curname ;
ASCIIcode modtext[longestname + 1] ;
integer ii ;
integer line ;
integer otherline ;
integer templine ;
integer limit ;
integer loc ;
boolean inputhasended ;
boolean changing ;
boolean changepending ;
ASCIIcode changebuffer[bufsize + 1] ;
integer changelimit ;
namepointer curmodule ;
boolean scanninghex ;
eightbits nextcontrol ;
namepointer lhs, rhs ;
xrefnumber curxref ;
ASCIIcode outbuf[linelength + 1] ;
integer outptr ;
integer outline ;
char dig[5] ;
eightbits cat[maxscraps + 1] ;
short trans[maxscraps + 1] ;
integer pp ;
integer scrapbase ;
integer scrapptr ;
integer loptr ;
integer hiptr ;
outputstate curstate ;
outputstate stack[stacksize + 1] ;
integer stackptr ;
integer saveline ;
sixteenbits saveplace ;
namepointer thismodule ;
xrefnumber nextxref, thisxref, firstxref, midxref ;
integer kmodule ;
namepointer bucket[256] ;
namepointer nextname ;
ASCIIcode c ;
integer h ;
sixteenbits blink[maxnames + 1] ;
eightbits curdepth ;
integer curbyte ;
char curbank ;
sixteenbits curval ;
ASCIIcode collate[230] ;
cinttype noxref ;
cstring webname, chgname, texname ;
#include "weave.h"
void
#ifdef HAVE_PROTOTYPES
parsearguments ( void )
#else
parsearguments ( )
#endif
{
#define noptions ( 4 )
getoptstruct longoptions[noptions + 1] ;
integer getoptreturnval ;
cinttype optionindex ;
integer currentoption ;
currentoption = 0 ;
longoptions [currentoption ].name = "help" ;
longoptions [currentoption ].hasarg = 0 ;
longoptions [currentoption ].flag = 0 ;
longoptions [currentoption ].val = 0 ;
currentoption = currentoption + 1 ;
longoptions [currentoption ].name = "version" ;
longoptions [currentoption ].hasarg = 0 ;
longoptions [currentoption ].flag = 0 ;
longoptions [currentoption ].val = 0 ;
currentoption = currentoption + 1 ;
longoptions [currentoption ].name = chartostring ( 'x' ) ;
longoptions [currentoption ].hasarg = 0 ;
longoptions [currentoption ].flag = addressof ( noxref ) ;
longoptions [currentoption ].val = 1 ;
currentoption = currentoption + 1 ;
longoptions [currentoption ].name = 0 ;
longoptions [currentoption ].hasarg = 0 ;
longoptions [currentoption ].flag = 0 ;
longoptions [currentoption ].val = 0 ;
do {
getoptreturnval = getoptlongonly ( argc , argv , "" , longoptions ,
addressof ( optionindex ) ) ;
if ( getoptreturnval == -1 )
{
;
}
else if ( getoptreturnval == 63 )
{
usage ( 1 , "weave" ) ;
}
else if ( ( strcmp ( longoptions [optionindex ].name , "help" ) == 0 ) )
{
usage ( 0 , WEAVEHELP ) ;
}
else if ( ( strcmp ( longoptions [optionindex ].name , "version" ) == 0
) )
{
printversionandexit ( "This is WEAVE, Version 4.4" , nil , "D.E. Knuth"
) ;
}
} while ( ! ( getoptreturnval == -1 ) ) ;
if ( ( optind + 1 != argc ) && ( optind + 2 != argc ) )
{
fprintf( stderr , "%s\n", "weave: Need one or two file arguments." ) ;
usage ( 1 , "weave" ) ;
}
webname = extendfilename ( cmdline ( optind ) , "web" ) ;
if ( optind + 2 == argc )
{
chgname = extendfilename ( cmdline ( optind + 1 ) , "ch" ) ;
}
texname = basenamechangesuffix ( webname , ".web" , ".tex" ) ;
}
void
#ifdef HAVE_PROTOTYPES
error ( void )
#else
error ( )
#endif
{
integer k, l ;
{
if ( changing )
Fputs( stdout , ". (change file " ) ;
else
Fputs( stdout , ". (" ) ;
fprintf( stdout , "%s%ld%c\n", "l." , (long)line , ')' ) ;
if ( loc >= limit )
l = limit ;
else l = loc ;
{register integer for_end; k = 1 ;for_end = l ; if ( k <= for_end) do
if ( buffer [k - 1 ]== 9 )
putc ( ' ' , stdout );
else
putc ( xchr [buffer [k - 1 ]], stdout );
while ( k++ < for_end ) ;}
putc ('\n', stdout );
{register integer for_end; k = 1 ;for_end = l ; if ( k <= for_end) do
putc ( ' ' , stdout );
while ( k++ < for_end ) ;}
{register integer for_end; k = l + 1 ;for_end = limit ; if ( k <=
for_end) do
putc ( xchr [buffer [k - 1 ]], stdout );
while ( k++ < for_end ) ;}
if ( buffer [limit ]== 124 )
putc ( xchr [124 ], stdout );
putc ( ' ' , stdout );
}
fflush ( stdout ) ;
history = 2 ;
}
void
#ifdef HAVE_PROTOTYPES
jumpout ( void )
#else
jumpout ( )
#endif
{
switch ( history )
{case 0 :
{
putc ('\n', stdout );
Fputs( stdout , "(No errors were found.)" ) ;
}
break ;
case 1 :
{
putc ('\n', stdout );
Fputs( stdout , "(Did you see the warning message above?)" ) ;
}
break ;
case 2 :
{
putc ('\n', stdout );
Fputs( stdout , "(Pardon me, but I think I spotted something wrong.)" )
;
}
break ;
case 3 :
{
putc ('\n', stdout );
Fputs( stdout , "(That was a fatal error, my friend.)" ) ;
}
break ;
}
putc ('\n', stdout );
if ( ( history != 0 ) && ( history != 1 ) )
uexit ( 1 ) ;
else uexit ( 0 ) ;
}
void
#ifdef HAVE_PROTOTYPES
initialize ( void )
#else
initialize ( )
#endif
{
unsigned char i ;
char wi ;
integer h ;
ASCIIcode c ;
kpsesetprogname ( argv [0 ]) ;
parsearguments () ;
history = 0 ;
xchr [32 ]= ' ' ;
xchr [33 ]= '!' ;
xchr [34 ]= '"' ;
xchr [35 ]= '#' ;
xchr [36 ]= '$' ;
xchr [37 ]= '%' ;
xchr [38 ]= '&' ;
xchr [39 ]= '\'' ;
xchr [40 ]= '(' ;
xchr [41 ]= ')' ;
xchr [42 ]= '*' ;
xchr [43 ]= '+' ;
xchr [44 ]= ',' ;
xchr [45 ]= '-' ;
xchr [46 ]= '.' ;
xchr [47 ]= '/' ;
xchr [48 ]= '0' ;
xchr [49 ]= '1' ;
xchr [50 ]= '2' ;
xchr [51 ]= '3' ;
xchr [52 ]= '4' ;
xchr [53 ]= '5' ;
xchr [54 ]= '6' ;
xchr [55 ]= '7' ;
xchr [56 ]= '8' ;
xchr [57 ]= '9' ;
xchr [58 ]= ':' ;
xchr [59 ]= ';' ;
xchr [60 ]= '<' ;
xchr [61 ]= '=' ;
xchr [62 ]= '>' ;
xchr [63 ]= '?' ;
xchr [64 ]= '@' ;
xchr [65 ]= 'A' ;
xchr [66 ]= 'B' ;
xchr [67 ]= 'C' ;
xchr [68 ]= 'D' ;
xchr [69 ]= 'E' ;
xchr [70 ]= 'F' ;
xchr [71 ]= 'G' ;
xchr [72 ]= 'H' ;
xchr [73 ]= 'I' ;
xchr [74 ]= 'J' ;
xchr [75 ]= 'K' ;
xchr [76 ]= 'L' ;
xchr [77 ]= 'M' ;
xchr [78 ]= 'N' ;
xchr [79 ]= 'O' ;
xchr [80 ]= 'P' ;
xchr [81 ]= 'Q' ;
xchr [82 ]= 'R' ;
xchr [83 ]= 'S' ;
xchr [84 ]= 'T' ;
xchr [85 ]= 'U' ;
xchr [86 ]= 'V' ;
xchr [87 ]= 'W' ;
xchr [88 ]= 'X' ;
xchr [89 ]= 'Y' ;
xchr [90 ]= 'Z' ;
xchr [91 ]= '[' ;
xchr [92 ]= '\\' ;
xchr [93 ]= ']' ;
xchr [94 ]= '^' ;
xchr [95 ]= '_' ;
xchr [96 ]= '`' ;
xchr [97 ]= 'a' ;
xchr [98 ]= 'b' ;
xchr [99 ]= 'c' ;
xchr [100 ]= 'd' ;
xchr [101 ]= 'e' ;
xchr [102 ]= 'f' ;
xchr [103 ]= 'g' ;
xchr [104 ]= 'h' ;
xchr [105 ]= 'i' ;
xchr [106 ]= 'j' ;
xchr [107 ]= 'k' ;
xchr [108 ]= 'l' ;
xchr [109 ]= 'm' ;
xchr [110 ]= 'n' ;
xchr [111 ]= 'o' ;
xchr [112 ]= 'p' ;
xchr [113 ]= 'q' ;
xchr [114 ]= 'r' ;
xchr [115 ]= 's' ;
xchr [116 ]= 't' ;
xchr [117 ]= 'u' ;
xchr [118 ]= 'v' ;
xchr [119 ]= 'w' ;
xchr [120 ]= 'x' ;
xchr [121 ]= 'y' ;
xchr [122 ]= 'z' ;
xchr [123 ]= '{' ;
xchr [124 ]= '|' ;
xchr [125 ]= '}' ;
xchr [126 ]= '~' ;
xchr [0 ]= ' ' ;
xchr [127 ]= ' ' ;
{register integer for_end; i = 1 ;for_end = 31 ; if ( i <= for_end) do
xchr [i ]= chr ( i ) ;
while ( i++ < for_end ) ;}
{register integer for_end; i = 128 ;for_end = 255 ; if ( i <= for_end) do
xchr [i ]= chr ( i ) ;
while ( i++ < for_end ) ;}
{register integer for_end; i = 0 ;for_end = 255 ; if ( i <= for_end) do
xord [chr ( i ) ]= 32 ;
while ( i++ < for_end ) ;}
{register integer for_end; i = 1 ;for_end = 255 ; if ( i <= for_end) do
xord [xchr [i ]]= i ;
while ( i++ < for_end ) ;}
xord [' ' ]= 32 ;
rewrite ( texfile , texname ) ;
{register integer for_end; wi = 0 ;for_end = 1 ; if ( wi <= for_end) do
{
bytestart [wi ]= 0 ;
byteptr [wi ]= 0 ;
}
while ( wi++ < for_end ) ;}
bytestart [2 ]= 0 ;
nameptr = 1 ;
ilk [0 ]= 0 ;
xrefptr = 0 ;
xrefswitch = 0 ;
modxrefswitch = 0 ;
xmem [0 ].numfield = 0 ;
xref [0 ]= 0 ;
tokptr = 1 ;
textptr = 1 ;
tokstart [0 ]= 1 ;
tokstart [1 ]= 1 ;
{register integer for_end; h = 0 ;for_end = hashsize - 1 ; if ( h <=
for_end) do
hash [h ]= 0 ;
while ( h++ < for_end ) ;}
scanninghex = false ;
modtext [0 ]= 32 ;
outptr = 1 ;
outline = 1 ;
outbuf [1 ]= 99 ;
Fputs( texfile , "\\input webma" ) ;
outbuf [0 ]= 92 ;
scrapbase = 1 ;
scrapptr = 0 ;
collate [0 ]= 0 ;
collate [1 ]= 32 ;
{register integer for_end; c = 1 ;for_end = 31 ; if ( c <= for_end) do
collate [c + 1 ]= c ;
while ( c++ < for_end ) ;}
{register integer for_end; c = 33 ;for_end = 47 ; if ( c <= for_end) do
collate [c ]= c ;
while ( c++ < for_end ) ;}
{register integer for_end; c = 58 ;for_end = 64 ; if ( c <= for_end) do
collate [c - 10 ]= c ;
while ( c++ < for_end ) ;}
{register integer for_end; c = 91 ;for_end = 94 ; if ( c <= for_end) do
collate [c - 36 ]= c ;
while ( c++ < for_end ) ;}
collate [59 ]= 96 ;
{register integer for_end; c = 123 ;for_end = 255 ; if ( c <= for_end) do
collate [c - 63 ]= c ;
while ( c++ < for_end ) ;}
collate [193 ]= 95 ;
{register integer for_end; c = 97 ;for_end = 122 ; if ( c <= for_end) do
collate [c + 97 ]= c ;
while ( c++ < for_end ) ;}
{register integer for_end; c = 48 ;for_end = 57 ; if ( c <= for_end) do
collate [c + 172 ]= c ;
while ( c++ < for_end ) ;}
}
void
#ifdef HAVE_PROTOTYPES
openinput ( void )
#else
openinput ( )
#endif
{
reset ( webfile , webname ) ;
if ( chgname )
reset ( changefile , chgname ) ;
}
boolean
#ifdef HAVE_PROTOTYPES
zinputln ( textfile f )
#else
zinputln ( f )
textfile f ;
#endif
{
register boolean Result; integer finallimit ;
limit = 0 ;
finallimit = 0 ;
if ( eof ( f ) )
Result = false ;
else {
while ( ! eoln ( f ) ) {
buffer [limit ]= xord [getc ( f ) ];
limit = limit + 1 ;
if ( buffer [limit - 1 ]!= 32 )
finallimit = limit ;
if ( limit == bufsize )
{
while ( ! eoln ( f ) ) vgetc ( f ) ;
limit = limit - 1 ;
if ( finallimit > limit )
finallimit = limit ;
{
putc ('\n', stdout );
Fputs( stdout , "! Input line too long" ) ;
}
loc = 0 ;
error () ;
}
}
readln ( f ) ;
limit = finallimit ;
Result = true ;
}
return Result ;
}
void
#ifdef HAVE_PROTOTYPES
zprintid ( namepointer p )
#else
zprintid ( p )
namepointer p ;
#endif
{
integer k ;
char w ;
if ( p >= nameptr )
Fputs( stdout , "IMPOSSIBLE" ) ;
else {
w = p % 2 ;
{register integer for_end; k = bytestart [p ];for_end = bytestart [p
+ 2 ]- 1 ; if ( k <= for_end) do
putc ( xchr [bytemem [w ][ k ]], stdout );
while ( k++ < for_end ) ;}
}
}
void
#ifdef HAVE_PROTOTYPES
znewxref ( namepointer p )
#else
znewxref ( p )
namepointer p ;
#endif
{
/* 10 */ xrefnumber q ;
sixteenbits m, n ;
if ( noxref )
goto lab10 ;
if ( ( ( ilk [p ]> 3 ) || ( bytestart [p ]+ 1 == bytestart [p + 2 ]) )
&& ( xrefswitch == 0 ) )
goto lab10 ;
m = modulecount + xrefswitch ;
xrefswitch = 0 ;
q = xref [p ];
if ( q > 0 )
{
n = xmem [q ].numfield ;
if ( ( n == m ) || ( n == m + 10240 ) )
goto lab10 ;
else if ( m == n + 10240 )
{
xmem [q ].numfield = m ;
goto lab10 ;
}
}
if ( xrefptr == maxrefs )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "cross reference" , " capacity exceeded" )
;
error () ;
history = 3 ;
jumpout () ;
}
else {
xrefptr = xrefptr + 1 ;
xmem [xrefptr ].numfield = m ;
}
xmem [xrefptr ].xlinkfield = q ;
xref [p ]= xrefptr ;
lab10: ;
}
void
#ifdef HAVE_PROTOTYPES
znewmodxref ( namepointer p )
#else
znewmodxref ( p )
namepointer p ;
#endif
{
xrefnumber q, r ;
q = xref [p ];
r = 0 ;
if ( q > 0 )
{
if ( modxrefswitch == 0 )
while ( xmem [q ].numfield >= 10240 ) {
r = q ;
q = xmem [q ].xlinkfield ;
}
else if ( xmem [q ].numfield >= 10240 )
{
r = q ;
q = xmem [q ].xlinkfield ;
}
}
if ( xrefptr == maxrefs )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "cross reference" , " capacity exceeded" )
;
error () ;
history = 3 ;
jumpout () ;
}
else {
xrefptr = xrefptr + 1 ;
xmem [xrefptr ].numfield = modulecount + modxrefswitch ;
}
xmem [xrefptr ].xlinkfield = q ;
modxrefswitch = 0 ;
if ( r == 0 )
xref [p ]= xrefptr ;
else xmem [r ].xlinkfield = xrefptr ;
}
namepointer
#ifdef HAVE_PROTOTYPES
zidlookup ( eightbits t )
#else
zidlookup ( t )
eightbits t ;
#endif
{
/* 31 */ register namepointer Result; integer i ;
integer h ;
integer k ;
char w ;
integer l ;
namepointer p ;
l = idloc - idfirst ;
h = buffer [idfirst ];
i = idfirst + 1 ;
while ( i < idloc ) {
h = ( h + h + buffer [i ]) % hashsize ;
i = i + 1 ;
}
p = hash [h ];
while ( p != 0 ) {
if ( ( bytestart [p + 2 ]- bytestart [p ]== l ) && ( ( ilk [p ]== t
) || ( ( t == 0 ) && ( ilk [p ]> 3 ) ) ) )
{
i = idfirst ;
k = bytestart [p ];
w = p % 2 ;
while ( ( i < idloc ) && ( buffer [i ]== bytemem [w ][ k ]) ) {
i = i + 1 ;
k = k + 1 ;
}
if ( i == idloc )
goto lab31 ;
}
p = link [p ];
}
p = nameptr ;
link [p ]= hash [h ];
hash [h ]= p ;
lab31: ;
if ( p == nameptr )
{
w = nameptr % 2 ;
if ( byteptr [w ]+ l > maxbytes )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "byte memory" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
if ( nameptr + 2 > maxnames )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "name" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
i = idfirst ;
k = byteptr [w ];
while ( i < idloc ) {
bytemem [w ][ k ]= buffer [i ];
k = k + 1 ;
i = i + 1 ;
}
byteptr [w ]= k ;
bytestart [nameptr + 2 ]= k ;
nameptr = nameptr + 1 ;
ilk [p ]= t ;
xref [p ]= 0 ;
}
Result = p ;
return Result ;
}
namepointer
#ifdef HAVE_PROTOTYPES
zmodlookup ( sixteenbits l )
#else
zmodlookup ( l )
sixteenbits l ;
#endif
{
/* 31 */ register namepointer Result; char c ;
integer j ;
integer k ;
char w ;
namepointer p ;
namepointer q ;
c = 2 ;
q = 0 ;
p = ilk [0 ];
while ( p != 0 ) {
{
k = bytestart [p ];
w = p % 2 ;
c = 1 ;
j = 1 ;
while ( ( k < bytestart [p + 2 ]) && ( j <= l ) && ( modtext [j ]==
bytemem [w ][ k ]) ) {
k = k + 1 ;
j = j + 1 ;
}
if ( k == bytestart [p + 2 ])
if ( j > l )
c = 1 ;
else c = 4 ;
else if ( j > l )
c = 3 ;
else if ( modtext [j ]< bytemem [w ][ k ])
c = 0 ;
else c = 2 ;
}
q = p ;
if ( c == 0 )
p = link [q ];
else if ( c == 2 )
p = ilk [q ];
else goto lab31 ;
}
w = nameptr % 2 ;
k = byteptr [w ];
if ( k + l > maxbytes )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "byte memory" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
if ( nameptr > maxnames - 2 )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "name" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
p = nameptr ;
if ( c == 0 )
link [q ]= p ;
else ilk [q ]= p ;
link [p ]= 0 ;
ilk [p ]= 0 ;
xref [p ]= 0 ;
c = 1 ;
{register integer for_end; j = 1 ;for_end = l ; if ( j <= for_end) do
bytemem [w ][ k + j - 1 ]= modtext [j ];
while ( j++ < for_end ) ;}
byteptr [w ]= k + l ;
bytestart [nameptr + 2 ]= k + l ;
nameptr = nameptr + 1 ;
lab31: if ( c != 1 )
{
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Incompatible section names" ) ;
error () ;
}
}
p = 0 ;
}
Result = p ;
return Result ;
}
namepointer
#ifdef HAVE_PROTOTYPES
zprefixlookup ( sixteenbits l )
#else
zprefixlookup ( l )
sixteenbits l ;
#endif
{
register namepointer Result; char c ;
integer count ;
integer j ;
integer k ;
char w ;
namepointer p ;
namepointer q ;
namepointer r ;
q = 0 ;
p = ilk [0 ];
count = 0 ;
r = 0 ;
while ( p != 0 ) {
{
k = bytestart [p ];
w = p % 2 ;
c = 1 ;
j = 1 ;
while ( ( k < bytestart [p + 2 ]) && ( j <= l ) && ( modtext [j ]==
bytemem [w ][ k ]) ) {
k = k + 1 ;
j = j + 1 ;
}
if ( k == bytestart [p + 2 ])
if ( j > l )
c = 1 ;
else c = 4 ;
else if ( j > l )
c = 3 ;
else if ( modtext [j ]< bytemem [w ][ k ])
c = 0 ;
else c = 2 ;
}
if ( c == 0 )
p = link [p ];
else if ( c == 2 )
p = ilk [p ];
else {
r = p ;
count = count + 1 ;
q = ilk [p ];
p = link [p ];
}
if ( p == 0 )
{
p = q ;
q = 0 ;
}
}
if ( count != 1 )
if ( count == 0 )
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Name does not match" ) ;
error () ;
}
}
else {
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Ambiguous prefix" ) ;
error () ;
}
}
Result = r ;
return Result ;
}
boolean
#ifdef HAVE_PROTOTYPES
linesdontmatch ( void )
#else
linesdontmatch ( )
#endif
{
/* 10 */ register boolean Result; integer k ;
Result = true ;
if ( changelimit != limit )
goto lab10 ;
if ( limit > 0 )
{register integer for_end; k = 0 ;for_end = limit - 1 ; if ( k <= for_end)
do
if ( changebuffer [k ]!= buffer [k ])
goto lab10 ;
while ( k++ < for_end ) ;}
Result = false ;
lab10: ;
return Result ;
}
void
#ifdef HAVE_PROTOTYPES
primethechangebuffer ( void )
#else
primethechangebuffer ( )
#endif
{
/* 22 30 10 */ integer k ;
changelimit = 0 ;
while ( true ) {
line = line + 1 ;
if ( ! inputln ( changefile ) )
goto lab10 ;
if ( limit < 2 )
goto lab22 ;
if ( buffer [0 ]!= 64 )
goto lab22 ;
if ( ( buffer [1 ]>= 88 ) && ( buffer [1 ]<= 90 ) )
buffer [1 ]= buffer [1 ]+ 32 ;
if ( buffer [1 ]== 120 )
goto lab30 ;
if ( ( buffer [1 ]== 121 ) || ( buffer [1 ]== 122 ) )
{
loc = 2 ;
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Where is the matching @x?" ) ;
error () ;
}
}
}
lab22: ;
}
lab30: ;
do {
line = line + 1 ;
if ( ! inputln ( changefile ) )
{
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Change file ended after @x" ) ;
error () ;
}
}
goto lab10 ;
}
} while ( ! ( limit > 0 ) ) ;
{
changelimit = limit ;
if ( limit > 0 )
{register integer for_end; k = 0 ;for_end = limit - 1 ; if ( k <=
for_end) do
changebuffer [k ]= buffer [k ];
while ( k++ < for_end ) ;}
}
lab10: ;
}
void
#ifdef HAVE_PROTOTYPES
checkchange ( void )
#else
checkchange ( )
#endif
{
/* 10 */ integer n ;
integer k ;
if ( linesdontmatch () )
goto lab10 ;
changepending = false ;
if ( ! changedmodule [modulecount ])
{
loc = 0 ;
buffer [limit ]= 33 ;
while ( ( buffer [loc ]== 32 ) || ( buffer [loc ]== 9 ) ) loc = loc +
1 ;
buffer [limit ]= 32 ;
if ( buffer [loc ]== 64 )
if ( ( buffer [loc + 1 ]== 42 ) || ( buffer [loc + 1 ]== 32 ) || (
buffer [loc + 1 ]== 9 ) )
changepending = true ;
if ( ! changepending )
changedmodule [modulecount ]= true ;
}
n = 0 ;
while ( true ) {
changing = ! changing ;
templine = otherline ;
otherline = line ;
line = templine ;
line = line + 1 ;
if ( ! inputln ( changefile ) )
{
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Change file ended before @y" ) ;
error () ;
}
}
changelimit = 0 ;
changing = ! changing ;
templine = otherline ;
otherline = line ;
line = templine ;
goto lab10 ;
}
if ( limit > 1 )
if ( buffer [0 ]== 64 )
{
if ( ( buffer [1 ]>= 88 ) && ( buffer [1 ]<= 90 ) )
buffer [1 ]= buffer [1 ]+ 32 ;
if ( ( buffer [1 ]== 120 ) || ( buffer [1 ]== 122 ) )
{
loc = 2 ;
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Where is the matching @y?" ) ;
error () ;
}
}
}
else if ( buffer [1 ]== 121 )
{
if ( n > 0 )
{
loc = 2 ;
{
if ( ! phaseone )
{
putc ('\n', stdout );
fprintf( stdout , "%s%ld%s", "! Hmm... " , (long)n , " of the preceding lines failed to match" ) ;
error () ;
}
}
}
goto lab10 ;
}
}
{
changelimit = limit ;
if ( limit > 0 )
{register integer for_end; k = 0 ;for_end = limit - 1 ; if ( k <=
for_end) do
changebuffer [k ]= buffer [k ];
while ( k++ < for_end ) ;}
}
changing = ! changing ;
templine = otherline ;
otherline = line ;
line = templine ;
line = line + 1 ;
if ( ! inputln ( webfile ) )
{
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! WEB file ended during a change" ) ;
error () ;
}
}
inputhasended = true ;
goto lab10 ;
}
if ( linesdontmatch () )
n = n + 1 ;
}
lab10: ;
}
void
#ifdef HAVE_PROTOTYPES
resetinput ( void )
#else
resetinput ( )
#endif
{
openinput () ;
line = 0 ;
otherline = 0 ;
changing = true ;
primethechangebuffer () ;
changing = ! changing ;
templine = otherline ;
otherline = line ;
line = templine ;
limit = 0 ;
loc = 1 ;
buffer [0 ]= 32 ;
inputhasended = false ;
}
void
#ifdef HAVE_PROTOTYPES
getline ( void )
#else
getline ( )
#endif
{
/* 20 */ lab20: if ( changing )
{
line = line + 1 ;
if ( ! inputln ( changefile ) )
{
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Change file ended without @z" ) ;
error () ;
}
}
buffer [0 ]= 64 ;
buffer [1 ]= 122 ;
limit = 2 ;
}
if ( limit > 0 )
{
if ( changepending )
{
loc = 0 ;
buffer [limit ]= 33 ;
while ( ( buffer [loc ]== 32 ) || ( buffer [loc ]== 9 ) ) loc =
loc + 1 ;
buffer [limit ]= 32 ;
if ( buffer [loc ]== 64 )
if ( ( buffer [loc + 1 ]== 42 ) || ( buffer [loc + 1 ]== 32 ) || (
buffer [loc + 1 ]== 9 ) )
changepending = false ;
if ( changepending )
{
changedmodule [modulecount ]= true ;
changepending = false ;
}
}
buffer [limit ]= 32 ;
if ( buffer [0 ]== 64 )
{
if ( ( buffer [1 ]>= 88 ) && ( buffer [1 ]<= 90 ) )
buffer [1 ]= buffer [1 ]+ 32 ;
if ( ( buffer [1 ]== 120 ) || ( buffer [1 ]== 121 ) )
{
loc = 2 ;
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Where is the matching @z?" ) ;
error () ;
}
}
}
else if ( buffer [1 ]== 122 )
{
primethechangebuffer () ;
changing = ! changing ;
templine = otherline ;
otherline = line ;
line = templine ;
}
}
}
}
if ( ! changing )
{
{
line = line + 1 ;
if ( ! inputln ( webfile ) )
inputhasended = true ;
else if ( limit == changelimit )
if ( buffer [0 ]== changebuffer [0 ])
if ( changelimit > 0 )
checkchange () ;
}
if ( changing )
goto lab20 ;
}
loc = 0 ;
buffer [limit ]= 32 ;
}
eightbits
#ifdef HAVE_PROTOTYPES
zcontrolcode ( ASCIIcode c )
#else
zcontrolcode ( c )
ASCIIcode c ;
#endif
{
register eightbits Result; switch ( c )
{case 64 :
Result = 64 ;
break ;
case 39 :
Result = 12 ;
break ;
case 34 :
Result = 13 ;
break ;
case 36 :
Result = 135 ;
break ;
case 32 :
case 9 :
case 42 :
Result = 147 ;
break ;
case 61 :
Result = 2 ;
break ;
case 92 :
Result = 3 ;
break ;
case 68 :
case 100 :
Result = 144 ;
break ;
case 70 :
case 102 :
Result = 143 ;
break ;
case 123 :
Result = 9 ;
break ;
case 125 :
Result = 10 ;
break ;
case 80 :
case 112 :
Result = 145 ;
break ;
case 38 :
Result = 136 ;
break ;
case 60 :
Result = 146 ;
break ;
case 62 :
{
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Extra @>" ) ;
error () ;
}
}
Result = 0 ;
}
break ;
case 84 :
case 116 :
Result = 134 ;
break ;
case 33 :
Result = 126 ;
break ;
case 63 :
Result = 125 ;
break ;
case 94 :
Result = 131 ;
break ;
case 58 :
Result = 132 ;
break ;
case 46 :
Result = 133 ;
break ;
case 44 :
Result = 137 ;
break ;
case 124 :
Result = 138 ;
break ;
case 47 :
Result = 139 ;
break ;
case 35 :
Result = 140 ;
break ;
case 43 :
Result = 141 ;
break ;
case 59 :
Result = 142 ;
break ;
default:
{
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Unknown control code" ) ;
error () ;
}
}
Result = 0 ;
}
break ;
}
return Result ;
}
void
#ifdef HAVE_PROTOTYPES
skiplimbo ( void )
#else
skiplimbo ( )
#endif
{
/* 10 */ ASCIIcode c ;
while ( true ) if ( loc > limit )
{
getline () ;
if ( inputhasended )
goto lab10 ;
}
else {
buffer [limit + 1 ]= 64 ;
while ( buffer [loc ]!= 64 ) loc = loc + 1 ;
if ( loc <= limit )
{
loc = loc + 2 ;
c = buffer [loc - 1 ];
if ( ( c == 32 ) || ( c == 9 ) || ( c == 42 ) )
goto lab10 ;
}
}
lab10: ;
}
eightbits
#ifdef HAVE_PROTOTYPES
skipTeX ( void )
#else
skipTeX ( )
#endif
{
/* 30 */ register eightbits Result; eightbits c ;
while ( true ) {
if ( loc > limit )
{
getline () ;
if ( inputhasended )
{
c = 147 ;
goto lab30 ;
}
}
buffer [limit + 1 ]= 64 ;
do {
c = buffer [loc ];
loc = loc + 1 ;
if ( c == 124 )
goto lab30 ;
} while ( ! ( c == 64 ) ) ;
if ( loc <= limit )
{
c = controlcode ( buffer [loc ]) ;
loc = loc + 1 ;
goto lab30 ;
}
}
lab30: Result = c ;
return Result ;
}
eightbits
#ifdef HAVE_PROTOTYPES
zskipcomment ( eightbits bal )
#else
zskipcomment ( bal )
eightbits bal ;
#endif
{
/* 30 */ register eightbits Result; ASCIIcode c ;
while ( true ) {
if ( loc > limit )
{
getline () ;
if ( inputhasended )
{
bal = 0 ;
goto lab30 ;
}
}
c = buffer [loc ];
loc = loc + 1 ;
if ( c == 124 )
goto lab30 ;
if ( c == 64 )
{
c = buffer [loc ];
if ( ( c != 32 ) && ( c != 9 ) && ( c != 42 ) )
loc = loc + 1 ;
else {
loc = loc - 1 ;
bal = 0 ;
goto lab30 ;
}
}
else if ( ( c == 92 ) && ( buffer [loc ]!= 64 ) )
loc = loc + 1 ;
else if ( c == 123 )
bal = bal + 1 ;
else if ( c == 125 )
{
bal = bal - 1 ;
if ( bal == 0 )
goto lab30 ;
}
}
lab30: Result = bal ;
return Result ;
}
eightbits
#ifdef HAVE_PROTOTYPES
getnext ( void )
#else
getnext ( )
#endif
{
/* 20 30 31 */ register eightbits Result; eightbits c ;
eightbits d ;
integer j, k ;
lab20: if ( loc > limit )
{
getline () ;
if ( inputhasended )
{
c = 147 ;
goto lab31 ;
}
}
c = buffer [loc ];
loc = loc + 1 ;
if ( scanninghex )
if ( ( ( c >= 48 ) && ( c <= 57 ) ) || ( ( c >= 65 ) && ( c <= 70 ) ) )
goto lab31 ;
else scanninghex = false ;
switch ( c )
{case 65 :
case 66 :
case 67 :
case 68 :
case 69 :
case 70 :
case 71 :
case 72 :
case 73 :
case 74 :
case 75 :
case 76 :
case 77 :
case 78 :
case 79 :
case 80 :
case 81 :
case 82 :
case 83 :
case 84 :
case 85 :
case 86 :
case 87 :
case 88 :
case 89 :
case 90 :
case 97 :
case 98 :
case 99 :
case 100 :
case 101 :
case 102 :
case 103 :
case 104 :
case 105 :
case 106 :
case 107 :
case 108 :
case 109 :
case 110 :
case 111 :
case 112 :
case 113 :
case 114 :
case 115 :
case 116 :
case 117 :
case 118 :
case 119 :
case 120 :
case 121 :
case 122 :
{
if ( ( ( c == 69 ) || ( c == 101 ) ) && ( loc > 1 ) )
if ( ( buffer [loc - 2 ]<= 57 ) && ( buffer [loc - 2 ]>= 48 ) )
c = 128 ;
if ( c != 128 )
{
loc = loc - 1 ;
idfirst = loc ;
do {
loc = loc + 1 ;
d = buffer [loc ];
} while ( ! ( ( ( d < 48 ) || ( ( d > 57 ) && ( d < 65 ) ) || ( ( d >
90 ) && ( d < 97 ) ) || ( d > 122 ) ) && ( d != 95 ) ) ) ;
c = 130 ;
idloc = loc ;
}
}
break ;
case 39 :
case 34 :
{
idfirst = loc - 1 ;
do {
d = buffer [loc ];
loc = loc + 1 ;
if ( loc > limit )
{
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! String constant didn't end" ) ;
error () ;
}
}
loc = limit ;
d = c ;
}
} while ( ! ( d == c ) ) ;
idloc = loc ;
c = 129 ;
}
break ;
case 64 :
{
c = controlcode ( buffer [loc ]) ;
loc = loc + 1 ;
if ( c == 126 )
{
xrefswitch = 10240 ;
goto lab20 ;
}
else if ( c == 125 )
{
xrefswitch = 0 ;
goto lab20 ;
}
else if ( ( c <= 134 ) && ( c >= 131 ) )
{
idfirst = loc ;
buffer [limit + 1 ]= 64 ;
while ( buffer [loc ]!= 64 ) loc = loc + 1 ;
idloc = loc ;
if ( loc > limit )
{
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Control text didn't end" ) ;
error () ;
}
}
loc = limit ;
}
else {
loc = loc + 2 ;
if ( buffer [loc - 1 ]!= 62 )
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Control codes are forbidden in control text" ) ;
error () ;
}
}
}
}
else if ( c == 13 )
scanninghex = true ;
else if ( c == 146 )
{
k = 0 ;
while ( true ) {
if ( loc > limit )
{
getline () ;
if ( inputhasended )
{
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Input ended in section name" ) ;
error () ;
}
}
loc = 1 ;
goto lab30 ;
}
}
d = buffer [loc ];
if ( d == 64 )
{
d = buffer [loc + 1 ];
if ( d == 62 )
{
loc = loc + 2 ;
goto lab30 ;
}
if ( ( d == 32 ) || ( d == 9 ) || ( d == 42 ) )
{
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Section name didn't end" ) ;
error () ;
}
}
goto lab30 ;
}
k = k + 1 ;
modtext [k ]= 64 ;
loc = loc + 1 ;
}
loc = loc + 1 ;
if ( k < longestname - 1 )
k = k + 1 ;
if ( ( d == 32 ) || ( d == 9 ) )
{
d = 32 ;
if ( modtext [k - 1 ]== 32 )
k = k - 1 ;
}
modtext [k ]= d ;
}
lab30: if ( k >= longestname - 2 )
{
{
putc ('\n', stdout );
Fputs( stdout , "! Section name too long: " ) ;
}
{register integer for_end; j = 1 ;for_end = 25 ; if ( j <=
for_end) do
putc ( xchr [modtext [j ]], stdout );
while ( j++ < for_end ) ;}
Fputs( stdout , "..." ) ;
if ( history == 0 )
history = 1 ;
}
if ( ( modtext [k ]== 32 ) && ( k > 0 ) )
k = k - 1 ;
if ( k > 3 )
{
if ( ( modtext [k ]== 46 ) && ( modtext [k - 1 ]== 46 ) && (
modtext [k - 2 ]== 46 ) )
curmodule = prefixlookup ( k - 3 ) ;
else curmodule = modlookup ( k ) ;
}
else curmodule = modlookup ( k ) ;
xrefswitch = 0 ;
}
else if ( c == 2 )
{
idfirst = loc ;
loc = loc + 1 ;
buffer [limit + 1 ]= 64 ;
buffer [limit + 2 ]= 62 ;
while ( ( buffer [loc ]!= 64 ) || ( buffer [loc + 1 ]!= 62 ) ) loc
= loc + 1 ;
if ( loc >= limit )
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Verbatim string didn't end" ) ;
error () ;
}
}
idloc = loc ;
loc = loc + 2 ;
}
}
break ;
case 46 :
if ( buffer [loc ]== 46 )
{
if ( loc <= limit )
{
c = 32 ;
loc = loc + 1 ;
}
}
else if ( buffer [loc ]== 41 )
{
if ( loc <= limit )
{
c = 93 ;
loc = loc + 1 ;
}
}
break ;
case 58 :
if ( buffer [loc ]== 61 )
{
if ( loc <= limit )
{
c = 24 ;
loc = loc + 1 ;
}
}
break ;
case 61 :
if ( buffer [loc ]== 61 )
{
if ( loc <= limit )
{
c = 30 ;
loc = loc + 1 ;
}
}
break ;
case 62 :
if ( buffer [loc ]== 61 )
{
if ( loc <= limit )
{
c = 29 ;
loc = loc + 1 ;
}
}
break ;
case 60 :
if ( buffer [loc ]== 61 )
{
if ( loc <= limit )
{
c = 28 ;
loc = loc + 1 ;
}
}
else if ( buffer [loc ]== 62 )
{
if ( loc <= limit )
{
c = 26 ;
loc = loc + 1 ;
}
}
break ;
case 40 :
if ( buffer [loc ]== 42 )
{
if ( loc <= limit )
{
c = 9 ;
loc = loc + 1 ;
}
}
else if ( buffer [loc ]== 46 )
{
if ( loc <= limit )
{
c = 91 ;
loc = loc + 1 ;
}
}
break ;
case 42 :
if ( buffer [loc ]== 41 )
{
if ( loc <= limit )
{
c = 10 ;
loc = loc + 1 ;
}
}
break ;
case 32 :
case 9 :
goto lab20 ;
break ;
case 125 :
{
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Extra }" ) ;
error () ;
}
}
goto lab20 ;
}
break ;
default:
if ( c >= 128 )
goto lab20 ;
else ;
break ;
}
lab31: Result = c ;
return Result ;
}
void
#ifdef HAVE_PROTOTYPES
Pascalxref ( void )
#else
Pascalxref ( )
#endif
{
/* 10 */ namepointer p ;
while ( nextcontrol < 143 ) {
if ( ( nextcontrol >= 130 ) && ( nextcontrol <= 133 ) )
{
p = idlookup ( nextcontrol - 130 ) ;
newxref ( p ) ;
if ( ( ilk [p ]== 17 ) || ( ilk [p ]== 22 ) )
xrefswitch = 10240 ;
}
nextcontrol = getnext () ;
if ( ( nextcontrol == 124 ) || ( nextcontrol == 123 ) )
goto lab10 ;
}
lab10: ;
}
void
#ifdef HAVE_PROTOTYPES
outerxref ( void )
#else
outerxref ( )
#endif
{
eightbits bal ;
while ( nextcontrol < 143 ) if ( nextcontrol != 123 )
Pascalxref () ;
else {
bal = skipcomment ( 1 ) ;
nextcontrol = 124 ;
while ( bal > 0 ) {
Pascalxref () ;
if ( nextcontrol == 124 )
bal = skipcomment ( bal ) ;
else bal = 0 ;
}
}
}
void
#ifdef HAVE_PROTOTYPES
zmodcheck ( namepointer p )
#else
zmodcheck ( p )
namepointer p ;
#endif
{
if ( p > 0 )
{
modcheck ( link [p ]) ;
curxref = xref [p ];
if ( xmem [curxref ].numfield < 10240 )
{
{
putc ('\n', stdout );
Fputs( stdout , "! Never defined: <" ) ;
}
printid ( p ) ;
putc ( '>' , stdout );
if ( history == 0 )
history = 1 ;
}
while ( xmem [curxref ].numfield >= 10240 ) curxref = xmem [curxref ]
.xlinkfield ;
if ( curxref == 0 )
{
{
putc ('\n', stdout );
Fputs( stdout , "! Never used: <" ) ;
}
printid ( p ) ;
putc ( '>' , stdout );
if ( history == 0 )
history = 1 ;
}
modcheck ( ilk [p ]) ;
}
}
void
#ifdef HAVE_PROTOTYPES
zflushbuffer ( eightbits b , boolean percent , boolean carryover )
#else
zflushbuffer ( b , percent , carryover )
eightbits b ;
boolean percent ;
boolean carryover ;
#endif
{
/* 30 31 */ integer j, k ;
j = b ;
if ( ! percent )
while ( true ) {
if ( j == 0 )
goto lab30 ;
if ( outbuf [j ]!= 32 )
goto lab30 ;
j = j - 1 ;
}
lab30: {
register integer for_end; k = 1 ;for_end = j ; if ( k <= for_end)
do
putc ( xchr [outbuf [k ]], texfile );
while ( k++ < for_end ) ;}
if ( percent )
putc ( xchr [37 ], texfile );
putc ('\n', texfile );
outline = outline + 1 ;
if ( carryover )
{register integer for_end; k = 1 ;for_end = j ; if ( k <= for_end) do
if ( outbuf [k ]== 37 )
if ( ( k == 1 ) || ( outbuf [k - 1 ]!= 92 ) )
{
outbuf [b ]= 37 ;
b = b - 1 ;
goto lab31 ;
}
while ( k++ < for_end ) ;}
lab31: if ( ( b < outptr ) )
{register integer for_end; k = b + 1 ;for_end = outptr ; if ( k <=
for_end) do
outbuf [k - b ]= outbuf [k ];
while ( k++ < for_end ) ;}
outptr = outptr - b ;
}
void
#ifdef HAVE_PROTOTYPES
finishline ( void )
#else
finishline ( )
#endif
{
/* 10 */ integer k ;
if ( outptr > 0 )
flushbuffer ( outptr , false , false ) ;
else {
{register integer for_end; k = 0 ;for_end = limit ; if ( k <= for_end)
do
if ( ( buffer [k ]!= 32 ) && ( buffer [k ]!= 9 ) )
goto lab10 ;
while ( k++ < for_end ) ;}
flushbuffer ( 0 , false , false ) ;
}
lab10: ;
}
void
#ifdef HAVE_PROTOTYPES
breakout ( void )
#else
breakout ( )
#endif
{
/* 10 */ integer k ;
ASCIIcode d ;
k = outptr ;
while ( true ) {
if ( k == 0 )
{
{
putc ('\n', stdout );
fprintf( stdout , "%s%ld", "! Line had to be broken (output l." , (long)outline ) ;
}
fprintf( stdout , "%s\n", "):" ) ;
{register integer for_end; k = 1 ;for_end = outptr - 1 ; if ( k <=
for_end) do
putc ( xchr [outbuf [k ]], stdout );
while ( k++ < for_end ) ;}
putc ('\n', stdout );
if ( history == 0 )
history = 1 ;
flushbuffer ( outptr - 1 , true , true ) ;
goto lab10 ;
}
d = outbuf [k ];
if ( d == 32 )
{
flushbuffer ( k , false , true ) ;
goto lab10 ;
}
if ( ( d == 92 ) && ( outbuf [k - 1 ]!= 92 ) )
{
flushbuffer ( k - 1 , true , true ) ;
goto lab10 ;
}
k = k - 1 ;
}
lab10: ;
}
void
#ifdef HAVE_PROTOTYPES
zoutmod ( integer m )
#else
zoutmod ( m )
integer m ;
#endif
{
char k ;
integer a ;
k = 0 ;
a = m ;
do {
dig [k ]= a % 10 ;
a = a / 10 ;
k = k + 1 ;
} while ( ! ( a == 0 ) ) ;
do {
k = k - 1 ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= dig [k ]+ 48 ;
}
} while ( ! ( k == 0 ) ) ;
if ( changedmodule [m ])
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 42 ;
}
}
void
#ifdef HAVE_PROTOTYPES
zoutname ( namepointer p )
#else
zoutname ( p )
namepointer p ;
#endif
{
integer k ;
char w ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 123 ;
}
w = p % 2 ;
{register integer for_end; k = bytestart [p ];for_end = bytestart [p +
2 ]- 1 ; if ( k <= for_end) do
{
if ( bytemem [w ][ k ]== 95 )
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
}
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= bytemem [w ][ k ];
}
}
while ( k++ < for_end ) ;}
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 125 ;
}
}
void
#ifdef HAVE_PROTOTYPES
copylimbo ( void )
#else
copylimbo ( )
#endif
{
/* 10 */ ASCIIcode c ;
while ( true ) if ( loc > limit )
{
finishline () ;
getline () ;
if ( inputhasended )
goto lab10 ;
}
else {
buffer [limit + 1 ]= 64 ;
while ( buffer [loc ]!= 64 ) {
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= buffer [loc ];
}
loc = loc + 1 ;
}
if ( loc <= limit )
{
loc = loc + 2 ;
c = buffer [loc - 1 ];
if ( ( c == 32 ) || ( c == 9 ) || ( c == 42 ) )
goto lab10 ;
if ( ( c != 122 ) && ( c != 90 ) )
{
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 64 ;
}
if ( c != 64 )
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Double @ required outside of sections" ) ;
error () ;
}
}
}
}
}
lab10: ;
}
eightbits
#ifdef HAVE_PROTOTYPES
copyTeX ( void )
#else
copyTeX ( )
#endif
{
/* 30 */ register eightbits Result; eightbits c ;
while ( true ) {
if ( loc > limit )
{
finishline () ;
getline () ;
if ( inputhasended )
{
c = 147 ;
goto lab30 ;
}
}
buffer [limit + 1 ]= 64 ;
do {
c = buffer [loc ];
loc = loc + 1 ;
if ( c == 124 )
goto lab30 ;
if ( c != 64 )
{
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= c ;
}
if ( ( outptr == 1 ) && ( ( c == 32 ) || ( c == 9 ) ) )
outptr = outptr - 1 ;
}
} while ( ! ( c == 64 ) ) ;
if ( loc <= limit )
{
c = controlcode ( buffer [loc ]) ;
loc = loc + 1 ;
goto lab30 ;
}
}
lab30: Result = c ;
return Result ;
}
eightbits
#ifdef HAVE_PROTOTYPES
zcopycomment ( eightbits bal )
#else
zcopycomment ( bal )
eightbits bal ;
#endif
{
/* 30 */ register eightbits Result; ASCIIcode c ;
while ( true ) {
if ( loc > limit )
{
getline () ;
if ( inputhasended )
{
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Input ended in mid-comment" ) ;
error () ;
}
}
loc = 1 ;
{
if ( tokptr + 2 > maxtoks )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "token" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
tokmem [tokptr ]= 32 ;
tokptr = tokptr + 1 ;
}
do {
{
if ( tokptr + 2 > maxtoks )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "token" , " capacity exceeded" )
;
error () ;
history = 3 ;
jumpout () ;
}
tokmem [tokptr ]= 125 ;
tokptr = tokptr + 1 ;
}
bal = bal - 1 ;
} while ( ! ( bal == 0 ) ) ;
goto lab30 ;
}
}
c = buffer [loc ];
loc = loc + 1 ;
if ( c == 124 )
goto lab30 ;
{
if ( tokptr + 2 > maxtoks )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "token" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
tokmem [tokptr ]= c ;
tokptr = tokptr + 1 ;
}
if ( c == 64 )
{
loc = loc + 1 ;
if ( buffer [loc - 1 ]!= 64 )
{
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Illegal use of @ in comment" ) ;
error () ;
}
}
loc = loc - 2 ;
tokptr = tokptr - 1 ;
{
if ( tokptr + 2 > maxtoks )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "token" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
tokmem [tokptr ]= 32 ;
tokptr = tokptr + 1 ;
}
do {
{
if ( tokptr + 2 > maxtoks )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "token" , " capacity exceeded" )
;
error () ;
history = 3 ;
jumpout () ;
}
tokmem [tokptr ]= 125 ;
tokptr = tokptr + 1 ;
}
bal = bal - 1 ;
} while ( ! ( bal == 0 ) ) ;
goto lab30 ;
}
}
else if ( ( c == 92 ) && ( buffer [loc ]!= 64 ) )
{
{
if ( tokptr + 2 > maxtoks )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "token" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
tokmem [tokptr ]= buffer [loc ];
tokptr = tokptr + 1 ;
}
loc = loc + 1 ;
}
else if ( c == 123 )
bal = bal + 1 ;
else if ( c == 125 )
{
bal = bal - 1 ;
if ( bal == 0 )
goto lab30 ;
}
}
lab30: Result = bal ;
return Result ;
}
void
#ifdef HAVE_PROTOTYPES
zred ( sixteenbits j , eightbits k , eightbits c , integer d )
#else
zred ( j , k , c , d )
sixteenbits j ;
eightbits k ;
eightbits c ;
integer d ;
#endif
{
integer i ;
cat [j ]= c ;
trans [j ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
if ( k > 1 )
{
{register integer for_end; i = j + k ;for_end = loptr ; if ( i <=
for_end) do
{
cat [i - k + 1 ]= cat [i ];
trans [i - k + 1 ]= trans [i ];
}
while ( i++ < for_end ) ;}
loptr = loptr - k + 1 ;
}
if ( pp + d >= scrapbase )
pp = pp + d ;
else pp = scrapbase ;
}
void
#ifdef HAVE_PROTOTYPES
zsq ( sixteenbits j , eightbits k , eightbits c , integer d )
#else
zsq ( j , k , c , d )
sixteenbits j ;
eightbits k ;
eightbits c ;
integer d ;
#endif
{
integer i ;
if ( k == 1 )
{
cat [j ]= c ;
if ( pp + d >= scrapbase )
pp = pp + d ;
else pp = scrapbase ;
}
else {
{register integer for_end; i = j ;for_end = j + k - 1 ; if ( i <=
for_end) do
{
tokmem [tokptr ]= 40960L + trans [i ];
tokptr = tokptr + 1 ;
}
while ( i++ < for_end ) ;}
red ( j , k , c , d ) ;
}
}
void
#ifdef HAVE_PROTOTYPES
fivecases ( void )
#else
fivecases ( )
#endif
{
/* 31 */ switch ( cat [pp ])
{case 5 :
if ( cat [pp + 1 ]== 6 )
{
if ( ( cat [pp + 2 ]== 10 ) || ( cat [pp + 2 ]== 11 ) )
{
sq ( pp , 3 , 11 , -2 ) ;
goto lab31 ;
}
}
else if ( cat [pp + 1 ]== 11 )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 140 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
red ( pp , 2 , 5 , -1 ) ;
goto lab31 ;
}
break ;
case 3 :
if ( cat [pp + 1 ]== 11 )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 32 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 138 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 55 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
red ( pp , 2 , 11 , -2 ) ;
goto lab31 ;
}
break ;
case 2 :
if ( cat [pp + 1 ]== 6 )
{
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
red ( pp , 1 , 11 , -2 ) ;
goto lab31 ;
}
else if ( cat [pp + 1 ]== 14 )
{
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 139 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
red ( pp , 2 , 3 , -3 ) ;
goto lab31 ;
}
else if ( cat [pp + 1 ]== 2 )
{
sq ( pp , 2 , 2 , -1 ) ;
goto lab31 ;
}
else if ( cat [pp + 1 ]== 1 )
{
sq ( pp , 2 , 2 , -1 ) ;
goto lab31 ;
}
else if ( cat [pp + 1 ]== 11 )
{
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 136 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 140 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 137 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
red ( pp , 2 , 11 , -2 ) ;
goto lab31 ;
}
else if ( cat [pp + 1 ]== 10 )
{
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
red ( pp , 2 , 11 , -2 ) ;
goto lab31 ;
}
break ;
case 4 :
if ( ( cat [pp + 1 ]== 17 ) && ( cat [pp + 2 ]== 6 ) )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 137 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 2 ];
tokptr = tokptr + 1 ;
red ( pp , 3 , 2 , -1 ) ;
goto lab31 ;
}
else if ( cat [pp + 1 ]== 6 )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 44 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
red ( pp , 2 , 2 , -1 ) ;
goto lab31 ;
}
else if ( cat [pp + 1 ]== 2 )
{
if ( ( cat [pp + 2 ]== 17 ) && ( cat [pp + 3 ]== 6 ) )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 2 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 137 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 3 ];
tokptr = tokptr + 1 ;
red ( pp , 4 , 2 , -1 ) ;
goto lab31 ;
}
else if ( cat [pp + 2 ]== 6 )
{
sq ( pp , 3 , 2 , -1 ) ;
goto lab31 ;
}
else if ( cat [pp + 2 ]== 14 )
{
sq ( pp + 1 , 2 , 2 , 0 ) ;
goto lab31 ;
}
else if ( cat [pp + 2 ]== 16 )
{
if ( cat [pp + 3 ]== 3 )
{
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 133 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 2 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 125 ;
tokptr = tokptr + 1 ;
red ( pp + 1 , 3 , 2 , 0 ) ;
goto lab31 ;
}
}
else if ( cat [pp + 2 ]== 9 )
{
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 2 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 44 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 138 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 53 ;
tokptr = tokptr + 1 ;
red ( pp + 1 , 2 , 2 , 0 ) ;
goto lab31 ;
}
else if ( cat [pp + 2 ]== 19 )
{
if ( cat [pp + 3 ]== 3 )
{
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 133 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 2 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 125 ;
tokptr = tokptr + 1 ;
red ( pp + 1 , 3 , 2 , 0 ) ;
goto lab31 ;
}
}
}
else if ( cat [pp + 1 ]== 16 )
{
if ( cat [pp + 2 ]== 3 )
{
tokmem [tokptr ]= 133 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 125 ;
tokptr = tokptr + 1 ;
red ( pp + 1 , 2 , 2 , 0 ) ;
goto lab31 ;
}
}
else if ( cat [pp + 1 ]== 1 )
{
sq ( pp + 1 , 1 , 2 , 0 ) ;
goto lab31 ;
}
else if ( ( cat [pp + 1 ]== 11 ) && ( cat [pp + 2 ]== 6 ) )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 2 ];
tokptr = tokptr + 1 ;
red ( pp , 3 , 2 , -1 ) ;
goto lab31 ;
}
else if ( cat [pp + 1 ]== 19 )
{
if ( cat [pp + 2 ]== 3 )
{
tokmem [tokptr ]= 133 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 125 ;
tokptr = tokptr + 1 ;
red ( pp + 1 , 2 , 2 , 0 ) ;
goto lab31 ;
}
}
break ;
case 1 :
if ( cat [pp + 1 ]== 6 )
{
sq ( pp , 1 , 11 , -2 ) ;
goto lab31 ;
}
else if ( cat [pp + 1 ]== 14 )
{
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 139 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
red ( pp , 2 , 3 , -3 ) ;
goto lab31 ;
}
else if ( cat [pp + 1 ]== 2 )
{
sq ( pp , 2 , 2 , -1 ) ;
goto lab31 ;
}
else if ( cat [pp + 1 ]== 22 )
{
sq ( pp , 2 , 22 , 0 ) ;
goto lab31 ;
}
else if ( cat [pp + 1 ]== 1 )
{
sq ( pp , 2 , 1 , -2 ) ;
goto lab31 ;
}
else if ( cat [pp + 1 ]== 10 )
{
sq ( pp , 2 , 11 , -2 ) ;
goto lab31 ;
}
break ;
default:
;
break ;
}
pp = pp + 1 ;
lab31: ;
}
void
#ifdef HAVE_PROTOTYPES
alphacases ( void )
#else
alphacases ( )
#endif
{
/* 31 */ if ( cat [pp + 1 ]== 2 )
{
if ( cat [pp + 2 ]== 14 )
{
sq ( pp + 1 , 2 , 2 , 0 ) ;
goto lab31 ;
}
else if ( cat [pp + 2 ]== 8 )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 32 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 32 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 136 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 2 ];
tokptr = tokptr + 1 ;
red ( pp , 3 , 13 , -2 ) ;
goto lab31 ;
}
}
else if ( cat [pp + 1 ]== 8 )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 32 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 136 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
red ( pp , 2 , 13 , -2 ) ;
goto lab31 ;
}
else if ( cat [pp + 1 ]== 1 )
{
sq ( pp + 1 , 1 , 2 , 0 ) ;
goto lab31 ;
}
pp = pp + 1 ;
lab31: ;
}
textpointer
#ifdef HAVE_PROTOTYPES
translate ( void )
#else
translate ( )
#endif
{
/* 30 31 */ register textpointer Result; integer i ;
integer j ;
integer k ;
pp = scrapbase ;
loptr = pp - 1 ;
hiptr = pp ;
while ( true ) {
if ( loptr < pp + 3 )
{
do {
if ( hiptr <= scrapptr )
{
loptr = loptr + 1 ;
cat [loptr ]= cat [hiptr ];
trans [loptr ]= trans [hiptr ];
hiptr = hiptr + 1 ;
}
} while ( ! ( ( hiptr > scrapptr ) || ( loptr == pp + 3 ) ) ) ;
{register integer for_end; i = loptr + 1 ;for_end = pp + 3 ; if ( i <=
for_end) do
cat [i ]= 0 ;
while ( i++ < for_end ) ;}
}
if ( ( tokptr + 8 > maxtoks ) || ( textptr + 4 > maxtexts ) )
{
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "token/text" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
}
if ( pp > loptr )
goto lab30 ;
if ( cat [pp ]<= 7 )
if ( cat [pp ]< 7 )
fivecases () ;
else alphacases () ;
else {
switch ( cat [pp ])
{case 17 :
if ( cat [pp + 1 ]== 21 )
{
if ( cat [pp + 2 ]== 13 )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 137 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 2 ];
tokptr = tokptr + 1 ;
red ( pp , 3 , 17 , 0 ) ;
goto lab31 ;
}
}
else if ( cat [pp + 1 ]== 6 )
{
if ( cat [pp + 2 ]== 10 )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 137 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 2 ];
tokptr = tokptr + 1 ;
red ( pp , 3 , 11 , -2 ) ;
goto lab31 ;
}
}
else if ( cat [pp + 1 ]== 11 )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
red ( pp , 2 , 17 , 0 ) ;
goto lab31 ;
}
break ;
case 21 :
if ( cat [pp + 1 ]== 13 )
{
sq ( pp , 2 , 17 , 0 ) ;
goto lab31 ;
}
break ;
case 13 :
if ( cat [pp + 1 ]== 11 )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 140 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 137 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
red ( pp , 2 , 11 , -2 ) ;
goto lab31 ;
}
break ;
case 12 :
if ( ( cat [pp + 1 ]== 13 ) && ( cat [pp + 2 ]== 11 ) )
if ( cat [pp + 3 ]== 20 )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 140 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 2 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 3 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 32 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
red ( pp , 4 , 13 , -2 ) ;
goto lab31 ;
}
else {
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 140 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 2 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 137 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
red ( pp , 3 , 11 , -2 ) ;
goto lab31 ;
}
break ;
case 20 :
{
sq ( pp , 1 , 3 , -3 ) ;
goto lab31 ;
}
break ;
case 15 :
if ( cat [pp + 1 ]== 2 )
{
if ( cat [pp + 2 ]== 1 )
if ( cat [pp + 3 ]!= 1 )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 2 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 125 ;
tokptr = tokptr + 1 ;
red ( pp , 3 , 2 , -1 ) ;
goto lab31 ;
}
}
else if ( cat [pp + 1 ]== 1 )
if ( cat [pp + 2 ]!= 1 )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 125 ;
tokptr = tokptr + 1 ;
red ( pp , 2 , 2 , -1 ) ;
goto lab31 ;
}
break ;
case 22 :
if ( ( cat [pp + 1 ]== 10 ) || ( cat [pp + 1 ]== 9 ) )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
red ( pp , 2 , 11 , -2 ) ;
goto lab31 ;
}
else {
sq ( pp , 1 , 1 , -2 ) ;
goto lab31 ;
}
break ;
case 16 :
if ( cat [pp + 1 ]== 5 )
{
if ( ( cat [pp + 2 ]== 6 ) && ( cat [pp + 3 ]== 10 ) )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 137 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 2 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 3 ];
tokptr = tokptr + 1 ;
red ( pp , 4 , 11 , -2 ) ;
goto lab31 ;
}
}
else if ( cat [pp + 1 ]== 11 )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 140 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
red ( pp , 2 , 16 , -2 ) ;
goto lab31 ;
}
break ;
case 18 :
if ( ( cat [pp + 1 ]== 3 ) && ( cat [pp + 2 ]== 21 ) )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 32 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 2 ];
tokptr = tokptr + 1 ;
red ( pp , 3 , 21 , -2 ) ;
goto lab31 ;
}
else {
tokmem [tokptr ]= 136 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
red ( pp , 1 , 17 , 0 ) ;
goto lab31 ;
}
break ;
case 9 :
{
sq ( pp , 1 , 10 , -3 ) ;
goto lab31 ;
}
break ;
case 11 :
if ( cat [pp + 1 ]== 11 )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 140 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
red ( pp , 2 , 11 , -2 ) ;
goto lab31 ;
}
break ;
case 10 :
{
sq ( pp , 1 , 11 , -2 ) ;
goto lab31 ;
}
break ;
case 19 :
if ( cat [pp + 1 ]== 5 )
{
sq ( pp , 1 , 11 , -2 ) ;
goto lab31 ;
}
else if ( cat [pp + 1 ]== 2 )
{
if ( cat [pp + 2 ]== 14 )
{
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 2 ];
tokptr = tokptr + 1 ;
red ( pp + 1 , 2 , 3 , 1 ) ;
goto lab31 ;
}
}
else if ( cat [pp + 1 ]== 1 )
{
if ( cat [pp + 2 ]== 14 )
{
sq ( pp + 1 , 2 , 3 , 1 ) ;
goto lab31 ;
}
}
else if ( cat [pp + 1 ]== 11 )
{
tokmem [tokptr ]= 40960L + trans [pp ];
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 140 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 40960L + trans [pp + 1 ];
tokptr = tokptr + 1 ;
red ( pp , 2 , 19 , -2 ) ;
goto lab31 ;
}
break ;
default:
;
break ;
}
pp = pp + 1 ;
lab31: ;
}
}
lab30: ;
if ( ( loptr == scrapbase ) && ( cat [loptr ]!= 2 ) )
Result = trans [loptr ];
else {
;
{register integer for_end; j = scrapbase ;for_end = loptr ; if ( j <=
for_end) do
{
if ( j != scrapbase )
{
tokmem [tokptr ]= 32 ;
tokptr = tokptr + 1 ;
}
if ( cat [j ]== 2 )
{
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
}
tokmem [tokptr ]= 40960L + trans [j ];
tokptr = tokptr + 1 ;
if ( cat [j ]== 2 )
{
tokmem [tokptr ]= 36 ;
tokptr = tokptr + 1 ;
}
if ( tokptr + 6 > maxtoks )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "token" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
}
while ( j++ < for_end ) ;}
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
Result = textptr - 1 ;
}
return Result ;
}
void
#ifdef HAVE_PROTOTYPES
appcomment ( void )
#else
appcomment ( )
#endif
{
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
if ( ( scrapptr < scrapbase ) || ( cat [scrapptr ]< 8 ) || ( cat [
scrapptr ]> 10 ) )
{
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 10 ;
trans [scrapptr ]= 0 ;
}
else {
tokmem [tokptr ]= 40960L + trans [scrapptr ];
tokptr = tokptr + 1 ;
}
tokmem [tokptr ]= textptr + 40959L ;
tokptr = tokptr + 1 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
void
#ifdef HAVE_PROTOTYPES
appoctal ( void )
#else
appoctal ( )
#endif
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 79 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 123 ;
tokptr = tokptr + 1 ;
while ( ( buffer [loc ]>= 48 ) && ( buffer [loc ]<= 55 ) ) {
{
if ( tokptr + 2 > maxtoks )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "token" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
tokmem [tokptr ]= buffer [loc ];
tokptr = tokptr + 1 ;
}
loc = loc + 1 ;
}
{
tokmem [tokptr ]= 125 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 1 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
}
void
#ifdef HAVE_PROTOTYPES
apphex ( void )
#else
apphex ( )
#endif
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 72 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 123 ;
tokptr = tokptr + 1 ;
while ( ( ( buffer [loc ]>= 48 ) && ( buffer [loc ]<= 57 ) ) || ( (
buffer [loc ]>= 65 ) && ( buffer [loc ]<= 70 ) ) ) {
{
if ( tokptr + 2 > maxtoks )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "token" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
tokmem [tokptr ]= buffer [loc ];
tokptr = tokptr + 1 ;
}
loc = loc + 1 ;
}
{
tokmem [tokptr ]= 125 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 1 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
}
void
#ifdef HAVE_PROTOTYPES
easycases ( void )
#else
easycases ( )
#endif
{
switch ( nextcontrol )
{case 6 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 105 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 110 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 32 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 116 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 111 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 35 :
case 36 :
case 37 :
case 94 :
case 95 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= nextcontrol ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 0 :
case 124 :
case 131 :
case 132 :
case 133 :
;
break ;
case 40 :
case 91 :
{
tokmem [tokptr ]= nextcontrol ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 4 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 41 :
case 93 :
{
tokmem [tokptr ]= nextcontrol ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 6 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 42 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 97 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 115 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 116 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 44 :
{
tokmem [tokptr ]= 44 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 138 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 57 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 46 :
case 48 :
case 49 :
case 50 :
case 51 :
case 52 :
case 53 :
case 54 :
case 55 :
case 56 :
case 57 :
{
tokmem [tokptr ]= nextcontrol ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 1 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 59 :
{
tokmem [tokptr ]= 59 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 9 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 58 :
{
tokmem [tokptr ]= 58 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 14 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 26 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 73 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 28 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 76 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 29 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 71 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 30 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 83 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 4 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 87 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 31 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 86 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 5 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 82 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 24 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 75 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 128 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 69 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 123 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 15 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 9 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 66 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 10 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 84 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 12 :
appoctal () ;
break ;
case 13 :
apphex () ;
break ;
case 135 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 41 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 1 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 3 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 93 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 1 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 137 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 44 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 138 :
{
tokmem [tokptr ]= 138 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 48 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 1 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 139 :
{
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
appcomment () ;
}
break ;
case 140 :
{
tokmem [tokptr ]= 142 ;
tokptr = tokptr + 1 ;
appcomment () ;
}
break ;
case 141 :
{
tokmem [tokptr ]= 134 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 32 ;
tokptr = tokptr + 1 ;
{
tokmem [tokptr ]= 134 ;
tokptr = tokptr + 1 ;
appcomment () ;
}
}
break ;
case 142 :
{
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 9 ;
trans [scrapptr ]= 0 ;
}
break ;
case 136 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 74 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
default:
{
tokmem [tokptr ]= nextcontrol ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
}
}
void
#ifdef HAVE_PROTOTYPES
zsubcases ( namepointer p )
#else
zsubcases ( p )
namepointer p ;
#endif
{
switch ( ilk [p ])
{case 0 :
{
tokmem [tokptr ]= 10240 + p ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 1 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 4 :
{
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 7 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 7 :
{
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 139 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 3 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 8 :
{
tokmem [tokptr ]= 131 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 125 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 9 :
{
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 8 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 12 :
{
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 7 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 13 :
{
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 3 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 16 :
{
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 1 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
case 20 :
{
tokmem [tokptr ]= 132 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 125 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
break ;
}
}
void
#ifdef HAVE_PROTOTYPES
Pascalparse ( void )
#else
Pascalparse ( )
#endif
{
/* 21 10 */ integer j ;
namepointer p ;
while ( nextcontrol < 143 ) {
if ( ( scrapptr + 4 > maxscraps ) || ( tokptr + 6 > maxtoks ) || ( textptr
+ 4 > maxtexts ) )
{
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "scrap/token/text" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
}
lab21: switch ( nextcontrol )
{case 129 :
case 2 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
if ( nextcontrol == 2 )
{
tokmem [tokptr ]= 61 ;
tokptr = tokptr + 1 ;
}
else {
tokmem [tokptr ]= 46 ;
tokptr = tokptr + 1 ;
}
tokmem [tokptr ]= 123 ;
tokptr = tokptr + 1 ;
j = idfirst ;
while ( j < idloc ) {
switch ( buffer [j ])
{case 32 :
case 92 :
case 35 :
case 37 :
case 36 :
case 94 :
case 39 :
case 96 :
case 123 :
case 125 :
case 126 :
case 38 :
case 95 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
}
break ;
case 64 :
if ( buffer [j + 1 ]== 64 )
j = j + 1 ;
else {
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Double @ should be used in strings" ) ;
error () ;
}
}
break ;
default:
;
break ;
}
{
if ( tokptr + 2 > maxtoks )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "token" , " capacity exceeded" )
;
error () ;
history = 3 ;
jumpout () ;
}
tokmem [tokptr ]= buffer [j ];
tokptr = tokptr + 1 ;
}
j = j + 1 ;
}
{
tokmem [tokptr ]= 125 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 1 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
}
break ;
case 130 :
{
p = idlookup ( 0 ) ;
switch ( ilk [p ])
{case 0 :
case 4 :
case 7 :
case 8 :
case 9 :
case 12 :
case 13 :
case 16 :
case 20 :
subcases ( p ) ;
break ;
case 5 :
{
{
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 5 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
{
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 3 ;
trans [scrapptr ]= 0 ;
}
}
break ;
case 6 :
{
{
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 21 ;
trans [scrapptr ]= 0 ;
}
{
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 7 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
}
break ;
case 10 :
{
if ( ( scrapptr < scrapbase ) || ( ( cat [scrapptr ]!= 10 ) && (
cat [scrapptr ]!= 9 ) ) )
{
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 10 ;
trans [scrapptr ]= 0 ;
}
{
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 139 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 20 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
}
break ;
case 11 :
{
if ( ( scrapptr < scrapbase ) || ( ( cat [scrapptr ]!= 10 ) && (
cat [scrapptr ]!= 9 ) ) )
{
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 10 ;
trans [scrapptr ]= 0 ;
}
{
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 6 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
}
break ;
case 14 :
{
{
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 12 ;
trans [scrapptr ]= 0 ;
}
{
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 7 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
}
break ;
case 23 :
{
{
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 126 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 7 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
{
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 8 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
}
break ;
case 17 :
{
{
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 139 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 16 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
{
tokmem [tokptr ]= 136 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 32 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 3 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
}
break ;
case 18 :
{
{
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 18 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
{
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 3 ;
trans [scrapptr ]= 0 ;
}
}
break ;
case 19 :
{
{
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 136 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 5 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
{
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 3 ;
trans [scrapptr ]= 0 ;
}
}
break ;
case 21 :
{
if ( ( scrapptr < scrapbase ) || ( ( cat [scrapptr ]!= 10 ) && (
cat [scrapptr ]!= 9 ) ) )
{
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 10 ;
trans [scrapptr ]= 0 ;
}
{
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 139 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 6 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
{
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 13 ;
trans [scrapptr ]= 0 ;
}
}
break ;
case 22 :
{
{
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 139 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 20480 + p ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 19 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
{
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 3 ;
trans [scrapptr ]= 0 ;
}
}
break ;
default:
{
nextcontrol = ilk [p ]- 24 ;
goto lab21 ;
}
break ;
}
}
break ;
case 134 :
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 104 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 98 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 111 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 120 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 123 ;
tokptr = tokptr + 1 ;
{register integer for_end; j = idfirst ;for_end = idloc - 1 ; if ( j
<= for_end) do
{
if ( tokptr + 2 > maxtoks )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "token" , " capacity exceeded" )
;
error () ;
history = 3 ;
jumpout () ;
}
tokmem [tokptr ]= buffer [j ];
tokptr = tokptr + 1 ;
}
while ( j++ < for_end ) ;}
{
tokmem [tokptr ]= 125 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 1 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
}
break ;
default:
easycases () ;
break ;
}
nextcontrol = getnext () ;
if ( ( nextcontrol == 124 ) || ( nextcontrol == 123 ) )
goto lab10 ;
}
lab10: ;
}
textpointer
#ifdef HAVE_PROTOTYPES
Pascaltranslate ( void )
#else
Pascaltranslate ( )
#endif
{
register textpointer Result; textpointer p ;
integer savebase ;
savebase = scrapbase ;
scrapbase = scrapptr + 1 ;
Pascalparse () ;
if ( nextcontrol != 124 )
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Missing \"|\" after Pascal text" ) ;
error () ;
}
}
{
if ( tokptr + 2 > maxtoks )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "token" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
tokmem [tokptr ]= 135 ;
tokptr = tokptr + 1 ;
}
appcomment () ;
p = translate () ;
scrapptr = scrapbase - 1 ;
scrapbase = savebase ;
Result = p ;
return Result ;
}
void
#ifdef HAVE_PROTOTYPES
outerparse ( void )
#else
outerparse ( )
#endif
{
eightbits bal ;
textpointer p, q ;
while ( nextcontrol < 143 ) if ( nextcontrol != 123 )
Pascalparse () ;
else {
if ( ( tokptr + 7 > maxtoks ) || ( textptr + 3 > maxtexts ) || ( scrapptr
>= maxscraps ) )
{
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "token/text/scrap" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
}
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 67 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 123 ;
tokptr = tokptr + 1 ;
bal = copycomment ( 1 ) ;
nextcontrol = 124 ;
while ( bal > 0 ) {
p = textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
q = Pascaltranslate () ;
tokmem [tokptr ]= 40960L + p ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 51200L + q ;
tokptr = tokptr + 1 ;
if ( nextcontrol == 124 )
bal = copycomment ( bal ) ;
else bal = 0 ;
}
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
appcomment () ;
}
}
void
#ifdef HAVE_PROTOTYPES
zpushlevel ( textpointer p )
#else
zpushlevel ( p )
textpointer p ;
#endif
{
if ( stackptr == stacksize )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "stack" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
else {
if ( stackptr > 0 )
stack [stackptr ]= curstate ;
stackptr = stackptr + 1 ;
curstate .tokfield = tokstart [p ];
curstate .endfield = tokstart [p + 1 ];
}
}
eightbits
#ifdef HAVE_PROTOTYPES
getoutput ( void )
#else
getoutput ( )
#endif
{
/* 20 */ register eightbits Result; sixteenbits a ;
lab20: while ( curstate .tokfield == curstate .endfield ) {
stackptr = stackptr - 1 ;
curstate = stack [stackptr ];
}
a = tokmem [curstate .tokfield ];
curstate .tokfield = curstate .tokfield + 1 ;
if ( a >= 256 )
{
curname = a % 10240 ;
switch ( a / 10240 )
{case 2 :
a = 129 ;
break ;
case 3 :
a = 128 ;
break ;
case 4 :
{
pushlevel ( curname ) ;
goto lab20 ;
}
break ;
case 5 :
{
pushlevel ( curname ) ;
curstate .modefield = 0 ;
goto lab20 ;
}
break ;
default:
a = 130 ;
break ;
}
}
Result = a ;
return Result ;
}
void
#ifdef HAVE_PROTOTYPES
outputPascal ( void )
#else
outputPascal ( )
#endif
{
sixteenbits savetokptr, savetextptr, savenextcontrol ;
textpointer p ;
savetokptr = tokptr ;
savetextptr = textptr ;
savenextcontrol = nextcontrol ;
nextcontrol = 124 ;
p = Pascaltranslate () ;
tokmem [tokptr ]= p + 51200L ;
tokptr = tokptr + 1 ;
makeoutput () ;
textptr = savetextptr ;
tokptr = savetokptr ;
nextcontrol = savenextcontrol ;
}
void
#ifdef HAVE_PROTOTYPES
makeoutput ( void )
#else
makeoutput ( )
#endif
{
/* 21 10 31 */ eightbits a ;
eightbits b ;
integer k, klimit ;
char w ;
integer j ;
ASCIIcode stringdelimiter ;
integer saveloc, savelimit ;
namepointer curmodname ;
mode savemode ;
tokmem [tokptr ]= 143 ;
tokptr = tokptr + 1 ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
pushlevel ( textptr - 1 ) ;
while ( true ) {
a = getoutput () ;
lab21: switch ( a )
{case 143 :
goto lab10 ;
break ;
case 130 :
case 129 :
{
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
}
if ( a == 130 )
if ( bytestart [curname + 2 ]- bytestart [curname ]== 1 )
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 124 ;
}
else {
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
}
else {
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 38 ;
}
if ( bytestart [curname + 2 ]- bytestart [curname ]== 1 )
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= bytemem [curname % 2 ][ bytestart [curname ]]
;
}
else outname ( curname ) ;
}
break ;
case 128 :
{
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 88 ;
}
curxref = xref [curname ];
if ( xmem [curxref ].numfield >= 10240 )
{
outmod ( xmem [curxref ].numfield - 10240 ) ;
if ( phasethree )
{
curxref = xmem [curxref ].xlinkfield ;
while ( xmem [curxref ].numfield >= 10240 ) {
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 44 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 32 ;
}
outmod ( xmem [curxref ].numfield - 10240 ) ;
curxref = xmem [curxref ].xlinkfield ;
}
}
}
else {
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 48 ;
}
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 58 ;
}
k = bytestart [curname ];
w = curname % 2 ;
klimit = bytestart [curname + 2 ];
curmodname = curname ;
while ( k < klimit ) {
b = bytemem [w ][ k ];
k = k + 1 ;
if ( b == 64 )
{
if ( bytemem [w ][ k ]!= 64 )
{
{
putc ('\n', stdout );
Fputs( stdout , "! Illegal control code in section name:" ) ;
}
{
putc ('\n', stdout );
putc ( '<' , stdout );
}
printid ( curmodname ) ;
Fputs( stdout , "> " ) ;
history = 2 ;
}
k = k + 1 ;
}
if ( b != 124 )
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= b ;
}
else {
j = limit + 1 ;
buffer [j ]= 124 ;
stringdelimiter = 0 ;
while ( true ) {
if ( k >= klimit )
{
{
putc ('\n', stdout );
Fputs( stdout , "! Pascal text in section name didn't end:" ) ;
}
{
putc ('\n', stdout );
putc ( '<' , stdout );
}
printid ( curmodname ) ;
Fputs( stdout , "> " ) ;
history = 2 ;
goto lab31 ;
}
b = bytemem [w ][ k ];
k = k + 1 ;
if ( b == 64 )
{
if ( j > longbufsize - 4 )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "buffer" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
buffer [j + 1 ]= 64 ;
buffer [j + 2 ]= bytemem [w ][ k ];
j = j + 2 ;
k = k + 1 ;
}
else {
if ( ( b == 34 ) || ( b == 39 ) )
if ( stringdelimiter == 0 )
stringdelimiter = b ;
else if ( stringdelimiter == b )
stringdelimiter = 0 ;
if ( ( b != 124 ) || ( stringdelimiter != 0 ) )
{
if ( j > longbufsize - 3 )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "buffer" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
j = j + 1 ;
buffer [j ]= b ;
}
else goto lab31 ;
}
}
lab31: ;
saveloc = loc ;
savelimit = limit ;
loc = limit + 2 ;
limit = j + 1 ;
buffer [limit ]= 124 ;
outputPascal () ;
loc = saveloc ;
limit = savelimit ;
}
}
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 88 ;
}
}
break ;
case 131 :
case 133 :
case 132 :
{
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 109 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 97 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 116 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 104 ;
}
if ( a == 131 )
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 98 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 105 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 110 ;
}
else if ( a == 132 )
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 114 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 101 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 108 ;
}
else {
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 111 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 112 ;
}
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 123 ;
}
}
break ;
case 135 :
{
do {
a = getoutput () ;
} while ( ! ( ( a < 139 ) || ( a > 142 ) ) ) ;
goto lab21 ;
}
break ;
case 134 :
{
do {
a = getoutput () ;
} while ( ! ( ( ( a < 139 ) && ( a != 32 ) ) || ( a > 142 ) ) ) ;
goto lab21 ;
}
break ;
case 136 :
case 137 :
case 138 :
case 139 :
case 140 :
case 141 :
case 142 :
if ( a < 140 )
{
if ( curstate .modefield == 1 )
{
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= a - 87 ;
}
if ( a == 138 )
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= getoutput () ;
}
}
else if ( a == 138 )
b = getoutput () ;
}
else {
b = a ;
savemode = curstate .modefield ;
while ( true ) {
a = getoutput () ;
if ( ( a == 135 ) || ( a == 134 ) )
goto lab21 ;
if ( ( ( a != 32 ) && ( a < 140 ) ) || ( a > 142 ) )
{
if ( savemode == 1 )
{
if ( outptr > 3 )
if ( ( outbuf [outptr ]== 80 ) && ( outbuf [outptr - 1 ]==
92 ) && ( outbuf [outptr - 2 ]== 89 ) && ( outbuf [outptr - 3
]== 92 ) )
goto lab21 ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= b - 87 ;
}
if ( a != 143 )
finishline () ;
}
else if ( ( a != 143 ) && ( curstate .modefield == 0 ) )
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 32 ;
}
goto lab21 ;
}
if ( a > b )
b = a ;
}
}
break ;
default:
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= a ;
}
break ;
}
}
lab10: ;
}
void
#ifdef HAVE_PROTOTYPES
finishPascal ( void )
#else
finishPascal ( )
#endif
{
textpointer p ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 80 ;
}
{
if ( tokptr + 2 > maxtoks )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "token" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
}
appcomment () ;
p = translate () ;
tokmem [tokptr ]= p + 40960L ;
tokptr = tokptr + 1 ;
makeoutput () ;
if ( outptr > 1 )
if ( outbuf [outptr - 1 ]== 92 )
if ( outbuf [outptr ]== 54 )
outptr = outptr - 2 ;
else if ( outbuf [outptr ]== 55 )
outbuf [outptr ]= 89 ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 112 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 97 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 114 ;
}
finishline () ;
tokptr = 1 ;
textptr = 1 ;
scrapptr = 0 ;
}
void
#ifdef HAVE_PROTOTYPES
zfootnote ( sixteenbits flag )
#else
zfootnote ( flag )
sixteenbits flag ;
#endif
{
/* 30 10 */ xrefnumber q ;
if ( xmem [curxref ].numfield <= flag )
goto lab10 ;
finishline () ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
}
if ( flag == 0 )
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 85 ;
}
else {
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 65 ;
}
q = curxref ;
if ( xmem [xmem [q ].xlinkfield ].numfield > flag )
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 115 ;
}
while ( true ) {
outmod ( xmem [curxref ].numfield - flag ) ;
curxref = xmem [curxref ].xlinkfield ;
if ( xmem [curxref ].numfield <= flag )
goto lab30 ;
if ( xmem [xmem [curxref ].xlinkfield ].numfield > flag )
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 44 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 32 ;
}
else {
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 69 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 84 ;
}
if ( curxref != xmem [q ].xlinkfield )
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 115 ;
}
}
}
lab30: ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 46 ;
}
lab10: ;
}
void
#ifdef HAVE_PROTOTYPES
zunbucket ( eightbits d )
#else
zunbucket ( d )
eightbits d ;
#endif
{
ASCIIcode c ;
{register integer for_end; c = 229 ;for_end = 0 ; if ( c >= for_end) do
if ( bucket [collate [c ]]> 0 )
{
if ( scrapptr > maxscraps )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "sorting" , " capacity exceeded" ) ;
error () ;
history = 3 ;
jumpout () ;
}
scrapptr = scrapptr + 1 ;
if ( c == 0 )
cat [scrapptr ]= 255 ;
else cat [scrapptr ]= d ;
trans [scrapptr ]= bucket [collate [c ]];
bucket [collate [c ]]= 0 ;
}
while ( c-- > for_end ) ;}
}
void
#ifdef HAVE_PROTOTYPES
zmodprint ( namepointer p )
#else
zmodprint ( p )
namepointer p ;
#endif
{
if ( p > 0 )
{
modprint ( link [p ]) ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 58 ;
}
tokptr = 1 ;
textptr = 1 ;
scrapptr = 0 ;
stackptr = 0 ;
curstate .modefield = 1 ;
tokmem [tokptr ]= p + 30720 ;
tokptr = tokptr + 1 ;
makeoutput () ;
footnote ( 0 ) ;
finishline () ;
modprint ( ilk [p ]) ;
}
}
void
#ifdef HAVE_PROTOTYPES
PhaseI ( void )
#else
PhaseI ( )
#endif
{
phaseone = true ;
phasethree = false ;
resetinput () ;
modulecount = 0 ;
skiplimbo () ;
changeexists = false ;
while ( ! inputhasended ) {
modulecount = modulecount + 1 ;
if ( modulecount == maxmodules )
{
putc ('\n', stdout );
fprintf( stderr , "%s%s%s", "! Sorry, " , "section number" , " capacity exceeded" )
;
error () ;
history = 3 ;
jumpout () ;
}
changedmodule [modulecount ]= changing ;
if ( buffer [loc - 1 ]== 42 )
{
fprintf( stdout , "%c%ld", '*' , (long)modulecount ) ;
fflush ( stdout ) ;
}
do {
nextcontrol = skipTeX () ;
switch ( nextcontrol )
{case 126 :
xrefswitch = 10240 ;
break ;
case 125 :
xrefswitch = 0 ;
break ;
case 124 :
Pascalxref () ;
break ;
case 131 :
case 132 :
case 133 :
case 146 :
{
loc = loc - 2 ;
nextcontrol = getnext () ;
if ( nextcontrol != 146 )
newxref ( idlookup ( nextcontrol - 130 ) ) ;
}
break ;
default:
;
break ;
}
} while ( ! ( nextcontrol >= 143 ) ) ;
while ( nextcontrol <= 144 ) {
xrefswitch = 10240 ;
if ( nextcontrol == 144 )
nextcontrol = getnext () ;
else {
nextcontrol = getnext () ;
if ( nextcontrol == 130 )
{
lhs = idlookup ( 0 ) ;
ilk [lhs ]= 0 ;
newxref ( lhs ) ;
nextcontrol = getnext () ;
if ( nextcontrol == 30 )
{
nextcontrol = getnext () ;
if ( nextcontrol == 130 )
{
rhs = idlookup ( 0 ) ;
ilk [lhs ]= ilk [rhs ];
ilk [rhs ]= 0 ;
newxref ( rhs ) ;
ilk [rhs ]= ilk [lhs ];
nextcontrol = getnext () ;
}
}
}
}
outerxref () ;
}
if ( nextcontrol <= 146 )
{
if ( nextcontrol == 145 )
modxrefswitch = 0 ;
else modxrefswitch = 10240 ;
do {
if ( nextcontrol == 146 )
newmodxref ( curmodule ) ;
nextcontrol = getnext () ;
outerxref () ;
} while ( ! ( nextcontrol > 146 ) ) ;
}
if ( changedmodule [modulecount ])
changeexists = true ;
}
changedmodule [modulecount ]= changeexists ;
phaseone = false ;
modcheck ( ilk [0 ]) ;
}
void
#ifdef HAVE_PROTOTYPES
PhaseII ( void )
#else
PhaseII ( )
#endif
{
resetinput () ;
{
putc ('\n', stdout );
Fputs( stdout , "Writing the output file..." ) ;
}
modulecount = 0 ;
copylimbo () ;
finishline () ;
flushbuffer ( 0 , false , false ) ;
while ( ! inputhasended ) {
modulecount = modulecount + 1 ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
}
if ( buffer [loc - 1 ]!= 42 )
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 77 ;
}
else {
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 78 ;
}
fprintf( stdout , "%c%ld", '*' , (long)modulecount ) ;
fflush ( stdout ) ;
}
outmod ( modulecount ) ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 46 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 32 ;
}
saveline = outline ;
saveplace = outptr ;
do {
nextcontrol = copyTeX () ;
switch ( nextcontrol )
{case 124 :
{
stackptr = 0 ;
curstate .modefield = 1 ;
outputPascal () ;
}
break ;
case 64 :
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 64 ;
}
break ;
case 12 :
{
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 79 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 123 ;
}
while ( ( buffer [loc ]>= 48 ) && ( buffer [loc ]<= 55 ) ) {
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= buffer [loc ];
}
loc = loc + 1 ;
}
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 125 ;
}
}
break ;
case 13 :
{
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 72 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 123 ;
}
while ( ( ( buffer [loc ]>= 48 ) && ( buffer [loc ]<= 57 ) ) ||
( ( buffer [loc ]>= 65 ) && ( buffer [loc ]<= 70 ) ) ) {
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= buffer [loc ];
}
loc = loc + 1 ;
}
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 125 ;
}
}
break ;
case 134 :
case 131 :
case 132 :
case 133 :
case 146 :
{
loc = loc - 2 ;
nextcontrol = getnext () ;
if ( nextcontrol == 134 )
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! TeX string should be in Pascal text only" )
;
error () ;
}
}
}
break ;
case 9 :
case 10 :
case 135 :
case 137 :
case 138 :
case 139 :
case 140 :
case 141 :
case 136 :
case 142 :
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! You can't do that in TeX text" ) ;
error () ;
}
}
break ;
default:
;
break ;
}
} while ( ! ( nextcontrol >= 143 ) ) ;
if ( nextcontrol <= 144 )
{
if ( ( saveline != outline ) || ( saveplace != outptr ) )
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 89 ;
}
saveline = outline ;
saveplace = outptr ;
}
while ( nextcontrol <= 144 ) {
stackptr = 0 ;
curstate .modefield = 1 ;
if ( nextcontrol == 144 )
{
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 68 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 3 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
nextcontrol = getnext () ;
if ( nextcontrol != 130 )
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Improper macro definition" ) ;
error () ;
}
}
else {
tokmem [tokptr ]= 10240 + idlookup ( 0 ) ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
nextcontrol = getnext () ;
}
else {
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 70 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 3 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
nextcontrol = getnext () ;
if ( nextcontrol == 130 )
{
{
tokmem [tokptr ]= 10240 + idlookup ( 0 ) ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
nextcontrol = getnext () ;
if ( nextcontrol == 30 )
{
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 83 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
nextcontrol = getnext () ;
if ( nextcontrol == 130 )
{
{
tokmem [tokptr ]= 10240 + idlookup ( 0 ) ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
{
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 9 ;
trans [scrapptr ]= 0 ;
}
nextcontrol = getnext () ;
}
}
}
if ( scrapptr != 5 )
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Improper format definition" ) ;
error () ;
}
}
}
outerparse () ;
finishPascal () ;
}
thismodule = 0 ;
if ( nextcontrol <= 146 )
{
if ( ( saveline != outline ) || ( saveplace != outptr ) )
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 89 ;
}
stackptr = 0 ;
curstate .modefield = 1 ;
if ( nextcontrol == 145 )
nextcontrol = getnext () ;
else {
thismodule = curmodule ;
do {
nextcontrol = getnext () ;
} while ( ! ( nextcontrol != 43 ) ) ;
if ( ( nextcontrol != 61 ) && ( nextcontrol != 30 ) )
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! You need an = sign after the section name" ) ;
error () ;
}
}
else nextcontrol = getnext () ;
if ( outptr > 1 )
if ( ( outbuf [outptr ]== 89 ) && ( outbuf [outptr - 1 ]== 92 ) )
{
tokmem [tokptr ]= 139 ;
tokptr = tokptr + 1 ;
}
{
tokmem [tokptr ]= 30720 + thismodule ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 22 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
curxref = xref [thismodule ];
if ( xmem [curxref ].numfield != modulecount + 10240 )
{
{
tokmem [tokptr ]= 132 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 43 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 125 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
thismodule = 0 ;
}
{
tokmem [tokptr ]= 92 ;
tokptr = tokptr + 1 ;
tokmem [tokptr ]= 83 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 2 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
{
tokmem [tokptr ]= 141 ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 9 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
}
while ( nextcontrol <= 146 ) {
outerparse () ;
if ( nextcontrol < 146 )
{
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! You can't do that in Pascal text" ) ;
error () ;
}
}
nextcontrol = getnext () ;
}
else if ( nextcontrol == 146 )
{
{
tokmem [tokptr ]= 30720 + curmodule ;
tokptr = tokptr + 1 ;
scrapptr = scrapptr + 1 ;
cat [scrapptr ]= 22 ;
trans [scrapptr ]= textptr ;
textptr = textptr + 1 ;
tokstart [textptr ]= tokptr ;
}
nextcontrol = getnext () ;
}
}
finishPascal () ;
}
if ( thismodule > 0 )
{
firstxref = xref [thismodule ];
thisxref = xmem [firstxref ].xlinkfield ;
if ( xmem [thisxref ].numfield > 10240 )
{
midxref = thisxref ;
curxref = 0 ;
do {
nextxref = xmem [thisxref ].xlinkfield ;
xmem [thisxref ].xlinkfield = curxref ;
curxref = thisxref ;
thisxref = nextxref ;
} while ( ! ( xmem [thisxref ].numfield <= 10240 ) ) ;
xmem [firstxref ].xlinkfield = curxref ;
}
else midxref = 0 ;
curxref = 0 ;
while ( thisxref != 0 ) {
nextxref = xmem [thisxref ].xlinkfield ;
xmem [thisxref ].xlinkfield = curxref ;
curxref = thisxref ;
thisxref = nextxref ;
}
if ( midxref > 0 )
xmem [midxref ].xlinkfield = curxref ;
else xmem [firstxref ].xlinkfield = curxref ;
curxref = xmem [firstxref ].xlinkfield ;
footnote ( 10240 ) ;
footnote ( 0 ) ;
}
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 102 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 105 ;
}
finishline () ;
flushbuffer ( 0 , false , false ) ;
}
}
void mainbody() {
initialize () ;
Fputs( stdout , "This is WEAVE, Version 4.4" ) ;
fprintf( stdout , "%s\n", versionstring ) ;
idloc = 10 ;
idfirst = 7 ;
buffer [7 ]= 97 ;
buffer [8 ]= 110 ;
buffer [9 ]= 100 ;
curname = idlookup ( 28 ) ;
idfirst = 5 ;
buffer [5 ]= 97 ;
buffer [6 ]= 114 ;
buffer [7 ]= 114 ;
buffer [8 ]= 97 ;
buffer [9 ]= 121 ;
curname = idlookup ( 4 ) ;
idfirst = 5 ;
buffer [5 ]= 98 ;
buffer [6 ]= 101 ;
buffer [7 ]= 103 ;
buffer [8 ]= 105 ;
buffer [9 ]= 110 ;
curname = idlookup ( 5 ) ;
idfirst = 6 ;
buffer [6 ]= 99 ;
buffer [7 ]= 97 ;
buffer [8 ]= 115 ;
buffer [9 ]= 101 ;
curname = idlookup ( 6 ) ;
idfirst = 5 ;
buffer [5 ]= 99 ;
buffer [6 ]= 111 ;
buffer [7 ]= 110 ;
buffer [8 ]= 115 ;
buffer [9 ]= 116 ;
curname = idlookup ( 7 ) ;
idfirst = 7 ;
buffer [7 ]= 100 ;
buffer [8 ]= 105 ;
buffer [9 ]= 118 ;
curname = idlookup ( 8 ) ;
idfirst = 8 ;
buffer [8 ]= 100 ;
buffer [9 ]= 111 ;
curname = idlookup ( 9 ) ;
idfirst = 4 ;
buffer [4 ]= 100 ;
buffer [5 ]= 111 ;
buffer [6 ]= 119 ;
buffer [7 ]= 110 ;
buffer [8 ]= 116 ;
buffer [9 ]= 111 ;
curname = idlookup ( 20 ) ;
idfirst = 6 ;
buffer [6 ]= 101 ;
buffer [7 ]= 108 ;
buffer [8 ]= 115 ;
buffer [9 ]= 101 ;
curname = idlookup ( 10 ) ;
idfirst = 7 ;
buffer [7 ]= 101 ;
buffer [8 ]= 110 ;
buffer [9 ]= 100 ;
curname = idlookup ( 11 ) ;
idfirst = 6 ;
buffer [6 ]= 102 ;
buffer [7 ]= 105 ;
buffer [8 ]= 108 ;
buffer [9 ]= 101 ;
curname = idlookup ( 4 ) ;
idfirst = 7 ;
buffer [7 ]= 102 ;
buffer [8 ]= 111 ;
buffer [9 ]= 114 ;
curname = idlookup ( 12 ) ;
idfirst = 2 ;
buffer [2 ]= 102 ;
buffer [3 ]= 117 ;
buffer [4 ]= 110 ;
buffer [5 ]= 99 ;
buffer [6 ]= 116 ;
buffer [7 ]= 105 ;
buffer [8 ]= 111 ;
buffer [9 ]= 110 ;
curname = idlookup ( 17 ) ;
idfirst = 6 ;
buffer [6 ]= 103 ;
buffer [7 ]= 111 ;
buffer [8 ]= 116 ;
buffer [9 ]= 111 ;
curname = idlookup ( 13 ) ;
idfirst = 8 ;
buffer [8 ]= 105 ;
buffer [9 ]= 102 ;
curname = idlookup ( 14 ) ;
idfirst = 8 ;
buffer [8 ]= 105 ;
buffer [9 ]= 110 ;
curname = idlookup ( 30 ) ;
idfirst = 5 ;
buffer [5 ]= 108 ;
buffer [6 ]= 97 ;
buffer [7 ]= 98 ;
buffer [8 ]= 101 ;
buffer [9 ]= 108 ;
curname = idlookup ( 7 ) ;
idfirst = 7 ;
buffer [7 ]= 109 ;
buffer [8 ]= 111 ;
buffer [9 ]= 100 ;
curname = idlookup ( 8 ) ;
idfirst = 7 ;
buffer [7 ]= 110 ;
buffer [8 ]= 105 ;
buffer [9 ]= 108 ;
curname = idlookup ( 16 ) ;
idfirst = 7 ;
buffer [7 ]= 110 ;
buffer [8 ]= 111 ;
buffer [9 ]= 116 ;
curname = idlookup ( 29 ) ;
idfirst = 8 ;
buffer [8 ]= 111 ;
buffer [9 ]= 102 ;
curname = idlookup ( 9 ) ;
idfirst = 8 ;
buffer [8 ]= 111 ;
buffer [9 ]= 114 ;
curname = idlookup ( 55 ) ;
idfirst = 4 ;
buffer [4 ]= 112 ;
buffer [5 ]= 97 ;
buffer [6 ]= 99 ;
buffer [7 ]= 107 ;
buffer [8 ]= 101 ;
buffer [9 ]= 100 ;
curname = idlookup ( 13 ) ;
idfirst = 1 ;
buffer [1 ]= 112 ;
buffer [2 ]= 114 ;
buffer [3 ]= 111 ;
buffer [4 ]= 99 ;
buffer [5 ]= 101 ;
buffer [6 ]= 100 ;
buffer [7 ]= 117 ;
buffer [8 ]= 114 ;
buffer [9 ]= 101 ;
curname = idlookup ( 17 ) ;
idfirst = 3 ;
buffer [3 ]= 112 ;
buffer [4 ]= 114 ;
buffer [5 ]= 111 ;
buffer [6 ]= 103 ;
buffer [7 ]= 114 ;
buffer [8 ]= 97 ;
buffer [9 ]= 109 ;
curname = idlookup ( 17 ) ;
idfirst = 4 ;
buffer [4 ]= 114 ;
buffer [5 ]= 101 ;
buffer [6 ]= 99 ;
buffer [7 ]= 111 ;
buffer [8 ]= 114 ;
buffer [9 ]= 100 ;
curname = idlookup ( 18 ) ;
idfirst = 4 ;
buffer [4 ]= 114 ;
buffer [5 ]= 101 ;
buffer [6 ]= 112 ;
buffer [7 ]= 101 ;
buffer [8 ]= 97 ;
buffer [9 ]= 116 ;
curname = idlookup ( 19 ) ;
idfirst = 7 ;
buffer [7 ]= 115 ;
buffer [8 ]= 101 ;
buffer [9 ]= 116 ;
curname = idlookup ( 4 ) ;
idfirst = 6 ;
buffer [6 ]= 116 ;
buffer [7 ]= 104 ;
buffer [8 ]= 101 ;
buffer [9 ]= 110 ;
curname = idlookup ( 9 ) ;
idfirst = 8 ;
buffer [8 ]= 116 ;
buffer [9 ]= 111 ;
curname = idlookup ( 20 ) ;
idfirst = 6 ;
buffer [6 ]= 116 ;
buffer [7 ]= 121 ;
buffer [8 ]= 112 ;
buffer [9 ]= 101 ;
curname = idlookup ( 7 ) ;
idfirst = 5 ;
buffer [5 ]= 117 ;
buffer [6 ]= 110 ;
buffer [7 ]= 116 ;
buffer [8 ]= 105 ;
buffer [9 ]= 108 ;
curname = idlookup ( 21 ) ;
idfirst = 7 ;
buffer [7 ]= 118 ;
buffer [8 ]= 97 ;
buffer [9 ]= 114 ;
curname = idlookup ( 22 ) ;
idfirst = 5 ;
buffer [5 ]= 119 ;
buffer [6 ]= 104 ;
buffer [7 ]= 105 ;
buffer [8 ]= 108 ;
buffer [9 ]= 101 ;
curname = idlookup ( 12 ) ;
idfirst = 6 ;
buffer [6 ]= 119 ;
buffer [7 ]= 105 ;
buffer [8 ]= 116 ;
buffer [9 ]= 104 ;
curname = idlookup ( 12 ) ;
idfirst = 3 ;
buffer [3 ]= 120 ;
buffer [4 ]= 99 ;
buffer [5 ]= 108 ;
buffer [6 ]= 97 ;
buffer [7 ]= 117 ;
buffer [8 ]= 115 ;
buffer [9 ]= 101 ;
curname = idlookup ( 23 ) ;
PhaseI () ;
PhaseII () ;
if ( noxref )
{
finishline () ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
}
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 118 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 102 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 105 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 108 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 108 ;
}
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 101 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 110 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 100 ;
}
finishline () ;
}
else {
phasethree = true ;
{
putc ('\n', stdout );
Fputs( stdout , "Writing the index..." ) ;
}
if ( changeexists )
{
finishline () ;
{
kmodule = 1 ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 99 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 104 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 32 ;
}
while ( kmodule < modulecount ) {
if ( changedmodule [kmodule ])
{
outmod ( kmodule ) ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 44 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 32 ;
}
}
kmodule = kmodule + 1 ;
}
outmod ( kmodule ) ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 46 ;
}
}
}
finishline () ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 105 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 110 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 120 ;
}
finishline () ;
{register integer for_end; c = 0 ;for_end = 255 ; if ( c <= for_end) do
bucket [c ]= 0 ;
while ( c++ < for_end ) ;}
{register integer for_end; h = 0 ;for_end = hashsize - 1 ; if ( h <=
for_end) do
{
nextname = hash [h ];
while ( nextname != 0 ) {
curname = nextname ;
nextname = link [curname ];
if ( xref [curname ]!= 0 )
{
c = bytemem [curname % 2 ][ bytestart [curname ]];
if ( ( c <= 90 ) && ( c >= 65 ) )
c = c + 32 ;
blink [curname ]= bucket [c ];
bucket [c ]= curname ;
}
}
}
while ( h++ < for_end ) ;}
scrapptr = 0 ;
unbucket ( 1 ) ;
while ( scrapptr > 0 ) {
curdepth = cat [scrapptr ];
if ( ( blink [trans [scrapptr ]]== 0 ) || ( curdepth == 255 ) )
{
curname = trans [scrapptr ];
do {
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 58 ;
}
switch ( ilk [curname ])
{case 0 :
if ( bytestart [curname + 2 ]- bytestart [curname ]== 1 )
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 124 ;
}
else {
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
}
break ;
case 1 :
;
break ;
case 2 :
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 57 ;
}
break ;
case 3 :
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 46 ;
}
break ;
default:
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 38 ;
}
break ;
}
outname ( curname ) ;
thisxref = xref [curname ];
curxref = 0 ;
do {
nextxref = xmem [thisxref ].xlinkfield ;
xmem [thisxref ].xlinkfield = curxref ;
curxref = thisxref ;
thisxref = nextxref ;
} while ( ! ( thisxref == 0 ) ) ;
do {
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 44 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 32 ;
}
curval = xmem [curxref ].numfield ;
if ( curval < 10240 )
outmod ( curval ) ;
else {
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 91 ;
}
outmod ( curval - 10240 ) ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 93 ;
}
}
curxref = xmem [curxref ].xlinkfield ;
} while ( ! ( curxref == 0 ) ) ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 46 ;
}
finishline () ;
curname = blink [curname ];
} while ( ! ( curname == 0 ) ) ;
scrapptr = scrapptr - 1 ;
}
else {
nextname = trans [scrapptr ];
do {
curname = nextname ;
nextname = blink [curname ];
curbyte = bytestart [curname ]+ curdepth ;
curbank = curname % 2 ;
if ( curbyte == bytestart [curname + 2 ])
c = 0 ;
else {
c = bytemem [curbank ][ curbyte ];
if ( ( c <= 90 ) && ( c >= 65 ) )
c = c + 32 ;
}
blink [curname ]= bucket [c ];
bucket [c ]= curname ;
} while ( ! ( nextname == 0 ) ) ;
scrapptr = scrapptr - 1 ;
unbucket ( curdepth + 1 ) ;
}
}
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 102 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 105 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 110 ;
}
finishline () ;
modprint ( ilk [0 ]) ;
{
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 92 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 99 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 111 ;
if ( outptr == linelength )
breakout () ;
outptr = outptr + 1 ;
outbuf [outptr ]= 110 ;
}
finishline () ;
}
Fputs( stdout , "Done." ) ;
if ( changelimit != 0 )
{
{register integer for_end; ii = 0 ;for_end = changelimit ; if ( ii <=
for_end) do
buffer [ii ]= changebuffer [ii ];
while ( ii++ < for_end ) ;}
limit = changelimit ;
changing = true ;
line = otherline ;
loc = changelimit ;
{
if ( ! phaseone )
{
putc ('\n', stdout );
Fputs( stdout , "! Change file entry did not match" ) ;
error () ;
}
}
}
jumpout () ;
}
|