You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix PM to account for named explicit operators, and unnamed explicit defs; redef 128!:9 for SR DIP; support IRS in 9:; use streaming store for large mvc(); make 0. comp array use intolerant code
Copy file name to clipboardExpand all lines: jsrc/af.c
+2-3Lines changed: 2 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -185,8 +185,7 @@ DF1(jtfix){PROLOG(0005);A z;
185
185
fauxblock(fauxself); Aaugself; fauxINT(augself,fauxself,2,0); IAV0(augself)[0]=IAV(self)[0]; IAV0(augself)[1]=(I)namelist; // transfer value to writable block; install empty name array
186
186
RZ(z=fixa(augself,AT(w)&VERB+ADV+CONJ?w:symbrdlock(w))); // name comes from string a
187
187
// Once a node has been fixed, it doesn't need to be looked at ever again. This applies even if the node itself carries a name. To indicate this
188
-
// we set VFIX. We only do so if the node has descendants (or a name). We also turn off VNAMED, which is set in named explicit definitions (I don't
189
-
// understand why). We can do this only if we are sure the entire tree was traversed, i. e. we were not just looking for implicit locatives or inverses.
190
-
if(!(IAV(self)[0]&(FIXALOCSONLY|FIXALOCSONLYLOWEST|FIXASTOPATINV))&&AT(z)&VERB+ADV+CONJ){V*v=FAV(z); if(v->fgh[0]){v->flag|=VFIX+VNAMED; v->flag^=VNAMED;}} // f is clear for anything in the pst
188
+
// we set VFIX. We only do so if the node has descendants (or a name). We can do this only if we are sure the entire tree was traversed, i. e. we were not just looking for implicit locatives or inverses.
189
+
if(!(IAV(self)[0]&(FIXALOCSONLY|FIXALOCSONLYLOWEST|FIXASTOPATINV))&&AT(z)&VERB+ADV+CONJ){V*v=FAV(z); if(v->fgh[0]){v->flag|=VFIX;}} // f is clear for anything in the pst
if(jt->jerr)z=0; Rz; // if we entered debug, the error may have been cleared. If not, clear the result. Return debug result, which is result to use or 0 to indicate jump
212
212
}
213
213
214
-
// parsex: parse an explicit defn line when the debugger is running
214
+
// parsex: parse an explicit defn line when the debugger/pm is running
215
215
/* w - line to be parsed */
216
216
/* lk - 1 iff locked function; _1 to signal noun error at beginning of sentence */
movesentencetosi(jt,queue,m,0); // install sentence-to-be-executed for stop purposes
223
-
if(s=dbstop(c,ci->source)){z=0; jsignal(EVSTOP);}
224
-
else {z=PARSERVALUE(parsea(queue,m)); }
223
+
if(s=dbstop(c,ci->source)){z=0; jsignal(EVSTOP);
224
+
}else{ // cx adds a stack entry for PARSE, needed to get anonymous operators right
225
+
z=PARSERVALUE(parsea(queue,m));
226
+
}
225
227
// If we hit a stop, or if we hit an error outside of try./catch., enter debug mode. But if debug mode is off now, we must have just
226
228
// executed 13!:0]0, and we should continue on outside of debug mode. Error processing filled the current si line with the info from the parse
227
229
if(!z&&jt->uflags.us.cx.cx_c.db){DCt=jt->sitop->dclnk; t->dcj=jt->sitop->dcj=jt->jerr; z=debug(); t->dcj=0;} // d is PARSE type; set d->dcj=err#; d->dcn must remain # tokens
__attribute__((aligned(CACHELINESIZE))) IBnum[22][8*(2-SY_64)] = { // the numbers we keep at hand. 0 and 1 are B01, the rest INT; but the first 2 are integer forms of 0 and 1
0 commit comments