Trailing-Edge
-
PDP-10 Archives
-
decuslib20-04
-
decus/20-0122/analzr.cor
There are 2 other files named analzr.cor in the archive. Click here to see a list.
-!ANALZR.XPL_ANALZR.OLD
-154,154
RETURN (SHL(B1,24) + SHL(B2,16) + SHL(B3,8) + B4) & "FFFFFFFF";
-445,445
I = SHR(J, 24);
-451,451
J = SHL(J, 8) & "FFFFFFFF";
-470,470
IF BYTE(CARDIMAGE,CP) \= BLANK & BYTE(CARDIMAGE,CP)
\= 9 THEN /* NOT A SPACE OR A TAB */
-515,515
ELSE IF LENGTH(CARDIMAGE) \= 0 & CARDIMAGE \= EMPTY THEN
RETURN TRUE;
-516: END;
-519,564
SORT_V:
PROCEDURE; /* SORT THE SYMBOL TABLE */
DO I = 1 TO NSY;
/* SORT ON 1. TER MINAL VS. NON-TERMINAL
2. LENGTH OF SYMBOL
3. ORIGINAL ORDER OF OCCURRENCE */
SORT#(I) = SHL(ON_LEFT(I), 16) ^ SHL(LENGTH(V(I)), 8) ^ I;
SORT#(I) = SORT#(I) & "FFFFFFFF";
END;
/* BUBBLE SORT */
K, L = NSY;
DO WHILE K <= L;
L = 0;
DO I = 2 TO K;
L = I - 1;
IF SORT#(L) > SORT#(I) THEN
DO;
J = SORT#(L); SORT#(L) = SORT#(I); SORT#(I) = J;
T = V(L); V(L) = V(I); V(I) = T;
K = L;
END;
END;
END;
DO I = 1 TO NSY; /* BUILD TABLE TO LOCATE SORTED SYMBOLS OF V */
INDEX(SORT#(I)&"FF") = I;
END;
NT = NSY; /* PREPARE TO COUNT NON-TERMINAL SYMBOLS */
DO WHILE SORT#(NT) > "10000"; NT = NT - 1; END;
/* SUBSTITUTE NEW INDEX NUMBERS IN PRODUCTIONS */
DO I = 1 TO NPR;
LEFT_PART(I) = INDEX(LEFT_PART(I));
J = INDEX(RIGHT_HEAD(I));
ON_RIGHT(J) = TRUE;
RIGHT_HEAD(I) = J;
L = PRODUCTION(I);
DO K = 0 TO 3;
J = INDEX(SHR(L,24)&"FF"); /* INSURANCE FOR 36 BITS */
ON_RIGHT(J) = TRUE;
L = SHL(L,8) + J;
END;
L = L & "FFFFFFFF";
PRODUCTION(I) = L;
END;
TERMINATOR = INDEX(1); /* ADD _^_ TO VOCABULARY */
ON_RIGHT(TERMINATOR) = TRUE;
END SORT_V;
PRINT_DATE:
-613,615
P = (SHL(P, 8) + I) & "FFFFFFFF"; /* PACK 4 TO A WORD */
END;
IF LENGTH(SUBSTR(CARDIMAGE,CP)) \=0 THEN
-646,664
CALL PRINT_TIME;
CALL SORT_V;
EJECT_PAGE;
OUTPUT = ' T E R M I N A L S Y M B O L S
N O N T E R M I N A L S';
DOUBLE_SPACE;
IF NSY - NT > NT THEN L = NSY - NT; ELSE L = NT; /* L = NUMBER OF LINES */
DO I = 1 TO L; /* PRINT V */
IF I > NT THEN CARDIMAGE = HALF_LINE;
ELSE
DO; /* TERMINAL SYMBOLS */
T = I;
J = 5 - LENGTH(T);
CARDIMAGE = SUBSTR(SUBSTR(EMPTY, 0, J) ^^ T ^^ ' ' ^^ V(I)
^^ HALF_LINE, 0, 66);
END;
K = I + NT;
IF K <= NSY THEN
DO; /* NON-TERMINAL SYMBOLS */
-716,716
M = (SHL(M, 8) + S2) & "FFFFFFFF";
-733,733
IF INTERNAL THEN M = M & "FFFF00FF"
^ (SHL(NSY, 8) & "FFFFFFFF");
-734: ELSE RIGHT_HEAD(P) = NSY;
-773,773
DO WHILE K \= 0; J = SHR(K, 24); K = SHL(K, 8)
& "FFFFFFFF"; END;
-871,871
K = SHR(J,24); J = SHL(J,8) & "FFFFFFFF";
-967,967
F11(NF11+1) = SHL(NSY+1, 16) & "FFFFFFFF"; /* BOUNDARY CONDITION */
-982,982
YP = SHL(Y+1, 16) & "FFFFFFFF"; /*TO COMPARE WITH TRIPLE */
-1004,1007
K = SHR(M, 24); M = SHL(M, 8) & "FFFFFFFF";
IF K \= 0 THEN
DO;
J = (SHL(J, 8) + K) & "FFFFFFFF";
-1008: L = L - 1;
-1015
SORT#(I) = SORT#(I) & "FFFFFFFF";
-1123,1123
L = SHL(M+1, 24) & "FFFFFFFF";
-1495
OUTPUT(-2) = 'GRAMMAR FILE: ';
FILENAME(0) = INPUT(-1);
OUTPUT(-2) = ' OUTPUT FILE: ';
FILENAME(1) = INPUT(-1);