3 <ENTRY NODE-COMPLAIN NODE-PRINT>
5 <USE "COMPDEC" "NEWSTRUC">
7 <NEW-CHANNEL-TYPE INTCHAN DEFAULT
10 WRITE-BYTE INTCHAN-WRITE-BYTE
11 WRITE-BUFFER INTCHAN-WRITE-BUFFER>
13 <NEWSTRUC INTCHAN VECTOR
14 INTOUT <OR CHANNEL FALSE>
18 <DEFINE NODE-COMPLAIN (N "OPTIONAL" (MAX 80) "AUX" (P .N) TEM)
19 #DECL ((N) NODE (MAX) FIX (P) <OR VECTOR NODE>)
21 <AND <EMPTY? .OPP> <RETURN>>
22 <OR <NODE-PRINT .OPP .N .MAX T> <RETURN>>
23 <OR <TYPE? <SET TEM <PARENT <SET P .OPP>>> NODE>
25 <OR <MEMQ .OPP <KIDS <SET OPP .TEM>>>
27 <NODE-PRINT .P .N .MAX>>
30 "OPTIONAL" (LOSER <>) (MAX 80) (FLAT <>)
31 "AUX" (OUTC .OUTCHAN) NCHS
32 (OUTCHAN <CHANNEL-OPEN INTCHAN ""
36 #DECL ((MAX) FIX (NCHS) ANY
37 (OUTCHAN) <SPECIAL CHANNEL>
38 (LOSER) <SPECIAL <OR FALSE NODE>>)
40 <M-HLEN .OUTCHAN <- <M-HLEN .OUTC> 2>>
42 #DECL ((NACT) <SPECIAL FRAME>)
45 <OR .FLAT <PRINC " ..." .OUTC>>
47 (ELSE <SET NCHS <INTCOUNT <CHANNEL-DATA .OUTCHAN>>>)>
48 <OR .FLAT <CRLF .OUTC>>
52 <DEFINE INTCHAN-OPEN (TYP OPER NM C-OR-F CNT MAX)
53 <CHTYPE [.C-OR-F .CNT .MAX] INTCHAN>>
55 <DEFINE INTCHAN-CLOSE (CHANNEL OPER) T>
57 <DEFINE INTCHAN-WRITE-BYTE (CHAN OPER CHR
58 "AUX" (D <CHANNEL-DATA .CHAN>) (INO <INTOUT .D>))
59 #DECL ((CHAN) CHANNEL)
61 <COND (<G? <SET INO <+ <INTCOUNT .D> 1>> <INTMAX .D>>
65 (<N==? <INTCOUNT .D> <INTMAX .D>>
66 <CHANNEL-OP <INTOUT .D> WRITE-BYTE .CHR>
67 <INTCOUNT .D <+ <INTCOUNT .D> 1>>)>>
69 <DEFINE INTCHAN-WRITE-BUFFER (CHAN OPER STR "OPT" (N <LENGTH .STR>)
70 "AUX" (D <CHANNEL-DATA .CHAN>) (INO <INTOUT .D>))
71 #DECL ((STR) STRING (CHAN) CHANNEL (N) FIX)
73 <INTCOUNT .D <SET INO <MIN <INTMAX .D> <+ <INTCOUNT .D> .N>>>>
74 <COND (<==? .INO <INTMAX .D>> <RETURN T .NACT>)>)
75 (<L=? <SET N <+ .N <INTCOUNT .D>>> <INTMAX .D>>
76 <CHANNEL-OP .INO WRITE-BUFFER .STR <- .N <INTCOUNT .D>>>
78 (<N==? <INTCOUNT .D> <INTMAX .D>>
79 <CHANNEL-OP .INO WRITE-BUFFER .STR <- <INTMAX .D> <INTCOUNT .D>>>
80 <INTCOUNT .D <INTMAX .D>>)>>
82 <DEFINE NPRINT (N "AUX" (COD <NODE-TYPE .N>) TC (FLG <==? .N .LOSER>))
83 #DECL ((N) NODE (COD TC) FIX)
84 <AND .FLG <PRINC " **** ">>
85 <COND (<OR <==? .COD ,FUNCTION-CODE> <==? .COD ,MFCN-CODE>>
87 <PRNARGL <BINDING-STRUCTURE .N> <RESULT-TYPE .N> <>>
91 (<==? .COD ,PROG-CODE>
93 <PRIN1 <NODE-NAME .N>>
95 <PRNARGL <BINDING-STRUCTURE .N> <RESULT-TYPE .N> T>
99 (<==? .COD ,MFIRST-CODE>
100 <PRINC <NTH ,MAP-SPEC-PRINT <NODE-SUBR .N>>>)
101 (<==? .COD ,MPSBR-CODE>
103 <OR <AND <EMPTY? <KIDS .N>> some-subr>
104 <PRIN1 <NODE-NAME <1 <KIDS .N>>>>>)
105 (<==? .COD ,COPY-CODE>
110 '[TUPLE UVECTOR VECTOR LIST]>>>>>
111 <SEQ-PRINT <KIDS .N>>
112 <PRINC <NTH ,EN-CHRS .TC>>)
113 (<OR <==? .COD ,SEG-CODE> <==? .COD ,SEGMENT-CODE>>
115 <COND (<NOT <EMPTY? <KIDS .N>>>
116 <NPRINT <1 <KIDS .N>>>)>)
117 (<==? .COD ,BRANCH-CODE>
120 <COND (<NOT <EMPTY? <CLAUSES .N>>>
122 <SEQ-PRINT <CLAUSES .N>>)>
124 (<==? .COD ,QUOTE-CODE>
125 <AND <TYPE? <NODE-NAME .N> VECTOR UVECTOR LIST FORM>
127 <PRIN1 <NODE-NAME .N>>)
128 (<OR <==? .COD ,SET-CODE> <==? .COD ,FSET-CODE>>
132 <SEQ-PRINT <KIDS .N>>
134 (<OR <MEMQ .COD ,LGV>
135 <AND <==? .COD ,SUBR-CODE>
136 <OR <AND <==? <NODE-SUBR .N> ,LVAL>
137 <SET COD ,FLVAL-CODE>>
138 <AND <==? <NODE-SUBR .N> ,GVAL>
139 <SET COD ,FGVAL-CODE>>>>>
140 <COND (<OR <==? .COD ,LVAL-CODE> <==? .COD ,FLVAL-CODE>>
143 <COND (<TYPE? <NODE-NAME .N> SYMTAB>
144 <PRIN1 <NAME-SYM <NODE-NAME .N>>>)
145 (ELSE <OR <AND <EMPTY? <KIDS .N>> some-atom>
146 <NPRINT <1 <KIDS .N>>>>)>)
147 (<==? <NODE-NAME .N> INTH>
149 <OR <EMPTY? <KIDS .N>> <NPRINT <2 <KIDS .N>>>>
151 <OR <EMPTY? <KIDS .N>> <NPRINT <1 <KIDS .N>>>>
155 <PRINC <NODE-NAME .N>>
157 <SEQ-PRINT <KIDS .N>>
159 <AND .FLG <PRINC " **** ">>>
161 <SETG MAP-SPEC-PRINT [",+" ",-" ",*" ",/" ",LIST"]>
164 <UVECTOR ,LVAL-CODE ,FLVAL-CODE ,GVAL-CODE ,FGVAL-CODE
167 <SETG ST-CHRS ["(" "[" "![" "<TUPLE"]>
169 <SETG EN-CHRS [")" "]" "!]" ">"]>
171 <GDECL (MAP-SPEC-PRINT ST-CHRS EN-CHRS) <VECTOR [REST STRING]>
172 (LGV) <UVECTOR [REST FIX]>>
175 <DEFINE SEQ-PRINT (L) #DECL ((L) <LIST [REST NODE]>)
176 <COND (<NOT <EMPTY? .L>>
178 <COND (<NOT <EMPTY? <SET L <REST .L>>>>
186 <DEFINE PRNARGL (B R "OPTIONAL" (INAUX <>) "AUX" (INOPT <>) (DC ()) (FIRST T))
187 #DECL ((B) <LIST [REST SYMTAB]> (DC) LIST)
190 <FUNCTION (SYM "AUX" (COD <CODE-SYM .SYM>))
191 #DECL ((SYM) SYMTAB (COD) FIX)
192 <OR .FIRST <PRINC " ">>
196 <PRIN1 <NAME-SYM .SYM>>)
203 <PRIN1 <NAME-SYM .SYM>>
205 <NPRINT <INIT-SYM .SYM>>
207 (ELSE <PRIN1 <NAME-SYM .SYM>>)>)
210 <PRIN1 <NAME-SYM .SYM>>)
213 <PRIN1 <NAME-SYM .SYM>>)
217 <PRINC "\"OPTIONAL\" ">)>
220 <AND <==? .COD 6> <PRINC "'">>
221 <PRIN1 <NAME-SYM .SYM>>
223 <NPRINT <INIT-SYM .SYM>>
226 <AND <==? .COD 8> <PRINC "'">>
227 <PRIN1 <NAME-SYM .SYM>>)>)
230 <PRIN1 <NAME-SYM .SYM>>)
233 <PRIN1 <NAME-SYM .SYM>>)
235 <AND <==? .COD 12> <PRINC "'">>
236 <PRIN1 <NAME-SYM .SYM>>)>
237 <COND (<N==? <DECL-SYM .SYM> ANY>
243 <COND (<AND .R <N==? .R ANY>> <SET DC ('(VALUE) .R !.DC)>)>
245 <COND (<NOT <EMPTY? .DC>> <PRINC " "> <PRIN1 <CHTYPE .DC DECL>>)>>