||INPUT ||CHAIN ||LISTS ||TABLE1 1 id 2 num 3 lnum 4 card 5 lcard 6 string 7 char 8 , 9 ; 10 ← 11 + 12 - 13 * 14 / 15 ↑ 16 . 17 @ 18 $ 19 % 20 = 21 # 22 < 23 > 24 <= 25 >= 26 INTEGER 27 CARDINAL 28 CHARACTER 29 BOOLEAN 30 REAL 31 POINTER 32 DESCRIPTOR 33 LONG 34 TO 35 BASE 36 ABS 37 MAX 38 MIN 39 MOD 40 LENGTH 41 LOOPHOLE 42 SIZE 43 FIRST 44 LAST 45 ) 46 ] 47 ( 48 [ 49 STRING 50 UNSPECIFIED 51 MEMORY 52 ! 53 \ 54 .. 55 '? 56 WORD 57 PROCEDURE 58 PROC 59 ERROR 60 SIGNAL 61 NIL 62 eof ||TABLE2 63 goal 64 stmtlist 65 statementlist 66 statement 67 lhs 68 exp 69 interval 70 relation 71 typeexp 72 typeid 73 typecons 74 sum 75 addop 76 product 77 relationtail 78 relop 79 multop 80 factor 81 primary 82 prefixop 83 explist 84 typeop 85 desclist 86 qualifier 87 bounds ||TABLE3 id tokenID num tokenNUM lnum tokenLNUM card tokenCARD lcard tokenLCARD string tokenSTR char tokenCHAR - tokenMINUS . tokenDOT .. tokenDOTS = tokenEQUAL < tokenLESS <= tokenLE > tokenGREATER >= tokenGE eof endmarker ||TABLE4 GOAL ::= goal eof 1 0 goal ::= stmtlist \ 2 1 stmtlist ::= statementlist 3 1 | statementlist ; 4 2 statementlist ::= statementlist ; statement 5 82 | statement 6 3 statement ::= lhs ← exp 7 4 | exp 8 5 | exp '? 9 6 | MEMORY interval 10 7 | lhs interval 11 8 | relation 12 9 typeexp ::= id 13 81 | typeid 14 81 | typecons 15 10 typeid ::= INTEGER 16 11 | CARDINAL 17 12 | CHARACTER 18 13 | BOOLEAN 19 14 | REAL 20 15 | STRING 21 16 | UNSPECIFIED 22 17 | WORD 23 18 | PROCEDURE 24 18 | PROC 25 19 | ERROR 26 20 | SIGNAL 27 21 | id . id 28 22 | id id 29 23 | id typeid 30 24 | id $ id 31 25 typecons ::= POINTER TO typeexp 32 25 | @ typeexp 33 26 | LONG typeexp 34 27 relation ::= sum relationtail 35 27 sum ::= sum addop product 36 81 | product 37 28 addop ::= + 38 29 | - 39 30 relop ::= = 40 31 | # 41 32 | < 42 33 | <= 43 34 | > 44 35 | >= 45 36 product ::= product multop factor 46 81 | factor 47 37 multop ::= * 48 38 | / 49 39 | MOD 50 40 factor ::= - primary 51 81 | primary 52 41 primary ::= num 53 42 | lnum 54 43 | card 55 44 | lcard 56 45 | char 57 46 | string 58 47 | NIL 59 48 | NIL [ typeexp ] 60 49 | prefixop [ explist ] 61 50 | typeop [ typeexp ] 62 51 | @ lhs 63 52 | DESCRIPTOR [ desclist ] 64 53 | primary % 65 54 | primary % ( typeexp ) 66 81 | lhs 67 55 lhs ::= id 68 56 | LOOPHOLE [ exp ] 69 57 | LOOPHOLE [ exp , typeexp ] 70 58 | MEMORY [ exp ] 71 59 | id $ id 72 60 | num $ id 73 60 | card $ id 74 81 | ( exp ) 75 81 | lhs qualifier 76 61 qualifier ::= [ explist ] 77 62 | . id 78 63 | ↑ 79 64 prefixop ::= LONG 80 65 | ABS 81 66 | MIN 82 67 | MAX 83 68 | BASE 84 69 | LENGTH 85 70 typeop ::= SIZE 86 71 | FIRST 87 72 | LAST 88 73 interval ::= [ bounds ] 89 74 | [ bounds ) 90 75 | ( bounds ] 91 76 | ( bounds ) 92 77 | [ exp ! exp ] 93 78 bounds ::= exp .. exp 94 79 desclist ::= exp , exp 95 80 | exp , exp , typeexp 96 81 | exp 97 81 exp ::= sum 98 81 relationtail ::= relop sum 99 82 explist ::= exp 100 83 | explist , exp 101 84 |