*** empty log message ***
authorceriel <none@none>
Mon, 23 Feb 1987 10:50:15 +0000 (10:50 +0000)
committerceriel <none@none>
Mon, 23 Feb 1987 10:50:15 +0000 (10:50 +0000)
util/LLgen/lib/rec

index 9f35841..03d19ad 100644 (file)
@@ -62,17 +62,17 @@ LLerror(t) {
                return;
        }
 #endif
-#ifdef LL_USERHOOK
-       LL_USERHOOK(t);
-       LLread();
-#endif LL_USERHOOK
        if ((LLcsymb = LLindex[LLsymb]) < 0) {
                LLmessage(0);
                LLread();
        }
        i = LLindex[t];
        LLtcnt[i]++;
-       if (LLdoskip()) /* nothing */;
+#ifdef LL_USERHOOK
+       if (LLdoskip(t)) /* nothing */;
+#else
+       if (LLskip()) /* nothing */;
+#endif
        LLtcnt[i]--;
        if (LLsymb != t) LLmessage(t);
 }
@@ -95,14 +95,11 @@ LLnext(n) {
 
 LLskip() {
 #ifdef LL_USERHOOK
-       LL_USERHOOK(0);
-       LLread();
-#endif LL_USERHOOK
-       return LLdoskip();
+       return LLdoskip(0);
 }
 
-LLdoskip()
-{
+LLdoskip(exp) {
+#endif LL_USERHOOK
        register int i;
        int retval;
        int LLi, LLb;
@@ -117,8 +114,16 @@ LLdoskip()
                                if (LLsets[LL_SSIZE*i+LLi] & LLb) return retval;
                        }
                }
-               retval = 1;
+#ifdef LL_USERHOOK
+               {
+                       int old = LLsymb;
+                       LL_USERHOOK(exp);
+                       LLread();
+                       if (LLsymb != old) continue;
+               }
+#endif LL_USERHOOK
                LLmessage(0);
+               retval = 1;
                LLread();
        }
        /* NOTREACHED */