COSC4307 PROGRAM-5 Due:8/11/2004 QUADRUPLE GENERATOR(2) Task: This is to complete a quadruple generator which you started in the Program-5. The following language constructs are additionally included: 1. If-statements with matching "Else" 2. For-loop statements. 3. Array element references for which an additional quadruple "INDIRECT" is needed. 4. Boolean expressions. Conventions: Use the following convention: 1. QUADRUPLE OPERATOR NUMBERS, if you use integers: 1: READ 2: PRINT 3: = 4: + 5: * 6: - 7: NEG (NEGATING A VALUE) 8: INC (INCREMENTING A VALUE BY ONE) 9: DEC (DECREMENTING A VALUE BY ONE) 10: BR (Unconditional branch) 11: BEQ (BRANCH IF the first operand equals the second) 12: BNEQ (BRANCH IF the first operand is not equal to second) 13: BGTR (BRANCH IF the first operand is greater than the second) 14: INDIRECT (Indirect addressing) 15: BB (Boolean Branch) 16: RETURN (Returning to O/S) 2. QUADRUPLE OPERANDS: A. THE SYMBOL TABLE LOCATION OCCUPIED BY THE OPERAND. B. OR A QUADRUPLE SEQUENCE NUMBER, IN THE CASE OF A BRANCH OPERATION. 3. SYMBOL TABLE ORGANIZATION: THE SYMBOL TABLE WILL HAVE THREE COLUMNS AS FOLLOWS: A. FIRST COLUMN: CONTAINS SYMBOLS THEMSELVES SUCH AS IDENTIFIERS,CONSTANTS,TEMPORARY LOCATIONS, ETC. B. SECOND COLUMN: CONTAINS THE CLASS OF THE SYMBOLS AS FOLLOWS: 1: CONSTANTS. 2: SIMPLE VARIABLES. 3: ARRAY VARIABLES. 4: ARRAY ELEMENT REFERENCES. 5: TEMPORARY LOCATIONS. 6: OTHERS. C. THIRD COLUMN: IS A POINTER POINTING TO THE ADDRESS IN THE LOCAL Data area THAT IS TO CONTAIN THE VALUE or values OF THE SYMBOL. OUTPUTS: 1. INPUT PROGRAM. 2. ALL QUADRUPLES either in numbers or in character strings with sequence numbers preceding. Input Source Program: BEGIN INTEGER A(4,5), XXX(4,5,30), YYY(5,10) INTEGER X, Y, T; BOOLEAN A, B, C, D, E; FOR X=1 TO 4 DO BEGIN FOR Y=1 TO 5 DO BEGIN T = 10*X + Y; A (X,Y) = T; IF (Y-1) THEN A(X,1) = A(X,1)+A(X,Y) FI; FOR Z = 1 TO 30 DO XXX (X,Y,Z) = 10000*Z + 100*Y + X END; PRINT A(X,1) END; IF (A OR NOT(B AND C AND NOT D OR E)) THEN PRINT A(4,1) ELSE PRINT A(4,5) FI END .