##3: #line 53 "/u/nr/web/src/master/spider.web" BEGIN{ ##9: #line 179 "/u/nr/web/src/master/spider.web" #line 180 "/u/nr/web/src/master/spider.web" logfile="spider.slog" ##:9 ##10: #line 183 "/u/nr/web/src/master/spider.web" #line 184 "/u/nr/web/src/master/spider.web" translationfile="trans_keys.unsorted" ##:10 ##11: #line 188 "/u/nr/web/src/master/spider.web" #line 189 "/u/nr/web/src/master/spider.web" scrapfile="scraps.web" print"@*Scrap code generated by {\tt SPIDER}.">scrapfile ttokfile="outtoks.web" print"@*Token code generated by {\tt SPIDER}.">scrapfile ##:11 ##12: #line 195 "/u/nr/web/src/master/spider.web" #line 196 "/u/nr/web/src/master/spider.web" reserved="scraps.web" ##:12 ##13: #line 200 "/u/nr/web/src/master/spider.web" #line 201 "/u/nr/web/src/master/spider.web" tokennamefile="names.unsorted" ##:13 ##14: #line 204 "/u/nr/web/src/master/spider.web" #line 205 "/u/nr/web/src/master/spider.web" ilkfile="names.unsorted" ##:14 ##15: #line 208 "/u/nr/web/src/master/spider.web" #line 209 "/u/nr/web/src/master/spider.web" categoryfile="names.unsorted" ##:15 ##16: #line 211 "/u/nr/web/src/master/spider.web" #line 212 "/u/nr/web/src/master/spider.web" grammarfile="grammar.web" print"@*Grammar code generated by {\tt SPIDER}.">grammarfile ##:16 ##17: #line 217 "/u/nr/web/src/master/spider.web" #line 218 "/u/nr/web/src/master/spider.web" tlang="outtoks.web" wlang="scraps.web" ##:17 ##18: #line 223 "/u/nr/web/src/master/spider.web" #line 224 "/u/nr/web/src/master/spider.web" productions="productions.list" ##:18 ##19: #line 227 "/u/nr/web/src/master/spider.web" #line 228 "/u/nr/web/src/master/spider.web" cycles="cycle.test" ##:19 ##37: #line 523 "/u/nr/web/src/master/spider.web" #line 524 "/u/nr/web/src/master/spider.web" default_translation="<*>" default_mathness="maybe" ##:37 ##46: #line 723 "/u/nr/web/src/master/spider.web" #line 724 "/u/nr/web/src/master/spider.web" highesttoken=200 tokennumber=highesttoken ##:46 ##61: #line 939 "/u/nr/web/src/master/spider.web" #line 940 "/u/nr/web/src/master/spider.web" tokennumbers["identifier"]=tokennumber;tokennumber-- tokenname["identifier"]="identifier" ##:61 ##63: #line 965 "/u/nr/web/src/master/spider.web" #line 966 "/u/nr/web/src/master/spider.web" tokennumbers["constant"]=tokennumber;tokennumber-- tokenname["constant"]="constant" tokennumbers["string"]=tokennumber;tokennumber-- tokenname["string"]="string" ##:63 ##138: #line 2242 "/u/nr/web/src/master/spider.web" #line 2243 "/u/nr/web/src/master/spider.web" at_sign="@@" ##:138 ##146: #line 2393 "/u/nr/web/src/master/spider.web" #line 2394 "/u/nr/web/src/master/spider.web" texof["\\"]="\\BS" texof["{"]="\\{" texof["}"]="\\{" texof["$"]="\\$" texof["&"]="\\amp" texof["#"]="\\#" texof["^"]="\\H" texof["_"]="\\_" texof["~"]="\\TI" texof["%"]="\\%" ##:146 ##150: #line 2471 "/u/nr/web/src/master/spider.web" #line 2472 "/u/nr/web/src/master/spider.web" sharp_line_open="\"#line\"" sharp_line_close="\"\"" ##:150 ##152: #line 2491 "/u/nr/web/src/master/spider.web" #line 2492 "/u/nr/web/src/master/spider.web" month["Jan"]="January" month["Feb"]="February" month["Mar"]="March" month["Apr"]="April" month["May"]="May" month["Jun"]="June" month["Jul"]="July" month["Aug"]="August" month["Sep"]="September" month["Oct"]="October" month["Nov"]="November" month["Dec"]="December" ##:152 #line 55 "/u/nr/web/src/master/spider.web" exitcode=0 } ##6: #line 98 "/u/nr/web/src/master/spider.web" #line 99 "/u/nr/web/src/master/spider.web" /^#|^ *$/{ print $0>logfile next } ##:6 #line 59 "/u/nr/web/src/master/spider.web" ##35: #line 496 "/u/nr/web/src/master/spider.web" #line 497 "/u/nr/web/src/master/spider.web" /^default /{ print"Setting defaults...">logfile start_place=2 ##36: #line 516 "/u/nr/web/src/master/spider.web" #line 517 "/u/nr/web/src/master/spider.web" this_translation=default_translation this_mathness=default_mathness this_name="" this_category="" this_tangleto="" ##:36 #line 501 "/u/nr/web/src/master/spider.web" ##29: #line 432 "/u/nr/web/src/master/spider.web" #line 433 "/u/nr/web/src/master/spider.web" for(i=start_place;ilogfile print"\tdefault mathness is",default_mathness>logfile next } ##:35 ##39: #line 568 "/u/nr/web/src/master/spider.web" #line 569 "/u/nr/web/src/master/spider.web" /^token /{ print"Token",$2>logfile if($2=="identifier"){ ##40: #line 593 "/u/nr/web/src/master/spider.web" #line 594 "/u/nr/web/src/master/spider.web" ##36: #line 516 "/u/nr/web/src/master/spider.web" #line 517 "/u/nr/web/src/master/spider.web" this_translation=default_translation this_mathness=default_mathness this_name="" this_category="" this_tangleto="" ##:36 #line 595 "/u/nr/web/src/master/spider.web" this_translation="" start_place=3 ##29: #line 432 "/u/nr/web/src/master/spider.web" #line 433 "/u/nr/web/src/master/spider.web" for(i=start_place;ilogfile ##36: #line 516 "/u/nr/web/src/master/spider.web" #line 517 "/u/nr/web/src/master/spider.web" this_translation=default_translation this_mathness=default_mathness this_name="" this_category="" this_tangleto="" ##:36 #line 615 "/u/nr/web/src/master/spider.web" this_translation="" start_place=3 ##29: #line 432 "/u/nr/web/src/master/spider.web" #line 433 "/u/nr/web/src/master/spider.web" for(i=start_place;i1){ ##50: #line 789 "/u/nr/web/src/master/spider.web" #line 790 "/u/nr/web/src/master/spider.web" tokenname[$2]="SP_gen_token_"tokennumber tokennumbers[$2]=tokennumber tokennumber-- temp=sprintf("strncmp(\"%s\",loc-1,%d)==0",$2,length($2)) tokentest[$2]=temp tokenlength[$2]=length($2) ##:50 #line 773 "/u/nr/web/src/master/spider.web" }else{ temp=sprintf("'%s'",$2) tokenname[$2]=temp tokenlength[$2]=1 } ##:49 #line 680 "/u/nr/web/src/master/spider.web" if(tokens[$2]!=""){ print"Warning: token",$2,"defined twice" } tokens[$2]=1 ##51: #line 800 "/u/nr/web/src/master/spider.web" #line 801 "/u/nr/web/src/master/spider.web" ##36: #line 516 "/u/nr/web/src/master/spider.web" #line 517 "/u/nr/web/src/master/spider.web" this_translation=default_translation this_mathness=default_mathness this_name="" this_category="" this_tangleto="" ##:36 #line 802 "/u/nr/web/src/master/spider.web" this_name=tokenname[$2] start_place=3 ##29: #line 432 "/u/nr/web/src/master/spider.web" #line 433 "/u/nr/web/src/master/spider.web" for(i=start_place;i1&&tokennumbers[$2]==""){ print"This can't happen: token",$2,"is long",\ "but has no number" exitcode=-1 } ##:53 #line 686 "/u/nr/web/src/master/spider.web" ##52: #line 817 "/u/nr/web/src/master/spider.web" #line 818 "/u/nr/web/src/master/spider.web" temp=tokenlength[$2] if(temp>maxtokenlength){ maxtokenlength=temp } ##:52 #line 687 "/u/nr/web/src/master/spider.web" ##:44 #line 584 "/u/nr/web/src/master/spider.web" } categories[this_category]=1 next } ##:39 ##75: #line 1179 "/u/nr/web/src/master/spider.web" #line 1180 "/u/nr/web/src/master/spider.web" /^ilk /{ print"Ilk",$2>logfile ##36: #line 516 "/u/nr/web/src/master/spider.web" #line 517 "/u/nr/web/src/master/spider.web" this_translation=default_translation this_mathness=default_mathness this_name="" this_category="" this_tangleto="" ##:36 #line 1183 "/u/nr/web/src/master/spider.web" ##76: #line 1202 "/u/nr/web/src/master/spider.web" #line 1203 "/u/nr/web/src/master/spider.web" if($2~/^[a-zA-Z_]+_like$/&&$0!~/ category /){ this_category=substr($2,1,length($2)-5) categories[this_category]=1 } ##:76 #line 1184 "/u/nr/web/src/master/spider.web" this_name="" start_place=3 ##29: #line 432 "/u/nr/web/src/master/spider.web" #line 433 "/u/nr/web/src/master/spider.web" for(i=start_place;ilogfile if($0!~/ ilk /){ ##78: #line 1242 "/u/nr/web/src/master/spider.web" #line 1243 "/u/nr/web/src/master/spider.web" temp=$2"_like" reservedilk[$2]=temp if(ilk_translation[temp]==""){ ilk_translation[temp]=default_translation } has_reserved[temp]=1 if(ilk_mathness[temp]==""){ ilk_mathness[temp]=default_mathness } if(ilk_category[temp]==""){ ilk_category[temp]=$2 categories[$2]=1 } ilk_is_made_up[temp]=1 ##:78 #line 1220 "/u/nr/web/src/master/spider.web" } for(i=3;i<=NF;){ if($i=="ilk"){ i++ reservedilk[$2]=$i has_reserved[$i]=1 i++ }else{ print"Error: bad reserved word attribute:",$i,\ "on line",NR ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 1231 "/u/nr/web/src/master/spider.web" } } ##5: #line 89 "/u/nr/web/src/master/spider.web" #line 90 "/u/nr/web/src/master/spider.web" if(i<=NF){ print"Error: leftover fields",$i,"... on line",NR ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 92 "/u/nr/web/src/master/spider.web" } ##:5 #line 1234 "/u/nr/web/src/master/spider.web" next } ##:77 ##129: #line 2067 "/u/nr/web/src/master/spider.web" #line 2068 "/u/nr/web/src/master/spider.web" /^language /{ language=$2 extension=language for(i=3;imacrofile ##:131 #line 2087 "/u/nr/web/src/master/spider.web" next } ##:129 ##132: #line 2128 "/u/nr/web/src/master/spider.web" #line 2129 "/u/nr/web/src/master/spider.web" /^macros begin$/,/^macros end$/{ if(begunmacs==0){ begunmacs=1 next } if($0~/^macros end$/){ begunmacs=0 next } if(macrofile==""){ if(complained==0){ print"Error: you must give \"language\"",\ "before \"macros\"" complained=1 ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 2143 "/u/nr/web/src/master/spider.web" } }else{ print $0>macrofile } next } ##:132 ##133: #line 2159 "/u/nr/web/src/master/spider.web" #line 2160 "/u/nr/web/src/master/spider.web" /^module /{ for(i=2;ilogfile i++ }else if($i=="use"){ i++ mod_use_cat=$i categories[$i]=1 print"Module use category set to",$i>logfile i++ }else{ print"Error: unknown module property",$i,\ "on line",NR ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 2177 "/u/nr/web/src/master/spider.web" } } ##5: #line 89 "/u/nr/web/src/master/spider.web" #line 90 "/u/nr/web/src/master/spider.web" if(i<=NF){ print"Error: leftover fields",$i,"... on line",NR ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 92 "/u/nr/web/src/master/spider.web" } ##:5 #line 2180 "/u/nr/web/src/master/spider.web" next } ##:133 ##135: #line 2209 "/u/nr/web/src/master/spider.web" #line 2210 "/u/nr/web/src/master/spider.web" /^at_sign /{ if(NF==2&&length($2)==1){ if($2=="@"){ at_sign="@@" }else{ at_sign=$2 } }else{ print"Error: I can't understand",$0 print" Give me an at sign of length 1" ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 2220 "/u/nr/web/src/master/spider.web" } next } ##:135 ##139: #line 2250 "/u/nr/web/src/master/spider.web" #line 2251 "/u/nr/web/src/master/spider.web" /^comment /{ print $0>logfile for(i=2;i$/){ transstring=$i wherestring="in \"comment begin\" on line "NR ##27: #line 387 "/u/nr/web/src/master/spider.web" #line 388 "/u/nr/web/src/master/spider.web" temp=substr(transstring,2,length(transstring)-2) trcnt=split(temp,trtok,"-") outstring="" for(tridx=1;tridx<=trcnt;tridx++){ alternate=trtok[tridx] ##25: #line 364 "/u/nr/web/src/master/spider.web" #line 365 "/u/nr/web/src/master/spider.web" if(alternate=="space"){ alternate="\" \"" }else if(alternate=="dash"){ alternate="\"-\"" } ##:25 #line 393 "/u/nr/web/src/master/spider.web" if(alternate~/^[0-9]$/){ print"Digit not allowed in restricted translation",wherestring exitcode=-1 }else if(alternate~/^[a-zA-Z_]+$/){ print"Key word not allowed in restricted translation",wherestring exitcode=-1 }else if(alternate~/^\"([^"]*\\\")*[^"]*\"$/){ temp=substr(alternate,2,length(alternate)-2) outstring=outstring temp }else if(alternate~/^\*$/){ print"<*> not allowed in restricted translation",wherestring exitcode=-1 }else{ print"Bogus restricted translation",wherestring exitcode=-1 } } outstring="\""outstring"\"" ##:27 #line 2260 "/u/nr/web/src/master/spider.web" begin_comment_string=outstring i++ }else{ print"Error: \"comment begin\" must have a restricted translation" ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 2265 "/u/nr/web/src/master/spider.web" } }else if($i=="end"){ i++ if($i=="newline"){ comments_end_with_newline=1 end_comment_string="\"\\n\"" }else if($i~/^<.*>$/){ comments_end_with_newline=0 transstring=$i wherestring="in \"comment end\" on line "NR ##27: #line 387 "/u/nr/web/src/master/spider.web" #line 388 "/u/nr/web/src/master/spider.web" temp=substr(transstring,2,length(transstring)-2) trcnt=split(temp,trtok,"-") outstring="" for(tridx=1;tridx<=trcnt;tridx++){ alternate=trtok[tridx] ##25: #line 364 "/u/nr/web/src/master/spider.web" #line 365 "/u/nr/web/src/master/spider.web" if(alternate=="space"){ alternate="\" \"" }else if(alternate=="dash"){ alternate="\"-\"" } ##:25 #line 393 "/u/nr/web/src/master/spider.web" if(alternate~/^[0-9]$/){ print"Digit not allowed in restricted translation",wherestring exitcode=-1 }else if(alternate~/^[a-zA-Z_]+$/){ print"Key word not allowed in restricted translation",wherestring exitcode=-1 }else if(alternate~/^\"([^"]*\\\")*[^"]*\"$/){ temp=substr(alternate,2,length(alternate)-2) outstring=outstring temp }else if(alternate~/^\*$/){ print"<*> not allowed in restricted translation",wherestring exitcode=-1 }else{ print"Bogus restricted translation",wherestring exitcode=-1 } } outstring="\""outstring"\"" ##:27 #line 2278 "/u/nr/web/src/master/spider.web" end_comment_string=outstring }else{ print"Error: \"comment end\" must have a restricted translation" ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 2282 "/u/nr/web/src/master/spider.web" } i++ }else{ print"Error: bad comment attribute:",$i ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 2287 "/u/nr/web/src/master/spider.web" } } ##5: #line 89 "/u/nr/web/src/master/spider.web" #line 90 "/u/nr/web/src/master/spider.web" if(i<=NF){ print"Error: leftover fields",$i,"... on line",NR ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 92 "/u/nr/web/src/master/spider.web" } ##:5 #line 2290 "/u/nr/web/src/master/spider.web" ##145: #line 2372 "/u/nr/web/src/master/spider.web" #line 2373 "/u/nr/web/src/master/spider.web" if(macrofile!=""){ this_string=substr(begin_comment_string,2,length(begin_comment_string)-2) ##147: #line 2406 "/u/nr/web/src/master/spider.web" #line 2407 "/u/nr/web/src/master/spider.web" tex_string="" while(length(this_string)>0){ c=substr(this_string,1,1) this_string=substr(this_string,2) cprime=texof[c] if(cprime==""){ tex_string=tex_string c }else{ tex_string=tex_string cprime } } ##:147 #line 2375 "/u/nr/web/src/master/spider.web" printf"\\def\\commentbegin{%s}\n",tex_string>macrofile if(comments_end_with_newline==0){ this_string=substr(end_comment_string,2,length(end_comment_string)-2) ##147: #line 2406 "/u/nr/web/src/master/spider.web" #line 2407 "/u/nr/web/src/master/spider.web" tex_string="" while(length(this_string)>0){ c=substr(this_string,1,1) this_string=substr(this_string,2) cprime=texof[c] if(cprime==""){ tex_string=tex_string c }else{ tex_string=tex_string cprime } } ##:147 #line 2379 "/u/nr/web/src/master/spider.web" printf"\\def\\commentend{%s}\n",tex_string>macrofile }else{ print"\\def\\commentend{\\relax}">macrofile } }else{ print"Error: I can't write comment info to the macro file---" print" you haven't given me any \"language\" information" ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 2387 "/u/nr/web/src/master/spider.web" } ##:145 #line 2291 "/u/nr/web/src/master/spider.web" next } ##:139 ##148: #line 2424 "/u/nr/web/src/master/spider.web" #line 2425 "/u/nr/web/src/master/spider.web" /^line /{ print $0>logfile for(i=2;i$/){ transstring=$i wherestring="in \"line begin\" on line "NR ##27: #line 387 "/u/nr/web/src/master/spider.web" #line 388 "/u/nr/web/src/master/spider.web" temp=substr(transstring,2,length(transstring)-2) trcnt=split(temp,trtok,"-") outstring="" for(tridx=1;tridx<=trcnt;tridx++){ alternate=trtok[tridx] ##25: #line 364 "/u/nr/web/src/master/spider.web" #line 365 "/u/nr/web/src/master/spider.web" if(alternate=="space"){ alternate="\" \"" }else if(alternate=="dash"){ alternate="\"-\"" } ##:25 #line 393 "/u/nr/web/src/master/spider.web" if(alternate~/^[0-9]$/){ print"Digit not allowed in restricted translation",wherestring exitcode=-1 }else if(alternate~/^[a-zA-Z_]+$/){ print"Key word not allowed in restricted translation",wherestring exitcode=-1 }else if(alternate~/^\"([^"]*\\\")*[^"]*\"$/){ temp=substr(alternate,2,length(alternate)-2) outstring=outstring temp }else if(alternate~/^\*$/){ print"<*> not allowed in restricted translation",wherestring exitcode=-1 }else{ print"Bogus restricted translation",wherestring exitcode=-1 } } outstring="\""outstring"\"" ##:27 #line 2434 "/u/nr/web/src/master/spider.web" sharp_line_open=outstring i++ }else{ print"Error: \"line begin\" must have a restricted translation" ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 2439 "/u/nr/web/src/master/spider.web" } }else if($i=="end"){ i++ if($i~/^<.*>$/){ transstring=$i wherestring="in \"line end\" on line "NR ##27: #line 387 "/u/nr/web/src/master/spider.web" #line 388 "/u/nr/web/src/master/spider.web" temp=substr(transstring,2,length(transstring)-2) trcnt=split(temp,trtok,"-") outstring="" for(tridx=1;tridx<=trcnt;tridx++){ alternate=trtok[tridx] ##25: #line 364 "/u/nr/web/src/master/spider.web" #line 365 "/u/nr/web/src/master/spider.web" if(alternate=="space"){ alternate="\" \"" }else if(alternate=="dash"){ alternate="\"-\"" } ##:25 #line 393 "/u/nr/web/src/master/spider.web" if(alternate~/^[0-9]$/){ print"Digit not allowed in restricted translation",wherestring exitcode=-1 }else if(alternate~/^[a-zA-Z_]+$/){ print"Key word not allowed in restricted translation",wherestring exitcode=-1 }else if(alternate~/^\"([^"]*\\\")*[^"]*\"$/){ temp=substr(alternate,2,length(alternate)-2) outstring=outstring temp }else if(alternate~/^\*$/){ print"<*> not allowed in restricted translation",wherestring exitcode=-1 }else{ print"Bogus restricted translation",wherestring exitcode=-1 } } outstring="\""outstring"\"" ##:27 #line 2448 "/u/nr/web/src/master/spider.web" sharp_line_close=outstring }else{ print"Error: \"line end\" must have a restricted translation" ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 2452 "/u/nr/web/src/master/spider.web" } i++ }else{ print"Error: bad line attribute:",$i,"on line",NR ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 2457 "/u/nr/web/src/master/spider.web" } } ##5: #line 89 "/u/nr/web/src/master/spider.web" #line 90 "/u/nr/web/src/master/spider.web" if(i<=NF){ print"Error: leftover fields",$i,"... on line",NR ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 92 "/u/nr/web/src/master/spider.web" } ##:5 #line 2460 "/u/nr/web/src/master/spider.web" next } ##:148 ##151: #line 2477 "/u/nr/web/src/master/spider.web" #line 2478 "/u/nr/web/src/master/spider.web" /^date /{ mo=month[$3] day=$4 year=$7 time=$5 ##153: #line 2506 "/u/nr/web/src/master/spider.web" #line 2507 "/u/nr/web/src/master/spider.web" hour=substr(time,1,2) if(hour>=12) ampm="PM" else ampm="AM" if(hour==0){ hour=12 }else if(hour>12){ hour=hour-12 } minute=substr(time,4,2) ##:153 #line 2484 "/u/nr/web/src/master/spider.web" date=sprintf("(generated at %d:%s %s on %s %d, %d)",\ hour,minute,ampm,mo,day,year) next } ##:151 #line 60 "/u/nr/web/src/master/spider.web" ##88: #line 1438 "/u/nr/web/src/master/spider.web" #line 1439 "/u/nr/web/src/master/spider.web" /-->/{ ##89: #line 1467 "/u/nr/web/src/master/spider.web" #line 1468 "/u/nr/web/src/master/spider.web" lowpos=0;highpos=0;pos=1 prodnum=prodnum+1 inputline[prodnum]=$0 print"Parsing production",prodnum,$0>logfile ##:89 #line 1440 "/u/nr/web/src/master/spider.web" ##90: #line 1488 "/u/nr/web/src/master/spider.web" #line 1489 "/u/nr/web/src/master/spider.web" trans[pos]="" for(i=1;i<=NF;i++){ if($i~/<.*>/){ ##92: #line 1521 "/u/nr/web/src/master/spider.web" #line 1522 "/u/nr/web/src/master/spider.web" transstring=$i selfstring="" wherestring=sprintf("in production on line %d",NR) append_keyword="app" ##24: #line 334 "/u/nr/web/src/master/spider.web" temp=substr(transstring,2,length(transstring)-2) trcnt=split(temp,trtok,"-") outstring="" for(tridx=1;tridx<=trcnt;tridx++){ alternate=trtok[tridx] ##25: #line 364 "/u/nr/web/src/master/spider.web" #line 365 "/u/nr/web/src/master/spider.web" if(alternate=="space"){ alternate="\" \"" }else if(alternate=="dash"){ alternate="\"-\"" } ##:25 #line 340 "/u/nr/web/src/master/spider.web" if(alternate~/^[0-9]$/){ temp=sprintf("\tapp_str(\"%s\");\n",alternate) outstring=outstring temp }else if(alternate~/^[a-zA-Z_]+$/){ translation_keywords[alternate]=1 temp=sprintf("\t%s(%s);\n",append_keyword,alternate) outstring=outstring temp }else if(alternate~/^\"([^"]*\\\")*[^"]*\"$/){ temp=sprintf("\tapp_str(%s);\n",alternate) outstring=outstring temp }else if(alternate~/^\*$/){ ##26: #line 375 "/u/nr/web/src/master/spider.web" #line 376 "/u/nr/web/src/master/spider.web" if(selfstring==""){ print"Translation \"<*>\" makes no sense",wherestring exitcode=-1 } ##:26 #line 353 "/u/nr/web/src/master/spider.web" outstring=outstring selfstring }else{ print"Bogus translation",wherestring exitcode=-1 } } ##:24 #line 1527 "/u/nr/web/src/master/spider.web" trans[pos]=trans[pos]outstring ##:92 #line 1492 "/u/nr/web/src/master/spider.web" }else if($i~/^!?[a-zA-Z_]+(\*\*?)?$/){ ##93: #line 1539 "/u/nr/web/src/master/spider.web" #line 1540 "/u/nr/web/src/master/spider.web" field[pos]=$i ##96: #line 1602 "/u/nr/web/src/master/spider.web" #line 1603 "/u/nr/web/src/master/spider.web" temp=substr($i,1,1) if(temp=="!"){ negation=1 $i=substr($i,2) }else{ negation=0 } ##:96 #line 1541 "/u/nr/web/src/master/spider.web" ##98: #line 1634 "/u/nr/web/src/master/spider.web" #line 1635 "/u/nr/web/src/master/spider.web" if($i~/^([a-zA-Z_]+|\(([a-zA-Z_]+\|)*[a-zA-Z_]+\))\*\*$/){ temp=sprintf("\tmake_underlined(pp+%d);\n",pos-1) trans[pos]=trans[pos]temp $i=substr($i,1,length($i)-2) }else if($i~/^([a-zA-Z_]+|\(([a-zA-Z_]+\|)*[a-zA-Z_]+\))\*$/){ temp=sprintf("\tmake_underlined(pp+%d);\n",pos-1) trans[pos]=trans[pos]temp $i=substr($i,1,length($i)-1) }else if($i~/\*$/){ print"Error: can't remove stars in production on line",NR ##91: #line 1515 "/u/nr/web/src/master/spider.web" #line 1516 "/u/nr/web/src/master/spider.web" prodnum-- ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 1517 "/u/nr/web/src/master/spider.web" ##:91 #line 1645 "/u/nr/web/src/master/spider.web" } ##:98 #line 1543 "/u/nr/web/src/master/spider.web" cat=$i categories[cat]=1 if(negation==0){ test[pos]=sprintf("(pp+%d)->cat==SP_%s",pos-1,cat) }else{ test[pos]=sprintf("((pp+%d)->cat!=SP_%s && (pp+%d)->cat != 0)",\ pos-1,cat,pos-1) } ##95: #line 1593 "/u/nr/web/src/master/spider.web" #line 1594 "/u/nr/web/src/master/spider.web" if(pos>highestpos[cat]){ highestpos[cat]=pos } ##:95 #line 1552 "/u/nr/web/src/master/spider.web" ##97: #line 1615 "/u/nr/web/src/master/spider.web" #line 1616 "/u/nr/web/src/master/spider.web" pos=pos+1 trans[pos]="" ##:97 #line 1553 "/u/nr/web/src/master/spider.web" ##:93 #line 1494 "/u/nr/web/src/master/spider.web" }else if($i~/^!?\(([a-zA-Z_]+\|)*[a-zA-Z_]+\)(\*\*?)?$/){ ##94: #line 1563 "/u/nr/web/src/master/spider.web" #line 1564 "/u/nr/web/src/master/spider.web" field[pos]=$i ##96: #line 1602 "/u/nr/web/src/master/spider.web" #line 1603 "/u/nr/web/src/master/spider.web" temp=substr($i,1,1) if(temp=="!"){ negation=1 $i=substr($i,2) }else{ negation=0 } ##:96 #line 1565 "/u/nr/web/src/master/spider.web" if(negation==0){ test[pos]="(" }else{ temp=sprintf("(pp+%d)->cat==0",pos-1) test[pos]="!("temp"||" } ##98: #line 1634 "/u/nr/web/src/master/spider.web" #line 1635 "/u/nr/web/src/master/spider.web" if($i~/^([a-zA-Z_]+|\(([a-zA-Z_]+\|)*[a-zA-Z_]+\))\*\*$/){ temp=sprintf("\tmake_underlined(pp+%d);\n",pos-1) trans[pos]=trans[pos]temp $i=substr($i,1,length($i)-2) }else if($i~/^([a-zA-Z_]+|\(([a-zA-Z_]+\|)*[a-zA-Z_]+\))\*$/){ temp=sprintf("\tmake_underlined(pp+%d);\n",pos-1) trans[pos]=trans[pos]temp $i=substr($i,1,length($i)-1) }else if($i~/\*$/){ print"Error: can't remove stars in production on line",NR ##91: #line 1515 "/u/nr/web/src/master/spider.web" #line 1516 "/u/nr/web/src/master/spider.web" prodnum-- ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 1517 "/u/nr/web/src/master/spider.web" ##:91 #line 1645 "/u/nr/web/src/master/spider.web" } ##:98 #line 1573 "/u/nr/web/src/master/spider.web" temp=substr($i,2,length($i)-2) m=split(temp,tok,"|") for(j=1;j<=m;j++){ cat=tok[j] categories[cat]=1 ##95: #line 1593 "/u/nr/web/src/master/spider.web" #line 1594 "/u/nr/web/src/master/spider.web" if(pos>highestpos[cat]){ highestpos[cat]=pos } ##:95 #line 1580 "/u/nr/web/src/master/spider.web" temp=sprintf("(pp+%d)->cat==SP_%s",pos-1,cat) test[pos]=test[pos]temp if(j!=m) test[pos]=test[pos]"||\n" } test[pos]=test[pos]")" ##97: #line 1615 "/u/nr/web/src/master/spider.web" #line 1616 "/u/nr/web/src/master/spider.web" pos=pos+1 trans[pos]="" ##:97 #line 1587 "/u/nr/web/src/master/spider.web" ##:94 #line 1496 "/u/nr/web/src/master/spider.web" }else if($i=="?"){ ##99: #line 1650 "/u/nr/web/src/master/spider.web" #line 1651 "/u/nr/web/src/master/spider.web" field[pos]=$i test[pos]=sprintf("(pp+%d)->cat!=0",pos-1) highwildcard=pos ##97: #line 1615 "/u/nr/web/src/master/spider.web" #line 1616 "/u/nr/web/src/master/spider.web" pos=pos+1 trans[pos]="" ##:97 #line 1654 "/u/nr/web/src/master/spider.web" ##:99 #line 1498 "/u/nr/web/src/master/spider.web" }else if($i=="["){ lowpos=pos }else if($i=="]"){ highpos=pos }else if($i=="-->"){ break }else{ print"Error: bad field is",$i,"in production on line",NR ##91: #line 1515 "/u/nr/web/src/master/spider.web" #line 1516 "/u/nr/web/src/master/spider.web" prodnum-- ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 1517 "/u/nr/web/src/master/spider.web" ##:91 #line 1507 "/u/nr/web/src/master/spider.web" } } i++ ##:90 #line 1441 "/u/nr/web/src/master/spider.web" ##100: #line 1675 "/u/nr/web/src/master/spider.web" #line 1676 "/u/nr/web/src/master/spider.web" arrowpos=pos if(lowpos==0&&highpos==0){ lowpos=1 highpos=arrowpos }else if(lowpos==0||highpos==0){ print"Error: square brackets don't balance in",\ "production on line",NR ##91: #line 1515 "/u/nr/web/src/master/spider.web" #line 1516 "/u/nr/web/src/master/spider.web" prodnum-- ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 1517 "/u/nr/web/src/master/spider.web" ##:91 #line 1684 "/u/nr/web/src/master/spider.web" } ##:100 #line 1442 "/u/nr/web/src/master/spider.web" ##101: #line 1689 "/u/nr/web/src/master/spider.web" #line 1690 "/u/nr/web/src/master/spider.web" if(arrowpos-1>highestposoverall){ highestposoverall=arrowpos-1 } ##:101 #line 1443 "/u/nr/web/src/master/spider.web" ##102: #line 1704 "/u/nr/web/src/master/spider.web" #line 1705 "/u/nr/web/src/master/spider.web" for(hup=arrowpos-1;field[hup]=="?";){ hup-- } for(;hup>highestunknownpos;hup--){ temp=field[hup] temp=substr(temp,1,1) if(temp=="?"||temp=="!"){ highestunknownpos=hup break } } ##:102 #line 1444 "/u/nr/web/src/master/spider.web" ##103: #line 1718 "/u/nr/web/src/master/spider.web" #line 1719 "/u/nr/web/src/master/spider.web" for(pos=1;posNF||$i!=field[pos]){ print"Error: token mismatch is: found",$i,\ "sought",field[pos],"on line",NR ##91: #line 1515 "/u/nr/web/src/master/spider.web" #line 1516 "/u/nr/web/src/master/spider.web" prodnum-- ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 1517 "/u/nr/web/src/master/spider.web" ##:91 #line 1733 "/u/nr/web/src/master/spider.web" } ##:105 #line 1720 "/u/nr/web/src/master/spider.web" i++ } ##:103 #line 1445 "/u/nr/web/src/master/spider.web" ##106: #line 1742 "/u/nr/web/src/master/spider.web" #line 1743 "/u/nr/web/src/master/spider.web" if(i>NF){ print"Error: no target category in production on line",NR ##91: #line 1515 "/u/nr/web/src/master/spider.web" #line 1516 "/u/nr/web/src/master/spider.web" prodnum-- ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 1517 "/u/nr/web/src/master/spider.web" ##:91 #line 1746 "/u/nr/web/src/master/spider.web" } if($i~/#[0-9]+/){ $i=substr($i,2) ##117: #line 1863 "/u/nr/web/src/master/spider.web" #line 1864 "/u/nr/web/src/master/spider.web" if((0+$i)<1||(0+$i)>=0+arrowpos){ print"Error: can't take token number",$i,"of",arrowpos-1,\ "tokens","in production on line",NR ##91: #line 1515 "/u/nr/web/src/master/spider.web" #line 1516 "/u/nr/web/src/master/spider.web" prodnum-- ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 1517 "/u/nr/web/src/master/spider.web" ##:91 #line 1867 "/u/nr/web/src/master/spider.web" } ##:117 #line 1750 "/u/nr/web/src/master/spider.web" targetcategory[prodnum]="Unnamed category" temp=sprintf("(pp+%d)->cat",$i-1) unnamed_cat[prodnum]=temp }else if($i~/[a-zA-Z][a-zA-Z_]*/){ targetcategory[prodnum]=$i categories[$i]=1 }else{ print"Error: unrecognizable target token",$i,\ "in production on line",NR ##91: #line 1515 "/u/nr/web/src/master/spider.web" #line 1516 "/u/nr/web/src/master/spider.web" prodnum-- ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 1517 "/u/nr/web/src/master/spider.web" ##:91 #line 1760 "/u/nr/web/src/master/spider.web" } i++ ##:106 #line 1446 "/u/nr/web/src/master/spider.web" ##104: #line 1724 "/u/nr/web/src/master/spider.web" #line 1725 "/u/nr/web/src/master/spider.web" for(pos=highpos;posNF||$i!=field[pos]){ print"Error: token mismatch is: found",$i,\ "sought",field[pos],"on line",NR ##91: #line 1515 "/u/nr/web/src/master/spider.web" #line 1516 "/u/nr/web/src/master/spider.web" prodnum-- ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 1517 "/u/nr/web/src/master/spider.web" ##:91 #line 1733 "/u/nr/web/src/master/spider.web" } ##:105 #line 1726 "/u/nr/web/src/master/spider.web" i++ } ##:104 #line 1447 "/u/nr/web/src/master/spider.web" ##107: #line 1765 "/u/nr/web/src/master/spider.web" #line 1766 "/u/nr/web/src/master/spider.web" if(i<=NF){ print"Error: used only "i-1" of "NF" tokens",\ "in production on line",NR ##91: #line 1515 "/u/nr/web/src/master/spider.web" #line 1516 "/u/nr/web/src/master/spider.web" prodnum-- ##4: #line 79 "/u/nr/web/src/master/spider.web" #line 80 "/u/nr/web/src/master/spider.web" exitcode=-1 next ##:4 #line 1517 "/u/nr/web/src/master/spider.web" ##:91 #line 1769 "/u/nr/web/src/master/spider.web" } ##:107 #line 1448 "/u/nr/web/src/master/spider.web" ##108: #line 1775 "/u/nr/web/src/master/spider.web" #line 1776 "/u/nr/web/src/master/spider.web" prodtest[prodnum]="" for(pos=1;pos1){ prodtest[prodnum]=prodtest[prodnum]" &&\n\t\t" } prodtest[prodnum]=prodtest[prodnum]test[pos] } ##:108 #line 1450 "/u/nr/web/src/master/spider.web" ##109: #line 1785 "/u/nr/web/src/master/spider.web" #line 1786 "/u/nr/web/src/master/spider.web" prodtrans[prodnum]="" for(pos=lowpos;pos %s\n",prodnum,field[lowpos],\ targetcategory[prodnum]>cycles wrotecycles=1 } ##:111 #line 1456 "/u/nr/web/src/master/spider.web" next } ##:88 #line 61 "/u/nr/web/src/master/spider.web" ##7: #line 106 "/u/nr/web/src/master/spider.web" #line 107 "/u/nr/web/src/master/spider.web" { print"Warning: I don't know what to do with this line:" print" ",$0 print"Warning: I don't know what to do with this line:">logfile print" ",$0>logfile } ##:7 #line 62 "/u/nr/web/src/master/spider.web" END{ ##54: #line 843 "/u/nr/web/src/master/spider.web" #line 844 "/u/nr/web/src/master/spider.web" tempfile=scrapfile ##55: #line 850 "/u/nr/web/src/master/spider.web" #line 851 "/u/nr/web/src/master/spider.web" print"@ Here we input tokens of more than one character">tempfile print"@=">tempfile ##56: #line 859 "/u/nr/web/src/master/spider.web" #line 860 "/u/nr/web/src/master/spider.web" for(len=maxtokenlength;len>=2;len--){ printf"if (loc+%d<=limit) {\n",len-1>tempfile ##57: #line 867 "/u/nr/web/src/master/spider.web" #line 868 "/u/nr/web/src/master/spider.web" notfirst=0 for(t in tokentest){ if(tokenlength[t]==len){ printf"\t">tempfile if(notfirst==1){ printf"else ">tempfile } notfirst=1 printf"if (%s) {\n",tokentest[t]>tempfile printf"\t\tloc += %d;\n",len-1>tempfile printf"\t\treturn %s;\n\t\t}\n",tokenname[t]>tempfile } } ##:57 #line 862 "/u/nr/web/src/master/spider.web" printf"\t}\n">tempfile } ##58: #line 883 "/u/nr/web/src/master/spider.web" #line 884 "/u/nr/web/src/master/spider.web" for(t in tokentest){ if(tokenlength[t]==1){ print"This can't happen: token",t,"is of length 1 but",\ "it has a test" exitcode=-1 } } ##:58 #line 865 "/u/nr/web/src/master/spider.web" ##:56 #line 854 "/u/nr/web/src/master/spider.web" ##:55 #line 845 "/u/nr/web/src/master/spider.web" tempfile=ttokfile ##55: #line 850 "/u/nr/web/src/master/spider.web" #line 851 "/u/nr/web/src/master/spider.web" print"@ Here we input tokens of more than one character">tempfile print"@=">tempfile ##56: #line 859 "/u/nr/web/src/master/spider.web" #line 860 "/u/nr/web/src/master/spider.web" for(len=maxtokenlength;len>=2;len--){ printf"if (loc+%d<=limit) {\n",len-1>tempfile ##57: #line 867 "/u/nr/web/src/master/spider.web" #line 868 "/u/nr/web/src/master/spider.web" notfirst=0 for(t in tokentest){ if(tokenlength[t]==len){ printf"\t">tempfile if(notfirst==1){ printf"else ">tempfile } notfirst=1 printf"if (%s) {\n",tokentest[t]>tempfile printf"\t\tloc += %d;\n",len-1>tempfile printf"\t\treturn %s;\n\t\t}\n",tokenname[t]>tempfile } } ##:57 #line 862 "/u/nr/web/src/master/spider.web" printf"\t}\n">tempfile } ##58: #line 883 "/u/nr/web/src/master/spider.web" #line 884 "/u/nr/web/src/master/spider.web" for(t in tokentest){ if(tokenlength[t]==1){ print"This can't happen: token",t,"is of length 1 but",\ "it has a test" exitcode=-1 } } ##:58 #line 865 "/u/nr/web/src/master/spider.web" ##:56 #line 854 "/u/nr/web/src/master/spider.web" ##:55 #line 847 "/u/nr/web/src/master/spider.web" ##:54 ##59: #line 900 "/u/nr/web/src/master/spider.web" #line 901 "/u/nr/web/src/master/spider.web" print"Writing out predefined scraps">logfile ##60: #line 913 "/u/nr/web/src/master/spider.web" #line 914 "/u/nr/web/src/master/spider.web" if(id_category!=""){ print"@ @=">scrapfile print"p=id_lookup(id_first, id_loc,normal);">scrapfile print"if (p->ilk==normal) {">scrapfile print" small_app(id_flag+p-name_dir);">scrapfile printf" app_scrap(SP_%s,%s_math);",\ id_category,id_mathness>scrapfile appended[id_category]=1 print" /* not a reserved word */">scrapfile print"}">scrapfile print"else if reserved(p) {">scrapfile print"@;">scrapfile print"}">scrapfile print"else {">scrapfile print" err_print(\"! Identifier with unmentioned ilk\");">scrapfile print"@.Identifier with unmentioned ilk@>">scrapfile print"}">scrapfile }else{ print"Error: I don't know what to do with an identifier" print" Please give me a \"token identifier ...\"" exitcode=-1 } ##:60 #line 902 "/u/nr/web/src/master/spider.web" ##62: #line 944 "/u/nr/web/src/master/spider.web" #line 945 "/u/nr/web/src/master/spider.web" print"Warning: TeX strings have the same category as ",\ "numeric constants in this WEAVE." print"Warning: TeX strings have the same category as ",\ "numeric constants in this WEAVE.">logfile if(number_category!=""){ print"@ For some reason strings, constants,",\ " and \TeX\ strings are identified.">scrapfile print"That has to be fixed.">scrapfile print"@=">scrapfile printf"app_scrap(SP_%s,%s_math);\n",number_category,\ number_mathness>scrapfile appended[number_category]=1 }else{ print"Error: I don't know what to do with a numeric constant" print" Please give me a \"token number ...\"" exitcode=-1 } ##:62 #line 903 "/u/nr/web/src/master/spider.web" ##64: #line 973 "/u/nr/web/src/master/spider.web" #line 974 "/u/nr/web/src/master/spider.web" if(newline_category!=""){ print"@ @=">scrapfile transstring=newline_translation selfstring="small_app(next_control);" wherestring="in translation of token newline" append_keyword="small_app" ##24: #line 334 "/u/nr/web/src/master/spider.web" temp=substr(transstring,2,length(transstring)-2) trcnt=split(temp,trtok,"-") outstring="" for(tridx=1;tridx<=trcnt;tridx++){ alternate=trtok[tridx] ##25: #line 364 "/u/nr/web/src/master/spider.web" #line 365 "/u/nr/web/src/master/spider.web" if(alternate=="space"){ alternate="\" \"" }else if(alternate=="dash"){ alternate="\"-\"" } ##:25 #line 340 "/u/nr/web/src/master/spider.web" if(alternate~/^[0-9]$/){ temp=sprintf("\tapp_str(\"%s\");\n",alternate) outstring=outstring temp }else if(alternate~/^[a-zA-Z_]+$/){ translation_keywords[alternate]=1 temp=sprintf("\t%s(%s);\n",append_keyword,alternate) outstring=outstring temp }else if(alternate~/^\"([^"]*\\\")*[^"]*\"$/){ temp=sprintf("\tapp_str(%s);\n",alternate) outstring=outstring temp }else if(alternate~/^\*$/){ ##26: #line 375 "/u/nr/web/src/master/spider.web" #line 376 "/u/nr/web/src/master/spider.web" if(selfstring==""){ print"Translation \"<*>\" makes no sense",wherestring exitcode=-1 } ##:26 #line 353 "/u/nr/web/src/master/spider.web" outstring=outstring selfstring }else{ print"Bogus translation",wherestring exitcode=-1 } } ##:24 #line 981 "/u/nr/web/src/master/spider.web" print outstring>scrapfile printf" app_scrap(SP_%s,%s_math);\n",newline_category,\ newline_mathness>scrapfile appended[newline_category]=1 }else{ print"Error: I don't know what to do with a newline" print" Please give me a \"token newline ...\"" exitcode=-1 } ##:64 #line 904 "/u/nr/web/src/master/spider.web" ##65: #line 993 "/u/nr/web/src/master/spider.web" #line 994 "/u/nr/web/src/master/spider.web" if(pseudo_semi_category!=""){ print"@ @=">scrapfile transstring=pseudo_semi_translation selfstring="small_app(next_control);" wherestring="in translation of token pseudo_semi" append_keyword="small_app" ##24: #line 334 "/u/nr/web/src/master/spider.web" temp=substr(transstring,2,length(transstring)-2) trcnt=split(temp,trtok,"-") outstring="" for(tridx=1;tridx<=trcnt;tridx++){ alternate=trtok[tridx] ##25: #line 364 "/u/nr/web/src/master/spider.web" #line 365 "/u/nr/web/src/master/spider.web" if(alternate=="space"){ alternate="\" \"" }else if(alternate=="dash"){ alternate="\"-\"" } ##:25 #line 340 "/u/nr/web/src/master/spider.web" if(alternate~/^[0-9]$/){ temp=sprintf("\tapp_str(\"%s\");\n",alternate) outstring=outstring temp }else if(alternate~/^[a-zA-Z_]+$/){ translation_keywords[alternate]=1 temp=sprintf("\t%s(%s);\n",append_keyword,alternate) outstring=outstring temp }else if(alternate~/^\"([^"]*\\\")*[^"]*\"$/){ temp=sprintf("\tapp_str(%s);\n",alternate) outstring=outstring temp }else if(alternate~/^\*$/){ ##26: #line 375 "/u/nr/web/src/master/spider.web" #line 376 "/u/nr/web/src/master/spider.web" if(selfstring==""){ print"Translation \"<*>\" makes no sense",wherestring exitcode=-1 } ##:26 #line 353 "/u/nr/web/src/master/spider.web" outstring=outstring selfstring }else{ print"Bogus translation",wherestring exitcode=-1 } } ##:24 #line 1001 "/u/nr/web/src/master/spider.web" print outstring>scrapfile printf" app_scrap(SP_%s,%s_math);\n",pseudo_semi_category,\ pseudo_semi_mathness>scrapfile appended[pseudo_semi_category]=1 }else{ printf"Error: I don't know what to do with a pseudo_semi (%s;)",\ substr(at_sign,1,1) print" Please give me a \"token pseudo_semi ...\"" exitcode=-1 } ##:65 #line 905 "/u/nr/web/src/master/spider.web" print"Writing out token scraps">logfile ##66: #line 1014 "/u/nr/web/src/master/spider.web" #line 1015 "/u/nr/web/src/master/spider.web" print"@ @=">scrapfile for(t in tokens){ temp=tokenname[t] printf"case %s:\n",temp>scrapfile transstring=tokentranslation[t] selfstring="small_app(next_control);" wherestring=sprintf("in translation of token %s",t) append_keyword="small_app" ##24: #line 334 "/u/nr/web/src/master/spider.web" temp=substr(transstring,2,length(transstring)-2) trcnt=split(temp,trtok,"-") outstring="" for(tridx=1;tridx<=trcnt;tridx++){ alternate=trtok[tridx] ##25: #line 364 "/u/nr/web/src/master/spider.web" #line 365 "/u/nr/web/src/master/spider.web" if(alternate=="space"){ alternate="\" \"" }else if(alternate=="dash"){ alternate="\"-\"" } ##:25 #line 340 "/u/nr/web/src/master/spider.web" if(alternate~/^[0-9]$/){ temp=sprintf("\tapp_str(\"%s\");\n",alternate) outstring=outstring temp }else if(alternate~/^[a-zA-Z_]+$/){ translation_keywords[alternate]=1 temp=sprintf("\t%s(%s);\n",append_keyword,alternate) outstring=outstring temp }else if(alternate~/^\"([^"]*\\\")*[^"]*\"$/){ temp=sprintf("\tapp_str(%s);\n",alternate) outstring=outstring temp }else if(alternate~/^\*$/){ ##26: #line 375 "/u/nr/web/src/master/spider.web" #line 376 "/u/nr/web/src/master/spider.web" if(selfstring==""){ print"Translation \"<*>\" makes no sense",wherestring exitcode=-1 } ##:26 #line 353 "/u/nr/web/src/master/spider.web" outstring=outstring selfstring }else{ print"Bogus translation",wherestring exitcode=-1 } } ##:24 #line 1024 "/u/nr/web/src/master/spider.web" print outstring>scrapfile printf"\tapp_scrap(SP_%s,%s_math);\n",tokencategory[t],\ tokenmathness[t]>scrapfile temp=tokencategory[t] appended[temp]=1 print"\tbreak;">scrapfile } ##:66 #line 907 "/u/nr/web/src/master/spider.web" ##:59 ##67: #line 1043 "/u/nr/web/src/master/spider.web" #line 1044 "/u/nr/web/src/master/spider.web" print"@ @=">ttokfile for(t in tokennumbers){ ##69: #line 1095 "/u/nr/web/src/master/spider.web" #line 1096 "/u/nr/web/src/master/spider.web" if(t=="string"||t=="constant"||t=="identifier") continue ##:69 #line 1046 "/u/nr/web/src/master/spider.web" printf"case %s:\n",tokenname[t]>ttokfile this_tangleto=tokentangleto[t] if(this_tangleto==""){ printf"\tC_printf(\"%%s\",\"%s\");\n",t>ttokfile }else{ printf"\tif (out_state==verbatim) {\n">ttokfile printf"\t\tC_printf(\"%%s\",\"%s\");\n",t>ttokfile printf"\t} else {\n">ttokfile ##70: #line 1102 "/u/nr/web/src/master/spider.web" #line 1103 "/u/nr/web/src/master/spider.web" oldwherestring=wherestring wherestring="for tangleto "wherestring transstring=this_tangleto ##27: #line 387 "/u/nr/web/src/master/spider.web" #line 388 "/u/nr/web/src/master/spider.web" temp=substr(transstring,2,length(transstring)-2) trcnt=split(temp,trtok,"-") outstring="" for(tridx=1;tridx<=trcnt;tridx++){ alternate=trtok[tridx] ##25: #line 364 "/u/nr/web/src/master/spider.web" #line 365 "/u/nr/web/src/master/spider.web" if(alternate=="space"){ alternate="\" \"" }else if(alternate=="dash"){ alternate="\"-\"" } ##:25 #line 393 "/u/nr/web/src/master/spider.web" if(alternate~/^[0-9]$/){ print"Digit not allowed in restricted translation",wherestring exitcode=-1 }else if(alternate~/^[a-zA-Z_]+$/){ print"Key word not allowed in restricted translation",wherestring exitcode=-1 }else if(alternate~/^\"([^"]*\\\")*[^"]*\"$/){ temp=substr(alternate,2,length(alternate)-2) outstring=outstring temp }else if(alternate~/^\*$/){ print"<*> not allowed in restricted translation",wherestring exitcode=-1 }else{ print"Bogus restricted translation",wherestring exitcode=-1 } } outstring="\""outstring"\"" ##:27 #line 1108 "/u/nr/web/src/master/spider.web" printf"\tC_printf(\"%%s\",%s);\n",outstring>ttokfile wherestring=oldwherestring ##:70 #line 1055 "/u/nr/web/src/master/spider.web" printf"\t}\n">ttokfile } print"\tif (out_state!=verbatim) out_state=misc;">ttokfile print"break;">ttokfile } ##:67 ##68: #line 1064 "/u/nr/web/src/master/spider.web" #line 1065 "/u/nr/web/src/master/spider.web" print"@ @=">ttokfile for(t in tokentangleto){ ##69: #line 1095 "/u/nr/web/src/master/spider.web" #line 1096 "/u/nr/web/src/master/spider.web" if(t=="string"||t=="constant"||t=="identifier") continue ##:69 #line 1067 "/u/nr/web/src/master/spider.web" if(tokennumbers[t]!=""||tokentangleto[t]=="") continue if(t=="@"){ thistangletokname="@@" }else if(t=="\\"||t=="'"){ thistangletokname="\\"t }else{ thistangletokname=t } printf"case '%s':\n",thistangletokname>ttokfile this_tangleto=tokentangleto[t] if(this_tangleto==""){ print"This can't happen -- null tangleto for",t,wherestring exitcode=-1 }else{ printf"\tif (out_state==verbatim) {\n">ttokfile printf"\t\tC_printf(\"%%s\",\"%s\");\n",t>ttokfile printf"\t} else {\n">ttokfile ##70: #line 1102 "/u/nr/web/src/master/spider.web" #line 1103 "/u/nr/web/src/master/spider.web" oldwherestring=wherestring wherestring="for tangleto "wherestring transstring=this_tangleto ##27: #line 387 "/u/nr/web/src/master/spider.web" #line 388 "/u/nr/web/src/master/spider.web" temp=substr(transstring,2,length(transstring)-2) trcnt=split(temp,trtok,"-") outstring="" for(tridx=1;tridx<=trcnt;tridx++){ alternate=trtok[tridx] ##25: #line 364 "/u/nr/web/src/master/spider.web" #line 365 "/u/nr/web/src/master/spider.web" if(alternate=="space"){ alternate="\" \"" }else if(alternate=="dash"){ alternate="\"-\"" } ##:25 #line 393 "/u/nr/web/src/master/spider.web" if(alternate~/^[0-9]$/){ print"Digit not allowed in restricted translation",wherestring exitcode=-1 }else if(alternate~/^[a-zA-Z_]+$/){ print"Key word not allowed in restricted translation",wherestring exitcode=-1 }else if(alternate~/^\"([^"]*\\\")*[^"]*\"$/){ temp=substr(alternate,2,length(alternate)-2) outstring=outstring temp }else if(alternate~/^\*$/){ print"<*> not allowed in restricted translation",wherestring exitcode=-1 }else{ print"Bogus restricted translation",wherestring exitcode=-1 } } outstring="\""outstring"\"" ##:27 #line 1108 "/u/nr/web/src/master/spider.web" printf"\tC_printf(\"%%s\",%s);\n",outstring>ttokfile wherestring=oldwherestring ##:70 #line 1086 "/u/nr/web/src/master/spider.web" printf"\t}\n">ttokfile } print"\tif (out_state!=verbatim) out_state=misc;">ttokfile print"break;">ttokfile } ##:68 ##71: #line 1119 "/u/nr/web/src/master/spider.web" #line 1120 "/u/nr/web/src/master/spider.web" tempfile=scrapfile ##72: #line 1127 "/u/nr/web/src/master/spider.web" #line 1128 "/u/nr/web/src/master/spider.web" print"@ Here are the definitions of the token names">tempfile for(t in tokennumbers){ temp=tokennumbers[t] if(temp==0) continue if(tempfile==ttokfile){ ##69: #line 1095 "/u/nr/web/src/master/spider.web" #line 1096 "/u/nr/web/src/master/spider.web" if(t=="string"||t=="constant"||t=="identifier") continue ##:69 #line 1135 "/u/nr/web/src/master/spider.web" temp=temp+31+3-highesttoken } printf"@d %s = %s\n",tokenname[t],temp>tempfile } ##:72 #line 1121 "/u/nr/web/src/master/spider.web" tempfile=ttokfile ##72: #line 1127 "/u/nr/web/src/master/spider.web" #line 1128 "/u/nr/web/src/master/spider.web" print"@ Here are the definitions of the token names">tempfile for(t in tokennumbers){ temp=tokennumbers[t] if(temp==0) continue if(tempfile==ttokfile){ ##69: #line 1095 "/u/nr/web/src/master/spider.web" #line 1096 "/u/nr/web/src/master/spider.web" if(t=="string"||t=="constant"||t=="identifier") continue ##:69 #line 1135 "/u/nr/web/src/master/spider.web" temp=temp+31+3-highesttoken } printf"@d %s = %s\n",tokenname[t],temp>tempfile } ##:72 #line 1123 "/u/nr/web/src/master/spider.web" ##:71 ##79: #line 1264 "/u/nr/web/src/master/spider.web" #line 1265 "/u/nr/web/src/master/spider.web" print"Writing out reserved words and ilks">logfile ilkno=64 print"@ Here is a list of all the ilks">reserved for(i in ilk_translation){ printf"@d SP_%s = %d\n",i,ilkno>reserved ilkno++ } ##:79 ##80: #line 1275 "/u/nr/web/src/master/spider.web" #line 1276 "/u/nr/web/src/master/spider.web" print" ">reserved print"@ Here are the scraps we get from the reserved words">reserved print"@d the_word = res_flag+p-name_dir">reserved print"@=">reserved print"switch (p->ilk) {">reserved for(t in ilk_translation){ printf"\tcase SP_%s: \n\t\t",t>reserved transstring=ilk_translation[t] selfstring="small_app(the_word);" wherestring=sprintf("in translation of ilk %s",t) append_keyword="small_app" ##24: #line 334 "/u/nr/web/src/master/spider.web" temp=substr(transstring,2,length(transstring)-2) trcnt=split(temp,trtok,"-") outstring="" for(tridx=1;tridx<=trcnt;tridx++){ alternate=trtok[tridx] ##25: #line 364 "/u/nr/web/src/master/spider.web" #line 365 "/u/nr/web/src/master/spider.web" if(alternate=="space"){ alternate="\" \"" }else if(alternate=="dash"){ alternate="\"-\"" } ##:25 #line 340 "/u/nr/web/src/master/spider.web" if(alternate~/^[0-9]$/){ temp=sprintf("\tapp_str(\"%s\");\n",alternate) outstring=outstring temp }else if(alternate~/^[a-zA-Z_]+$/){ translation_keywords[alternate]=1 temp=sprintf("\t%s(%s);\n",append_keyword,alternate) outstring=outstring temp }else if(alternate~/^\"([^"]*\\\")*[^"]*\"$/){ temp=sprintf("\tapp_str(%s);\n",alternate) outstring=outstring temp }else if(alternate~/^\*$/){ ##26: #line 375 "/u/nr/web/src/master/spider.web" #line 376 "/u/nr/web/src/master/spider.web" if(selfstring==""){ print"Translation \"<*>\" makes no sense",wherestring exitcode=-1 } ##:26 #line 353 "/u/nr/web/src/master/spider.web" outstring=outstring selfstring }else{ print"Bogus translation",wherestring exitcode=-1 } } ##:24 #line 1289 "/u/nr/web/src/master/spider.web" if(trcnt>0) has_translation[t]=1 print outstring>reserved printf"\tapp_scrap(SP_%s,%s_math);\n",ilk_category[t],\ ilk_mathness[t]>reserved temp=ilk_category[t] appended[temp]=1 printf"\t\tbreak;\n">reserved } print"}">reserved ##:80 ##81: #line 1305 "/u/nr/web/src/master/spider.web" #line 1306 "/u/nr/web/src/master/spider.web" print"@ @=">reserved for(i in reservedilk){ printf"id_lookup(\"%s\",NULL,SP_%s);\n",i,reservedilk[i]>reserved } ##:81 ##118: #line 1872 "/u/nr/web/src/master/spider.web" #line 1873 "/u/nr/web/src/master/spider.web" print"Writing out category codes">logfile print"@ Here is a list of category codes scraps can have">grammarfile i=1 for(t in categories){ printf"@d SP_%s = %d\n",t,i>grammarfile i++ } print"@c">grammarfile ##:118 ##119: #line 1883 "/u/nr/web/src/master/spider.web" #line 1884 "/u/nr/web/src/master/spider.web" print"#ifdef DEBUG">grammarfile print"#define PRINT_CAT(A,B) case A: printf(B); break">grammarfile print"print_cat(c) /* symbolic printout of a category */">grammarfile print"eight_bits c;">grammarfile print"{">grammarfile print" switch(c) {">grammarfile for(t in categories){ printf"PRINT_CAT(SP_%s,\"%s\");\n",t,t>grammarfile } print" case 0: printf(\"zero\"); break;">grammarfile print" default: printf(\"UNKNOWN\"); break;">grammarfile print" }">grammarfile print"}">grammarfile print"#endif DEBUG">grammarfile print" ">grammarfile ##:119 ##123: #line 1943 "/u/nr/web/src/master/spider.web" #line 1944 "/u/nr/web/src/master/spider.web" print"Writing out grammar">logfile print"@ Here is where we define |highestposoverall| and where we">grammarfile print"check the productions.">grammarfile print"@d highestposoverall =",highestposoverall>grammarfile print"@=">grammarfile for(n=1;n<=prodnum;n++){ if(n%5==0) print"@ @="\ >grammarfile ##126: #line 2007 "/u/nr/web/src/master/spider.web" #line 2008 "/u/nr/web/src/master/spider.web" this_string=inputline[n] tempi=index(this_string,"|") while(tempi!=0){ tempa=substr(this_string,1,tempi-1) tempb=substr(this_string,tempi+1) this_string=tempa"\\vert "tempb tempi=index(this_string,"|") } templ="";tempr=this_string tempi=index(tempr,"_") while(tempi!=0){ tempa=substr(tempr,1,tempi-1) tempr=substr(tempr,tempi+1) templ=templ tempa"\\_" tempi=index(tempr,"_") } this_string=templ tempr templ="";tempr=this_string tempi=index(tempr,"#") while(tempi!=0){ tempa=substr(tempr,1,tempi-1) tempr=substr(tempr,tempi+1) templ=templ tempa"\\#" tempi=index(tempr,"#") } this_string=templ tempr ##:126 #line 1953 "/u/nr/web/src/master/spider.web" ##127: #line 2037 "/u/nr/web/src/master/spider.web" #line 2038 "/u/nr/web/src/master/spider.web" toolong=this_string;this_string="" while(length(toolong)>60){ idx=59 idchar=substr(toolong,idx,1) while(idx>1&&idchar!=" "){ idx-- idchar=substr(toolong,idx,1) } if(idx==1) idx=59 temp=substr(toolong,1,idx-1) toolong=substr(toolong,idx+1) this_string=this_string temp"\n" } this_string=this_string toolong ##:127 #line 1954 "/u/nr/web/src/master/spider.web" printf"if (%s) {\n\t/* %d: {\\tt %s} */\n%s",\ prodtest[n],n,this_string,prodtrans[n]>grammarfile ##124: #line 1966 "/u/nr/web/src/master/spider.web" #line 1967 "/u/nr/web/src/master/spider.web" ttk=targetcategory[n] if(ttk=="Unnamed category"){ printf"\treduce(pp+%d,%d,%s,%d,%d);\n",ppstart[n],\ tokensreduced[n],unnamed_cat[n],\ 1-highestposoverall,n>grammarfile }else{ appended[ttk]=1 reduction=highestpos[ttk] if(reductiongrammarfile } ##:124 #line 1958 "/u/nr/web/src/master/spider.web" print"\tgoto end_prods;">grammarfile printf"} ">grammarfile } printf"\n">grammarfile print"end_prods:">grammarfile ##:123 ##130: #line 2091 "/u/nr/web/src/master/spider.web" #line 2092 "/u/nr/web/src/master/spider.web" if(language!=""){ print"@ Here is the language-dependent stuff">tlang if(version!="") version=", Version "version printf"@d banner = \"This is %s TANGLE%s %s\\n\"\n",language,\ version,date>tlang printf"@=char C_file_extension[]=\"%s\";\n",extension \ >tlang print"@ Here is the language-dependent stuff">wlang if(version!="") version=", Version "version printf"@d banner = \"This is %s WEAVE%s %s\\n\"\n",language,\ version,date>wlang print"@="\ >wlang printf"*out_ptr='x'; tex_printf(\"\\\\input %sweb.te\");\n",\ extension>wlang printf"@ @=char C_file_extension[]=\"%s\";\n",extension \ >wlang }else{ print"Error: you haven't given me any \"language\" information" exitcode=-1 } ##:130 ##134: #line 2185 "/u/nr/web/src/master/spider.web" #line 2186 "/u/nr/web/src/master/spider.web" if(mod_def_cat!=""){ print"@ @=">scrapfile printf"app_scrap(SP_%s,no_math);\n",mod_def_cat>scrapfile appended[mod_def_cat]=1 }else{ print"Error: I don't know what to do with a module definition" print" Give me a \"module definition ...\"" exitcode=-1 } if(mod_use_cat!=""){ print"@ @=">scrapfile printf"app_scrap(SP_%s,maybe_math);\n",mod_use_cat>scrapfile appended[mod_use_cat]=1 }else{ print"Error: I don't know what to do with a module use" print" Give me a \"module use ...\"" exitcode=-1 } ##:134 ##136: #line 2226 "/u/nr/web/src/master/spider.web" #line 2227 "/u/nr/web/src/master/spider.web" tempfile=grammarfile ##137: #line 2233 "/u/nr/web/src/master/spider.web" #line 2234 "/u/nr/web/src/master/spider.web" print"@ Here is the |at_sign| for the new web">tempfile printf"@d at_sign = @`%s'\n",at_sign>tempfile print" ">tempfile print"@ Here is |the_at_sign| left for common">tempfile print"@=char the_at_sign = at_sign;">tempfile print" ">tempfile ##:137 #line 2228 "/u/nr/web/src/master/spider.web" tempfile=ttokfile ##137: #line 2233 "/u/nr/web/src/master/spider.web" #line 2234 "/u/nr/web/src/master/spider.web" print"@ Here is the |at_sign| for the new web">tempfile printf"@d at_sign = @`%s'\n",at_sign>tempfile print" ">tempfile print"@ Here is |the_at_sign| left for common">tempfile print"@=char the_at_sign = at_sign;">tempfile print" ">tempfile ##:137 #line 2230 "/u/nr/web/src/master/spider.web" ##:136 ##140: #line 2300 "/u/nr/web/src/master/spider.web" #line 2301 "/u/nr/web/src/master/spider.web" print"@ Here we recognize the comment start seqence">ttokfile print"@=">ttokfile printf"{int len; len=strlen(%s);\n",begin_comment_string>ttokfile printf"if (loc+len<=limit && !strncmp(loc,%s,len)) {\n",\ begin_comment_string>ttokfile print"\tloc += len; /* a new thing */">ttokfile print"\tskip_comment(); /* scan to end of comment or newline */">ttokfile print"\tif (comment_continues || comments_end_with_newline)">ttokfile print"\t\treturn('\\n');">ttokfile print"\telse continue;\n}\n}">ttokfile ##:140 ##141: #line 2314 "/u/nr/web/src/master/spider.web" #line 2315 "/u/nr/web/src/master/spider.web" print"@ @="\ >scrapfile printf"{int len; len=strlen(%s);\n",begin_comment_string>scrapfile printf"if (loc+len-1<=limit && !strncmp(loc-1,%s,len)) {\n",\ begin_comment_string>scrapfile print"\tloc += len-1;">scrapfile print"\t return (begin_comment); /* scan to end of comment or newline */">scrapfile print"}\n}">scrapfile ##:141 ##142: #line 2328 "/u/nr/web/src/master/spider.web" #line 2329 "/u/nr/web/src/master/spider.web" print"@ Here we deal with recognizing the end of comments">ttokfile printf"@d comments_end_with_newline = %d\n",comments_end_with_newline>ttokfile print"@=">ttokfile if(comments_end_with_newline!=1){ printf"{int len; len=strlen(%s);\n",end_comment_string>ttokfile printf"if (loc+len-1<=limit && !strncmp(loc-1,%s,len)) {\n",\ end_comment_string>ttokfile print"loc += len-1; return(comment_continues=0); }}">ttokfile }else{ print"/* This code will never be executed */ ">ttokfile } ##:142 ##143: #line 2344 "/u/nr/web/src/master/spider.web" #line 2345 "/u/nr/web/src/master/spider.web" printf"@ Here we recognize end of comments">scrapfile printf"@d comments_end_with_newline = %d\n",comments_end_with_newline>scrapfile print"@=">scrapfile printf"{int len; len=strlen(%s);\n",end_comment_string>scrapfile printf"if (loc+len-1<=limit && !strncmp(loc-1,%s,len)) {\n",\ end_comment_string>scrapfile print" loc++; if(bal==1) {if (phase==2) app_tok('}'); return(0);}">scrapfile print" else {">scrapfile print" err_print(\"! Braces don't balance in comment\");">scrapfile print"@.Braces don't balance in comment@>">scrapfile print" @;">scrapfile print" }">scrapfile print"}">scrapfile print"}">scrapfile ##:143 ##144: #line 2363 "/u/nr/web/src/master/spider.web" #line 2364 "/u/nr/web/src/master/spider.web" print"@ Important tokens:">ttokfile printf"@d begin_comment_string = %s\n",begin_comment_string>ttokfile printf"@d end_comment_string = %s\n",end_comment_string>ttokfile ##:144 ##149: #line 2465 "/u/nr/web/src/master/spider.web" #line 2466 "/u/nr/web/src/master/spider.web" print"@ Important tokens:">ttokfile printf"@d sharp_line_open = %s\n",sharp_line_open>ttokfile printf"@d sharp_line_close = %s\n",sharp_line_close>ttokfile ##:149 #line 65 "/u/nr/web/src/master/spider.web" print"Writing out lists">logfile ##21: #line 302 "/u/nr/web/src/master/spider.web" #line 303 "/u/nr/web/src/master/spider.web" for(t in translation_keywords){ print t>translationfile } ##:21 ##73: #line 1145 "/u/nr/web/src/master/spider.web" #line 1146 "/u/nr/web/src/master/spider.web" for(t in tokenname){ temp=tokenname[t] if(substr(temp,1,1)!="'"){ ##74: #line 1154 "/u/nr/web/src/master/spider.web" #line 1155 "/u/nr/web/src/master/spider.web" tempa=substr(temp,1,3) if(tempa=="SP_"){ temp=substr(temp,4) } ##:74 #line 1149 "/u/nr/web/src/master/spider.web" print temp>tokennamefile } } ##:73 ##83: #line 1326 "/u/nr/web/src/master/spider.web" #line 1327 "/u/nr/web/src/master/spider.web" for(i in ilk_translation){ print i>ilkfile } ##:83 ##113: #line 1813 "/u/nr/web/src/master/spider.web" #line 1814 "/u/nr/web/src/master/spider.web" if(wrotecycles==0){ print"0: dummy --> nodummy">cycles } ##:113 ##120: #line 1901 "/u/nr/web/src/master/spider.web" #line 1902 "/u/nr/web/src/master/spider.web" for(c in categories){ print c>categoryfile } ##:120 ##122: #line 1925 "/u/nr/web/src/master/spider.web" #line 1926 "/u/nr/web/src/master/spider.web" for(n=1;n<=prodnum;n++){ printf"%2d: %s\n",n,inputline[n]>productions } ##:122 #line 67 "/u/nr/web/src/master/spider.web" ##22: #line 307 "/u/nr/web/src/master/spider.web" #line 308 "/u/nr/web/src/master/spider.web" for(t in translation_keywords){ num_of_translation_keywords++ } printf"You used %d translation keywords.\n",\ num_of_translation_keywords>logfile printf"You used %d translation keywords.\n",num_of_translation_keywords ##:22 ##84: #line 1331 "/u/nr/web/src/master/spider.web" #line 1332 "/u/nr/web/src/master/spider.web" for(i in ilk_translation)number_of_ilks++ for(i in reservedilk)number_of_reserved_words++ printf"You defined %d reserved words of %d ilks.\n",\ number_of_reserved_words,number_of_ilks printf"You defined %d reserved words of %d ilks.\n",\ number_of_reserved_words,number_of_ilks>logfile ##:84 ##121: #line 1906 "/u/nr/web/src/master/spider.web" #line 1907 "/u/nr/web/src/master/spider.web" for(c in categories){ number_of_categories++ } printf"You used %d different categories in %d productions.\n",\ number_of_categories,prodnum printf"You used %d different categories in %d productions.\n",\ number_of_categories,prodnum>logfile printf"The biggest production had %d scraps on its left-hand side.\n",\ highestposoverall printf"The biggest production had %d scraps on its left-hand side.\n",\ highestposoverall>logfile ##:121 #line 68 "/u/nr/web/src/master/spider.web" ##47: #line 730 "/u/nr/web/src/master/spider.web" #line 731 "/u/nr/web/src/master/spider.web" if(tokennumber<127){ print"Error: too many token names for WEAVE --- over by",\ 127-tokennumber exitcode=-1 } ##:47 ##48: #line 739 "/u/nr/web/src/master/spider.web" #line 740 "/u/nr/web/src/master/spider.web" if(highesttoken-tokennumber>31-(11-1)+3){\ print"Error: too many token names for TANGLE --- over by",\ highesttoken-tokennumber-(31-(11-1)+3) exitcode=-1 } ##:48 ##82: #line 1314 "/u/nr/web/src/master/spider.web" #line 1315 "/u/nr/web/src/master/spider.web" for(i in ilk_translation){ if(has_reserved[i]!=1){ print"Error: there is no reserved word of ilk",i exitcode=-1 } if(has_translation[i]!=1){ print"Error: ilk",i,"has no translation" exitcode=-1 } } ##:82 ##116: #line 1854 "/u/nr/web/src/master/spider.web" #line 1855 "/u/nr/web/src/master/spider.web" for(c in categories){ if(reduced[c]!=1){ print"Warning: category",c,"never reduced" } } ##:116 ##125: #line 1988 "/u/nr/web/src/master/spider.web" #line 1989 "/u/nr/web/src/master/spider.web" for(c in categories){ if(appended[c]!=1){ if(c=="ignore_scrap"){ print"Warning: category",c,"never appended" }else{ print"Error: category",c,"never appended" exitcode=-1 } } } ##:125 #line 69 "/u/nr/web/src/master/spider.web" if(exitcode!=0){ exit exitcode } } ##:3