# R9 # (PRINT(("TEST OF OPERATOR IDENTIFIERS : TAM AND TAD",NEWLINE)); 'INT' NBT=271;[1:NBT]'BOOL' TC; 'FOR'I'TO'NBT'DO'TC[I]:='TRUE''OD'; 'INT' CTR:=0 ; 'PROC' POS=('INT'I)'BOOL' : (CTR+:=1;TC[I] ! TC[I]:='FALSE' ! PRINT(("ERR.1",I,NEWLINE)) ; 'SKIP') ; ( 'OP''T1T2T'=('INT' A)'BOOL':POS( 1); 'OP'&:==('INT' A)'BOOL':POS( 2); 'OP'&=:=('INT' A)'BOOL':POS( 3); 'OP'&=('INT' A)'BOOL':POS( 4); 'OP'?:==('INT' A)'BOOL':POS( 5); 'OP'?=:=('INT' A)'BOOL':POS( 6); 'OP'?=('INT' A)'BOOL':POS( 7); 'OP'+:==('INT' A)'BOOL':POS( 8); 'OP'+=:=('INT' A)'BOOL':POS( 9); 'OP'+=('INT' A)'BOOL':POS( 10); 'OP'-:==('INT' A)'BOOL':POS( 11); 'OP'-=:=('INT' A)'BOOL':POS( 12); 'OP'-=('INT' A)'BOOL':POS( 13); 'OP'^:==('INT' A)'BOOL':POS( 14); 'OP'^=:=('INT' A)'BOOL':POS( 15); 'OP'^=('INT' A)'BOOL':POS( 16); 'OP'&<:==('INT' A)'BOOL':POS( 17); 'OP'&<=:=('INT' A)'BOOL':POS( 18); 'OP'&<=('INT' A)'BOOL':POS( 19); 'OP'&>:==('INT' A)'BOOL':POS( 20); 'OP'&>=:=('INT' A)'BOOL':POS( 21); 'OP'&>=('INT' A)'BOOL':POS( 22); 'OP'&/:==('INT' A)'BOOL':POS( 23); 'OP'&/=:=('INT' A)'BOOL':POS( 24); 'OP'&/=('INT' A)'BOOL':POS( 25); 'OP'&*:==('INT' A)'BOOL':POS( 26); 'OP'&*=:=('INT' A)'BOOL':POS( 27); 'OP'&*=('INT' A)'BOOL':POS( 28); 'OP'&=:==('INT' A)'BOOL':POS( 29); 'OP'&==:=('INT' A)'BOOL':POS( 30); 'OP'&==('INT' A)'BOOL':POS( 31); 'OP'?<:==('INT' A)'BOOL':POS( 32); 'OP'?<=:=('INT' A)'BOOL':POS( 33); 'OP'?<=('INT' A)'BOOL':POS( 34); 'OP'?>:==('INT' A)'BOOL':POS( 35); 'OP'?>=:=('INT' A)'BOOL':POS( 36); 'OP'?>=('INT' A)'BOOL':POS( 37); 'OP'?/:==('INT' A)'BOOL':POS( 38); 'OP'?/=:=('INT' A)'BOOL':POS( 39); 'OP'?/=('INT' A)'BOOL':POS( 40); 'OP'?*:==('INT' A)'BOOL':POS( 41); 'OP'?*=:=('INT' A)'BOOL':POS( 42); 'OP'?*=('INT' A)'BOOL':POS( 43); 'OP'?=:==('INT' A)'BOOL':POS( 44); 'OP'?==:=('INT' A)'BOOL':POS( 45); 'OP'?==('INT' A)'BOOL':POS( 46); 'OP'+<:==('INT' A)'BOOL':POS( 47); 'OP'+<=:=('INT' A)'BOOL':POS( 48); 'OP'+<=('INT' A)'BOOL':POS( 49); 'OP'+>:==('INT' A)'BOOL':POS( 50); 'OP'+>=:=('INT' A)'BOOL':POS( 51); 'OP'+>=('INT' A)'BOOL':POS( 52); 'OP'+/:==('INT' A)'BOOL':POS( 53); 'OP'+/=:=('INT' A)'BOOL':POS( 54); 'OP'+/=('INT' A)'BOOL':POS( 55); 'OP'+*:==('INT' A)'BOOL':POS( 56); 'OP'+*=:=('INT' A)'BOOL':POS( 57); 'OP'+*=('INT' A)'BOOL':POS( 58); 'OP'+=:==('INT' A)'BOOL':POS( 59); 'OP'+==:=('INT' A)'BOOL':POS( 60); 'OP'+==('INT' A)'BOOL':POS( 61); 'OP'-<:==('INT' A)'BOOL':POS( 62); 'OP'-<=:=('INT' A)'BOOL':POS( 63); 'OP'-<=('INT' A)'BOOL':POS( 64); 'OP'->:==('INT' A)'BOOL':POS( 65); 'OP'->=:=('INT' A)'BOOL':POS( 66); 'OP'->=('INT' A)'BOOL':POS( 67); 'OP'-/:==('INT' A)'BOOL':POS( 68); 'OP'-/=:=('INT' A)'BOOL':POS( 69); 'OP'-/=('INT' A)'BOOL':POS( 70); 'OP'-*:==('INT' A)'BOOL':POS( 71); 'OP'-*=:=('INT' A)'BOOL':POS( 72); 'OP'-*=('INT' A)'BOOL':POS( 73); 'OP'-=:==('INT' A)'BOOL':POS( 74); 'OP'-==:=('INT' A)'BOOL':POS( 75); 'OP'-==('INT' A)'BOOL':POS( 76); 'OP'^<:==('INT' A)'BOOL':POS( 77); 'OP'^<=:=('INT' A)'BOOL':POS( 78); 'OP'^<=('INT' A)'BOOL':POS( 79); 'OP'^>:==('INT' A)'BOOL':POS( 80); 'OP'^>=:=('INT' A)'BOOL':POS( 81); 'OP'^>=('INT' A)'BOOL':POS( 82); 'OP'^/:==('INT' A)'BOOL':POS( 83); 'OP'^/=:=('INT' A)'BOOL':POS( 84); 'OP'^/=('INT' A)'BOOL':POS( 85); 'OP'^*:==('INT' A)'BOOL':POS( 86); 'OP'^*=:=('INT' A)'BOOL':POS( 87); 'OP'^*=('INT' A)'BOOL':POS( 88); 'OP'^=:==('INT' A)'BOOL':POS( 89); 'OP'^==:=('INT' A)'BOOL':POS( 90); 'OP'^==('INT' A)'BOOL':POS( 91); 'T1T2T'1; &:=2; &=:6; &4; ?:=5; ?=:4; ?1; +:=9; +=:2; +7; -:=1; -=:6; -2; ^:=6; ^=:3; ^5; &<:=6; &<=:2; &<8; &>:=8; &>=:7; &>6; &/:=6; &/=:5; &/6; &*:=3; &*=:4; &*3; &=:=6; &==:9; &=4; ?<:=4; ?<=:6; ?<7; ?>:=1; ?>=:8; ?>8; ?/:=5; ?/=:6; ?/4; ?*:=7; ?*=:4; ?*2; ?=:=8; ?==:7; ?=8; +<:=8; +<=:3; +<6; +>:=6; +>=:6; +>7; +/:=5; +/=:4; +/3; +*:=3; +*=:4; +*5; +=:=4; +==:9; +=5; -<:=3; -<=:6; -<3; ->:=2; ->=:6; ->5; -/:=4; -/=:1; -/8; -*:=3; -*=:2; -*3; -=:=3; -==:4; -=3; ^<:=7; ^<=:9; ^<8; ^>:=7; ^>=:5; ^>3; ^/:=2; ^/=:1; ^/1; ^*:=3; ^*=:2; ^*1; ^=:=3; ^==:8; ^=6;'SKIP');( 'PRIO'&:==7; 'PRIO'?:==8; 'PRIO'+:==9; 'PRIO'-:==1; 'PRIO'^:==2; 'PRIO'<:==3; 'PRIO'>:==4; 'PRIO'/:==5; 'PRIO'*:==6; 'PRIO'=:==7; 'PRIO'&<:==8; 'PRIO'&>:==9; 'PRIO'&/:==1; 'PRIO'&*:==2; 'PRIO'&=:==3; 'PRIO'?<:==4; 'PRIO'?>:==5; 'PRIO'?/:==6; 'PRIO'?*:==7; 'PRIO'?=:==8; 'PRIO'+<:==9; 'PRIO'+>:==1; 'PRIO'+/:==2; 'PRIO'+*:==3; 'PRIO'+=:==4; 'PRIO'-<:==5; 'PRIO'->:==6; 'PRIO'-/:==7; 'PRIO'-*:==8; 'PRIO'-=:==9; 'PRIO'^<:==1; 'PRIO'^>:==2; 'PRIO'^/:==3; 'PRIO'^*:==4; 'PRIO'^=:==5; 'PRIO'<<:==6; 'PRIO'<>:==7; 'PRIO'<:==2; 'PRIO'>>:==3; 'PRIO'>/:==4; 'PRIO'>*:==5; 'PRIO'>=:==6; 'PRIO'/<:==7; 'PRIO'/>:==8; 'PRIO'//:==9; 'PRIO'/*:==1; 'PRIO'/=:==2; 'PRIO'*<:==3; 'PRIO'*>:==4; 'PRIO'*/:==5; 'PRIO'**:==6; 'PRIO'*=:==7; 'PRIO'=<:==8; 'PRIO'=>:==9; 'PRIO'=/:==1; 'PRIO'=*:==2; 'PRIO'==:==3; 'OP'&:==('INT' A,B)'BOOL':POS( 92); 'OP'?:==('INT' A,B)'BOOL':POS( 93); 'OP'+:==('INT' A,B)'BOOL':POS( 94); 'OP'-:==('INT' A,B)'BOOL':POS( 95); 'OP'^:==('INT' A,B)'BOOL':POS( 96); 'OP'<:==('INT' A,B)'BOOL':POS( 97); 'OP'>:==('INT' A,B)'BOOL':POS( 98); 'OP'/:==('INT' A,B)'BOOL':POS( 99); 'OP'*:==('INT' A,B)'BOOL':POS( 100); 'OP'=:==('INT' A,B)'BOOL':POS( 101); 'OP'&<:==('INT' A,B)'BOOL':POS( 102); 'OP'&>:==('INT' A,B)'BOOL':POS( 103); 'OP'&/:==('INT' A,B)'BOOL':POS( 104); 'OP'&*:==('INT' A,B)'BOOL':POS( 105); 'OP'&=:==('INT' A,B)'BOOL':POS( 106); 'OP'?<:==('INT' A,B)'BOOL':POS( 107); 'OP'?>:==('INT' A,B)'BOOL':POS( 108); 'OP'?/:==('INT' A,B)'BOOL':POS( 109); 'OP'?*:==('INT' A,B)'BOOL':POS( 110); 'OP'?=:==('INT' A,B)'BOOL':POS( 111); 'OP'+<:==('INT' A,B)'BOOL':POS( 112); 'OP'+>:==('INT' A,B)'BOOL':POS( 113); 'OP'+/:==('INT' A,B)'BOOL':POS( 114); 'OP'+*:==('INT' A,B)'BOOL':POS( 115); 'OP'+=:==('INT' A,B)'BOOL':POS( 116); 'OP'-<:==('INT' A,B)'BOOL':POS( 117); 'OP'->:==('INT' A,B)'BOOL':POS( 118); 'OP'-/:==('INT' A,B)'BOOL':POS( 119); 'OP'-*:==('INT' A,B)'BOOL':POS( 120); 'OP'-=:==('INT' A,B)'BOOL':POS( 121); 'OP'^<:==('INT' A,B)'BOOL':POS( 122); 'OP'^>:==('INT' A,B)'BOOL':POS( 123); 'OP'^/:==('INT' A,B)'BOOL':POS( 124); 'OP'^*:==('INT' A,B)'BOOL':POS( 125); 'OP'^=:==('INT' A,B)'BOOL':POS( 126); 'OP'<<:==('INT' A,B)'BOOL':POS( 127); 'OP'<>:==('INT' A,B)'BOOL':POS( 128); 'OP'<:==('INT' A,B)'BOOL':POS( 132); 'OP'>>:==('INT' A,B)'BOOL':POS( 133); 'OP'>/:==('INT' A,B)'BOOL':POS( 134); 'OP'>*:==('INT' A,B)'BOOL':POS( 135); 'OP'>=:==('INT' A,B)'BOOL':POS( 136); 'OP'/<:==('INT' A,B)'BOOL':POS( 137); 'OP'/>:==('INT' A,B)'BOOL':POS( 138); 'OP'//:==('INT' A,B)'BOOL':POS( 139); 'OP'/*:==('INT' A,B)'BOOL':POS( 140); 'OP'/=:==('INT' A,B)'BOOL':POS( 141); 'OP'*<:==('INT' A,B)'BOOL':POS( 142); 'OP'*>:==('INT' A,B)'BOOL':POS( 143); 'OP'*/:==('INT' A,B)'BOOL':POS( 144); 'OP'**:==('INT' A,B)'BOOL':POS( 145); 'OP'*=:==('INT' A,B)'BOOL':POS( 146); 'OP'=<:==('INT' A,B)'BOOL':POS( 147); 'OP'=>:==('INT' A,B)'BOOL':POS( 148); 'OP'=/:==('INT' A,B)'BOOL':POS( 149); 'OP'=*:==('INT' A,B)'BOOL':POS( 150); 'OP'==:==('INT' A,B)'BOOL':POS( 151); 3&:=7; 2?:=8; 3+:=6; 1-:=4; 5^:=5; 9<:=5; 6>:=6; 1/:=3; 9*:=2; 5=:=9; 2&<:=8; 9&>:=7; 3&/:=9; 4&*:=1; 8&=:=5; 8?<:=3; 5?>:=6; 6?/:=1; 5?*:=4; 6?=:=6; 5+<:=7; 2+>:=2; 3+/:=6; 3+*:=8; 3+=:=3; 7-<:=6; 4->:=4; 5-/:=9; 1-*:=5; 2-=:=2; 9^<:=3; 9^>:=3; 2^/:=3; 1^*:=9; 3^=:=7; 2<<:=7; 2<>:=2; 7<:=5; 8>>:=7; 3>/:=2; 5>*:=2; 4>=:=3; 5/<:=3; 9/>:=9; 4//:=2; 1/*:=1; 3/=:=7; 3*<:=1; 9*>:=9; 8*/:=3; 5**:=9; 4*=:=5; 1=<:=4; 7=>:=9; 6=/:=7; 3=*:=9; 1==:=3;'SKIP');( 'PRIO'&=:=4; 'PRIO'?=:=5; 'PRIO'+=:=6; 'PRIO'-=:=7; 'PRIO'^=:=8; 'PRIO'<=:=9; 'PRIO'>=:=1; 'PRIO'/=:=2; 'PRIO'*=:=3; 'PRIO'==:=4; 'PRIO'&<=:=5; 'PRIO'&>=:=6; 'PRIO'&/=:=7; 'PRIO'&*=:=8; 'PRIO'&==:=9; 'PRIO'?<=:=1; 'PRIO'?>=:=2; 'PRIO'?/=:=3; 'PRIO'?*=:=4; 'PRIO'?==:=5; 'PRIO'+<=:=6; 'PRIO'+>=:=7; 'PRIO'+/=:=8; 'PRIO'+*=:=9; 'PRIO'+==:=1; 'PRIO'-<=:=2; 'PRIO'->=:=3; 'PRIO'-/=:=4; 'PRIO'-*=:=5; 'PRIO'-==:=6; 'PRIO'^<=:=7; 'PRIO'^>=:=8; 'PRIO'^/=:=9; 'PRIO'^*=:=1; 'PRIO'^==:=2; 'PRIO'<<=:=3; 'PRIO'<>=:=4; 'PRIO'<=:=8; 'PRIO'>>=:=9; 'PRIO'>/=:=1; 'PRIO'>*=:=2; 'PRIO'>==:=3; 'PRIO'/<=:=4; 'PRIO'/>=:=5; 'PRIO'//=:=6; 'PRIO'/*=:=7; 'PRIO'/==:=8; 'PRIO'*<=:=9; 'PRIO'*>=:=1; 'PRIO'*/=:=2; 'PRIO'**=:=3; 'PRIO'*==:=4; 'PRIO'=<=:=5; 'PRIO'=>=:=6; 'PRIO'=/=:=7; 'PRIO'=*=:=8; 'PRIO'===:=9; 'OP'&=:=('INT' A,B)'BOOL':POS( 152); 'OP'?=:=('INT' A,B)'BOOL':POS( 153); 'OP'+=:=('INT' A,B)'BOOL':POS( 154); 'OP'-=:=('INT' A,B)'BOOL':POS( 155); 'OP'^=:=('INT' A,B)'BOOL':POS( 156); 'OP'<=:=('INT' A,B)'BOOL':POS( 157); 'OP'>=:=('INT' A,B)'BOOL':POS( 158); 'OP'/=:=('INT' A,B)'BOOL':POS( 159); 'OP'*=:=('INT' A,B)'BOOL':POS( 160); 'OP'==:=('INT' A,B)'BOOL':POS( 161); 'OP'&<=:=('INT' A,B)'BOOL':POS( 162); 'OP'&>=:=('INT' A,B)'BOOL':POS( 163); 'OP'&/=:=('INT' A,B)'BOOL':POS( 164); 'OP'&*=:=('INT' A,B)'BOOL':POS( 165); 'OP'&==:=('INT' A,B)'BOOL':POS( 166); 'OP'?<=:=('INT' A,B)'BOOL':POS( 167); 'OP'?>=:=('INT' A,B)'BOOL':POS( 168); 'OP'?/=:=('INT' A,B)'BOOL':POS( 169); 'OP'?*=:=('INT' A,B)'BOOL':POS( 170); 'OP'?==:=('INT' A,B)'BOOL':POS( 171); 'OP'+<=:=('INT' A,B)'BOOL':POS( 172); 'OP'+>=:=('INT' A,B)'BOOL':POS( 173); 'OP'+/=:=('INT' A,B)'BOOL':POS( 174); 'OP'+*=:=('INT' A,B)'BOOL':POS( 175); 'OP'+==:=('INT' A,B)'BOOL':POS( 176); 'OP'-<=:=('INT' A,B)'BOOL':POS( 177); 'OP'->=:=('INT' A,B)'BOOL':POS( 178); 'OP'-/=:=('INT' A,B)'BOOL':POS( 179); 'OP'-*=:=('INT' A,B)'BOOL':POS( 180); 'OP'-==:=('INT' A,B)'BOOL':POS( 181); 'OP'^<=:=('INT' A,B)'BOOL':POS( 182); 'OP'^>=:=('INT' A,B)'BOOL':POS( 183); 'OP'^/=:=('INT' A,B)'BOOL':POS( 184); 'OP'^*=:=('INT' A,B)'BOOL':POS( 185); 'OP'^==:=('INT' A,B)'BOOL':POS( 186); 'OP'<<=:=('INT' A,B)'BOOL':POS( 187); 'OP'<>=:=('INT' A,B)'BOOL':POS( 188); 'OP'<=:=('INT' A,B)'BOOL':POS( 192); 'OP'>>=:=('INT' A,B)'BOOL':POS( 193); 'OP'>/=:=('INT' A,B)'BOOL':POS( 194); 'OP'>*=:=('INT' A,B)'BOOL':POS( 195); 'OP'>==:=('INT' A,B)'BOOL':POS( 196); 'OP'/<=:=('INT' A,B)'BOOL':POS( 197); 'OP'/>=:=('INT' A,B)'BOOL':POS( 198); 'OP'//=:=('INT' A,B)'BOOL':POS( 199); 'OP'/*=:=('INT' A,B)'BOOL':POS( 200); 'OP'/==:=('INT' A,B)'BOOL':POS( 201); 'OP'*<=:=('INT' A,B)'BOOL':POS( 202); 'OP'*>=:=('INT' A,B)'BOOL':POS( 203); 'OP'*/=:=('INT' A,B)'BOOL':POS( 204); 'OP'**=:=('INT' A,B)'BOOL':POS( 205); 'OP'*==:=('INT' A,B)'BOOL':POS( 206); 'OP'=<=:=('INT' A,B)'BOOL':POS( 207); 'OP'=>=:=('INT' A,B)'BOOL':POS( 208); 'OP'=/=:=('INT' A,B)'BOOL':POS( 209); 'OP'=*=:=('INT' A,B)'BOOL':POS( 210); 'OP'===:=('INT' A,B)'BOOL':POS( 211); 6&=:8; 6?=:7; 7+=:1; 2-=:8; 3^=:4; 6<=:2; 5>=:7; 4/=:6; 8*=:9; 4==:6; 5&<=:3; 7&>=:4; 9&/=:1; 1&*=:7; 9&==:8; 6?<=:6; 2?>=:1; 8?/=:6; 5?*=:1; 3?==:8; 2+<=:6; 1+>=:5; 3+/=:3; 4+*=:2; 8+==:6; 9-<=:3; 6->=:4; 1-/=:2; 4-*=:4; 5-==:4; 3^<=:6; 1^>=:3; 1^/=:4; 9^*=:2; 7^==:4; 4<<=:4; 6<>=:3; 7<=:3; 6>>=:8; 6>/=:8; 6>*=:6; 7>==:5; 4/<=:7; 4/>=:6; 1//=:6; 6/*=:8; 1/==:7; 2*<=:7; 9*>=:2; 6*/=:9; 4**=:3; 8*==:4; 8=<=:5; 9=>=:6; 6=/=:4; 1=*=:7; 8===:1;'SKIP');( 'PRIO'&=2; 'PRIO'?=3; 'PRIO'+=4; 'PRIO'-=5; 'PRIO'^=6; 'PRIO'<=7; 'PRIO'>=8; 'PRIO'/=9; 'PRIO'*=1; 'PRIO'==2; 'PRIO'&<=3; 'PRIO'&>=4; 'PRIO'&/=5; 'PRIO'&*=6; 'PRIO'&==7; 'PRIO'?<=8; 'PRIO'?>=9; 'PRIO'?/=1; 'PRIO'?*=2; 'PRIO'?==3; 'PRIO'+<=4; 'PRIO'+>=5; 'PRIO'+/=6; 'PRIO'+*=7; 'PRIO'+==8; 'PRIO'-<=9; 'PRIO'->=1; 'PRIO'-/=2; 'PRIO'-*=3; 'PRIO'-==4; 'PRIO'^<=5; 'PRIO'^>=6; 'PRIO'^/=7; 'PRIO'^*=8; 'PRIO'^==9; 'PRIO'<<=1; 'PRIO'<>=2; 'PRIO'<=6; 'PRIO'>>=7; 'PRIO'>/=8; 'PRIO'>*=9; 'PRIO'>==1; 'PRIO'/<=2; 'PRIO'/>=3; 'PRIO'//=4; 'PRIO'/*=5; 'PRIO'/==6; 'PRIO'*<=7; 'PRIO'*>=8; 'PRIO'*/=9; 'PRIO'**=1; 'PRIO'*==2; 'PRIO'=<=3; 'PRIO'=>=4; 'PRIO'=/=5; 'PRIO'=*=6; 'PRIO'===7; 'OP'&=('INT' A,B)'BOOL':POS( 212); 'OP'?=('INT' A,B)'BOOL':POS( 213); 'OP'+=('INT' A,B)'BOOL':POS( 214); 'OP'-=('INT' A,B)'BOOL':POS( 215); 'OP'^=('INT' A,B)'BOOL':POS( 216); 'OP'<=('INT' A,B)'BOOL':POS( 217); 'OP'>=('INT' A,B)'BOOL':POS( 218); 'OP'/=('INT' A,B)'BOOL':POS( 219); 'OP'*=('INT' A,B)'BOOL':POS( 220); 'OP'==('INT' A,B)'BOOL':POS( 221); 'OP'&<=('INT' A,B)'BOOL':POS( 222); 'OP'&>=('INT' A,B)'BOOL':POS( 223); 'OP'&/=('INT' A,B)'BOOL':POS( 224); 'OP'&*=('INT' A,B)'BOOL':POS( 225); 'OP'&==('INT' A,B)'BOOL':POS( 226); 'OP'?<=('INT' A,B)'BOOL':POS( 227); 'OP'?>=('INT' A,B)'BOOL':POS( 228); 'OP'?/=('INT' A,B)'BOOL':POS( 229); 'OP'?*=('INT' A,B)'BOOL':POS( 230); 'OP'?==('INT' A,B)'BOOL':POS( 231); 'OP'+<=('INT' A,B)'BOOL':POS( 232); 'OP'+>=('INT' A,B)'BOOL':POS( 233); 'OP'+/=('INT' A,B)'BOOL':POS( 234); 'OP'+*=('INT' A,B)'BOOL':POS( 235); 'OP'+==('INT' A,B)'BOOL':POS( 236); 'OP'-<=('INT' A,B)'BOOL':POS( 237); 'OP'->=('INT' A,B)'BOOL':POS( 238); 'OP'-/=('INT' A,B)'BOOL':POS( 239); 'OP'-*=('INT' A,B)'BOOL':POS( 240); 'OP'-==('INT' A,B)'BOOL':POS( 241); 'OP'^<=('INT' A,B)'BOOL':POS( 242); 'OP'^>=('INT' A,B)'BOOL':POS( 243); 'OP'^/=('INT' A,B)'BOOL':POS( 244); 'OP'^*=('INT' A,B)'BOOL':POS( 245); 'OP'^==('INT' A,B)'BOOL':POS( 246); 'OP'<<=('INT' A,B)'BOOL':POS( 247); 'OP'<>=('INT' A,B)'BOOL':POS( 248); 'OP'<=('INT' A,B)'BOOL':POS( 252); 'OP'>>=('INT' A,B)'BOOL':POS( 253); 'OP'>/=('INT' A,B)'BOOL':POS( 254); 'OP'>*=('INT' A,B)'BOOL':POS( 255); 'OP'>==('INT' A,B)'BOOL':POS( 256); 'OP'/<=('INT' A,B)'BOOL':POS( 257); 'OP'/>=('INT' A,B)'BOOL':POS( 258); 'OP'//=('INT' A,B)'BOOL':POS( 259); 'OP'/*=('INT' A,B)'BOOL':POS( 260); 'OP'/==('INT' A,B)'BOOL':POS( 261); 'OP'*<=('INT' A,B)'BOOL':POS( 262); 'OP'*>=('INT' A,B)'BOOL':POS( 263); 'OP'*/=('INT' A,B)'BOOL':POS( 264); 'OP'**=('INT' A,B)'BOOL':POS( 265); 'OP'*==('INT' A,B)'BOOL':POS( 266); 'OP'=<=('INT' A,B)'BOOL':POS( 267); 'OP'=>=('INT' A,B)'BOOL':POS( 268); 'OP'=/=('INT' A,B)'BOOL':POS( 269); 'OP'=*=('INT' A,B)'BOOL':POS( 270); 'OP'===('INT' A,B)'BOOL':POS( 271); 3&8; 9?5; 9+9; 4-1; 3^1; 6<8; 3>8; 2/4; 5*3; 5=2; 7&<3; 3&>4; 9&/4; 9&*1; 8&=3; 8?<8; 6?>1; 2?/2; 8?*7; 4?=1; 8+<2; 2+>5; 2+/3; 3+*8; 1+=8; 6-<8; 5->7; 9-/6; 3-*8; 6-=2; 9^<7; 6^>3; 5^/9; 8^*4; 2^=4; 2<<8; 6<>1; 8<4; 8>>6; 7>/5; 6>*2; 2>=8; 1/<7; 9/>5; 2//7; 1/*3; 6/=6; 5*<1; 9*>3; 9*/7; 9**5; 2*=7; 6=<7; 2=>7; 3=/1; 8=*4; 5==6; 'SKIP'); 'FOR'I'TO'NBT'DO'(TC[I]!PRINT(("ERR.2",I)))'OD'; PRINT((CTR," TESTS ",(CTR=NBT!"O.K."!"ERROR")))) ###### # R8 # # READS 2 CARDS # (PRINT(("DENOTATIONS",NEWLINE)) ; 'INT' VF = 70 ; 'PRIO' ?=:==1; #TESTS SYNTAXIQUES# #'BOOL'# (('FALSE';'SKIP'; 'FALSE';'FALSE'); ('FALSE','SKIP', 'FALSE','FALSE'); 'STRUCT'('BOOL'A,B,C,D) A= ('FALSE','SKIP', 'FALSE','FALSE'); []'BOOL'B=('FALSE','SKIP', 'FALSE','FALSE'); 'CASE' 3 'IN''FALSE','SKIP', 'FALSE','FALSE' 'OUT''FALSE''ESAC' ; ('UNION'('REF' 'BOOL','PROC' 'BOOL')A:='HEAP' 'BOOL' ;A!('REF' 'BOOL'):'FALSE'); 'BOOL'D='FALSE'; 'BOOL'V,VV:='FALSE';V:='FALSE'; 'PROC' PP=('BOOL'A,B)'BOOL':'FALSE' ;PP('FALSE','FALSE'); 'OP'?=:==('BOOL'A,B)'BOOL':B, ?=:==('BOOL'A)'BOOL':A; ?=:='FALSE'?=:=?=:=?=:='FALSE'?=:='FALSE'); #'INT'# ((2147483647;'SKIP'; 2147483647;2147483647); (2147483647,'SKIP', 2147483647,2147483647); 'STRUCT'('INT'A,B,C,D) A= (2147483647,'SKIP', 2147483647,2147483647); []'INT'B=(2147483647,'SKIP', 2147483647,2147483647); 'CASE' 3 'IN'2147483647,'SKIP', 2147483647,2147483647 'OUT'2147483647'ESAC' ; ('UNION'('REF' 'INT','PROC' 'INT')A:='HEAP' 'INT' ;A!('REF' 'INT'):2147483647); 'INT'D=2147483647; 'INT'V,VV:=2147483647;V:=2147483647; 'PROC' PP=('INT'A,B)'INT':2147483647 ;PP(2147483647,2147483647); 'OP'?=:==('INT'A,B)'INT':B, ?=:==('INT'A)'INT':A; ?=:=2147483647?=:=?=:=?=:=2147483647?=:=2147483647); #'REAL'# ((-1E-00000;'SKIP'; -1E-00000;-1E-00000); (-1E-00000,'SKIP', -1E-00000,-1E-00000); 'STRUCT'('REAL'A,B,C,D) A= (-1E-00000,'SKIP', -1E-00000,-1E-00000); []'REAL'B=(-1E-00000,'SKIP', -1E-00000,-1E-00000); 'CASE' 3 'IN'-1E-00000,'SKIP', -1E-00000,-1E-00000 'OUT'-1E-00000'ESAC' ; ('UNION'('REF' 'REAL','PROC' 'REAL')A:='HEAP' 'REAL' ;A!('REF' 'REAL'):-1E-00000); 'REAL'D=-1E-00000; 'REAL'V,VV:=-1E-00000;V:=-1E-00000; 'PROC' PP=('REAL'A,B)'REAL':-1E-00000 ;PP(-1E-00000,-1E-00000); 'OP'?=:==('REAL'A,B)'REAL':B, ?=:==('REAL'A)'REAL':A; ?=:=-1E-00000?=:=?=:=?=:=-1E-00000?=:=-1E-00000); #'CHAR'# (("""";'SKIP'; """";""""); ("""",'SKIP', """",""""); 'STRUCT'('CHAR'A,B,C,D) A= ("""",'SKIP', """",""""); []'CHAR'B=("""",'SKIP', """",""""); 'CASE' 3 'IN'"""",'SKIP', """","""" 'OUT'""""'ESAC' ; ('UNION'('REF' 'CHAR','PROC' 'CHAR')A:='HEAP' 'CHAR' ;A!('REF' 'CHAR'):""""); 'CHAR'D=""""; 'CHAR'V,VV:="""";V:=""""; 'PROC' PP=('CHAR'A,B)'CHAR':"""" ;PP("""",""""); 'OP'?=:==('CHAR'A,B)'CHAR':B, ?=:==('CHAR'A)'CHAR':A; ?=:=""""?=:=?=:=?=:=""""?=:=""""); #'COMPL'# ((001'I'-02;'SKIP'; 001'I'-02;001'I'-02); (001'I'-02,'SKIP', 001'I'-02,001'I'-02); 'STRUCT'('COMPL'A,B,C,D) A= (001'I'-02,'SKIP', 001'I'-02,001'I'-02); []'COMPL'B=(001'I'-02,'SKIP', 001'I'-02,001'I'-02); 'CASE' 3 'IN'001'I'-02,'SKIP', 001'I'-02,001'I'-02 'OUT'001'I'-02'ESAC' ; ('UNION'('REF' 'COMPL','PROC' 'COMPL')A:='HEAP' 'COMPL' ;A!('REF' 'COMPL'):001'I'-02); 'COMPL'D=001'I'-02; 'COMPL'V,VV:=001'I'-02;V:=001'I'-02; 'PROC' PP=('COMPL'A,B)'COMPL':001'I'-02 ;PP(001'I'-02,001'I'-02); 'OP'?=:==('COMPL'A,B)'COMPL':B, ?=:==('COMPL'A)'COMPL':A; ?=:=(001'I'-02)?=:=?=:=?=:=(001'I'-02)?=:=(001'I'-02)); #'BITS'# ((8R7054;'SKIP'; 8R7054;8R7054); (8R7054,'SKIP', 8R7054,8R7054); 'STRUCT'('BITS'A,B,C,D) A= (8R7054,'SKIP', 8R7054,8R7054); []'BITS'B=(8R7054,'SKIP', 8R7054,8R7054); 'CASE' 3 'IN'8R7054,'SKIP', 8R7054,8R7054 'OUT'8R7054'ESAC' ; ('UNION'('REF' 'BITS','PROC' 'BITS')A:='HEAP' 'BITS' ;A!('REF' 'BITS'):8R7054); 'BITS'D=8R7054; 'BITS'V,VV:=8R7054;V:=8R7054; 'PROC' PP=('BITS'A,B)'BITS':8R7054 ;PP(8R7054,8R7054); 'OP'?=:==('BITS'A,B)'BITS':B, ?=:==('BITS'A)'BITS':A; ?=:=8R7054?=:=?=:=?=:=8R7054?=:=8R7054); #'STRING'# (("#(""'END'#";'SKIP'; "#(""'END'#";"#(""'END'#"); ("#(""'END'#",'SKIP', "#(""'END'#","#(""'END'#"); 'STRUCT'('STRING'A,B,C,D) A= ("#(""'END'#",'SKIP', "#(""'END'#","#(""'END'#"); []'STRING'B=("#(""'END'#",'SKIP', "#(""'END'#","#(""'END'#"); 'CASE' 3 'IN'"#(""'END'#",'SKIP', "#(""'END'#","#(""'END'#" 'OUT'"#(""'END'#"'ESAC' ; ('UNION'('REF' 'STRING','PROC' 'STRING')A:='HEAP' 'STRING' ;A!('REF' 'STRING'):"#(""'END'#"); 'STRING'D="#(""'END'#"; 'STRING'V,VV:="#(""'END'#";V:="#(""'END'#"; 'PROC' PP=('STRING'A,B)'STRING':"#(""'END'#" ;PP("#(""'END'#","#(""'END'#"); 'OP'?=:==('STRING'A,B)'STRING':B, ?=:==('STRING'A)'STRING':A; ?=:="#(""'END'#"?=:=?=:=?=:="#(""'END'#"?=:="#(""'END'#"); #TESTS SEMANTIQUES# 'INT' CTR:=0; PRINT(("'BOOL' DENOTATIONS",NEWLINE)) ; CTR+:='ABS''TRUE'+1-'ABS''FALSE'; PRINT(("TRUE : ",'TRUE'," FALSE : ",'FALSE',NEWLINE)) ; PRINT(("'INT' DENOTATIONS",NEWLINE)) ; PRINT(("'REAL' DENOTATIONS",NEWLINE)) ; PRINT(("'CHAR' DENOTATIONS",NEWLINE)) ; PRINT((" DENOT.READ",NEWLINE)) ; []'CHAR' K = ( "#","@",",","?","$","*",".","<","-","+", "A"," ","Z",")","E","[","R","T","!" ,"Y","1","U","2","I","3","O","&","P","0" ,"/","Q",">","S",":","D",";","F","^","G" ,"'","H","4","J","5","K","6","L","W","?" ,"X","""","C","=","V","]","B","(","N","7","M","8","9"," "); [1:'UPB'K]'CHAR' L;'FOR' I 'TO''UPB'K'DO' READ(L[I]);PRINT((I," ",K[I]," ",L[I],NEWLINE)) ; (K[I] = L[I] ! CTR+:=1 ! PRINT("ERR.CHAR")) 'OD' ; PRINT(("'COMPL' DENOTATIONS",NEWLINE)) ; ('ABS'(-2*RE'OF''COMPL'(-00001,002)- 'IM''COMPL'(-000001,0000000000000000000002)) > .001 ! PRINT("ERR.COMPL") ! CTR+:=1) ; PRINT(("'BITS' DENOTATIONS",NEWLINE)) ; (2R101010111100110111101111/=16RABCDEF!PRINT("ERR.BITS") !:8R3377337733/=4R123333123233123!CTR+:=1!PRINT("ERR.BITS")) ; PRINT(("'STRING' DENOTATIONS",NEWLINE)) ; PRINT((NEWLINE,('STRING' S;READ((NEWLINE,S));S = ",$.@?*<-0/+ )[!123&AZERTYUIOP>:;^'456QSDFGHJKL?""=](789WXCVBNM " ! CTR+:=1 ; S ! "ERR.STRING 1"))) ; ("?""=]( 789"[3:7]="=]( 7"!CTR+:=1!PRINT("ERR.STRING 2")) ; PRINT((NEWLINE,"VOID DENOTATION",NEWLINE)) ; ('UNION'('BYTES','VOID') U:='EMPTY' ; U ! ('VOID') : CTR+:=1 ! PRINT("ERR.VOID")) ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R811 # (PRINT(("INTEGRAL DENOTATIONS",NEWLINE)) ; 'INT' VF = 258 ; 'INT' CTR:=0 ; 'PROC' E = ('INT' A,B)'VOID' : (A=B!CTR+:=1!PRINT(("ER INT",A,B,NEWLINE))) ; E(1+255, 256) ; E(1+256, 257) ; E(1+4095, 4096) ; E(1+10000, 10001) ; E(1+32768, 32769) ; E(1-255,-254) ; E(1-256,-255) ; E(1-4095, -4094) ; E(1-10000, -9999) ; E(1-32768, -32767) ; E(1*255, 255) ; E(1*256, 256) ; E(1*4095, 4095) ; E(1*10000, 10000) ; E(1*32768, 32768) ; E(0+255, 255) ; E(0+256, 256) ; E(0+4095, 4095) ; E(0+10000, 10000) ; E(0+32768, 32768) ; E(0-255,-255) ; E(0-256,-256) ; E(0-4095, -4095) ; E(0-10000, -10000) ; E(0-32768, -32768) ; E(0*255, 0) ; E(0*256, 0) ; E(0*4095, 0) ; E(0*10000, 0) ; E(0*32768, 0) ; E(0000+255, 255) ; E(0000+256, 256) ; E(0000+4095, 4095) ; E(0000+10000, 10000) ; E(0000+32768, 32768) ; E(0000-255,-255) ; E(0000-256,-256) ; E(0000-4095, -4095) ; E(0000-10000, -10000) ; E(0000-32768, -32768) ; E(0000*255, 0) ; E(0000*256, 0) ; E(0000*4095, 0) ; E(0000*10000, 0) ; E(0000*32768, 0) ; E(4+255, 259) ; E(4+256, 260) ; E(4+4095, 4099) ; E(4+10000, 10004) ; E(4+32768, 32772) ; E(4-255,-251) ; E(4-256,-252) ; E(4-4095, -4091) ; E(4-10000, -9996) ; E(4-32768, -32764) ; E(4*255, 1020) ; E(4*256, 1024) ; E(4*4095, 16380) ; E(4*10000, 40000) ; E(4*32768, 131072) ; E(10+255, 265) ; E(10+256, 266) ; E(10+4095, 4105) ; E(10+10000, 10010) ; E(10+32768, 32778) ; E(10-255,-245) ; E(10-256,-246) ; E(10-4095, -4085) ; E(10-10000, -9990) ; E(10-32768, -32758) ; E(10*255, 2550) ; E(10*256, 2560) ; E(10*4095, 40950) ; E(10*10000, 100000) ; E(10*32768, 327680) ; E(16+255, 271) ; E(16+256, 272) ; E(16+4095, 4111) ; E(16+10000, 10016) ; E(16+32768, 32784) ; E(16-255,-239) ; E(16-256,-240) ; E(16-4095, -4079) ; E(16-10000, -9984) ; E(16-32768, -32752) ; E(16*255, 4080) ; E(16*256, 4096) ; E(16*4095, 65520) ; E(16*10000, 160000) ; E(16*32768, 524288) ; E(64+255, 319) ; E(64+256, 320) ; E(64+4095, 4159) ; E(64+10000, 10064) ; E(64+32768, 32832) ; E(64-255,-191) ; E(64-256,-192) ; E(64-4095, -4031) ; E(64-10000, -9936) ; E(64-32768, -32704) ; E(64*255, 16320) ; E(64*256, 16384) ; E(64*4095, 262080) ; E(64*10000, 640000) ; E(64*32768, 2097152) ; E(00011+255, 266) ; E(00011+256, 267) ; E(00011+4095, 4106) ; E(00011+10000, 10011) ; E(00011+32768, 32779) ; E(00011-255,-244) ; E(00011-256,-245) ; E(00011-4095, -4084) ; E(00011-10000, -9989) ; E(00011-32768, -32757) ; E(00011*255, 2805) ; E(00011*256, 2816) ; E(00011*4095, 45045) ; E(00011*10000, 110000) ; E(00011*32768, 360448) ; E(255+1, 256) ; E(255+0, 255) ; E(255+0000, 255) ; E(255+4, 259) ; E(255+10, 265) ; E(255+16, 271) ; E(255+64, 319) ; E(255+00011, 266) ; E(255-1, 254) ; E(255-0, 255) ; E(255-0000, 255) ; E(255-4, 251) ; E(255-10, 245) ; E(255-16, 239) ; E(255-64, 191) ; E(255-00011, 244) ; E(255*1, 255) ; E(255*0, 0) ; E(255*0000, 0) ; E(255*4, 1020) ; E(255*10, 2550) ; E(255*16, 4080) ; E(255*64, 16320) ; E(255*00011, 2805) ; E(256+1, 257) ; E(256+0, 256) ; E(256+0000, 256) ; E(256+4, 260) ; E(256+10, 266) ; E(256+16, 272) ; E(256+64, 320) ; E(256+00011, 267) ; E(256-1, 255) ; E(256-0, 256) ; E(256-0000, 256) ; E(256-4, 252) ; E(256-10, 246) ; E(256-16, 240) ; E(256-64, 192) ; E(256-00011, 245) ; E(256*1, 256) ; E(256*0, 0) ; E(256*0000, 0) ; E(256*4, 1024) ; E(256*10, 2560) ; E(256*16, 4096) ; E(256*64, 16384) ; E(256*00011, 2816) ; E(4095+1, 4096) ; E(4095+0, 4095) ; E(4095+0000, 4095) ; E(4095+4, 4099) ; E(4095+10, 4105) ; E(4095+16, 4111) ; E(4095+64, 4159) ; E(4095+00011, 4106) ; E(4095-1, 4094) ; E(4095-0, 4095) ; E(4095-0000, 4095) ; E(4095-4, 4091) ; E(4095-10, 4085) ; E(4095-16, 4079) ; E(4095-64, 4031) ; E(4095-00011, 4084) ; E(4095*1, 4095) ; E(4095*0, 0) ; E(4095*0000, 0) ; E(4095*4, 16380) ; E(4095*10, 40950) ; E(4095*16, 65520) ; E(4095*64, 262080) ; E(4095*00011, 45045) ; E(10000+1, 10001) ; E(10000+0, 10000) ; E(10000+0000, 10000) ; E(10000+4, 10004) ; E(10000+10, 10010) ; E(10000+16, 10016) ; E(10000+64, 10064) ; E(10000+00011, 10011) ; E(10000-1, 9999) ; E(10000-0, 10000) ; E(10000-0000, 10000) ; E(10000-4, 9996) ; E(10000-10, 9990) ; E(10000-16, 9984) ; E(10000-64, 9936) ; E(10000-00011, 9989) ; E(10000*1, 10000) ; E(10000*0, 0) ; E(10000*0000, 0) ; E(10000*4, 40000) ; E(10000*10, 100000) ; E(10000*16, 160000) ; E(10000*64, 640000) ; E(10000*00011, 110000) ; E(32768+1, 32769) ; E(32768+0, 32768) ; E(32768+0000, 32768) ; E(32768+4, 32772) ; E(32768+10, 32778) ; E(32768+16, 32784) ; E(32768+64, 32832) ; E(32768+00011, 32779) ; E(32768-1, 32767) ; E(32768-0, 32768) ; E(32768-0000, 32768) ; E(32768-4, 32764) ; E(32768-10, 32758) ; E(32768-16, 32752) ; E(32768-64, 32704) ; E(32768-00011, 32757) ; E(32768*1, 32768) ; E(32768*0, 0) ; E(32768*0000, 0) ; E(32768*4, 131072) ; E(32768*10, 327680) ; E(32768*16, 524288) ; E(32768*64, 2097152) ; E(32768*00011, 360448) ; E(1+131001, 131002) ; E(1+1000000000, 1000000001) ; E(1+2147483646, 2147483647) ; E(1-131001, -131000) ; E(1-1000000000, -999999999) ; E(1-2147483646,-2147483645) ; E(1*131001, 131001) ; E(1*1000000000, 1000000000) ; E(1*2147483646, 2147483646) ; E(131001+1, 131002) ; E(131001-1, 131000) ; E(131001*1, 131001) ; E(1000000000+1, 1000000001) ; E(1000000000-1, 999999999) ; E(1000000000*1, 1000000000) ; E(2147483646+1, 2147483647) ; E(2147483646-1, 2147483645) ; E(2147483646*1, 2147483646) ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R812 # (PRINT(("REAL DENOTATIONS",NEWLINE)) ; 'INT' VF = 704 ; 'INT' CTR:=0 , CT:=0 ; 'REAL' ERC:=0 , SUPER:=0 , ER ; 'PROC' R = ('REAL' A,B)'VOID' : ((B=0!A=0!(ER:='ABS'((A-B)/B))<1E-5) ! CTR+:=1 ; (B/=0!CT+:=1;ERC+:=ER;(ER>SUPER!SUPER:=ER)) ! PRINT(("ER REAL",A,B,NEWLINE))) ; R(.1*2.73801, 2.7380079E-01) ; R(.1E1*2.73801, 2.7380094E+00) ; R(.1E+0*2.73801, 2.7380079E-01) ; R(.1E-0000*2.73801, 2.7380079E-01) ; R(.1E4*2.73801, 2.7380092E+03) ; R(.1E+10*2.73801, 2.7380093E+09) ; R(.1E-16*2.73801, 2.7380088E-17) ; R(.1E64*2.73801, 2.7380090E+63) ; R(.1E+00011*2.73801, 2.7380088E+10) ; R(.0*2.73801, 0.0000000E+00) ; R(.0E-1*2.73801, 0.0000000E+00) ; R(.0E0*2.73801, 0.0000000E+00) ; R(.0E+0000*2.73801, 0.0000000E+00) ; R(.0E-4*2.73801, 0.0000000E+00) ; R(.0E10*2.73801, 0.0000000E+00) ; R(.0E+16*2.73801, 0.0000000E+00) ; R(.0E-64*2.73801, 0.0000000E+00) ; R(.0E00011*2.73801, 0.0000000E+00) ; R(.0000*2.73801, 0.0000000E+00) ; R(.0000E+1*2.73801, 0.0000000E+00) ; R(.0000E-0*2.73801, 0.0000000E+00) ; R(.0000E0000*2.73801, 0.0000000E+00) ; R(.0000E+4*2.73801, 0.0000000E+00) ; R(.0000E-10*2.73801, 0.0000000E+00) ; R(.0000E16*2.73801, 0.0000000E+00) ; R(.0000E+64*2.73801, 0.0000000E+00) ; R(.0000E-00011*2.73801, 0.0000000E+00) ; R(.4*2.73801, 1.0952033E+00) ; R(.4E1*2.73801, 1.0952037E+01) ; R(.4E+0*2.73801, 1.0952033E+00) ; R(.4E-0000*2.73801, 1.0952033E+00) ; R(.4E4*2.73801, 1.0952035E+04) ; R(.4E+10*2.73801, 1.0952036E+10) ; R(.4E-16*2.73801, 1.0952035E-16) ; R(.4E64*2.73801, 1.0952036E+64) ; R(.4E+00011*2.73801, 1.0952035E+11) ; R(.10*2.73801, 2.7380079E-01) ; R(.10E-1*2.73801, 2.7380086E-02) ; R(.10E0*2.73801, 2.7380079E-01) ; R(.10E+0000*2.73801, 2.7380079E-01) ; R(.10E-4*2.73801, 2.7380083E-05) ; R(.10E10*2.73801, 2.7380093E+09) ; R(.10E+16*2.73801, 2.7380091E+15) ; R(.10E-64*2.73801, 2.7380081E-65) ; R(.10E00011*2.73801, 2.7380088E+10) ; R(.16*2.73801, 4.3808138E-01) ; R(.16E+1*2.73801, 4.3808126E+00) ; R(.16E-0*2.73801, 4.3808138E-01) ; R(.16E0000*2.73801, 4.3808138E-01) ; R(.16E+4*2.73801, 4.3808125E+03) ; R(.16E-10*2.73801, 4.3808123E-11) ; R(.16E16*2.73801, 4.3808145E+15) ; R(.16E+64*2.73801, 4.3808148E+63) ; R(.16E-00011*2.73801, 4.3808134E-12) ; R(.64*2.73801, 1.7523250E+00) ; R(.64E1*2.73801, 1.7523254E+01) ; R(.64E+0*2.73801, 1.7523250E+00) ; R(.64E-0000*2.73801, 1.7523250E+00) ; R(.64E4*2.73801, 1.7523257E+04) ; R(.64E+10*2.73801, 1.7523257E+10) ; R(.64E-16*2.73801, 1.7523258E-16) ; R(.64E64*2.73801, 1.7523257E+64) ; R(.64E+00011*2.73801, 1.7523258E+11) ; R(.00011*2.73801, 3.0118087E-04) ; R(.00011E-1*2.73801, 3.0118098E-05) ; R(.00011E0*2.73801, 3.0118087E-04) ; R(.00011E+0000*2.73801, 3.0118087E-04) ; R(.00011E-4*2.73801, 3.0118094E-08) ; R(.00011E10*2.73801, 3.0118100E+06) ; R(.00011E+16*2.73801, 3.0118080E+12) ; R(.00011E-64*2.73801, 3.0118100E-68) ; R(.00011E00011*2.73801, 3.0118096E+07) ; R(.255*2.73801, 6.9819235E-01) ; R(.255E+1*2.73801, 6.9819211E+00) ; R(.255E-0*2.73801, 6.9819235E-01) ; R(.255E0000*2.73801, 6.9819235E-01) ; R(.255E+4*2.73801, 6.9819218E+03) ; R(.255E-10*2.73801, 6.9819205E-11) ; R(.255E16*2.73801, 6.9819203E+15) ; R(.255E+64*2.73801, 6.9819198E+63) ; R(.255E-00011*2.73801, 6.9819219E-12) ; R(.256*2.73801, 7.0093035E-01) ; R(.256E1*2.73801, 7.0093021E+00) ; R(.256E+0*2.73801, 7.0093035E-01) ; R(.256E-0000*2.73801, 7.0093035E-01) ; R(.256E4*2.73801, 7.0093007E+03) ; R(.256E+10*2.73801, 7.0093004E+09) ; R(.256E-16*2.73801, 7.0093021E-17) ; R(.256E64*2.73801, 7.0093005E+63) ; R(.256E+00011*2.73801, 7.0092980E+10) ; R(.4095*2.73801, 1.1212139E+00) ; R(.4095E-1*2.73801, 1.1212146E-01) ; R(.4095E0*2.73801, 1.1212139E+00) ; R(.4095E+0000*2.73801, 1.1212139E+00) ; R(.4095E-4*2.73801, 1.1212145E-04) ; R(.4095E10*2.73801, 1.1212144E+10) ; R(.4095E+16*2.73801, 1.1212145E+16) ; R(.4095E-64*2.73801, 1.1212147E-64) ; R(.4095E00011*2.73801, 1.1212147E+11) ; R(.10000*2.73801, 2.7380079E-01) ; R(.10000E+1*2.73801, 2.7380084E+00) ; R(.10000E-0*2.73801, 2.7380079E-01) ; R(.10000E0000*2.73801, 2.7380079E-01) ; R(.10000E+4*2.73801, 2.7380085E+03) ; R(.10000E-10*2.73801, 2.7380084E-11) ; R(.10000E16*2.73801, 2.7380091E+15) ; R(.10000E+64*2.73801, 2.7380090E+63) ; R(.10000E-00011*2.73801, 2.7380077E-12) ; R(.32768*2.73801, 8.9719086E-01) ; R(.32768E1*2.73801, 8.9719066E+00) ; R(.32768E+0*2.73801, 8.9719086E-01) ; R(.32768E-0000*2.73801, 8.9719086E-01) ; R(.32768E4*2.73801, 8.9719062E+03) ; R(.32768E+10*2.73801, 8.9719070E+09) ; R(.32768E-16*2.73801, 8.9719079E-17) ; R(.32768E64*2.73801, 8.9719054E+63) ; R(.32768E+00011*2.73801, 8.9719046E+10) ; R(.131001*2.73801, 3.5868191E-01) ; R(.131001E-1*2.73801, 3.5868193E-02) ; R(.131001E0*2.73801, 3.5868191E-01) ; R(.131001E+0000*2.73801, 3.5868191E-01) ; R(.131001E-4*2.73801, 3.5868186E-05) ; R(.131001E10*2.73801, 3.5868193E+09) ; R(.131001E+16*2.73801, 3.5868192E+15) ; R(.131001E-64*2.73801, 3.5868195E-65) ; R(.131001E00011*2.73801, 3.5868188E+10) ; R(.1000000000*2.73801, 2.7380079E-01) ; R(.1000000000E+1*2.73801, 2.7380084E+00) ; R(.1000000000E-0*2.73801, 2.7380079E-01) ; R(.1000000000E0000*2.73801, 2.7380079E-01) ; R(.1000000000E+4*2.73801, 2.7380085E+03) ; R(.1000000000E-10*2.73801, 2.7380084E-11) ; R(.1000000000E16*2.73801, 2.7380091E+15) ; R(.1000000000E+64*2.73801, 2.7380090E+63) ; R(.1000000000E-00011*2.73801, 2.7380077E-12) ; R(.2147483646*2.73801, 5.8798289E-01) ; R(.2147483646E1*2.73801, 5.8798274E+00) ; R(.2147483646E+0*2.73801, 5.8798289E-01) ; R(.2147483646E-0000*2.73801, 5.8798289E-01) ; R(.2147483646E4*2.73801, 5.8798281E+03) ; R(.2147483646E+10*2.73801, 5.8798284E+09) ; R(.2147483646E-16*2.73801, 5.8798274E-17) ; R(.2147483646E64*2.73801, 5.8798302E+63) ; R(.2147483646E+00011*2.73801, 5.8798292E+10) ; R(1.1*2.73801, 3.0118083E+00) ; R(1.0E-1*2.73801, 2.7380079E-01) ; R(1.10E0*2.73801, 3.0118083E+00) ; R(1.4E+0000*2.73801, 3.8332118E+00) ; R(1.4E-4*2.73801, 3.8332119E-04) ; R(1.0000E10*2.73801, 2.7380088E+10) ; R(1.1E+16*2.73801, 3.0118101E+16) ; R(1.00011E-64*2.73801, 2.7383098E-64) ; R(1.0E00011*2.73801, 2.7380075E+11) ; R(0.64*2.73801, 1.7523250E+00) ; R(0.1E+1*2.73801, 2.7380094E+00) ; R(0.16E-0*2.73801, 4.3808138E-01) ; R(0.0E0000*2.73801, 0.0000000E+00) ; R(0.16E+4*2.73801, 4.3808125E+03) ; R(0.0000E-10*2.73801, 0.0000000E+00) ; R(0.4E16*2.73801, 1.0952033E+16) ; R(0.10E+64*2.73801, 2.7380090E+63) ; R(0.0E-00011*2.73801, 0.0000000E+00) ; R(0000.64*2.73801, 1.7523250E+00) ; R(0000.64E1*2.73801, 1.7523254E+01) ; R(0000.16E+0*2.73801, 4.3808138E-01) ; R(0000.16E-0000*2.73801, 4.3808138E-01) ; R(0000.10E4*2.73801, 2.7380092E+03) ; R(0000.10E+10*2.73801, 2.7380093E+09) ; R(0000.10E-16*2.73801, 2.7380088E-17) ; R(0000.0000E64*2.73801, 0.0000000E+00) ; R(0000.0000E+00011*2.73801, 0.0000000E+00) ; R(4.0000*2.73801, 1.0952034E+01) ; R(4.16E-1*2.73801, 1.1390113E+00) ; R(4.00011E0*2.73801, 1.0952337E+01) ; R(4.0000E+0000*2.73801, 1.0952034E+01) ; R(4.4E-4*2.73801, 1.2047237E-03) ; R(4.16E10*2.73801, 1.1390117E+11) ; R(4.16E+16*2.73801, 1.1390115E+17) ; R(4.1E-64*2.73801, 1.1225838E-63) ; R(4.64E00011*2.73801, 1.2704358E+12) ; R(10.64*2.73801, 2.9132415E+01) ; R(10.4E+1*2.73801, 2.8475292E+02) ; R(10.10E-0*2.73801, 2.7653884E+01) ; R(10.4E0000*2.73801, 2.8475296E+01) ; R(10.16E+4*2.73801, 2.7818175E+05) ; R(10.4E-10*2.73801, 2.8475293E-09) ; R(10.0E16*2.73801, 2.7380079E+17) ; R(10.64E+64*2.73801, 2.9132410E+65) ; R(10.64E-00011*2.73801, 2.9132407E-10) ; R(16.64*2.73801, 4.5560470E+01) ; R(16.64E1*2.73801, 4.5560473E+02) ; R(16.0E+0*2.73801, 4.3808135E+01) ; R(16.10E-0000*2.73801, 4.4081924E+01) ; R(16.10E4*2.73801, 4.4081950E+05) ; R(16.10E+10*2.73801, 4.4081944E+11) ; R(16.16E-16*2.73801, 4.4246222E-15) ; R(16.4E64*2.73801, 4.4903342E+65) ; R(16.4E+00011*2.73801, 4.4903327E+12) ; R(64.0*2.73801, 1.7523255E+02) ; R(64.0E-1*2.73801, 1.7523254E+01) ; R(64.4E0*2.73801, 1.7632778E+02) ; R(64.10E+0000*2.73801, 1.7550637E+02) ; R(64.4E-4*2.73801, 1.7632775E-02) ; R(64.00011E10*2.73801, 1.7523288E+12) ; R(64.4E+16*2.73801, 1.7632780E+18) ; R(64.0000E-64*2.73801, 1.7523256E-62) ; R(64.10E00011*2.73801, 1.7550639E+13) ; R(00011.0*2.73801, 3.0118087E+01) ; R(00011.0E+1*2.73801, 3.0118090E+02) ; R(00011.16E-0*2.73801, 3.0556182E+01) ; R(00011.4E0000*2.73801, 3.1213302E+01) ; R(00011.4E+4*2.73801, 3.1213306E+05) ; R(00011.1E-10*2.73801, 3.0391900E-09) ; R(00011.64E16*2.73801, 3.1870409E+17) ; R(00011.0000E+64*2.73801, 3.0118076E+65) ; R(00011.0E-00011*2.73801, 3.0118085E-10) ; R(255.0000*2.73801, 6.9819213E+02) ; R(255.0000E1*2.73801, 6.9819218E+03) ; R(255.4E+0*2.73801, 6.9928735E+02) ; R(255.0000E-0000*2.73801, 6.9819213E+02) ; R(255.16E4*2.73801, 6.9863040E+06) ; R(255.00011E+10*2.73801, 6.9819254E+12) ; R(255.64E-16*2.73801, 6.9994465E-14) ; R(255.16E64*2.73801, 6.9863013E+66) ; R(255.4E+00011*2.73801, 6.9928728E+13) ; R(256.0*2.73801, 7.0093017E+02) ; R(256.0E-1*2.73801, 7.0093002E+01) ; R(256.1E0*2.73801, 7.0120361E+02) ; R(256.1E+0000*2.73801, 7.0120361E+02) ; R(256.0000E-4*2.73801, 7.0092976E-02) ; R(256.0E10*2.73801, 7.0093027E+12) ; R(256.1E+16*2.73801, 7.0120386E+18) ; R(256.0000E-64*2.73801, 7.0093016E-62) ; R(256.64E00011*2.73801, 7.0268231E+13) ; R(4095.10*2.73801, 1.1212421E+04) ; R(4095.0000E+1*2.73801, 1.1212143E+05) ; R(4095.16E-0*2.73801, 1.1212585E+04) ; R(4095.0E0000*2.73801, 1.1212144E+04) ; R(4095.64E+4*2.73801, 1.1213900E+08) ; R(4095.0000E-10*2.73801, 1.1212141E-06) ; R(4095.10E16*2.73801, 1.1212416E+20) ; R(4095.1E+64*2.73801, 1.1212414E+68) ; R(4095.0000E-00011*2.73801, 1.1212148E-07) ; R(10000.4*2.73801, 2.7381183E+04) ; R(10000.10E1*2.73801, 2.7380350E+05) ; R(10000.00011E+0*2.73801, 2.7380093E+04) ; R(10000.4E-0000*2.73801, 2.7381183E+04) ; R(10000.10E4*2.73801, 2.7380352E+08) ; R(10000.16E+10*2.73801, 2.7380527E+14) ; R(10000.1E-16*2.73801, 2.7380363E-12) ; R(10000.0000E64*2.73801, 2.7380090E+68) ; R(10000.00011E+00011*2.73801, 2.7380091E+15) ; R(32768.0*2.73801, 8.9719062E+04) ; R(32768.4E-1*2.73801, 8.9720156E+03) ; R(32768.00011E0*2.73801, 8.9719062E+04) ; R(32768.0E+0000*2.73801, 8.9719062E+04) ; R(32768.64E-4*2.73801, 8.9720821E+00) ; R(32768.00011E10*2.73801, 8.9719075E+14) ; R(32768.16E+16*2.73801, 8.9719445E+20) ; R(32768.0000E-64*2.73801, 8.9719091E-60) ; R(32768.00011E00011*2.73801, 8.9719075E+15) ; R(131001.0000*2.73801, 3.5868175E+05) ; R(131001.1E+1*2.73801, 3.5868220E+06) ; R(131001.64E-0*2.73801, 3.5868368E+05) ; R(131001.4E0000*2.73801, 3.5868300E+05) ; R(131001.64E+4*2.73801, 3.5868367E+09) ; R(131001.0E-10*2.73801, 3.5868186E-05) ; R(131001.10E16*2.73801, 3.5868215E+21) ; R(131001.10E+64*2.73801, 3.5868218E+69) ; R(131001.10E-00011*2.73801, 3.5868215E-06) ; R(1000000000.1*2.73801, 2.7380093E+09) ; R(1000000000.4E1*2.73801, 2.7380088E+10) ; R(1000000000.4E+0*2.73801, 2.7380093E+09) ; R(1000000000.16E-0000*2.73801, 2.7380093E+09) ; R(1000000000.10E4*2.73801, 2.7380080E+13) ; R(1000000000.4E+10*2.73801, 2.7380091E+19) ; R(1000000000.16E-16*2.73801, 2.7380082E-07) ; R(1000000000.0E64*2.73801, 2.7380090E+73) ; R(1000000000.0E+00011*2.73801, 2.7380089E+20) ; R(2147483646.0000*2.73801, 5.8798284E+09) ; R(2147483646.10E-1*2.73801, 5.8798284E+08) ; R(2147483646.0E0*2.73801, 5.8798284E+09) ; R(2147483646.64E+0000*2.73801, 5.8798284E+09) ; R(2147483646.0000E-4*2.73801, 5.8798287E+05) ; R(2147483646.0000E10*2.73801, 5.8798293E+19) ; R(2147483646.16E+16*2.73801, 5.8798277E+25) ; R(2147483646.10E-64*2.73801, 5.8798303E-55) ; R(2147483646.4E00011*2.73801, 5.8798293E+20) ; R(1.4095*2.73801, 3.8592214E+00) ; R(1.4095E+1*2.73801, 3.8592239E+01) ; R(1.32768E-0*2.73801, 3.6351985E+00) ; R(1.255E0000*2.73801, 3.4361991E+00) ; R(1.4095E+4*2.73801, 3.8592242E+04) ; R(1.256E-10*2.73801, 3.4389380E-10) ; R(1.255E16*2.73801, 3.4362010E+16) ; R(1.32768E+64*2.73801, 3.6351995E+64) ; R(1.256E-00011*2.73801, 3.4389394E-11) ; R(0.32768*2.73801, 8.9719086E-01) ; R(0.256E1*2.73801, 7.0093021E+00) ; R(0.255E+0*2.73801, 6.9819235E-01) ; R(0.256E-0000*2.73801, 7.0093035E-01) ; R(0.255E4*2.73801, 6.9819218E+03) ; R(0.32768E+10*2.73801, 8.9719070E+09) ; R(0.256E-16*2.73801, 7.0093021E-17) ; R(0.10000E64*2.73801, 2.7380090E+63) ; R(0.255E+00011*2.73801, 6.9819170E+10) ; R(0000.10000*2.73801, 2.7380079E-01) ; R(0000.256E-1*2.73801, 7.0092976E-02) ; R(0000.255E0*2.73801, 6.9819235E-01) ; R(0000.10000E+0000*2.73801, 2.7380079E-01) ; R(0000.32768E-4*2.73801, 8.9719047E-05) ; R(0000.255E10*2.73801, 6.9819228E+09) ; R(0000.32768E+16*2.73801, 8.9719075E+15) ; R(0000.255E-64*2.73801, 6.9819222E-65) ; R(0000.32768E00011*2.73801, 8.9719046E+10) ; R(4.32768*2.73801, 1.1849226E+01) ; R(4.4095E+1*2.73801, 1.2073248E+02) ; R(4.32768E-0*2.73801, 1.1849226E+01) ; R(4.10000E0000*2.73801, 1.1225836E+01) ; R(4.256E+4*2.73801, 1.1652962E+05) ; R(4.255E-10*2.73801, 1.1650225E-09) ; R(4.4095E16*2.73801, 1.2073249E+17) ; R(4.255E+64*2.73801, 1.1650220E+65) ; R(4.4095E-00011*2.73801, 1.2073249E-10) ; R(10.256*2.73801, 2.8081008E+01) ; R(10.4095E1*2.73801, 2.8501293E+02) ; R(10.256E+0*2.73801, 2.8081008E+01) ; R(10.32768E-0000*2.73801, 2.8277282E+01) ; R(10.32768E4*2.73801, 2.8277268E+05) ; R(10.256E+10*2.73801, 2.8081016E+11) ; R(10.255E-16*2.73801, 2.8078280E-15) ; R(10.255E64*2.73801, 2.8078279E+65) ; R(10.255E+00011*2.73801, 2.8078285E+12) ; R(16.256*2.73801, 4.4509063E+01) ; R(16.10000E-1*2.73801, 4.4081935E+00) ; R(16.256E0*2.73801, 4.4509063E+01) ; R(16.255E+0000*2.73801, 4.4506301E+01) ; R(16.32768E-4*2.73801, 4.4705308E-03) ; R(16.32768E10*2.73801, 4.4705336E+11) ; R(16.32768E+16*2.73801, 4.4705338E+17) ; R(16.256E-64*2.73801, 4.4509059E-63) ; R(16.4095E00011*2.73801, 4.4929332E+12) ; R(64.32768*2.73801, 1.7612976E+02) ; R(64.256E+1*2.73801, 1.7593347E+03) ; R(64.4095E-0*2.73801, 1.7635377E+02) ; R(64.255E0000*2.73801, 1.7593075E+02) ; R(64.4095E+4*2.73801, 1.7635380E+06) ; R(64.10000E-10*2.73801, 1.7550632E-08) ; R(64.32768E16*2.73801, 1.7612977E+18) ; R(64.10000E+64*2.73801, 1.7550623E+66) ; R(64.10000E-00011*2.73801, 1.7550636E-09) ; R(00011.256*2.73801, 3.0819030E+01) ; R(00011.32768E1*2.73801, 3.1015283E+02) ; R(00011.255E+0*2.73801, 3.0816284E+01) ; R(00011.256E-0000*2.73801, 3.0819030E+01) ; R(00011.4095E4*2.73801, 3.1239318E+05) ; R(00011.32768E+10*2.73801, 3.1015279E+11) ; R(00011.10000E-16*2.73801, 3.0391900E-15) ; R(00011.10000E64*2.73801, 3.0391888E+65) ; R(00011.10000E+00011*2.73801, 3.0391884E+12) ; R(255.255*2.73801, 6.9889038E+02) ; R(255.256E-1*2.73801, 6.9889297E+01) ; R(255.10000E0*2.73801, 6.9846606E+02) ; R(255.256E+0000*2.73801, 6.9889331E+02) ; R(255.256E-4*2.73801, 6.9889307E-02) ; R(255.10000E10*2.73801, 6.9846612E+12) ; R(255.255E+16*2.73801, 6.9889038E+18) ; R(255.4095E-64*2.73801, 6.9931332E-62) ; R(255.10000E00011*2.73801, 6.9846586E+13) ; R(256.256*2.73801, 7.0163085E+02) ; R(256.10000E+1*2.73801, 7.0120390E+03) ; R(256.32768E-0*2.73801, 7.0182739E+02) ; R(256.32768E0000*2.73801, 7.0182739E+02) ; R(256.256E+4*2.73801, 7.0163130E+06) ; R(256.4095E-10*2.73801, 7.0205146E-08) ; R(256.4095E16*2.73801, 7.0205136E+18) ; R(256.256E+64*2.73801, 7.0163125E+66) ; R(256.10000E-00011*2.73801, 7.0120407E-09) ; R(4095.4095*2.73801, 1.1213269E+04) ; R(4095.32768E1*2.73801, 1.1213043E+05) ; R(4095.255E+0*2.73801, 1.1212843E+04) ; R(4095.255E-0000*2.73801, 1.1212843E+04) ; R(4095.10000E4*2.73801, 1.1212419E+08) ; R(4095.32768E+10*2.73801, 1.1213042E+14) ; R(4095.10000E-16*2.73801, 1.1212419E-12) ; R(4095.10000E64*2.73801, 1.1212414E+68) ; R(4095.10000E+00011*2.73801, 1.1212417E+15) ; R(10000.255*2.73801, 2.7380789E+04) ; R(10000.255E-1*2.73801, 2.7380788E+03) ; R(10000.10000E0*2.73801, 2.7380359E+04) ; R(10000.4095E+0000*2.73801, 2.7381203E+04) ; R(10000.4095E-4*2.73801, 2.7381181E+00) ; R(10000.255E10*2.73801, 2.7380788E+14) ; R(10000.256E+16*2.73801, 2.7380793E+20) ; R(10000.32768E-64*2.73801, 2.7380974E-60) ; R(10000.255E00011*2.73801, 2.7380789E+15) ; R(32768.10000*2.73801, 8.9719312E+04) ; R(32768.255E+1*2.73801, 8.9719775E+05) ; R(32768.4095E-0*2.73801, 8.9720187E+04) ; R(32768.256E0000*2.73801, 8.9719750E+04) ; R(32768.256E+4*2.73801, 8.9719782E+08) ; R(32768.4095E-10*2.73801, 8.9720188E-06) ; R(32768.256E16*2.73801, 8.9719754E+20) ; R(32768.32768E+64*2.73801, 8.9719984E+68) ; R(32768.10000E-00011*2.73801, 8.9719361E-07) ; R(131001.32768*2.73801, 3.5868281E+05) ; R(131001.256E1*2.73801, 3.5868250E+06) ; R(131001.4095E+0*2.73801, 3.5868300E+05) ; R(131001.4095E-0000*2.73801, 3.5868300E+05) ; R(131001.255E4*2.73801, 3.5868262E+09) ; R(131001.255E+10*2.73801, 3.5868265E+15) ; R(131001.256E-16*2.73801, 3.5868252E-11) ; R(131001.4095E64*2.73801, 3.5868296E+69) ; R(131001.4095E+00011*2.73801, 3.5868302E+16) ; R(1000000000.256*2.73801, 2.7380093E+09) ; R(1000000000.256E-1*2.73801, 2.7380070E+08) ; R(1000000000.10000E0*2.73801, 2.7380093E+09) ; R(1000000000.255E+0000*2.73801, 2.7380093E+09) ; R(1000000000.256E-4*2.73801, 2.7380093E+05) ; R(1000000000.255E10*2.73801, 2.7380091E+19) ; R(1000000000.4095E+16*2.73801, 2.7380077E+25) ; R(1000000000.32768E-64*2.73801, 2.7380084E-55) ; R(1000000000.256E00011*2.73801, 2.7380089E+20) ; R(2147483646.10000*2.73801, 5.8798284E+09) ; R(2147483646.256E+1*2.73801, 5.8798292E+10) ; R(2147483646.4095E-0*2.73801, 5.8798284E+09) ; R(2147483646.256E0000*2.73801, 5.8798284E+09) ; R(2147483646.10000E+4*2.73801, 5.8798253E+13) ; R(2147483646.256E-10*2.73801, 5.8798289E-01) ; R(2147483646.10000E16*2.73801, 5.8798277E+25) ; R(2147483646.10000E+64*2.73801, 5.8798295E+73) ; R(2147483646.255E-00011*2.73801, 5.8798298E-02) ; R(1.131001*2.73801, 3.0966892E+00) ; R(1.131001E1*2.73801, 3.0966903E+01) ; R(1.1000000000E+0*2.73801, 3.0118083E+00) ; R(1.131001E-0000*2.73801, 3.0966892E+00) ; R(1.131001E4*2.73801, 3.0966906E+04) ; R(1.1000000000E+10*2.73801, 3.0118092E+10) ; R(1.2147483646E-16*2.73801, 3.3259913E-16) ; R(1.1000000000E64*2.73801, 3.0118099E+64) ; R(1.2147483646E+00011*2.73801, 3.3259906E+11) ; R(0.1000000000*2.73801, 2.7380079E-01) ; R(0.1000000000E-1*2.73801, 2.7380086E-02) ; R(0.2147483646E0*2.73801, 5.8798289E-01) ; R(0.1000000000E+0000*2.73801, 2.7380079E-01) ; R(0.1000000000E-4*2.73801, 2.7380083E-05) ; R(0.2147483646E10*2.73801, 5.8798284E+09) ; R(0.1000000000E+16*2.73801, 2.7380091E+15) ; R(0.1000000000E-64*2.73801, 2.7380081E-65) ; R(0.131001E00011*2.73801, 3.5868188E+10) ; R(0000.1000000000*2.73801, 2.7380079E-01) ; R(0000.1000000000E+1*2.73801, 2.7380084E+00) ; R(0000.2147483646E-0*2.73801, 5.8798289E-01) ; R(0000.131001E0000*2.73801, 3.5868191E-01) ; R(0000.2147483646E+4*2.73801, 5.8798281E+03) ; R(0000.131001E-10*2.73801, 3.5868197E-11) ; R(0000.2147483646E16*2.73801, 5.8798274E+15) ; R(0000.2147483646E+64*2.73801, 5.8798302E+63) ; R(0000.131001E-00011*2.73801, 3.5868174E-12) ; R(4.1000000000*2.73801, 1.1225836E+01) ; R(4.2147483646E1*2.73801, 1.1540017E+02) ; R(4.1000000000E+0*2.73801, 1.1225836E+01) ; R(4.131001E-0000*2.73801, 1.1310717E+01) ; R(4.2147483646E4*2.73801, 1.1540018E+05) ; R(4.1000000000E+10*2.73801, 1.1225831E+11) ; R(4.2147483646E-16*2.73801, 1.1540017E-15) ; R(4.1000000000E64*2.73801, 1.1225828E+65) ; R(4.2147483646E+00011*2.73801, 1.1540019E+12) ; R(10.1000000000*2.73801, 2.7653884E+01) ; R(10.1000000000E-1*2.73801, 2.7653875E+00) ; R(10.1000000000E0*2.73801, 2.7653884E+01) ; R(10.131001E+0000*2.73801, 2.7738769E+01) ; R(10.2147483646E-4*2.73801, 2.7968075E-03) ; R(10.2147483646E10*2.73801, 2.7968058E+11) ; R(10.131001E+16*2.73801, 2.7738761E+17) ; R(10.131001E-64*2.73801, 2.7738764E-63) ; R(10.2147483646E00011*2.73801, 2.7968069E+12) ; R(16.2147483646*2.73801, 4.4396102E+01) ; R(16.1000000000E+1*2.73801, 4.4081933E+02) ; R(16.2147483646E-0*2.73801, 4.4396102E+01) ; R(16.2147483646E0000*2.73801, 4.4396102E+01) ; R(16.1000000000E+4*2.73801, 4.4081931E+05) ; R(16.131001E-10*2.73801, 4.4166803E-09) ; R(16.131001E16*2.73801, 4.4166818E+17) ; R(16.131001E+64*2.73801, 4.4166812E+65) ; R(16.1000000000E-00011*2.73801, 4.4081938E-10) ; R(64.2147483646*2.73801, 1.7582055E+02) ; R(64.131001E1*2.73801, 1.7559121E+03) ; R(64.2147483646E+0*2.73801, 1.7582055E+02) ; R(64.131001E-0000*2.73801, 1.7559126E+02) ; R(64.1000000000E4*2.73801, 1.7550630E+06) ; R(64.1000000000E+10*2.73801, 1.7550635E+12) ; R(64.131001E-16*2.73801, 1.7559125E-14) ; R(64.1000000000E64*2.73801, 1.7550623E+66) ; R(64.131001E+00011*2.73801, 1.7559125E+13) ; R(00011.2147483646*2.73801, 3.0706069E+01) ; R(00011.131001E-1*2.73801, 3.0476779E+00) ; R(00011.131001E0*2.73801, 3.0476776E+01) ; R(00011.1000000000E+0000*2.73801, 3.0391891E+01) ; R(00011.2147483646E-4*2.73801, 3.0706080E-03) ; R(00011.1000000000E10*2.73801, 3.0391894E+11) ; R(00011.2147483646E+16*2.73801, 3.0706068E+17) ; R(00011.131001E-64*2.73801, 3.0476761E-63) ; R(00011.2147483646E00011*2.73801, 3.0706059E+12) ; R(255.131001*2.73801, 6.9855102E+02) ; R(255.2147483646E+1*2.73801, 6.9878007E+03) ; R(255.2147483646E-0*2.73801, 6.9878027E+02) ; R(255.1000000000E0000*2.73801, 6.9846606E+02) ; R(255.131001E+4*2.73801, 6.9855100E+06) ; R(255.131001E-10*2.73801, 6.9855104E-08) ; R(255.131001E16*2.73801, 6.9855074E+18) ; R(255.2147483646E+64*2.73801, 6.9878022E+66) ; R(255.2147483646E-00011*2.73801, 6.9878005E-09) ; R(256.1000000000*2.73801, 7.0120361E+02) ; R(256.131001E1*2.73801, 7.0128867E+03) ; R(256.2147483646E+0*2.73801, 7.0151782E+02) ; R(256.131001E-0000*2.73801, 7.0128857E+02) ; R(256.131001E4*2.73801, 7.0128900E+06) ; R(256.1000000000E+10*2.73801, 7.0120395E+12) ; R(256.131001E-16*2.73801, 7.0128852E-14) ; R(256.131001E64*2.73801, 7.0128897E+66) ; R(256.131001E+00011*2.73801, 7.0128863E+13) ; R(4095.2147483646*2.73801, 1.1212734E+04) ; R(4095.131001E-1*2.73801, 1.1212502E+03) ; R(4095.2147483646E0*2.73801, 1.1212734E+04) ; R(4095.1000000000E+0000*2.73801, 1.1212421E+04) ; R(4095.2147483646E-4*2.73801, 1.1212730E+00) ; R(4095.1000000000E10*2.73801, 1.1212418E+14) ; R(4095.2147483646E+16*2.73801, 1.1212735E+20) ; R(4095.2147483646E-64*2.73801, 1.1212734E-60) ; R(4095.1000000000E00011*2.73801, 1.1212417E+15) ; R(10000.131001*2.73801, 2.7380445E+04) ; R(10000.2147483646E+1*2.73801, 2.7380675E+05) ; R(10000.1000000000E-0*2.73801, 2.7380359E+04) ; R(10000.131001E0000*2.73801, 2.7380445E+04) ; R(10000.2147483646E+4*2.73801, 2.7380659E+08) ; R(10000.2147483646E-10*2.73801, 2.7380674E-06) ; R(10000.1000000000E16*2.73801, 2.7380364E+20) ; R(10000.131001E+64*2.73801, 2.7380447E+68) ; R(10000.1000000000E-00011*2.73801, 2.7380360E-07) ; R(32768.2147483646*2.73801, 8.9719625E+04) ; R(32768.2147483646E1*2.73801, 8.9719675E+05) ; R(32768.1000000000E+0*2.73801, 8.9719312E+04) ; R(32768.131001E-0000*2.73801, 8.9719437E+04) ; R(32768.1000000000E4*2.73801, 8.9719296E+08) ; R(32768.131001E+10*2.73801, 8.9719450E+14) ; R(32768.2147483646E-16*2.73801, 8.9719655E-12) ; R(32768.1000000000E64*2.73801, 8.9719325E+68) ; R(32768.131001E+00011*2.73801, 8.9719418E+15) ; R(131001.2147483646*2.73801, 3.5868243E+05) ; R(131001.1000000000E-1*2.73801, 3.5868222E+04) ; R(131001.2147483646E0*2.73801, 3.5868243E+05) ; R(131001.2147483646E+0000*2.73801, 3.5868243E+05) ; R(131001.131001E-4*2.73801, 3.5868225E+01) ; R(131001.2147483646E10*2.73801, 3.5868251E+15) ; R(131001.131001E+16*2.73801, 3.5868232E+21) ; R(131001.1000000000E-64*2.73801, 3.5868206E-59) ; R(131001.2147483646E00011*2.73801, 3.5868246E+16) ; R(1000000000.1000000000*2.73801, 2.7380093E+09) ; R(1000000000.2147483646E+1*2.73801, 2.7380088E+10) ; R(1000000000.1000000000E-0*2.73801, 2.7380093E+09) ; R(1000000000.1000000000E0000*2.73801, 2.7380093E+09) ; R(1000000000.131001E+4*2.73801, 2.7380080E+13) ; R(1000000000.131001E-10*2.73801, 2.7380079E-01) ; R(1000000000.2147483646E16*2.73801, 2.7380077E+25) ; R(1000000000.131001E+64*2.73801, 2.7380090E+73) ; R(1000000000.2147483646E-00011*2.73801, 2.7380086E-02) ; R(2147483646.2147483646*2.73801, 5.8798284E+09) ; R(2147483646.1000000000E1*2.73801, 5.8798292E+10) ; R(2147483646.131001E+0*2.73801, 5.8798284E+09) ; R(2147483646.2147483646E-0000*2.73801, 5.8798284E+09) ; R(2147483646.131001E4*2.73801, 5.8798253E+13) ; R(2147483646.131001E+10*2.73801, 5.8798293E+19) ; R(2147483646.1000000000E-16*2.73801, 5.8798298E-07) ; R(2147483646.1000000000E64*2.73801, 5.8798295E+73) ; R(2147483646.1000000000E+00011*2.73801, 5.8798293E+20) ; R(1E-1*2.73801, 2.7380079E-01) ; R(1E0*2.73801, 2.7380094E+00) ; R(1E+0000*2.73801, 2.7380094E+00) ; R(1E-4*2.73801, 2.7380068E-04) ; R(1E10*2.73801, 2.7380088E+10) ; R(1E+16*2.73801, 2.7380085E+16) ; R(1E-64*2.73801, 2.7380084E-64) ; R(1E00011*2.73801, 2.7380075E+11) ; R(0E+1*2.73801, 0.0000000E+00) ; R(0E-0*2.73801, 0.0000000E+00) ; R(0E0000*2.73801, 0.0000000E+00) ; R(0E+4*2.73801, 0.0000000E+00) ; R(0E-10*2.73801, 0.0000000E+00) ; R(0E16*2.73801, 0.0000000E+00) ; R(0E+64*2.73801, 0.0000000E+00) ; R(0E-00011*2.73801, 0.0000000E+00) ; R(0000E1*2.73801, 0.0000000E+00) ; R(0000E+0*2.73801, 0.0000000E+00) ; R(0000E-0000*2.73801, 0.0000000E+00) ; R(0000E4*2.73801, 0.0000000E+00) ; R(0000E+10*2.73801, 0.0000000E+00) ; R(0000E-16*2.73801, 0.0000000E+00) ; R(0000E64*2.73801, 0.0000000E+00) ; R(0000E+00011*2.73801, 0.0000000E+00) ; R(4E-1*2.73801, 1.0952033E+00) ; R(4E0*2.73801, 1.0952037E+01) ; R(4E+0000*2.73801, 1.0952037E+01) ; R(4E-4*2.73801, 1.0952029E-03) ; R(4E10*2.73801, 1.0952035E+11) ; R(4E+16*2.73801, 1.0952036E+17) ; R(4E-64*2.73801, 1.0952035E-63) ; R(4E00011*2.73801, 1.0952036E+12) ; R(10E+1*2.73801, 2.7380078E+02) ; R(10E-0*2.73801, 2.7380081E+01) ; R(10E0000*2.73801, 2.7380081E+01) ; R(10E+4*2.73801, 2.7380093E+05) ; R(10E-10*2.73801, 2.7380089E-09) ; R(10E16*2.73801, 2.7380079E+17) ; R(10E+64*2.73801, 2.7380085E+65) ; R(10E-00011*2.73801, 2.7380075E-10) ; R(16E1*2.73801, 4.3808129E+02) ; R(16E+0*2.73801, 4.3808151E+01) ; R(16E-0000*2.73801, 4.3808151E+01) ; R(16E4*2.73801, 4.3808150E+05) ; R(16E+10*2.73801, 4.3808142E+11) ; R(16E-16*2.73801, 4.3808137E-15) ; R(16E64*2.73801, 4.3808124E+65) ; R(16E+00011*2.73801, 4.3808121E+12) ; R(64E-1*2.73801, 1.7523254E+01) ; R(64E0*2.73801, 1.7523260E+02) ; R(64E+0000*2.73801, 1.7523260E+02) ; R(64E-4*2.73801, 1.7523247E-02) ; R(64E10*2.73801, 1.7523256E+12) ; R(64E+16*2.73801, 1.7523257E+18) ; R(64E-64*2.73801, 1.7523256E-62) ; R(64E00011*2.73801, 1.7523257E+13) ; R(00011E+1*2.73801, 3.0118090E+02) ; R(00011E-0*2.73801, 3.0118103E+01) ; R(00011E0000*2.73801, 3.0118103E+01) ; R(00011E+4*2.73801, 3.0118100E+05) ; R(00011E-10*2.73801, 3.0118099E-09) ; R(00011E16*2.73801, 3.0118090E+17) ; R(00011E+64*2.73801, 3.0118076E+65) ; R(00011E-00011*2.73801, 3.0118085E-10) ; R(255E1*2.73801, 6.9819218E+03) ; R(255E+0*2.73801, 6.9819238E+02) ; R(255E-0000*2.73801, 6.9819238E+02) ; R(255E4*2.73801, 6.9819240E+06) ; R(255E+10*2.73801, 6.9819223E+12) ; R(255E-16*2.73801, 6.9819204E-14) ; R(255E64*2.73801, 6.9819192E+66) ; R(255E+00011*2.73801, 6.9819206E+13) ; R(256E-1*2.73801, 7.0093002E+01) ; R(256E0*2.73801, 7.0093041E+02) ; R(256E+0000*2.73801, 7.0093041E+02) ; R(256E-4*2.73801, 7.0092976E-02) ; R(256E10*2.73801, 7.0093027E+12) ; R(256E+16*2.73801, 7.0093019E+18) ; R(256E-64*2.73801, 7.0093016E-62) ; R(256E00011*2.73801, 7.0092993E+13) ; R(4095E+1*2.73801, 1.1212143E+05) ; R(4095E-0*2.73801, 1.1212148E+04) ; R(4095E0000*2.73801, 1.1212148E+04) ; R(4095E+4*2.73801, 1.1212147E+08) ; R(4095E-10*2.73801, 1.1212141E-06) ; R(4095E16*2.73801, 1.1212147E+20) ; R(4095E+64*2.73801, 1.1212141E+68) ; R(4095E-00011*2.73801, 1.1212148E-07) ; R(10000E1*2.73801, 2.7380093E+05) ; R(10000E+0*2.73801, 2.7380093E+04) ; R(10000E-0000*2.73801, 2.7380093E+04) ; R(10000E4*2.73801, 2.7380070E+08) ; R(10000E+10*2.73801, 2.7380091E+14) ; R(10000E-16*2.73801, 2.7380077E-12) ; R(10000E64*2.73801, 2.7380090E+68) ; R(10000E+00011*2.73801, 2.7380091E+15) ; R(32768E-1*2.73801, 8.9719062E+03) ; R(32768E0*2.73801, 8.9719062E+04) ; R(32768E+0000*2.73801, 8.9719062E+04) ; R(32768E-4*2.73801, 8.9719066E+00) ; R(32768E10*2.73801, 8.9719075E+14) ; R(32768E+16*2.73801, 8.9719051E+20) ; R(32768E-64*2.73801, 8.9719091E-60) ; R(32768E00011*2.73801, 8.9719075E+15) ; R(131001E+1*2.73801, 3.5868190E+06) ; R(131001E-0*2.73801, 3.5868193E+05) ; R(131001E0000*2.73801, 3.5868193E+05) ; R(131001E+4*2.73801, 3.5868193E+09) ; R(131001E-10*2.73801, 3.5868186E-05) ; R(131001E16*2.73801, 3.5868193E+21) ; R(131001E+64*2.73801, 3.5868185E+69) ; R(131001E-00011*2.73801, 3.5868188E-06) ; R(1000000000E1*2.73801, 2.7380088E+10) ; R(1000000000E+0*2.73801, 2.7380093E+09) ; R(1000000000E-0000*2.73801, 2.7380093E+09) ; R(1000000000E4*2.73801, 2.7380080E+13) ; R(1000000000E+10*2.73801, 2.7380091E+19) ; R(1000000000E-16*2.73801, 2.7380082E-07) ; R(1000000000E64*2.73801, 2.7380090E+73) ; R(1000000000E+00011*2.73801, 2.7380089E+20) ; R(2147483646E-1*2.73801, 5.8798284E+08) ; R(2147483646E0*2.73801, 5.8798284E+09) ; R(2147483646E+0000*2.73801, 5.8798284E+09) ; R(2147483646E-4*2.73801, 5.8798287E+05) ; R(2147483646E10*2.73801, 5.8798293E+19) ; R(2147483646E+16*2.73801, 5.8798277E+25) ; R(2147483646E-64*2.73801, 5.8798303E-55) ; R(2147483646E00011*2.73801, 5.8798293E+20) ; PRINT((CTR," TESTS REAL ",(CTR=VF !"OK"!"ERROR"),NEWLINE, "MEAN REL.DIFFER. : ",ERC/CT,NEWLINE,"MAX REL DIFF : ",SUPER))) ###### # R71A # 'BEGIN'PRINT(("INDEPENDANCE OF OPERATORS IN THE SAME RANGE" , NEWLINE)) ; # CONTROLE # 'INT' VF = 110 ; 'INT' CTR:=0 ; [1:VF]'BOOL' TC ; 'FOR' I 'TO'VF 'DO' TC[I]:='TRUE' 'OD' ; 'PROC' POS = ('INT' I)'BOOL' : (TC[I]!CTR+:=1;TC[I]:='FALSE' ! PRINT(("ER.1",I,NEWLINE)) ; 'SKIP') ; # DECLARATIONS DE SERVITUDE # 'MODE''M'= 'STRUCT'('CHAR' E1,'REF''M'E2);'M' VM=("#",'NIL'); 'OP'-=('REAL'A)'PROC'('INT','INT')'INT':'SKIP', 'PROC''PROC'('REAL','INT')'VOID' VAR := 'PROC'('REAL','INT')'VOID' : ('REAL' A,'INT' B)'VOID' : 'HEAP''INT' , 'OP'-=('INT' PAR)'BOOL':POS( 1) , 'OP'-=('M' PAR)'BOOL':POS( 2) , 'OP'-=('PROC'('INT','REAL')'INT' PAR)'BOOL':POS( 3) , 'OP'-=('STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) PAR)'BOOL':POS( 4) , 'OP'-=('PROC''STRUCT'('INT' X,Y) PAR)'BOOL':POS( 5) , 'OP'-=('PROC'('INT','INT')'INT' PAR)'BOOL':POS( 6) , 'OP'-=('REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) PAR)'BOOL':POS( 7) , 'OP'-=('UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') PAR)'BOOL':POS( 8) , 'OP'-=([,,][ ]'BOOL' PAR)'BOOL':POS( 9) , 'OP'-=([,,]'BITS' PAR)'BOOL':POS( 10) , 'OP'-=('INT' P1, 'INT' P2)'BOOL' : POS( 11) , 'OP'-=('INT' P1, 'M' P2)'BOOL' : POS( 12) , 'OP'-=('INT' P1, 'PROC'('INT','REAL')'INT' P2)'BOOL' : POS( 13) , 'OP'-=('INT' P1, 'STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P2)'BOOL' : POS( 14) , 'OP'-=('INT' P1, 'PROC''STRUCT'('INT' X,Y) P2)'BOOL' : POS( 15) , 'OP'-=('INT' P1, 'PROC'('INT','INT')'INT' P2)'BOOL' : POS( 16) , 'OP'-=('INT' P1, 'REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P2)'BOOL' : POS( 17) , 'OP'-=('INT' P1, 'UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P2)'BOOL' : POS( 18) , 'OP'-=('INT' P1, [,,][ ]'BOOL' P2)'BOOL' : POS( 19) , 'OP'-=('INT' P1, [,,]'BITS' P2)'BOOL' : POS( 20) , 'OP'-=('M' P1, 'INT' P2)'BOOL' : POS( 21) , 'OP'-=('M' P1, 'M' P2)'BOOL' : POS( 22) , 'OP'-=('M' P1, 'PROC'('INT','REAL')'INT' P2)'BOOL' : POS( 23) , 'OP'-=('M' P1, 'STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P2)'BOOL' : POS( 24) , 'OP'-=('M' P1, 'PROC''STRUCT'('INT' X,Y) P2)'BOOL' : POS( 25) , 'OP'-=('M' P1, 'PROC'('INT','INT')'INT' P2)'BOOL' : POS( 26) , 'OP'-=('M' P1, 'REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P2)'BOOL' : POS( 27) , 'OP'-=('M' P1, 'UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P2)'BOOL' : POS( 28) , 'OP'-=('M' P1, [,,][ ]'BOOL' P2)'BOOL' : POS( 29) , 'OP'-=('M' P1, [,,]'BITS' P2)'BOOL' : POS( 30) , 'OP'-=('PROC'('INT','REAL')'INT' P1, 'INT' P2)'BOOL' : POS( 31) , 'OP'-=('PROC'('INT','REAL')'INT' P1, 'M' P2)'BOOL' : POS( 32) , 'OP'-=('PROC'('INT','REAL')'INT' P1, 'PROC'('INT','REAL')'INT' P2)'BOOL' : POS( 33) , 'OP'-=('PROC'('INT','REAL')'INT' P1, 'STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P2)'BOOL' : POS( 34) , 'OP'-=('PROC'('INT','REAL')'INT' P1, 'PROC''STRUCT'('INT' X,Y) P2)'BOOL' : POS( 35) , 'OP'-=('PROC'('INT','REAL')'INT' P1, 'PROC'('INT','INT')'INT' P2)'BOOL' : POS( 36) , 'OP'-=('PROC'('INT','REAL')'INT' P1, 'REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P2)'BOOL' : POS( 37) , 'OP'-=('PROC'('INT','REAL')'INT' P1, 'UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P2)'BOOL' : POS( 38) , 'OP'-=('PROC'('INT','REAL')'INT' P1, [,,][ ]'BOOL' P2)'BOOL' : POS( 39) , 'OP'-=('PROC'('INT','REAL')'INT' P1, [,,]'BITS' P2)'BOOL' : POS( 40) , 'OP'-=('STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P1, 'INT' P2)'BOOL' : POS( 41) , 'OP'-=('STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P1, 'M' P2)'BOOL' : POS( 42) , 'OP'-=('STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P1, 'PROC'('INT','REAL')'INT' P2)'BOOL' : POS( 43) , 'OP'-=('STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P1, 'STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P2)'BOOL' : POS( 44) , 'OP'-=('STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P1, 'PROC''STRUCT'('INT' X,Y) P2)'BOOL' : POS( 45) , 'OP'-=('STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P1, 'PROC'('INT','INT')'INT' P2)'BOOL' : POS( 46) , 'OP'-=('STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P1, 'REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P2)'BOOL' : POS( 47) , 'OP'-=('STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P1, 'UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P2)'BOOL' : POS( 48) , 'OP'-=('STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P1, [,,][ ]'BOOL' P2)'BOOL' : POS( 49) , 'OP'-=('STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P1, [,,]'BITS' P2)'BOOL' : POS( 50) , 'OP'-=('PROC''STRUCT'('INT' X,Y) P1, 'INT' P2)'BOOL' : POS( 51) , 'OP'-=('PROC''STRUCT'('INT' X,Y) P1, 'M' P2)'BOOL' : POS( 52) , 'OP'-=('PROC''STRUCT'('INT' X,Y) P1, 'PROC'('INT','REAL')'INT' P2)'BOOL' : POS( 53) , 'OP'-=('PROC''STRUCT'('INT' X,Y) P1, 'STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P2)'BOOL' : POS( 54) , 'OP'-=('PROC''STRUCT'('INT' X,Y) P1, 'PROC''STRUCT'('INT' X,Y) P2)'BOOL' : POS( 55) , 'OP'-=('PROC''STRUCT'('INT' X,Y) P1, 'PROC'('INT','INT')'INT' P2)'BOOL' : POS( 56) , 'OP'-=('PROC''STRUCT'('INT' X,Y) P1, 'REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P2)'BOOL' : POS( 57) , 'OP'-=('PROC''STRUCT'('INT' X,Y) P1, 'UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P2)'BOOL' : POS( 58) , 'OP'-=('PROC''STRUCT'('INT' X,Y) P1, [,,][ ]'BOOL' P2)'BOOL' : POS( 59) , 'OP'-=('PROC''STRUCT'('INT' X,Y) P1, [,,]'BITS' P2)'BOOL' : POS( 60) , 'OP'-=('PROC'('INT','INT')'INT' P1, 'INT' P2)'BOOL' : POS( 61) , 'OP'-=('PROC'('INT','INT')'INT' P1, 'M' P2)'BOOL' : POS( 62) , 'OP'-=('PROC'('INT','INT')'INT' P1, 'PROC'('INT','REAL')'INT' P2)'BOOL' : POS( 63) , 'OP'-=('PROC'('INT','INT')'INT' P1, 'STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P2)'BOOL' : POS( 64) , 'OP'-=('PROC'('INT','INT')'INT' P1, 'PROC''STRUCT'('INT' X,Y) P2)'BOOL' : POS( 65) , 'OP'-=('PROC'('INT','INT')'INT' P1, 'PROC'('INT','INT')'INT' P2)'BOOL' : POS( 66) , 'OP'-=('PROC'('INT','INT')'INT' P1, 'REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P2)'BOOL' : POS( 67) , 'OP'-=('PROC'('INT','INT')'INT' P1, 'UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P2)'BOOL' : POS( 68) , 'OP'-=('PROC'('INT','INT')'INT' P1, [,,][ ]'BOOL' P2)'BOOL' : POS( 69) , 'OP'-=('PROC'('INT','INT')'INT' P1, [,,]'BITS' P2)'BOOL' : POS( 70) , 'OP'-=('REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P1, 'INT' P2)'BOOL' : POS( 71) , 'OP'-=('REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P1, 'M' P2)'BOOL' : POS( 72) , 'OP'-=('REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P1, 'PROC'('INT','REAL')'INT' P2)'BOOL' : POS( 73) , 'OP'-=('REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P1, 'STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P2)'BOOL' : POS( 74) , 'OP'-=('REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P1, 'PROC''STRUCT'('INT' X,Y) P2)'BOOL' : POS( 75) , 'OP'-=('REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P1, 'PROC'('INT','INT')'INT' P2)'BOOL' : POS( 76) , 'OP'-=('REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P1, 'REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P2)'BOOL' : POS( 77) , 'OP'-=('REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P1, 'UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P2)'BOOL' : POS( 78) , 'OP'-=('REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P1, [,,][ ]'BOOL' P2)'BOOL' : POS( 79) , 'OP'-=('REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P1, [,,]'BITS' P2)'BOOL' : POS( 80) , 'OP'-=('UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P1, 'INT' P2)'BOOL' : POS( 81) , 'OP'-=('UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P1, 'M' P2)'BOOL' : POS( 82) , 'OP'-=('UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P1, 'PROC'('INT','REAL')'INT' P2)'BOOL' : POS( 83) , 'OP'-=('UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P1, 'STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P2)'BOOL' : POS( 84) , 'OP'-=('UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P1, 'PROC''STRUCT'('INT' X,Y) P2)'BOOL' : POS( 85) , 'OP'-=('UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P1, 'PROC'('INT','INT')'INT' P2)'BOOL' : POS( 86) , 'OP'-=('UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P1, 'REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P2)'BOOL' : POS( 87) , 'OP'-=('UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P1, 'UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P2)'BOOL' : POS( 88) , 'OP'-=('UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P1, [,,][ ]'BOOL' P2)'BOOL' : POS( 89) , 'OP'-=('UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P1, [,,]'BITS' P2)'BOOL' : POS( 90) , 'OP'-=([,,][ ]'BOOL' P1, 'INT' P2)'BOOL' : POS( 91) , 'OP'-=([,,][ ]'BOOL' P1, 'M' P2)'BOOL' : POS( 92) , 'OP'-=([,,][ ]'BOOL' P1, 'PROC'('INT','REAL')'INT' P2)'BOOL' : POS( 93) , 'OP'-=([,,][ ]'BOOL' P1, 'STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P2)'BOOL' : POS( 94) , 'OP'-=([,,][ ]'BOOL' P1, 'PROC''STRUCT'('INT' X,Y) P2)'BOOL' : POS( 95) , 'OP'-=([,,][ ]'BOOL' P1, 'PROC'('INT','INT')'INT' P2)'BOOL' : POS( 96) , 'OP'-=([,,][ ]'BOOL' P1, 'REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P2)'BOOL' : POS( 97) , 'OP'-=([,,][ ]'BOOL' P1, 'UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P2)'BOOL' : POS( 98) , 'OP'-=([,,][ ]'BOOL' P1, [,,][ ]'BOOL' P2)'BOOL' : POS( 99) , 'OP'-=([,,][ ]'BOOL' P1, [,,]'BITS' P2)'BOOL' : POS( 100) , 'OP'-=([,,]'BITS' P1, 'INT' P2)'BOOL' : POS( 101) , 'OP'-=([,,]'BITS' P1, 'M' P2)'BOOL' : POS( 102) , 'OP'-=([,,]'BITS' P1, 'PROC'('INT','REAL')'INT' P2)'BOOL' : POS( 103) , 'OP'-=([,,]'BITS' P1, 'STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) P2)'BOOL' : POS( 104) , 'OP'-=([,,]'BITS' P1, 'PROC''STRUCT'('INT' X,Y) P2)'BOOL' : POS( 105) , 'OP'-=([,,]'BITS' P1, 'PROC'('INT','INT')'INT' P2)'BOOL' : POS( 106) , 'OP'-=([,,]'BITS' P1, 'REF''UNION'('STRUCT'('INT'X,Y), 'STRUCT'('INT'X,Y,Z)) P2)'BOOL' : POS( 107) , 'OP'-=([,,]'BITS' P1, 'UNION'('PROC'('INT','REAL')'VOID', 'PROC'('REAL','INT')'VOID') P2)'BOOL' : POS( 108) , 'OP'-=([,,]'BITS' P1, [,,][ ]'BOOL' P2)'BOOL' : POS( 109) , 'OP'-=([,,]'BITS' P1, [,,]'BITS' P2)'BOOL' : POS( 110) , 'BOOL' B='FALSE';( -0000, -VM, -('PROC' P=('INT'A,'REAL'B)'INT':0;P), -'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP'), -('STRUCT'('INT' X,Y):(1,2)), --.1, -'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)), -('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR), -'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END', -'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI', 0000 -0000 , 0000 -VM , 0000 -('PROC' P=('INT'A,'REAL'B)'INT':0;P) , 0000 -'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') , 0000 -('STRUCT'('INT' X,Y):(1,2)) , 0000 --.1 , 0000 -'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) , 0000 -('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) , 0000 -'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' , 0000 -'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' , VM -0000 , VM -VM , VM -('PROC' P=('INT'A,'REAL'B)'INT':0;P) , VM -'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') , VM -('STRUCT'('INT' X,Y):(1,2)) , VM --.1 , VM -'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) , VM -('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) , VM -'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' , VM -'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' , ('PROC' P=('INT'A,'REAL'B)'INT':0;P) -0000 , ('PROC' P=('INT'A,'REAL'B)'INT':0;P) -VM , ('PROC' P=('INT'A,'REAL'B)'INT':0;P) -('PROC' P=('INT'A,'REAL'B)'INT':0;P) , ('PROC' P=('INT'A,'REAL'B)'INT':0;P) -'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') , ('PROC' P=('INT'A,'REAL'B)'INT':0;P) -('STRUCT'('INT' X,Y):(1,2)) , ('PROC' P=('INT'A,'REAL'B)'INT':0;P) --.1 , ('PROC' P=('INT'A,'REAL'B)'INT':0;P) -'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) , ('PROC' P=('INT'A,'REAL'B)'INT':0;P) -('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) , ('PROC' P=('INT'A,'REAL'B)'INT':0;P) -'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' , ('PROC' P=('INT'A,'REAL'B)'INT':0;P) -'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' , 'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') -0000 , 'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') -VM , 'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') -('PROC' P=('INT'A,'REAL'B)'INT':0;P) , 'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') -'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') , 'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') -('STRUCT'('INT' X,Y):(1,2)) , 'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') --.1 , 'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') -'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) , 'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') -('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) , 'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') -'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' , 'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') -'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' , ('STRUCT'('INT' X,Y):(1,2)) -0000 , ('STRUCT'('INT' X,Y):(1,2)) -VM , ('STRUCT'('INT' X,Y):(1,2)) -('PROC' P=('INT'A,'REAL'B)'INT':0;P) , ('STRUCT'('INT' X,Y):(1,2)) -'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') , ('STRUCT'('INT' X,Y):(1,2)) -('STRUCT'('INT' X,Y):(1,2)) , ('STRUCT'('INT' X,Y):(1,2)) --.1 , ('STRUCT'('INT' X,Y):(1,2)) -'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) , ('STRUCT'('INT' X,Y):(1,2)) -('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) , ('STRUCT'('INT' X,Y):(1,2)) -'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' , ('STRUCT'('INT' X,Y):(1,2)) -'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' , -.1 -0000 , -.1 -VM , -.1 -('PROC' P=('INT'A,'REAL'B)'INT':0;P) , -.1 -'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') , -.1 -('STRUCT'('INT' X,Y):(1,2)) , -.1 --.1 , -.1 -'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) , -.1 -('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) , -.1 -'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' , -.1 -'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' , 'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) -0000 , 'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) -VM , 'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) -('PROC' P=('INT'A,'REAL'B)'INT':0;P) , 'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) -'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') , 'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) -('STRUCT'('INT' X,Y):(1,2)) , 'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) --.1 , 'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) -'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) , 'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) -('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) , 'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) -'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' , 'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) -'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' , ('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) -0000 , ('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) -VM , ('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) -('PROC' P=('INT'A,'REAL'B)'INT':0;P) , ('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) -'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') , ('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) -('STRUCT'('INT' X,Y):(1,2)) , ('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) --.1 , ('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) -'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) , ('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) -('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) , ('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) -'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' , ('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) -'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' , 'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' -0000 , 'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' -VM , 'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' -('PROC' P=('INT'A,'REAL'B)'INT':0;P) , 'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' -'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') , 'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' -('STRUCT'('INT' X,Y):(1,2)) , 'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' --.1 , 'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' -'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) , 'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' -('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) , 'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' -'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' , 'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' -'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' , 'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' -0000 , 'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' -VM , 'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' -('PROC' P=('INT'A,'REAL'B)'INT':0;P) , 'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' -'STRUCT'('CHAR' E1,'REF''STRUCT'('CHAR' E1,'REF''M' E)E2)('SKIP') , 'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' -('STRUCT'('INT' X,Y):(1,2)) , 'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' --.1 , 'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' -'LOC''UNION'('STRUCT'('INT'X,Y),'STRUCT'('INT'X,Y,Z)) , 'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' -('LOC''REF''PROC''PROC'('REAL','INT')'VOID':=VAR) , 'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' -'BEGIN'[,,][]'BOOL' TB=4R1230321;TB'END' , 'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' -'IF'[1,1,1] 'BITS' TB;B'THEN'TB'ELSE'8R0'FI' , 'SKIP') ;'FOR'I'TO'VF'DO'(TC[I]!PRINT(("ERR.2",I)))'OD'; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))'END' ###### # R71B # (PRINT(("INDEPENDANCE OF OPERATORS IN DIFFERENT RANGE CONTEXTS" ,NEWLINE)) ; 'INT' VF = 17 ; 'INT' CTR:=0 ; 'BOOL' B = 'TRUE' ; 'MODE''M'='STRUCT'('CHAR' E1,'REF''M' E2); 'PRIO' +> = 1 , 'OP' +>=('BOOL'B)'REF''BOOL':'HEAP''BOOL':=B, +>=('BOOL'A,'REF''BOOL'B)'INT':CTR+:=(B!0!1); B+>+>'FALSE' ; ( 'OP' +>=('INT'A)'INT':1 ,'PRIO' +>=2 ,'OP' +>=('REAL' A,B)'INT':6 ; 'OP' +>=('INT' A,B)'INT':4 , +>=('REAL' A)'INT':5 ; B+>+>'FALSE' ; 'SKIP'); 'IF' 'OP' +>=('M'A)'INT':4 ,'PRIO' +>=1 ,'OP' +>=('STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) A,B)'INT':9 ; 'OP' +>=('M' A,B)'INT':2 , +>=('STRUCT'('CHAR' E1, 'REF''STRUCT'('CHAR' E1,'REF''M' E)E2) A)'INT':7 ; B+>+>'FALSE' ; B 'THEN' 'OP' +>=('PROC'('INT','REAL')'VOID'A)'INT':1 ,'PRIO' +>=6 ,'OP' +>=('PROC'('REAL','INT')'VOID' A,B)'INT':2 ; 'OP' +>=('PROC'('INT','REAL')'VOID' A,B)'INT':6 , +>=('PROC'('REAL','INT')'VOID' A)'INT':3 ; B+>+>'FALSE' ; 'SKIP' 'ELSE' 'OP' +>=('STRUCT'('INT' X,Y)A)'INT':5 ,'PRIO' +>=6 ,'OP' +>=('STRUCT'('INT' Y,X) A,B)'INT':2 ; 'OP' +>=('STRUCT'('INT' X,Y) A,B)'INT':8 , +>=('STRUCT'('INT' Y,X) A)'INT':8 ; B+>+>'FALSE' ; 'SKIP''FI'; 'TO' 1 'WHILE' 'OP' +>=('PROC'('INT','REAL')'VOID'A)'INT':7 ,'PRIO' +>=6 ,'OP' +>=('UNION'('PROC'('REAL','INT')'VOID', 'PROC'('INT','REAL')'INT') A,B)'INT':6 ; 'OP' +>=('PROC'('INT','REAL')'VOID' A,B)'INT':5 , +>=('UNION'('PROC'('REAL','INT')'VOID', 'PROC'('INT','REAL')'INT') A)'INT':6 ; B+>+>'FALSE' ; B 'DO' 'OP' +>=('UNION'('PROC'('INT','REAL')'INT', 'PROC'('REAL','INT')'INT')A)'INT':3 ,'PRIO' +>=4 ,'OP' +>=('UNION'('PROC'('REAL','INT')'VOID', 'PROC'('INT','INT')'INT') A,B)'INT':3 ; 'OP' +>=('UNION'('PROC'('INT','REAL')'INT', 'PROC'('REAL','INT')'INT') A,B)'INT':6 , +>=('UNION'('PROC'('REAL','INT')'VOID', 'PROC'('INT','INT')'INT') A)'INT':9 ; B+>+>'FALSE' ; 'SKIP''OD'; ( 'OP' +>=('UNION'('STRUCT'('INT' Y,X), 'STRUCT'('INT' X,Y))A)'INT':4 ,'PRIO' +>=4 ,'OP' +>=('UNION'('STRUCT'('REAL' X,Y), 'STRUCT'('REAL' Y,X)) A,B)'INT':6 ; 'OP' +>=('UNION'('STRUCT'('INT' Y,X), 'STRUCT'('INT' X,Y)) A,B)'INT':7 , +>=('UNION'('STRUCT'('REAL' X,Y), 'STRUCT'('REAL' Y,X)) A)'INT':1 ; B+>+>'FALSE' ; 'SKIP'); 'IF' 'OP' +>=('CHAR'A)'INT':8 ,'PRIO' +>=8 ,'OP' +>=('REF''REF''PROC''REF''PROC'[ ]'CHAR' A,B)'INT':5 ; 'OP' +>=('CHAR' A,B)'INT':6 , +>=('REF''REF''PROC''REF''PROC'[ ]'CHAR' A)'INT':4 ; B+>+>'FALSE' ; B 'THEN' 'OP' +>=('PROC'('INT','REAL')'INT'A)'INT':7 ,'PRIO' +>=4 ,'OP' +>=('INT' A,B)'INT':2 ; 'OP' +>=('PROC'('INT','REAL')'INT' A,B)'INT':8 , +>=('INT' A)'INT':7 ; B+>+>'FALSE' ; 'SKIP' 'ELSE' 'OP' +>=('REF''PROC''REF''M'A)'INT':8 ,'PRIO' +>=8 ,'OP' +>=('REF''PROC''M' A,B)'INT':3 ; 'OP' +>=('REF''PROC''REF''M' A,B)'INT':6 , +>=('REF''PROC''M' A)'INT':6 ; B+>+>'FALSE' ; 'SKIP''FI'; 'TO' 1 'WHILE' 'OP' +>=('PROC''BOOL'A)'INT':6 ,'PRIO' +>=7 ,'OP' +>=('REF''BOOL' A,B)'INT':5 ; 'OP' +>=('PROC''BOOL' A,B)'INT':4 , +>=('REF''BOOL' A)'INT':3 ; B+>+>'FALSE' ; B 'DO' 'OP' +>=('REF''PROC''INT'A)'INT':3 ,'PRIO' +>=4 ,'OP' +>=('COMPL' A,B)'INT':5 ; 'OP' +>=('REF''PROC''INT' A,B)'INT':4 , +>=('COMPL' A)'INT':9 ; B+>+>'FALSE' ; 'SKIP''OD'; ( 'OP' +>=('REAL'A)'INT':5 ,'PRIO' +>=3 ,'OP' +>=('COMPL' A,B)'INT':6 ; 'OP' +>=('REAL' A,B)'INT':3 , +>=('COMPL' A)'INT':2 ; B+>+>'FALSE' ; 'SKIP'); 'IF' 'OP' +>=('INT'A)'INT':6 ,'PRIO' +>=5 ,'OP' +>=('REF''COMPL' A,B)'INT':4 ; 'OP' +>=('INT' A,B)'INT':1 , +>=('REF''COMPL' A)'INT':8 ; B+>+>'FALSE' ; B 'THEN' 'OP' +>=([]'BOOL'A)'INT':3 ,'PRIO' +>=2 ,'OP' +>=('BITS' A,B)'INT':3 ; 'OP' +>=([]'BOOL' A,B)'INT':3 , +>=('BITS' A)'INT':4 ; B+>+>'FALSE' ; 'SKIP' 'ELSE' 'OP' +>=([]'CHAR'A)'INT':3 ,'PRIO' +>=7 ,'OP' +>=('BYTES' A,B)'INT':9 ; 'OP' +>=([]'CHAR' A,B)'INT':8 , +>=('BYTES' A)'INT':7 ; B+>+>'FALSE' ; 'SKIP''FI'; 'TO' 1 'WHILE' 'OP' +>=([ ]'REAL'A)'INT':5 ,'PRIO' +>=3 ,'OP' +>=('REAL' A,B)'INT':2 ; 'OP' +>=([ ]'REAL' A,B)'INT':1 , +>=('REAL' A)'INT':1 ; B+>+>'FALSE' ; B 'DO' 'OP' +>=([,,][ ]'M'A)'INT':3 ,'PRIO' +>=2 ,'OP' +>=('M' A,B)'INT':1 ; 'OP' +>=([,,][ ]'M' A,B)'INT':3 , +>=('M' A)'INT':8 ; B+>+>'FALSE' ; 'SKIP''OD'; B+>+>'FALSE'; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R72A # (PRINT(("IDENTIFICATION A : IDENTIFIERS FROM :", NEWLINE,"IDENTITY DECLARATION,VARIABLE,CASE ON UNION,LOOP INDEX", NEWLINE)) ; 'INT' NBCAS = 9 ; 'INT' VF = 11*(48+5*NBCAS) ; 'INT' CTR:=0 , CTRT ; 'MODE' 'M'='STRUCT'('CHAR' C,'INT' DE) , 'UNE' = 'UNION'('STRING','INT') ; # PROCEDURES DE CONTROLE # 'PROC' CE = ('INT' A,B)'VOID' : (A=B!CTR+:=1! PRINT(("TEST N0",CTRT," ERROR :",A,B,NEWLINE))) ; 'PROC' T = ('M' DE,'INT' VRAI)'VOID' : CE(DE'OF'DE,VRAI) ; # DECLARATIONS DE SERVITUDE # 'INT' VALK:=0-1 , []'UNE' RUNE=("VIDE","",1,'SKIP') ; 'OP' - =('UNE' A)'INT' : (A!('STRING'):0 , ('INT' A) : 0-A ) , 'STRUCT'('UNE' DEUX,'STRUCT'('UNE' DE)DE)DE := (0, ('STRUCT'('UNE' DE) OF;DE'OF'OF:=RUNE[2];OF)) ; # DECLARATIONS ET TESTS INITIAUX # # BLOC 0 # 'M' J=("M", 109) ; 'M' I=("M", 108) ; 'M' H:=("M", 107) ; 'M' G=("M", 106) ; 'M' F=("M", 105) ; 'M' E=("M", 104) ; 'M' D=("M", 103) ; 'M' C:=("M", 102) ; 'M' B=("M", 101) ; 'M' A:=("M", 100) ; 'INT' K = 999 ; CTRT:= 1 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T(F, 105) ; T(E, 104) ; T(D, 103) ; T(C, 102) ; T(B, 101) ; T(A,100) ;'IF' # BLOC 1 # 'M' B=("M", 111) ; 'M' C:=("M", 112); CTRT:= 2 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T(F, 105) ; T( E, 104) ; T(D, 103) ; T(C, 112) ; T(B, 111) ; T(A,100) ;'FALSE' 'THEN' 'SKIP' 'ELIF' # BLOC 2 # 'UNE' DECLIDENT = ( # BLOC 3 # 'M' C=("M", 122) ; 'M' D:=("M", 123); CTRT:= 3 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T(F, 105 ) ; T(E, 104) ; T(D, 123) ; T(C, 122) ; T(B, 111) ; T(A,100) # FIN 3 # ;"") ; 'UNE' DECLVARIABLE := ( # BLOC 3 # 'M' C=("M", 222) ; 'M' D:=("M", 223); CTRT:= 4 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T(F, 105 ) ; T(E, 104) ; T(D, 223) ; T(C, 222) ; T(B, 111) ; T(A,100) ;( # BLOC 4 # 'M' D=("M", 233) ; 'M' E:=("M", 234); CTRT:= 5 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T(F, 105 ) ; T(E, 234) ; T(D, 233) ; T(C, 222) ; T(B, 111) ; T(A,100) # FIN 4 # ;"") # FIN 3 # ) ; 'M' C=("M", 322) ; 'M' D:=("M", 323); CTRT:= 6 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T(F, 105) ; T(E, 104) ; T(D, 323) ; T(C, 322) ; T(B, 111) ; T(A,100) ;'TRUE' 'THEN' # BLOC 3 # CTRT:= 7 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T(F, 105 ) ; T(E, 104) ; T(D, 323) ; T(C, 322) ; T(B, 111) ; T(A,100) ;'CASE' # BLOC 4 # 'M' VALU=("M",345) ; 'UNION'('UNE','M','STRUCT'('CHAR' C,'INT' D)) U:=VALU ; 'M' D=("M", 333) ; 'M' E:=("M", 334); CTRT:= 8 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T(F, 105 ) ; T(E, 334) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ; E:=("M",344) ; U 'IN' ( # BLOC 5 # 'M' F) : (( CTRT:= 9 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T(F, 345) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ) , ( # BLOC 6 # 'M' F=("M", 355) ; 'M' G:=("M", 356); CTRT:= 10 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 356) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ;'FOR' # BLOC 7 # K 'FROM' ( 'M' G=("M", 466) ; 'M' H:=("M", 467); CTRT:= 11 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 467) ; T(G, 466) ; T( F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ;0) 'TO' NBCAS 'WHILE' # BLOC 8 # VALK+:=1 ; 'M' G=("M", 366) ; 'M' H:=("M", 367); CTRT:= 12 ; CE(K,VALK) ; T(J, 109) ; T(I, 108) ; T(H, 367) ; T(G, 366 ) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ;'TRUE' 'DO' # BLOC 9 # 'M' H=("M", 377) ; 'M' I:=("M", 378); CTRT:= 13 ; CE(K,VALK) ; T(J, 109) ; T(I, 378) ; T(H, 377) ; T(G, 366 ) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ;'CASE' # BLOC 10 # 'M' I=("M", 388) ; 'M' J:=("M", 389); CTRT:= 14 ; CE(K,VALK) ; T(J, 389) ; T(I, 388) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ; K 'IN' #K=1# ( # BLOC 11 # 'M' J=("M", 199); CTRT:= 15 ; CE(K,VALK) ; T(J, 199) ; T(I, 388) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) # FIN 11 # ), #K=2# 'TO' ( 'M' J=("M", 299); CTRT:= 16 ; CE(K,VALK) ; T(J, 299) ; T(I, 388) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ;1) 'DO' CTRT:= 17 ; CE(K,VALK) ; T(J, 389) ; T(I, 388) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) 'OD' , #K=3# ( 'M' J=("M", 399); CTRT:= 18 ; CE(K,VALK) ; T(J, 399) ; T(I, 388) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ;'HEAP' 'UNE') := ( 'M' J=("M", 499); CTRT:= 19 ; CE(K,VALK) ; T(J, 499) ; T(I, 388) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ;"") , #K=4# ( 'M' J=("M", 599); CTRT:= 20 ; CE(K,VALK) ; T(J, 599) ; T(I, 388) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ;RUNE) [2 : ( 'M' J=("M", 699); CTRT:= 21 ; CE(K,VALK) ; T(J, 699) ; T(I, 388) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ;3 ) @ ( 'M' J=("M", 799); CTRT:= 22 ; CE(K,VALK) ; T(J, 799) ; T(I, 388) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ;1) ] , #K=5# (('UNE' X,Y)'VOID' : ( 'M' J=("M", 899); CTRT:= 23 ; CE(K,VALK) ; T(J, 899) ; T(I, 388) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ))(( 'M' J=("M", 999); CTRT:= 24 ; CE(K,VALK) ; T(J, 999) ; T(I, 388) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ;""),'SKIP') , #K=6# 'LOC''UNE' :=: ( 'M' J=("M",1099); CTRT:= 25 ; CE(K,VALK) ; T(J,1099) ; T(I, 388) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ;'HEAP''UNE') , #K=7# 1+-( 'M' J=("M",1199); CTRT:= 26 ; CE(K,VALK) ; T(J,1199) ; T(I, 388) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ;"") , #K=8# DE'OF'DE'OF'( 'M' J=("M",1299); CTRT:= 27 ; CE(K,VALK) ; T(J,1299) ; T(I, 388) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ; DE) , #K=9# 'UNE' ( 'M' J=("M",1399); CTRT:= 28 ; CE(K,VALK) ; T(J,1399) ; T(I, 388) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ;"") 'OUT' # BLOC 11 # # K=0 # 'M' J=("M",1499); CTRT:= 29 ; CE(K,VALK) ; T(J,1499) ; T(I, 388) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) # FIN 11 # # FIN 10 # 'ESAC' ; 'IF' # BLOC 10 # CTRT:= 30 ; CE(K,VALK) ; T(J, 109) ; T(I, 378) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ; K = 1 'THEN' # BLOC 11 # 'M' I=("M", 88) ; 'M' J:=("M", 89); CTRT:= 31 ; CE(K,VALK) ; T(J, 89) ; T(I, 88) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ;'CASE' # BLOC 12 # 'UNE' U:= ( CTRT:= 32 ; CE(K,VALK) ; T(J, 89) ; T(I, 88) ; T(H, 377) ; T(G , 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ;"") ; U 'IN' ('INT') : 'SKIP' 'OUSE' # BLOC 13 # 'M' J=("M", 99); CTRT:= 33 ; CE(K,VALK) ; T(J, 99) ; T(I, 88) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ; U 'IN'('STRING') : ( CTRT:= 34 ; CE(K,VALK) ; T(J, 99) ; T(I, 88) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ) # FIN 13 # # FIN 12 # 'ESAC' ; CTRT:= 35 ; CE(K,VALK) ; T(J, 89) ; T(I, 88) ; T(H, 377) ; T(G, 366) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) # FIN 11 # # FIN 10 # 'FI' ; CTRT:= 36 ; CE(K,VALK) ; T(J, 109) ; T(I, 378) ; T(H, 377) ; T(G, 366 ) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) # FIN 9 # # FIN 8 # # FIN 7 # 'OD' ; CTRT:= 37 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 356) ; T(F, 355) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) # FIN 6 # ) , ( CTRT:= 38 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T(F, 345) ; T(E, 344) ; T(D, 333) ; T(C, 322) ; T(B, 111) ; T(A,100) ) ) # FIN 5 # # FIN 4 # 'ESAC' ; ( # BLOC 4 # 'UNE' U= ( CTRT:= 39 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T(F, 105 ) ; T(E, 104) ; T(D, 323) ; T(C, 322) ; T(B, 111) ; T(A,100) ;"") ; U ! ('INT') : 'SKIP' ! # BLOC 5 # 'M' D=("M", 433) ; 'M' E:=("M", 434); CTRT:= 40 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T(F, 105) ; T(E, 434) ; T(D, 433) ; T(C, 322) ; T(B, 111) ; T(A,100) ; ( # BLOC 6 # [ ( # BLOC 7 # 'M' E=("M", 444) ; 'M' F:=("M", 445); CTRT:= 41 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T( F, 445) ; T(E, 444) ; T(D, 433) ; T(C, 322) ; T(B, 111) ; T(A,100) ;0 # FIN 7 # ) : 0] 'UNE' U ;'LWB' U<'UPB' U ! 'SKIP' ! # BLOC 7 # 'M' E=("M", 544) ; 'M' F:=("M", 545); CTRT:= 42 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T( F, 545) ; T(E, 544) ; T(D, 433) ; T(C, 322) ; T(B, 111) ; T(A,100) ; ( # BLOC 8 # 0 ! 1,'SKIP'!: # BLOC 9 # 'M' F=("M", 555) ; 'M' G:=("M", 556); CTRT:= 43 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 556 ) ; T(F, 555) ; T(E, 544) ; T(D, 433) ; T(C, 322) ; T(B, 111) ; T(A,100) ;2 ! 'SKIP' , ( CTRT:= 44 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 556 ) ; T(F, 555) ; T(E, 544) ; T(D, 433) ; T(C, 322) ; T(B, 111) ; T(A,100) ) # FIN 9 # # FIN 8 # ) ; CTRT:= 45 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T( F, 545) ; T(E, 544) ; T(D, 433) ; T(C, 322) ; T(B, 111) ; T(A,100) # FIN 7 # # FIN 6 # ) ; CTRT:= 46 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T(F, 105) ; T(E, 434) ; T(D, 433) ; T(C, 322) ; T(B, 111) ; T(A,100) # FIN 5 # # FIN 4 # ) ; CTRT:= 47 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T(F, 105 ) ; T(E, 104) ; T(D, 323) ; T(C, 322) ; T(B, 111) ; T(A,100) # FIN 3 # # FIN 2 # # FIN 1 # 'FI' ; CTRT:= 48 ; CE(K,999) ; T(J, 109) ; T(I, 108) ; T(H, 107) ; T(G, 106) ; T(F, 105) ; T(E, 104) ; T(D, 103) ; T(C, 102) ; T(B, 101) ; T(A,100) # FIN 0 # ;PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R72B # (PRINT(("IDENTIFICATION B : ROUTINE PARAMETERS",NEWLINE)) ; 'INT' VF = 117 ; 'INT' CTR:=0 , CTRT ; 'MODE' 'M' = [4]'UNION'('STRUCT'('INT' DE),'INT') ; 'PROC' T = ('M' ID,'INT' VAL)'VOID' : 'IF' 'INT' BS='UPB' ID ; 'INT' VALID = (ID[BS]!('INT' A) : A) ; BS = VAL 'MOD' 10 'AND' VALID = VAL 'THEN' CTR+:=1 'ELSE' PRINT(("ERR. TEST N0:",CTRT,BS,VALID,VAL,NEWLINE)) 'FI' ; 'STRUCT'('INT' DE) X = 'SKIP' ; 'BEGIN' # NIVEAU DE BASE(NON UTILISE) # 'M' A=0,B=0,C=0,D=0 ; (D[1]!('INT') : 'GOTO' VRAI) ; 'SKIP' 'EXIT' VRAI : ('M' A,B,C,D)'VOID' : ( CTRT:= 1 ; # PROF. 0 , NBR. 0 # T(D, 4);T(C, 3);T(B, 2);T(A,1) ; 'STRUCT'('M' OF,'PROC'('M','M')'VOID' DE) DE = ('SKIP' , ('M' B,C)'VOID' : ( CTRT:= 2 ; # PROF. 1 , NBR. 0 # T(D, 4);T(C, 13);T(B, 12);T(A,1) ; 'PROC' PROC = ('M' C,D)'VOID' : ( CTRT:= 3 ; # PROF. 2 , NBR. 0 # T(D, 24);T(C, 23);T(B, 12);T(A,1) ; 'PROC'('M')'VOID' DESTINATION ; DESTINATION := ('M' D)'VOID' : ( CTRT:= 4 ; # PROF. 3 , NBR. 0 # T(D, 34);T(C, 23);T(B, 12);T(A,1) ; CTR+:=1 # FIN 3 0 # ) ; DESTINATION((X,X,X, 34)) ; 'OP'('M')'VOID' -<=:= ('M' D)'VOID' : ( CTRT:= 5 ; # PROF. 3 , NBR. 1 # T(D, 134);T(C, 23);T(B, 12);T(A,1) ; CTR+:=1 # FIN 3 1 # ) ; -<=:'M'(X,X,X, 134); CTRT:= 6 ; # PROF. 2 , NBR. 0 # T(D, 24);T(C, 23);T(B, 12);T(A,1) ; CTR+:=1 # FIN 2 0 # ) ; 'IF' PROC((X,X, 23),(X,X,X, 24)) ; 'FALSE' 'THEN' 'SKIP' 'ELSE' ('M' C,D)'VOID' : ( CTRT:= 7 ; # PROF. 2 , NBR. 1 # T(D, 124);T(C, 123);T(B, 12);T(A,1) ; 'CASE' 'M' U =(1,X,1) ; U[2] 'IN' ('STRUCT'('INT' DE)) : ('M' D)'VOID' : ( CTRT:= 8 ; # PROF. 3 , NBR. 2 # T(D, 234);T(C, 123);T(B, 12);T(A,1) ; CTR+:=1 # FIN 3 2 # ) 'ESAC'((X,X,X, 234)) ; 'PROC'('M')'VOID' VARIABLE:= ('M' D)'VOID' : ( CTRT:= 9 ; # PROF. 3 , NBR. 3 # T(D, 334);T(C, 123);T(B, 12);T(A,1) ; CTR+:=1 # FIN 3 3 # ) ; VARIABLE((X,X,X, 334)) ; CTRT:= 10 ; # PROF. 2 , NBR. 1 # T(D, 124);T(C, 123);T(B, 12);T(A,1) ; CTR+:=1 # FIN 2 1 # ) 'FI'((X,X, 123),(X,X,X, 124)) ; CTRT:= 11 ; # PROF. 1 , NBR. 0 # T(D, 4);T(C, 13);T(B, 12);T(A,1) ; CTR+:=1 # FIN 1 0 # ) ); (DE'OF'DE)((X, 12),(X,X, 13)) ; 'PROC' TESTPAREFF = ('M' P1 , 'PROC'('M','M')'VOID' P2,P3)'VOID': P2((X, 112),(X,X, 113)) ; TESTPAREFF ( X , ('M' B,C)'VOID' : ( CTRT:= 12 ; # PROF. 1 , NBR. 1 # T(D, 4);T(C, 113);T(B, 112);T(A,1) ; []'PROC'('M','M')'VOID' RANG = (DE'OF'DE , 'SKIP' , ('M' C,D)'VOID' : ( CTRT:= 13 ; # PROF. 2 , NBR. 2 # T(D, 224);T(C, 223);T(B, 112);T(A,1) ; ('M' U = X ; U[1] ! ('INT') : 'SKIP' ! ('M' D)'VOID' : ( CTRT:= 14 ; # PROF. 3 , NBR. 4 # T(D, 434);T(C, 223);T(B, 112);T(A,1) ; CTR+:=1 # FIN 3 4 # ) )((X,X,X, 434)) ; 'PROC'('M')'VOID' DECLID = ('M' D)'VOID' : ( CTRT:= 15 ; # PROF. 3 , NBR. 5 # T(D, 534);T(C, 223);T(B, 112);T(A,1) ; CTR+:=1 # FIN 3 5 # ) ; DECLID((X,X,X, 534)) ; CTRT:= 16 ; # PROF. 2 , NBR. 2 # T(D, 224);T(C, 223);T(B, 112);T(A,1) ; CTR+:=1 # FIN 2 2 # ) ,DE'OF'DE ) ; RANG[3]((X,X, 223),(X,X,X, 224)) ; 'OP' *:== ('M' C,D)'VOID' : ( CTRT:= 17 ; # PROF. 2 , NBR. 3 # T(D, 324);T(C, 323);T(B, 112);T(A,1) ; ( 'PROC'('M')'VOID' : ('M' D)'VOID' : ( CTRT:= 18 ; # PROF. 3 , NBR. 6 # T(D, 634);T(C, 323);T(B, 112);T(A,1) ; CTR+:=1 # FIN 3 6 # ) )((X,X,X, 634)) ; ('UPB' B ! 'SKIP' , ('M' D)'VOID' : ( CTRT:= 19 ; # PROF. 3 , NBR. 7 # T(D, 734);T(C, 323);T(B, 112);T(A,1) ; CTR+:=1 # FIN 3 7 # ) , 'SKIP' ! 'PROC'('M')'VOID' ('SKIP'))((X,X,X, 734)) ; CTRT:= 20 ; # PROF. 2 , NBR. 3 # T(D, 324);T(C, 323);T(B, 112);T(A,1) ; CTR+:=1 # FIN 2 3 # ) ; 'M'(X,X,323) *:= 'M'(X,X,X,324) ; CTRT:= 21 ; # PROF. 1 , NBR. 1 # T(D, 4);T(C, 113);T(B, 112);T(A,1) ; CTR+:=1 # FIN 1 1 # ) ,'SKIP' ) ; 'PROC' REP := ('M' B,C)'VOID' : ( CTRT:= 22 ; # PROF. 1 , NBR. 2 # T(D, 4);T(C, 213);T(B, 212);T(A,1) ; ( 'LWB' A = 1 ! ('M' C,D)'VOID' : ( CTRT:= 23 ; # PROF. 2 , NBR. 4 # T(D, 424);T(C, 423);T(B, 212);T(A,1) ; CTR+:=1 # FIN 2 4 # ) )((X,X, 423),(X,X,X, 424)) ; CTRT:= 24 ; # PROF. 1 , NBR. 2 # T(D, 4);T(C, 213);T(B, 212);T(A,1) ; CTR+:=1 # FIN 1 2 # ) ; REP((X, 212),(X,X, 213)) ; CTRT:= 25 ; # PROF. 0 , NBR. 0 # T(D, 4);T(C, 3);T(B, 2);T(A,1) ; CTR+:=1 # FIN 0 0 # ) 'EXIT' NYVAPAS : 'SKIP' 'END'(1,(X,2),(X,X,3),(X,X,X,4)) ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R72C # (PRINT(("IDENTIFICATION C : LABEL IDENTIFIERS",NEWLINE)) ; 'INT' VF = 8*22 ; 'INT' CTR:=0,CTRT:=0 ; 'INT' K:=9 , N:=0 , BORNE:=0 , B1:=1 , B2:=1 , B3:=1 ; 'PROC' T = ('INT' NUMLAB,NUMDEC)'VOID' : (NUMLAB/=K!PRINT((CTRT,"BAD LABEL",NUMLAB,K,NEWLINE)) !: NUMDEC/=N ! PRINT((CTRT,"BAD RANGE",NUMDEC,N,NEWLINE)) ! CTR+:=1 ) ; # DECLARATIONS DE SERVITUDE # 'UNION'('INT','STRING') VU = "CHAINE" ; 'PROC' NOUVK = 'INT' : (('IMPAIR' K 'AND' K0!EXP(X)!'GOTO'DEBUT) ; CTRT:= 19 ; P5(XX) ; E : XX:= ('REAL'X)'REAL':(X>0!EXP(X)!'GOTO'DEBUT) ; CTRT:= 20 ; P5(XX) ) ; ('STRING'XX:= "ABCDE" ; CTRT:= 21 ; P1(XX) ; E : XX:= "ABCDE" ; CTRT:= 22 ; P1(XX) ) ; ('STRING'XX:= () ; CTRT:= 23 ; P1(XX) ; E : XX:= () ; CTRT:= 24 ; P1(XX) ) ; ('PROC'XX:= 'REF''REAL' : 'NIL' ; CTRT:= 25 ; P3(XX) ; E : XX:= 'REF''REAL' : 'NIL' ; CTRT:= 26 ; P3(XX) ) ; ('M'XX:= (S,(EXP,('REAL'X)'REAL':('INT'Y=0;X+Y)),S) ; CTRT:= 27 ; P4(XX) ; E : XX:= (S,(EXP,('REAL'X)'REAL':('INT'Y=0;X+Y)),S) ; CTRT:= 28 ; P4(XX) ) ; ('PROC'XX:= ('REAL'X)'REAL':PI+.5*EXP('LOC''REAL':=X)-1.7824 ; CTRT:= 29 ; P5(XX) ; E : XX:= ('REAL'X)'REAL':PI+.5*EXP('LOC''REAL':=X)-1.7824 ; CTRT:= 30 ; P5(XX) ) ; ('REF''REAL'XX:= TASREEL ; CTRT:= 31 ; P2(XX) ; E : XX:= TASREEL ; CTRT:= 32 ; P2(XX) ) ; ('REF''REAL'XX:= 'HEAP''REAL' ; CTRT:= 33 ; P2(XX) ; E : XX:= 'HEAP''REAL' ; CTRT:= 34 ; P2(XX) ) ; ('PROC'XX:= 'REF''REAL' : 'HEAP''REAL' ; CTRT:= 35 ; P3(XX) ; E : XX:= 'REF''REAL' : 'HEAP''REAL' ; CTRT:= 36 ; P3(XX) ) ; ('M'XX:= (S,(('REAL'X)'REAL':('REAL'Y=1.7183;X+Y),EXP),S) ; CTRT:= 37 ; P4(XX) ; E : XX:= (S,(('REAL'X)'REAL':('REAL'Y=1.7183;X+Y),EXP),S) ; CTRT:= 38 ; P4(XX) ) ; ('PROC'XX:= ('REAL'X)'REAL':(X>0!EXP(X)!'GOTO'DEBUT) ; CTRT:= 39 ; P5(XX) ; E : XX:= ('REAL'X)'REAL':(X>0!EXP(X)!'GOTO'DEBUT) ; CTRT:= 40 ; P5(XX) ) ; ('REF''REAL'XX:= LOCINT ; CTRT:= 41 ; P2(XX) ; E : XX:= LOCINT ; CTRT:= 42 ; P2(XX) ) ; ('REF''REAL'XX:= PROCINT ; CTRT:= 43 ; P2(XX) ; E : XX:= PROCINT ; CTRT:= 44 ; P2(XX) ) ; ('PROC'XX:= 'REF''REAL' : LOCINT ; CTRT:= 45 ; P3(XX) ; E : XX:= 'REF''REAL' : LOCINT ; CTRT:= 46 ; P3(XX) ) ; ('M'XX:= (S,(('REAL'X)'REAL':('INT'Y=1;X+LOCINT+Y),EXP),S) ; CTRT:= 47 ; P4(XX) ; E : XX:= (S,(('REAL'X)'REAL':('INT'Y=1;X+LOCINT+Y),EXP),S) ; CTRT:= 48 ; P4(XX) ) ; ('PROC'XX:= ('REAL'X)'REAL':('OP'&<=('INT'A)'VOID':TILT ; &0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :"ABCDE" 'FI' ; CTRT:= 2 ; P1(B) ; 'STRING' C = (2 ! 'SKIP' , "ABCDE") ; CTRT:= 3 ; P1(C) ; 'STRING'D = ('MU'(LOC) ! ('REF''REAL' A) : "ABCDE") ; CTRT:= 4 ; P1(D) ; 'STRING'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:="ABCDE" ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 5 ; P1(F) ; [0 : ('STRING'G = "ABCDE" ; CTRT:= 6 ; P1(G) ; 10)] 'INT' X ; &< ('STRING' H = "ABCDE" ; CTRT:= 7 ; P1(H) ; LOC) ; 'PROC' PROC = ('STRING' A)'VOID' :( CTRT:= 8 ; P1(A) ; 'STRING' B = "ABCDE" ; CTRT:= 9 ; P1(B) ; 'SKIP') ; E : PROC("ABCDE")) ; ( # PORTEE PRIMALE # 'REAL' LOC:=.718 ; 'STRING' A = ( BOF : () 'EXIT' ET :LAB:'SKIP') ; CTRT:= 10 ; P1(A) ; 'STRING'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :() 'FI' ; CTRT:= 11 ; P1(B) ; 'STRING' C = (2 ! 'SKIP' , ()) ; CTRT:= 12 ; P1(C) ; 'STRING'D = ('MU'(LOC) ! ('REF''REAL' A) : ()) ; CTRT:= 13 ; P1(D) ; 'STRING'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:=() ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 14 ; P1(F) ; [0 : ('STRING'G = () ; CTRT:= 15 ; P1(G) ; 10)] 'INT' X ; &< ('STRING' H = () ; CTRT:= 16 ; P1(H) ; LOC) ; 'PROC' PROC = ('STRING' A)'VOID' :( CTRT:= 17 ; P1(A) ; 'STRING' B = () ; CTRT:= 18 ; P1(B) ; 'SKIP') ; E : PROC(())) ; ( # PORTEE PRIMALE # 'REAL' LOC:=.718 ; 'PROC''REF''REAL' A = ( BOF : 'REF''REAL' : 'NIL' 'EXIT' ET :LAB:'SKIP') ; CTRT:= 19 ; P3(A) ; 'PROC''REF''REAL'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :'REF''REAL' : 'NIL' 'FI' ; CTRT:= 20 ; P3(B) ; 'PROC''REF''REAL' C = (2 ! 'SKIP' , 'REF''REAL' : 'NIL') ; CTRT:= 21 ; P3(C) ; 'PROC''REF''REAL'D = ('MU'(LOC) ! ('REF''REAL' A) : 'REF''REAL' : 'NIL') ; CTRT:= 22 ; P3(D) ; 'PROC''REF''REAL'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:='REF''REAL' : 'NIL' ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 23 ; P3(F) ; [0 : ('PROC''REF''REAL'G = 'REF''REAL' : 'NIL' ; CTRT:= 24 ; P3(G) ; 10)] 'INT' X ; &< ('PROC''REF''REAL' H = 'REF''REAL' : 'NIL' ; CTRT:= 25 ; P3(H) ; LOC) ; 'PROC' PROC = ('PROC''REF''REAL' A)'VOID' :( CTRT:= 26 ; P3(A) ; 'PROC''REF''REAL' B = 'REF''REAL' : 'NIL' ; CTRT:= 27 ; P3(B) ; 'SKIP') ; E : PROC('REF''REAL' : 'NIL')) ; ( # PORTEE PRIMALE # 'REAL' LOC:=.718 ; 'M' A = ( BOF : (S,(EXP,('REAL'X)'REAL':('INT'Y=0;X+Y)),S) 'EXIT' ET :LAB:'SKIP') ; CTRT:= 28 ; P4(A) ; 'M'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :(S,(EXP,('REAL'X)'REAL':('INT'Y=0;X+Y)),S) 'FI' ; CTRT:= 29 ; P4(B) ; 'M' C = (2 ! 'SKIP' , (S,(EXP,('REAL'X)'REAL':('INT'Y=0;X+Y)),S)) ; CTRT:= 30 ; P4(C) ; 'M'D = ('MU'(LOC) ! ('REF''REAL' A) : (S,(EXP,('REAL'X)'REAL':('INT'Y=0;X+Y)),S)) ; CTRT:= 31 ; P4(D) ; 'M'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:=(S,(EXP,('REAL'X)'REAL':('INT'Y=0;X+Y)),S) ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 32 ; P4(F) ; [0 : ('M'G = (S,(EXP,('REAL'X)'REAL':('INT'Y=0;X+Y)),S) ; CTRT:= 33 ; P4(G) ; 10)] 'INT' X ; &< ('M' H = (S,(EXP,('REAL'X)'REAL':('INT'Y=0;X+Y)),S) ; CTRT:= 34 ; P4(H) ; LOC) ; 'PROC' PROC = ('M' A)'VOID' :( CTRT:= 35 ; P4(A) ; 'M' B = (S,(EXP,('REAL'X)'REAL':('INT'Y=0;X+Y)),S) ; CTRT:= 36 ; P4(B) ; 'SKIP') ; E : PROC((S,(EXP,('REAL'X)'REAL':('INT'Y=0;X+Y)),S))) ; ( # PORTEE PRIMALE # 'REAL' LOC:=.718 ; 'PROC'('REAL')'REAL' A = ( BOF : ('REAL'X)'REAL':PI+.5*EXP('LOC''REAL':=X)-1.7824 'EXIT' ET :LAB:'SKIP') ; CTRT:= 37 ; P5(A) ; 'PROC'('REAL')'REAL'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :('REAL'X)'REAL':PI+.5*EXP('LOC''REAL':=X)-1.7824 'FI' ; CTRT:= 38 ; P5(B) ; 'PROC'('REAL')'REAL' C = (2 ! 'SKIP' , ('REAL'X)'REAL':PI+.5*EXP('LOC''REAL':=X)-1.7824) ; CTRT:= 39 ; P5(C) ; 'PROC'('REAL')'REAL'D = ('MU'(LOC) ! ('REF''REAL' A) : ('REAL'X)'REAL':PI+.5*EXP('LOC''REAL':=X)-1.7824) ; CTRT:= 40 ; P5(D) ; 'PROC'('REAL')'REAL'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:=('REAL'X)'REAL':PI+.5*EXP('LOC''REAL':=X)-1.7824 ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 41 ; P5(F) ; [0 : ('PROC'('REAL')'REAL'G = ('REAL'X)'REAL':PI+.5*EXP('LOC''REAL':=X)-1.7824 ; CTRT:= 42 ; P5(G) ; 10)] 'INT' X ; &< ('PROC'('REAL')'REAL' H = ('REAL'X)'REAL':PI+.5*EXP('LOC''REAL':=X)-1.7824 ; CTRT:= 43 ; P5(H) ; LOC) ; 'PROC' PROC = ('PROC'('REAL')'REAL' A)'VOID' :( CTRT:= 44 ; P5(A) ; 'PROC'('REAL')'REAL' B = ('REAL'X)'REAL':PI+.5*EXP('LOC''REAL':=X)-1.7824 ; CTRT:= 45 ; P5(B) ; 'SKIP') ; E : PROC(('REAL'X)'REAL':PI+.5*EXP('LOC''REAL':=X)-1.7824)) ; ( # PORTEE GLOBALE # 'REAL' LOC:=.718 ; 'REF''REAL' A = ( BOF : TASREEL 'EXIT' ET :LAB:'SKIP') ; CTRT:= 46 ; P2(A) ; 'REF''REAL'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :TASREEL 'FI' ; CTRT:= 47 ; P2(B) ; 'REF''REAL' C = (2 ! 'SKIP' , TASREEL) ; CTRT:= 48 ; P2(C) ; 'REF''REAL'D = ('MU'(LOC) ! ('REF''REAL' A) : TASREEL) ; CTRT:= 49 ; P2(D) ; 'REF''REAL'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:=TASREEL ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 50 ; P2(F) ; [0 : ('REF''REAL'G = TASREEL ; CTRT:= 51 ; P2(G) ; 10)] 'INT' X ; &< ('REF''REAL' H = TASREEL ; CTRT:= 52 ; P2(H) ; LOC) ; 'PROC' PROC = ('REF''REAL' A)'VOID' :( CTRT:= 53 ; P2(A) ; 'REF''REAL' B = TASREEL ; CTRT:= 54 ; P2(B) ; 'SKIP') ; E : PROC(TASREEL)) ; ( # PORTEE GLOBALE # 'REAL' LOC:=.718 ; 'REF''REAL' A = ( BOF : 'HEAP''REAL' 'EXIT' ET :LAB:'SKIP') ; CTRT:= 55 ; P2(A) ; 'REF''REAL'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :'HEAP''REAL' 'FI' ; CTRT:= 56 ; P2(B) ; 'REF''REAL' C = (2 ! 'SKIP' , 'HEAP''REAL') ; CTRT:= 57 ; P2(C) ; 'REF''REAL'D = ('MU'(LOC) ! ('REF''REAL' A) : 'HEAP''REAL') ; CTRT:= 58 ; P2(D) ; 'REF''REAL'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:='HEAP''REAL' ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 59 ; P2(F) ; [0 : ('REF''REAL'G = 'HEAP''REAL' ; CTRT:= 60 ; P2(G) ; 10)] 'INT' X ; &< ('REF''REAL' H = 'HEAP''REAL' ; CTRT:= 61 ; P2(H) ; LOC) ; 'PROC' PROC = ('REF''REAL' A)'VOID' :( CTRT:= 62 ; P2(A) ; 'REF''REAL' B = 'HEAP''REAL' ; CTRT:= 63 ; P2(B) ; 'SKIP') ; E : PROC('HEAP''REAL')) ; ( # PORTEE GLOBALE # 'REAL' LOC:=.718 ; 'PROC''REF''REAL' A = ( BOF : 'REF''REAL' : 'HEAP''REAL' 'EXIT' ET :LAB:'SKIP') ; CTRT:= 64 ; P3(A) ; 'PROC''REF''REAL'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :'REF''REAL' : 'HEAP''REAL' 'FI' ; CTRT:= 65 ; P3(B) ; 'PROC''REF''REAL' C = (2 ! 'SKIP' , 'REF''REAL' : 'HEAP''REAL') ; CTRT:= 66 ; P3(C) ; 'PROC''REF''REAL'D = ('MU'(LOC) ! ('REF''REAL' A) : 'REF''REAL' : 'HEAP''REAL') ; CTRT:= 67 ; P3(D) ; 'PROC''REF''REAL'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:='REF''REAL' : 'HEAP''REAL' ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 68 ; P3(F) ; [0 : ('PROC''REF''REAL'G = 'REF''REAL' : 'HEAP''REAL' ; CTRT:= 69 ; P3(G) ; 10)] 'INT' X ; &< ('PROC''REF''REAL' H = 'REF''REAL' : 'HEAP''REAL' ; CTRT:= 70 ; P3(H) ; LOC) ; 'PROC' PROC = ('PROC''REF''REAL' A)'VOID' :( CTRT:= 71 ; P3(A) ; 'PROC''REF''REAL' B = 'REF''REAL' : 'HEAP''REAL' ; CTRT:= 72 ; P3(B) ; 'SKIP') ; E : PROC('REF''REAL' : 'HEAP''REAL')) ; ( # PORTEE GLOBALE # 'REAL' LOC:=.718 ; 'M' A = ( BOF : (S,(('REAL'X)'REAL':('REAL'Y=1.7183;X+Y),EXP),S) 'EXIT' ET :LAB:'SKIP') ; CTRT:= 73 ; P4(A) ; 'M'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :(S,(('REAL'X)'REAL':('REAL'Y=1.7183;X+Y),EXP),S) 'FI' ; CTRT:= 74 ; P4(B) ; 'M' C = (2 ! 'SKIP' , (S,(('REAL'X)'REAL':('REAL'Y=1.7183;X+Y),EXP),S)) ; CTRT:= 75 ; P4(C) ; 'M'D = ('MU'(LOC) ! ('REF''REAL' A) : (S,(('REAL'X)'REAL':('REAL'Y=1.7183;X+Y),EXP),S)) ; CTRT:= 76 ; P4(D) ; 'M'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:=(S,(('REAL'X)'REAL':('REAL'Y=1.7183;X+Y),EXP),S) ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 77 ; P4(F) ; [0 : ('M'G = (S,(('REAL'X)'REAL':('REAL'Y=1.7183;X+Y),EXP),S) ; CTRT:= 78 ; P4(G) ; 10)] 'INT' X ; &< ('M' H = (S,(('REAL'X)'REAL':('REAL'Y=1.7183;X+Y),EXP),S) ; CTRT:= 79 ; P4(H) ; LOC) ; 'PROC' PROC = ('M' A)'VOID' :( CTRT:= 80 ; P4(A) ; 'M' B = (S,(('REAL'X)'REAL':('REAL'Y=1.7183;X+Y),EXP),S) ; CTRT:= 81 ; P4(B) ; 'SKIP') ; E : PROC((S,(('REAL'X)'REAL':('REAL'Y=1.7183;X+Y),EXP),S))) ; ( # PORTEE GLOBALE # 'REAL' LOC:=.718 ; 'PROC'('REAL')'REAL' A = ( BOF : ('REAL'X)'REAL':(X>0!EXP(X)!'GOTO'DEBUT) 'EXIT' ET :LAB:'SKIP') ; CTRT:= 82 ; P5(A) ; 'PROC'('REAL')'REAL'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :('REAL'X)'REAL':(X>0!EXP(X)!'GOTO'DEBUT) 'FI' ; CTRT:= 83 ; P5(B) ; 'PROC'('REAL')'REAL' C = (2 ! 'SKIP' , ('REAL'X)'REAL':(X>0!EXP(X)!'GOTO'DEBUT)) ; CTRT:= 84 ; P5(C) ; 'PROC'('REAL')'REAL'D = ('MU'(LOC) ! ('REF''REAL' A) : ('REAL'X)'REAL':(X>0!EXP(X)!'GOTO'DEBUT)) ; CTRT:= 85 ; P5(D) ; 'PROC'('REAL')'REAL'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:=('REAL'X)'REAL':(X>0!EXP(X)!'GOTO'DEBUT) ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 86 ; P5(F) ; [0 : ('PROC'('REAL')'REAL'G = ('REAL'X)'REAL':(X>0!EXP(X)!'GOTO'DEBUT) ; CTRT:= 87 ; P5(G) ; 10)] 'INT' X ; &< ('PROC'('REAL')'REAL' H = ('REAL'X)'REAL':(X>0!EXP(X)!'GOTO'DEBUT) ; CTRT:= 88 ; P5(H) ; LOC) ; 'PROC' PROC = ('PROC'('REAL')'REAL' A)'VOID' :( CTRT:= 89 ; P5(A) ; 'PROC'('REAL')'REAL' B = ('REAL'X)'REAL':(X>0!EXP(X)!'GOTO'DEBUT) ; CTRT:= 90 ; P5(B) ; 'SKIP') ; E : PROC(('REAL'X)'REAL':(X>0!EXP(X)!'GOTO'DEBUT))) ; ( # PORTEE BLOC 1 # 'REAL' LOC:=.718 ; 'REF''REAL' A = ( BOF : LOCINT 'EXIT' ET :LAB:'SKIP') ; CTRT:= 91 ; P2(A) ; 'REF''REAL'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :LOCINT 'FI' ; CTRT:= 92 ; P2(B) ; 'REF''REAL' C = (2 ! 'SKIP' , LOCINT) ; CTRT:= 93 ; P2(C) ; 'REF''REAL'D = ('MU'(LOC) ! ('REF''REAL' A) : LOCINT) ; CTRT:= 94 ; P2(D) ; 'REF''REAL'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:=LOCINT ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 95 ; P2(F) ; [0 : ('REF''REAL'G = LOCINT ; CTRT:= 96 ; P2(G) ; 10)] 'INT' X ; &< ('REF''REAL' H = LOCINT ; CTRT:= 97 ; P2(H) ; LOC) ; 'PROC' PROC = ('REF''REAL' A)'VOID' :( CTRT:= 98 ; P2(A) ; 'REF''REAL' B = LOCINT ; CTRT:= 99 ; P2(B) ; 'SKIP') ; E : PROC(LOCINT)) ; ( # PORTEE BLOC 1 # 'REAL' LOC:=.718 ; 'REF''REAL' A = ( BOF : PROCINT 'EXIT' ET :LAB:'SKIP') ; CTRT:= 100 ; P2(A) ; 'REF''REAL'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :PROCINT 'FI' ; CTRT:= 101 ; P2(B) ; 'REF''REAL' C = (2 ! 'SKIP' , PROCINT ) ; CTRT:= 102 ; P2(C) ; 'REF''REAL'D = ('MU'(LOC) ! ('REF''REAL' A) : PROCINT ) ; CTRT:= 103 ; P2(D) ; 'REF''REAL'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:=PROCINT ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 104 ; P2(F) ; [0 : ('REF''REAL'G = PROCINT ; CTRT:= 105 ; P2(G) ; 10)] 'INT' X ; &< ('REF''REAL' H = PROCINT ; CTRT:= 106 ; P2(H) ; LOC) ; 'PROC' PROC = ('REF''REAL' A)'VOID' :( CTRT:= 107 ; P2(A) ; 'REF''REAL' B = PROCINT ; CTRT:= 108 ; P2(B) ; 'SKIP') ; E : PROC(PROCINT )) ; ( # PORTEE BLOC 1 # 'REAL' LOC:=.718 ; 'PROC''REF''REAL' A = ( BOF : 'REF''REAL' : LOCINT 'EXIT' ET :LAB:'SKIP') ; CTRT:= 109 ; P3(A) ; 'PROC''REF''REAL'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :'REF''REAL' : LOCINT 'FI' ; CTRT:= 110 ; P3(B) ; 'PROC''REF''REAL' C = (2 ! 'SKIP' , 'REF''REAL' : LOCINT) ; CTRT:= 111 ; P3(C) ; 'PROC''REF''REAL'D = ('MU'(LOC) ! ('REF''REAL' A) : 'REF''REAL' : LOCINT) ; CTRT:= 112 ; P3(D) ; 'PROC''REF''REAL'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:='REF''REAL' : LOCINT ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 113 ; P3(F) ; [0 : ('PROC''REF''REAL'G = 'REF''REAL' : LOCINT ; CTRT:= 114 ; P3(G) ; 10)] 'INT' X ; &< ('PROC''REF''REAL' H = 'REF''REAL' : LOCINT ; CTRT:= 115 ; P3(H) ; LOC) ; 'PROC' PROC = ('PROC''REF''REAL' A)'VOID' :( CTRT:= 116 ; P3(A) ; 'PROC''REF''REAL' B = 'REF''REAL' : LOCINT ; CTRT:= 117 ; P3(B) ; 'SKIP') ; E : PROC('REF''REAL' : LOCINT)) ; ( # PORTEE BLOC 1 # 'REAL' LOC:=.718 ; 'M' A = ( BOF : (S,(('REAL'X)'REAL':('INT'Y=1;X+LOCINT+Y),EXP),S) 'EXIT' ET :LAB:'SKIP') ; CTRT:= 118 ; P4(A) ; 'M'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :(S,(('REAL'X)'REAL':('INT'Y=1;X+LOCINT+Y),EXP),S) 'FI' ; CTRT:= 119 ; P4(B) ; 'M' C = (2 ! 'SKIP' , (S,(('REAL'X)'REAL':('INT'Y=1;X+LOCINT+Y),EXP),S)) ; CTRT:= 120 ; P4(C) ; 'M'D = ('MU'(LOC) ! ('REF''REAL' A) : (S,(('REAL'X)'REAL':('INT'Y=1;X+LOCINT+Y),EXP),S)) ; CTRT:= 121 ; P4(D) ; 'M'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:=(S,(('REAL'X)'REAL':('INT'Y=1;X+LOCINT+Y),EXP),S) ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 122 ; P4(F) ; [0 : ('M'G = (S,(('REAL'X)'REAL':('INT'Y=1;X+LOCINT+Y),EXP),S) ; CTRT:= 123 ; P4(G) ; 10)] 'INT' X ; &< ('M' H = (S,(('REAL'X)'REAL':('INT'Y=1;X+LOCINT+Y),EXP),S) ; CTRT:= 124 ; P4(H) ; LOC) ; 'PROC' PROC = ('M' A)'VOID' :( CTRT:= 125 ; P4(A) ; 'M' B = (S,(('REAL'X)'REAL':('INT'Y=1;X+LOCINT+Y),EXP),S) ; CTRT:= 126 ; P4(B) ; 'SKIP') ; E : PROC((S,(('REAL'X)'REAL':('INT'Y=1;X+LOCINT+Y),EXP),S))) ; ( # PORTEE BLOC 1 # 'REAL' LOC:=.718 ; 'PROC'('REAL')'REAL' A = ( BOF : ('REAL'X)'REAL':('OP'&<=('INT'A)'VOID':TILT ; &0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :('REAL'X)'REAL':('OP'&<=('INT'A)'VOID':TILT ; &0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :'LOC''REAL' 'FI' ; CTRT:= 137 ; P2(B) ; 'REF''REAL' C = (2 ! 'SKIP' , 'LOC''REAL') ; CTRT:= 138 ; P2(C) ; 'REF''REAL'D = ('MU'(LOC) ! ('REF''REAL' A) : 'LOC''REAL') ; CTRT:= 139 ; P2(D) ; 'REF''REAL'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:='LOC''REAL' ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 140 ; P2(F) ; [0 : ('REF''REAL'G = 'LOC''REAL' ; CTRT:= 141 ; P2(G) ; 10)] 'INT' X ; &< ('REF''REAL' H = 'LOC''REAL' ; CTRT:= 142 ; P2(H) ; LOC) ; 'PROC' PROC = ('REF''REAL' A)'VOID' :( CTRT:= 143 ; P2(A) ; 'REF''REAL' B = 'LOC''REAL' ; CTRT:= 144 ; P2(B) ; 'SKIP') ; E : PROC('LOC''REAL')) ; ( # PORTEE LOCALE # 'REAL' LOC:=.718 ; 'REF''REAL' A = ( BOF : (('MU' X:=0;X) ! ('INT'A) : ( 'PRIO' +=9; 'LOC''T';E:1+1;'LOC''REAL')) 'EXIT' ET :LAB:'SKIP') ; CTRT:= 145 ; P2(A) ; 'REF''REAL'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :(('MU' X:=0;X) ! ('INT'A) : ( 'PRIO' +=9; 'LOC''T';E:1+1;'LOC''REAL')) 'FI' ; CTRT:= 146 ; P2(B) ; 'REF''REAL' C = (2 ! 'SKIP' , (('MU' X:=0;X) ! ('INT'A) : ( 'PRIO' +=9; 'LOC''T';E:1+1;'LOC''REAL'))) ; CTRT:= 147 ; P2(C) ; 'REF''REAL'D = ('MU'(LOC) ! ('REF''REAL' A) : (('MU' X:=0;X) ! ('INT'A) : ( 'PRIO' +=9; 'LOC''T';E:1+1;'LOC''REAL'))) ; CTRT:= 148 ; P2(D) ; 'REF''REAL'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:=(('MU' X:=0;X) ! ('INT'A) : ( 'PRIO' +=9; 'LOC''T';E:1+1;'LOC''REAL')) ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 149 ; P2(F) ; [0 : ('REF''REAL'G = (('MU' X:=0;X) ! ('INT'A) : ( 'PRIO' +=9; 'LOC''T';E:1+1;'LOC''REAL')) ; CTRT:= 150 ; P2(G) ; 10)] 'INT' X ; &< ('REF''REAL' H = (('MU' X:=0;X) ! ('INT'A) : ( 'PRIO' +=9; 'LOC''T';E:1+1;'LOC''REAL')) ; CTRT:= 151 ; P2(H) ; LOC) ; 'PROC' PROC = ('REF''REAL' A)'VOID' :( CTRT:= 152 ; P2(A) ; 'REF''REAL' B = (('MU' X:=0;X) ! ('INT'A) : ( 'PRIO' +=9; 'LOC''T';E:1+1;'LOC''REAL')) ; CTRT:= 153 ; P2(B) ; 'SKIP') ; E : PROC((('MU' X:=0;X) ! ('INT'A) : ( 'PRIO' +=9; 'LOC''T';E:1+1;'LOC''REAL')))) ; ( # PORTEE LOCALE # 'REAL' LOC:=.718 ; 'PROC''REF''REAL' A = ( BOF : 'REF''REAL' : LOC 'EXIT' ET :LAB:'SKIP') ; CTRT:= 154 ; P3(A) ; 'PROC''REF''REAL'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :'REF''REAL' : LOC 'FI' ; CTRT:= 155 ; P3(B) ; 'PROC''REF''REAL' C = (2 ! 'SKIP' , 'REF''REAL' : LOC) ; CTRT:= 156 ; P3(C) ; 'PROC''REF''REAL'D = ('MU'(LOC) ! ('REF''REAL' A) : 'REF''REAL' : LOC) ; CTRT:= 157 ; P3(D) ; 'PROC''REF''REAL'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:='REF''REAL' : LOC ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 158 ; P3(F) ; [0 : ('PROC''REF''REAL'G = 'REF''REAL' : LOC ; CTRT:= 159 ; P3(G) ; 10)] 'INT' X ; &< ('PROC''REF''REAL' H = 'REF''REAL' : LOC ; CTRT:= 160 ; P3(H) ; LOC) ; 'PROC' PROC = ('PROC''REF''REAL' A)'VOID' :( CTRT:= 161 ; P3(A) ; 'PROC''REF''REAL' B = 'REF''REAL' : LOC ; CTRT:= 162 ; P3(B) ; 'SKIP') ; E : PROC('REF''REAL' : LOC)) ; ( # PORTEE LOCALE # 'REAL' LOC:=.718 ; 'M' A = ( BOF : (S,(EXP,('REAL'X)'REAL':('INT'Y=1;X+LOC+Y)),S) 'EXIT' ET :LAB:'SKIP') ; CTRT:= 163 ; P4(A) ; 'M'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :(S,(EXP,('REAL'X)'REAL':('INT'Y=1;X+LOC+Y)),S) 'FI' ; CTRT:= 164 ; P4(B) ; 'M' C = (2 ! 'SKIP' , (S,(EXP,('REAL'X)'REAL':('INT'Y=1;X+LOC+Y)),S)) ; CTRT:= 165 ; P4(C) ; 'M'D = ('MU'(LOC) ! ('REF''REAL' A) : (S,(EXP,('REAL'X)'REAL':('INT'Y=1;X+LOC+Y)),S)) ; CTRT:= 166 ; P4(D) ; 'M'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:=(S,(EXP,('REAL'X)'REAL':('INT'Y=1;X+LOC+Y)),S) ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 167 ; P4(F) ; [0 : ('M'G = (S,(EXP,('REAL'X)'REAL':('INT'Y=1;X+LOC+Y)),S) ; CTRT:= 168 ; P4(G) ; 10)] 'INT' X ; &< ('M' H = (S,(EXP,('REAL'X)'REAL':('INT'Y=1;X+LOC+Y)),S) ; CTRT:= 169 ; P4(H) ; LOC) ; 'PROC' PROC = ('M' A)'VOID' :( CTRT:= 170 ; P4(A) ; 'M' B = (S,(EXP,('REAL'X)'REAL':('INT'Y=1;X+LOC+Y)),S) ; CTRT:= 171 ; P4(B) ; 'SKIP') ; E : PROC((S,(EXP,('REAL'X)'REAL':('INT'Y=1;X+LOC+Y)),S))) ; ( # PORTEE LOCALE # 'REAL' LOC:=.718 ; 'PROC'('REAL')'REAL' A = ( BOF : ('REAL'X)'REAL' : (X=0!'GOTO'E!X+1.718) 'EXIT' ET :LAB:'SKIP') ; CTRT:= 172 ; P5(A) ; 'PROC'('REAL')'REAL'B='IF'('INT' Y=0;Y)>0 'THEN' 'SKIP' 'ELSE' 'PRIO' +=1 ; LAB :('REAL'X)'REAL' : (X=0!'GOTO'E!X+1.718) 'FI' ; CTRT:= 173 ; P5(B) ; 'PROC'('REAL')'REAL' C = (2 ! 'SKIP' , ('REAL'X)'REAL' : (X=0!'GOTO'E!X+1.718)) ; CTRT:= 174 ; P5(C) ; 'PROC'('REAL')'REAL'D = ('MU'(LOC) ! ('REF''REAL' A) : ('REAL'X)'REAL' : (X=0!'GOTO'E!X+1.718)) ; CTRT:= 175 ; P5(D) ; 'PROC'('REAL')'REAL'F ; 'FOR' I 'WHILE' 'PRIO' +=1 ; F:=('REAL'X)'REAL' : (X=0!'GOTO'E!X+1.718) ; ('BOOL' E='FALSE'; E) 'DO' 'SKIP' 'OD' ; CTRT:= 176 ; P5(F) ; [0 : ('PROC'('REAL')'REAL'G = ('REAL'X)'REAL' : (X=0!'GOTO'E!X+1.718) ; CTRT:= 177 ; P5(G) ; 10)] 'INT' X ; &< ('PROC'('REAL')'REAL' H = ('REAL'X)'REAL' : (X=0!'GOTO'E!X+1.718) ; CTRT:= 178 ; P5(H) ; LOC) ; 'PROC' PROC = ('PROC'('REAL')'REAL' A)'VOID' :( CTRT:= 179 ; P5(A) ; 'PROC'('REAL')'REAL' B = ('REAL'X)'REAL' : (X=0!'GOTO'E!X+1.718) ; CTRT:= 180 ; P5(B) ; 'SKIP') ; E : PROC(('REAL'X)'REAL' : (X=0!'GOTO'E!X+1.718))) ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R531A # (PRINT(("SELECTION ON STRUCTURES",NEWLINE)) ; 'INT' VF = (27+4+10)*8 ; 'INT' CTRT,CTR:=0,CTRLOC ; 'PROC' CTRL = ('INT' INC)'VOID' : (CTR/=CTRLOC+INC ! PRINT(("COUNT ERROR IN TEST ",CTRT,CTR,CTRLOC+INC,NEWLINE))) ; # SERVITUDES POUR CONTEXTES # 'OP' ?=:= = ('INT' X)'VOID' : X , 'MODE' 'MSTR' = 'STRUCT'('COMPL' OF,DE) , 'PRIO' ?==:=1 ; 'OP' ?==:=('INT' A)'PROC''INT' : 'INT' : CTR+:=1 , ?==:=('UNION'('INT','BOOL') A,'INT' B)'BOOL':(CTR+:=1)=B , ?==:=('UNION'('REF''INT','REF''BOOL') A,'REAL' B)'MSTR':'SKIP', ?==:=('MSTR' A,B)'REF''INT' : CTR+:=1 ; 'OP' ? = ('BOOL' B)'BOOL' : 'NOT' B ;# CONTOURNEMENT D'ERREUR # # SERVITUDES POUR SECONDAIRES # # MODE 'PROC''INT' # 'MODE' 'MA' = 'STRUCT'('UNION'('STRING','PROC''CHAR','REF''MA') OF, 'PROC''INT' DE,CH); 'MODE' 'M1' = 'STRUCT'('PROC''INT' DE,'BOOL' OF) , 'PROC' T1 = 'INT':(CTR+:=1;1) ; 'MA' DE = ("",T1,'SKIP') ; 'STRUCT'('MA' DE,[]'CHAR' OF) STR1 = (DE,"""") , []'MA' RANG1 = ('SKIP', ('CHAR':"C",T1,'SKIP'),'SKIP','SKIP') , 'PROC' P1 = ('PROC''INT' A)'MA' : ('MA' M ; DE'OF'M:=A ; M) ; # MODE 'PROC''REF''BOOL' # 'MODE' 'MB' = 'STRUCT'('UNION'('STRING','PROC''CHAR','REF''MA') OF, 'PROC''REF''BOOL' DE,CH); 'MODE' 'M2' = 'STRUCT'('PROC''REF''BOOL' DE,'BOOL' OF) , 'PROC' T2 = 'REF''BOOL':(CTR+:=1;'HEAP''BOOL':='TRUE') ; 'MB' DF = ("",T2,'SKIP') ; 'STRUCT'('MB' DE,[]'CHAR' OF) STR2 = (DF,"""") , []'MB' RANG2 = ('SKIP', ('CHAR':"C",T2,'SKIP'),'SKIP','SKIP') , 'PROC' P2 = ('PROC''REF''BOOL' A)'MB' : ('MB' M ; DE'OF'M:=A ; M) ; # MODE 'PROC''MSTR' # 'MODE' 'MC' = 'STRUCT'('UNION'('STRING','PROC''CHAR','REF''MA') OF, 'PROC''MSTR' DE,CH); 'MODE' 'M3' = 'STRUCT'('PROC''MSTR' DE,'BOOL' OF) , 'PROC' T3 = 'MSTR':(CTR+:=1;(1,(.11,2E2))) ; 'MC' DG = ("",T3,'SKIP') ; 'STRUCT'('MC' DE,[]'CHAR' OF) STR3 = (DG,"""") , []'MC' RANG3 = ('SKIP', ('CHAR':"C",T3,'SKIP'),'SKIP','SKIP') , 'PROC' P3 = ('PROC''MSTR' A)'MC' : ('MC' M ; DE'OF'M:=A ; M) ; # CONTEXTES # ( CTRT:= 1; CTRLOC:=CTR ; 'FOR' IDENT' DEPUIS' DE 'OF' DE 'BY' DE 'OF' DE 'TO' DE 'OF' DE 'WHILE' DE 'OF' DF 'DO' [DE 'OF' DE : 4 , -IDENT : DE 'OF' DE] 'INT' ENT ; ENT [DE 'OF' DE , 0 ]:= ENT[IDENT , DE 'OF' DE]:=DE 'OF' DE'OD' ; 'INT' ALFA,'INT' PAR=('SKIP';DE 'OF' DE; 'REAL' PP=1.00001;DE 'OF' DE); ALFA:=1+(DE 'OF' DE) ; 'INT' IDENT=DE 'OF' DE , 'INT' LOC:='CASE'DE 'OF' DE 'IN'DE 'OF' DE,'SKIP' 'ESAC' , TAS:=DE 'OF' DE , 'PROC' PROC = 'INT' : DE 'OF' DE ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),(DE 'OF' DE,(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, DE 'OF' DE ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': DE 'OF' DE ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,DE 'OF' DE,PROC) ;('INT''BEGIN'DE 'OF' DE'END' , ?=:=(UNION;DE 'OF' DF ! DE 'OF' DE ) , DE 'OF' DE, ('BOOL' BOOL='TRUE' ; UNION!('INT'): DE 'OF' DE ,('COMPL' COMPLEX):'SKIP')) ; DE 'OF' DF :=DE 'OF' DF :=DE 'OF' DF :=:DE 'OF' DF ; ?==:DE 'OF' DE ?==: (DE 'OF' DF ?==: RE'OF'DE'OF'DE 'OF' DG ?==:DE 'OF' DG ) ?==:?==:DE 'OF' DE ; CTRL(41)) ; ( CTRT:= 2; CTRLOC:=CTR ; 'FOR' IDENT' DEPUIS' DE 'OF' DE'OF'STR1 'BY' DE 'OF' DE'OF'STR1 'TO' DE 'OF' DE'OF'STR1 'WHILE' DE 'OF' DE'OF'STR2 'DO' [DE 'OF' DE'OF'STR1 : 4 , -IDENT : DE 'OF' DE'OF'STR1] 'INT' ENT ; ENT [DE 'OF' DE'OF'STR1 , 0 ]:= ENT[IDENT , DE 'OF' DE'OF'STR1]:=DE 'OF' DE'OF'STR1'OD' ; 'INT' ALFA,'INT' PAR=('SKIP';DE 'OF' DE'OF'STR1; 'REAL' PP=1.00001;DE 'OF' DE'OF'STR1); ALFA:=1+(DE 'OF' DE'OF'STR1) ; 'INT' IDENT=DE 'OF' DE'OF'STR1 , 'INT' LOC:='CASE'DE 'OF' DE'OF'STR1 'IN'DE 'OF' DE'OF'STR1,'SKIP' 'ESAC' , TAS:=DE 'OF' DE'OF'STR1 , 'PROC' PROC = 'INT' : DE 'OF' DE'OF'STR1 ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),(DE 'OF' DE'OF'STR1,(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, DE 'OF' DE'OF'STR1 ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': DE 'OF' DE'OF'STR1 ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,DE 'OF' DE'OF'STR1,PROC) ;('INT''BEGIN'DE 'OF' DE'OF'STR1'END' , ?=:=(UNION;DE 'OF' DE'OF'STR2 ! DE 'OF' DE'OF'STR1 ) , DE 'OF' DE'OF'STR1, ('BOOL' BOOL='TRUE' ; UNION!('INT'): DE 'OF' DE'OF'STR1 ,('COMPL' COMPLEX):'SKIP')) ; DE 'OF' DE'OF'STR2 :=DE 'OF' DE'OF'STR2 :=DE 'OF' DE'OF'STR2 :=:DE 'OF' DE'OF'STR2 ; ?==:DE 'OF' DE'OF'STR1 ?==: (DE 'OF' DE'OF'STR2 ?==: RE'OF'DE'OF'DE 'OF' DE'OF'STR3 ?==:DE 'OF' DE'OF'STR3 ) ?==:?==:DE 'OF' DE'OF'STR1 ; CTRL(41)) ; ( CTRT:= 3; CTRLOC:=CTR ; 'FOR' IDENT' DEPUIS' DE 'OF' RANG1[2] 'BY' DE 'OF' RANG1[2] 'TO' DE 'OF' RANG1[2] 'WHILE' DE 'OF' RANG2[2] 'DO' [DE 'OF' RANG1[2] : 4 , -IDENT : DE 'OF' RANG1[2]] 'INT' ENT ; ENT [DE 'OF' RANG1[2] , 0 ]:= ENT[IDENT , DE 'OF' RANG1[2]]:=DE 'OF' RANG1[2]'OD' ; 'INT' ALFA,'INT' PAR=('SKIP';DE 'OF' RANG1[2]; 'REAL' PP=1.00001;DE 'OF' RANG1[2]); ALFA:=1+(DE 'OF' RANG1[2]) ; 'INT' IDENT=DE 'OF' RANG1[2] , 'INT' LOC:='CASE'DE 'OF' RANG1[2] 'IN'DE 'OF' RANG1[2],'SKIP' 'ESAC' , TAS:=DE 'OF' RANG1[2] , 'PROC' PROC = 'INT' : DE 'OF' RANG1[2] ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),(DE 'OF' RANG1[2],(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, DE 'OF' RANG1[2] ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': DE 'OF' RANG1[2] ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,DE 'OF' RANG1[2],PROC) ;('INT''BEGIN'DE 'OF' RANG1[2]'END' , ?=:=(UNION;DE 'OF' RANG2[2] ! DE 'OF' RANG1[2] ) , DE 'OF' RANG1[2], ('BOOL' BOOL='TRUE' ; UNION!('INT'): DE 'OF' RANG1[2] ,('COMPL' COMPLEX):'SKIP')) ; DE 'OF' RANG2[2] :=DE 'OF' RANG2[2] :=DE 'OF' RANG2[2] :=:DE 'OF' RANG2[2] ; ?==:DE 'OF' RANG1[2] ?==: (DE 'OF' RANG2[2] ?==: RE'OF'DE'OF'DE 'OF' RANG3[2] ?==:DE 'OF' RANG3[2] ) ?==:?==:DE 'OF' RANG1[2] ; CTRL(41)) ; ( CTRT:= 4; CTRLOC:=CTR ; 'FOR' IDENT' DEPUIS' DE 'OF' P1(T1) 'BY' DE 'OF' P1(T1) 'TO' DE 'OF' P1(T1) 'WHILE' DE 'OF' P2(T2) 'DO' [DE 'OF' P1(T1) : 4 , -IDENT : DE 'OF' P1(T1)] 'INT' ENT ; ENT [DE 'OF' P1(T1) , 0 ]:= ENT[IDENT , DE 'OF' P1(T1)]:=DE 'OF' P1(T1)'OD' ; 'INT' ALFA,'INT' PAR=('SKIP';DE 'OF' P1(T1); 'REAL' PP=1.00001;DE 'OF' P1(T1)); ALFA:=1+(DE 'OF' P1(T1)) ; 'INT' IDENT=DE 'OF' P1(T1) , 'INT' LOC:='CASE'DE 'OF' P1(T1) 'IN'DE 'OF' P1(T1),'SKIP' 'ESAC' , TAS:=DE 'OF' P1(T1) , 'PROC' PROC = 'INT' : DE 'OF' P1(T1) ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),(DE 'OF' P1(T1),(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, DE 'OF' P1(T1) ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': DE 'OF' P1(T1) ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,DE 'OF' P1(T1),PROC) ;('INT''BEGIN'DE 'OF' P1(T1)'END' , ?=:=(UNION;DE 'OF' P2(T2) ! DE 'OF' P1(T1) ) , DE 'OF' P1(T1), ('BOOL' BOOL='TRUE' ; UNION!('INT'): DE 'OF' P1(T1) ,('COMPL' COMPLEX):'SKIP')) ; DE 'OF' P2(T2) :=DE 'OF' P2(T2) :=DE 'OF' P2(T2) :=:DE 'OF' P2(T2) ; ?==:DE 'OF' P1(T1) ?==: (DE 'OF' P2(T2) ?==: RE'OF'DE'OF'DE 'OF' P3(T3) ?==:DE 'OF' P3(T3) ) ?==:?==:DE 'OF' P1(T1) ; CTRL(41)) ; ( CTRT:= 5; CTRLOC:=CTR ; 'FOR' IDENT' DEPUIS' DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1) ,'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI' 'BY' DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI' 'TO' DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI' 'WHILE' DE 'OF' 'MB''IF''M2' X=('REF''BOOL':(CTR+:=1;'HEAP''BOOL':='TRUE') ,'FALSE') ; ? OF'OF'X 'THEN' ("",T2,'SKIP')'FI' 'DO' [DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI' : 4 , -IDENT : DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI'] 'INT' ENT ; ENT [DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI' , 0 ]:= ENT[IDENT , DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI']:=DE 'OF' 'MA''IF''M1' X=( 'INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI''OD' ; 'INT' ALFA,'INT' PAR=('SKIP';DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1) ,'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI'; 'REAL' PP=1.00001;DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI'); ALFA:=1+(DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI') ; 'INT' IDENT=DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI' , 'INT' LOC:='CASE'DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI' 'IN'DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI','SKIP' 'ESAC' , TAS:=DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI' , 'PROC' PROC = 'INT' : DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1) ,'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI' ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),(DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI',(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI' ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI' ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI',PROC) ;('INT''BEGIN'DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI''END' , ?=:=(UNION;DE 'OF' 'MB''IF''M2' X=( 'REF''BOOL':(CTR+:=1;'HEAP''BOOL':='TRUE'),'FALSE') ; ? OF'OF'X 'THEN' ("",T2,'SKIP')'FI' ! DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI' ) , DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI', ('BOOL' BOOL='TRUE' ; UNION!('INT'): DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI' ,('COMPL' COMPLEX):'SKIP')) ; DE 'OF' 'MB''IF''M2' X=('REF''BOOL':(CTR+:=1;'HEAP''BOOL':='TRUE') ,'FALSE') ; ? OF'OF'X 'THEN' ("",T2,'SKIP')'FI' :=DE 'OF' 'MB''IF''M2' X=('REF''BOOL':(CTR+:=1;'HEAP''BOOL':='TRUE') ,'FALSE') ; ? OF'OF'X 'THEN' ("",T2,'SKIP')'FI' :=DE 'OF' 'MB''IF''M2' X=('REF''BOOL':(CTR+:=1;'HEAP''BOOL':='TRUE') ,'FALSE') ; ? OF'OF'X 'THEN' ("",T2,'SKIP')'FI' :=:DE 'OF' 'MB''IF''M2' X=('REF''BOOL':(CTR+:=1;'HEAP''BOOL':='TRUE') ,'FALSE') ; ? OF'OF'X 'THEN' ("",T2,'SKIP')'FI' ; ?==:DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI' ?==: (DE 'OF' 'MB''IF''M2' X=('REF''BOOL':(CTR+:=1;'HEAP''BOOL':='TRUE') ,'FALSE') ; ? OF'OF'X 'THEN' ("",T2,'SKIP')'FI' ?==: RE'OF'DE'OF'DE 'OF' 'MC''IF''M3' X=( 'MSTR':(CTR+:=1;(1,(.11,2E2))),'FALSE') ; ? OF'OF'X 'THEN' ("",T3,'SKIP')'FI' ?==:DE 'OF' 'MC''IF''M3' X=('MSTR':(CTR+:=1;(1,(.11,2E2))),'FALSE') ; ? OF'OF'X 'THEN' ("",T3,'SKIP')'FI' ) ?==:?==:DE 'OF' 'MA''IF''M1' X=('INT':(CTR+:=1;1),'FALSE') ; ? OF'OF'X 'THEN' ("",T1,'SKIP')'FI' ; CTRL(41)) ; ( CTRT:= 6; CTRLOC:=CTR ; 'FOR' IDENT' DEPUIS' DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE) 'BY' DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE) 'TO' DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE) 'WHILE' DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DF) 'DO' [DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE) : 4 , -IDENT : DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE)] 'INT' ENT ; ENT [DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE) , 0 ]:= ENT[IDENT , DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE)]:=DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE)'OD' ; 'INT' ALFA,'INT' PAR=('SKIP';DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE); 'REAL' PP=1.00001;DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE)); ALFA:=1+(DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE)) ; 'INT' IDENT=DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE) , 'INT' LOC:='CASE'DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE) 'IN'DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE),'SKIP' 'ESAC' , TAS:=DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE) , 'PROC' PROC = 'INT' : DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE) ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),(DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE),(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE) ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE) ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE),PROC) ;('INT''BEGIN'DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE)'END' , ?=:=(UNION;DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DF) ! DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE) ) , DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE), ('BOOL' BOOL='TRUE' ; UNION!('INT'): DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE) ,('COMPL' COMPLEX):'SKIP')) ; DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DF) :=DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DF) :=DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DF) :=:DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DF) ; ?==:DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE) ?==: (DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DF) ?==: RE'OF'DE'OF'DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DG) ?==:DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DG) ) ?==:?==:DE 'OF' (OF'OF'DE'OF'STR1 ! ('PROC''CHAR'):'SKIP' ! DE) ; CTRL(41)) ; ( CTRT:= 7; CTRLOC:=CTR ; 'FOR' IDENT' DEPUIS' DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP') 'BY' DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP') 'TO' DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP') 'WHILE' DE 'OF' ('M2' X = ('REF''BOOL':(CTR+:=1;'HEAP''BOOL':='TRUE') ,'FALSE') ; X'EXIT'E:'SKIP') 'DO' [DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP') : 4 , -IDENT : DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP')] 'INT' ENT ; ENT [DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP') , 0 ]:= ENT[IDENT , DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP')]:=DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP')'OD' ; 'INT' ALFA,'INT' PAR=('SKIP';DE 'OF' ('M1' X = ('INT':(CTR+:=1;1) ,'FALSE') ; X'EXIT'E:'SKIP'); 'REAL' PP=1.00001;DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP')); ALFA:=1+(DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP')) ; 'INT' IDENT=DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP') , 'INT' LOC:='CASE'DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP') 'IN'DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP'),'SKIP' 'ESAC' , TAS:=DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP') , 'PROC' PROC = 'INT' : DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP') ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),(DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP'),(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP') ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP') ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP'),PROC) ;('INT''BEGIN'DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP')'END' , ?=:=(UNION;DE 'OF' ('M2' X = ('REF''BOOL':(CTR+:=1;'HEAP''BOOL':='TRUE') ,'FALSE') ; X'EXIT'E:'SKIP') ! DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP') ) , DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP'), ('BOOL' BOOL='TRUE' ; UNION!('INT'): DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP') ,('COMPL' COMPLEX):'SKIP')) ; DE 'OF' ('M2' X = ('REF''BOOL':(CTR+:=1;'HEAP''BOOL':='TRUE'),'FALSE') ; X'EXIT'E:'SKIP') :=DE 'OF' ('M2' X = ('REF''BOOL':(CTR+:=1;'HEAP''BOOL':='TRUE'),'FALSE') ; X'EXIT'E:'SKIP') :=DE 'OF' ('M2' X = ('REF''BOOL':(CTR+:=1;'HEAP''BOOL':='TRUE'),'FALSE') ; X'EXIT'E:'SKIP') :=:DE 'OF' ('M2' X = ('REF''BOOL':(CTR+:=1;'HEAP''BOOL':='TRUE') ,'FALSE') ; X'EXIT'E:'SKIP') ; ?==:DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP') ?==: (DE 'OF' ('M2' X = ('REF''BOOL':(CTR+:=1;'HEAP''BOOL':='TRUE') ,'FALSE') ; X'EXIT'E:'SKIP') ?==: RE'OF'DE'OF'DE 'OF' ('M3' X = ('MSTR':(CTR+:=1;(1,(.11,2E2))) ,'FALSE') ; X'EXIT'E:'SKIP') ?==:DE 'OF' ('M3' X = ('MSTR':(CTR+:=1;(1,(.11,2E2))),'FALSE') ; X'EXIT'E:'SKIP') ) ?==:?==:DE 'OF' ('M1' X = ('INT':(CTR+:=1;1),'FALSE') ; X'EXIT'E:'SKIP') ; CTRL(41)) ; ( CTRT:= 8; CTRLOC:=CTR ; 'FOR' IDENT' DEPUIS' DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP') 'BY' DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP') 'TO' DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP') 'WHILE' DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T2,'SKIP') , 'MB':'SKIP') 'DO' [DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP') : 4 , -IDENT : DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP')] 'INT' ENT ; ENT [DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP') , 0 ]:= ENT[IDENT , DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP')]:=DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP')'OD' ; 'INT' ALFA,'INT' PAR=('SKIP';DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP'); 'REAL' PP=1.00001;DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP')); ALFA:=1+(DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP')) ; 'INT' IDENT=DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP') , 'INT' LOC:='CASE'DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP') 'IN'DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP'),'SKIP' 'ESAC' , TAS:=DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP') , 'PROC' PROC = 'INT' : DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP') ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),(DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP'),(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP') ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP') ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP'),PROC) ;('INT''BEGIN'DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP')'END' , ?=:=(UNION;DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T2,'SKIP') , 'MB':'SKIP') ! DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP') ) , DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP'), ('BOOL' BOOL='TRUE' ; UNION!('INT'): DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP') ,('COMPL' COMPLEX):'SKIP')) ; DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T2,'SKIP') , 'MB':'SKIP') :=DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T2,'SKIP') , 'MB':'SKIP') :=DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T2,'SKIP') , 'MB':'SKIP') :=:DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T2,'SKIP') , 'MB':'SKIP') ; ?==:DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP') ?==: (DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T2,'SKIP') , 'MB':'SKIP') ?==: RE'OF'DE'OF'DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T3,'SKIP') , 'MC':'SKIP') ?==:DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T3,'SKIP') , 'MC':'SKIP') ) ?==:?==:DE 'OF' (CTR-:=1; DE'OF'DE ! ('REF''MA'('NIL'),T1,'SKIP') , 'MA':'SKIP') ; CTRL(41)) ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R531B # (PRINT(("NESTED SELECTIONS ON REF,ROW,REF ROW OF STRUCTURES", NEWLINE)) ; 'INT' VF = 4*(11+6)+10*(11+6+4) ; 'INT' CTRT:=0,CTR:=0,CTRLOC ; 'PROC' CTRL = ('INT' INC)'VOID' : (CTR/=CTRLOC+INC ! PRINT(("COUNT ERROR IN TEST ",CTRT,CTR,CTRLOC+INC,NEWLINE))) ; 'INT'K , 'OP' 'AND' = ('BOOL' A,B)'BOOL' : (K+:=1;(K=2 !( 'NOT'A!PRINT(1))); B ! A ! PRINT(K);'FALSE') , 'PROC' ERU = 'VOID' : PRINT(("ER.",CTRT,CTR-CTRLOC,NEWLINE)) ; # SERVITUDES # 'PROC' PEURC = ('INT' X,'UNION'('INT','REAL') Y) 'REF''CHAR' : (CTR+:=X ; 'HEAP''CHAR':="""") ; 'MODE' 'P' = 'PROC'('INT','UNION'('INT','REAL'))'REF''CHAR' , 'U' = 'UNION'('BOOL','PROC'([]'CHAR')'STRING') ; 'MODE' 'S' = 'STRUCT'('U' A,B,C , 'PROC''INT' CH , 'BITS' D) , 'PRC' = 'PROC'([]'CHAR')'STRING' ; CTRT:= 1 ; CTRLOC:=CTR ; ('S' A=('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012); (K:=1 ; (A'OF'A!('BOOL'):'TRUE') 'AND' (B'OF'A ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'A ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'A=16R6 ! CTR+:= 2;'TRUE') ! CTR+:=10 ! ERU) ; CH 'OF' A); CTRL(17) ; CTRT:= 2 ; CTRLOC:=CTR ; ([]'S' A=( ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012) , ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012)); (K:=1 ; 'S'B=A[2];(A'OF'B!('BOOL'):'TRUE') 'AND' (B'OF'B ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'B ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'B=16R6 ! CTR+:= 2;'TRUE') ! CTR+:=10 ! ERU) ; ( CH 'OF' A)[2]); CTRL(17) ; CTRT:= 3 ; CTRLOC:=CTR ; 'INT' ('REF''S' A='LOC''S' := ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=2 , 4R012); CH 'OF' A:='INT' : CTR+:=1; 'REF''S' B=A; (K:=1 ; (A'OF'B!('BOOL'):'TRUE') 'AND' (B'OF'B ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'B ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'B=16R6 ! CTR+:= 2;'TRUE') ! CTR+:=10 ! ERU) ; CH 'OF' B); CTRL(17) ; CTRT:= 4 ; CTRLOC:=CTR ; ('REF'[]'S' A='LOC'[1:2]'S' := (('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012) , ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012)); []'PROC''INT'( CH 'OF' A:=('INT' : CTR+:=2,'INT' : CTR+:=1); 'REF'[]'S' B=A; (K:=1 ; 'S'C=B[2];(A'OF'C!('BOOL'):'TRUE') 'AND' (B'OF'C ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'C ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'C=16R6 ! CTR+:= 2;'TRUE') ! CTR+:=10 ! ERU) ; CH 'OF' B)[2]); CTRL(17) ; CTRT:= 5 ; CTRLOC:=CTR ; ('STRUCT'('P' A, 'S' CH) A=(PEURC, ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012)); (K:=1 ; (A'OF'A)( 4,13.0)="""" 'AND'( 'S'B=CH'OF'A; (A'OF'B!('BOOL'):'TRUE') 'AND' (B'OF'B ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'B ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'B=16R6 ! CTR+:= 2;'TRUE')) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' A); CTRL(21) ; CTRT:= 6 ; CTRLOC:=CTR ; ('STRUCT'('P' A, []'S' CH) A=(PEURC,( ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012) , ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))); (K:=1 ; (A'OF'A)( 4,13.0)="""" 'AND'( []'S'B=CH'OF'A; 'S'C=B[2];(A'OF'C!('BOOL'):'TRUE') 'AND' (B'OF'C ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'C ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'C=16R6 ! CTR+:= 2;'TRUE')) ! CTR+:=10 ! ERU) ; ( CH 'OF' CH 'OF' A)[2]); CTRL(21) ; CTRT:= 7 ; CTRLOC:=CTR ; 'INT' ('STRUCT'('P' A, 'REF''S' CH) A=(PEURC,'LOC''S' := ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=2 , 4R012)); CH 'OF' CH 'OF' A:='INT' : CTR+:=1; 'STRUCT'('P' A, 'REF''S' CH) B=A; (K:=1 ; (A'OF'B)( 4,13.0)="""" 'AND'( 'REF''S'C=CH'OF'B; (A'OF'C!('BOOL'):'TRUE') 'AND' (B'OF'C ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'C ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'C=16R6 ! CTR+:= 2;'TRUE')) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' B); CTRL(21) ; CTRT:= 8 ; CTRLOC:=CTR ; ('STRUCT'('P' A, 'REF'[]'S' CH) A=(PEURC,'LOC'[1:2]'S' := (('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012) , ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))); []'PROC''INT'( CH 'OF' CH 'OF' A:=('INT' : CTR+:=2,'INT' : CTR+:=1); 'STRUCT'('P' A, 'REF'[]'S' CH) B=A; (K:=1 ; (A'OF'B)( 4,13.0)="""" 'AND'( 'REF'[]'S'C=CH'OF'B; 'S'D=C[2];(A'OF'D!('BOOL'):'TRUE') 'AND' (B'OF'D ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'D ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'D=16R6 ! CTR+:= 2;'TRUE')) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' B)[2]); CTRL(21) ; CTRT:= 9 ; CTRLOC:=CTR ; ([]'STRUCT'('P' A, 'S' CH) A=((PEURC, ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012)) , (PEURC, ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))); (K:=1 ; 'STRUCT'('P' A, 'S' CH)B=A[2];(A'OF'B)( 4,13.0)="""" 'AND'( 'S'C=CH'OF'B; (A'OF'C!('BOOL'):'TRUE') 'AND' (B'OF'C ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'C ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'C=16R6 ! CTR+:= 2;'TRUE')) ! CTR+:=10 ! ERU) ; ( CH 'OF' CH 'OF' A)[2]); CTRL(21) ; CTRT:= 10 ; CTRLOC:=CTR ; 'INT' ('REF''STRUCT'('P' A, 'S' CH) A='LOC''STRUCT'('P' A, 'S' CH) := (PEURC,('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=2 , 4R012)); CH 'OF' CH 'OF' A:='INT' : CTR+:=1; 'REF''STRUCT'('P' A, 'S' CH) B=A; (K:=1 ; (A'OF'B)( 4,13.0)="""" 'AND'( 'S'C=CH'OF'B; (A'OF'C!('BOOL'):'TRUE') 'AND' (B'OF'C ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'C ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'C=16R6 ! CTR+:= 2;'TRUE')) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' B); CTRL(21) ; CTRT:= 11 ; CTRLOC:=CTR ; ('REF''STRUCT'('P' A, []'S' CH) A='LOC''STRUCT'('P' A, [1:2]'S' CH) := (PEURC,(('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012) , ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))); []'PROC''INT'( CH 'OF' CH 'OF' A:=('INT' : CTR+:=2,'INT' : CTR+:=1); 'REF''STRUCT'('P' A, []'S' CH) B=A; (K:=1 ; (A'OF'B)( 4,13.0)="""" 'AND'( []'S'C=CH'OF'B; 'S'D=C[2];(A'OF'D!('BOOL'):'TRUE') 'AND' (B'OF'D ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'D ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'D=16R6 ! CTR+:= 2;'TRUE')) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' B)[2]); CTRL(21) ; CTRT:= 12 ; CTRLOC:=CTR ; 'INT' ('REF''STRUCT'('P' A, 'REF''S' CH) A='LOC''STRUCT'('P' A, 'REF''S' CH) := (PEURC,'LOC''S' := ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=2 , 4R012)); CH 'OF' CH 'OF' A:='INT' : CTR+:=1; 'REF''STRUCT'('P' A, 'REF''S' CH) B=A; (K:=1 ; (A'OF'B)( 4,13.0)="""" 'AND'( 'REF''S'C=CH'OF'B; (A'OF'C!('BOOL'):'TRUE') 'AND' (B'OF'C ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'C ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'C=16R6 ! CTR+:= 2;'TRUE')) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' B); CTRL(21) ; CTRT:= 13 ; CTRLOC:=CTR ; ('REF''STRUCT'('P' A, 'REF'[]'S' CH) A='LOC''STRUCT'('P' A, 'REF'[]'S' CH) := (PEURC,'LOC'[1:2]'S' := (('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012) , ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))); []'PROC''INT'( CH 'OF' CH 'OF' A:=('INT' : CTR+:=2,'INT' : CTR+:=1); 'REF''STRUCT'('P' A, 'REF'[]'S' CH) B=A; (K:=1 ; (A'OF'B)( 4,13.0)="""" 'AND'( 'REF'[]'S'C=CH'OF'B; 'S'D=C[2];(A'OF'D!('BOOL'):'TRUE') 'AND' (B'OF'D ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'D ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'D=16R6 ! CTR+:= 2;'TRUE')) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' B)[2]); CTRL(21) ; CTRT:= 14 ; CTRLOC:=CTR ; ('REF'[]'STRUCT'('P' A, 'S' CH) A='LOC'[1:2]'STRUCT'('P' A, 'S' CH) := ((PEURC,('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012)) , (PEURC, ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))); []'PROC''INT'( CH 'OF' CH 'OF' A:=('INT' : CTR+:=2,'INT' : CTR+:=1); 'REF'[]'STRUCT'('P' A, 'S' CH) B=A; (K:=1 ; 'STRUCT'('P' A, 'S' CH)C=B[2];(A'OF'C)( 4,13.0)="""" 'AND'( 'S'D=CH'OF'C; (A'OF'D!('BOOL'):'TRUE') 'AND' (B'OF'D ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'D ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'D=16R6 ! CTR+:= 2;'TRUE')) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' B)[2]); CTRL(21) ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R531C # (PRINT(("NESTED SELECTIONS ON REF,ROW,REF ROW OF STRUCTURES", NEWLINE)) ; 'INT' VF = 22*(11+6+4+2) ; 'INT' CTRT:=0,CTR:=0,CTRLOC ; 'PROC' CTRL = ('INT' INC)'VOID' : (CTR/=CTRLOC+INC ! PRINT(("COUNT ERROR IN TEST ",CTRT,CTR,CTRLOC+INC,NEWLINE))) ; 'INT'K , 'OP' 'AND' = ('BOOL' A,B)'BOOL' : (K+:=1;(K=2 !( 'NOT'A!PRINT(1))); B ! A ! PRINT(K);'FALSE') , 'PROC' ERU = 'VOID' : PRINT(("ER.",CTRT,CTR-CTRLOC,NEWLINE)) ; # SERVITUDES # 'PROC' PEURC = ('INT' X,'UNION'('INT','REAL') Y) 'REF''CHAR' : (CTR+:=X ; 'HEAP''CHAR':="""") ; 'MODE' 'P' = 'PROC'('INT','UNION'('INT','REAL'))'REF''CHAR' , 'U' = 'UNION'('BOOL','PROC'([]'CHAR')'STRING') ; 'MODE' 'S' = 'STRUCT'('U' A,B,C , 'PROC''INT' CH , 'BITS' D) , 'PRC' = 'PROC'([]'CHAR')'STRING' ; CTRT:= 1 ; CTRLOC:=CTR ; ('STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) A=(('TRUE','FALSE'),('FALSE','TRUE'),(PEURC, ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012)),"","##"); (K:=1 ; (A'OF'A)[1]'AND' 'NOT'(A'OF'A)[2] 'AND' 'NOT'(B'OF'A)[1] 'AND' (B'OF'A)[2] 'AND' C'OF'A="" 'AND' 'UPB'D'OF'A=(CTR+:=2;2) 'AND' ( 'STRUCT'('P' A, 'S' CH)B=CH'OF'A; (A'OF'B)( 4,13.0)="""" 'AND'( 'S'C=CH'OF'B; (A'OF'C!('BOOL'):'TRUE') 'AND' (B'OF'C ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'C ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'C=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' A); CTRL(23) ; CTRT:= 2 ; CTRLOC:=CTR ; ('STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, []'S' CH) CH , 'STRING' C,D) A=(('TRUE','FALSE'),('FALSE','TRUE'), (PEURC,(('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012) , ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))),"","##"); (K:=1 ; (A'OF'A)[1]'AND' 'NOT'(A'OF'A)[2] 'AND' 'NOT'(B'OF'A)[1] 'AND' (B'OF'A)[2] 'AND' C'OF'A="" 'AND' 'UPB'D'OF'A=(CTR+:=2;2) 'AND' ( 'STRUCT'('P' A, []'S' CH)B=CH'OF'A; (A'OF'B)( 4,13.0)="""" 'AND'( []'S'C=CH'OF'B; 'S'D=C[2];(A'OF'D!('BOOL'):'TRUE') 'AND' (B'OF'D ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'D ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'D=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; ( CH 'OF' CH 'OF' CH 'OF' A)[2]); CTRL(23) ; CTRT:= 3 ; CTRLOC:=CTR ; 'INT' ('STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, 'REF''S' CH) CH , 'STRING' C,D) A=(('TRUE','FALSE'),('FALSE','TRUE'), (PEURC,'LOC''S' := ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=2 , 4R012)),"","##"); CH 'OF' CH 'OF' CH 'OF' A:='INT' : CTR+:=1; 'STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, 'REF''S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'STRUCT'('P' A, 'REF''S' CH)C=CH'OF'B; (A'OF'C)( 4,13.0)="""" 'AND'( 'REF''S'D=CH'OF'C; (A'OF'D!('BOOL'):'TRUE') 'AND' (B'OF'D ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'D ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'D=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B); CTRL(23) ; CTRT:= 4 ; CTRLOC:=CTR ; ('STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, 'REF'[]'S' CH) CH , 'STRING' C,D) A=(('TRUE','FALSE'),('FALSE','TRUE'), (PEURC,'LOC'[1:2]'S' := (('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012) , ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))),"","##"); []'PROC''INT'( CH 'OF' CH 'OF' CH 'OF' A:=('INT' : CTR+:=2, 'INT' : CTR+:=1); 'STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, 'REF'[]'S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'STRUCT'('P' A, 'REF'[]'S' CH)C=CH'OF'B; (A'OF'C)( 4,13.0)="""" 'AND'( 'REF'[]'S'D=CH'OF'C; 'S'E=D[2];(A'OF'E!('BOOL'):'TRUE') 'AND' (B'OF'E ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'E ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'E=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B)[2]); CTRL(23) ; CTRT:= 5 ; CTRLOC:=CTR ; 'INT' ('STRUCT'([]'BOOL' A,B, 'REF''STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) A=(('TRUE','FALSE'),('FALSE','TRUE'),'LOC' 'STRUCT'('P' A, 'S' CH) := (PEURC,('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=2 , 4R012)),"","##"); CH 'OF' CH 'OF' CH 'OF' A:='INT' : CTR+:=1; 'STRUCT'([]'BOOL' A,B, 'REF''STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'REF''STRUCT'('P' A, 'S' CH)C=CH'OF'B; (A'OF'C)( 4,13.0)="""" 'AND'( 'S'D=CH'OF'C; (A'OF'D!('BOOL'):'TRUE') 'AND' (B'OF'D ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'D ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'D=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B); CTRL(23) ; CTRT:= 6 ; CTRLOC:=CTR ; ('STRUCT'([]'BOOL' A,B, 'REF''STRUCT'('P' A, []'S' CH) CH , 'STRING' C,D) A=(('TRUE','FALSE'),('FALSE','TRUE'),'LOC' 'STRUCT'('P' A, [1:2]'S' CH) := (PEURC,(('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012) , ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))),"","##"); []'PROC''INT'( CH 'OF' CH 'OF' CH 'OF' A:=('INT' : CTR+:=2, 'INT' : CTR+:=1); 'STRUCT'([]'BOOL' A,B, 'REF''STRUCT'('P' A, []'S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'REF''STRUCT'('P' A, []'S' CH)C=CH'OF'B; (A'OF'C)( 4,13.0)="""" 'AND'( []'S'D=CH'OF'C; 'S'E=D[2];(A'OF'E!('BOOL'):'TRUE') 'AND' (B'OF'E ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'E ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'E=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B)[2]); CTRL(23) ; CTRT:= 7 ; CTRLOC:=CTR ; 'INT' ('STRUCT'([]'BOOL' A,B, 'REF''STRUCT'('P' A, 'REF''S' CH) CH , 'STRING' C,D) A=(('TRUE','FALSE'),('FALSE','TRUE'), 'LOC''STRUCT'('P' A, 'REF''S' CH) := (PEURC,'LOC''S' := ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=2 , 4R012)),"","##"); CH 'OF' CH 'OF' CH 'OF' A:='INT' : CTR+:=1; 'STRUCT'([]'BOOL' A,B, 'REF''STRUCT'('P' A, 'REF''S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'REF''STRUCT'('P' A, 'REF''S' CH)C=CH'OF'B; (A'OF'C)( 4,13.0)="""" 'AND'( 'REF''S'D=CH'OF'C; (A'OF'D!('BOOL'):'TRUE') 'AND' (B'OF'D ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'D ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'D=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B); CTRL(23) ; CTRT:= 8 ; CTRLOC:=CTR ; ('STRUCT'([]'BOOL' A,B, 'REF''STRUCT'('P' A, 'REF'[]'S' CH) CH , 'STRING' C,D) A=(('TRUE','FALSE'),('FALSE','TRUE'), 'LOC''STRUCT'('P' A, 'REF'[]'S' CH) := (PEURC,'LOC'[1:2]'S' := (('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012) , ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))),"","##"); []'PROC''INT'( CH 'OF' CH 'OF' CH 'OF' A:=('INT' : CTR+:=2, 'INT' : CTR+:=1); 'STRUCT'([]'BOOL' A,B, 'REF''STRUCT'('P' A, 'REF'[]'S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'REF''STRUCT'('P' A, 'REF'[]'S' CH)C=CH'OF'B; (A'OF'C)( 4,13.0)="""" 'AND'( 'REF'[]'S'D=CH'OF'C; 'S'E=D[2];(A'OF'E!('BOOL'):'TRUE') 'AND' (B'OF'E ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'E ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'E=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B)[2]); CTRL(23) ; CTRT:= 9 ; CTRLOC:=CTR ; ('STRUCT'([]'BOOL' A,B, []'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) A=(('TRUE','FALSE'),('FALSE','TRUE'),((PEURC, ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012)) , (PEURC, ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))),"","##"); (K:=1 ; (A'OF'A)[1]'AND' 'NOT'(A'OF'A)[2] 'AND' 'NOT'(B'OF'A)[1] 'AND' (B'OF'A)[2] 'AND' C'OF'A="" 'AND' 'UPB'D'OF'A=(CTR+:=2;2) 'AND' ( []'STRUCT'('P' A, 'S' CH)B=CH'OF'A; 'STRUCT'('P' A, 'S' CH)C=B[2];(A'OF'C)( 4,13.0)="""" 'AND'( 'S'D=CH'OF'C; (A'OF'D!('BOOL'):'TRUE') 'AND' (B'OF'D ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'D ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'D=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; ( CH 'OF' CH 'OF' CH 'OF' A)[2]); CTRL(23) ; CTRT:= 10 ; CTRLOC:=CTR ; ('STRUCT'([]'BOOL' A,B, 'REF'[]'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) A=(('TRUE','FALSE'),('FALSE','TRUE'),'LOC'[ 1:2]'STRUCT'('P' A, 'S' CH) := ((PEURC,('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012)) , (PEURC, ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))),"","##"); []'PROC''INT'( CH 'OF' CH 'OF' CH 'OF' A:=('INT' : CTR+:=2, 'INT' : CTR+:=1); 'STRUCT'([]'BOOL' A,B, 'REF'[]'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'REF'[]'STRUCT'('P' A, 'S' CH)C=CH'OF'B; 'STRUCT'('P' A, 'S' CH)D=C[2];(A'OF'D)( 4,13.0)="""" 'AND'( 'S'E=CH'OF'D; (A'OF'E!('BOOL'):'TRUE') 'AND' (B'OF'E ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'E ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'E=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B)[2]); CTRL(23) ; CTRT:= 11 ; CTRLOC:=CTR ; ([]'STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) A=((('TRUE','FALSE'),('FALSE','TRUE'),(PEURC, ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012)),"","##") , (('TRUE','FALSE'),('FALSE','TRUE'), (PEURC,('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012)),"","##")); (K:=1 ; 'STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D)B=A[2];(A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'STRUCT'('P' A, 'S' CH)C=CH'OF'B; (A'OF'C)( 4,13.0)="""" 'AND'( 'S'D=CH'OF'C; (A'OF'D!('BOOL'):'TRUE') 'AND' (B'OF'D ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'D ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'D=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; ( CH 'OF' CH 'OF' CH 'OF' A)[2]); CTRL(23) ; CTRT:= 12 ; CTRLOC:=CTR ; 'INT' ('REF''STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) A='LOC''STRUCT'([1:2]'BOOL' A,B, 'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) := (('TRUE','FALSE'),('FALSE','TRUE'),(PEURC, ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=2 , 4R012)),"","##"); CH 'OF' CH 'OF' CH 'OF' A:='INT' : CTR+:=1; 'REF''STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'STRUCT'('P' A, 'S' CH)C=CH'OF'B; (A'OF'C)( 4,13.0)="""" 'AND'( 'S'D=CH'OF'C; (A'OF'D!('BOOL'):'TRUE') 'AND' (B'OF'D ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'D ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'D=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B); CTRL(23) ; CTRT:= 13 ; CTRLOC:=CTR ; ('REF''STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, []'S' CH) CH , 'STRING' C,D) A='LOC''STRUCT'([1:2]'BOOL' A,B, 'STRUCT'('P' A, [1:2]'S' CH) CH , 'STRING' C,D) := (('TRUE','FALSE'),('FALSE','TRUE'),(PEURC,( ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012) , ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))),"","##"); []'PROC''INT'( CH 'OF' CH 'OF' CH 'OF' A:=('INT' : CTR+:=2, 'INT' : CTR+:=1); 'REF''STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, []'S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'STRUCT'('P' A, []'S' CH)C=CH'OF'B; (A'OF'C)( 4,13.0)="""" 'AND'( []'S'D=CH'OF'C; 'S'E=D[2];(A'OF'E!('BOOL'):'TRUE') 'AND' (B'OF'E ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'E ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'E=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B)[2]); CTRL(23) ; CTRT:= 14 ; CTRLOC:=CTR ; 'INT' ('REF''STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, 'REF''S' CH) CH , 'STRING' C,D) A='LOC''STRUCT'([1:2]'BOOL' A,B, 'STRUCT'('P' A, 'REF''S' CH) CH , 'STRING' C,D) := (('TRUE','FALSE'),('FALSE','TRUE'),(PEURC,'LOC''S' := ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=2 , 4R012)),"","##"); CH 'OF' CH 'OF' CH 'OF' A:='INT' : CTR+:=1; 'REF''STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, 'REF''S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'STRUCT'('P' A, 'REF''S' CH)C=CH'OF'B; (A'OF'C)( 4,13.0)="""" 'AND'( 'REF''S'D=CH'OF'C; (A'OF'D!('BOOL'):'TRUE') 'AND' (B'OF'D ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'D ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'D=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B); CTRL(23) ; CTRT:= 15 ; CTRLOC:=CTR ; ('REF''STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, 'REF'[]'S' CH) CH , 'STRING' C,D) A='LOC''STRUCT'([1:2]'BOOL' A,B, 'STRUCT'('P' A, 'REF'[]'S' CH) CH , 'STRING' C,D) := (('TRUE','FALSE'),('FALSE','TRUE'),(PEURC,'LOC'[1:2]'S' := (('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012) , ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))),"","##"); []'PROC''INT'( CH 'OF' CH 'OF' CH 'OF' A:=('INT' : CTR+:=2, 'INT' : CTR+:=1); 'REF''STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, 'REF'[]'S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'STRUCT'('P' A, 'REF'[]'S' CH)C=CH'OF'B; (A'OF'C)( 4,13.0)="""" 'AND'( 'REF'[]'S'D=CH'OF'C; 'S'E=D[2];(A'OF'E!('BOOL'):'TRUE') 'AND' (B'OF'E ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'E ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'E=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B)[2]); CTRL(23) ; CTRT:= 16 ; CTRLOC:=CTR ; 'INT' ('REF''STRUCT'([]'BOOL' A,B, 'REF''STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) A='LOC''STRUCT'([1:2]'BOOL' A,B, 'REF''STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) := (('TRUE','FALSE'),('FALSE','TRUE'),'LOC''STRUCT'('P' A, 'S' CH) := (PEURC,('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=2 , 4R012)),"","##"); CH 'OF' CH 'OF' CH 'OF' A:='INT' : CTR+:=1; 'REF''STRUCT'([]'BOOL' A,B, 'REF''STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'REF''STRUCT'('P' A, 'S' CH)C=CH'OF'B; (A'OF'C)( 4,13.0)="""" 'AND'( 'S'D=CH'OF'C; (A'OF'D!('BOOL'):'TRUE') 'AND' (B'OF'D ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'D ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'D=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B); CTRL(23) ; CTRT:= 17 ; CTRLOC:=CTR ; ('REF''STRUCT'([]'BOOL' A,B, 'REF''STRUCT'('P' A, []'S' CH) CH , 'STRING' C,D) A='LOC''STRUCT'([1:2]'BOOL' A,B, 'REF''STRUCT'('P' A, []'S' CH) CH , 'STRING' C,D) := (('TRUE','FALSE'),('FALSE','TRUE'),'LOC''STRUCT'('P' A, [1:2]'S' CH) := (PEURC,(('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012) , ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))),"","##"); []'PROC''INT'( CH 'OF' CH 'OF' CH 'OF' A:=('INT' : CTR+:=2, 'INT' : CTR+:=1); 'REF''STRUCT'([]'BOOL' A,B, 'REF''STRUCT'('P' A, []'S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'REF''STRUCT'('P' A, []'S' CH)C=CH'OF'B; (A'OF'C)( 4,13.0)="""" 'AND'( []'S'D=CH'OF'C; 'S'E=D[2];(A'OF'E!('BOOL'):'TRUE') 'AND' (B'OF'E ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'E ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'E=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B)[2]); CTRL(23) ; CTRT:= 18 ; CTRLOC:=CTR ; 'INT' ('REF''STRUCT'([]'BOOL' A,B, 'REF''STRUCT'('P' A, 'REF''S' CH) CH , 'STRING' C,D) A='LOC''STRUCT'([1:2]'BOOL' A,B, 'REF''STRUCT'('P' A, 'REF''S' CH) CH , 'STRING' C,D) := (('TRUE','FALSE'),('FALSE','TRUE'),'LOC''STRUCT'('P' A, 'REF''S' CH) := (PEURC,'LOC''S' := ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=2 , 4R012)),"","##"); CH 'OF' CH 'OF' CH 'OF' A:='INT' : CTR+:=1; 'REF''STRUCT'([]'BOOL' A,B, 'REF''STRUCT'('P' A, 'REF''S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'REF''STRUCT'('P' A, 'REF''S' CH)C=CH'OF'B; (A'OF'C)( 4,13.0)="""" 'AND'( 'REF''S'D=CH'OF'C; (A'OF'D!('BOOL'):'TRUE') 'AND' (B'OF'D ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'D ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'D=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B); CTRL(23) ; CTRT:= 19 ; CTRLOC:=CTR ; ('REF''STRUCT'([]'BOOL' A,B, 'REF''STRUCT'('P' A, 'REF'[]'S' CH) CH , 'STRING' C,D) A='LOC''STRUCT'([1:2]'BOOL' A,B, 'REF''STRUCT'('P' A, 'REF'[]'S' CH) CH , 'STRING' C,D) := (('TRUE','FALSE'),('FALSE','TRUE'),'LOC''STRUCT'('P' A, 'REF'[]'S' CH) := (PEURC,'LOC'[1:2]'S' := (('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012) , ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))),"","##"); []'PROC''INT'( CH 'OF' CH 'OF' CH 'OF' A:=('INT' : CTR+:=2, 'INT' : CTR+:=1); 'REF''STRUCT'([]'BOOL' A,B, 'REF''STRUCT'('P' A, 'REF'[]'S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'REF''STRUCT'('P' A, 'REF'[]'S' CH)C=CH'OF'B; (A'OF'C)( 4,13.0)="""" 'AND'( 'REF'[]'S'D=CH'OF'C; 'S'E=D[2];(A'OF'E!('BOOL'):'TRUE') 'AND' (B'OF'E ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'E ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'E=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B)[2]); CTRL(23) ; CTRT:= 20 ; CTRLOC:=CTR ; ('REF''STRUCT'([]'BOOL' A,B, []'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) A='LOC''STRUCT'([1:2]'BOOL' A,B, [1:2]'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) := (('TRUE','FALSE'),('FALSE','TRUE'),((PEURC, ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012)) , (PEURC, ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))),"","##"); []'PROC''INT'( CH 'OF' CH 'OF' CH 'OF' A:=('INT' : CTR+:=2, 'INT' : CTR+:=1); 'REF''STRUCT'([]'BOOL' A,B, []'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( []'STRUCT'('P' A, 'S' CH)C=CH'OF'B; 'STRUCT'('P' A, 'S' CH)D=C[2];(A'OF'D)( 4,13.0)="""" 'AND'( 'S'E=CH'OF'D; (A'OF'E!('BOOL'):'TRUE') 'AND' (B'OF'E ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'E ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'E=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B)[2]); CTRL(23) ; CTRT:= 21 ; CTRLOC:=CTR ; ('REF''STRUCT'([]'BOOL' A,B, 'REF'[]'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) A='LOC''STRUCT'([1:2]'BOOL' A,B, 'REF'[]'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) := (('TRUE','FALSE'),('FALSE','TRUE'),'LOC'[1:2]'STRUCT'('P' A, 'S' CH) := ((PEURC,('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012)) , (PEURC, ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012))),"","##"); []'PROC''INT'( CH 'OF' CH 'OF' CH 'OF' A:=('INT' : CTR+:=2, 'INT' : CTR+:=1); 'REF''STRUCT'([]'BOOL' A,B, 'REF'[]'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; (A'OF'B)[1]'AND' 'NOT'(A'OF'B)[2] 'AND' 'NOT'(B'OF'B)[1] 'AND' (B'OF'B)[2] 'AND' C'OF'B="" 'AND' 'UPB'D'OF'B=(CTR+:=2;2) 'AND' ( 'REF'[]'STRUCT'('P' A, 'S' CH)C=CH'OF'B; 'STRUCT'('P' A, 'S' CH)D=C[2];(A'OF'D)( 4,13.0)="""" 'AND'( 'S'E=CH'OF'D; (A'OF'E!('BOOL'):'TRUE') 'AND' (B'OF'E ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'E ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'E=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B)[2]); CTRL(23) ; CTRT:= 22 ; CTRLOC:=CTR ; ('REF'[]'STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) A='LOC'[1:2]'STRUCT'([1:2]'BOOL' A,B, 'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) := ((('TRUE','FALSE'),('FALSE','TRUE'),(PEURC, ('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=8 , 4R012)),"","##") , (('TRUE','FALSE'),('FALSE','TRUE'), (PEURC,('FALSE',([]'CHAR' TC)'STRING' : (CTR+:='UPB'TC* 2;""), 'TRUE' , 'INT' : CTR+:=1 , 4R012)),"","##")); []'PROC''INT'( CH 'OF' CH 'OF' CH 'OF' A:=('INT' : CTR+:=2, 'INT' : CTR+:=1); 'REF'[]'STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D) B=A; (K:=1 ; 'STRUCT'([]'BOOL' A,B, 'STRUCT'('P' A, 'S' CH) CH , 'STRING' C,D)C=B[2];(A'OF'C)[1]'AND' 'NOT'(A'OF'C)[2] 'AND' 'NOT'(B'OF'C)[1] 'AND' (B'OF'C)[2] 'AND' C'OF'C="" 'AND' 'UPB'D'OF'C=(CTR+:=2;2) 'AND' ( 'STRUCT'('P' A, 'S' CH)D=CH'OF'C; (A'OF'D)( 4,13.0)="""" 'AND'( 'S'E=CH'OF'D; (A'OF'E!('BOOL'):'TRUE') 'AND' (B'OF'E ! ('PRC' P):'UPB'P("""")=0) 'AND' (C'OF'E ! ('BOOL'B):(CTR+:= 2;B)) 'AND' (D'OF'E=16R6 ! CTR+:= 2;'TRUE'))) ! CTR+:=10 ! ERU) ; CH 'OF' CH 'OF' CH 'OF' B)[2]); CTRL(23) ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R532A # (PRINT(("SLICES WITH SUBSCRIPTS",NEWLINE)) ; 'PRIO' *=6 , /=6 , 'INT' VF = (27+4+10+2+2)*4 ; 'INT' CTRT:=0 , CTR:=0 , CTRLOC ; 'PROC' CTRL = ('INT' INC)'VOID' : (CTR/=CTRLOC+INC ! PRINT(("COUNT ERROR IN TEST ",CTRT,CTR,CTRLOC+INC,NEWLINE))) ; # SERVITUDES POUR CONTEXTES # 'OP' ?=:= = ('INT' X)'VOID' : X , 'MODE' 'MSTR' = 'STRUCT'('COMPL' OF,DE) , 'PRIO' ?==:=1 ; 'OP' ?==:=('INT' A)'PROC''INT' : 'INT' : CTR+:=1 , ?==:=('UNION'('INT','BOOL') A,'INT' B)'BOOL':(CTR+:=1)=B , ?==:=('UNION'('REF''INT','REF''BOOL') A,'REAL' B)'MSTR':'SKIP', ?==:=('MSTR' A,B)'REF''INT' : CTR+:=1 ; # SERVITUDES POUR INDICES ET PRIMAIRES # 'UNION'('INT','REAL')VU:=1E0,'INT' IDRE:=0; 'PROC' IDPRE='REF''INT' : 'HEAP''INT':=0 , 'STRUCT'('INT' C1,C2,C3,C4,C5) ISTRUCT = (1,2,3,4,5) , [-3:1]'INT' IRANG:=[]'INT'(5,4,3,2,1)[@-3] , 'PROC' IPROC := ('INT' A)'REF''INT' : 'HEAP''INT':=A?10 , 'INT' ID1=1 , ID2=2 , ID3=3 , ID4=4 , ID5=5 , 'BOOL' FAUX = 'TRUE' ; # SERVITUDES POUR PRIMAIRES DE MODE [4,1] 'PROC' 'INT' # 'MODE' 'MTA' = [('INT' X:=IDRE:=1;X) : C4 'OF' ISTRUCT , 'ABS'-1*1] 'PROC' 'INT'; []'PROC''INT'F = 'PROC''INT'('SKIP') ; 'MTA' IDMTA = (F,F,'INT': ( CTR+:=1;1),F), ['LOC''INT':=5 : 'ABS'-5*1, ('INT' X:=4;X) , IDPRE:=1 : 'INT'(1)] 'MTA' TTTA; TTTA[('INT' X:=IRANG[2-5];X) , , IDRE:=1] := (IDMTA , (F,F,'INT': ( CTR+:=1;1),F) ,IDMTA,'MTA'('SKIP')) ; 'PROC' PAVECA=('INT'A,'BITS'B)'MTA' : (8R33=B! (F,F,'INT': ( CTR+:=1;1),F)) , 'OP' +=('INT'A,'BOOL'B)'MTA' : (F,F,'INT': ( CTR+:=1;1),F) ; 'STRUCT'('MTA' DE)DEA; DE'OF'DEA:=IDMTA ; # SERVITUDES POUR PRIMAIRES DE MODE [4,1] 'PROC' 'REF''BOOL' # 'MODE' 'MTB' = [IRANG[2-1] : 'INT' : 4 , 'LOC''INT':=1] 'PROC' 'REF''BOOL'; []'PROC''REF''BOOL'G = 'PROC''REF''BOOL'('SKIP') ; 'MTB' IDMTB = (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G), [C5 'OF' ISTRUCT : IDPRE:=5, 'INT'(4) , ID1 : IPROC(10)] 'MTB' TTTB; TTTB[IRANG[2-5] , , IRANG[2-1]] := (IDMTB , (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G) ,IDMTB,'MTB'('SKIP')) ; 'PROC' PAVECB=('INT'A,'BITS'B)'MTB' : (8R33=B! (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G)) , 'OP' -=('INT'A,'BOOL'B)'MTB' : (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G) ; 'STRUCT'('MTB' DE)DEB; DE'OF'DEB:=IDMTB ; # SERVITUDES POUR PRIMAIRES DE MODE [4,1] 'PROC' 'MSTR' # 'MODE' 'MTC' = [C1 'OF' ISTRUCT : IRANG[2-4] , 'INT' : 1] 'PROC' 'MSTR'; []'PROC''MSTR'H = 'PROC''MSTR'('SKIP') ; 'MTC' IDMTC = (H,H,'MSTR': ( CTR+:=1,0'I'1),H), ['ABS'-5*1 : 'INT' : 5, IRANG[2-4] , 1 : 'ABS'-1*1] 'MTC' TTTC; TTTC['ABS'-5*1 , , IRANG[2-1]] := (IDMTC , (H,H,'MSTR': ( CTR+:=1,0'I'1),H) ,IDMTC,'MTC'('SKIP')) ; 'PROC' PAVECC=('INT'A,'BITS'B)'MTC' : (8R33=B! (H,H,'MSTR': ( CTR+:=1,0'I'1),H)) , 'OP' *=('INT'A,'BOOL'B)'MTC' : (H,H,'MSTR': ( CTR+:=1,0'I'1),H) ; 'STRUCT'('MTC' DE)DEC; DE'OF'DEC:=IDMTC ; # SERVITUDES POUR PRIMAIRES DE MODE [4,1] 'PROC' [,,]'PROC''INT' # 'MODE' 'MTD' = [IPROC(10) : ('INT' X:='INT'(4);X) , 'INT'(1)] 'PROC' [,,]'PROC''INT'; []'PROC'[,,]'PROC''INT'I = 'PROC'[,,]'PROC''INT'('SKIP') ; 'MTD' IDMTD = (I,I,[,,]'PROC''INT': ( [3]'PROC''INT'X;X[2]:='INT':CTR+:=1; X[2]+0;(X,X,X,X,X)),I), ['LOC''INT':=5 : IRANG[2-5], 'ABS'-4*1 , IPROC(10) : 'LOC''INT':=1] 'MTD' TTTD; TTTD[IDPRE:=5 , , ID1] := (IDMTD , (I,I,[,,]'PROC''INT': ( [3]'PROC''INT'X;X[2]:='INT':CTR+:=1; X[2]+0;(X,X,X,X,X)),I) ,IDMTD,'MTD'('SKIP')) ; 'PROC' PAVECD=('INT'A,'BITS'B)'MTD' : (8R33=B! (I,I,[,,]'PROC''INT': ( [3]'PROC''INT'X;X[2]:='INT':CTR+:=1; X[2]+0;(X,X,X,X,X)),I)) , 'OP' /=('INT'A,'BOOL'B)'MTD' : (I,I,[,,]'PROC''INT': ( [3]'PROC''INT'X;X[2]:='INT':CTR+:=1; X[2]+0;(X,X,X,X,X)),I) ; 'STRUCT'('MTD' DE)DED; DE'OF'DED:=IDMTD ; # SERVITUDES POUR PRIMAIRES DE MODE [4,1] 'PROC' 'PROC'([]'STRING')'PROC''INT' # 'MODE' 'MTE' = ['INT'(1) : ID4 , ID1] 'PROC' 'PROC'([]'STRING')'PROC''INT'; []'PROC''PROC'([]'STRING')'PROC''INT'J = 'PROC' 'PROC'([]'STRING')'PROC''INT'('SKIP') ; 'MTE' IDMTE = (J,J,'PROC'([]'STRING')'PROC''INT': ( 'PROC' PROC:=([]'STRING'A)'PROC''INT': 'INT' :CTR+:=1;CTR+:=1;PROC),J), [IDPRE:=5 : IRANG[2-5], IRANG[2-4] , IRANG[2-1] : IPROC(10)] 'MTE' TTTE; TTTE['LOC''INT':=5 , , 'ABS'-1*1] := (IDMTE , (J,J,'PROC'([]'STRING')'PROC''INT': ( 'PROC' PROC:=([]'STRING'A)'PROC''INT': 'INT' :CTR+:=1;CTR+:=1;PROC),J) ,IDMTE,'MTE'('SKIP')) ; 'PROC' PAVECE=('INT'A,'BITS'B)'MTE' : (8R33=B! (J,J,'PROC'([]'STRING')'PROC''INT': ( 'PROC' PROC:=([]'STRING'A)'PROC''INT': 'INT' :CTR+:=1;CTR+:=1;PROC),J)) , 'OP' ==('INT'A,'BOOL'B)'MTE' : (J,J,'PROC'([]'STRING')'PROC''INT': ( 'PROC' PROC:=([]'STRING'A)'PROC''INT': 'INT' :CTR+:=1;CTR+:=1;PROC),J) ; 'STRUCT'('MTE' DE)DEE; DE'OF'DEE:=IDMTE ; # CONTEXTES # ( CTRT:= 1; CTRLOC:=CTR ; 'FOR' IDENT 'FROM' IDMTA[IDPRE:=3 , IDPRE:=1] 'BY' IDMTA['LOC''INT':=3 , C1 'OF' ISTRUCT] 'TO' IDMTA['ABS'-3*1 , 1] 'WHILE' IDMTB['LOC''INT':=3 , 'INT' : 1] 'DO' [IDMTA[IRANG[2-3] , IDPRE:=1] : 4 , -IDENT : IDMTA[IDRE:=3 , IRANG[2-1]]] 'INT' ENT ; ENT [IDMTA['LOC''INT':=3 , 'LOC''INT':=1] , 0 ]:= ENT[IDENT , IDMTA[('INT' X:='INT'(3);X) , 'INT' : 1] ]:=IDMTA[IDPRE:=3 , 'INT' : 1]'OD' ; 'INT' ALFA , 'INT' PAR=('SKIP';IDMTA['INT' : 3 , 'ABS'-1*1]; 'REAL' PP=1.00001;IDMTA['INT' : 3 , IPROC(10)]); ALFA:=1+(IDMTA[3 , 'INT'(1)]) ; 'INT' IDENT=IDMTA[IPROC(30) , 'LOC''INT':=1] , 'INT' LOC:='CASE'IDMTA[IDPRE:=3 , IDPRE:=1] 'IN'IDMTA[('INT' X:=('INT' X:='INT' : 3;X);X) , IDRE:=1] ,'SKIP' 'ESAC' , TAS:=IDMTA[('INT' X:='INT' : 3;X) , ID1] , 'PROC' PROC = 'INT' : IDMTA[C3 'OF' ISTRUCT , 'INT' : 1] ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),(IDMTA[IPROC(30) , IDPRE:=1],(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, IDMTA['INT'(3) , 'INT' : 1] ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': IDMTA[IRANG[2-3] , ('INT' X:='ABS'-1*1;X)] ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,IDMTA['LOC''INT':=3 , C1 'OF' ISTRUCT],PROC) ;('INT''BEGIN'IDMTA[3 , 'LOC''INT':=1]'END' , ?=:=(UNION;IDMTB[IRANG[2-3] , IRANG[2-1]] ! IDMTA[('INT' X:='INT' : 3;X) , 1] ) , IDMTA[IDPRE:=3 , 'LOC''INT':=1], ('BOOL' BOOL='TRUE' ; UNION!('INT'): IDMTA[3 , IDPRE:=1] ,('COMPL' COMPLEX):'SKIP')) ; IDMTB['INT'(3) , 1] :=IDMTB[IPROC(30) , 'INT' : 1] :=(IDMTB[3 , 'ABS'-1*1] :=:IDMTB[('INT' X:=ID3;X) , 'LOC''INT':=1] ! 'SKIP' ) ; ?==:IDMTA['INT'(3) , IDPRE:=1] ?==: (IDMTB[C3 'OF' ISTRUCT , C1 'OF' ISTRUCT] ?==: RE'OF'DE'OF' IDMTC[C3 'OF' ISTRUCT , ('INT' X:='LOC''INT':=1;X)] ?==:IDMTC['ABS'-3*1 , IRANG[2-1]] ) ?==:?==:IDMTA[IRANG[2-3] , 'LOC''INT':=1] ; IDMTD[IPROC(30) , IDPRE:=1][5 , , 2 ] [1] ; IDMTE[IDPRE:=3 , 'INT' : 1]( ( ) ); CTRL(45)) ; ( CTRT:= 2; CTRLOC:=CTR ; 'FOR' IDENT 'FROM' 'MTA' (F,F,'INT': ( CTR+:=1;1),F)[C3 'OF' ISTRUCT , IDPRE:=1] 'BY' 'MTA' (F,F,'INT': ( CTR+:=1;1),F)[ID3 , 'INT' : 1] 'TO' 'MTA' (F,F,'INT': ( CTR+:=1;1),F)['INT' : 3 , IPROC(10)] 'WHILE' 'MTB' (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G)[IRANG[2-3] , 'ABS'-1*1] 'DO' ['MTA' (F,F,'INT': ( CTR+:=1;1),F)['ABS'-3*1 , C1 'OF' ISTRUCT] : 4 , -IDENT : 'MTA' (F,F,'INT': ( CTR+:=1;1),F)[3 , ('INT' X:='LOC''INT':=1;X)]] 'INT' ENT ; ENT ['MTA' (F,F,'INT': ( CTR+:=1;1),F)[IDPRE:=3 , IDRE:=1] , 0 ]:= ENT[IDENT , 'MTA' (F,F,'INT': ( CTR+:=1;1),F)[3 , 'INT' : 1] ]:='MTA' (F,F,'INT': ( CTR+:=1;1),F)[ID3 , 'INT' : 1]'OD' ; 'INT' ALFA , 'INT' PAR=('SKIP';'MTA' (F,F,'INT': ( CTR+:=1;1),F)[IDPRE:=3 , IDPRE:=1]; 'REAL' PP=1.00001;'MTA' (F,F,'INT': ( CTR+:=1;1),F)[IDRE:=3 , 1]); ALFA:=1+('MTA' (F,F,'INT': ( CTR+:=1;1),F)['INT' : 3 , IPROC(10)]) ; 'INT' IDENT='MTA' (F,F,'INT': ( CTR+:=1;1),F)[IDRE:=3 , 'INT'(1)] , 'INT' LOC:='CASE''MTA' (F,F,'INT': ( CTR+:=1;1),F)[IDPRE:=3 , IDRE:=1] 'IN''MTA' (F,F,'INT': ( CTR+:=1;1),F)[IPROC(30) , 1],'SKIP' 'ESAC' , TAS:='MTA' (F,F,'INT': ( CTR+:=1;1),F)[IDRE:=3 , ID1] , 'PROC' PROC = 'INT' : 'MTA' (F,F,'INT': ( CTR+:=1;1),F)[IDPRE:=3 , 'INT'(1)] ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),('MTA' (F,F,'INT': ( CTR+:=1;1),F)[ID3 , 'LOC''INT':=1],(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, 'MTA' (F,F,'INT': ( CTR+:=1;1),F)['INT'(3) , IPROC(10)] ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': 'MTA' (F,F,'INT': ( CTR+:=1;1),F)['INT' : 3 , IDPRE:=1] ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,'MTA' (F,F,'INT': ( CTR+:=1;1),F)['LOC''INT':=3 , IDPRE:=1],PROC) ;('INT''BEGIN''MTA' (F,F,'INT': ( CTR+:=1;1),F)['LOC''INT':=3 , IDPRE:=1]'END' , ?=:=(UNION;'MTB' (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G)[C3 'OF' ISTRUCT , IDPRE:=1] ! 'MTA' (F,F,'INT': ( CTR+:=1;1),F)[3 , 1] ) , 'MTA' (F,F,'INT': ( CTR+:=1;1),F)['ABS'-3*1 , IDRE:=1], ('BOOL' BOOL='TRUE' ; UNION!('INT'): 'MTA' (F,F,'INT': ( CTR+:=1;1),F)[('INT' X:=('INT' X:='INT' : 3;X);X) , IPROC(10)] ,('COMPL' COMPLEX):'SKIP')) ; 'MTB' (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G)['INT' : 3 , ('INT' X:=1;X)] :='MTB' (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G)[ID3 , ID1] :=('MTB' (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G)['INT' : 3 , C1 'OF' ISTRUCT] :=:'MTB' (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G)[ID3 , 'ABS'-1*1] ! 'SKIP' ) ; ?==:'MTA' (F,F,'INT': ( CTR+:=1;1),F)[C3 'OF' ISTRUCT , ('INT' X:='LOC''INT':=1;X)] ?==: ('MTB' (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G)[IPROC(30) , 1] ?==: RE'OF'DE'OF' 'MTC' (H,H,'MSTR': ( CTR+:=1,0'I'1),H)[IRANG[2-3] , IPROC(10)] ?==:'MTC' (H,H,'MSTR': ( CTR+:=1,0'I'1),H)['INT' : 3 , 1] ) ?==:?==:'MTA' (F,F,'INT': ( CTR+:=1;1),F)[IDRE:=3 , 'INT' : 1] ; 'MTD' (I,I,[,,]'PROC''INT': ( [3]'PROC''INT'X;X[2]:='INT':CTR+:=1; X[2]+0;(X,X,X,X,X)),I)[C3 'OF' ISTRUCT , ID1][5 , , 2 ] [1] ; 'MTE' (J,J,'PROC'([]'STRING')'PROC''INT': ( 'PROC' PROC:=([]'STRING'A)'PROC''INT': 'INT' :CTR+:=1;CTR+:=1;PROC),J)[IRANG[2-3] , IPROC(10)]( ( ) ); CTRL(45)) ; ( CTRT:= 3; CTRLOC:=CTR ; 'FOR' IDENT 'FROM' PAVECA(4,4R0123)[IPROC(30) , IDRE:=1] 'BY' PAVECA(4,4R0123)[IDPRE:=3 , 'INT'(1)] 'TO' PAVECA(4,4R0123)[IDPRE:=3 , 'ABS'-1*1] 'WHILE' PAVECB(4,4R0123)[IRANG[2-3] , IDRE:=1] 'DO' [PAVECA(4,4R0123)[C3 'OF' ISTRUCT , IPROC(10)] : 4 , -IDENT : PAVECA(4,4R0123)['ABS'-3*1 , IRANG[2-1]]] 'INT' ENT ; ENT [PAVECA(4,4R0123)['INT'(3) , 1] , 0 ]:= ENT[IDENT , PAVECA(4,4R0123)['ABS'-3*1 , IRANG[2-1]] ]:=PAVECA(4,4R0123)[C3 'OF' ISTRUCT , 'INT' : 1]'OD' ; 'INT' ALFA , 'INT' PAR=('SKIP';PAVECA(4,4R0123)[IPROC(30) , 'ABS'-1*1]; 'REAL' PP=1.00001;PAVECA(4,4R0123)[3 , ('INT' X:=('INT' X:=IPROC(10);X) ;X)]); ALFA:=1+(PAVECA(4,4R0123)[3 , 'INT'(1)]) ; 'INT' IDENT=PAVECA(4,4R0123)[IRANG[2-3] , IRANG[2-1]] , 'INT' LOC:='CASE'PAVECA(4,4R0123)[IDPRE:=3 , ('INT' X:='INT'(1);X)] 'IN'PAVECA(4,4R0123)[C3 'OF' ISTRUCT , 'LOC''INT':=1] ,'SKIP' 'ESAC' , TAS:=PAVECA(4,4R0123)[('INT' X:='INT' : 3;X) , 'INT'(1)] , 'PROC' PROC = 'INT' : PAVECA(4,4R0123)[IDPRE:=3 , IRANG[2-1]] ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),(PAVECA(4,4R0123)[IDRE:=3 , C1 'OF' ISTRUCT],(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, PAVECA(4,4R0123)['INT' : 3 , 'INT' : 1] ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': PAVECA(4,4R0123)['LOC''INT':=3 , IDPRE:=1] ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,PAVECA(4,4R0123)[ID3 , IRANG[2-1]],PROC) ;('INT''BEGIN'PAVECA(4,4R0123)[3 , 'INT' : 1]'END' , ?=:=(UNION;PAVECB(4,4R0123)[C3 'OF' ISTRUCT , 'ABS'-1*1] ! PAVECA(4,4R0123)[('INT' X:=IDRE:=3;X) , 'ABS'-1*1] ) , PAVECA(4,4R0123)['LOC''INT':=3 , 'LOC''INT':=1], ('BOOL' BOOL='TRUE' ; UNION!('INT'): PAVECA(4,4R0123)['ABS'-3*1 , IDPRE:=1] ,('COMPL' COMPLEX):'SKIP')) ; PAVECB(4,4R0123)[IRANG[2-3] , ('INT' X:=IDPRE:=1;X)] :=PAVECB(4,4R0123)[IDRE:=3 , 'ABS'-1*1] :=(PAVECB(4,4R0123)[3 , IDPRE:=1] :=:PAVECB(4,4R0123)[IPROC(30) , 'ABS'-1*1] ! 'SKIP' ) ; ?==:PAVECA(4,4R0123)['ABS'-3*1 , 'ABS'-1*1] ?==: (PAVECB(4,4R0123)[IRANG[2-3] , 'INT' : 1] ?==: RE'OF'DE'OF' PAVECC(4,4R0123)['INT'(3) , 'INT'(1)] ?==:PAVECC(4,4R0123)[('INT' X:='INT' : 3;X) , ('INT' X:='ABS'-1*1 ;X)] ) ?==:?==:PAVECA(4,4R0123)[IDRE:=3 , 'INT' : 1] ; PAVECD(4,4R0123)[IRANG[2-3] , 'INT'(1)][5 , , 2 ] [1] ; PAVECE (4,4R0123)[C3 'OF' ISTRUCT , 'INT'(1)]( ( ) ); CTRL(45)) ; ( CTRT:= 4; CTRLOC:=CTR ; 'FOR' IDENT 'FROM' ('MTA' : (F,F,'INT': ( CTR+:=1;1),F))[IRANG[2-3] , C1 'OF' ISTRUCT] 'BY' ('MTA' : (F,F,'INT': ( CTR+:=1;1),F))[IPROC(30) , 'LOC''INT':=1] 'TO' 'IF'FAUX'THEN''MTA' : (F,F,'INT': ( CTR+:=1;1),F)'FI'['LOC''INT':=3 , IPROC(10)] 'WHILE' ('MTB' : (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G))['ABS'-3*1 , IRANG[2-1]] 'DO' ['BEGIN''MTA' : (F,F,'INT': ( CTR+:=1;1),F)'END'[IDRE:=3 , IRANG[2-1]] : 4 , -IDENT : (1+1-1!'MTA' : (F,F,'INT': ( CTR+:=1;1),F),'SKIP')[IRANG[2-3] , 'INT'(1)]] 'INT' ENT ; ENT [(VU!('INT'):'SKIP'!'MTA' : (F,F,'INT': ( CTR+:=1;1),F))[('INT' X:=IPROC(30);X) , IDPRE:=1] , 0 ]:= ENT[IDENT , ('MTA' : (F,F,'INT': ( CTR+:=1;1),F))['INT'(3) , 1] ]:=('MTA' : (F,F,'INT': ( CTR+:=1;1),F))[IDRE:=3 , IRANG[2-1]]'OD' ; 'INT' ALFA , 'INT' PAR=('SKIP';'IF'FAUX'THEN''MTA' : (F,F,'INT': ( CTR+:=1;1),F)'FI'[3 , 'ABS'-1*1]; 'REAL' PP=1.00001;('MTA' : (F,F,'INT': ( CTR+:=1;1),F))['INT' : 3 , 'INT'(1)]); ALFA:=1+('BEGIN''MTA' : (F,F,'INT': ( CTR+:=1;1),F)'END'['LOC''INT':=3 , 'INT'(1)]) ; 'INT' IDENT=(1+1-1!'MTA' : (F,F,'INT': ( CTR+:=1;1),F),'SKIP')['LOC''INT':=3 , 1] , 'INT' LOC:='CASE'(VU!('INT'):'SKIP'!'MTA' : (F,F,'INT': ( CTR+:=1;1),F))[C3 'OF' ISTRUCT , IRANG[2-1]] 'IN'('MTA' : (F,F,'INT': ( CTR+:=1;1),F))['ABS'-3*1 , ('INT' X:=IPROC(10);X)],'SKIP' 'ESAC' , TAS:=('MTA' : (F,F,'INT': ( CTR+:=1;1),F))['INT'(3) , IDRE:=1] , 'PROC' PROC = 'INT' : 'IF'FAUX'THEN''MTA' : (F,F,'INT': ( CTR+:=1;1),F)'FI'['INT' : 3 , 'INT'(1)] ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),(('MTA' : (F,F,'INT': ( CTR+:=1;1),F))[3 , C1 'OF' ISTRUCT],(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, 'BEGIN''MTA' : (F,F,'INT': ( CTR+:=1;1),F)'END'[3 , 1] ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': (1+1-1!'MTA' : (F,F,'INT': ( CTR+:=1;1),F),'SKIP')['ABS'-3*1 , ('INT' X:='INT' : 1;X)] ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,(VU!('INT'):'SKIP'!'MTA' : (F,F,'INT': ( CTR+:=1;1),F))[IDRE:=3 , IRANG[2-1]],PROC) ;('INT''BEGIN'('MTA' : (F,F,'INT': ( CTR+:=1;1),F))['INT'(3) , IDPRE:=1]'END' , ?=:=(UNION;('MTB' : (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G))['INT'(3) , IDPRE:=1] ! 'IF'FAUX'THEN''MTA' : (F,F,'INT': ( CTR+:=1;1),F)'FI'['ABS'-3*1 , C1 'OF' ISTRUCT] ) , ('MTA' : (F,F,'INT': ( CTR+:=1;1),F))[IDPRE:=3 , C1 'OF' ISTRUCT], ('BOOL' BOOL='TRUE' ; UNION!('INT'): 'BEGIN''MTA' : (F,F,'INT': ( CTR+:=1;1),F)'END'[IDRE:=3 , 'INT'(1)] ,('COMPL' COMPLEX):'SKIP')) ; (1+1-1!'MTB' : (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G),'SKIP')['INT' : 3 , 'INT' : 1] :=(VU!('INT'):'SKIP'!'MTB' : (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G))['LOC''INT':=3 , 1] :=(('MTB' : (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G))['LOC''INT':=3 , 1] :=:('MTB' : (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G))[('INT' X:='INT'(3);X) , IDPRE:=1] ! 'SKIP' ) ; ?==:'IF'FAUX'THEN''MTA' : (F,F,'INT': ( CTR+:=1;1),F)'FI'['INT'(3) , 'INT'(1)] ?==: (('MTB' : (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G))[IRANG[2-3] , ('INT' X:=IDPRE:=1;X)] ?==: RE'OF'DE'OF' 'BEGIN''MTC' : (H,H,'MSTR': ( CTR+:=1,0'I'1),H)'END'[IDRE:=3 , 'INT'(1)] ?==:(1+1-1!'MTC' : (H,H,'MSTR': ( CTR+:=1,0'I'1),H),'SKIP')[IPROC(30) , 'ABS'-1*1] ) ?==:?==:(VU!('INT'):'SKIP'!'MTA' : (F,F,'INT': ( CTR+:=1;1),F))[('INT' X:=ID3;X) , IDPRE:=1] ; ('MTD' : (I,I,[,,]'PROC''INT': ( [3]'PROC''INT'X;X[2]:='INT':CTR+:=1; X[2]+0;(X,X,X,X,X)),I))[IDRE:=3 , 'LOC''INT':=1] [5 , , 2 ] [1] ; ('MTE' : (J,J,'PROC'([]'STRING')'PROC''INT': ( 'PROC' PROC:=([]'STRING'A)'PROC''INT': 'INT' :CTR+:=1;CTR+:=1;PROC),J))[IDRE:=3 , 'INT' : 1]( ( ) ); CTRL(45)) ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R532B # (PRINT(("SLICES WITH SUBSCRIPTS",NEWLINE)) ; 'PRIO' *=6 , /=6 , 'INT' VF = ((27+10)*4)+4 ; 'INT' CTRT:=0 , CTR:=0 , CTRLOC ; 'PROC' CTRL = ('INT' INC)'VOID' : (CTR/=CTRLOC+INC ! PRINT(("COUNT ERROR IN TEST ",CTRT,CTR,CTRLOC+INC,NEWLINE))) ; # SERVITUDES POUR CONTEXTES # 'OP' ?=:= = ('INT' X)'VOID' : X , 'MODE' 'MSTR' = 'STRUCT'('COMPL' OF,DE) , 'PRIO' ?==:=1 ; 'OP' ?==:=('INT' A)'PROC''INT' : 'INT' : CTR+:=1 , ?==:=('UNION'('INT','BOOL') A,'INT' B)'BOOL':(CTR+:=1)=B , ?==:=('UNION'('REF''INT','REF''BOOL') A,'REAL' B)'MSTR':'SKIP', ?==:=('MSTR' A,B)'REF''INT' : CTR+:=1 ; # SERVITUDES POUR INDICES ET PRIMAIRES # 'UNION'('INT','REAL')VU:=1E0,'INT' IDRE:=0; 'PROC' IDPRE='REF''INT' : 'HEAP''INT':=0 , 'STRUCT'('INT' C1,C2,C3,C4,C5) ISTRUCT = (1,2,3,4,5) , [-3:1]'INT' IRANG := []'INT'(5,4,3,2,1)[@-3] , 'PROC' IPROC := ('INT' A)'REF''INT' : 'HEAP''INT':=A?10 , 'INT' ID1=1 , ID2=2 , ID3=3 , ID4=4 , ID5=5 , 'BOOL' FAUX = 'TRUE' ; # SERVITUDES POUR PRIMAIRES DE MODE [4,1] 'PROC' 'INT' # 'MODE' 'MTA' = [('INT' X:=IDRE:=1;X) : C4 'OF' ISTRUCT , 'ABS'-1*1] 'PROC' 'INT'; []'PROC''INT'F = 'PROC''INT'('SKIP') ; 'MTA' IDMTA = (F,F,'INT': ( CTR+:=1;1),F), ['LOC''INT':=5 : 'ABS'-5*1, ('INT' X:=4;X) , IDPRE:=1 : 'INT'(1)] 'MTA' TTTA; TTTA[('INT' X:=IRANG[2-5];X) , , IDRE:=1] := (IDMTA , (F,F,'INT': ( CTR+:=1;1),F) ,IDMTA,'MTA'('SKIP')) ; 'PROC' PAVECA=('INT'A,'BITS'B)'MTA' : (8R33=B! (F,F,'INT': ( CTR+:=1;1),F)) , 'OP' +=('INT'A,'BOOL'B)'MTA' : (F,F,'INT': ( CTR+:=1;1),F) ; 'STRUCT'('MTA' DE)DEA; DE'OF'DEA:=IDMTA ; # SERVITUDES POUR PRIMAIRES DE MODE [4,1] 'PROC' 'REF''BOOL' # 'MODE' 'MTB' = [IRANG[2-1] : 'INT' : 4 , 'LOC''INT':=1] 'PROC' 'REF''BOOL'; []'PROC''REF''BOOL'G = 'PROC''REF''BOOL'('SKIP') ; 'MTB' IDMTB = (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G), [C5 'OF' ISTRUCT : IDPRE:=5, 'INT'(4) , ID1 : IPROC(10)] 'MTB' TTTB; TTTB[IRANG[2-5] , , IRANG[2-1]] := (IDMTB , (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G) ,IDMTB,'MTB'('SKIP')) ; 'PROC' PAVECB=('INT'A,'BITS'B)'MTB' : (8R33=B! (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G)) , 'OP' -=('INT'A,'BOOL'B)'MTB' : (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G) ; 'STRUCT'('MTB' DE)DEB; DE'OF'DEB:=IDMTB ; # SERVITUDES POUR PRIMAIRES DE MODE [4,1] 'PROC' 'MSTR' # 'MODE' 'MTC' = [C1 'OF' ISTRUCT : IRANG[2-4] , 'INT' : 1] 'PROC' 'MSTR'; []'PROC''MSTR'H = 'PROC''MSTR'('SKIP') ; 'MTC' IDMTC = (H,H,'MSTR': ( CTR+:=1,0'I'1),H), ['ABS'-5*1 : 'INT' : 5, IRANG[2-4] , 1 : 'ABS'-1*1] 'MTC' TTTC; TTTC['ABS'-5*1 , , IRANG[2-1]] := (IDMTC , (H,H,'MSTR': ( CTR+:=1,0'I'1),H) ,IDMTC,'MTC'('SKIP')) ; 'PROC' PAVECC=('INT'A,'BITS'B)'MTC' : (8R33=B! (H,H,'MSTR': ( CTR+:=1,0'I'1),H)) , 'OP' *=('INT'A,'BOOL'B)'MTC' : (H,H,'MSTR': ( CTR+:=1,0'I'1),H) ; 'STRUCT'('MTC' DE)DEC; DE'OF'DEC:=IDMTC ; # SERVITUDES POUR PRIMAIRES DE MODE [4,1] 'PROC' [,,]'PROC''INT' # 'MODE' 'MTD' = [IPROC(10) : ('INT' X:='INT'(4);X) , 'INT'(1)] 'PROC' [,,]'PROC''INT'; []'PROC'[,,]'PROC''INT'I = 'PROC'[,,]'PROC''INT'('SKIP') ; 'MTD' IDMTD = (I,I,[,,]'PROC''INT': ( [3]'PROC''INT'X;X[2]:='INT':CTR+:=1; X[2]+0;(X,X,X,X,X)),I), ['LOC''INT':=5 : IRANG[2-5], 'ABS'-4*1 , IPROC(10) : 'LOC''INT':=1] 'MTD' TTTD; TTTD[IDPRE:=5 , , ID1] := (IDMTD , (I,I,[,,]'PROC''INT': ( [3]'PROC''INT'X;X[2]:='INT':CTR+:=1; X[2]+0;(X,X,X,X,X)),I) ,IDMTD,'MTD'('SKIP')) ; 'PROC' PAVECD=('INT'A,'BITS'B)'MTD' : (8R33=B! (I,I,[,,]'PROC''INT': ( [3]'PROC''INT'X;X[2]:='INT':CTR+:=1; X[2]+0;(X,X,X,X,X)),I)) , 'OP' /=('INT'A,'BOOL'B)'MTD' : (I,I,[,,]'PROC''INT': ( [3]'PROC''INT'X;X[2]:='INT':CTR+:=1; X[2]+0;(X,X,X,X,X)),I) ; 'STRUCT'('MTD' DE)DED; DE'OF'DED:=IDMTD ; # SERVITUDES POUR PRIMAIRES DE MODE [4,1] 'PROC' 'PROC'([]'STRING')'PROC''INT' # 'MODE' 'MTE' = ['INT'(1) : ID4 , ID1] 'PROC' 'PROC'([]'STRING')'PROC''INT'; []'PROC''PROC'([]'STRING')'PROC''INT'J = 'PROC' 'PROC'([]'STRING')'PROC''INT'('SKIP') ; 'MTE' IDMTE = (J,J,'PROC'([]'STRING')'PROC''INT': ( 'PROC' PROC:=([]'STRING'A)'PROC''INT': 'INT' :CTR+:=1;CTR+:=1;PROC),J), [IDPRE:=5 : IRANG[2-5], IRANG[2-4] , IRANG[2-1] : IPROC(10)] 'MTE' TTTE; TTTE['LOC''INT':=5 , , 'ABS'-1*1] := (IDMTE , (J,J,'PROC'([]'STRING')'PROC''INT': ( 'PROC' PROC:=([]'STRING'A)'PROC''INT': 'INT' :CTR+:=1;CTR+:=1;PROC),J) ,IDMTE,'MTE'('SKIP')) ; 'PROC' PAVECE=('INT'A,'BITS'B)'MTE' : (8R33=B! (J,J,'PROC'([]'STRING')'PROC''INT': ( 'PROC' PROC:=([]'STRING'A)'PROC''INT': 'INT' :CTR+:=1;CTR+:=1;PROC),J)) , 'OP' ==('INT'A,'BOOL'B)'MTE' : (J,J,'PROC'([]'STRING')'PROC''INT': ( 'PROC' PROC:=([]'STRING'A)'PROC''INT': 'INT' :CTR+:=1;CTR+:=1;PROC),J) ; 'STRUCT'('MTE' DE)DEE; DE'OF'DEE:=IDMTE ; # CONTEXTES # ( CTRT:= 1; CTRLOC:=CTR ; 'FOR' IDENT 'FROM' (+0+IDPRE+'ODD'0)[IDPRE:=3 , IDPRE:=1] 'BY' (+0+IDPRE+'ODD'0)['LOC''INT':=3 , C1 'OF' ISTRUCT] 'TO' 'IF'FAUX'THEN'+0+IDPRE+'ODD'0'FI'['ABS'-3*1 , 1] 'WHILE' (+0+IDPRE-'ODD'0)['LOC''INT':=3 , 'INT' : 1] 'DO' ['BEGIN'+0+IDPRE+'ODD'0'END'[IRANG[2-3] , IDPRE:=1] : 4 , -IDENT : (1+1-1!+0+IDPRE+'ODD'0,'SKIP')[IDRE:=3 , IRANG[2-1]] ] 'INT' ENT ; ENT [(VU!('INT'):'SKIP'!+0+IDPRE+'ODD'0)['LOC''INT':=3 , 'LOC''INT':=1 ] , 0 ]:= ENT[IDENT , (+0+IDPRE+'ODD'0)[('INT' X:='INT'(3);X) , 'INT' : 1] ]:=(+0+IDPRE+'ODD'0)[IDPRE:=3 , 'INT' : 1]'OD' ; 'INT' ALFA , 'INT' PAR=('SKIP';'IF'FAUX'THEN'+0+IDPRE+'ODD'0'FI'['INT' : 3 , 'ABS'-1*1]; 'REAL' PP=1.00001;(+0+IDPRE+'ODD'0)['INT' : 3 , IPROC(10)]); ALFA:=1+('BEGIN'+0+IDPRE+'ODD'0'END'[3 , 'INT'(1)]) ; 'INT' IDENT=(1+1-1!+0+IDPRE+'ODD'0,'SKIP')[IPROC(30) , 'LOC''INT':=1] , 'INT' LOC:='CASE'(VU!('INT'):'SKIP'!+0+IDPRE+'ODD'0)[IDPRE:=3 , IDPRE:=1 ] 'IN'(+0+IDPRE+'ODD'0)[('INT' X:=('INT' X:='INT' : 3;X);X) , IDRE:=1] ,'SKIP' 'ESAC' , TAS:=(+0+IDPRE+'ODD'0)[('INT' X:='INT' : 3;X) , ID1] , 'PROC' PROC = 'INT' : 'IF'FAUX'THEN'+0+IDPRE+'ODD'0'FI'[C3 'OF' ISTRUCT , 'INT' : 1] ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),((+0+IDPRE+'ODD'0)[IPROC(30) , IDPRE:=1],(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, 'BEGIN'+0+IDPRE+'ODD'0'END'['INT'(3) , 'INT' : 1] ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': (1+1-1!+0+IDPRE+'ODD'0,'SKIP')[IRANG[2-3] , ('INT' X:='ABS'-1*1;X)] ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,(VU!('INT'):'SKIP'!+0+IDPRE+'ODD'0)['LOC''INT':=3 , C1 'OF' ISTRUCT],PROC) ;('INT''BEGIN'(+0+IDPRE+'ODD'0)[3 , 'LOC''INT':=1]'END' , ?=:=(UNION;(+0+IDPRE-'ODD'0)[IRANG[2-3] , IRANG[2-1]] ! 'IF'FAUX'THEN'+0+IDPRE+'ODD'0'FI'[('INT' X:='INT' : 3;X) , 1] ) , (+0+IDPRE+'ODD'0)[IDPRE:=3 , 'LOC''INT':=1], ('BOOL' BOOL='TRUE' ; UNION!('INT'): 'BEGIN'+0+IDPRE+'ODD'0'END'[3 , IDPRE:=1] ,('COMPL' COMPLEX):'SKIP')) ; (1+1-1!+0+IDPRE-'ODD'0,'SKIP')['INT'(3) , 1] :=(VU!('INT'):'SKIP'!+0+IDPRE-'ODD'0)[IPROC(30) , 'INT' : 1] :=((+0+IDPRE-'ODD'0)[3 , 'ABS'-1*1] :=:(+0+IDPRE-'ODD'0)[('INT' X:=ID3;X) , 'LOC''INT':=1] ! 'SKIP' ) ; ?==:'IF'FAUX'THEN'+0+IDPRE+'ODD'0'FI'['INT'(3) , IDPRE:=1] ?==: ((+0+IDPRE-'ODD'0)[C3 'OF' ISTRUCT , C1 'OF' ISTRUCT] ?==: RE'OF'DE'OF' 'BEGIN'+0+IDPRE*'ODD'0'END'[C3 'OF' ISTRUCT , ('INT' X:= 'LOC''INT':=1;X)] ?==:(1+1-1!+0+IDPRE*'ODD'0,'SKIP')['ABS'-3*1 , IRANG[2-1]] ) ?==:?==:(VU!('INT'):'SKIP'!+0+IDPRE+'ODD'0)[IRANG[2-3] , 'LOC''INT':= 1] ; (+0+IDPRE/'ODD'0)[IPROC(30) , IDPRE:=1][5 , , 2 ] [1] ; (+0+IDPRE ='ODD'0)[IDPRE:=3 , 'INT' : 1]( ( ) ); CTRL(45)) ; ( CTRT:= 2; CTRLOC:=CTR ; 'FOR' IDENT 'FROM' TTTA[C5 'OF' ISTRUCT ,IDPRE:=2,ID1]['INT' : 3 , 'INT' : 1] 'BY' TTTA[IPROC(50) ,IRANG[2-2],'ABS'-1*1]['ABS'-3*1 , C1 'OF' ISTRUCT] 'TO' TTTA[5 ,('INT' X:='LOC''INT':=2;X),IDPRE:=1][IDRE:=3 , 1] 'WHILE' TTTB['INT' : 5 ,ID2,'INT' : 1][IDPRE:=3 , IDPRE:=1] 'DO' [TTTA[IDRE:=5 ,2,'INT' : 1][IPROC(30) , IDRE:=1] : 4 , -IDENT : TTTA['INT'(5) ,IDPRE:=2,IDRE:=1][IPROC(30) , 1]] 'INT' ENT ; ENT [TTTA[IDRE:=5 ,ID2,IDPRE:=1]['INT'(3) , ID1] , 0 ]:= ENT[IDENT , TTTA['LOC''INT':=5 ,'INT'(2),IPROC(10)]['INT' : 3 , IDPRE:=1] ]:=TTTA['LOC''INT':=5 ,IDPRE:=2,'LOC''INT':=1][IDPRE:=3 , C1 'OF' ISTRUCT]'OD' ; 'INT' ALFA , 'INT' PAR=('SKIP';TTTA[IDPRE:=5 ,2,1]['ABS'-3*1 , IDRE:=1]; 'REAL' PP=1.00001;TTTA[('INT' X:=('INT' X:='INT' : 5;X);X) ,IPROC(20),'INT' : 1][('INT' X:=3;X) , ID1]); ALFA:=1+(TTTA[ID5 ,'INT' : 2,C1 'OF' ISTRUCT][ID3 , 'ABS'-1*1]) ; 'INT' IDENT=TTTA[C5 'OF' ISTRUCT ,('INT' X:='LOC''INT':=2;X),IPROC(10)][3 , IRANG[2-1]] , 'INT' LOC:='CASE'TTTA[IPROC(50) ,'INT' : 2,1][IDRE:=3 , 'INT' : 1] 'IN'TTTA[C5 'OF' ISTRUCT ,ID2,IRANG[2-1]][IPROC(30) , IPROC(10)],'SKIP' 'ESAC' , TAS:=TTTA[IDRE:=5 ,IDPRE:=2,'INT'(1)][IDPRE:=3 , 'ABS'-1*1] , 'PROC' PROC = 'INT' : TTTA[IRANG[2-5] ,IDRE:=2,C1 'OF' ISTRUCT][IPROC(30) , 'ABS'-1*1] ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),(TTTA[IRANG[2-5] ,'INT'(2),1]['ABS'-3*1 , IRANG[2-1]],(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, TTTA[C5 'OF' ISTRUCT ,'INT' : 2,IPROC(10)]['ABS'-3*1 , 1] ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': TTTA[('INT' X:=('INT' X:=IPROC(50);X);X) ,2,'INT'(1)][IRANG[2-3] , IRANG[2-1]] ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,TTTA[IDPRE:=5 ,('INT' X:='INT'(2);X),C1 'OF' ISTRUCT]['LOC''INT':=3 , ('INT' X:= 'INT' : 1;X)],PROC) ;('INT''BEGIN'TTTA['INT'(5) ,IDPRE:=2,IRANG[2-1]][IDRE:=3 , C1 'OF' ISTRUCT]'END' , ?=:=(UNION;TTTB['INT' : 5 ,'INT' : 2,'LOC''INT':=1][IDPRE:=3 , ID1] ! TTTA[IRANG[2-5] ,2,'INT' : 1][C3 'OF' ISTRUCT , 'ABS'-1*1] ) , TTTA[('INT' X:=IDRE:=5;X) ,'ABS'-2*1,'LOC''INT':=1]['LOC''INT':=3 , 'ABS'-1*1], ('BOOL' BOOL='TRUE' ; UNION!('INT'): TTTA[IDPRE:=5 ,IRANG[2-2],('INT' X:=IDPRE:=1;X)][IDRE:=3 , 'ABS'-1*1] ,('COMPL' COMPLEX):'SKIP')) ; TTTB[5 ,IDPRE:=2,IPROC(10)]['ABS'-3*1 , 'ABS'-1*1] :=TTTB['ABS'-5*1 ,IRANG[2-2],'INT' : 1]['INT'(3) , 'INT'(1)] :=(TTTB[('INT' X:='INT' : 5;X) ,('INT' X:='ABS'-2*1;X),IDRE:=1]['INT' : 3 , IRANG[2-1]] :=:TTTB['INT'(5) ,C2 'OF' ISTRUCT,'INT'(1)][IRANG[2-3] , C1 'OF' ISTRUCT] ! 'SKIP' ) ; ?==:TTTA[IPROC(50) ,'LOC''INT':=2,'LOC''INT':=1][IPROC(30) , 'ABS'-1*1] ?==: (TTTB[IRANG[2-5] ,IDRE:=2,IRANG[2-1]][IRANG[2-3] , 'INT'(1)] ?==: RE'OF'DE'OF' TTTC[('INT' X:=IPROC(50);X) ,IDPRE:=2,'INT'(1)][3 , IDRE:=1] ?==:TTTC[IRANG[2-5] ,2,'ABS'-1*1]['INT' : 3 , 'INT'(1)] ) ?==:?==:TTTA['LOC''INT':=5 ,'INT'(2),'LOC''INT':=1][3 , C1 'OF' ISTRUCT] ; TTTD[IRANG[2-5] ,'ABS'-2*1,('INT' X:=IPROC(10);X)]['INT'(3) , IDRE:=1] [5 , , 2 ] [1] ; TTTE['INT' : 5 ,'INT'(2),1][C3 'OF' ISTRUCT , 1]( ( ) ); CTRL(41)) ; ( CTRT:= 3; CTRLOC:=CTR ; 'FOR' IDENT 'FROM' 'IF'FAUX'THEN''HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F)'FI'[3 , 'ABS'-1*1] 'BY' ('HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F))[('INT' X:='INT' : 3;X) , IDRE:=1] 'TO' 'BEGIN''HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F)'END'[IRANG[2-3] , 'INT'(1)] 'WHILE' (1+1-1!'HEAP''MTB':= (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G),'SKIP')[IDPRE:=3 , 'INT'(1)] 'DO' [(VU!('INT'):'SKIP'!'HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F))[IDPRE:=3 , 'ABS'-1*1] : 4 , -IDENT : ('HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F))[C3 'OF' ISTRUCT , IDPRE:=1]] 'INT' ENT ; ENT [('HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F))[C3 'OF' ISTRUCT , IDRE:=1] , 0 ]:= ENT[IDENT , 'IF'FAUX'THEN''HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F)'FI'['INT'(3) , 'INT' : 1] ]:=('HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F))['INT' : 3 , 'LOC''INT':=1]'OD' ; 'INT' ALFA , 'INT' PAR=('SKIP';'BEGIN''HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F)'END'[3 , 'LOC''INT':=1]; 'REAL' PP=1.00001;(1+1-1!'HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F),'SKIP')[3 , ('INT' X:='INT'(1);X)]); ALFA:=1+((VU!('INT'):'SKIP'!'HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F))[IDPRE:=3 , 'INT'(1)]) ; 'INT' IDENT=('HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F))['INT'(3) , IRANG[2-1]] , 'INT' LOC:='CASE'('HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F))[('INT' X:=IDPRE:=3;X) , IDRE:=1] 'IN''IF'FAUX'THEN''HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F)'FI'['INT'(3) , IPROC(10)],'SKIP' 'ESAC' , TAS:=('HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F))['ABS'-3*1 , ('INT' X:=ID1;X)] , 'PROC' PROC = 'INT' : 'BEGIN''HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F)'END'[IDPRE:=3 , IDRE:=1] ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),((1+1-1!'HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F),'SKIP')['LOC''INT':=3 , IDRE:=1],(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, (VU!('INT'):'SKIP'!'HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F))['INT' : 3 , 'INT' : 1] ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': ('HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F))['INT'(3) , ('INT' X:='INT'(1);X)] ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,('HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F))[IRANG[2-3] , ID1],PROC) ;('INT''BEGIN''IF'FAUX'THEN''HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F)'FI'['LOC''INT':=3 , IPROC(10)]'END' , ?=:=(UNION;('HEAP''MTB':= (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G))[ID3 , IRANG[2-1]] ! 'BEGIN''HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F)'END'['INT' : 3 , ID1] ) , (1+1-1!'HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F),'SKIP')[C3 'OF' ISTRUCT , IDRE:=1], ('BOOL' BOOL='TRUE' ; UNION!('INT'): (VU!('INT'):'SKIP'!'HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F))[3 , IPROC(10)] ,('COMPL' COMPLEX):'SKIP')) ; ('HEAP''MTB':= (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G))[IRANG[2-3] , 'INT' : 1] :=('HEAP''MTB':= (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G))['LOC''INT':=3 , 1] :=('IF'FAUX'THEN''HEAP''MTB':= (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G)'FI'[ID3 , 'ABS'-1*1] :=:('HEAP''MTB':= (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G))[IDPRE:=3 , 'ABS'-1*1] ! 'SKIP' ) ; ?==:'BEGIN''HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F)'END'[IDPRE:=3 , ID1] ?==: ((1+1-1!'HEAP''MTB':= (G,G,'REF''BOOL': ( CTR+:=1;'HEAP''BOOL':='TRUE'),G),'SKIP')[IRANG[2-3] , ('INT' X:=ID1;X) ] ?==: RE'OF'DE'OF' (VU!('INT'):'SKIP'!'HEAP''MTC':= (H,H,'MSTR': ( CTR+:=1,0'I'1),H))[IRANG[2-3] , 'INT'(1)] ?==:('HEAP''MTC':= (H,H,'MSTR': ( CTR+:=1,0'I'1),H))[3 , IDPRE:=1] ) ?==:?==:('HEAP''MTA':= (F,F,'INT': ( CTR+:=1;1),F))[3 , IDRE:=1] ; 'IF'FAUX'THEN''HEAP''MTD':= (I,I,[,,]'PROC''INT': ( [3]'PROC''INT'X;X[2]:='INT':CTR+:=1; X[2]+0;(X,X,X,X,X)),I)'FI'['ABS'-3*1 , ID1][5 , , 2 ] [1] ; ( 'HEAP''MTE':= (J,J,'PROC'([]'STRING')'PROC''INT': ( 'PROC' PROC:=([]'STRING'A)'PROC''INT': 'INT' :CTR+:=1;CTR+:=1;PROC),J))[IRANG[2-3] , 'INT'(1)]( ( ) ); CTRL(41)) ; ( CTRT:= 4; CTRLOC:=CTR ; 'FOR' IDENT 'FROM' 'BEGIN'DE'OF'DEA'END'['LOC''INT':=3 , IRANG[2-1 ]] 'BY' (1+1-1!DE'OF'DEA,'SKIP')[IDRE:=3 , IDPRE:=1] 'TO' (VU!('INT'):'SKIP'!DE'OF'DEA)['INT'(3) , IDRE:=1] 'WHILE' (DE'OF'DEB)['INT'(3) , 1] 'DO' [(DE'OF'DEA)['LOC''INT':=3 , IDRE:=1] : 4 , -IDENT : 'IF'FAUX'THEN'DE'OF'DEA'FI'[IPROC(30) , ('INT' X:='INT' : 1 ;X)]] 'INT' ENT ; ENT [(DE'OF'DEA)[IRANG[2-3] , IRANG[2-1]] , 0 ]:= ENT[IDENT , 'BEGIN'DE'OF'DEA'END'[C3 'OF' ISTRUCT , ('INT' X:=1;X)] ]:=(1+1-1!DE'OF'DEA,'SKIP')['INT' : 3 , 1]'OD' ; 'INT' ALFA , 'INT' PAR=('SKIP';(VU!('INT'):'SKIP'!DE'OF'DEA)[IPROC(30) , 1]; 'REAL' PP=1.00001;(DE'OF'DEA)[C3 'OF' ISTRUCT , IDRE:=1]); ALFA:=1+((DE'OF'DEA)[IPROC(30) , IRANG[2-1]]) ; 'INT' IDENT='IF'FAUX'THEN'DE'OF'DEA'FI'[IPROC(30) , IDPRE:=1] , 'INT' LOC:='CASE'(DE'OF'DEA)['INT'(3) , 'INT' : 1] 'IN''BEGIN'DE'OF'DEA'END'[('INT' X:='INT'(3);X) , 'ABS'-1*1] ,'SKIP' 'ESAC' , TAS:=(1+1-1!DE'OF'DEA,'SKIP')[C3 'OF' ISTRUCT , C1 'OF' ISTRUCT] , 'PROC' PROC = 'INT' : (VU!('INT'):'SKIP'!DE'OF'DEA)['INT' : 3 , 'INT' : 1] ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),((DE'OF'DEA)[('INT' X:=C3 'OF' ISTRUCT;X) , 'LOC''INT':=1] ,(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, (DE'OF'DEA)[ID3 , ('INT' X:=IPROC(10);X)] ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': 'IF'FAUX'THEN'DE'OF'DEA'FI'[ID3 , ID1] ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,(DE'OF'DEA)[ID3 , 1],PROC) ;('INT''BEGIN''BEGIN'DE'OF'DEA'END'[IPROC(30) , 'ABS'-1*1]'END' , ?=:=(UNION;(1+1-1!DE'OF'DEB,'SKIP')[C3 'OF' ISTRUCT , 'INT'(1)] ! (VU!('INT'):'SKIP'!DE'OF'DEA)[IPROC(30) , 'INT' : 1] ) , (DE'OF'DEA)[IDRE:=3 , ('INT' X:=IPROC(10);X)], ('BOOL' BOOL='TRUE' ; UNION!('INT'): (DE'OF'DEA)[C3 'OF' ISTRUCT , IDRE:=1] ,('COMPL' COMPLEX):'SKIP')) ; 'IF'FAUX'THEN'DE'OF'DEB'FI'[C3 'OF' ISTRUCT , 'INT'(1)] :=(DE'OF'DEB)[ID3 , 'INT'(1)] :=('BEGIN'DE'OF'DEB'END'['LOC''INT':=3 , ('INT' X:=C1 'OF' ISTRUCT;X)] :=:(1+1-1!DE'OF'DEB,'SKIP')['INT' : 3 , 1] ! 'SKIP' ) ; ?==:(VU!('INT'):'SKIP'!DE'OF'DEA)[IRANG[2-3] , IRANG[2-1]] ?==: ((DE'OF'DEB)[IRANG[2-3] , C1 'OF' ISTRUCT] ?==: RE'OF'DE'OF' (DE'OF'DEC)[C3 'OF' ISTRUCT , 'ABS'-1*1] ?==:'IF'FAUX'THEN'DE'OF'DEC'FI'[IRANG[2-3] , IPROC(10)] ) ?==:?==:(DE'OF'DEA)[C3 'OF' ISTRUCT , IRANG[2-1]] ; 'BEGIN'DE'OF'DED'END'[ID3 , ID1][5 , , 2 ] [1] ; (1+1-1!DE'OF'DEE ,'SKIP')[ID3 , IRANG[2-1]]( ( ) ); CTRL(41)) ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R532C # (PRINT(("SLICES WITH TRIMMERS",NEWLINE)) ; 'INT' VF = (18+3+10)*5 ; 'INT' CTR:=0 , CTRT:=0 , CTRLOC ; 'PROC' CTRL = ('INT' INC)'VOID' : (CTR/=CTRLOC+INC ! PRINT(("COUNT ER IN TEST",CTRT,CTR,CTRLOC+INC,NEWLINE))); 'PRIO' & = 3 , 'INT' K , 'OP' & = ('BOOL' A,B)'BOOL' : (K+:=1;(K=2'AND''NOT'A!PRINT(1)) ; B ! A ! PRINT(K);'FALSE') , # SERVITUDES POUR PRIMAIRES # 'MODE' 'MS' = 'STRUCT'('INT' RE,IM) ; 'MODE' 'U' = 'UNION'('REF''INT','MS') ; 'MODE' 'RRR' = [-4:0,0:2,-5:2]'U' ; 'RRR' T = ( 'RRR' T;'FOR' I 'FROM' -4 'TO' 0 'DO' 'FOR' J 'FROM' 0 'TO' 2 'DO' 'FOR' K 'FROM' -5 'TO' -2 'DO' T[I,J,K] :=('ODD'(I+J+K) ! 'MS'(I,K) ! CTR) 'OD' 'OD' 'OD' ; T ) ; 'MODE' 'S' = 'STRUCT'('INT' OF,'U' DE) ; [,,]'S' TSTR = ([-4:0,0:2,-5:-2]'S' S ; 'FOR' I 'FROM' -4 'TO' 0 'DO' 'FOR' J 'FROM' 0 'TO' 2 'DO' 'FOR' K 'FROM' -5 'TO' -2 'DO' S[I,J,K]:=(0,T[I,J,K]) 'OD''OD''OD' ; S ) ; 'PROC' PAVEC = ('STRING' C)'RRR' : ('UPB' C = 1 ! T) , 'OP' - = ('INT' B,'RRR' A)'RRR' : (-(3'UPB'A) ! 'SKIP',A) , [1]'RRR' TT:=T , 'STRUCT'('RRR' DE) STT ; DE'OF'STT:=T ; 'UNION'('INT','REAL') VU:=1E0 , 'BOOL' FAUX = 'TRUE' ; [8] 'INT' B ; 'PRIO' ?==:=9 ; 'PROC' TEST = ( [,]'U' A)'VOID' : ('INT' I=1'LWB'A , J=2'LWB'A ; K:=1 ; I=B[1] & 1'UPB'A=B[2] & J=B[3] & 2'UPB'A=B[4] & (A[I,J] ! ('MS' S) : 'ODD' B[5] & RE'OF'S=B[7] & IM'OF'S=B[8] , ('REF''INT' R) : 'NOT''ODD' B[5] & (R:=:CTR)) ! CTR+:=1 ! PRINT(("ER TEST N0",CTRT,CTR-CTRLOC,NEWLINE))) ; # SERVITUDES POUR INDICES # 'PROC' IDPRE='REF''INT' : 'HEAP''INT':=0 , 'INT' IDRE:=0 , 'STRUCT'('INT' CA,CB,CC,CD,CE,CF,CG,CH) ISTRUCT = (-5,-4,-3,-2,-1,0,1,2) , [8]'INT' IRANG:=(2,1,0,-1,-2,-3,-4,-5) , 'PROC' IPROC := ('INT' A)'REF''INT' : 'HEAP''INT':=A?10 , 'INT' IDA=-5,IDB=-4,IDC=-3,IDD=-2,IDE=-1,IDF=0,IDG=1,IDH=2 ; # CONTEXTES # # INDEXEURS DE LA FORME # (CTRT:= 1 ; CTRLOC:=CTR ; B:= (0,2,-5,-2,-9,2,-4,-5) ; 'MODE' 'R' = [B[1]:B[2],B[3]:B[4]]'U' , 'MSTR' = [B[1]:B[2],B[3]:B[4]]'S' ; 'OP' ?=:==('R' X)'R' : (TEST(X);X) ; TEST(T [IDRE:=-4,,]) ; [4,-1 : 1]'R' ENT ; ENT[1,0]:=ENT[1,1]:= ( +0-T ) [--4*(-1),,] ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) ; 'R' ALFA , 'R' PAR = ('SKIP' ;( 'RRR' : T ) [--4*(-1),,] ; T [-4,,]) ; TEST(PAR) ; ALFA:=?=:='RRR'(T) ['INT'(-4),,] ; TEST(ALFA) ; 'R' IDENT =T [IRANG[3--4],,] , 'R' LOC:='CASE' 1 'IN' 'RRR'(T) [IRANG[3--4],,], 'SKIP' 'ESAC' , TAS:=PAVEC(" ") ['LOC''INT':=-4,,] ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'IF'FAUX'THEN' +0-T 'FI' [IDPRE:=-4,,] , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),(('HEAP' 'RRR':=T ) [IDB,,],(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, TT[1] [IRANG[3--4],,],PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;'BEGIN' +0-T 'END' [CB 'OF' ISTRUCT,,]) ; 'UNION'('REF''R','CHAR') UNION := 'LOC''R' := PR(PROC,(1+1-1! +0-T ,'SKIP') ['INT' : -4,,],PROC) ; TEST((UNION ! ('REF' 'R' A) : A)) ; (TEST('R''BEGIN'PAVEC(" ") ['INT' : -4,,]'END') , ?=:=(UNION;'TRUE' ! TT[1] [-4,,]) , PAVEC(" ") [--4*(-1),,] , TEST(('BOOL' BOOL='FALSE';UNION ! ('REF''R') : TT[1] [IPROC(-40),,] , ('CHAR' CAR) : 'SKIP'))) ; CTRL(18) ; CTRT:= 2 ; CTRLOC:=CTR ; TEST(TT[1] [('INT' X:='INT'(-4);X),,] :=TT[1] ['INT'(-4),,] :=((TT[1] ['LOC''INT':=-4,,] :=:TT[1] [IRANG[3--4],,] ! 'SKIP'); TT[1] [--4*(-1),,] )); TEST((VU!('INT'):'SKIP'!'HEAP' 'RRR':=T ) [IPROC(-40),,] :=('HEAP' 'RRR':=T ) ['LOC''INT':=-4,,] :=((('HEAP' 'RRR':=T ) [IDPRE:=-4,,] :=:'IF'FAUX'THEN''HEAP' 'RRR':=T 'FI' [IDB,,] ! 'SKIP'); ('HEAP' 'RRR':=T ) ['INT'(-4),,] )); TEST('BEGIN'DE'OF'STT'END' [IDB,,] :=(1+1-1!DE'OF'STT,'SKIP') [IDB,,] :=(((VU!('INT'):'SKIP'!DE'OF'STT) [IDPRE:=-4,,] :=:(DE'OF'STT) [IRANG[3--4],,] ! 'SKIP'); (DE'OF'STT) [IRANG[3--4],,] )); CTRL(3) ; CTRT:= 3 ; CTRLOC:=CTR ; 'OP' ?==:=('UNION'('INT','BOOL') A,'INT' B)'BOOL':(CTR+:=1)=B, ?==:=('MSTR' A,B)'REF''INT' : CTR+:=1 , ?==:= ('R' A)'PROC''INT':(TEST(A);'INT':CTR+:=1) , ?==:=('R' A,B)'MSTR' : (TEST(A) ; TEST(B) ; 'SKIP') ; TEST( DE'OF' TSTR [IRANG[3--4],,]) ; ?==:TT[1] ['LOC''INT':=-4,,] ?==: ('IF'FAUX'THEN' 'RRR' : T 'FI' [IDPRE:=-4,,] ?==: DE'OF' TSTR [IDPRE:=-4,,] ?==:TSTR ['LOC''INT':=-4,,]) ?==:?==:( +0-T ) [--4*(-1),,] ; CTRL(10)) ; # INDEXEURS DE LA FORME : # (CTRT:= 4 ; CTRLOC:=CTR ; B:= (1,5,-5,-2,-8,3,-4,-5) ; 'MODE' 'R' = [B[1]:B[2],B[3]:B[4]]'U' , 'MSTR' = [B[1]:B[2],B[3]:B[4]]'S' ; 'OP' ?=:==('R' X)'R' : (TEST(X);X) ; TEST('BEGIN'DE'OF'STT'END' [ : ,'LOC''INT':=1,]) ; [4,-1 : 1]'R' ENT ; ENT[1,0]:=ENT[1,1]:= PAVEC(" ") [ : ,IRANG[3-1],] ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) ; 'R' ALFA , 'R' PAR = ('SKIP' ;'RRR'(T) [ : ,IDRE:=1,] ; TT[1] [ : ,'LOC''INT':=1,]) ; TEST(PAR) ; ALFA:=?=:=(1+1-1! 'RRR' : T ,'SKIP') [ : ,('INT' X:='INT'(1);X),] ; TEST(ALFA) ; 'R' IDENT =PAVEC(" ") [ : ,IDPRE:=1,] , 'R' LOC:='CASE' 1 'IN' PAVEC(" ") [ : ,'INT' : 1,], 'SKIP' 'ESAC' , TAS:=(VU!('INT'):'SKIP'! 'RRR' : T ) [ : ,'INT' : 1,] ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : TT[1] [ : ,1,] , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),(('HEAP' 'RRR':=T ) [ : ,IPROC(10),],(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, ( 'RRR' : T ) [ : ,IDPRE:=1,],PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;'RRR'(T) [ : ,('INT' X:=('INT' X:='INT' : 1;X);X),]) ; 'UNION'('REF''R','CHAR') UNION := 'LOC''R' := PR(PROC,'RRR'(T) [ : ,('INT' X:='INT' : 1;X),],PROC) ; TEST((UNION ! ('REF' 'R' A) : A)) ; (TEST('R''BEGIN''IF'FAUX'THEN''HEAP' 'RRR':=T 'FI' [ : ,CG 'OF' ISTRUCT,]'END') , ?=:=(UNION;'TRUE' ! PAVEC(" ") [ : ,IPROC(10),]) , 'RRR'(T) [ : ,'INT'(1),] , TEST(('BOOL' BOOL='FALSE';UNION ! ('REF''R') : PAVEC(" ") [ : ,IRANG[3-1],] , ('CHAR' CAR) : 'SKIP'))) ; CTRL(18) ; CTRT:= 5 ; CTRLOC:=CTR ; TEST(TT[1] [ : ,('INT' X:=-1*(-1);X),] :=TT[1] [ : ,'LOC''INT':=1,] :=((TT[1] [ : ,CG 'OF' ISTRUCT,] :=:TT[1] [ : ,1,] ! 'SKIP'); TT[1] [ : ,'LOC''INT':=1,] )); TEST(('HEAP' 'RRR':=T ) [ : ,IRANG[3-1],] :='BEGIN''HEAP' 'RRR':=T 'END' [ : ,IRANG[3-1],] :=(((1+1-1!'HEAP' 'RRR':=T ,'SKIP') [ : ,('INT' X:='INT' : 1;X),] :=:(VU!('INT'):'SKIP'!'HEAP' 'RRR':=T ) [ : ,1,] ! 'SKIP'); ('HEAP' 'RRR':=T ) [ : ,IDPRE:=1,] )); TEST((DE'OF'STT) [ : ,'LOC''INT':=1,] :='IF'FAUX'THEN'DE'OF'STT'FI' [ : ,1,] :=(((DE'OF'STT) [ : ,IDPRE:=1,] :=:'BEGIN'DE'OF'STT'END' [ : ,'INT'(1),] ! 'SKIP'); (1+1-1!DE'OF'STT,'SKIP') [ : ,1,] )); CTRL(3) ; CTRT:= 6 ; CTRLOC:=CTR ; 'OP' ?==:=('UNION'('INT','BOOL') A,'INT' B)'BOOL':(CTR+:=1)=B, ?==:=('MSTR' A,B)'REF''INT' : CTR+:=1 , ?==:= ('R' A)'PROC''INT':(TEST(A);'INT':CTR+:=1) , ?==:=('R' A,B)'MSTR' : (TEST(A) ; TEST(B) ; 'SKIP') ; TEST( DE'OF' TSTR [ : ,IPROC(10),]) ; ?==:PAVEC(" ") [ : ,1,] ?==: (PAVEC(" ") [ : ,('INT' X:=IDG;X),] ?==: DE'OF' TSTR [ : ,'LOC''INT':=1,] ?==:TSTR [ : ,'INT'(1),]) ?==:?==:'RRR'(T) [ : ,CG 'OF' ISTRUCT,] ; CTRL(10)) ; # INDEXEURS DE LA FORME LWB : # (CTRT:= 7 ; CTRLOC:=CTR ; B:= (-4,0,1,1,-5,3,-4,-2) ; 'MODE' 'R' = [B[1]:B[2],B[3]:B[4]]'U' , 'MSTR' = [B[1]:B[2],B[3]:B[4]]'S' ; 'OP' ?=:==('R' X)'R' : (TEST(X);X) ; TEST((VU!('INT'):'SKIP'! +0-T ) [,CG 'OF' ISTRUCT,('INT' X:='LOC''INT':=-2;X) : ]) ; [4,-1 : 1]'R' ENT ; ENT[1,0]:=ENT[1,1]:= ( 'RRR' : T ) [,IRANG[3-1],IRANG[3--2] : ] ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) ; 'R' ALFA , 'R' PAR = ('SKIP' ;( 'RRR' : T ) [,IPROC(10),IDPRE:=-2 : ] ; 'RRR'(T) [,'INT' : 1,CD 'OF' ISTRUCT : ]) ; TEST(PAR) ; ALFA:=?=:='RRR'(T) [,IDG,'INT' : -2 : ] ; TEST(ALFA) ; 'R' IDENT =PAVEC(" ") [,IPROC(10),IRANG[3--2] : ] , 'R' LOC:='CASE' 1 'IN' 'IF'FAUX'THEN' 'RRR' : T 'FI' [,-1*(-1),CD 'OF' ISTRUCT : ], 'SKIP' 'ESAC' , TAS:=(DE'OF'STT) [,('INT' X:='LOC''INT':=1;X),IDPRE:=-2 : ] ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : T [,1,'INT' : -2 : ] , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('BEGIN'DE'OF'STT'END' [,'INT' : 1,IDPRE:=-2 : ],(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'RRR'(T) [,IDRE:=1,-2 : ],PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;PAVEC(" ") [,IPROC(10),IDRE:=-2 : ]) ; 'UNION'('REF''R','CHAR') UNION := 'LOC''R' := PR(PROC,(1+1-1!'HEAP' 'RRR':=T ,'SKIP') [,IDPRE:=1,IDRE:=-2 : ],PROC) ; TEST((UNION ! ('REF' 'R' A) : A)) ; (TEST('R''BEGIN'TT[1] [,1,IDRE:=-2 : ]'END') , ?=:=(UNION;'TRUE' ! (VU!('INT'):'SKIP'!DE'OF'STT) [,IDPRE:=1,'INT'(-2) : ]) , (DE'OF'STT) [,'LOC''INT':=1,'INT'(-2) : ] , TEST(('BOOL' BOOL='FALSE';UNION ! ('REF''R') : TT[1] [,'INT' : 1,IDPRE:=-2 : ] , ('CHAR' CAR) : 'SKIP'))) ; CTRL(18) ; CTRT:= 8 ; CTRLOC:=CTR ; TEST(TT[1] [,'LOC''INT':=1,IDPRE:=-2 : ] :=TT[1] [,'LOC''INT':=1,IDPRE:=-2 : ] :=((TT[1] [,CG 'OF' ISTRUCT,IDPRE:=-2 : ] :=:TT[1] [,1,-2 : ] ! 'SKIP'); TT[1] [,-1*(-1),IDRE:=-2 : ] )); TEST(('HEAP' 'RRR':=T ) [,('INT' X:=('INT' X:='INT' : 1;X);X),IPROC(-20) : ] :='IF'FAUX'THEN''HEAP' 'RRR':=T 'FI' [,'INT' : 1,('INT' X:=-2;X) : ] :=((('HEAP' 'RRR':=T ) [,IDG,IDD : ] :=:'BEGIN''HEAP' 'RRR':=T 'END' [,'INT' : 1,CD 'OF' ISTRUCT : ] ! 'SKIP'); (1+1-1!'HEAP' 'RRR':=T ,'SKIP') [,IDG,--2*(-1) : ] )); TEST((VU!('INT'):'SKIP'!DE'OF'STT) [,CG 'OF' ISTRUCT,('INT' X:='LOC''INT':=-2;X) : ] :=(DE'OF'STT) [,IPROC(10),-2 : ] :=(((DE'OF'STT) [,IRANG[3-1],IPROC(-20) : ] :=:'IF'FAUX'THEN'DE'OF'STT'FI' [,'INT' : 1,-2 : ] ! 'SKIP'); (DE'OF'STT) [,IDRE:=1,'INT' : -2 : ] )); CTRL(3) ; CTRT:= 9 ; CTRLOC:=CTR ; 'OP' ?==:=('UNION'('INT','BOOL') A,'INT' B)'BOOL':(CTR+:=1)=B, ?==:=('MSTR' A,B)'REF''INT' : CTR+:=1 , ?==:= ('R' A)'PROC''INT':(TEST(A);'INT':CTR+:=1) , ?==:=('R' A,B)'MSTR' : (TEST(A) ; TEST(B) ; 'SKIP') ; TEST( DE'OF' TSTR [,CG 'OF' ISTRUCT,IDD : ]) ; ?==:TT[1] [,IPROC(10),IPROC(-20) : ] ?==: (T [,IDPRE:=1,'INT'(-2) : ] ?==: DE'OF' TSTR [,IDPRE:=1,--2*(-1) : ] ?==:TSTR [,IRANG[3-1],IDRE:=-2 : ]) ?==:?==:'BEGIN' +0-T 'END' [,IPROC(10),--2*(-1) : ] ; CTRL(10)) ; # INDEXEURS DE LA FORME : UPB # (CTRT:= 10 ; CTRLOC:=CTR ; B:= (-4,0,1,3,-6,1,-4,-2) ; 'MODE' 'R' = [B[1]:B[2],B[3]:B[4]]'U' , 'MSTR' = [B[1]:B[2],B[3]:B[4]]'S' ; 'OP' ?=:==('R' X)'R' : (TEST(X);X) ; TEST(TT[1] [, : 'INT'(2),-2]) ; [4,-1 : 1]'R' ENT ; ENT[1,0]:=ENT[1,1]:= (1+1-1! 'RRR' : T ,'SKIP') [, : IRANG[3-2],CD 'OF' ISTRUCT] ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) ; 'R' ALFA , 'R' PAR = ('SKIP' ;PAVEC(" ") [, : IPROC(20),--2*(-1)] ; (VU!('INT'):'SKIP'!DE'OF'STT) [, : ('INT' X:=('INT' X:=IPROC(20);X);X),-2]) ; TEST(PAR) ; ALFA:=?=:=('HEAP' 'RRR':=T ) [, : IRANG[3-2],IRANG[3--2]] ; TEST(ALFA) ; 'R' IDENT ='RRR'(T) [, : ('INT' X:='INT'(2);X),CD 'OF' ISTRUCT] , 'R' LOC:='CASE' 1 'IN' ( 'RRR' : T ) [, : ('INT' X:='INT' : 2;X),'INT'(-2)], 'SKIP' 'ESAC' , TAS:='RRR'(T) [, : IRANG[3-2],IDRE:=-2] ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'IF'FAUX'THEN' +0-T 'FI' [, : 'INT' : 2,'INT' : -2] , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),(( 'RRR' : T ) [, : IDPRE:=2,IDD],(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, TT[1] [, : 2,'INT' : -2],PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;'BEGIN' +0-T 'END' [, : -2*(-1),('INT' X:=IDRE:=-2;X)]) ; 'UNION'('REF''R','CHAR') UNION := 'LOC''R' := PR(PROC,PAVEC(" ") [, : 'LOC''INT':=2,'LOC''INT':=-2],PROC) ; TEST((UNION ! ('REF' 'R' A) : A)) ; (TEST('R''BEGIN'PAVEC(" ") [, : IDPRE:=2,IRANG[3--2]]'END') , ?=:=(UNION;'TRUE' ! T [, : IDPRE:=2,IDRE:=-2]) , (1+1-1! 'RRR' : T ,'SKIP') [, : 2,IDPRE:=-2] , TEST(('BOOL' BOOL='FALSE';UNION ! ('REF''R') : TT[1] [, : -2*(-1),--2*(-1)] , ('CHAR' CAR) : 'SKIP'))) ; CTRL(18) ; CTRT:= 11 ; CTRLOC:=CTR ; TEST(TT[1] [, : -2*(-1),IRANG[3--2]] :=TT[1] [, : 'INT' : 2,'INT'(-2)] :=((TT[1] [, : 'INT'(2),('INT' X:='INT' : -2;X)] :=:TT[1] [, : ('INT' X:=-2*(-1);X),IDRE:=-2] ! 'SKIP'); TT[1] [, : 'INT' : 2,IRANG[3--2]] )); TEST((VU!('INT'):'SKIP'!'HEAP' 'RRR':=T ) [, : 'INT'(2),CD 'OF' ISTRUCT] :=('HEAP' 'RRR':=T ) [, : 'INT'(2),IRANG[3--2]] :=((('HEAP' 'RRR':=T ) [, : CH 'OF' ISTRUCT,IPROC(-20)] :=:'IF'FAUX'THEN''HEAP' 'RRR':=T 'FI' [, : 'LOC''INT':=2,'LOC''INT':=-2] ! 'SKIP'); ('HEAP' 'RRR':=T ) [, : IPROC(20),--2*(-1)] )); TEST('BEGIN'DE'OF'STT'END' [, : IRANG[3-2],IDRE:=-2] :=(1+1-1!DE'OF'STT,'SKIP') [, : IRANG[3-2],IRANG[3--2]] :=(((VU!('INT'):'SKIP'!DE'OF'STT) [, : 'INT'(2),('INT' X:=IPROC(-20);X)] :=:(DE'OF'STT) [, : IDPRE:=2,'INT'(-2)] ! 'SKIP'); (DE'OF'STT) [, : 2,IDRE:=-2] )); CTRL(3) ; CTRT:= 12 ; CTRLOC:=CTR ; 'OP' ?==:=('UNION'('INT','BOOL') A,'INT' B)'BOOL':(CTR+:=1)=B, ?==:=('MSTR' A,B)'REF''INT' : CTR+:=1 , ?==:= ('R' A)'PROC''INT':(TEST(A);'INT':CTR+:=1) , ?==:=('R' A,B)'MSTR' : (TEST(A) ; TEST(B) ; 'SKIP') ; TEST( DE'OF' TSTR [, : IRANG[3-2],-2]) ; ?==:PAVEC(" ") [, : 'INT' : 2,'INT'(-2)] ?==: ('IF'FAUX'THEN' 'RRR' : T 'FI' [, : 'INT'(2),'LOC''INT':=-2] ?==: DE'OF' TSTR [, : 2,CD 'OF' ISTRUCT] ?==:TSTR [, : IRANG[3-2],--2*(-1)]) ?==:?==:T [, : IPROC(20),'INT'(-2)] ; CTRL(10)) ; # INDEXEURS DE LA FORME LWB : UPB # (CTRT:= 13 ; CTRLOC:=CTR ; B:= (0,2,1,1,-7,2,-4,-3) ; 'MODE' 'R' = [B[1]:B[2],B[3]:B[4]]'U' , 'MSTR' = [B[1]:B[2],B[3]:B[4]]'S' ; 'OP' ?=:==('R' X)'R' : (TEST(X);X) ; TEST(T ['INT' : -4, ,'INT'(-3) : -3]) ; [4,-1 : 1]'R' ENT ; ENT[1,0]:=ENT[1,1]:= ( +0-T ) [-4, ,-3 : --3*(-1)] ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) ; 'R' ALFA , 'R' PAR = ('SKIP' ;T ['INT' : -4, ,IDRE:=-3 : IRANG[3--3]] ; 'BEGIN''HEAP' 'RRR':=T 'END' [IDPRE:=-4, ,'INT'(-3) : IDPRE:=-3]) ; TEST(PAR) ; ALFA:=?=:=PAVEC(" ") [CB 'OF' ISTRUCT, ,IDPRE:=-3 : CC 'OF' ISTRUCT] ; TEST(ALFA) ; 'R' IDENT ='RRR'(T) ['INT'(-4), ,'INT' : -3 : 'INT' : -3] , 'R' LOC:='CASE' 1 'IN' (1+1-1! 'RRR' : T ,'SKIP') [-4, ,'LOC''INT':=-3 : -3], 'SKIP' 'ESAC' , TAS:=T ['INT'(-4), ,IDPRE:=-3 : 'INT'(-3)] ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : (VU!('INT'):'SKIP'!'HEAP' 'RRR':=T ) [IRANG[3--4], ,('INT' X:=IDPRE:=-3;X) : IDRE:=-3] , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),(('HEAP' 'RRR':=T ) [IPROC(-40), ,--3*(-1) : ('INT' X:=IDC;X)],(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'RRR'(T) [IDRE:=-4, ,'LOC''INT':=-3 : IDRE:=-3],PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;PAVEC(" ") ['INT' : -4, ,'INT'(-3) : ('INT' X:='INT'(-3);X)]) ; 'UNION'('REF''R','CHAR') UNION := 'LOC''R' := PR(PROC,( +0-T ) [IDB, ,'LOC''INT':=-3 : IPROC(-30)],PROC) ; TEST((UNION ! ('REF' 'R' A) : A)) ; (TEST('R''BEGIN''IF'FAUX'THEN'DE'OF'STT'FI' [IRANG[3--4], ,'INT' : -3 : IDC]'END') , ?=:=(UNION;'TRUE' ! ( +0-T ) [IDRE:=-4, ,-3 : IPROC(-30)]) , TT[1] ['INT' : -4, ,'LOC''INT':=-3 : -3] , TEST(('BOOL' BOOL='FALSE';UNION ! ('REF''R') : 'BEGIN''HEAP' 'RRR':=T 'END' [--4*(-1), ,IDPRE:=-3 : --3*(-1)] , ('CHAR' CAR) : 'SKIP'))) ; CTRL(18) ; CTRT:= 14 ; CTRLOC:=CTR ; TEST(TT[1] [IDPRE:=-4, ,IDC : IRANG[3--3]] :=TT[1] [('INT' X:=IDB;X), ,IRANG[3--3] : 'INT'(-3)] :=((TT[1] [-4, ,IDPRE:=-3 : -3] :=:TT[1] [IDRE:=-4, ,--3*(-1) : IDC] ! 'SKIP'); TT[1] [IRANG[3--4], ,'INT'(-3) : 'LOC''INT':=-3] )); TEST((1+1-1!'HEAP' 'RRR':=T ,'SKIP') [IRANG[3--4], ,IDRE:=-3 : IDPRE:=-3] :=(VU!('INT'):'SKIP'!'HEAP' 'RRR':=T ) ['INT'(-4), ,IDRE:=-3 : 'INT'(-3)] :=((('HEAP' 'RRR':=T ) [-4, ,'LOC''INT':=-3 : IDRE:=-3] :=:('HEAP' 'RRR':=T ) [IPROC(-40), ,('INT' X:='INT' : -3;X) : IRANG[3--3]] ! 'SKIP'); 'IF'FAUX'THEN''HEAP' 'RRR':=T 'FI' [IRANG[3--4], ,CC 'OF' ISTRUCT : ('INT' X:=-3;X)] )); TEST((DE'OF'STT) ['INT' : -4, ,-3 : IPROC(-30)] :='BEGIN'DE'OF'STT'END' [-4, ,CC 'OF' ISTRUCT : IDRE:=-3] :=(((1+1-1!DE'OF'STT,'SKIP') [IPROC(-40), ,IRANG[3--3] : IPROC(-30)] :=:(VU!('INT'):'SKIP'!DE'OF'STT) [IDPRE:=-4, ,'INT'(-3) : 'INT' : -3] ! 'SKIP'); (DE'OF'STT) [('INT' X:='INT'(-4);X), ,--3*(-1) : CC 'OF' ISTRUCT] )); CTRL(3) ; CTRT:= 15 ; CTRLOC:=CTR ; 'OP' ?==:=('UNION'('INT','BOOL') A,'INT' B)'BOOL':(CTR+:=1)=B, ?==:=('MSTR' A,B)'REF''INT' : CTR+:=1 , ?==:= ('R' A)'PROC''INT':(TEST(A);'INT':CTR+:=1) , ?==:=('R' A,B)'MSTR' : (TEST(A) ; TEST(B) ; 'SKIP') ; TEST( DE'OF' TSTR [CB 'OF' ISTRUCT, ,'INT' : -3 : 'INT' : -3]) ; ?==:T [CB 'OF' ISTRUCT, ,'LOC''INT':=-3 : IDC] ?==: (T [IPROC(-40), ,IDC : IDC] ?==: DE'OF' TSTR [IDB, ,-3 : IPROC(-30)] ?==:TSTR [--4*(-1), ,CC 'OF' ISTRUCT : 'INT'(-3)]) ?==:?==:TT[1] ['INT' : -4, ,IDRE:=-3 : ('INT' X:=IPROC(-30);X)] ; CTRL(10)) ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R532D # (PRINT(("SLICES WITH TRIMMERS",NEWLINE)) ; 'INT' VF = (18+3+10)*5 ; 'INT' CTR:=0 , CTRT:=0 , CTRLOC ; 'PROC' CTRL = ('INT' INC)'VOID' : (CTR/=CTRLOC+INC ! PRINT(("COUNT ER IN TEST",CTRT,CTR,CTRLOC+INC,NEWLINE))); 'PRIO' & = 3 , 'INT' K , 'OP' & = ('BOOL' A,B)'BOOL' : (K+:=1;(K=2'AND''NOT'A!PRINT(1)) ; B ! A ! PRINT(K);'FALSE') , # SERVITUDES POUR PRIMAIRES # 'MODE' 'MS' = 'STRUCT'('INT' RE,IM) ; 'MODE' 'U' = 'UNION'('REF''INT','MS') ; 'MODE' 'RRR' = [-4:0,0:2,-5:2]'U' ; 'RRR' T = ( 'RRR' T;'FOR' I 'FROM' -4 'TO' 0 'DO' 'FOR' J 'FROM' 0 'TO' 2 'DO' 'FOR' K 'FROM' -5 'TO' -2 'DO' T[I,J,K] :=('ODD'(I+J+K) ! 'MS'(I,K) ! CTR) 'OD' 'OD' 'OD' ; T ) ; 'MODE' 'S' = 'STRUCT'('INT' OF,'U' DE) ; [,,]'S' TSTR = ([-4:0,0:2,-5:-2]'S' S ; 'FOR' I 'FROM' -4 'TO' 0 'DO' 'FOR' J 'FROM' 0 'TO' 2 'DO' 'FOR' K 'FROM' -5 'TO' -2 'DO' S[I,J,K]:=(0,T[I,J,K]) 'OD''OD''OD' ; S ) ; 'PROC' PAVEC = ('STRING' C)'RRR' : ('UPB' C = 1 ! T) , 'OP' - = ('INT' B,'RRR' A)'RRR' : (-(3'UPB'A) ! 'SKIP',A) , [1]'RRR' TT:=T , 'STRUCT'('RRR' DE) STT ; DE'OF'STT:=T ; 'UNION'('INT','REAL') VU:=1E0 , 'BOOL' FAUX = 'TRUE' ; [8] 'INT' B ; 'PRIO' ?==:=9 ; 'PROC' TEST = ( [,]'U' A)'VOID' : ('INT' I=1'LWB'A , J=2'LWB'A ; K:=1 ; I=B[1] & 1'UPB'A=B[2] & J=B[3] & 2'UPB'A=B[4] & (A[I,J] ! ('MS' S) : 'ODD' B[5] & RE'OF'S=B[7] & IM'OF'S=B[8] , ('REF''INT' R) : 'NOT''ODD' B[5] & (R:=:CTR)) ! CTR+:=1 ! PRINT(("ER TEST N0",CTRT,CTR-CTRLOC,NEWLINE))) ; # SERVITUDES POUR INDICES # 'PROC' IDPRE='REF''INT' : 'HEAP''INT':=0 , 'INT' IDRE:=0 , 'STRUCT'('INT' CA,CB,CC,CD,CE,CF,CG,CH) ISTRUCT = (-5,-4,-3,-2,-1,0,1,2) , [8]'INT' IRANG:=(2,1,0,-1,-2,-3,-4,-5) , 'PROC' IPROC := ('INT' A)'REF''INT' : 'HEAP''INT':=A?10 , 'INT' IDA=-5,IDB=-4,IDC=-3,IDD=-2,IDE=-1,IDF=0,IDG=1,IDH=2 ; # CONTEXTES # # INDEXEURS DE LA FORME @D # (CTRT:= 1 ; CTRLOC:=CTR ; B:= (0,4,0,2,-9,1,-4,-5) ; 'MODE' 'R' = [B[1]:B[2],B[3]:B[4]]'U' , 'MSTR' = [B[1]:B[2],B[3]:B[4]]'S' ; 'OP' ?=:==('R' X)'R' : (TEST(X);X) ; TEST(T ['AT'IDRE:=0,,CA 'OF' ISTRUCT]) ; [4,-1 : 1]'R' ENT ; ENT[1,0]:=ENT[1,1]:= ( 'RRR' : T ) ['AT''LOC''INT':=0,,--5*(-1)] ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) ; 'R' ALFA , 'R' PAR = ('SKIP' ;T ['AT'0,,IDPRE:=-5] ; ('HEAP' 'RRR':=T ) ['AT'('INT' X:=IRANG[3-0];X),,IDRE:=-5]) ; TEST(PAR) ; ALFA:=?=:=TT[1] ['AT''INT' : 0,,'LOC''INT':=-5] ; TEST(ALFA) ; 'R' IDENT ='IF'FAUX'THEN' +0-T 'FI' ['AT'IDPRE:=0,,'INT'(-5)] , 'R' LOC:='CASE' 1 'IN' ('HEAP' 'RRR':=T ) ['AT'IPROC(00),,IRANG[3--5]], 'SKIP' 'ESAC' , TAS:='BEGIN' +0-T 'END' ['AT'CF 'OF' ISTRUCT,,IRANG[3--5]] ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : PAVEC(" ") ['AT'-0*(-1),,'INT' : -5] , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),(TT[1] ['AT'0,,--5*(-1)],(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, (1+1-1! 'RRR' : T ,'SKIP') ['AT'IRANG[3-0],,IPROC(-50)],PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;T ['AT''INT'(0),,'INT'(-5)]) ; 'UNION'('REF''R','CHAR') UNION := 'LOC''R' := PR(PROC,(VU!('INT'):'SKIP'! 'RRR' : T ) ['AT'IRANG[3-0],,--5*(-1)],PROC) ; TEST((UNION ! ('REF' 'R' A) : A)) ; (TEST('R''BEGIN'TT[1] ['AT''LOC''INT':=0,,IDPRE:=-5]'END') , ?=:=(UNION;'TRUE' ! ('HEAP' 'RRR':=T ) ['AT''INT'(0),,IDA]) , ('HEAP' 'RRR':=T ) ['AT'IDPRE:=0,,IRANG[3--5]] , TEST(('BOOL' BOOL='FALSE';UNION ! ('REF''R') : 'IF'FAUX'THEN' +0-T 'FI' ['AT'IRANG[3-0],,IPROC(-50)] , ('CHAR' CAR) : 'SKIP'))) ; CTRL(18) ; CTRT:= 2 ; CTRLOC:=CTR ; TEST(TT[1] ['AT''LOC''INT':=0,,--5*(-1)] :=TT[1] ['AT'IDPRE:=0,,IDPRE:=-5] :=((TT[1] ['AT''LOC''INT':=0,,CA 'OF' ISTRUCT] :=:TT[1] ['AT'-0*(-1),,-5] ! 'SKIP'); TT[1] ['AT''LOC''INT':=0,,'INT' : -5] )); TEST(('HEAP' 'RRR':=T ) ['AT'IRANG[3-0],,IDPRE:=-5] :='BEGIN''HEAP' 'RRR':=T 'END' ['AT'IDRE:=0,,IRANG[3--5]] :=(((1+1-1!'HEAP' 'RRR':=T ,'SKIP') ['AT''LOC''INT':=0,,'LOC''INT':=-5] :=:(VU!('INT'):'SKIP'!'HEAP' 'RRR':=T ) ['AT'('INT' X:='INT'(0);X),,'INT' : -5] ! 'SKIP'); ('HEAP' 'RRR':=T ) ['AT'IDPRE:=0,,'INT' : -5] )); TEST((DE'OF'STT) ['AT''INT' : 0,,--5*(-1)] :='IF'FAUX'THEN'DE'OF'STT'FI' ['AT''INT' : 0,,IPROC(-50)] :=(((DE'OF'STT) ['AT'0,,'INT'(-5)] :=:'BEGIN'DE'OF'STT'END' ['AT'IPROC(00),,'LOC''INT':=-5] ! 'SKIP'); (1+1-1!DE'OF'STT,'SKIP') ['AT'IDPRE:=0,,IDPRE:=-5] )); CTRL(3) ; CTRT:= 3 ; CTRLOC:=CTR ; 'OP' ?==:=('UNION'('INT','BOOL') A,'INT' B)'BOOL':(CTR+:=1)=B, ?==:=('MSTR' A,B)'REF''INT' : CTR+:=1 , ?==:= ('R' A)'PROC''INT':(TEST(A);'INT':CTR+:=1) , ?==:=('R' A,B)'MSTR' : (TEST(A) ; TEST(B) ; 'SKIP') ; TEST( DE'OF' TSTR ['AT'('INT' X:=('INT' X:='INT' : 0;X);X),,IDRE:=-5] ) ; ?==:T ['AT''INT' : 0,,IDA] ?==: ((VU!('INT'):'SKIP'! +0-T ) ['AT''INT' : 0,,IPROC(-50)] ?==: DE'OF' TSTR ['AT'IDPRE:=0,,'INT'(-5)] ?==:TSTR ['AT''INT' : 0,,IRANG[3--5]]) ?==:?==:T ['AT'-0*(-1),,'LOC''INT':=-5] ; CTRL(10)) ; # INDEXEURS DE LA FORME : @D # (CTRT:= 4 ; CTRLOC:=CTR ; B:= (-4,0,-1,2,-8,3,-4,-5) ; 'MODE' 'R' = [B[1]:B[2],B[3]:B[4]]'U' , 'MSTR' = [B[1]:B[2],B[3]:B[4]]'S' ; 'OP' ?=:==('R' X)'R' : (TEST(X);X) ; TEST(( +0-T ) [,1, : @'LOC''INT':=-1]) ; [4,-1 : 1]'R' ENT ; ENT[1,0]:=ENT[1,1]:= ( +0-T ) [,IRANG[3-1], : @('INT' X:='INT' : -1;X)] ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) ; 'R' ALFA , 'R' PAR = ('SKIP' ;'IF'FAUX'THEN'DE'OF'STT'FI' [,IDPRE:=1, : @'LOC''INT':=-1] ; (DE'OF'STT) [,IDPRE:=1, : @'INT'(-1)]) ; TEST(PAR) ; ALFA:=?=:='BEGIN'DE'OF'STT'END' [,IPROC(10), : @'INT' : -1] ; TEST(ALFA) ; 'R' IDENT =(1+1-1!DE'OF'STT,'SKIP') [,-1*(-1), : @('INT' X:=IDE;X)] , 'R' LOC:='CASE' 1 'IN' (VU!('INT'):'SKIP'! 'RRR' : T ) [,'INT'(1), : @IDPRE:=-1], 'SKIP' 'ESAC' , TAS:=( +0-T ) [,CG 'OF' ISTRUCT, : @CE 'OF' ISTRUCT] ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : T [,'LOC''INT':=1, : @--1*(-1)] , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),(TT[1] [,IRANG[3-1], : @'LOC''INT':=-1],(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, TT[1] [,IDPRE:=1, : @IDPRE:=-1],PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;PAVEC(" ") [,CG 'OF' ISTRUCT, : @IDPRE:=-1]) ; 'UNION'('REF''R','CHAR') UNION := 'LOC''R' := PR(PROC,('HEAP' 'RRR':=T ) [,'INT' : 1, : @'INT' : -1],PROC) ; TEST((UNION ! ('REF' 'R' A) : A)) ; (TEST('R''BEGIN'TT[1] [,IRANG[3-1], : @--1*(-1)]'END') , ?=:=(UNION;'TRUE' ! 'IF'FAUX'THEN' 'RRR' : T 'FI' [,CG 'OF' ISTRUCT, : @-1]) , T [,'LOC''INT':=1, : @IDPRE:=-1] , TEST(('BOOL' BOOL='FALSE';UNION ! ('REF''R') : T [,1, : @'INT' : -1] , ('CHAR' CAR) : 'SKIP'))) ; CTRL(18) ; CTRT:= 5 ; CTRLOC:=CTR ; TEST(TT[1] [,IDG, : @'INT' : -1] :=TT[1] [,IDPRE:=1, : @IDPRE:=-1] :=((TT[1] [,IDRE:=1, : @-1] :=:TT[1] [,'INT' : 1, : @IPROC(-10)] ! 'SKIP'); TT[1] [,IDRE:=1, : @'INT'(-1)] )); TEST(('HEAP' 'RRR':=T ) [,IDPRE:=1, : @IDRE:=-1] :='BEGIN''HEAP' 'RRR':=T 'END' [,IPROC(10), : @-1] :=(((1+1-1!'HEAP' 'RRR':=T ,'SKIP') [,IDRE:=1, : @IDE] :=:(VU!('INT'):'SKIP'!'HEAP' 'RRR':=T ) [,IDPRE:=1, : @'INT'(-1)] ! 'SKIP'); ('HEAP' 'RRR':=T ) [,IDG, : @'LOC''INT':=-1] )); TEST((DE'OF'STT) [,'INT'(1), : @IPROC(-10)] :='IF'FAUX'THEN'DE'OF'STT'FI' [,'INT' : 1, : @IDPRE:=-1] :=(((DE'OF'STT) [,'LOC''INT':=1, : @IDPRE:=-1] :=:'BEGIN'DE'OF'STT'END' [,'LOC''INT':=1, : @IDPRE:=-1] ! 'SKIP'); (1+1-1!DE'OF'STT,'SKIP') [,CG 'OF' ISTRUCT, : @IDPRE:=-1] )); CTRL(3) ; CTRT:= 6 ; CTRLOC:=CTR ; 'OP' ?==:=('UNION'('INT','BOOL') A,'INT' B)'BOOL':(CTR+:=1)=B, ?==:=('MSTR' A,B)'REF''INT' : CTR+:=1 , ?==:= ('R' A)'PROC''INT':(TEST(A);'INT':CTR+:=1) , ?==:=('R' A,B)'MSTR' : (TEST(A) ; TEST(B) ; 'SKIP') ; TEST( DE'OF' TSTR [,1, : @-1]) ; ?==:PAVEC(" ") [,IDRE:=1, : @('INT' X:=('INT' X:='INT' : -1;X);X)] ?==: (TT[1] [,'INT' : 1, : @('INT' X:=-1;X)] ?==: DE'OF' TSTR [,IDG, : @IDE] ?==:TSTR [,'INT' : 1, : @CE 'OF' ISTRUCT]) ?==:?==:(VU!('INT'):'SKIP'!DE'OF'STT) [,-1*(-1), : @CE 'OF' ISTRUCT] ; CTRL(10)) ; # INDEXEURS DE LA FORME LWB : @D # (CTRT:= 7 ; CTRLOC:=CTR ; B:= (-3,-1,-5,-2,-9,2,-4,-5) ; 'MODE' 'R' = [B[1]:B[2],B[3]:B[4]]'U' , 'MSTR' = [B[1]:B[2],B[3]:B[4]]'S' ; 'OP' ?=:==('R' X)'R' : (TEST(X);X) ; TEST(T ['LOC''INT':=-4,IPROC(00) : 'AT'-3,]) ; [4,-1 : 1]'R' ENT ; ENT[1,0]:=ENT[1,1]:= TT[1] [IPROC(-40),'INT' : 0 : 'AT'-3,] ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) ; 'R' ALFA , 'R' PAR = ('SKIP' ;T ['INT' : -4,CF 'OF' ISTRUCT : 'AT'IDC,] ; TT[1] [IPROC(-40),IPROC(00) : 'AT'IDRE:=-3,]) ; TEST(PAR) ; ALFA:=?=:='RRR'(T) ['INT'(-4),IDPRE:=0 : 'AT'--3*(-1),] ; TEST(ALFA) ; 'R' IDENT =( +0-T ) [IDRE:=-4,CF 'OF' ISTRUCT : 'AT'IPROC(-30),] , 'R' LOC:='CASE' 1 'IN' PAVEC(" ") [IRANG[3--4],'INT'(0) : 'AT'-3,], 'SKIP' 'ESAC' , TAS:=( 'RRR' : T ) [IRANG[3--4],CF 'OF' ISTRUCT : 'AT''INT' : -3,] ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : TT[1] [--4*(-1),0 : 'AT'('INT' X:=('INT' X:=IPROC(-30);X);X),] , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('IF'FAUX'THEN'DE'OF'STT'FI' ['INT'(-4),IRANG[3-0] : 'AT'IRANG[3--3],],(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'RRR'(T) [('INT' X:='INT'(-4);X),CF 'OF' ISTRUCT : 'AT''LOC''INT':=-3,] ,PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;T ['INT' : -4,'INT'(0) : 'AT'IDPRE:=-3,]) ; 'UNION'('REF''R','CHAR') UNION := 'LOC''R' := PR(PROC,( +0-T ) [IDRE:=-4,CF 'OF' ISTRUCT : 'AT''INT' : -3,],PROC) ; TEST((UNION ! ('REF' 'R' A) : A)) ; (TEST('R''BEGIN'PAVEC(" ") ['LOC''INT':=-4,IDPRE:=0 : 'AT'IDC,]'END') , ?=:=(UNION;'TRUE' ! TT[1] [-4,'INT' : 0 : 'AT'CC 'OF' ISTRUCT,]) , 'BEGIN' 'RRR' : T 'END' [('INT' X:=IDRE:=-4;X),-0*(-1) : 'AT''LOC''INT':=-3,] , TEST(('BOOL' BOOL='FALSE';UNION ! ('REF''R') : (1+1-1! 'RRR' : T ,'SKIP') [--4*(-1),IDPRE:=0 : 'AT'IRANG[3--3],] , ('CHAR' CAR) : 'SKIP'))) ; CTRL(18) ; CTRT:= 8 ; CTRLOC:=CTR ; TEST(TT[1] [('INT' X:=IDPRE:=-4;X),IDRE:=0 : 'AT'--3*(-1),] :=TT[1] [-4,IDPRE:=0 : 'AT'IPROC(-30),] :=((TT[1] [--4*(-1),-0*(-1) : 'AT'--3*(-1),] :=:TT[1] [IRANG[3--4],'INT' : 0 : 'AT''INT'(-3),] ! 'SKIP'); TT[1] ['INT'(-4),('INT' X:='INT' : 0;X) : 'AT'('INT' X:=--3*(-1);X),] )); TEST((VU!('INT'):'SKIP'!'HEAP' 'RRR':=T ) [IDRE:=-4,'INT' : 0 : 'AT'IRANG[3--3],] :=('HEAP' 'RRR':=T ) ['INT'(-4),CF 'OF' ISTRUCT : 'AT''INT'(-3),] :=((('HEAP' 'RRR':=T ) [IRANG[3--4],CF 'OF' ISTRUCT : 'AT'IPROC(-30),] :=:'IF'FAUX'THEN''HEAP' 'RRR':=T 'FI' ['LOC''INT':=-4,'LOC''INT':=0 : 'AT'IPROC(-30),] ! 'SKIP'); ('HEAP' 'RRR':=T ) [--4*(-1),IRANG[3-0] : 'AT'IDRE:=-3,] )); TEST('BEGIN'DE'OF'STT'END' [IRANG[3--4],IRANG[3-0] : 'AT''INT'(-3),] :=(1+1-1!DE'OF'STT,'SKIP') [('INT' X:=IPROC(-40);X),IDPRE:=0 : 'AT''INT'(-3),] :=(((VU!('INT'):'SKIP'!DE'OF'STT) [-4,IDRE:=0 : 'AT'IRANG[3--3],] :=:(DE'OF'STT) [-4,-0*(-1) : 'AT''INT' : -3,] ! 'SKIP'); (DE'OF'STT) ['INT'(-4),'LOC''INT':=0 : 'AT''INT'(-3),] )); CTRL(3) ; CTRT:= 9 ; CTRLOC:=CTR ; 'OP' ?==:=('UNION'('INT','BOOL') A,'INT' B)'BOOL':(CTR+:=1)=B, ?==:=('MSTR' A,B)'REF''INT' : CTR+:=1 , ?==:= ('R' A)'PROC''INT':(TEST(A);'INT':CTR+:=1) , ?==:=('R' A,B)'MSTR' : (TEST(A) ; TEST(B) ; 'SKIP') ; TEST( DE'OF' TSTR ['LOC''INT':=-4,0 : 'AT'CC 'OF' ISTRUCT,]) ; ?==:'IF'FAUX'THEN' +0-T 'FI' [--4*(-1),('INT' X:=IPROC(00);X) : 'AT''INT'(-3),] ?==: (T ['INT' : -4,'INT'(0) : 'AT'-3,] ?==: DE'OF' TSTR [CB 'OF' ISTRUCT,0 : 'AT'-3,] ?==:TSTR [--4*(-1),('INT' X:='INT' : 0;X) : 'AT'IDRE:=-3,]) ?==:?==:( +0-T ) ['INT'(-4),IDPRE:=0 : 'AT''INT'(-3),] ; CTRL(10)) ; # INDEXEURS DE LA FORME : UPB @D # (CTRT:= 10 ; CTRLOC:=CTR ; B:= (2,4,-5,-2,-8,3,-4,-5) ; 'MODE' 'R' = [B[1]:B[2],B[3]:B[4]]'U' , 'MSTR' = [B[1]:B[2],B[3]:B[4]]'S' ; 'OP' ?=:==('R' X)'R' : (TEST(X);X) ; TEST('RRR'(T) [ : --2*(-1)@CH 'OF' ISTRUCT,IDPRE:=1,]) ; [4,-1 : 1]'R' ENT ; ENT[1,0]:=ENT[1,1]:= 'BEGIN' +0-T 'END' [ : IDRE:=-2@'INT'(2),'INT' : 1,] ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) ; 'R' ALFA , 'R' PAR = ('SKIP' ;PAVEC(" ") [ : 'LOC''INT':=-2@2,'LOC''INT':=1,] ; (1+1-1!DE'OF'STT,'SKIP') [ : ('INT' X:='INT'(-2);X)@IDPRE:=2,'INT'(1),]) ; TEST(PAR) ; ALFA:=?=:=(VU!('INT'):'SKIP'!'HEAP' 'RRR':=T ) [ : IRANG[3--2]@('INT' X:=IDPRE:=2;X),IDRE:=1,] ; TEST(ALFA) ; 'R' IDENT =('HEAP' 'RRR':=T ) [ : IPROC(-20)@-2*(-1),('INT' X:=IDG;X),] , 'R' LOC:='CASE' 1 'IN' 'RRR'(T) [ : IDRE:=-2@'LOC''INT':=2,IDRE:=1,], 'SKIP' 'ESAC' , TAS:=PAVEC(" ") [ : 'INT' : -2@'INT'(2),('INT' X:='INT'(1);X),] ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : ( +0-T ) [ : IDD@'LOC''INT':=2,IPROC(10),] , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('IF'FAUX'THEN'DE'OF'STT'FI' [ : IRANG[3--2]@'INT' : 2,IDG,],(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, ( +0-T ) [ : IDRE:=-2@2,IPROC(10),],PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;TT[1] [ : 'INT' : -2@'LOC''INT':=2,1,]) ; 'UNION'('REF''R','CHAR') UNION := 'LOC''R' := PR(PROC,'BEGIN''HEAP' 'RRR':=T 'END' [ : --2*(-1)@IDPRE:=2,-1*(-1),],PROC) ; TEST((UNION ! ('REF' 'R' A) : A)) ; (TEST('R''BEGIN''RRR'(T) [ : IDD@IRANG[3-2],('INT' X:=IDG;X),]'END') , ?=:=(UNION;'TRUE' ! TT[1] [ : 'INT'(-2)@2,IDPRE:=1,]) , (1+1-1!DE'OF'STT,'SKIP') [ : IDRE:=-2@-2*(-1),IDG,] , TEST(('BOOL' BOOL='FALSE';UNION ! ('REF''R') : (VU!('INT'):'SKIP'! +0-T ) [ : 'INT'(-2)@'LOC''INT':=2,IRANG[3-1],] , ('CHAR' CAR) : 'SKIP'))) ; CTRL(18) ; CTRT:= 11 ; CTRLOC:=CTR ; TEST(TT[1] [ : IDRE:=-2@IDPRE:=2,'INT'(1),] :=TT[1] [ : IDRE:=-2@'INT'(2),1,] :=((TT[1] [ : 'LOC''INT':=-2@IDRE:=2,IPROC(10),] :=:TT[1] [ : ('INT' X:='INT' : -2;X)@IRANG[3-2],IRANG[3-1],] ! 'SKIP'); TT[1] [ : CD 'OF' ISTRUCT@('INT' X:=2;X),'INT' : 1,] )); TEST(('HEAP' 'RRR':=T ) [ : -2@IPROC(20),1,] :=('HEAP' 'RRR':=T ) [ : CD 'OF' ISTRUCT@IDRE:=2,IPROC(10),] :=(('IF'FAUX'THEN''HEAP' 'RRR':=T 'FI' [ : IRANG[3--2]@IPROC(20),IDPRE:=1,] :=:('HEAP' 'RRR':=T ) [ : 'INT'(-2)@'INT' : 2,('INT' X:='INT'(1);X),] ! 'SKIP'); 'BEGIN''HEAP' 'RRR':=T 'END' [ : --2*(-1)@CH 'OF' ISTRUCT,CG 'OF' ISTRUCT,] )); TEST((1+1-1!DE'OF'STT,'SKIP') [ : 'INT' : -2@'INT' : 2,('INT' X:=CG 'OF' ISTRUCT;X),] :=(VU!('INT'):'SKIP'!DE'OF'STT) [ : 'LOC''INT':=-2@IDH,('INT' X:=IPROC(10);X),] :=(((DE'OF'STT) [ : IDD@IDH,IDG,] :=:(DE'OF'STT) [ : -2@IPROC(20),-1*(-1),] ! 'SKIP'); 'IF'FAUX'THEN'DE'OF'STT'FI' [ : CD 'OF' ISTRUCT@'INT'(2),IPROC(10),] )); CTRL(3) ; CTRT:= 12 ; CTRLOC:=CTR ; 'OP' ?==:=('UNION'('INT','BOOL') A,'INT' B)'BOOL':(CTR+:=1)=B, ?==:=('MSTR' A,B)'REF''INT' : CTR+:=1 , ?==:= ('R' A)'PROC''INT':(TEST(A);'INT':CTR+:=1) , ?==:=('R' A,B)'MSTR' : (TEST(A) ; TEST(B) ; 'SKIP') ; TEST( DE'OF' TSTR [ : 'INT' : -2@IDRE:=2,('INT' X:=IPROC(10);X),]) ; ?==:( +0-T ) [ : IDRE:=-2@CH 'OF' ISTRUCT,'INT'(1),] ?==: ('BEGIN'DE'OF'STT'END' [ : 'INT'(-2)@'LOC''INT':=2,('INT' X:=CG 'OF' ISTRUCT;X),] ?==: DE'OF' TSTR [ : 'INT' : -2@2,IRANG[3-1],] ?==:TSTR [ : IRANG[3--2]@IRANG[3-2],CG 'OF' ISTRUCT,]) ?==:?==:(1+1-1! +0-T ,'SKIP') [ : --2*(-1)@IRANG[3-2],IPROC(10),] ; CTRL(10)) ; # INDEXEURS DE LA FORME LWB : UPB @D # (CTRT:= 13 ; CTRLOC:=CTR ; B:= (-4,0,1,3,-6,1,-4,-2) ; 'MODE' 'R' = [B[1]:B[2],B[3]:B[4]]'U' , 'MSTR' = [B[1]:B[2],B[3]:B[4]]'S' ; 'OP' ?=:==('R' X)'R' : (TEST(X);X) ; TEST((VU!('INT'):'SKIP'! +0-T ) [,IRANG[3-0] : IDH'AT'IDG,IDD]) ; [4,-1 : 1]'R' ENT ; ENT[1,0]:=ENT[1,1]:= TT[1] [,CF 'OF' ISTRUCT : IDPRE:=2'AT'1,-2] ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) ; 'R' ALFA , 'R' PAR = ('SKIP' ;PAVEC(" ") [,IRANG[3-0] : IDRE:=2'AT''INT' : 1,IDRE:=-2] ; ( 'RRR' : T ) [,'INT'(0) : IRANG[3-2]'AT'1,IPROC(-20)]) ; TEST(PAR) ; ALFA:=?=:=PAVEC(" ") [,'INT'(0) : 'LOC''INT':=2'AT'IDPRE:=1,--2*(-1)] ; TEST(ALFA) ; 'R' IDENT =('HEAP' 'RRR':=T ) [,0 : CH 'OF' ISTRUCT'AT'IRANG[3-1],CD 'OF' ISTRUCT] , 'R' LOC:='CASE' 1 'IN' PAVEC(" ") [,'LOC''INT':=0 : 'INT' : 2'AT''LOC''INT':=1,IPROC(-20)] , 'SKIP' 'ESAC' , TAS:='IF'FAUX'THEN' 'RRR' : T 'FI' [,-0*(-1) : 'LOC''INT':=2'AT'-1*(-1),IDRE:=-2] ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'RRR'(T) [,IDF : 'INT'(2)'AT'IDPRE:=1,--2*(-1)] , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),(T [,IPROC(00) : 'INT' : 2'AT'CG 'OF' ISTRUCT,-2],(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, PAVEC(" ") [,IDPRE:=0 : IRANG[3-2]'AT'IDPRE:=1,CD 'OF' ISTRUCT] ,PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;PAVEC(" ") [,('INT' X:=IDPRE:=0;X) : IDRE:=2'AT'IPROC(10),--2*(-1)]) ; 'UNION'('REF''R','CHAR') UNION := 'LOC''R' := PR(PROC,('HEAP' 'RRR':=T ) [,IDPRE:=0 : 'LOC''INT':=2'AT'CG 'OF' ISTRUCT,'LOC''INT':=-2],PROC) ; TEST((UNION ! ('REF' 'R' A) : A)) ; (TEST('R''BEGIN''RRR'(T) [,-0*(-1) : ('INT' X:='LOC''INT':=2;X)'AT''LOC''INT':=1,'LOC''INT':=-2 ]'END') , ?=:=(UNION;'TRUE' ! T [,'LOC''INT':=0 : ('INT' X:='LOC''INT':=2;X)'AT'IDG,-2]) , 'BEGIN'DE'OF'STT'END' [,('INT' X:=CF 'OF' ISTRUCT;X) : ('INT' X:=IDRE:=2;X)'AT''INT'(1), 'LOC''INT':=-2] , TEST(('BOOL' BOOL='FALSE';UNION ! ('REF''R') : T [,CF 'OF' ISTRUCT : -2*(-1)'AT'IPROC(10),IDRE:=-2] , ('CHAR' CAR) : 'SKIP'))) ; CTRL(18) ; CTRT:= 14 ; CTRLOC:=CTR ; TEST(TT[1] [,IRANG[3-0] : ('INT' X:=IPROC(20);X)'AT'('INT' X:=IDRE:=1;X), IRANG[3--2]] :=TT[1] [,IDF : IPROC(20)'AT'IDRE:=1,IDD] :=((TT[1] [,IDF : IDPRE:=2'AT'IDG,IDD] :=:TT[1] [,CF 'OF' ISTRUCT : 2'AT'IDRE:=1,--2*(-1)] ! 'SKIP'); TT[1] [,'INT' : 0 : IDPRE:=2'AT'CG 'OF' ISTRUCT,CD 'OF' ISTRUCT] )); TEST((1+1-1!'HEAP' 'RRR':=T ,'SKIP') [,IRANG[3-0] : IDH'AT'-1*(-1),-2] :=(VU!('INT'):'SKIP'!'HEAP' 'RRR':=T ) [,CF 'OF' ISTRUCT : 'INT' : 2'AT'IRANG[3-1],IRANG[3--2]] :=((('HEAP' 'RRR':=T ) [,-0*(-1) : 2'AT'IDPRE:=1,IDD] :=:('HEAP' 'RRR':=T ) [,0 : 'INT'(2)'AT'IPROC(10),'LOC''INT':=-2] ! 'SKIP'); 'IF'FAUX'THEN''HEAP' 'RRR':=T 'FI' [,'LOC''INT':=0 : 'INT' : 2'AT'1,IPROC(-20)] )); TEST((DE'OF'STT) [,'INT' : 0 : CH 'OF' ISTRUCT'AT''LOC''INT':=1,CD 'OF' ISTRUCT] :='BEGIN'DE'OF'STT'END' [,IDPRE:=0 : 'INT'(2)'AT'IDRE:=1,IPROC(-20)] :=(((1+1-1!DE'OF'STT,'SKIP') [,'LOC''INT':=0 : ('INT' X:=IDPRE:=2;X)'AT'IDRE:=1,IDRE:=-2] :=:(VU!('INT'):'SKIP'!DE'OF'STT) [,IRANG[3-0] : IDRE:=2'AT'1,IDD] ! 'SKIP'); (DE'OF'STT) [,'LOC''INT':=0 : CH 'OF' ISTRUCT'AT'IDRE:=1,IPROC(-20)] )); CTRL(3) ; CTRT:= 15 ; CTRLOC:=CTR ; 'OP' ?==:=('UNION'('INT','BOOL') A,'INT' B)'BOOL':(CTR+:=1)=B, ?==:=('MSTR' A,B)'REF''INT' : CTR+:=1 , ?==:= ('R' A)'PROC''INT':(TEST(A);'INT':CTR+:=1) , ?==:=('R' A,B)'MSTR' : (TEST(A) ; TEST(B) ; 'SKIP') ; TEST( DE'OF' TSTR [,IDRE:=0 : IDRE:=2'AT'IDPRE:=1,'INT'(-2)]) ; ?==:('HEAP' 'RRR':=T ) [,IRANG[3-0] : IDRE:=2'AT'CG 'OF' ISTRUCT,'LOC''INT':=-2] ?==: ('IF'FAUX'THEN'DE'OF'STT'FI' [,'INT' : 0 : 2'AT'IDRE:=1,('INT' X:='INT' : -2;X)] ?==: DE'OF' TSTR [,CF 'OF' ISTRUCT : CH 'OF' ISTRUCT'AT'IRANG[3-1 ],IPROC(-20)] ?==:TSTR [,IPROC(00) : IPROC(20)'AT''INT' : 1,IRANG[3--2]]) ?==:?==:PAVEC(" ") [,IRANG[3-0] : ('INT' X:='INT' : 2;X)'AT''INT'(1),IRANG[3--2]] ; CTRL(10)) ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R541A # (PRINT(("ROUTINE TEXTS WITHOUT PARAMETERS",NEWLINE)) ; 'INT' VF = 47*10+45 ; 'INT' CTR:=0 , CTRT:=0 , CTRLOC ; 'PROC' CTRL = ('INT' INC)'VOID' : (CTR/=CTRLOC+INC ! PRINT(("COUNT ER IN TEST",CTRT,CTR,CTRLOC+INC,NEWLINE))); # SERVITUDES POUR LES CORPS DE ROUTINES # 'OP' 'MON' = ('REAL' A)'REAL' : (CTR+:=1 ; PI) , ==('BOOL' A,'INT' B)'INT' : (A!B! CTR-:=1) , 'UNION'('INT','BOOL') VU , 'MODE' 'STRA' = 'STRUCT'('INT' DE,'REF''INT' OF) , [,]'INT' TA = 1 , 'PROC' PRA = ('UNION'('INT','BOOL') A)'INT' : (A!('INT' X) : (CTR+:=1;X)) , 'INT' IDA = 1 ; 'MODE' 'STRB' = 'STRUCT'('BOOL' DE,'REF''INT' OF) , [,]'BOOL' TB = 'TRUE' , 'PROC' PRB = ('UNION'('INT','BOOL') A)'BOOL' : (A!('BOOL' X) : (CTR+:=1;X)) , 'BOOL' IDB = 'TRUE' ; # MODE RENDU : 'PROC''INT' # ( 'MODE' 'R' = 'PROC''INT' ; 'PROC' TEST = ('R' PROC)'VOID' : 'IF' PROC=1 'THEN' CTR+:=1 'ELSE' PRINT(("ER",CTRT,CTR-CTRLOC,NEWLINE)) 'FI' ; 'OP' ?=:==('R' X)'R' : (TEST(X) ; X) ; (CTRT:= 1 ; CTRLOC:=CTR ; TEST('INT' : 'LOC''INT':=(CTR+:=1 ;1)) ; 'FOR' IDENT 'FROM' 'INT' : 'LOC''INT':=(CTR+:=1 ;1) 'BY' 'INT' : 'LOC''INT':=(CTR+:=1 ;1) 'TO' 'INT' : 'LOC''INT':=(CTR+:=1 ;1) 'WHILE' 'BOOL' : 'LOC''BOOL':=(CTR+:=1 ;'TRUE') 'DO' ['INT' : 'LOC''INT':=(CTR+:=1 ;1) : 4 , -1 : 'INT' : 'LOC''INT':=(CTR+:=1 ;1)] 'R' ENT ; ENT['INT' : 'LOC''INT':=(CTR+:=1 ;1) , 0] := ENT[1,'INT' : 'LOC''INT':=(CTR+:=1 ;1)]:= 'INT' : 'LOC''INT':=(CTR+:=1 ;1) ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'INT' : 'LOC''INT':=(CTR+:=1 ;1) ; 'REAL' E = .12345 ;'INT' : 'LOC''INT':=(CTR+:=1 ;1)) ; TEST(PAR) ; ALFA:=?=:=('INT' : 'LOC''INT':=(CTR+:=1 ;1)) ; 'R' IDENT = 'INT' : 'LOC''INT':=(CTR+:=1 ;1) , 'R' LOC:='CASE''INT' : 'LOC''INT':=(CTR+:=1 ;1)'IN' 'INT' : 'LOC''INT':=(CTR+:=1 ;1), 'SKIP' 'ESAC' , TAS:='INT' : 'LOC''INT':=(CTR+:=1 ;1) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'INT' : 'LOC''INT':=(CTR+:=1 ;1) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('INT' : 'LOC''INT':=(CTR+:=1 ;1),(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'INT' : 'LOC''INT':=(CTR+:=1 ;1) ,PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;'INT' : 'LOC''INT':=(CTR+:=1 ;1)) ; 'UNION'('R','CHAR') UNION:=PR(PROC, 'INT' : 'LOC''INT':=(CTR+:=1 ;1),PROC) ; TEST((UNION ! ('R' A) : A )) ; (TEST('R''BEGIN''INT' : 'LOC''INT':=(CTR+:=1 ;1)'END') , ?=:=(UNION ;'BOOL' : 'LOC''BOOL':=(CTR+:=1 ;'TRUE') ! 'INT' : 'LOC''INT' :=(CTR+:=1 ;1)) , 'INT' : 'LOC''INT':=(CTR+:=1 ;1) , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'INT' : 'LOC''INT':=(CTR+:=1 ;1) , ('CHAR' CAR) : 'SKIP'))) ; CTRL( 47)) ; (CTRT:= 2 ; CTRLOC:=CTR ; TEST('INT' : 'INT' : (CTR+:=1 ; 1)) ; 'FOR' IDENT 'FROM' 'INT' : 'INT' : (CTR+:=1 ; 1) 'BY' 'INT' : 'INT' : (CTR+:=1 ; 1) 'TO' 'INT' : 'INT' : (CTR+:=1 ; 1) 'WHILE' 'BOOL' : 'BOOL' : (CTR+:=1 ; 'TRUE') 'DO' ['INT' : 'INT' : (CTR+:=1 ; 1) : 4 , -1 : 'INT' : 'INT' : (CTR+:=1 ; 1)] 'R' ENT ; ENT['INT' : 'INT' : (CTR+:=1 ; 1) , 0] := ENT[1,'INT' : 'INT' : (CTR+:=1 ; 1)]:= 'INT' : 'INT' : (CTR+:=1 ; 1) ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'INT' : 'INT' : (CTR+:=1 ; 1) ; 'REAL' E = .12345 ;'INT' : 'INT' : (CTR+:=1 ; 1)) ; TEST(PAR) ; ALFA:=?=:=('INT' : 'INT' : (CTR+:=1 ; 1)) ; 'R' IDENT = 'INT' : 'INT' : (CTR+:=1 ; 1) , 'R' LOC:='CASE''INT' : 'INT' : (CTR+:=1 ; 1)'IN' 'INT' : 'INT' : (CTR+:=1 ; 1), 'SKIP' 'ESAC' , TAS:='INT' : 'INT' : (CTR+:=1 ; 1) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'INT' : 'INT' : (CTR+:=1 ; 1) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('INT' : 'INT' : (CTR+:=1 ; 1),(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'INT' : 'INT' : (CTR+:=1 ; 1) ,PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;'INT' : 'INT' : (CTR+:=1 ; 1)) ; 'UNION'('R','CHAR') UNION:=PR(PROC, 'INT' : 'INT' : (CTR+:=1 ; 1),PROC) ; TEST((UNION ! ('R' A) : A )) ; (TEST('R''BEGIN''INT' : 'INT' : (CTR+:=1 ; 1)'END') , ?=:=(UNION ;'BOOL' : 'BOOL' : (CTR+:=1 ; 'TRUE') ! 'INT' : 'INT' : (CTR+:=1 ; 1)) , 'INT' : 'INT' : (CTR+:=1 ; 1) , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'INT' : 'INT' : (CTR+:=1 ; 1) , ('CHAR' CAR) : 'SKIP'))) ; CTRL( 47)) ; (CTRT:= 3 ; CTRLOC:=CTR ; TEST('INT' : PI = 'MON'.5 = 1) ; 'FOR' IDENT 'FROM' 'INT' : PI = 'MON'.5 = 1 'BY' 'INT' : PI = 'MON'.5 = 1 'TO' 'INT' : PI = 'MON'.5 = 1 'WHILE' 'BOOL' : PI = 'MON'.5 = 'TRUE' 'DO' ['INT' : PI = 'MON'.5 = 1 : 4 , -1 : 'INT' : PI = 'MON'.5 = 1] 'R' ENT ; ENT['INT' : PI = 'MON'.5 = 1 , 0] := ENT[1,'INT' : PI = 'MON'.5 = 1]:= 'INT' : PI = 'MON'.5 = 1 ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'INT' : PI = 'MON'.5 = 1 ; 'REAL' E = .12345 ;'INT' : PI = 'MON'.5 = 1) ; TEST(PAR) ; ALFA:=?=:=('INT' : PI = 'MON'.5 = 1) ; 'R' IDENT = 'INT' : PI = 'MON'.5 = 1 , 'R' LOC:='CASE''INT' : PI = 'MON'.5 = 1'IN' 'INT' : PI = 'MON'.5 = 1, 'SKIP' 'ESAC' , TAS:='INT' : PI = 'MON'.5 = 1 ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'INT' : PI = 'MON'.5 = 1 , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('INT' : PI = 'MON'.5 = 1,(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'INT' : PI = 'MON'.5 = 1 ,PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;'INT' : PI = 'MON'.5 = 1) ; 'UNION'('R','CHAR') UNION:=PR(PROC, 'INT' : PI = 'MON'.5 = 1,PROC) ; TEST((UNION ! ('R' A) : A )) ; (TEST('R''BEGIN''INT' : PI = 'MON'.5 = 1'END') , ?=:=(UNION ;'BOOL' : PI = 'MON'.5 = 'TRUE' ! 'INT' : PI = 'MON'.5 = 1) , 'INT' : PI = 'MON'.5 = 1 , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'INT' : PI = 'MON'.5 = 1 , ('CHAR' CAR) : 'SKIP'))) ; CTRL( 47)) ; (CTRT:= 4 ; CTRLOC:=CTR ; TEST('INT' : DE'OF''STRA'(1 , CTR+:=1)) ; 'FOR' IDENT 'FROM' 'INT' : DE'OF''STRA'(1 , CTR+:=1) 'BY' 'INT' : DE'OF''STRA'(1 , CTR+:=1) 'TO' 'INT' : DE'OF''STRA'(1 , CTR+:=1) 'WHILE' 'BOOL' : DE'OF''STRB'('TRUE' , CTR+:=1) 'DO' ['INT' : DE'OF''STRA'(1 , CTR+:=1) : 4 , -1 : 'INT' : DE'OF''STRA'(1 , CTR+:=1)] 'R' ENT ; ENT['INT' : DE'OF''STRA'(1 , CTR+:=1) , 0] := ENT[1,'INT' : DE'OF''STRA'(1 , CTR+:=1)]:= 'INT' : DE'OF''STRA'(1 , CTR+:=1) ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'INT' : DE'OF''STRA'(1 , CTR+:=1) ; 'REAL' E = .12345 ;'INT' : DE'OF''STRA'(1 , CTR+:=1)) ; TEST(PAR) ; ALFA:=?=:=('INT' : DE'OF''STRA'(1 , CTR+:=1)) ; 'R' IDENT = 'INT' : DE'OF''STRA'(1 , CTR+:=1) , 'R' LOC:='CASE''INT' : DE'OF''STRA'(1 , CTR+:=1)'IN' 'INT' : DE'OF''STRA'(1 , CTR+:=1), 'SKIP' 'ESAC' , TAS:='INT' : DE'OF''STRA'(1 , CTR+:=1) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'INT' : DE'OF''STRA'(1 , CTR+:=1) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('INT' : DE'OF''STRA'(1 , CTR+:=1),(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'INT' : DE'OF''STRA'(1 , CTR+:=1) ,PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;'INT' : DE'OF''STRA'(1 , CTR+:=1)) ; 'UNION'('R','CHAR') UNION:=PR(PROC, 'INT' : DE'OF''STRA'(1 , CTR+:=1),PROC) ; TEST((UNION ! ('R' A) : A )) ; (TEST('R''BEGIN''INT' : DE'OF''STRA'(1 , CTR+:=1)'END') , ?=:=(UNION ; 'BOOL' : DE'OF''STRB'('TRUE' , CTR+:=1) ! 'INT' : DE'OF''STRA'(1 , CTR+:=1)) , 'INT' : DE'OF''STRA'(1 , CTR+:=1) , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'INT' : DE'OF''STRA'(1 , CTR+:=1) , ('CHAR' CAR) : 'SKIP'))) ; CTRL( 47)) ; (CTRT:= 5 ; CTRLOC:=CTR ; TEST('INT' : TA[IDA,(CTR+:=1;1)]) ; 'FOR' IDENT 'FROM' 'INT' : TA[IDA,(CTR+:=1;1)] 'BY' 'INT' : TA[IDA,(CTR+:=1;1)] 'TO' 'INT' : TA[IDA,(CTR+:=1;1)] 'WHILE' 'BOOL' : TB[IDA,(CTR+:=1;1)] 'DO' ['INT' : TA[IDA,(CTR+:=1;1)] : 4 , -1 : 'INT' : TA[IDA,(CTR+:=1;1)]] 'R' ENT ; ENT['INT' : TA[IDA,(CTR+:=1;1)] , 0] := ENT[1,'INT' : TA[IDA,(CTR+:=1;1)]]:= 'INT' : TA[IDA,(CTR+:=1;1)] ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'INT' : TA[IDA,(CTR+:=1;1)] ; 'REAL' E = .12345 ;'INT' : TA[IDA,(CTR+:=1;1)]) ; TEST(PAR) ; ALFA:=?=:=('INT' : TA[IDA,(CTR+:=1;1)]) ; 'R' IDENT = 'INT' : TA[IDA,(CTR+:=1;1)] , 'R' LOC:='CASE''INT' : TA[IDA,(CTR+:=1;1)]'IN' 'INT' : TA[IDA,(CTR+:=1;1)], 'SKIP' 'ESAC' , TAS:='INT' : TA[IDA,(CTR+:=1;1)] ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'INT' : TA[IDA,(CTR+:=1;1)] , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('INT' : TA[IDA,(CTR+:=1;1)],(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'INT' : TA[IDA,(CTR+:=1;1)] ,PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;'INT' : TA[IDA,(CTR+:=1;1)]) ; 'UNION'('R','CHAR') UNION:=PR(PROC, 'INT' : TA[IDA,(CTR+:=1;1)],PROC) ; TEST((UNION ! ('R' A) : A )) ; (TEST('R''BEGIN''INT' : TA[IDA,(CTR+:=1;1)]'END') , ?=:=(UNION ;'BOOL' : TB[IDA,(CTR+:=1;1)] ! 'INT' : TA [IDA,(CTR+:=1;1)]) , 'INT' : TA[IDA,(CTR+:=1;1)] , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'INT' : TA[IDA,(CTR+:=1;1)] , ('CHAR' CAR) : 'SKIP'))) ; CTRL( 47)) ; (CTRT:= 6 ; CTRLOC:=CTR ; TEST('INT' : PRA(1)) ; 'FOR' IDENT 'FROM' 'INT' : PRA(1) 'BY' 'INT' : PRA(1) 'TO' 'INT' : PRA(1) 'WHILE' 'BOOL' : PRB('TRUE') 'DO' ['INT' : PRA(1) : 4 , -1 : 'INT' : PRA(1)] 'R' ENT ; ENT['INT' : PRA(1) , 0] := ENT[1,'INT' : PRA(1)]:= 'INT' : PRA(1) ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'INT' : PRA(1) ; 'REAL' E = .12345 ;'INT' : PRA(1)) ; TEST(PAR) ; ALFA:=?=:=('INT' : PRA(1)) ; 'R' IDENT = 'INT' : PRA(1) , 'R' LOC:='CASE''INT' : PRA(1)'IN' 'INT' : PRA(1), 'SKIP' 'ESAC' , TAS:='INT' : PRA(1) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'INT' : PRA(1) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('INT' : PRA(1),(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'INT' : PRA(1) ,PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;'INT' : PRA(1)) ; 'UNION'('R','CHAR') UNION:=PR(PROC, 'INT' : PRA(1),PROC) ; TEST((UNION ! ('R' A) : A )) ; (TEST('R''BEGIN''INT' : PRA(1)'END') , ?=:=(UNION ;'BOOL' : PRB('TRUE') ! 'INT' : PRA(1)) , 'INT' : PRA(1) , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'INT' : PRA(1) , ('CHAR' CAR) : 'SKIP'))) ; CTRL( 47)) ; (CTRT:= 7 ; CTRLOC:=CTR ; TEST('INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')) ; 'FOR' IDENT 'FROM' 'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') 'BY' 'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') 'TO' 'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') 'WHILE' 'BOOL' : 'BOOL'(CTR+:=1;IDA ! 'TRUE' , 'SKIP') 'DO' ['INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') : 4 , -1 : 'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')] 'R' ENT ; ENT['INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') , 0] := ENT[1,'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')]:= 'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') ; 'REAL' E = .12345 ;'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')) ; TEST(PAR) ; ALFA:=?=:=('INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')) ; 'R' IDENT = 'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') , 'R' LOC:='CASE''INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')'IN' 'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP'), 'SKIP' 'ESAC' , TAS:='INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP'),(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') ,PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')) ; 'UNION'('R','CHAR') UNION:=PR(PROC, 'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP'),PROC) ; TEST((UNION ! ('R' A) : A )) ; (TEST('R''BEGIN''INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')'END') , ?=:=(UNION ;'BOOL' : 'BOOL'(CTR+:=1;IDA ! 'TRUE' , 'SKIP') ! 'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')) , 'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') , ('CHAR' CAR) : 'SKIP'))) ; CTRL( 47)) ; (CTRT:= 8 ; CTRLOC:=CTR ; TEST('INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END') ; 'FOR' IDENT 'FROM' 'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' 'BY' 'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' 'TO' 'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' 'WHILE' 'BOOL' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 'TRUE''EXIT' F:'SKIP''END' 'DO' ['INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' : 4 , -1 : 'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END'] 'R' ENT ; ENT['INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' , 0] := ENT[1,'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END']:= 'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' ; 'REAL' E = .12345 ;'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END') ; TEST(PAR) ; ALFA:=?=:=('INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END') ; 'R' IDENT = 'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' , 'R' LOC:='CASE''INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END''IN' 'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END', 'SKIP' 'ESAC' , TAS:='INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END',(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' ,PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END') ; 'UNION'('R','CHAR') UNION:=PR(PROC, 'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END',PROC) ; TEST((UNION ! ('R' A) : A )) ; (TEST('R''BEGIN''INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END''END') , ?=:=(UNION ;'BOOL' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 'TRUE''EXIT' F:'SKIP''END' ! 'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END') , 'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' , ('CHAR' CAR) : 'SKIP'))) ; CTRL( 47)) ; (CTRT:= 9 ; CTRLOC:=CTR ; TEST('INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA)) ; 'FOR' IDENT 'FROM' 'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) 'BY' 'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) 'TO' 'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) 'WHILE' 'BOOL' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDB) 'DO' ['INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) : 4 , -1 : 'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA)] 'R' ENT ; ENT['INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) , 0] := ENT[1,'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA)]:= 'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA ) ; 'REAL' E = .12345 ;'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA)) ; TEST(PAR) ; ALFA:=?=:=('INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA)) ; 'R' IDENT = 'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) , 'R' LOC:='CASE''INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA)'IN' 'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA), 'SKIP' 'ESAC' , TAS:='INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA),(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) ,PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA)) ; 'UNION'('R','CHAR') UNION:=PR(PROC, 'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA),PROC) ; TEST((UNION ! ('R' A) : A )) ; (TEST('R''BEGIN''INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA)'END') , ?=:=(UNION ;'BOOL' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDB) ! 'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA)) , 'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) , ('CHAR' CAR) : 'SKIP'))) ; CTRL( 47)) ; (CTRT:= 10 ; CTRLOC:=CTR ; TEST('INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC') ; 'FOR' IDENT 'FROM' 'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' 'BY' 'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' 'TO' 'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' 'WHILE' 'BOOL' : 'CASE' VU:=(CTR+:=1;'TRUE')'IN' ('BOOL' X) : X 'ESAC' 'DO' ['INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' : 4 , -1 : 'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC'] 'R' ENT ; ENT['INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' , 0] := ENT[1,'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC']:= 'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' ; 'REAL' E = .12345 ;'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC') ; TEST(PAR) ; ALFA:=?=:=('INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC') ; 'R' IDENT = 'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' , 'R' LOC:='CASE''INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC''IN' 'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC', 'SKIP' 'ESAC' , TAS:='INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC',(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' ,PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC') ; 'UNION'('R','CHAR') UNION:=PR(PROC, 'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC',PROC) ; TEST((UNION ! ('R' A) : A )) ; (TEST('R''BEGIN''INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC''END') , ?=:=(UNION ;'BOOL' : 'CASE' VU:=(CTR+:=1;'TRUE')'IN' ('BOOL' X) : X 'ESAC' ! 'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC') , 'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' , ('CHAR' CAR) : 'SKIP'))) ; CTRL( 47)) ; 'SKIP') ; # MODE RENDU : 'INT' # ( 'MODE' 'R' = 'INT' ; 'PROC' TEST = ('R' PROC)'VOID' : 'IF' PROC=1 'THEN' CTR+:=1 'ELSE' PRINT(("ER",CTRT,CTR-CTRLOC,NEWLINE)) 'FI' ; 'OP' ?=:==('R' X)'R' : (TEST(X) ; X) ; (CTRT:= 11 ; CTRLOC:=CTR ; TEST('INT' : 'LOC''INT':=(CTR+:=1 ;1)) ; 'FOR' IDENT 'FROM' 'INT' : 'INT' : (CTR+:=1 ; 1) 'BY' 'INT' : PRA(1) 'TO' 'INT' : TA[IDA,(CTR+:=1;1)] 'WHILE' 'BOOL' : TB[IDA,(CTR+:=1;1)] 'DO' ['INT' : DE'OF''STRA'(1 , CTR+:=1) : 4 , -1 : 'INT' : 'LOC''INT':=(CTR+:=1 ;1)] 'R' ENT ; ENT['INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' , 0] := ENT[1,'INT' : 'INT' : (CTR+:=1 ; 1)]:= 'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'INT' : 'LOC''INT':=(CTR+:=1 ;1) ; 'REAL' E = .12345 ;'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')) ; TEST(PAR) ; ALFA:=?=:=('INT' : 'INT' : (CTR+:=1 ; 1)) ; 'R' IDENT = 'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') , 'R' LOC:='CASE''INT' : DE'OF''STRA'(1 , CTR+:=1)'IN' 'INT' : TA[IDA,(CTR+:=1;1)], 'SKIP' 'ESAC' , TAS:='INT' : PRA(1) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'INT' : 'INT' : (CTR+:=1 ; 1) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END',(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) ,PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')) ; 'UNION'('R','CHAR') UNION:=PR(PROC, 'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP'),PROC) ; TEST((UNION ! ('R' A) : A )) ; (TEST('R''BEGIN''INT' : PRA(1)'END') , ?=:=(UNION ;'BOOL' : PRB('TRUE') ! 'INT' : PRA(1)) , 'INT' : DE'OF''STRA'(1 , CTR+:=1) , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'INT' : DE'OF''STRA'(1 , CTR+:=1) , ('CHAR' CAR) : 'SKIP'))) ; CTRL( 45)) ; 'SKIP') ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R541B # (PRINT(("ROUTINE TEXTS WITH PARAMETERS",NEWLINE)) ; 'INT' VF = 44*10+3 ; 'INT' CTR:=0 , CTRT:=0 , CTRLOC ; 'PROC' CTRL = ('INT' INC)'VOID' : (CTR/=CTRLOC+INC ! PRINT(("COUNT ER IN TEST",CTRT,CTR,CTRLOC+INC,NEWLINE))); 'MODE' 'MU' = 'UNION'('STRING','CHAR') ; # SERVITUDES POUR LES CORPS DE ROUTINES # 'OP' 'MON' = ('REAL' A)'REAL' : (CTR+:=1 ; PI) , ==('BOOL' A,'INT' B)'INT' : (A!B! CTR-:=1) , 'UNION'('INT','BOOL') VU , 'MODE' 'STRA' = 'STRUCT'('INT' DE,'REF''INT' OF) , [,]'INT' TA = 1 , 'PROC' PRA = ('UNION'('INT','BOOL') A)'INT' : (A!('INT' X) : (CTR+:=1;X)) , 'INT' IDA = 1 ; 'MODE' 'STRB' = 'STRUCT'('BOOL' DE,'REF''INT' OF) , [,]'BOOL' TB = 'TRUE' , 'PROC' PRB = ('UNION'('INT','BOOL') A)'BOOL' : (A!('BOOL' X) : (CTR+:=1;X)) , 'BOOL' IDB = 'TRUE' ; # MODE RENDU : 'PROC'('INT','MU','MU')'INT' # ( 'MODE' 'R' = 'PROC'('INT','MU','MU')'INT' ; 'PROC' TEST = ('R' PROC)'VOID' : 'IF' PROC(1,""," ")=1 'THEN' CTR+:=1 'ELSE' PRINT(("ER",CTRT,CTR-CTRLOC,NEWLINE)) 'FI' ; 'OP' ?=:==('R' X)'R' : (TEST(X) ; X) ; (CTRT:= 1 ; CTRLOC:=CTR ; TEST(('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1)) ; 'FOR' IDENT 'FROM' (('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1) ) (1,""," ") 'BY' (('INT' IDA,'MU' B,C)'INT' : PRA(1) ) (1,""," ") 'TO' (('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)] ) (1,""," ") 'WHILE' (('INT' IDA,'MU' B,C)'BOOL' : TB[IDA,(CTR+:=1;1)] ) (1,""," ") 'DO' [(('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1) ) (1,""," ") : 4 , -1 : (('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1) ) (1,""," ") ] 'R' ENT ; ENT[(('INT' IDA,'MU' B,C)'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' ) (1,""," ") , 0] := ENT[1,(('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1) ) (1,""," ") ]:= ('INT' IDA,'MU' B,C)'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1) ; 'REAL' E = .12345 ;('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')) ; TEST(PAR) ; ALFA:=?=:=(('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1)) ; 'R' IDENT = ('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') , 'R' LOC:='CASE'(('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1) ) (1,""," ") 'IN' ('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)], 'SKIP' 'ESAC' , TAS:=('INT' IDA,'MU' B,C)'INT' : PRA(1) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : ('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),(('INT' IDA,'MU' B,C)'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END',(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, ('INT' IDA,'MU' B,C)'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) ,PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')) ; 'UNION'('R','CHAR') UNION:=PR(PROC, ('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP'),PROC) ; TEST((UNION ! ('R' A) : A )) ; (TEST('R''BEGIN'('INT' IDA,'MU' B,C)'INT' : PRA(1)'END') , ?=:=(UNION ;(('INT' IDA,'MU' B,C)'BOOL' : PRB('TRUE') ) (1,""," ") ! ('INT' IDA,'MU' B,C)'INT' : PRA(1)) , ('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1) , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : ('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1) , ('CHAR' CAR) : 'SKIP'))) ; CTRL(44)) ; (CTRT:= 2 ; CTRLOC:=CTR ; TEST(('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1) ; 'FOR' IDENT 'FROM' (('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') ) (1,""," ") 'BY' (('INT' IDA,'MU' B,C)'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' ) (1,""," ") 'TO' (('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1) ) (1,""," ") 'WHILE' (('INT' IDA,'MU' B,C)'BOOL' : TB[IDA,(CTR+:=1;1)] ) (1,""," ") 'DO' [(('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') ) (1,""," ") : 4 , -1 : (('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') ) (1,""," ") ] 'R' ENT ; ENT[(('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1) ) (1,""," ") , 0] := ENT[1,(('INT' IDA,'MU' B,C)'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) ) (1,""," ") ]:= ('INT' IDA,'MU' B,C)'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)] ; 'REAL' E = .12345 ;('INT' IDA,'MU' B,C)'INT' : PRA(1)) ; TEST(PAR) ; ALFA:=?=:=(('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1)) ; 'R' IDENT = ('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') , 'R' LOC:='CASE'(('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)] ) (1,""," ") 'IN' ('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1), 'SKIP' 'ESAC' , TAS:=('INT' IDA,'MU' B,C)'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : ('INT' IDA,'MU' B,C)'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),(('INT' IDA,'MU' B,C)'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA),(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, ('INT' IDA,'MU' B,C)'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) ,PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1) ; 'UNION'('R','CHAR') UNION:=PR(PROC, ('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP'),PROC) ; TEST((UNION ! ('R' A) : A )) ; (TEST('R''BEGIN'('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')'END') , ?=:=(UNION ;(('INT' IDA,'MU' B,C)'BOOL' : 'BOOL'(CTR+:=1;IDA ! 'TRUE' , 'SKIP') ) (1,""," ") ! ('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')) , ('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)] , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : ('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)] , ('CHAR' CAR) : 'SKIP'))) ; CTRL(44)) ; (CTRT:= 3 ; CTRLOC:=CTR ; TEST(('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1) ; 'FOR' IDENT 'FROM' (('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 ) (1,""," ") 'BY' (('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)] ) (1,""," ") 'TO' (('INT' IDA,'MU' B,C)'INT' : PRA(1) ) (1,""," ") 'WHILE' (('INT' IDA,'MU' B,C)'BOOL' : DE'OF''STRB'('TRUE' , CTR+:=1) ) (1,""," ") 'DO' [(('INT' IDA,'MU' B,C)'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' ) (1,""," ") : 4 , -1 : (('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)] ) (1,""," ") ] 'R' ENT ; ENT[(('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1) ) (1,""," ") , 0] := ENT[1,(('INT' IDA,'MU' B,C)'INT' : PRA(1) ) (1,""," ") ]:= ('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1) ; 'REAL' E = .12345 ;('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')) ; TEST(PAR) ; ALFA:=?=:=(('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)]) ; 'R' IDENT = ('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)] , 'R' LOC:='CASE'(('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1) ) (1,""," ") 'IN' ('INT' IDA,'MU' B,C)'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA), 'SKIP' 'ESAC' , TAS:=('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : ('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),(('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1,(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, ('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 ,PROC,TAS,DE'OF'DE'OF'STRUCT) ; TEST(APD[4]) ; TEST(APD[5]) ; 'PROC' PR:=('R' REP,REPREP,'PROC''R' PROCREP)'R' : ( TEST(REP) ; TEST(REPREP) ;('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)]) ; 'UNION'('R','CHAR') UNION:=PR(PROC, ('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1,PROC) ; TEST((UNION ! ('R' A) : A )) ; (TEST('R''BEGIN'('INT' IDA,'MU' B,C)'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END''END') , ?=:=(UNION ;(('INT' IDA,'MU' B,C)'BOOL' : 'CASE' VU:=(CTR+:=1;'TRUE')'IN' ('BOOL' X) : X 'ESAC' ) (1,""," ") ! ('INT' IDA,'MU' B,C)'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA)) , ('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : ('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)] , ('CHAR' CAR) : 'SKIP'))) ; CTRL(44)) ; (CTRT:= 4 ; CTRLOC:=CTR ; TEST(('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1) ; 'FOR' IDENT 'FROM' (('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 ) (1,""," ") 'BY' (('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1) ) (1,""," ") 'TO' (('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1) ) (1,""," ") 'WHILE' (('INT' IDA,'MU' B,C)'BOOL' : DE'OF''STRB'('TRUE' , CTR+:=1) ) (1,""," ") 'DO' [(('INT' IDA,'MU' B,