" This file contains the first pass of the MUDDLE compiler. The functions therein take a MUDDLE function and build a more detailed model of it. Each entity in the function is represented by an object of type NODE. The entire function is represented by the functions node and it points to the rest of the nodes for the function." " Nodes vary in complexity and size depending on what they represent. A function or prog/repeat node is contains more information than a node for a quoted object. All nodes have some fields in common to allow general programs to traverse the model." " The model built by PASS1 is used by the analyzer (SYMANA), the variable allocator (VARANA) and the code generator (CODGEN). In some cases the analyzers and generators for certain classes of SUBRs are together in their own files (e.g. CARITH, STRUCT, ISTRUC)." " This the top level program for PASS1. It takes a function as input and returns the data structure representing the model." )> )> #WORD *5563321353* ) FCN12 TEMP47> FNAME4> PHRASE18 + TAG24> - PHRASE23> TAG24 = FCN12> PHRASE23 PHRASE26 = FCN12> - PHRASE32> PHRASE32 PHRASE35 TAG71 TAG70 TAG66 TAG69 TAG68 TAG67 MAP77 TAG91 TAG92 MAPAP80 "Vector of legal strings in decl list." )) >)) >> ,TOT-MODES> 1>> >> '[ACODE-INIT ACODE-INIT1 ACODE-ERR ACODE-NORM]>> "Amount to rest off decl vector after each encounter." " This function (and others on this page) take an arg list and decls and parses them. 1) An RSUBR decl list. 2) A machine readable binding specification. Atoms are also entered into the symbol table." #WORD *17311645252* ANY ANY) ARGL4 DCL5 HATOM6 FCNNOD7> ) TEMP34 TIX14 TEMP53 TEMP66> %<> DCL5> 'FIX TEMP25> AGAIN27 + TAG32> + TAG32> + TAG32> - PHRASE31> TAG32 (TYPE FALSE)> PHRASE31 - PHRASE37> + PHRASE39> PHRASE39 - PHRASE42> PHRASE42 - PHRASE65> TAG67 PHRASE65 PHRASE68 PHRASE37 PHRASE69 EXIT26 + PHRASE72> PHRASE72 AGAIN77 = TEMP53> PHRASE82 - PHRASE91> BOOL93 PHRASE91 = TEMP25> MAP95 > > PHRASE107 MAPAP98 = TEMP25> EXIT74 AGAIN124 PHRASE126 EXIT122 BOOL132 PHRASE142 "RUN-ARGER dispatches to different arg handlers" #WORD *25027635603* > CASE9 CASE10 CASE11 CASE12 CASE13 CASE14 CASE15 CASE16 CASE17 CASE18 CASE19 CASE20 CASE21 CASE22 CASE23 CASE24 #WORD *13154210207* < ANY ATOM>> ATOM) ATM4> AGAIN12 > PHRASE14 PHRASE16 "This function used for normal args when \"BIND\" and \"CALL\" still possible." #WORD *32344334262* ANY) OBJ4> "This function for normal args when \"CALL\" still possible." #WORD *12614350776* ANY) OBJ4> "Handle a normal argument or quoted normal argument." #WORD *24732503627* ANY "OPTIONAL" ANY) OBJ6 DC7> OPT4 OPT5> OPT4 OPT5 - PHRASE10> PHRASE10 - PHRASE13> > + PHRASE17> PHRASE17 PHRASE19 PHRASE13 - PHRASE24> PHRASE26 PHRASE24 - PHRASE32> PHRASE34 PHRASE32 > + PHRASE39> PHRASE39 - PHRASE42> PHRASE42 PHRASE29 + TAG49> > TAG49 "Handle \"BIND\" decl." #WORD *13677320114* - PHRASE7> PHRASE9 PHRASE7 + PHRASE14> PHRASE14 > - PHRASE19> PHRASE19 "Handle \"CALL\" decl." #WORD *11152003471* - PHRASE12> PHRASE14 PHRASE12 + PHRASE17> PHRASE17 > + PHRASE22> PHRASE22 PHRASE23 "Flush on extra atoms after \"CALL\", \"ARGS\" etc." #WORD *1156071750* "Handle \"OPTIONAL\" decl." #WORD *12724315732* - PHRASE8> PHRASE10 PHRASE8 - PHRASE14> > + PHRASE18> PHRASE18 PHRASE19 > PHRASE14 - PHRASE24> - PHRASE27> PHRASE29 PHRASE27 > - PHRASE36> PHRASE36 > PHRASE24 + TAG43> - PHRASE41> TAG43 - PHRASE45> PHRASE47 PHRASE45 + PHRASE52> PHRASE52 PHRASE53 PHRASE41 - PHRASE57> - PHRASE60> PHRASE62 PHRASE60 + PHRASE68> PHRASE68 PHRASE69 PHRASE57 PHRASE74 "Handle \"ARGS\" decl." #WORD *340177530* - PHRASE7> PHRASE9 PHRASE7 + PHRASE13> PHRASE13 > - PHRASE19> PHRASE19 > "Handle \"TUPLE\" decl." #WORD *12450343172* - PHRASE7> PHRASE9 PHRASE7 + PHRASE13> PHRASE13 > - PHRASE19> PHRASE19 > "Handle \"AUX\" decl." #WORD *3000766575* - PHRASE8> PHRASE10 PHRASE8 - PHRASE14> > - PHRASE18> PHRASE18 > PHRASE14 - PHRASE23> + TAG26> - PHRASE23> TAG26 - PHRASE28> PHRASE30 PHRASE28 + PHRASE35> PHRASE35 PHRASE36 PHRASE23 "Handle \"NAME\" and \"ACT\" decl." #WORD *22266347075* - PHRASE7> PHRASE9 PHRASE7 + PHRASE13> PHRASE13 > - PHRASE18> PHRASE18 > "Fixup activation atoms after node generated." #WORD *23701426367* NODE ) N4 L5> ) SYM10:SYMTAB TEMP17> AGAIN11 PHRASE13 - PHRASE15> PHRASE15 #WORD *26463156127* - PHRASE6> > TAG12 > > PHRASE6 #WORD *2200435314* (RESTS) > "Check for quoted arguments." #WORD *6300631300* FORM) OB4> + TAG9> - PHRASE6> TAG9 PHRASE6 "Chech for (arg init) or ('arg init)." #WORD *21263377111* + BOOL9> + BOOL9> - PHRASE6> BOOL9 PHRASE6 "Add a decl to RSUBR decls and update AC call spec." #WORD *10221127105* RESTL9 RESTL10 "Add code to set up a certain kind of argument." #WORD *34156322543* - PHRASE14> (TYPE FALSE)> TAG18 BOOL17 PHRASE14 PHRASE19 > "Find decl associated with a variable, if none, use ANY." #WORD *21213755333* ) ATM6 DC7> OPT4 OPT5> OPT4 OPT5 - TAG8> TAG8 AGAIN17 = TT16> BOOL20 PHRASE19 + PHRASE22> PHRASE22 = TEMP10> TAG28 - TAG29> TAG29 TAG27 PHRASE26 "Add an AUX variable spec to structure." > #WORD *33016410307* AGAIN17 - PHRASE63> - TAG26> - TAG26> TAG27 TAG26 + BOOL21> + BOOL21> BOOL22 TAG32 - PHRASE20> - TAG35> - TAG35> TAG36 TAG35 + TAG39> - PHRASE20> TAG39 = OBJ2-11> BOOL21 > PHRASE20 = TEMP23> MAP45 TAG56 TAG57 MAPAP48 PHRASE42 PHRASE58 - PHRASE63> + PHRASE63> + PHRASE63> - PHRASE63> PHRASE63 PHRASE66 > "Main dispatch function during pass1." #WORD *24570470634* PARENT5> - BOOL7> - BOOL7> BOOL7 "Build a node for <> or #FALSE ()." #WORD *20431306702* > PTHIS-OBJECT ,FALSE-QT>)> "Build a node for ()." #WORD *7711342443* )> "Build a node for a LIST, VECTOR or UVECTOR." #WORD *16043463236* > MAP13 TAG26 TAG27 MAPAP16 )> "Build a node for unknown things." #WORD *15233363660* "Further analyze a FORM and build appropriate node." #WORD *27242350624* ) OBJ4> - BOOL15> + BOOL19> - BOOL15> BOOL19 - BOOL15> BOOL15 EXIT6 )> "Build a SEGMENT node." #WORD *31057654523* > > = STACK> )> "Analyze a form or the form " #WORD *35676301112* + PHRASE8> + PHRASE8> PHRASE8 + PHRASE16> + TAG22> - PHRASE21> TAG22 PHRASE21 TAG26 - TAG27> TAG27 TAG25 TAG37 TAG36 TAG31 TAG34 TAG33 PHRASE23 PHRASE38 PHRASE16 )> "Expand MACRO and process result." #WORD *16333225151* EXIT10 - PHRASE21> TAG25 TAG22 PHRASE21 )> #WORD *17241071460* TAG15 TAG13 PHRASE8 + PHRASE19> + PHRASE19> + PHRASE19> TAG25 TAG23 TEMP14 = TEMP10> = STACK> PHRASE19 "Build a node for a form whose 1st element is a form (could be NTH)." #WORD *13657631562* > = TEMP21> MAP16 TAG29 TAG30 MAPAP19 PHRASE8 )> "Build a node for strange forms." #WORD *37543221101* > "For objects that require EVAL, make sure all atoms used are special." #WORD *4543022214* + TAG12> - PHRASE19> TAG12 = OB8> + BOOL13> BOOL14 - PHRASE19> BOOL13 - PHRASE19> PHRASE19 TAG25 > TAG24 (TYPE FALSE)> MAP31 MAP30 "Build a MSUBR call node." #WORD *25171440235* > - PHRASE12> PHRASE12 PHRASE14 = TEMP25> MAP16 TAG29 TAG30 MAPAP19 #WORD *76207176* > = STACK> #WORD *7076207177* > = STACK> )> #WORD *27240733145* PHRASE9 > PHRASE17 PHRASE19 PHRASE21 PHRASE22 PHRASE27 PHRASE29 )> "PROG/REPEAT node." #WORD *36177460175* ANY) OBJ4 AP5> ) TEMP3:LBIND TEMP13 ARGL10:LIST TT7:NODE> (TYPE FALSE)> TAG18 PHRASE17 = OBJ4> PHRASE24 + TAG28> - PHRASE27> TAG28 PHRASE27 - PHRASE30> PHRASE30 PHRASE34 - PHRASE45> PHRASE45 PHRASE47 MAP50 TAG62 TAG63 MAPAP53 )> "Unwind compiler." #WORD *7746301725* > TAG15 PHRASE12 > )> "Build a node for a COND." #WORD *5730246115* ANY) OBJ4 AP5> > = TEMP25> MAP16 > > - PHRASE33> MAP37 TAG50 TAG51 MAPAP40 PHRASE33 PHRASE52 TAG54 TAG55 MAPAP19 )> "Build a node for '<-object>-." #WORD *25276330101* FORM ANY) OBJ4 AP5> > = TEMP8> > TAG14 - PHRASE17> PHRASE17 PHRASE18 )> "Build a node for a call to an RSUBR." #WORD *5643055662* > + TAG15> - PHRASE13> TAG15 PHRASE13 PHRASE24 )> #WORD *22536232165* ]> LIST) DCL4> ) (TUPF6 %<>) TEMP9 TEMP10 TEMP11 TEMP12 TEMP13 TEMP28 TEMP29 TEMP30 TEMP31> - PHRASE8> TAG14 PHRASE8 MAP16 - TAG26> TAG32 TAG26 - PHRASE24> TAG34 PHRASE24 - TAG38> TAG40 TAG38 - PHRASE36> TAG42 BOOL37 PHRASE36 - PHRASE44> TAG46 PHRASE44 PHRASE49 PHRASE50 PHRASE51 TAG52 TAG53 MAP17 MAPAP19 "Predicate: any segments in this object?" #WORD *7130071033* > ) OB4> AGAIN8 > PHRASE10 - PHRASE12> PHRASE12 = OB4> "Analyze a call to an MSUBR with decls checking number of args and types wherever possible." #WORD *24214155136* ) NAME4 OBJ5 RDCL6> ) (SGP10:LIST (1)) (IX12 0) (ARG-NUMBER15:FIX 0) OB19:LIST (ST20 %<>) (ODC21 "FOO") DC13 TEMP42 TEMP52 TEMP53 SGN11 TT132:NODE> NAME4> %<> OBJ5> %<> RDCL6> > 'FIX TEMP23> = OB19> AGAIN30 = TEMP23> PHRASE37 - PHRASE48> TAG54 PHRASE50 - PHRASE56> PHRASE56 PHRASE48 BOOL79 PHRASE78 + PHRASE89> (TYPE FALSE)> 2 = TEMP42> PHRASE93 PHRASE89 - PHRASE101> PHRASE110 PHRASE108 MAP123 > 2 = STACK> - PHRASE161> PHRASE144 - PHRASE155> PHRASE155 - PHRASE161> PHRASE161 TAG162 TAG163 MAPAP126 PHRASE119 = SGP10> (TYPE FALSE)> PHRASE101 (TYPE FALSE)> PHRASE32 PHRASE175 + PHRASE178> + PHRASE182> PHRASE182 PHRASE184 PHRASE178 MAP189 - PHRASE187> MAPAP192 PHRASE187 EXIT28 #WORD *772350765* "Flush one possible decl away." #WORD *2037740012* + PHRASE8> PHRASE8 "Handle Normal arg when \"VALUE\" still possible." #WORD *23076477562* "Handle Normal arg when \"CALL\" still possible." #WORD *22417044032* "Handle normal arg." #WORD *31036001645* - PHRASE8> PHRASE8 - PHRASE19> PHRASE19 "Handle \"QUOTE\" arg." #WORD *13427741371* - PHRASE8> PHRASE8 "Handle \"CALL\" decl." #WORD *7274472467* - PHRASE8> PHRASE8 "Handle \"ARGS\" decl." #WORD *414200360* - PHRASE8> PHRASE8 "Handle \"TUPLE\" decl." #WORD *21271652253* - PHRASE8> PHRASE8 - PHRASE19> PHRASE19 "Handle stuff with segments in arguments." #WORD *20070237142* > - PHRASE7> PHRASE7 #WORD *24626220634* > 2 = STACK> + TAG14> > TAG14 "Handle \"VALUE\" chop decl and do the rest." #WORD *5404575626* ANY ANY ANY) F4 S1-5 S2-6> - TAG19> TAG19 (TYPE FALSE)> TAG20 = TEMP8> #WORD *3241576356* )> (RDOIT SDOIT) VECTOR> "Create a node for a call to a function." #WORD *4615434740* ANY) OB4 AP5> - PHRASE9> PHRASE12 + PHRASE17> PHRASE17 + PHRASE20> PHRASE20 PHRASE9 + TAG28> > TAG28 2 = STACK (TYPE STRING)> "Call compiler recursively to compile anonymous function." #WORD *25552100712* ) TEMP16> + TAG11> TAG11 TAG12 RESTL22 RESTL23 "#FUNCTION (....) compiler -- call ANONF." #WORD *15072461456* 2 = STACK (TYPE STRING)> )> " compiler -- call ANONF." #WORD *11444351321* ANY) OB4 AP5> 2 = STACK (TYPE STRING)> = TEMP9> = STACK> )> "Handle RSUBR that is really a function." #WORD *30512375273* > "Handle an RSUBR that is already an RSUBR." #WORD *24766001440* ANY ANY) BODY4 NAME5 OBJ6> > #WORD *25445413011* > #WORD *34272441472* #WORD *4312676470* #WORD *1752667550* #WORD *26033567650* #WORD *31736622002* #WORD *35602623432* )> )> #WORD *4274011335* ANY ANY ANY) OBJ4 AP5 NAME6 TYP7> PHRASE18 PHRASE24 PHRASE28 PHRASE33 PHRASE41 + PHRASE43> PHRASE43 "READ, READCHR, READSTRING, NEXTCHR, READB, GET, GETL, GETPROP, GETPL" >> > )> >> >>)> >> >> >> >> #WORD *33340650762* ANY ANY FIX ANY) OBJ4 AP5 NAME6 ARGN7 TYP8> BOOL15 PHRASE14 = TEMP35> MAP25 PHRASE42 > PHRASE40 TAG46 TAG47 MAPAP28 >> '>> #WORD *3573703776* BOOL15 BOOL14 PHRASE13 PHRASE28 PHRASE32 PHRASE29 #WORD *3416461150* FIX> ANY ANY) GIV4 REQ5 NAME6 OBJ7> - PHRASE11> PHRASE11 PHRASE14 PHRASE16 " " #WORD *23605163763* ANY) OB4 AP5> ) (NN18 0) TT7:NODE FINALF12:NODE TAPL13 TEM19 TEMP40 L1-76:LIST SYM77:SYMTAB> = OBJ9> PHRASE28 > + BOOL37> - PHRASE36> = APL14> - PHRASE36> + PHRASE36> + PHRASE36> BOOL37 = APL14> PHRASE42 + TAG46> - PHRASE45> TAG46 PHRASE45 + PHRASE48> BOOL49 PHRASE48 - PHRASE52> PHRASE52 PHRASE55 - BOOL64> BOOL64 > > + PHRASE70> AGAIN78 BOOL79 + PHRASE86> PHRASE86 PHRASE89 PHRASE92 PHRASE93 EXIT72 = STACK> TAG95 TAG94 PHRASE70 MAP98 TAG108 TAG109 MAPAP101 PHRASE36 - BOOL112> BOOL112 - BOOL115> = APL14> - BOOL115> + BOOL115> + BOOL115> + BOOL114> BOOL115 - PHRASE110> = TEM19> BOOL114 - BOOL121> + PHRASE110> + PHRASE110> - BOOL121> BOOL121 - PHRASE128> PHRASE128 MAP139 TAG155 TAG156 MAPAP142 TAG157 TAG135 PHRASE133 MAP163 BOOL172 MAPAP166 > > > PHRASE110 PHRASE175 MAP178 TAG188 TAG189 MAPAP181 \ #WORD *25700047234* > > > )> #WORD *26515773652* > > - PHRASE15> > = STACK> 2 = TEMP8> = STACK> PHRASE15 PHRASE12 )> #WORD *5131071525* ANY) OBJ4 AP5> ) TEMP23 P12 TEM13 TEMP86 TEMP40 TEMP121:LIST TT124:NODE> TAG24 = P12> BOOL29 - BOOL32> BOOL32 (TYPE FALSE)> PHRASE33 = TEMP23> MAP35 PHRASE48 - PHRASE50> (TYPE FALSE)> (TYPE FALSE)> PHRASE50 - PHRASE21> + PHRASE55> + PHRASE58> (TYPE FALSE)> PHRASE58 PHRASE55 - PHRASE63> TAG65 (TYPE FALSE)> TAG67 MAP69 - PHRASE79> (TYPE FALSE)> PHRASE79 + PHRASE83> (TYPE FALSE)> PHRASE83 PHRASE87 PHRASE63 (TYPE FALSE)> PHRASE90 MAPAP38 - BOOL95> TAG97 TAG96 BOOL95 BOOL100 (TYPE FALSE)> PHRASE92 > = TEMP121> MAP115 TAG135 TAG134 TAG129 TAG132 TAG131 TAG130 + PHRASE137> > > - PHRASE143> MAP146 TAG152 TAG153 MAP145 PHRASE143 - PHRASE154> = TEMP23> MAP157 TAG163 TAG164 MAP156 PHRASE154 PHRASE165 MAP168 TAG179 TAG180 MAPAP171 (TYPE FALSE)> PHRASE137 PHRASE181 TAG185 TAG186 MAPAP118 PHRASE102 PHRASE21 PHRASE189 #WORD *6504162601* + BOOL9> BOOL9 - BOOL29> BOOL8 = TEM4> + BOOL13> - BOOL29> BOOL13 - BOOL21> - BOOL29> BOOL18 + BOOL19> - BOOL29> BOOL19 + TAG22> - BOOL21> TAG22 - BOOL29> BOOL21 - BOOL24> TAG27 - BOOL24> + BOOL24> + BOOL24> + BOOL24> + BOOL24> + BOOL24> - BOOL29> BOOL24 + TAG30> > TAG30 > TAG32 + TAG33> > TAG33 + TAG36> - TAG35> TAG36 > TAG35 + TAG37> > TAG37 BOOL29 #WORD *25776244411* ATOM) ATM4> + TAG12> + TAG9> - TAG8> TAG9 > TAG8 - TAG11> > TAG11 TAG12 #WORD *22437646733* EXIT11 - PHRASE10> TAG24 TAG21 PHRASE10 > )> #WORD *36345703562* > = TEMP8> - PHRASE23> PHRASE18 > PHRASE23 = TEMP38> MAP29 TAG42 TAG43 MAPAP32 #WORD *4132151002* = PAP10> - PHRASE12> BOOL18 = ITM7> = TEMP21> = OBJ4> PHRASE16 = ITM7> = TEMP22> = STACK> PHRASE12 = ITM7> = OBJ4> PHRASE33 > = TEMP22> MAP38 TAG49 TAG50 MAPAP41 )> #WORD *23350240212* PHRASE8 PHRASE10 = OBJ4> PHRASE14 = OBJ4> PHRASE18 )> #WORD *31041641403* > TAG14 PHRASE13 - MAPAP24> MAP21 + PHRASE32> - MAPAP24> - MAPAP24> PHRASE32 MAPAP24 PHRASE18 = TEMP47> MAP40 TAG51 TAG52 MAPAP43 > )> #WORD *35000523245* ANY) OBJ4 AP5> + PHRASE9> AGAIN18 = OBJ4> > PHRASE22 = STACK> PHRASE20 - BOOL28> + PHRASE27> + PHRASE27> BOOL28 PHRASE27 - PHRASE32> PHRASE32 - TAG36> TAG43 TAG36 TAG46 - TAG48> TAG52 TAG48 - TAG53> TAG57 TAG53 TAG62 TAG60 TAG64 BOOL59 - AGAIN18> TAG68 BOOL35 TAG69 TAG70 PHRASE9 = TEMP39> = STACK> > )> #WORD *1337570064* OPT4 OPT5> OPT4 OPT5 AGAIN11 - BOOL16> + PHRASE15> + PHRASE15> BOOL16 PHRASE15 - PHRASE21> PHRASE21 TAG24 TAG25 PHRASE19 EXIT8 = TEMP26> >> >)>