# 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,C)'INT' : 'INT' : (CTR+:=1 ; 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' : DE'OF''STRA'(1 , CTR+:=1) ) (1,""," ") , 0] := ENT[1,(('INT' IDA,'MU' B,C)'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) ) (1,""," ") ]:= ('INT' IDA,'MU' B,C)'INT' : PRA(1) ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 ; 'REAL' E = .12345 ;('INT' IDA,'MU' B,C)'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END') ; TEST(PAR) ; ALFA:=?=:=(('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1) ; 'R' IDENT = ('INT' IDA,'MU' B,C)'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' , 'R' LOC:='CASE'(('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 ) (1,""," ") 'IN' ('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP'), 'SKIP' 'ESAC' , TAS:=('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : ('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),(('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)],(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, ('INT' IDA,'MU' B,C)'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' IDA,'MU' B,C)'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC') ; 'UNION'('R','CHAR') UNION:=PR(PROC, ('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)],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' : 'BOOL'(CTR+:=1;IDA ! 'TRUE' , 'SKIP') ) (1,""," ") ! ('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1)) , ('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : ('INT' IDA,'MU' B,C)'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' , ('CHAR' CAR) : 'SKIP'))) ; CTRL(44)) ; (CTRT:= 5 ; CTRLOC:=CTR ; TEST(('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1)) ; 'FOR' IDENT 'FROM' (('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)] ) (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' : 'INT' : (CTR+:=1 ; 1) ) (1,""," ") 'WHILE' (('INT' IDA,'MU' B,C)'BOOL' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 'TRUE''EXIT' F:'SKIP''END' ) (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' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' ) (1,""," ") ] 'R' ENT ; ENT[(('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 ) (1,""," ") , 0] := ENT[1,(('INT' IDA,'MU' B,C)'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' ) (1,""," ") ]:= ('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1) ; 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' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA)) ; TEST(PAR) ; ALFA:=?=:=(('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)]) ; 'R' IDENT = ('INT' IDA,'MU' B,C)'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) , 'R' LOC:='CASE'(('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 ) (1,""," ") 'IN' ('INT' IDA,'MU' B,C)'INT' : PRA(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' : PRA(1) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),(('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1),(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, ('INT' IDA,'MU' B,C)'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' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=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' : TB[IDA,(CTR+:=1;1)] ) (1,""," ") ! ('INT' IDA,'MU' B,C)'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END') , ('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1) , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : ('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 , ('CHAR' CAR) : 'SKIP'))) ; CTRL(44)) ; (CTRT:= 6 ; CTRLOC:=CTR ; TEST(('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1) ; 'FOR' IDENT 'FROM' (('INT' IDA,'MU' B,C)'INT' : PRA(1) ) (1,""," ") 'BY' (('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 ) (1,""," ") 'TO' (('INT' IDA,'MU' B,C)'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) ) (1,""," ") 'WHILE' (('INT' IDA,'MU' B,C)'BOOL' : DE'OF''STRB'('TRUE' , CTR+:=1) ) (1,""," ") 'DO' [(('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1) ) (1,""," ") : 4 , -1 : (('INT' IDA,'MU' B,C)'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' ) (1,""," ") ] 'R' ENT ; ENT[(('INT' IDA,'MU' B,C)'INT' : PRA(1) ) (1,""," ") , 0] := ENT[1,(('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1) ) (1,""," ") ]:= ('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)] ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;('INT' IDA,'MU' B,C)'INT' : PRA(1) ; 'REAL' E = .12345 ;('INT' IDA,'MU' B,C)'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC') ; TEST(PAR) ; ALFA:=?=:=(('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(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' : PI = 'MON'.5 = 1 ) (1,""," ") 'IN' ('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1), 'SKIP' 'ESAC' , TAS:=('INT' IDA,'MU' B,C)'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : ('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),(('INT' IDA,'MU' B,C)'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' 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' : 'INT' : (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' : 'LOC''INT':=(CTR+:=1 ;1)'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' : DE'OF''STRA'(1 , CTR+:=1)) , ('INT' IDA,'MU' B,C)'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : ('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1) , ('CHAR' CAR) : 'SKIP'))) ; CTRL(44)) ; (CTRT:= 7 ; CTRLOC:=CTR ; TEST(('INT' IDA,'MU' B,C)'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END') ; 'FOR' IDENT 'FROM' (('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 ) (1,""," ") 'BY' (('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1) ) (1,""," ") 'TO' (('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') ) (1,""," ") 'WHILE' (('INT' IDA,'MU' B,C)'BOOL' : 'CASE' VU:=(CTR+:=1;'TRUE')'IN' ('BOOL' X) : X 'ESAC' ) (1,""," ") 'DO' [(('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1) ) (1,""," ") : 4 , -1 : (('INT' IDA,'MU' B,C)'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC' ) (1,""," ") ] 'R' ENT ; ENT[(('INT' IDA,'MU' B,C)'INT' : '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' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA)) ; TEST(PAR) ; ALFA:=?=:=(('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')) ; 'R' IDENT = ('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1) , 'R' LOC:='CASE'(('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1) ) (1,""," ") 'IN' ('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)], 'SKIP' 'ESAC' , TAS:=('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : ('INT' IDA,'MU' B,C)'INT' : TA[IDA,(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' : 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' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1) ; 'UNION'('R','CHAR') UNION:=PR(PROC, ('INT' IDA,'MU' B,C)'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC',PROC) ; TEST((UNION ! ('R' A) : A )) ; (TEST('R''BEGIN'('INT' IDA,'MU' B,C)'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC''END') , ?=:=(UNION ;(('INT' IDA,'MU' B,C)'BOOL' : DE'OF''STRB'('TRUE' , CTR+:=1) ) (1,""," ") ! ('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1)) , ('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1) , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : ('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1) , ('CHAR' CAR) : 'SKIP'))) ; CTRL(44)) ; (CTRT:= 8 ; CTRLOC:=CTR ; TEST(('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1)) ; 'FOR' IDENT 'FROM' (('INT' IDA,'MU' B,C)'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' ) (1,""," ") 'BY' (('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1) ) (1,""," ") 'TO' (('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1) ) (1,""," ") 'WHILE' (('INT' IDA,'MU' B,C)'BOOL' : 'CASE' VU:=(CTR+:=1;'TRUE')'IN' ('BOOL' X) : X 'ESAC' ) (1,""," ") 'DO' [(('INT' IDA,'MU' B,C)'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) ) (1,""," ") : 4 , -1 : (('INT' IDA,'MU' B,C)'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) ) (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' : ('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' : DE'OF''STRA'(1 , CTR+:=1) ; 'REAL' E = .12345 ;('INT' IDA,'MU' B,C)'INT' : PRA(1)) ; TEST(PAR) ; ALFA:=?=:=(('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(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' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') ) (1,""," ") 'IN' ('INT' IDA,'MU' B,C)'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC', 'SKIP' 'ESAC' , TAS:=('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') ; 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' : DE'OF''STRA'(1 , CTR+:=1),(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, ('INT' IDA,'MU' B,C)'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' IDA,'MU' B,C)'INT' : 'INT' : (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' : PRA(1)'END') , ?=:=(UNION ;(('INT' IDA,'MU' B,C)'BOOL' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDB) ) (1,""," ") ! ('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP')) , ('INT' IDA,'MU' B,C)'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : ('INT' IDA,'MU' B,C)'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' , ('CHAR' CAR) : 'SKIP'))) ; CTRL(44)) ; (CTRT:= 9 ; CTRLOC:=CTR ; TEST(('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1)) ; 'FOR' IDENT 'FROM' (('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 ) (1,""," ") 'BY' (('INT' IDA,'MU' B,C)'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' ) (1,""," ") 'TO' (('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 ) (1,""," ") 'WHILE' (('INT' IDA,'MU' B,C)'BOOL' : DE'OF''STRB'('TRUE' , CTR+:=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 ; 1) ) (1,""," ") ] 'R' ENT ; ENT[(('INT' IDA,'MU' B,C)'INT' : PRA(1) ) (1,""," ") , 0] := ENT[1,(('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') ) (1,""," ") ]:= ('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1) ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') ; 'REAL' E = .12345 ;('INT' IDA,'MU' B,C)'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA)) ; TEST(PAR) ; ALFA:=?=:=(('INT' IDA,'MU' B,C)'INT' : 'CASE' VU:=(CTR+:=1;1)'IN' ('INT' X) : X 'ESAC') ; 'R' IDENT = ('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1) , 'R' LOC:='CASE'(('INT' IDA,'MU' B,C)'INT' : PRA(1) ) (1,""," ") 'IN' ('INT' IDA,'MU' B,C)'INT' : PRA(1), 'SKIP' 'ESAC' , TAS:=('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1) ; 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' : TA[IDA,(CTR+:=1;1)],(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, ('INT' IDA,'MU' B,C)'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' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1)) ; 'UNION'('R','CHAR') UNION:=PR(PROC, ('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;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' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END') , ('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : ('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') , ('CHAR' CAR) : 'SKIP'))) ; CTRL(44)) ; (CTRT:= 10 ; CTRLOC:=CTR ; TEST(('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1)) ; 'FOR' IDENT 'FROM' (('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1) ) (1,""," ") 'BY' (('INT' IDA,'MU' B,C)'INT' : 'BEGIN' 'INT' X ;CTR+:=1 ; E : 1'EXIT' F:'SKIP''END' ) (1,""," ") 'TO' (('INT' IDA,'MU' B,C)'INT' : PRA(1) ) (1,""," ") 'WHILE' (('INT' IDA,'MU' B,C)'BOOL' : TB[IDA,(CTR+:=1;1)] ) (1,""," ") 'DO' [(('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1) ) (1,""," ") : 4 , -1 : (('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1) ) (1,""," ") ] 'R' ENT ; ENT[(('INT' IDA,'MU' B,C)'INT' : ('NOT'IDB ! 'SKIP' ! CTR+:=1 ; IDA) ) (1,""," ") , 0] := ENT[1,(('INT' IDA,'MU' B,C)'INT' : 'INT' : (CTR+:=1 ; 1) ) (1,""," ") ]:= ('INT' IDA,'MU' B,C)'INT' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') ; 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' : PRA(1)) ; TEST(PAR) ; ALFA:=?=:=(('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1) ; 'R' IDENT = ('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 1 , 'R' LOC:='CASE'(('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)] ) (1,""," ") 'IN' ('INT' IDA,'MU' B,C)'INT' : PI = 'MON'.5 = 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' : 'INT'(CTR+:=1;IDA ! 1 , 'SKIP') , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),(('INT' IDA,'MU' B,C)'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' 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' : PRA(1)) ; 'UNION'('R','CHAR') UNION:=PR(PROC, ('INT' IDA,'MU' B,C)'INT' : TA[IDA,(CTR+:=1;1)],PROC) ; TEST((UNION ! ('R' A) : A )) ; (TEST('R''BEGIN'('INT' IDA,'MU' B,C)'INT' : 'LOC''INT':=(CTR+:=1 ;1)'END') , ?=:=(UNION ;(('INT' IDA,'MU' B,C)'BOOL' : 'BOOL' : (CTR+:=1 ; 'TRUE') ) (1,""," ") ! ('INT' IDA,'MU' B,C)'INT' : DE'OF''STRA'(1 , CTR+:=1)) , ('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)) ; 'SKIP') ; # CORPS = RELATION D'IDENTITE # CTRT:= 11 ; CTRLOC:=CTR ; 'TO' 1 'WHILE' 'BOOL' : VU:/=:(CTR+:=1;'NIL') 'DO' ('BOOL' : (IDB!CTR!CTRT):=:CTR+:=1 ! CTR+:=1) 'OD' ; CTRL(3) ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R542A # (PRINT(("MONADIC FORMULAS",NEWLINE)) ; 'INT' VF = 18*(8+2)+33*(8+2+5) ; 'INT' CTRT:=0 , CTR:=0 , CTRLOC ; 'PROC' CTRL = ('INT' INC)'VOID' : (CTR/=CTRLOC+INC ! PRINT(("COUNT ER IN TEST",CTRT,CTR,CTRLOC+INC,NEWLINE))); 'MODE' 'R' = 'INT' ; 'PROC' TEST = ('INT' A)'VOID' : (A=1 ! CTR+:=1 ! PRINT(("ER",CTRT,CTR-CTRLOC,NEWLINE))) ; 'OP' ?=:==('INT' X)'INT' : (TEST(X) ; X) ; # SERVITUDES POUR SECONDAIRES # 'INT' B=2,C=3,D=4,E=5,F=6,G=7,H=8,I=9,J=10 ; 'STRUCT'('INT' D2,D3,D4,D5,D6,D7,D8,D9,D0) STR = (2,3,4,5,6,7,8,9,10) ; [,]'INT' T=((0,B,C,D,E,F,G,H,I,J),(1,2,3,4,5,6,7,8,9,10)) , 'PROC' CALL = ('INT' A)'INT' : (A=0!10!A) , 'OP' & = ('BOOL' A,'INT' B)'STRUCT'('INT' A,B) : (B,0) , & = ('CHAR' A,'STRUCT'('INT' A,B) B)'INT' : A'OF'B ; 'PRIO' & = 3 ; # CONTEXTES DEMANDANT UN MODE : ENT # ( # DEFINITION DES OPERATEURS # 'OP' 'M' = ('INT' A)'INT' : (CTR+:=1 ; A-1) ; # NOMBRE DE MONADIQUES : 1 # (CTRT:= 1 ; CTRLOC:=CTR ; TEST('M' 2) ; 'FOR' IDENT 'FROM' 'M' 2 'BY' 'M' 2 'TO' 'M' 2 'WHILE' 1=('M' 2) 'DO' ['M' 2 : 4 , -1 : 'M' 2] 'R' ENT ; ENT ['M' 2 , 0 ] := ENT[ 1,'M' 2] := 'M' 2 ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M' 2 ; 'REAL' PI = .12345 ; 'M' 2) ; TEST(PAR) ; ALFA:=?=:='M' 2 ; 'R' IDENT ='M' 2 , 'R' LOC:='CASE' 'M' 2 'IN' 'M' 2, 'SKIP' 'ESAC' , TAS:='M' 2 ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M' 2 , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M' 2,(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M' 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) ;'M' 2) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M' 2 , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M' 2'END') , ?=:=(UNION;1=('M' 2) ! 'M' 2) , 'M' 2 , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M' 2 , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*1)) ; (CTRT:= 2 ; CTRLOC:=CTR ; TEST('M'B) ; 'FOR' IDENT 'FROM' 'M'B 'BY' 'M'B 'TO' 'M'B 'WHILE' 1=('M'B) 'DO' ['M'B : 4 , -1 : 'M'B] 'R' ENT ; ENT ['M'B , 0 ] := ENT[ 1,'M'B] := 'M'B ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M'B ; 'REAL' PI = .12345 ; 'M'B) ; TEST(PAR) ; ALFA:=?=:='M'B ; 'R' IDENT ='M'B , 'R' LOC:='CASE' 'M'B 'IN' 'M'B, 'SKIP' 'ESAC' , TAS:='M'B ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M'B , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M'B,(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M'B,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) ;'M'B) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M'B , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M'B'END') , ?=:=(UNION;1=('M'B) ! 'M'B) , 'M'B , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M'B , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*1)) ; (CTRT:= 3 ; CTRLOC:=CTR ; TEST('M'D2'OF'STR) ; 'FOR' IDENT 'FROM' 'M'D2'OF'STR 'BY' 'M'D2'OF'STR 'TO' 'M'D2'OF'STR 'WHILE' 1=('M'D2'OF'STR) 'DO' ['M'D2'OF'STR : 4 , -1 : 'M'D2'OF'STR] 'R' ENT ; ENT ['M'D2'OF'STR , 0 ] := ENT[ 1,'M'D2'OF'STR] := 'M'D2'OF'STR ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M'D2'OF'STR ; 'REAL' PI = .12345 ; 'M'D2'OF'STR) ; TEST(PAR) ; ALFA:=?=:='M'D2'OF'STR ; 'R' IDENT ='M'D2'OF'STR , 'R' LOC:='CASE' 'M'D2'OF'STR 'IN' 'M'D2'OF'STR, 'SKIP' 'ESAC' , TAS:='M'D2'OF'STR ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M'D2'OF'STR , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M'D2'OF'STR,(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M'D2'OF'STR,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) ;'M'D2'OF'STR) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M'D2'OF'STR , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M'D2'OF'STR'END') , ?=:=(UNION;1=('M'D2'OF'STR) ! 'M'D2'OF'STR) , 'M'D2'OF'STR , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M'D2'OF'STR , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*1)) ; (CTRT:= 4 ; CTRLOC:=CTR ; TEST('M'T[,B][2]) ; 'FOR' IDENT 'FROM' 'M'T[,B][2] 'BY' 'M'T[,B][2] 'TO' 'M'T[,B][2] 'WHILE' 1=('M'T[,B][2]) 'DO' ['M'T[,B][2] : 4 , -1 : 'M'T[,B][2]] 'R' ENT ; ENT ['M'T[,B][2] , 0 ] := ENT[ 1,'M'T[,B][2]] := 'M'T[,B][2] ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M'T[,B][2] ; 'REAL' PI = .12345 ; 'M'T[,B][2]) ; TEST(PAR) ; ALFA:=?=:='M'T[,B][2] ; 'R' IDENT ='M'T[,B][2] , 'R' LOC:='CASE' 'M'T[,B][2] 'IN' 'M'T[,B][2], 'SKIP' 'ESAC' , TAS:='M'T[,B][2] ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M'T[,B][2] , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M'T[,B][2],(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M'T[,B][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) ;'M'T[,B][2]) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M'T[,B][2] , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M'T[,B][2]'END') , ?=:=(UNION;1=('M'T[,B][2]) ! 'M'T[,B][2]) , 'M'T[,B][2] , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M'T[,B][2] , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*1)) ; (CTRT:= 5 ; CTRLOC:=CTR ; TEST('M'CALL(2)) ; 'FOR' IDENT 'FROM' 'M'CALL(2) 'BY' 'M'CALL(2) 'TO' 'M'CALL(2) 'WHILE' 1=('M'CALL(2)) 'DO' ['M'CALL(2) : 4 , -1 : 'M'CALL(2)] 'R' ENT ; ENT ['M'CALL(2) , 0 ] := ENT[ 1,'M'CALL(2)] := 'M'CALL(2) ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M'CALL(2) ; 'REAL' PI = .12345 ; 'M'CALL(2)) ; TEST(PAR) ; ALFA:=?=:='M'CALL(2) ; 'R' IDENT ='M'CALL(2) , 'R' LOC:='CASE' 'M'CALL(2) 'IN' 'M'CALL(2), 'SKIP' 'ESAC' , TAS:='M'CALL(2) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M'CALL(2) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M'CALL(2),(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M'CALL(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) ;'M'CALL(2)) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M'CALL(2) , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M'CALL(2)'END') , ?=:=(UNION;1=('M'CALL(2)) ! 'M'CALL(2)) , 'M'CALL(2) , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M'CALL(2) , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*1)) ; (CTRT:= 6 ; CTRLOC:=CTR ; TEST('M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI') ; 'FOR' IDENT 'FROM' 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI' 'BY' 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI' 'TO' 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI' 'WHILE' 1=('M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI') 'DO' ['M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI' : 4 , -1 : 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI'] 'R' ENT ; ENT ['M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI' , 0 ] := ENT[ 1,'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI'] := 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI' ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI' ; 'REAL' PI = .12345 ; 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI') ; TEST(PAR) ; ALFA:=?=:='M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI' ; 'R' IDENT ='M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI' , 'R' LOC:='CASE' 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI' 'IN' 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI', 'SKIP' 'ESAC' , TAS:='M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI' ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI' , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI',(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI',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) ;'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI') ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI' , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI''END') , ?=:=(UNION;1=('M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI') ! 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI') , 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI' , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI' , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*1)) ; (CTRT:= 7 ; CTRLOC:=CTR ; TEST('M'('INT' X:=B;X)) ; 'FOR' IDENT 'FROM' 'M'('INT' X:=B;X) 'BY' 'M'('INT' X:=B;X) 'TO' 'M'('INT' X:=B;X) 'WHILE' 1=('M'('INT' X:=B;X)) 'DO' ['M'('INT' X:=B;X) : 4 , -1 : 'M'('INT' X:=B;X)] 'R' ENT ; ENT ['M'('INT' X:=B;X) , 0 ] := ENT[ 1,'M'('INT' X:=B;X)] := 'M'('INT' X:=B;X) ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M'('INT' X:=B;X) ; 'REAL' PI = .12345 ; 'M'('INT' X:=B;X)) ; TEST(PAR) ; ALFA:=?=:='M'('INT' X:=B;X) ; 'R' IDENT ='M'('INT' X:=B;X) , 'R' LOC:='CASE' 'M'('INT' X:=B;X) 'IN' 'M'('INT' X:=B;X), 'SKIP' 'ESAC' , TAS:='M'('INT' X:=B;X) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M'('INT' X:=B;X) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M'('INT' X:=B;X),(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M'('INT' X:=B;X),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) ;'M'('INT' X:=B;X)) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M'('INT' X:=B;X) , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M'('INT' X:=B;X)'END') , ?=:=(UNION;1=('M'('INT' X:=B;X)) ! 'M'('INT' X:=B;X)) , 'M'('INT' X:=B;X) , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M'('INT' X:=B;X) , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*1)) ; (CTRT:= 8 ; CTRLOC:=CTR ; TEST('M'("#" & ('TRUE' & 2))) ; 'FOR' IDENT 'FROM' 'M' 2 'BY' 'M' 2 'TO' 'M' 2 'WHILE' 1=('M' 2) 'DO' ['M' 2 : 4 , -1 : 'M' 2] 'R' ENT ; ENT ['M' 2 , 0 ] := ENT[ 1,'M' 2] := 'M' 2 ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M' 2 ; 'REAL' PI = .12345 ; 'M' 2) ; TEST(PAR) ; ALFA:=?=:='M' 2 ; 'R' IDENT ='M' 2 , 'R' LOC:='CASE' 'M' 2 'IN' 'M' 2, 'SKIP' 'ESAC' , TAS:='M' 2 ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M' 2 , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M' 2,(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M' 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) ;'M' 2) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M' 2 , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M' 2'END') , ?=:=(UNION;1=('M' 2) ! 'M' 2) , 'M' 2 , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M' 2 , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*1)) ; # NOMBRE DE MONADIQUES : 2 # (CTRT:= 9 ; CTRLOC:=CTR ; TEST('M''M'C) ; 'FOR' IDENT 'FROM' 'M''M'CALL(3) 'BY' 'M''M'T[,C][2] 'TO' 'M''M'T[,C][2] 'WHILE' 1=('M''M'D3'OF'STR) 'DO' ['M''M' 3 : 4 , -1 : 'M''M'("#" & ('TRUE' & C))] 'R' ENT ; ENT ['M''M'('INT' X:=C;X) , 0 ] := ENT[ 1,'M''M' 3] := 'M''M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI' ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M''M'C ; 'REAL' PI = .12345 ; 'M''M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI') ; TEST(PAR) ; ALFA:=?=:='M''M'D3'OF'STR ; 'R' IDENT ='M''M'T[,C][2] , 'R' LOC:='CASE' 'M''M'CALL(3) 'IN' 'M''M'C, 'SKIP' 'ESAC' , TAS:='M''M'('INT' X:=C;X) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M''M'('INT' X:=C;X) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M''M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI',(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M''M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI',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) ;'M''M'CALL(3)) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M''M'CALL(3) , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M''M'CALL(3)'END') , ?=:=(UNION;1=('M''M'D3'OF'STR) ! 'M''M'D3'OF'STR) , 'M''M'D3'OF'STR , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M''M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI' , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*2)) ; # NOMBRE DE MONADIQUES : 5 # (CTRT:= 10 ; CTRLOC:=CTR ; TEST('M''M''M''M''M'("#" & ('TRUE' & D6'OF'STR))) ; 'FOR' IDENT 'FROM' 'M''M''M''M''M'T[,F][2] 'BY' 'M''M''M''M''M''PROC''INT''IF'6=0 'THEN' 'INT':10 'ELSE' 'INT':6'FI' 'TO' 'M''M''M''M''M''PROC''INT''IF'6=0 'THEN' 'INT':10 'ELSE' 'INT':6'FI' 'WHILE' 1=('M''M''M''M''M' 6) 'DO' ['M''M''M''M''M'('INT' X:=F;X) : 4 , -1 : 'M''M''M''M''M'('INT' X:=F;X)] 'R' ENT ; ENT ['M''M''M''M''M'T[,F][2] , 0 ] := ENT[ 1,'M''M''M''M''M'CALL(6)] := 'M''M''M''M''M'T[,F][2] ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M''M''M''M''M''PROC''INT''IF'6=0 'THEN' 'INT':10 'ELSE' 'INT':6'FI' ; 'REAL' PI = .12345 ; 'M''M''M''M''M'T[,F][2]) ; TEST(PAR) ; ALFA:=?=:='M''M''M''M''M'F ; 'R' IDENT ='M''M''M''M''M'('INT' X:=F;X) , 'R' LOC:='CASE' 'M''M''M''M''M'('INT' X:=F;X) 'IN' 'M''M''M''M''M'('INT' X:=F;X), 'SKIP' 'ESAC' , TAS:='M''M''M''M''M'('INT' X:=F;X) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M''M''M''M''M'F , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M''M''M''M''M'CALL(6),(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M''M''M''M''M'CALL(6),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) ;'M''M''M''M''M'CALL(6)) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M''M''M''M''M''PROC''INT''IF'6=0 'THEN' 'INT':10 'ELSE' 'INT':6'FI' , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M''M''M''M''M'T[,F][2]'END') , ?=:=(UNION;1=('M''M''M''M''M'T[,F][2]) ! 'M''M''M''M''M'F) , 'M''M''M''M''M'F , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M''M''M''M''M'T[,F][2] , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*5)) ; 'SKIP') ; # CONTEXTES DEMANDANT UN MODE : REP # ('OP' 'M' = ('INT' A)'REF''INT' : 'HEAP''INT':=(CTR+:=1;A-1) ; # NOMBRE D'OPERATEURS : 1 # CTRT:= 11 ; CTRLOC:=CTR ; TEST('M' 2:= 'M' 2:= ('M' 2:/=: 'M' 2 ! 'M' 2)) ; CTRL(1+5*1) ; CTRT:= 12 ; CTRLOC:=CTR ; TEST('M'B:= 'M'B:= ('M'B:/=: 'M'B ! 'M'B)) ; CTRL(1+5*1) ; CTRT:= 13 ; CTRLOC:=CTR ; TEST('M'D2'OF'STR:= 'M'D2'OF'STR:= ('M'D2'OF'STR:/=: 'M'D2'OF'STR ! 'M'D2'OF'STR)) ; CTRL(1+5*1) ; CTRT:= 14 ; CTRLOC:=CTR ; TEST('M'T[,B][2]:= 'M'T[,B][2]:= ('M'T[,B][2]:/=: 'M'T[,B][2] ! 'M'T[,B][2])) ; CTRL(1+5*1) ; CTRT:= 15 ; CTRLOC:=CTR ; TEST('M'CALL(2):= 'M'CALL(2):= ('M'CALL(2):/=: 'M'CALL(2) ! 'M'CALL(2))) ; CTRL(1+5*1) ; CTRT:= 16 ; CTRLOC:=CTR ; TEST('M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI':= 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI':= ('M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI':/=: 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI' ! 'M''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI')) ; CTRL(1+5*1) ; CTRT:= 17 ; CTRLOC:=CTR ; TEST('M'('INT' X:=B;X):= 'M'('INT' X:=B;X):= ('M'('INT' X:=B;X):/=: 'M'('INT' X:=B;X) ! 'M'('INT' X:=B;X))) ; CTRL(1+5*1) ; CTRT:= 18 ; CTRLOC:=CTR ; TEST('M'("#" & ('TRUE' & CALL(2))):= 'M'CALL(2):= ('M'CALL(2):/=: 'M'CALL(2) ! 'M'CALL(2))) ; CTRL(1+5*1) ; # NOMBRE D'OPERATEURS : 2 # CTRT:= 19 ; CTRLOC:=CTR ; TEST('M''M'T[,C][2]:= 'M''M'("#" & ('TRUE' & T[,C][2])):= ('M''M'D3'OF'STR:/=: 'M''M'CALL(3) ! 'M''M'C)) ; CTRL(1+5*2) ; # NOMBRE D'OPERATEURS : 5 # CTRT:= 20 ; CTRLOC:=CTR ; TEST('M''M''M''M''M'F:= 'M''M''M''M''M''PROC''INT''IF'6=0 'THEN' 'INT':10 'ELSE' 'INT':6'FI':= ('M''M''M''M''M'T[,F][2]:/=: 'M''M''M''M''M'T[,F][2] ! 'M''M''M''M''M' 6)) ; CTRL(1+5*5) ; 'SKIP') ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R542B # (PRINT(("DYADIC FORMULAS",NEWLINE)) ; 'INT' VF = 17*(8+2) + 28*(8*4+15+14) ; 'INT' CTRT:=0 , CTR:=0 , CTRLOC ; 'PROC' CTRL = ('INT' INC)'VOID' : (CTR/=CTRLOC+INC ! PRINT(("COUNT ER IN TEST",CTRT,CTR,CTRLOC+INC,NEWLINE))); 'MODE' 'R' = 'INT' ; 'PROC' TEST = ('INT' A)'VOID' : (A=1 ! CTR+:=1 ! PRINT(("ER",CTRT,CTR-CTRLOC,NEWLINE))) ; 'OP' ?=:==('INT' X)'INT' : (TEST(X) ; X) ; # SERVITUDES POUR SECONDAIRES # 'INT' B=2,C=3,D=4,E=5,F=6,G=7,H=8,I=9,J=10 ; 'STRUCT'('INT' D2,D3,D4,D5,D6,D7,D8,D9,D0) STR = (2,3,4,5,6,7,8,9,10) ; [,]'INT' T=((0,B,C,D,E,F,G,H,I,J),(1,2,3,4,5,6,7,8,9,10)) , 'PROC' CALL = ('INT' A)'INT' : (A=0!10!A) , 'OP' & = ('BOOL' A,'INT' B)'STRUCT'('INT' A,B) : (B,0) , & = ('CHAR' A,'STRUCT'('INT' A,B) B)'INT' : A'OF'B ; 'PRIO' & = 3 ; 'PRIO' 'A'=1 , 'B'=2,'C'=3,'D'=4,'E'=5,'F'=6,'G'=7,'H'=8,'I'=9 ; # CONTEXTES DEMANDANT UN MODE : ENT # ( # DEFINITION DES OPERATEURS # 'OP' 'M' = ('INT' A)'INT' : (CTR+:=1 ; A-1) ; 'PROC' DYAD = ('INT' A,B)'INT' : ((A=B ! CTR+:=1 ! PRINT(("ER.PRIO",CTRT,CTR-CTRLOC,A,B,NEWLINE))) ; A-1) ; 'OP'('INT','INT')'INT' 'A'=DYAD,'B'=DYAD,'C'=DYAD, 'D'=DYAD,'E'=DYAD,'F'=DYAD,'G'=DYAD,'H'=DYAD,'I'=DYAD ; # NOMBRE D'OPERATEURS : 4 # (CTRT:= 1 ; CTRLOC:=CTR ; TEST('M' 3'D''M''M' 4) ; 'FOR' IDENT 'FROM' 'M' 3'D''M''M' 4 'BY' 'M' 3'D''M''M' 4 'TO' 'M' 3'D''M''M' 4 'WHILE' 1=('M' 3'D''M''M' 4) 'DO' ['M' 3'D''M''M' 4 : 4 , -1 : 'M' 3'D''M''M' 4] 'R' ENT ; ENT ['M' 3'D''M''M' 4 , 0 ] := ENT[ 1,'M' 3'D''M''M' 4] := 'M' 3'D''M''M' 4 ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M' 3'D''M''M' 4 ; 'REAL' PI = .12345 ; 'M' 3'D''M''M' 4) ; TEST(PAR) ; ALFA:=?=:=('M' 3'D''M''M' 4) ; 'R' IDENT ='M' 3'D''M''M' 4 , 'R' LOC:='CASE' 'M' 3'D''M''M' 4 'IN' 'M' 3'D''M''M' 4, 'SKIP' 'ESAC' , TAS:='M' 3'D''M''M' 4 ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M' 3'D''M''M' 4 , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M' 3'D''M''M' 4,(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M' 3'D''M''M' 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) ;'M' 3'D''M''M' 4) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M' 3'D''M''M' 4 , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M' 3'D''M''M' 4'END') , ?=:=(UNION;1=('M' 3'D''M''M' 4) ! 'M' 3'D''M''M' 4) , 'M' 3'D''M''M' 4 , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M' 3'D''M''M' 4 , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*4)) ; (CTRT:= 2 ; CTRLOC:=CTR ; TEST('M'C'D''M''M'D) ; 'FOR' IDENT 'FROM' 'M'C'D''M''M'D 'BY' 'M'C'D''M''M'D 'TO' 'M'C'D''M''M'D 'WHILE' 1=('M'C'D''M''M'D) 'DO' ['M'C'D''M''M'D : 4 , -1 : 'M'C'D''M''M'D] 'R' ENT ; ENT ['M'C'D''M''M'D , 0 ] := ENT[ 1,'M'C'D''M''M'D] := 'M'C'D''M''M'D ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M'C'D''M''M'D ; 'REAL' PI = .12345 ; 'M'C'D''M''M'D) ; TEST(PAR) ; ALFA:=?=:=('M'C'D''M''M'D) ; 'R' IDENT ='M'C'D''M''M'D , 'R' LOC:='CASE' 'M'C'D''M''M'D 'IN' 'M'C'D''M''M'D, 'SKIP' 'ESAC' , TAS:='M'C'D''M''M'D ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M'C'D''M''M'D , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M'C'D''M''M'D,(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M'C'D''M''M'D,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) ;'M'C'D''M''M'D) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M'C'D''M''M'D , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M'C'D''M''M'D'END') , ?=:=(UNION;1=('M'C'D''M''M'D) ! 'M'C'D''M''M'D) , 'M'C'D''M''M'D , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M'C'D''M''M'D , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*4)) ; (CTRT:= 3 ; CTRLOC:=CTR ; TEST('M'D3'OF'STR'D''M''M'D4'OF'STR) ; 'FOR' IDENT 'FROM' 'M'D3'OF'STR'D''M''M'D4'OF'STR 'BY' 'M'D3'OF'STR'D''M''M'D4'OF'STR 'TO' 'M'D3'OF'STR'D''M''M'D4'OF'STR 'WHILE' 1=('M'D3'OF'STR'D''M''M'D4'OF'STR) 'DO' ['M'D3'OF'STR'D''M''M'D4'OF'STR : 4 , -1 : 'M'D3'OF'STR'D''M''M'D4'OF'STR] 'R' ENT ; ENT ['M'D3'OF'STR'D''M''M'D4'OF'STR , 0 ] := ENT[ 1,'M'D3'OF'STR'D''M''M'D4'OF'STR] := 'M'D3'OF'STR'D''M''M'D4'OF'STR ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M'D3'OF'STR'D''M''M'D4'OF'STR ; 'REAL' PI = .12345 ; 'M'D3'OF'STR'D''M''M'D4'OF'STR) ; TEST(PAR) ; ALFA:=?=:=('M'D3'OF'STR'D''M''M'D4'OF'STR) ; 'R' IDENT ='M'D3'OF'STR'D''M''M'D4'OF'STR , 'R' LOC:='CASE' 'M'D3'OF'STR'D''M''M'D4'OF'STR 'IN' 'M'D3'OF'STR'D''M''M'D4'OF'STR, 'SKIP' 'ESAC' , TAS:='M'D3'OF'STR'D''M''M'D4'OF'STR ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M'D3'OF'STR'D''M''M'D4'OF'STR , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M'D3'OF'STR'D''M''M'D4'OF'STR,(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M'D3'OF'STR'D''M''M'D4'OF'STR,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) ;'M'D3'OF'STR'D''M''M'D4'OF'STR) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M'D3'OF'STR'D''M''M'D4'OF'STR , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M'D3'OF'STR'D''M''M'D4'OF'STR'END') , ?=:=(UNION;1=('M'D3'OF'STR'D''M''M'D4'OF'STR) ! 'M'D3'OF'STR'D''M''M'D4'OF'STR) , 'M'D3'OF'STR'D''M''M'D4'OF'STR , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M'D3'OF'STR'D''M''M'D4'OF'STR , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*4)) ; (CTRT:= 4 ; CTRLOC:=CTR ; TEST('M'T[,C][2]'D''M''M'T[,D][2]) ; 'FOR' IDENT 'FROM' 'M'T[,C][2]'D''M''M'T[,D][2] 'BY' 'M'T[,C][2]'D''M''M'T[,D][2] 'TO' 'M'T[,C][2]'D''M''M'T[,D][2] 'WHILE' 1=('M'T[,C][2]'D''M''M'T[,D][2]) 'DO' ['M'T[,C][2]'D''M''M'T[,D][2] : 4 , -1 : 'M'T[,C][2]'D''M''M'T[,D][2]] 'R' ENT ; ENT ['M'T[,C][2]'D''M''M'T[,D][2] , 0 ] := ENT[ 1,'M'T[,C][2]'D''M''M'T[,D][2]] := 'M'T[,C][2]'D''M''M'T[,D][2] ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M'T[,C][2]'D''M''M'T[,D][2] ; 'REAL' PI = .12345 ; 'M'T[,C][2]'D''M''M'T[,D][2]) ; TEST(PAR) ; ALFA:=?=:=('M'T[,C][2]'D''M''M'T[,D][2]) ; 'R' IDENT ='M'T[,C][2]'D''M''M'T[,D][2] , 'R' LOC:='CASE' 'M'T[,C][2]'D''M''M'T[,D][2] 'IN' 'M'T[,C][2]'D''M''M'T[,D][2], 'SKIP' 'ESAC' , TAS:='M'T[,C][2]'D''M''M'T[,D][2] ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M'T[,C][2]'D''M''M'T[,D][2] , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M'T[,C][2]'D''M''M'T[,D][2],(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M'T[,C][2]'D''M''M'T[,D][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) ;'M'T[,C][2]'D''M''M'T[,D][2]) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M'T[,C][2]'D''M''M'T[,D][2] , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M'T[,C][2]'D''M''M'T[,D][2]'END') , ?=:=(UNION;1=('M'T[,C][2]'D''M''M'T[,D][2]) ! 'M'T[,C][2]'D''M''M'T[,D][2]) , 'M'T[,C][2]'D''M''M'T[,D][2] , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M'T[,C][2]'D''M''M'T[,D][2] , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*4)) ; (CTRT:= 5 ; CTRLOC:=CTR ; TEST('M'CALL(3)'D''M''M'CALL(4)) ; 'FOR' IDENT 'FROM' 'M'CALL(3)'D''M''M'CALL(4) 'BY' 'M'CALL(3)'D''M''M'CALL(4) 'TO' 'M'CALL(3)'D''M''M'CALL(4) 'WHILE' 1=('M'CALL(3)'D''M''M'CALL(4)) 'DO' ['M'CALL(3)'D''M''M'CALL(4) : 4 , -1 : 'M'CALL(3)'D''M''M'CALL(4)] 'R' ENT ; ENT ['M'CALL(3)'D''M''M'CALL(4) , 0 ] := ENT[ 1,'M'CALL(3)'D''M''M'CALL(4)] := 'M'CALL(3)'D''M''M'CALL(4) ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M'CALL(3)'D''M''M'CALL(4) ; 'REAL' PI = .12345 ; 'M'CALL(3)'D''M''M'CALL(4)) ; TEST(PAR) ; ALFA:=?=:=('M'CALL(3)'D''M''M'CALL(4)) ; 'R' IDENT ='M'CALL(3)'D''M''M'CALL(4) , 'R' LOC:='CASE' 'M'CALL(3)'D''M''M'CALL(4) 'IN' 'M'CALL(3)'D''M''M'CALL(4), 'SKIP' 'ESAC' , TAS:='M'CALL(3)'D''M''M'CALL(4) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M'CALL(3)'D''M''M'CALL(4) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M'CALL(3)'D''M''M'CALL(4),(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M'CALL(3)'D''M''M'CALL(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) ;'M'CALL(3)'D''M''M'CALL(4)) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M'CALL(3)'D''M''M'CALL(4) , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M'CALL(3)'D''M''M'CALL(4)'END') , ?=:=(UNION;1=('M'CALL(3)'D''M''M'CALL(4)) ! 'M'CALL(3)'D''M''M'CALL(4)) , 'M'CALL(3)'D''M''M'CALL(4) , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M'CALL(3)'D''M''M'CALL(4) , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*4)) ; (CTRT:= 6 ; CTRLOC:=CTR ; TEST('M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI') ; 'FOR' IDENT 'FROM' 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' 'BY' 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' 'TO' 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' 'WHILE' 1=('M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI') 'DO' ['M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' : 4 , -1 : 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI'] 'R' ENT ; ENT ['M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' , 0 ] := ENT[ 1,'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI'] := 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' ; 'REAL' PI = .12345 ; 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI') ; TEST(PAR) ; ALFA:=?=:=('M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI') ; 'R' IDENT ='M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' , 'R' LOC:='CASE' 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' 'IN' 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI', 'SKIP' 'ESAC' , TAS:='M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI',(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI',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) ;'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI') ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI''END') , ?=:=(UNION;1=('M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI') ! 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI') , 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*4)) ; (CTRT:= 7 ; CTRLOC:=CTR ; TEST('M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X)) ; 'FOR' IDENT 'FROM' 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X) 'BY' 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X) 'TO' 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X) 'WHILE' 1=('M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X)) 'DO' ['M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X) : 4 , -1 : 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X)] 'R' ENT ; ENT ['M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X) , 0 ] := ENT[ 1,'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X)] := 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X) ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X) ; 'REAL' PI = .12345 ; 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X)) ; TEST(PAR) ; ALFA:=?=:=('M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X)) ; 'R' IDENT ='M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X) , 'R' LOC:='CASE' 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X) 'IN' 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X), 'SKIP' 'ESAC' , TAS:='M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X),(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X),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) ;'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X)) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X) , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X)'END') , ?=:=(UNION;1=('M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X)) ! 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X)) , 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X) , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X) , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*4)) ; (CTRT:= 8 ; CTRLOC:=CTR ; TEST('M'("#" & ('TRUE' & 3))'D''M''M'("#" & ('TRUE' & D))) ; 'FOR' IDENT 'FROM' 'M'("#" & ('TRUE' & CALL(3)))'D''M''M'("#" & ('TRUE' & T[,D][2])) 'BY' 'M'("#" & ('TRUE' & T[,C][2]))'D''M''M'("#" & ('TRUE' & D4'OF'STR)) 'TO' 'M'("#" & ('TRUE' & 3))'D''M''M'("#" & ('TRUE' & ("#" & ('TRUE' & D)))) 'WHILE' 1=('M'("#" & ('TRUE' & ('INT' X:=C;X)))'D''M''M'("#" & ('TRUE' & 4))) 'DO' ['M'("#" & ('TRUE' & 'PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI'))'D''M''M'("#" & ('TRUE' & D)) : 4 , -1 : 'M'("#" & ('TRUE' & 'PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI'))'D''M''M'("#" & ('TRUE' & D4'OF'STR))] 'R' ENT ; ENT ['M'("#" & ('TRUE' & T[,C][2]))'D''M''M'("#" & ('TRUE' & CALL(4))) , 0 ] := ENT[ 1,'M'("#" & ('TRUE' & C))'D''M''M'("#" & ('TRUE' & ('INT' X:=D;X)))] := 'M'("#" & ('TRUE' & ('INT' X:=C;X)))'D''M''M'("#" & ('TRUE' & 'PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI')) ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M'("#" & ('TRUE' & 'PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI'))'D''M''M'("#" & ('TRUE' & CALL(4))) ; 'REAL' PI = .12345 ; 'M'("#" & ('TRUE' & CALL(3)))'D''M''M'("#" & ('TRUE' & CALL(4)))) ; TEST(PAR) ; ALFA:=?=:=('M'("#" & ('TRUE' & D3'OF'STR))'D''M''M'("#" & ('TRUE' & D4'OF'STR))) ; 'R' IDENT ='M'("#" & ('TRUE' & D3'OF'STR))'D''M''M'("#" & ('TRUE' & 'PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI')) , 'R' LOC:='CASE' 'M'("#" & ('TRUE' & ("#" & ('TRUE' & D3'OF'STR))))'D''M''M'("#" & ('TRUE' & T[,D][2])) 'IN' 'M'("#" & ('TRUE' & 'PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI'))'D''M''M'("#" & ('TRUE' & 'PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI')), 'SKIP' 'ESAC' , TAS:='M'("#" & ('TRUE' & 3))'D''M''M'("#" & ('TRUE' & ('INT' X:=D;X))) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M'("#" & ('TRUE' & ('INT' X:=C;X)))'D''M''M'("#" & ('TRUE' & T[,D][2])) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M'("#" & ('TRUE' & CALL(3)))'D''M''M'("#" & ('TRUE' & T[,D][2])),(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M'("#" & ('TRUE' & 'PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI'))'D''M''M'("#" & ('TRUE' & T[,D][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) ;'M'("#" & ('TRUE' & C))'D''M''M'("#" & ('TRUE' & ('INT' X:=D;X)))) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M'("#" & ('TRUE' & ('INT' X:=C;X)))'D''M''M'("#" & ('TRUE' & ('INT' X:=D;X))) , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M'("#" & ('TRUE' & ('INT' X:=C;X)))'D''M''M'("#" & ('TRUE' & D))'END') , ?=:=(UNION;1=('M'("#" & ('TRUE' & CALL(3)))'D''M''M'("#" & ('TRUE' & CALL(4)))) ! 'M'("#" & ('TRUE' & CALL(3)))'D''M''M'("#" & ('TRUE' & 'PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI'))) , 'M'("#" & ('TRUE' & T[,C][2]))'D''M''M'("#" & ('TRUE' & T[,D][2])) , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M'("#" & ('TRUE' & C))'D''M''M'("#" & ('TRUE' & D)) , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*4)) ; # NOMBRE D'OPERATEURS : 15 # (CTRT:= 9 ; CTRLOC:=CTR ; TEST(T[,B][2]'A''M'CALL(5) 'C'T[,F][2]'E''M''M'("#" & ('TRUE' & T[,J][2]))'G'D0'OF'STR 'I'CALL(0)'H'I'F''M''M'I 'D''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''B''M'T[,D][2]) ; 'FOR' IDENT 'FROM' T[,B][2]'A''M' 5 'C'('INT' X:=F;X)'E''M''M'D0'OF'STR'G'J 'I'D0'OF'STR'H'D9'OF'STR'F''M''M'T[,I][2] 'D'D5'OF'STR'B''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' 'BY' ("#" & ('TRUE' & ('INT' X:=B;X)))'A''M''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI' 'C'T[,F][2]'E''M''M'J'G'J 'I'10'H' 9'F''M''M'D9'OF'STR 'D'E'B''M' 4 'TO' D2'OF'STR'A''M'('INT' X:=E;X) 'C'CALL(6)'E''M''M'D0'OF'STR'G''PROC''INT''IF'0=0 'THEN' 'INT':10 'ELSE' 'INT':0'FI' 'I'J'H'('INT' X:=I;X)'F''M''M'D9'OF'STR 'D'CALL(5)'B''M' 4 'WHILE' 1=(D2'OF'STR'A''M'T[,E][2] 'C'CALL(6)'E''M''M'("#" & ('TRUE' & T[,J][2]))'G'CALL(0) 'I''PROC''INT''IF'0=0 'THEN' 'INT':10 'ELSE' 'INT':0'FI''H' 9'F''M''M'D9'OF'STR 'D'("#" & ('TRUE' & E))'B''M'T[,D][2]) 'DO' [("#" & ('TRUE' & B))'A''M'('INT' X:=E;X) 'C'("#" & ('TRUE' & 'PROC''INT''IF'6=0 'THEN' 'INT':10 'ELSE' 'INT':6'FI'))'E''M''M'D0'OF'STR'G'("#" & ('TRUE' & D0'OF'STR)) 'I'10'H'('INT' X:=I;X)'F''M''M'T[,I][2] 'D'('INT' X:=E;X)'B''M'D : 4 , -1 : CALL(2)'A''M'CALL(5) 'C'CALL(6)'E''M''M'10'G'T[,J][2] 'I'T[,J][2]'H''PROC''INT''IF'9=0 'THEN' 'INT':10 'ELSE' 'INT':9'FI''F''M''M'CALL(9) 'D'T[,E][2]'B''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI'] 'R' ENT ; ENT [B'A''M'E 'C'D6'OF'STR'E''M''M'CALL(0)'G'J 'I'('INT' X:=J;X)'H'D9'OF'STR'F''M''M'D9'OF'STR 'D''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''B''M'CALL(4) , 0 ] := ENT[ 1,T[,B][2]'A''M'T[,E][2] 'C'CALL(6)'E''M''M'("#" & ('TRUE' & 10))'G'T[,J][2] 'I'J'H' 9'F''M''M'("#" & ('TRUE' & D9'OF'STR)) 'D'("#" & ('TRUE' & D5'OF'STR))'B''M'D] := B'A''M' 5 'C'("#" & ('TRUE' & D6'OF'STR))'E''M''M''PROC''INT''IF'0=0 'THEN' 'INT':10 'ELSE' 'INT':0'FI''G'J 'I'('INT' X:=J;X)'H'I'F''M''M' 9 'D''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''B''M'("#" & ('TRUE' & 4)) ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;("#" & ('TRUE' & B))'A''M'('INT' X:=E;X) 'C'("#" & ('TRUE' & T[,F][2]))'E''M''M'('INT' X:=J;X)'G''PROC''INT''IF'0=0 'THEN' 'INT':10 'ELSE' 'INT':0'FI' 'I'D0'OF'STR'H'I'F''M''M'T[,I][2] 'D'E'B''M'T[,D][2] ; 'REAL' PI = .12345 ; B'A''M'CALL(5) 'C'F'E''M''M'("#" & ('TRUE' & ("#" & ('TRUE' & D0'OF'STR))))'G'J 'I'10'H' 9'F''M''M'D9'OF'STR 'D''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''B''M'D4'OF'STR) ; TEST(PAR) ; ALFA:=?=:=( 2'A''M'("#" & ('TRUE' & ("#" & ('TRUE' & ('INT' X:=E;X))))) 'C'D6'OF'STR'E''M''M'CALL(0)'G'("#" & ('TRUE' & D0'OF'STR)) 'I'CALL(0)'H' 9'F''M''M'T[,I][2] 'D''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''B''M'("#" & ('TRUE' & 'PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI'))) ; 'R' IDENT ='PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI''A''M'D5'OF'STR 'C'("#" & ('TRUE' & 6))'E''M''M'D0'OF'STR'G'CALL(0) 'I'("#" & ('TRUE' & 'PROC''INT''IF'0=0 'THEN' 'INT':10 'ELSE' 'INT':0'FI'))'H''PROC''INT''IF'9=0 'THEN' 'INT':10 'ELSE' 'INT':9'FI''F''M''M''PROC''INT''IF'9=0 'THEN' 'INT':10 'ELSE' 'INT':9'FI' 'D' 5'B''M'D , 'R' LOC:='CASE' ('INT' X:=B;X)'A''M'E 'C'D6'OF'STR'E''M''M'CALL(0)'G'J 'I'CALL(0)'H''PROC''INT''IF'9=0 'THEN' 'INT':10 'ELSE' 'INT':9'FI''F''M''M'D9'OF'STR 'D''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''B''M'('INT' X:=D;X) 'IN' ("#" & ('TRUE' & T[,B][2]))'A''M'CALL(5) 'C'CALL(6)'E''M''M'D0'OF'STR'G''PROC''INT''IF'0=0 'THEN' 'INT':10 'ELSE' 'INT':0'FI' 'I'T[,J][2]'H'("#" & ('TRUE' & 9))'F''M''M' 9 'D''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''B''M'("#" & ('TRUE' & ('INT' X:=D;X))), 'SKIP' 'ESAC' , TAS:='PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI''A''M'CALL(5) 'C'F'E''M''M'10'G'('INT' X:=J;X) 'I'CALL(0)'H'T[,I][2]'F''M''M' 9 'D'D5'OF'STR'B''M'('INT' X:=D;X) ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : B'A''M'CALL(5) 'C' 6'E''M''M'CALL(0)'G'D0'OF'STR 'I'D0'OF'STR'H'T[,I][2]'F''M''M'I 'D'("#" & ('TRUE' & 'PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI'))'B''M'("#" & ('TRUE' & D4'OF'STR)) , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),(CALL(2)'A''M'T[,E][2] 'C' 6'E''M''M'J'G'D0'OF'STR 'I'T[,J][2]'H'T[,I][2]'F''M''M'D9'OF'STR 'D'E'B''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI',(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 2'A''M'E 'C' 6'E''M''M'T[,J][2]'G'("#" & ('TRUE' & J)) 'I''PROC''INT''IF'0=0 'THEN' 'INT':10 'ELSE' 'INT':0'FI''H'T[,I][2]'F''M''M'T[,I][2] 'D'T[,E][2]'B''M'CALL(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) ;D2'OF'STR'A''M'('INT' X:=E;X) 'C'('INT' X:=F;X)'E''M''M'10'G'D0'OF'STR 'I'10'H'T[,I][2]'F''M''M'I 'D'D5'OF'STR'B''M'CALL(4)) ; 'UNION'('R','CHAR') UNION := PR(PROC, ('INT' X:=B;X)'A''M'CALL(5) 'C'('INT' X:=F;X)'E''M''M'CALL(0)'G'CALL(0) 'I''PROC''INT''IF'0=0 'THEN' 'INT':10 'ELSE' 'INT':0'FI''H'T[,I][2]'F''M''M'T[,I][2] 'D''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''B''M'D4'OF'STR , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''PROC''INT''IF'2=0 'THEN' 'INT':10 'ELSE' 'INT':2'FI''A''M' 5 'C''PROC''INT''IF'6=0 'THEN' 'INT':10 'ELSE' 'INT':6'FI''E''M''M'CALL(0)'G'('INT' X:=J;X) 'I'10'H''PROC''INT''IF'9=0 'THEN' 'INT':10 'ELSE' 'INT':9'FI''F''M''M'I 'D'('INT' X:=E;X)'B''M'("#" & ('TRUE' & D))'END') , ?=:=(UNION;1=(CALL(2)'A''M'("#" & ('TRUE' & D5'OF'STR)) 'C'D6'OF'STR'E''M''M'('INT' X:=J;X)'G'T[,J][2] 'I'('INT' X:=J;X)'H'T[,I][2]'F''M''M'("#" & ('TRUE' & CALL(9))) 'D'CALL(5)'B''M'T[,D][2]) ! 2'A''M''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI' 'C'('INT' X:=F;X)'E''M''M'10'G'D0'OF'STR 'I'('INT' X:=J;X)'H'("#" & ('TRUE' & CALL(9)))'F''M''M'("#" & ('TRUE' & ("#" & ('TRUE' & T[,I][2])))) 'D' 5'B''M'D4'OF'STR) , 2'A''M'CALL(5) 'C'('INT' X:=F;X)'E''M''M'J'G'('INT' X:=J;X) 'I'J'H'D9'OF'STR'F''M''M'CALL(9) 'D'E'B''M'CALL(4) , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : B'A''M'('INT' X:=E;X) 'C'D6'OF'STR'E''M''M'D0'OF'STR'G'T[,J][2] 'I'("#" & ('TRUE' & T[,J][2]))'H'("#" & ('TRUE' & 9))'F''M''M'('INT' X:=I;X) 'D'E'B''M'('INT' X:=D;X) , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*15)) ; # NOMBRE D'OPERATEURS : 14 # (CTRT:= 10 ; CTRLOC:=CTR ; TEST('M'('INT' X:=H;X)'H'CALL(7) 'E''M' 7'E'E'C''M''M' 6 'C'('INT' X:=C;X)'C''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI''E'D4'OF'STR 'E''M' 5'H'('INT' X:=D;X)) ; 'FOR' IDENT 'FROM' 'M'H'H'G 'E''M'T[,G][2]'E'E'C''M''M'D6'OF'STR 'C'D3'OF'STR'C'('INT' X:=D;X)'E' 4 'E''M'('INT' X:=E;X)'H'CALL(4) 'BY' 'M'('INT' X:=H;X)'H'T[,G][2] 'E''M''PROC''INT''IF'7=0 'THEN' 'INT':10 'ELSE' 'INT':7'FI''E'("#" & ('TRUE' & 'PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI'))'C''M''M'D6'OF'STR 'C'('INT' X:=C;X)'C'CALL(4)'E'D 'E''M'("#" & ('TRUE' & 'PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI'))'H''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' 'TO' 'M'D8'OF'STR'H'T[,G][2] 'E''M'("#" & ('TRUE' & ('INT' X:=G;X)))'E'D5'OF'STR'C''M''M'F 'C'D3'OF'STR'C'D'E'('INT' X:=D;X) 'E''M'CALL(5)'H' 4 'WHILE' 1=('M'("#" & ('TRUE' & 'PROC''INT''IF'8=0 'THEN' 'INT':10 'ELSE' 'INT':8'FI'))'H'('INT' X:=G;X) 'E''M'("#" & ('TRUE' & G))'E'("#" & ('TRUE' & E))'C''M''M'D6'OF'STR 'C'('INT' X:=C;X)'C'CALL(4)'E'('INT' X:=D;X) 'E''M'T[,E][2]'H''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI') 'DO' ['M'H'H'G 'E''M'('INT' X:=G;X)'E' 5'C''M''M'('INT' X:=F;X) 'C'("#" & ('TRUE' & T[,C][2]))'C'D'E''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' 'E''M' 5'H'D4'OF'STR : 4 , -1 : 'M'CALL(8)'H''PROC''INT''IF'7=0 'THEN' 'INT':10 'ELSE' 'INT':7'FI' 'E''M'CALL(7)'E' 5'C''M''M'("#" & ('TRUE' & D6'OF'STR)) 'C'("#" & ('TRUE' & 'PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI'))'C'("#" & ('TRUE' & CALL(4)))'E'D 'E''M''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''H''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI'] 'R' ENT ; ENT ['M''PROC''INT''IF'8=0 'THEN' 'INT':10 'ELSE' 'INT':8'FI''H'G 'E''M'('INT' X:=G;X)'E'D5'OF'STR'C''M''M' 6 'C'('INT' X:=C;X)'C'T[,D][2]'E'CALL(4) 'E''M'CALL(5)'H'D4'OF'STR , 0 ] := ENT[ 1,'M'D8'OF'STR'H' 7 'E''M'CALL(7)'E'T[,E][2]'C''M''M'('INT' X:=F;X) 'C' 3'C''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI''E'('INT' X:=D;X) 'E''M'('INT' X:=E;X)'H'('INT' X:=D;X)] := 'M'("#" & ('TRUE' & 'PROC''INT''IF'8=0 'THEN' 'INT':10 'ELSE' 'INT':8'FI'))'H'D7'OF'STR 'E''M'CALL(7)'E'('INT' X:=E;X)'C''M''M''PROC''INT''IF'6=0 'THEN' 'INT':10 'ELSE' 'INT':6'FI' 'C'D3'OF'STR'C'D'E' 4 'E''M''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''H'CALL(4) ; TEST(ENT[1,0]) ; TEST(ENT[1,1]) 'OD' ; 'R' ALFA , 'R' PAR = ('SKIP' ;'M'H'H'CALL(7) 'E''M'('INT' X:=G;X)'E'("#" & ('TRUE' & ('INT' X:=E;X)))'C''M''M'T[,F][2] 'C' 3'C'CALL(4)'E'D4'OF'STR 'E''M'("#" & ('TRUE' & CALL(5)))'H'CALL(4) ; 'REAL' PI = .12345 ; 'M'CALL(8)'H'CALL(7) 'E''M'CALL(7)'E'D5'OF'STR'C''M''M''PROC''INT''IF'6=0 'THEN' 'INT':10 'ELSE' 'INT':6'FI' 'C''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''C'CALL(4)'E'CALL(4) 'E''M'('INT' X:=E;X)'H'('INT' X:=D;X)) ; TEST(PAR) ; ALFA:=?=:=('M'('INT' X:=H;X)'H''PROC''INT''IF'7=0 'THEN' 'INT':10 'ELSE' 'INT':7'FI' 'E''M'CALL(7)'E'E'C''M''M'("#" & ('TRUE' & ("#" & ('TRUE' & D6'OF'STR)))) 'C'CALL(3)'C' 4'E'D4'OF'STR 'E''M' 5'H'T[,D][2]) ; 'R' IDENT ='M'('INT' X:=H;X)'H'CALL(7) 'E''M'("#" & ('TRUE' & 'PROC''INT''IF'7=0 'THEN' 'INT':10 'ELSE' 'INT':7'FI'))'E'D5'OF'STR'C''M''M'('INT' X:=F;X) 'C'T[,C][2]'C'D'E'D4'OF'STR 'E''M'('INT' X:=E;X)'H'("#" & ('TRUE' & CALL(4))) , 'R' LOC:='CASE' 'M''PROC''INT''IF'8=0 'THEN' 'INT':10 'ELSE' 'INT':8'FI''H'CALL(7) 'E''M'D7'OF'STR'E'T[,E][2]'C''M''M'D6'OF'STR 'C'T[,C][2]'C''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI''E'T[,D][2] 'E''M'T[,E][2]'H'T[,D][2] 'IN' 'M'T[,H][2]'H' 7 'E''M'G'E'("#" & ('TRUE' & ('INT' X:=E;X)))'C''M''M'F 'C'T[,C][2]'C' 4'E''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' 'E''M'D5'OF'STR'H'CALL(4), 'SKIP' 'ESAC' , TAS:='M'("#" & ('TRUE' & D8'OF'STR))'H'G 'E''M'CALL(7)'E'E'C''M''M'CALL(6) 'C'D3'OF'STR'C' 4'E'D 'E''M' 5'H''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' ; TEST(IDENT) ; TEST(LOC) ; TEST(TAS) ; 'PROC' PROC = 'R' : 'M'D8'OF'STR'H'('INT' X:=G;X) 'E''M'G'E'T[,E][2]'C''M''M'CALL(6) 'C'T[,C][2]'C'D'E'D4'OF'STR 'E''M' 5'H'T[,D][2] , 'STRUCT'('COMPL' OF,'STRUCT'('R' DE,'COMPL' OF)DE) STRUCT :=((.11,0),('M'T[,H][2]'H'T[,G][2] 'E''M' 7'E'T[,E][2]'C''M''M' 6 'C'T[,C][2]'C'("#" & ('TRUE' & ("#" & ('TRUE' & ("#" & ('TRUE' & 4))))))'E'CALL(4) 'E''M' 5'H' 4,(0,1E0))); TEST(DE'OF'DE'OF'STRUCT) ; []'R' APD = (IDENT,PAR,LOC, 'M'('INT' X:=H;X)'H'T[,G][2] 'E''M' 7'E'CALL(5)'C''M''M'T[,F][2] 'C''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''C'D'E''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' 'E''M' 5'H''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI',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) ;'M' 8'H' 7 'E''M'CALL(7)'E'("#" & ('TRUE' & 'PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI'))'C''M''M'F 'C'('INT' X:=C;X)'C'('INT' X:=D;X)'E'D 'E''M'("#" & ('TRUE' & ("#" & ('TRUE' & CALL(5)))))'H'("#" & ('TRUE' & D))) ; 'UNION'('R','CHAR') UNION := PR(PROC, 'M'D8'OF'STR'H'D7'OF'STR 'E''M'G'E'CALL(5)'C''M''M'CALL(6) 'C''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''C'('INT' X:=D;X)'E'T[,D][2] 'E''M'("#" & ('TRUE' & CALL(5)))'H'D4'OF'STR , PROC) ; TEST((UNION ! ('R' A) : A)) ; (TEST('R''BEGIN''M''PROC''INT''IF'8=0 'THEN' 'INT':10 'ELSE' 'INT':8'FI''H''PROC''INT''IF'7=0 'THEN' 'INT':10 'ELSE' 'INT':7'FI' 'E''M'T[,G][2]'E'("#" & ('TRUE' & E))'C''M''M'("#" & ('TRUE' & ("#" & ('TRUE' & ('INT' X:=F;X))))) 'C''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''C'T[,D][2]'E'T[,D][2] 'E''M'D5'OF'STR'H'("#" & ('TRUE' & 'PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI'))'END') , ?=:=(UNION;1=('M'D8'OF'STR'H'CALL(7) 'E''M'T[,G][2]'E'CALL(5)'C''M''M'F 'C'('INT' X:=C;X)'C' 4'E''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' 'E''M'T[,E][2]'H' 4) ! 'M'H'H'G 'E''M' 7'E''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''C''M''M'F 'C'("#" & ('TRUE' & ('INT' X:=C;X)))'C'T[,D][2]'E'CALL(4) 'E''M' 5'H''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI') , 'M' 8'H' 7 'E''M'G'E'('INT' X:=E;X)'C''M''M'('INT' X:=F;X) 'C''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''C' 4'E'CALL(4) 'E''M'T[,E][2]'H'("#" & ('TRUE' & D4'OF'STR)) , TEST(('BOOL' BOOL='FALSE';UNION ! ('R') : 'M'("#" & ('TRUE' & H))'H' 7 'E''M'D7'OF'STR'E'CALL(5)'C''M''M'CALL(6) 'C'CALL(3)'C''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI''E''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' 'E''M''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''H'D4'OF'STR , ('CHAR' CAR) : 'SKIP'))) ; CTRL(17+28*14)) ; 'SKIP') ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R542C # (PRINT(("DYADIC FORMULAS",NEWLINE)) ; 'INT' VF = 10+5*(4*8+15+14) ; 'INT' CTRT:=0 , CTR:=0 , CTRLOC ; 'PROC' CTRL = ('INT' INC)'VOID' : (CTR/=CTRLOC+INC ! PRINT(("COUNT ER IN TEST",CTRT,CTR,CTRLOC+INC,NEWLINE))); 'MODE' 'R' = 'INT' ; 'PROC' TEST = ('INT' A)'VOID' : (A=1 ! CTR+:=1 ! PRINT(("ER",CTRT,CTR-CTRLOC,NEWLINE))) ; 'OP' ?=:==('INT' X)'INT' : (TEST(X) ; X) ; # SERVITUDES POUR SECONDAIRES # 'INT' B=2,C=3,D=4,E=5,F=6,G=7,H=8,I=9,J=10 ; 'STRUCT'('INT' D2,D3,D4,D5,D6,D7,D8,D9,D0) STR = (2,3,4,5,6,7,8,9,10) ; [,]'INT' T=((0,B,C,D,E,F,G,H,I,J),(1,2,3,4,5,6,7,8,9,10)) , 'PROC' CALL = ('INT' A)'INT' : (A=0!10!A) , 'OP' & = ('BOOL' A,'INT' B)'STRUCT'('INT' A,B) : (B,0) , & = ('CHAR' A,'STRUCT'('INT' A,B) B)'INT' : A'OF'B ; 'PRIO' & = 3 ; 'PRIO' 'A'=1 , 'B'=2,'C'=3,'D'=4,'E'=5,'F'=6,'G'=7,'H'=8,'I'=9 ; 'PROC' DYAD = ('INT' A,B)'INT' : ((A=B ! CTR+:=1 ! PRINT(("ER.PRIO",CTRT,CTR-CTRLOC,A,B,NEWLINE))) ; A-1) ; # CONTEXTES DEMANDANT UN MODE : REP # ('OP' 'M' = ('INT' A)'REF''INT' : 'HEAP''INT':=(CTR+:=1;A-1) ; 'PROC' REP = ('INT' A,B)'REF''INT' : 'HEAP''INT':=DYAD(A,B) ; 'OP'('INT','INT')'REF''INT' 'A'=REP,'B'=REP,'C'=REP,'D'=REP,'E'=REP, 'F'=REP,'G'=REP,'H'=REP,'I'=REP ; # NOMBRE D'OPERATEURS : 4 # CTRT:= 11 ; CTRLOC:=CTR ; TEST('M' 3'D''M''M' 4:= 'M' 3'D''M''M' 4:= ('M' 3'D''M''M' 4:/=: 'M' 3'D''M''M' 4 ! 'M' 3'D''M''M' 4)) ; CTRL(1+5*4) ; CTRT:= 12 ; CTRLOC:=CTR ; TEST('M'C'D''M''M'D:= 'M'C'D''M''M'D:= ('M'C'D''M''M'D:/=: 'M'C'D''M''M'D ! 'M'C'D''M''M'D)) ; CTRL(1+5*4) ; CTRT:= 13 ; CTRLOC:=CTR ; TEST('M'D3'OF'STR'D''M''M'D4'OF'STR:= 'M'D3'OF'STR'D''M''M'D4'OF'STR:= ('M'D3'OF'STR'D''M''M'D4'OF'STR:/=: 'M'D3'OF'STR'D''M''M'D4'OF'STR ! 'M'D3'OF'STR'D''M''M'D4'OF'STR)) ; CTRL(1+5*4) ; CTRT:= 14 ; CTRLOC:=CTR ; TEST('M'T[,C][2]'D''M''M'T[,D][2]:= 'M'T[,C][2]'D''M''M'T[,D][2]:= ('M'T[,C][2]'D''M''M'T[,D][2]:/=: 'M'T[,C][2]'D''M''M'T[,D][2] ! 'M'T[,C][2]'D''M''M'T[,D][2])) ; CTRL(1+5*4) ; CTRT:= 15 ; CTRLOC:=CTR ; TEST('M'CALL(3)'D''M''M'CALL(4):= 'M'CALL(3)'D''M''M'CALL(4):= ('M'CALL(3)'D''M''M'CALL(4):/=: 'M'CALL(3)'D''M''M'CALL(4) ! 'M'CALL(3)'D''M''M'CALL(4))) ; CTRL(1+5*4) ; CTRT:= 16 ; CTRLOC:=CTR ; TEST('M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI':= 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI':= ('M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI':/=: 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' ! 'M''PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI''D''M''M''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI')) ; CTRL(1+5*4) ; CTRT:= 17 ; CTRLOC:=CTR ; TEST('M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X):= 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X):= ('M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X):/=: 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X) ! 'M'('INT' X:=C;X)'D''M''M'('INT' X:=D;X))) ; CTRL(1+5*4) ; CTRT:= 18 ; CTRLOC:=CTR ; TEST('M'("#" & ('TRUE' & 'PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI'))'D''M''M'("#" & ('TRUE' & D4'OF'STR)):= 'M'("#" & ('TRUE' & 'PROC''INT''IF'3=0 'THEN' 'INT':10 'ELSE' 'INT':3'FI'))'D''M''M'("#" & ('TRUE' & 4)):= ('M'("#" & ('TRUE' & D3'OF'STR))'D''M''M'("#" & ('TRUE' & ('INT' X:=D;X))):/=: 'M'("#" & ('TRUE' & CALL(3)))'D''M''M'("#" & ('TRUE' & ("#" & ('TRUE' & D4'OF'STR)))) ! 'M'("#" & ('TRUE' & T[,C][2]))'D''M''M'("#" & ('TRUE' & D)))) ; CTRL(1+5*4) ; # NOMBRE D'OPERATEURS : 15 # CTRT:= 19 ; CTRLOC:=CTR ; TEST(CALL(2)'A''M'T[,E][2] 'C' 6'E''M''M'10'G'J 'I'J'H'('INT' X:=I;X)'F''M''M'CALL(9) 'D'E'B''M'CALL(4):= ("#" & ('TRUE' & ('INT' X:=B;X)))'A''M' 5 'C'D6'OF'STR'E''M''M'CALL(0)'G'CALL(0) 'I'D0'OF'STR'H'I'F''M''M''PROC''INT''IF'9=0 'THEN' 'INT':10 'ELSE' 'INT':9'FI' 'D'CALL(5)'B''M'D:= (CALL(2)'A''M'E 'C'F'E''M''M''PROC''INT''IF'0=0 'THEN' 'INT':10 'ELSE' 'INT':0'FI''G'J 'I'("#" & ('TRUE' & J))'H'D9'OF'STR'F''M''M'I 'D''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''B''M'CALL(4):/=: T[,B][2]'A''M'('INT' X:=E;X) 'C'("#" & ('TRUE' & D6'OF'STR))'E''M''M'T[,J][2]'G'("#" & ('TRUE' & J)) 'I'('INT' X:=J;X)'H'('INT' X:=I;X)'F''M''M'("#" & ('TRUE' & T[,I][2])) 'D''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''B''M'('INT' X:=D;X) ! CALL(2)'A''M'CALL(5) 'C''PROC''INT''IF'6=0 'THEN' 'INT':10 'ELSE' 'INT':6'FI''E''M''M'CALL(0)'G'T[,J][2] 'I'10'H' 9'F''M''M''PROC''INT''IF'9=0 'THEN' 'INT':10 'ELSE' 'INT':9'FI' 'D'('INT' X:=E;X)'B''M'('INT' X:=D;X))) ; CTRL(1+5*15) ; # NOMBRE D'OPERATEURS : 14 # CTRT:= 20 ; CTRLOC:=CTR ; TEST('M''PROC''INT''IF'8=0 'THEN' 'INT':10 'ELSE' 'INT':8'FI''H'G 'E''M'T[,G][2]'E'T[,E][2]'C''M''M'('INT' X:=F;X) 'C'('INT' X:=C;X)'C''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI''E'("#" & ('TRUE' & 4)) 'E''M''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''H'("#" & ('TRUE' & D)):= 'M'T[,H][2]'H'T[,G][2] 'E''M'G'E'("#" & ('TRUE' & 'PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI'))'C''M''M'D6'OF'STR 'C'CALL(3)'C'D'E'T[,D][2] 'E''M''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''H'D4'OF'STR:= ('M'H'H'D7'OF'STR 'E''M'CALL(7)'E'CALL(5)'C''M''M'D6'OF'STR 'C'CALL(3)'C'("#" & ('TRUE' & 4))'E'CALL(4) 'E''M'T[,E][2]'H' 4:/=: 'M'D8'OF'STR'H'D7'OF'STR 'E''M''PROC''INT''IF'7=0 'THEN' 'INT':10 'ELSE' 'INT':7'FI''E'CALL(5)'C''M''M''PROC''INT''IF'6 =0 'THEN' 'INT':10 'ELSE' 'INT':6'FI' 'C' 3'C'D4'OF'STR'E'('INT' X:=D;X) 'E''M'("#" & ('TRUE' & T[,E][2]))'H''PROC''INT''IF'4=0 'THEN' 'INT':10 'ELSE' 'INT':4'FI' ! 'M'("#" & ('TRUE' & D8'OF'STR))'H'('INT' X:=G;X) 'E''M'CALL(7)'E'T[,E][2]'C''M''M'('INT' X:=F;X) 'C'C'C'D4'OF'STR'E'T[,D][2] 'E''M''PROC''INT''IF'5=0 'THEN' 'INT':10 'ELSE' 'INT':5'FI''H'D4'OF'STR)) ; CTRL(1+5*14) ; 'SKIP') ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R543A # (PRINT(("PROCEDURE CALLS",NEWLINE)) ; 'INT' VF = 61*3 ; '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 PARAMETRES # 'MODE' 'UBS' = 'UNION'('STRUCT'('BOOL' DE),'BOOL') , [0:3]'REAL' RTR , 'CHAR' CAR="""", 'MODE' 'PRED' = 'REF''STRUCT'('STRING' OF,'PRED' DE), 'STRUCT'('STRING'OF,'PRED'DE) SCP1:=("",'NIL'); 'STRUCT'('STRING'OF,'PRED'DE) SCP := ("",SCP1) , 'REF''REF''REF''PRED' VRID:='NIL' , 'STRUCT'('BOOL' DE1 ,'STRING' DE2 ,'REF'[]'REAL' DE3 ,'PROC''UBS' DE4 ,'STRUCT'('CHAR' DE,OF) DE5 ,[,:][]'UNION'('INT','REAL') DE6 ,'PROC'('BITS','BITS')'COMPL' DE7 ,'UNION'('REF'[]'INT','REF''INT') DE8 ,'PRED' DE9 )S9=('TRUE' ,"#""'CO'" ,RTR ,'UBS' : ('TRUE') ,("""",CAR) ,((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3)) ,('BITS'Y,Z)'COMPL':((Y=Z!1),0E20) ,'HEAP'[1]'INT':=CTR ,SCP), 'BOOL' VARA, [-1:0] 'BOOL' T1 := []'BOOL'('SKIP','TRUE')[@-1] , 'PROC' P1=('INT' A,'BOOL'B)'BOOL' : B , 'PRIO' 'OPA' = 1 , 'OP'('INT','BOOL')'BOOL' 'OPA' = P1 ; 'STRING' VARB, [-1:0] 'STRING' T2 := []'STRING'('SKIP',"#""'CO'" )[@-1] , 'PROC' P2=('INT' A,'STRING'B)'STRING' : B , 'PRIO' 'OPB' = 2 , 'OP'('INT','STRING')'STRING' 'OPB' = P2 ; 'REF'[]'REAL' VARC, [-1:0] 'REF'[]'REAL' T3 := []'REF'[]'REAL' ('SKIP',RTR)[@-1] , 'PROC' P3=('INT' A,'REF'[]'REAL'B)'REF'[]'REAL' : B , 'PRIO' 'OPC' = 3 , 'OP'('INT','REF'[]'REAL')'REF'[]'REAL' 'OPC' = P3 ; 'PROC''UBS' VARD, [-1:0] 'PROC''UBS' T4 := []'PROC''UBS'('SKIP', 'UBS' : ('TRUE'))[@-1] , 'PROC' P4=('INT' A,'PROC''UBS'B)'PROC''UBS' : B , 'PRIO' 'OPD' = 4 , 'OP'('INT','PROC''UBS')'PROC''UBS' 'OPD' = P4 ; 'STRUCT'('CHAR' DE,OF) VARE, [-1:0] 'STRUCT'('CHAR' DE,OF) T5 := [] 'STRUCT'('CHAR' DE,OF)('SKIP',("""",CAR))[@-1] , 'PROC' P5=('INT' A,'STRUCT'('CHAR' DE,OF)B)'STRUCT'('CHAR' DE,OF) : B , 'PRIO' 'OPE' = 5 , 'OP'('INT','STRUCT'('CHAR' DE,OF))'STRUCT'('CHAR' DE,OF) 'OPE' = P5 ; [1:4,3][1]'UNION'('INT','REAL') VARF, [-1:0] [1:4,3][1] 'UNION'('INT','REAL') T6 := [][,:][]'UNION'('INT','REAL')('SKIP', ((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3)))[@-1] , 'PROC' P6=('INT' A,[,:][]'UNION'('INT','REAL')B)[,:][] 'UNION'('INT','REAL') : B , 'PRIO' 'OPF' = 6 , 'OP'('INT',[,:][]'UNION'('INT','REAL'))[,:][] 'UNION'('INT','REAL') 'OPF' = P6 ; 'PROC'('BITS','BITS')'COMPL' VARG, [-1:0] 'PROC'('BITS','BITS')'COMPL' T7 := []'PROC'('BITS','BITS')'COMPL' ('SKIP',('BITS'Y,Z)'COMPL':((Y=Z!1),0E20))[@-1] , 'PROC' P7=('INT' A,'PROC'('BITS','BITS')'COMPL'B) 'PROC'('BITS','BITS')'COMPL' : B , 'PRIO' 'OPG' = 7 , 'OP'('INT','PROC'('BITS','BITS')'COMPL')'PROC'('BITS','BITS')'COMPL' 'OPG' = P7 ; 'UNION'('REF'[]'INT','REF''INT') VARH, [-1:0] 'UNION'('REF'[]'INT','REF''INT') T8 := [] 'UNION'('REF'[]'INT','REF''INT')('SKIP','HEAP'[1]'INT':=CTR)[@-1] , 'PROC' P8=('INT' A,'UNION'('REF'[]'INT','REF''INT')B) 'UNION'('REF'[]'INT','REF''INT') : B , 'PRIO' 'OPH' = 8 , 'OP'('INT','UNION'('REF'[]'INT','REF''INT')) 'UNION'('REF'[]'INT','REF''INT') 'OPH' = P8 ; 'PRED' VARI, [-1:0] 'PRED' T9 := []'PRED'('SKIP',SCP)[@-1] , 'PROC' P9=('INT' A,'PRED'B)'PRED' : B , 'PRIO' 'OPI' = 9 , 'OP'('INT','PRED')'PRED' 'OPI' = P9 ; # SERVITUDES POUR PRIMAIRES DES APPELS # [2,1]'PROC''INT' DUPE := ('INT':1 , 'INT':1) , 'MODE' 'MA' = 'PROC'('BOOL' ,'STRING' ,'REF'[]'REAL' ,'PROC''UBS' ,'STRUCT'('CHAR' DE,OF) ,[,:][]'UNION'('INT','REAL') ,'PROC'('BITS','BITS')'COMPL' ,'UNION'('REF'[]'INT','REF''INT') ,'PRED')'INT' ; 'PROC' PA = ('BOOL' A , 'STRING' B , 'REF'[]'REAL' C , 'PROC''UBS' D , 'STRUCT'('CHAR' DE,OF) E , [,:][]'UNION'('INT','REAL') F , 'PROC'('BITS','BITS')'COMPL' G , 'UNION'('REF'[]'INT','REF''INT') H , 'PRED' I)'INT' : 'IF' []'BOOL' CONTROLE = (A , 'UPB' B=6 , C:=:RTR , (D!('STRUCT'('BOOL'DE)):'FALSE',('BOOL'D):D) , DE'OF'E=OF'OF'E , (F[2,3][1]!('INT'):'FALSE'!'TRUE') , RE'OF'G(2R1010101,16R55)=1.0 , (H!('REF'[]'INT' H):H[1]:/=:CTR) , DE'OF'DE'OF'I:=:'NIL' ) , 'BOOL' TOTAL:='TRUE'; 'FOR' I 'TO' 9 'DO'('NOT' CONTROLE[I] ! TOTAL:='FALSE' ; PRINT(("ER.PARAM ",I," IN TEST",CTRT,CTR-CTRLOC, NEWLINE))) 'OD' ; TOTAL 'THEN' CTR+:=1 ; 1 'FI' ; [3]'MA' TPA:=('SKIP' , PA , 'SKIP') , 'STRUCT'('MA' DE,OF) STRA= (PA , TPA[2]) ; 'PROC' PPAVA = 'PROC'('INT')'MA' : ('INT' A)'MA' : (A!'SKIP' , PA) , 'OP' 'A' = ('STRING' X,'PROC''MA' Y)'MA' : Y , 'PRIO' 'A' = 1 ; 'MODE' 'MB' = 'PROC'('BOOL' ,'STRING' ,'REF'[]'REAL' ,'PROC''UBS' ,'STRUCT'('CHAR' DE,OF) ,[,:][]'UNION'('INT','REAL') ,'PROC'('BITS','BITS')'COMPL' ,'UNION'('REF'[]'INT','REF''INT') ,'PRED')'REF''BOOL' ; 'PROC' PB = ('BOOL' A , 'STRING' B , 'REF'[]'REAL' C , 'PROC''UBS' D , 'STRUCT'('CHAR' DE,OF) E , [,:][]'UNION'('INT','REAL') F , 'PROC'('BITS','BITS')'COMPL' G , 'UNION'('REF'[]'INT','REF''INT') H , 'PRED' I)'REF''BOOL' : 'HEAP''BOOL':=(CTR+:=PA(A,B,C,D,E,F,G,H,I) ; 'TRUE') ; [3]'MB' TPB:=('SKIP' , PB , 'SKIP') , 'STRUCT'('MB' DE,OF) STRB= (PB , TPB[2]) ; 'PROC' PPAVB = 'PROC'('INT')'MB' : ('INT' A)'MB' : (A!'SKIP' , PB) , 'OP' 'B' = ('STRING' X,'PROC''MB' Y)'MB' : Y , 'PRIO' 'B' = 1 ; 'MODE' 'MC' = 'PROC'('BOOL' ,'STRING' ,'REF'[]'REAL' ,'PROC''UBS' ,'STRUCT'('CHAR' DE,OF) ,[,:][]'UNION'('INT','REAL') ,'PROC'('BITS','BITS')'COMPL' ,'UNION'('REF'[]'INT','REF''INT') ,'PRED')'MSTR' ; 'PROC' PC = ('BOOL' A , 'STRING' B , 'REF'[]'REAL' C , 'PROC''UBS' D , 'STRUCT'('CHAR' DE,OF) E , [,:][]'UNION'('INT','REAL') F , 'PROC'('BITS','BITS')'COMPL' G , 'UNION'('REF'[]'INT','REF''INT') H , 'PRED' I)'MSTR' : (CTR+:=2 , PA(A,B,C,D,E,F,G,H,I)) ; [3]'MC' TPC:=('SKIP' , PC , 'SKIP') , 'STRUCT'('MC' DE,OF) STRC= (PC , TPC[2]) ; 'PROC' PPAVC = 'PROC'('INT')'MC' : ('INT' A)'MC' : (A!'SKIP' , PC) , 'OP' 'C' = ('STRING' X,'PROC''MC' Y)'MC' : Y , 'PRIO' 'C' = 1 ; 'MODE' 'MD' = 'PROC'('BOOL' ,'STRING' ,'REF'[]'REAL' ,'PROC''UBS' ,'STRUCT'('CHAR' DE,OF) ,[,:][]'UNION'('INT','REAL') ,'PROC'('BITS','BITS')'COMPL' ,'UNION'('REF'[]'INT','REF''INT') ,'PRED')[,,]'PROC''INT' ; 'PROC' PD = ('BOOL' A , 'STRING' B , 'REF'[]'REAL' C , 'PROC''UBS' D , 'STRUCT'('CHAR' DE,OF) E , [,:][]'UNION'('INT','REAL') F , 'PROC'('BITS','BITS')'COMPL' G , 'UNION'('REF'[]'INT','REF''INT') H , 'PRED' I)[,,]'PROC''INT' : (DUPE,DUPE,((PA(A,B,C,D,E,F,G,H,I) ; 'INT' : CTR+:=100), 'INT' : CTR+:=3)) ; [3]'MD' TPD:=('SKIP' , PD , 'SKIP') , 'STRUCT'('MD' DE,OF) STRD= (PD , TPD[2]) ; 'PROC' PPAVD = 'PROC'('INT')'MD' : ('INT' A)'MD' : (A!'SKIP' , PD) , 'OP' 'D' = ('STRING' X,'PROC''MD' Y)'MD' : Y , 'PRIO' 'D' = 1 ; 'MODE' 'ME' = 'PROC'('BOOL' ,'STRING' ,'REF'[]'REAL' ,'PROC''UBS' ,'STRUCT'('CHAR' DE,OF) ,[,:][]'UNION'('INT','REAL') ,'PROC'('BITS','BITS')'COMPL' ,'UNION'('REF'[]'INT','REF''INT') ,'PRED')'PROC'('STRING')'VOID' ; 'PROC' PE = ('BOOL' A , 'STRING' B , 'REF'[]'REAL' C , 'PROC''UBS' D , 'STRUCT'('CHAR' DE,OF) E , [,:][]'UNION'('INT','REAL') F , 'PROC'('BITS','BITS')'COMPL' G , 'UNION'('REF'[]'INT','REF''INT') H , 'PRED' I)'PROC'('STRING')'VOID' : (PA(A,B,C,D,E,F,G,H,I) ;('STRING' A)'VOID' : CTR+:=3+'LWB'A) ; [3]'ME' TPE:=('SKIP' , PE , 'SKIP') , 'STRUCT'('ME' DE,OF) STRE= (PE , TPE[2]) ; 'PROC' PPAVE = 'PROC'('INT')'ME' : ('INT' A)'ME' : (A!'SKIP' , PE) , 'OP' 'E' = ('STRING' X,'PROC''ME' Y)'ME' : Y , 'PRIO' 'E' = 1 ; 'UNION'('INT','MA') VU := PA ; # CONTEXTES # ( CTRT:= 1; CTRLOC:=CTR ; 'FOR' IDENT 'FROM' PA(DE1'OF'S9 ,'STRING' : "#""'CO'" ,-(CTR*:=1) 'OPC' 'REF'[]'REAL'(RTR) ,'PROC''UBS' : 'UBS' : ('TRUE') ,("""",CAR) ,'CASE''INT'X;VU'IN'('INT'X):'GOTO'STOP 'OUT'((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3))'ESAC' ,('BITS'Y,Z)'COMPL':((Y=Z!1),0E20) ,DE8'OF'S9 ,'LOC''PRED':=SCP) 'BY'PA( -(CTR*:=1) 'OPA' 'BOOL'('TRUE') ,DE2'OF'S9 ,'HEAP''REF'[]'REAL':=RTR ,P4(0,'UBS' : ('TRUE')) ,T5[0] ,DE6'OF'S9 ,DE7'OF'S9 ,-(CTR*:=1) 'OPH' 'UNION'('REF'[]'INT','REF''INT')('HEAP'[1]'INT':=CTR) ,DE9'OF'S9) 'TO' PA( 'NIL':=:VRID ,'STRING' : "#""'CO'" ,(VRID:=:'NIL'!RTR) ,DE4'OF'S9 ,(1!("""",CAR),'GOTO'STOP) ,DE6'OF'S9 ,T7[0] ,'HEAP'[1]'INT':=CTR ,P9(0,'LOC''STRUCT'('STRING'OF,'PRED'DE):=("",SCP1))) 'WHILE' PB( -(CTR*:=1) 'OPA' 'BOOL'('TRUE') ,DE2'OF'S9 ,'REF'[]'REAL' : RTR ,T4[0] ,'STRUCT'('CHAR' DE,OF) : ("""",CAR) ,'HEAP'[1:4,3][1]'UNION'('INT','REAL'):= ((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3)) ,T7[0] ,P8(0,'HEAP'[1]'INT':=CTR) ,P9(0,SCP)) 'DO' [PA( DE1'OF'S9 ,DE2'OF'S9 ,DE3'OF'S9 ,T4[0] ,-(CTR*:=1) 'OPE' 'STRUCT'('CHAR' DE,OF)(("""",CAR)) ,[,:][]'UNION'('INT','REAL') : ((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3)) ,(VRID:=:'NIL'!('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,(VRID:=:'NIL'!'HEAP'[1]'INT':=CTR) ,'PRED' : SCP) : 4 , -IDENT : PA( 'BOOL' : 'TRUE' ,(VRID:=:'NIL'!"#""'CO'") ,DE3'OF'S9 ,(VRID:=:'NIL'!'UBS' : ('TRUE')) ,'LOC''STRUCT'('CHAR' DE,OF):=("""",CAR) ,-(CTR*:=1) 'OPF' [,:][]'UNION'('INT','REAL')(((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3))) ,'PROC'('BITS','BITS')'COMPL' : ('BITS'Y,Z)'COMPL':((Y=Z!1),0E20) ,'HEAP'[1]'INT':=CTR ,P9(0,SCP))] 'INT' ENT ; ENT [PA( VARA:='TRUE' ,(VRID:=:'NIL'!"#""'CO'") ,'REF'[]'REAL' : RTR ,(VRID:=:'NIL'!'UBS' : ('TRUE')) ,T5[0] ,[,:][]'UNION'('INT','REAL') 'CASE''INT'X;VU'IN'('INT'X):'GOTO'STOP 'OUT'((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3))'ESAC' ,-(CTR*:=1) 'OPG' 'PROC'('BITS','BITS')'COMPL'(('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,(VRID:=:'NIL'!'HEAP'[1]'INT':=CTR) ,VARI:=SCP) , 0 ]:= ENT[IDENT , PA( 'NIL':=:VRID ,VARB:="#""'CO'" ,(VRID:=:'NIL'!RTR) ,P4(0,'UBS' : ('TRUE')) ,DE5'OF'S9 ,(VRID:=:'NIL'!((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3))) ,T7[0] ,'HEAP''UNION'('REF'[]'INT','REF''INT'):='HEAP'[1]'INT':=CTR ,(VRID:=:'NIL'!SCP)) ]:=PA( 'TRUE' ,'STRING' : "#""'CO'" ,-(CTR*:=1) 'OPC' 'REF'[]'REAL'(RTR) ,-(CTR*:=1) 'OPD' 'PROC''UBS'('UBS' : ('TRUE')) ,(1!("""",CAR),'GOTO'STOP) ,DE6'OF'S9 ,('BITS'Y,Z)'COMPL':((Y=Z!1),0E20) ,(VRID:=:'NIL'!'HEAP'[1]'INT':=CTR) ,(1!'LOC''STRUCT'('STRING'OF,'PRED'DE):=("",SCP1),'GOTO'STOP))'OD' ; 'INT' ALFA , 'INT' PAR=('SKIP';PA( 'HEAP''BOOL':='TRUE' ,'STRING'(VRID:=:'NIL'!"#""'CO'") ,'BEGIN''INT'X;L:RTR'END' ,P4(0,'UBS' : ('TRUE')) ,-(CTR*:=1) 'OPE' 'STRUCT'('CHAR' DE,OF)(("""",CAR)) ,P6(0,((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3))) ,(VRID:=:'NIL'!('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,-(CTR*:=1) 'OPH' 'UNION'('REF'[]'INT','REF''INT')('HEAP'[1]'INT':=CTR) ,DE9'OF'S9); 'REAL' PP=1.00001;PA( DE1'OF'S9 ,"#""'CO'" ,-(CTR*:=1) 'OPC' 'REF'[]'REAL'(RTR) ,'PROC''UBS' : 'UBS' : ('TRUE') ,DE5'OF'S9 ,DE6'OF'S9 ,-(CTR*:=1) 'OPG' 'PROC'('BITS','BITS')'COMPL'(('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,T8[0] ,VARI:=SCP)); ALFA:=1+(PA( DE1'OF'S9 ,(VRID:=:'NIL'!"#""'CO'") ,P3(0,RTR) ,(VRID:=:'NIL'!'UBS' : ('TRUE')) ,(VRID:=:'NIL'!("""",CAR)) ,T6[0] ,DE7'OF'S9 ,'UNION'('REF'[]'INT','REF''INT') : 'HEAP'[1]'INT':=CTR ,'PRED' : SCP)) ; 'INT' IDENT=PA( (1!'TRUE','GOTO'STOP) ,VARB:="#""'CO'" ,('GOTO' F ; E:RTR 'EXIT' F : 'GOTO' E) ,(VRID:=:'NIL'!'UBS' : ('TRUE')) ,VARE:=("""",CAR) ,((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3)) ,'CASE''INT'X;VU'IN'('INT'X):'GOTO'STOP 'OUT'('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)'ESAC' ,'HEAP''UNION'('REF'[]'INT','REF''INT'):='HEAP'[1]'INT':=CTR ,VARI:=SCP) , 'INT' LOC:='CASE'PA( ('GOTO' F ; E:'TRUE' 'EXIT' F : 'GOTO' E) ,'HEAP''STRING':="#""'CO'" ,P3(0,RTR) ,-(CTR*:=1) 'OPD' 'PROC''UBS'('UBS' : ('TRUE')) ,P5(0,("""",CAR)) ,T6[0] ,(VRID:=:'NIL'!('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,'LOC''UNION'('REF'[]'INT','REF''INT'):='HEAP'[1]'INT':=CTR ,'LOC''PRED':=SCP) 'IN'PA( -(CTR*:=1) 'OPA' 'BOOL'('TRUE') ,(VRID:=:'NIL'!"#""'CO'") ,'REF'[]'REAL'(VRID:=:'NIL'!RTR) ,VARD:='UBS' : ('TRUE') ,("""",CAR) ,(VRID:=:'NIL'!((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3))) ,T7[0] ,(VRID:=:'NIL'!'HEAP'[1]'INT':=CTR) ,'LOC''STRUCT'('STRING'OF,'PRED'DE):=("",SCP1)),'SKIP' 'ESAC' , TAS:=PA( 'BOOL'(VRID:=:'NIL'!'TRUE') ,-(CTR*:=1) 'OPB' 'STRING'("#""'CO'") ,(1!RTR,'GOTO'STOP) ,'UBS' : ('TRUE') ,'STRUCT'('CHAR' DE,OF) : ("""",CAR) ,T6[0] ,'CASE''INT'X;VU'IN'('INT'X):'GOTO'STOP 'OUT'('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)'ESAC' ,(VRID:=:'NIL'!'HEAP'[1]'INT':=CTR) ,(VRID:=:'NIL'!SCP)) , 'PROC' PROC = 'INT' : PA( P1(0,'TRUE') ,DE2'OF'S9 ,T3[0] ,T4[0] ,("""",CAR) ,'HEAP'[1:4,3][1]'UNION'('INT','REAL'):= ((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3)) ,(VRID:=:'NIL'!('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,'UNION'('REF'[]'INT','REF''INT') : 'HEAP'[1]'INT':=CTR ,DE9'OF'S9) ,'STRUCT'('COMPL'OF,'STRUCT'('INT'DE,'COMPL'OF)DE) STRUCT :=((.111,0),(PA( 'LOC''BOOL':='TRUE' ,T2[0] ,'REF'[]'REAL' : RTR ,DE4'OF'S9 ,P5(0,("""",CAR)) ,(1!((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3)),'GOTO'STOP) ,-(CTR*:=1) 'OPG' 'PROC'('BITS','BITS')'COMPL'(('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,(VRID:=:'NIL'!'HEAP'[1]'INT':=CTR) ,T9[0]),(0,0E1))); []'INT' APD=(IDENT,PAR,LOC, PA( 'BOOL' : 'TRUE' ,'BEGIN''INT'X;L:"#""'CO'"'END' ,T3[0] ,'PROC''UBS''CASE''INT'X;VU'IN'('INT'X):'GOTO'STOP 'OUT''UBS' : ('TRUE')'ESAC' ,DE5'OF'S9 ,VARF:=((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3)) ,P7(0,('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,DE8'OF'S9 ,-(CTR*:=1) 'OPI' 'PRED'(SCP)) ,PROC,TAS,DE'OF'DE'OF'STRUCT) , 'PROC' PR:=('INT'REP,REPREP,'PROC''INT' REPPROC)'INT': PA( 'NIL':=:VRID ,P2(0,"#""'CO'") ,'LOC''REF'[]'REAL':=RTR ,'UBS' : ('TRUE') ,-(CTR*:=1) 'OPE' 'STRUCT'('CHAR' DE,OF)(("""",CAR)) ,(VRID:=:'NIL'!((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3))) ,(VRID:=:'NIL'!('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,'UNION'('REF'[]'INT','REF''INT') : 'HEAP'[1]'INT':=CTR ,'HEAP''PRED':=SCP) ;'UNION'('REAL','INT','COMPL')UNION :=PR(PROC,PA( (1!'TRUE','GOTO'STOP) ,'STRING' : "#""'CO'" ,RTR ,'LOC''PROC''UBS':='UBS' : ('TRUE') ,'STRUCT'('CHAR' DE,OF) : ("""",CAR) ,-(CTR*:=1) 'OPF' [,:][]'UNION'('INT','REAL')(((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3))) ,'PROC'('BITS','BITS')'COMPL' : ('BITS'Y,Z)'COMPL':((Y=Z!1),0E20) ,(VRID:=:'NIL'!'HEAP'[1]'INT':=CTR) ,DE9'OF'S9),PROC) ;('INT''BEGIN'PA( 'TRUE' ,(VRID:=:'NIL'!"#""'CO'") ,RTR ,'PROC''UBS' : 'UBS' : ('TRUE') ,'CASE''INT'X;VU'IN'('INT'X):'GOTO'STOP 'OUT'("""",CAR)'ESAC' ,[,:][]'UNION'('INT','REAL') : ((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3)) ,'PROC'('BITS','BITS')'COMPL' : ('BITS'Y,Z)'COMPL':((Y=Z!1),0E20) ,'UNION'('REF'[]'INT','REF''INT') : 'HEAP'[1]'INT':=CTR ,DE9'OF'S9)'END' , ?=:=(UNION;PB( 'NIL':=:VRID ,T2[0] ,P3(0,RTR) ,'UBS' : ('TRUE') ,(VRID:=:'NIL'!("""",CAR)) ,((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3)) ,'PROC'('BITS','BITS')'COMPL' : ('BITS'Y,Z)'COMPL':((Y=Z!1),0E20) ,VARH:='HEAP'[1]'INT':=CTR ,DE9'OF'S9) ! PA( P1(0,'TRUE') ,DE2'OF'S9 ,P3(0,RTR) ,DE4'OF'S9 ,DE5'OF'S9 ,T6[0] ,-(CTR*:=1) 'OPG' 'PROC'('BITS','BITS')'COMPL'(('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,'UNION'('REF'[]'INT','REF''INT') : 'HEAP'[1]'INT':=CTR ,T9[0]) ) , PA( 'BOOL' : 'TRUE' ,DE2'OF'S9 ,RTR ,DE4'OF'S9 ,DE5'OF'S9 ,P6(0,((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3))) ,('BITS'Y,Z)'COMPL':((Y=Z!1),0E20) ,T8[0] ,'HEAP''PRED':='LOC''STRUCT'('STRING'OF,'PRED'DE):=("",SCP1)), ('BOOL' BOOL='TRUE' ; UNION!('INT'): PA( 'LOC''BOOL':='TRUE' ,(VRID:=:'NIL'!"#""'CO'") ,P3(0,RTR) ,'PROC''UBS' : 'UBS' : ('TRUE') ,P5(0,("""",CAR)) ,-(CTR*:=1) 'OPF' [,:][]'UNION'('INT','REAL')(((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3))) ,(1!('BITS'Y,Z)'COMPL':((Y=Z!1),0E20),'GOTO'STOP) ,'UNION'('REF'[]'INT','REF''INT') : 'HEAP'[1]'INT':=CTR ,SCP) ,('COMPL' COMPLEX):'SKIP')) ; PB( P1(0,'TRUE') ,"#""'CO'" ,(VRID:=:'NIL'!RTR) ,P4(0,'UBS' : ('TRUE')) ,('GOTO' F ; E:("""",CAR) 'EXIT' F : 'GOTO' E) ,'BEGIN''INT'X;L:((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3))'END' ,(VRID:=:'NIL'!('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,'HEAP'[1]'INT':=CTR ,DE9'OF'S9) :=PB( P1(0,'TRUE') ,(VRID:=:'NIL'!"#""'CO'") ,P3(0,RTR) ,'LOC''PROC''UBS':='UBS' : ('TRUE') ,-(CTR*:=1) 'OPE' 'STRUCT'('CHAR' DE,OF)(("""",CAR)) ,(VRID:=:'NIL'!((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3))) ,-(CTR*:=1) 'OPG' 'PROC'('BITS','BITS')'COMPL'(('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,'HEAP''UNION'('REF'[]'INT','REF''INT'):='HEAP'[1]'INT':=CTR ,(VRID:=:'NIL'!SCP)) :=PB( 'BOOL' : 'TRUE' ,('GOTO' F ; E:"#""'CO'" 'EXIT' F : 'GOTO' E) ,RTR ,P4(0,'UBS' : ('TRUE')) ,(VRID:=:'NIL'!("""",CAR)) ,P6(0,((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3))) ,P7(0,('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,DE8'OF'S9 ,SCP) :=:PB( 'HEAP''BOOL':='TRUE' ,T2[0] ,'REF'[]'REAL' : RTR ,'UBS' : ('TRUE') ,P5(0,("""",CAR)) ,VARF:=((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3)) ,-(CTR*:=1) 'OPG' 'PROC'('BITS','BITS')'COMPL'(('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,VARH:='HEAP'[1]'INT':=CTR ,(VRID:=:'NIL'!'LOC''STRUCT'('STRING'OF,'PRED'DE):=("",SCP1))) ; ?==:PA( 'TRUE' ,P2(0,"#""'CO'") ,DE3'OF'S9 ,P4(0,'UBS' : ('TRUE')) ,-(CTR*:=1) 'OPE' 'STRUCT'('CHAR' DE,OF)(("""",CAR)) ,T6[0] ,(VRID:=:'NIL'!('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,P8(0,'HEAP'[1]'INT':=CTR) ,DE9'OF'S9) ?==: (PB( 'HEAP''BOOL':='TRUE' ,T2[0] ,DE3'OF'S9 ,(VRID:=:'NIL'!'UBS' : ('TRUE')) ,-(CTR*:=1) 'OPE' 'STRUCT'('CHAR' DE,OF)(("""",CAR)) ,[,:][]'UNION'('INT','REAL')(VRID:=:'NIL'! ((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3))) ,'LOC''PROC'('BITS','BITS')'COMPL':= ('BITS'Y,Z)'COMPL':((Y=Z!1),0E20) ,'HEAP''UNION'('REF'[]'INT','REF''INT'):='HEAP'[1]'INT':=CTR ,DE9'OF'S9) ?==: RE'OF'DE'OF' PC( 'TRUE' ,P2(0,"#""'CO'") ,DE3'OF'S9 ,T4[0] ,('GOTO' F ; E:("""",CAR) 'EXIT' F : 'GOTO' E) ,'LOC'[1:4,3][1]'UNION'('INT','REAL'):= ((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3)) ,P7(0,('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,DE8'OF'S9 ,T9[0]) ?==:PC( -(CTR*:=1) 'OPA' 'BOOL'('TRUE') ,DE2'OF'S9 ,VARC:=RTR ,P4(0,'UBS' : ('TRUE')) ,("""",CAR) ,T6[0] ,'BEGIN''INT'X;L:('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)'END' ,T8[0] ,SCP) ) ?==:?==:PA( DE1'OF'S9 ,DE2'OF'S9 ,-(CTR*:=1) 'OPC' 'REF'[]'REAL'(RTR) ,'UBS' : ('TRUE') ,('GOTO' F ; E:("""",CAR) 'EXIT' F : 'GOTO' E) ,T6[0] ,'BEGIN''INT'X;L:('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)'END' ,T8[0] ,DE9'OF'S9) ; PD( T1[0] ,'HEAP''STRING':="#""'CO'" ,(VRID:=:'NIL'!RTR) ,'UBS' : ('TRUE') ,P5(0,("""",CAR)) ,[,:][]'UNION'('INT','REAL') : ((1,.1,0),(0,0,.0),(1,2,3),(.1,.2,.3)) ,-(CTR*:=1) 'OPG' 'PROC'('BITS','BITS')'COMPL'(('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,DE8'OF'S9 ,(VRID:=:'NIL'!SCP))[3 , , 1 ] [1] ; PE( 'TRUE' ,-(CTR*:=1) 'OPB' 'STRING'("#""'CO'") ,-(CTR*:=1) 'OPC' 'REF'[]'REAL'(RTR) ,P4(0,'UBS' : ('TRUE')) ,("""",CAR) ,T6[0] ,P7(0,('BITS'Y,Z)'COMPL':((Y=Z!1),0E20)) ,P8(0,'HEAP'[1]'INT':=CTR) ,P9(0,'LOC''STRUCT'('STRING'OF,'PRED'DE):=("",SCP1)))( ( ) ); CTRL(61)) ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R6E # (PRINT(("COERCIONS IN SOFT CONTEXT",NEWLINE)) ; 'INT' VF = 330 ; 'INT' CTRT:=0, CTR:=0 ; 'MODE' 'MODEREP' = 'REF' 'UNION'('INT','COMPL') ; # PROCEDURE DE CONTROLE # 'BOOL' ACTIVE := 'TRUE' ; 'PROC' C = ('UNION'('REF''PROC''INT','REF''REF''COMPL', 'REF''PROC'[]'UNION'('INT','COMPL'),'MODEREP') PAR)'VOID' : CTR+:=(PAR ! ('REF''PROC''INT' P) : (ACTIVE:='FALSE' ; 'INT' X=P ; ACTIVE:='TRUE' ; X ) , ('REF''REF''COMPL') : 5 , ('REF''PROC'[]'UNION'('INT','COMPL')) : 7 , ('MODEREP') : 11 ! PRINT(("ERREUR MODE",CTRT,NEWLINE)) ; 0) ; # INSTRUCTIONS DE SERVITUDE GENERALES # 'PROC' PE = 'INT' : (ACTIVE!PRINT("ACTIVATION PE");0 ! 3) ; 'PROC' 'INT' RPE:=PE ; 'HEAP' 'COMPL' RC ; 'REF' 'COMPL' RRC:=RC ; 'UNION'('INT','COMPL')RU := 1'I'0 ; 'PROC' RPRU:=[]'UNION'('INT','COMPL') : (PRINT("ACTIVATION PRU");1); 'BEGIN' # SERVITUDES POUR UNITES DU MODE 'PROC''PROC''REF''PROC''INT' # 'PROC''PROC''REF''PROC''INT' IDENT = 'PROC''REF''PROC''INT' : 'REF''PROC''INT' : RPE; 'OP' &=:=('BOOL' A,'PROC''PROC''REF''PROC''INT'B)'PROC''PROC' 'REF''PROC''INT' : (A!B) , 'PRIO' &=:= 9 , 'STRUCT'('PROC''PROC''REF''PROC''INT'DE,OF) DE = (IDENT,'SKIP') ; []'PROC''PROC''REF''PROC''INT'RANG = IDENT , 'PROC' PAV = ('PROC''PROC''REF''PROC''INT' X) 'PROC''PROC''REF''PROC''INT' : X ; # CONTEXTES # CTRT:= 1 ; C(('PROC''REF''PROC''INT' : 'REF''PROC''INT' : RPE):= ( ('PROC''REF''PROC''INT' : 'REF''PROC''INT' : RPE) := ('PROC''REF''PROC''INT' : 'REF''PROC''INT' : RPE) := ('PROC''REF''PROC''INT' : 'REF''PROC''INT' : RPE) := PE)) ; ((('PROC''REF''PROC''INT' : 'REF''PROC''INT' : RPE) :/=: 'NIL')'AND' (RPE :=: ('PROC''REF''PROC''INT' : 'REF''PROC''INT' : RPE))! CTR+:=1) ; CTRT:= 2 ; C('NOT''FALSE'&=:IDENT:= ( 'NOT''FALSE'&=:IDENT := 'NOT''FALSE'&=:IDENT := 'NOT''FALSE'&=:IDENT := PE)) ; (('NOT''FALSE'&=:IDENT :/=: 'NIL')'AND' (RPE :=: 'NOT''FALSE'&=:IDENT)! CTR+:=1) ; CTRT:= 3 ; C(DE'OF'DE:= ( DE'OF'DE := DE'OF'DE := DE'OF'DE := PE)) ; ((DE'OF'DE :/=: 'NIL')'AND' (RPE :=: DE'OF'DE)! CTR+:=1) ; CTRT:= 4 ; C(RANG[1]:= ( RANG[1] := RANG[1] := RANG[1] := PE)) ; ((RANG[1] :/=: 'NIL')'AND' (RPE :=: RANG[1])! CTR+:=1) ; CTRT:= 5 ; C(PAV(IDENT):= ( PAV(IDENT) := PAV(IDENT) := PAV(IDENT) := PE)) ; ((PAV(IDENT) :/=: 'NIL')'AND' (RPE :=: PAV(IDENT))! CTR+:=1) ; CTRT:= 6 ; C('PROC''PROC''REF''PROC''INT''BEGIN'IDENT'END':= ( 'PROC''PROC''REF''PROC''INT''BEGIN'IDENT'END' := 'PROC''PROC''REF''PROC''INT''BEGIN'IDENT'END' := 'PROC''PROC''REF''PROC''INT''BEGIN'IDENT'END' := PE)) ; (('PROC''PROC''REF''PROC''INT''BEGIN'IDENT'END' :/=: 'NIL')'AND' (RPE :=: 'PROC''PROC''REF''PROC''INT''BEGIN'IDENT'END')! CTR+:=1) ; CTRT:= 7 ; C(IDENT:= ( IDENT := IDENT := IDENT := PE)) ; ((IDENT :/=: 'NIL')'AND' (RPE :=: IDENT)! CTR+:=1) ; CTRT:= 8 ; C('BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END':= ( 'BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END' := 'BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END' := 'BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END' := PE)) ; (('BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END' :/=: 'NIL')'AND' (RPE :=: 'BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END')! CTR+:=1) ; CTRT:= 9 ; C(('TRUE'!'SKIP';IDENT):= ( ('TRUE'!'SKIP';IDENT) := ('TRUE'!'SKIP';IDENT) := ('TRUE'!'SKIP';IDENT) := PE)) ; ((('TRUE'!'SKIP';IDENT) :/=: 'NIL')'AND' (RPE :=: ('TRUE'!'SKIP';IDENT))! CTR+:=1) ; CTRT:= 10 ; C('CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC':= ( 'CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC' := 'CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC' := 'CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC' := PE)) ; (('CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC' :/=: 'NIL')'AND' (RPE :=: 'CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC')! CTR+:=1) ; CTRT:= 11 ; C((RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) := ( (RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) := (RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) := (RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) := PE)) ; (((RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) :/=: 'NIL')'AND' (RPE :=: (RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) )! CTR+:=1) ; 'SKIP' 'END' ; 'BEGIN' # SERVITUDES POUR UNITES DU MODE 'PROC''REF''REF''COMPL' # 'PROC''REF''REF''COMPL' IDENT = 'REF''REF''COMPL' : RRC; 'OP' &=:=('BOOL' A,'PROC''REF''REF''COMPL'B)'PROC''REF''REF''COMPL' : (A!B) , 'PRIO' &=:= 9 , 'STRUCT'('PROC''REF''REF''COMPL'DE,OF) DE = (IDENT,'SKIP') ; []'PROC''REF''REF''COMPL'RANG = IDENT , 'PROC' PAV = ('PROC''REF''REF''COMPL' X) 'PROC''REF''REF''COMPL' : X ; # CONTEXTES # CTRT:= 12 ; C(('REF''REF''COMPL' : RRC):= ( ('REF''REF''COMPL' : RRC) := ('REF''REF''COMPL' : RRC) := ('REF''REF''COMPL' : RRC) := RC)) ; ((('REF''REF''COMPL' : RRC) :/=: 'NIL')'AND' (RRC :=: ('REF''REF''COMPL' : RRC))! CTR+:=1) ; CTRT:= 13 ; C('NOT''FALSE'&=:IDENT:= ( 'NOT''FALSE'&=:IDENT := 'NOT''FALSE'&=:IDENT := 'NOT''FALSE'&=:IDENT := RC)) ; (('NOT''FALSE'&=:IDENT :/=: 'NIL')'AND' (RRC :=: 'NOT''FALSE'&=:IDENT)! CTR+:=1) ; CTRT:= 14 ; C(DE'OF'DE:= ( DE'OF'DE := DE'OF'DE := DE'OF'DE := RC)) ; ((DE'OF'DE :/=: 'NIL')'AND' (RRC :=: DE'OF'DE)! CTR+:=1) ; CTRT:= 15 ; C(RANG[1]:= ( RANG[1] := RANG[1] := RANG[1] := RC)) ; ((RANG[1] :/=: 'NIL')'AND' (RRC :=: RANG[1])! CTR+:=1) ; CTRT:= 16 ; C(PAV(IDENT):= ( PAV(IDENT) := PAV(IDENT) := PAV(IDENT) := RC)) ; ((PAV(IDENT) :/=: 'NIL')'AND' (RRC :=: PAV(IDENT))! CTR+:=1) ; CTRT:= 17 ; C('PROC''REF''REF''COMPL''BEGIN'IDENT'END':= ( 'PROC''REF''REF''COMPL''BEGIN'IDENT'END' := 'PROC''REF''REF''COMPL''BEGIN'IDENT'END' := 'PROC''REF''REF''COMPL''BEGIN'IDENT'END' := RC)) ; (('PROC''REF''REF''COMPL''BEGIN'IDENT'END' :/=: 'NIL')'AND' (RRC :=: 'PROC''REF''REF''COMPL''BEGIN'IDENT'END')! CTR+:=1) ; CTRT:= 18 ; C(IDENT:= ( IDENT := IDENT := IDENT := RC)) ; ((IDENT :/=: 'NIL')'AND' (RRC :=: IDENT)! CTR+:=1) ; CTRT:= 19 ; C('BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END':= ( 'BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END' := 'BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END' := 'BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END' := RC)) ; (('BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END' :/=: 'NIL')'AND' (RRC :=: 'BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END')! CTR+:=1) ; CTRT:= 20 ; C(('TRUE'!'SKIP';IDENT):= ( ('TRUE'!'SKIP';IDENT) := ('TRUE'!'SKIP';IDENT) := ('TRUE'!'SKIP';IDENT) := RC)) ; ((('TRUE'!'SKIP';IDENT) :/=: 'NIL')'AND' (RRC :=: ('TRUE'!'SKIP';IDENT))! CTR+:=1) ; CTRT:= 21 ; C('CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC':= ( 'CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC' := 'CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC' := 'CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC' := RC)) ; (('CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC' :/=: 'NIL')'AND' (RRC :=: 'CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC')! CTR+:=1) ; CTRT:= 22 ; C((RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) := ( (RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) := (RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) := (RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) := RC)) ; (((RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) :/=: 'NIL')'AND' (RRC :=: (RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) )! CTR+:=1) ; 'SKIP' 'END' ; 'BEGIN' # SERVITUDES POUR UNITES DU MODE 'PROC''PROC''PROC' 'REF''PROC'[]'UNION'('INT','COMPL') # 'PROC''PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') IDENT = 'PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') : 'PROC''REF''PROC'[]'UNION'('INT','COMPL') : 'REF''PROC'[]'UNION'('INT','COMPL') : RPRU; 'OP' &=:=('BOOL' A,'PROC''PROC''PROC' 'REF''PROC'[]'UNION'('INT','COMPL')B)'PROC''PROC''PROC' 'REF''PROC'[]'UNION'('INT','COMPL') : (A!B) , 'PRIO' &=:= 9 , 'STRUCT'('PROC''PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') DE,OF) DE = (IDENT,'SKIP') ; []'PROC''PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') RANG = IDENT , 'PROC' PAV = ('PROC''PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') X) 'PROC''PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') : X ; # CONTEXTES # CTRT:= 23 ; C(('PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') : 'PROC''REF''PROC'[]'UNION'('INT','COMPL') : 'REF''PROC'[]'UNION'('INT','COMPL') : RPRU):= ( ('PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') : 'PROC''REF''PROC'[]'UNION'('INT','COMPL') : 'REF''PROC'[]'UNION'('INT','COMPL') : RPRU) := ('PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') : 'PROC''REF''PROC'[]'UNION'('INT','COMPL') : 'REF''PROC'[]'UNION'('INT','COMPL') : RPRU) := ('PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') : 'PROC''REF''PROC'[]'UNION'('INT','COMPL') : 'REF''PROC'[]'UNION'('INT','COMPL') : RPRU) := RPRU)) ; ((('PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') : 'PROC''REF''PROC'[]'UNION'('INT','COMPL') : 'REF''PROC'[]'UNION'('INT','COMPL') : RPRU) :/=: 'NIL')'AND' (RPRU :=: ('PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') : 'PROC''REF''PROC'[]'UNION'('INT','COMPL') : 'REF''PROC'[]'UNION'('INT','COMPL') : RPRU))! CTR+:=1) ; CTRT:= 24 ; C('NOT''FALSE'&=:IDENT:= ( 'NOT''FALSE'&=:IDENT := 'NOT''FALSE'&=:IDENT := 'NOT''FALSE'&=:IDENT := RPRU)) ; (('NOT''FALSE'&=:IDENT :/=: 'NIL')'AND' (RPRU :=: 'NOT''FALSE'&=:IDENT)! CTR+:=1) ; CTRT:= 25 ; C(DE'OF'DE:= ( DE'OF'DE := DE'OF'DE := DE'OF'DE := RPRU)) ; ((DE'OF'DE :/=: 'NIL')'AND' (RPRU :=: DE'OF'DE)! CTR+:=1) ; CTRT:= 26 ; C(RANG[1]:= ( RANG[1] := RANG[1] := RANG[1] := RPRU)) ; ((RANG[1] :/=: 'NIL')'AND' (RPRU :=: RANG[1])! CTR+:=1) ; CTRT:= 27 ; C(PAV(IDENT):= ( PAV(IDENT) := PAV(IDENT) := PAV(IDENT) := RPRU)) ; ((PAV(IDENT) :/=: 'NIL')'AND' (RPRU :=: PAV(IDENT))! CTR+:=1) ; CTRT:= 28 ; C('PROC''PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') 'BEGIN'IDENT'END':= ( 'PROC''PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') 'BEGIN'IDENT'END' := 'PROC''PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') 'BEGIN'IDENT'END' := 'PROC''PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') 'BEGIN'IDENT'END' := RPRU)) ; (('PROC''PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') 'BEGIN'IDENT'END' :/=: 'NIL')'AND' (RPRU :=: 'PROC''PROC''PROC''REF''PROC'[]'UNION'('INT','COMPL') 'BEGIN'IDENT'END')! CTR+:=1) ; CTRT:= 29 ; C(IDENT:= ( IDENT := IDENT := IDENT := RPRU)) ; ((IDENT :/=: 'NIL')'AND' (RPRU :=: IDENT)! CTR+:=1) ; CTRT:= 30 ; C('BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END':= ( 'BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END' := 'BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END' := 'BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END' := RPRU)) ; (('BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END' :/=: 'NIL')'AND' (RPRU :=: 'BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END')! CTR+:=1) ; CTRT:= 31 ; C(('TRUE'!'SKIP';IDENT):= ( ('TRUE'!'SKIP';IDENT) := ('TRUE'!'SKIP';IDENT) := ('TRUE'!'SKIP';IDENT) := RPRU)) ; ((('TRUE'!'SKIP';IDENT) :/=: 'NIL')'AND' (RPRU :=: ('TRUE'!'SKIP';IDENT))! CTR+:=1) ; CTRT:= 32 ; C('CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC':= ( 'CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC' := 'CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC' := 'CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC' := RPRU)) ; (('CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC' :/=: 'NIL')'AND' (RPRU :=: 'CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC')! CTR+:=1) ; CTRT:= 33 ; C((RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) := ( (RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) := (RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) := (RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) := RPRU)) ; (((RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) :/=: 'NIL')'AND' (RPRU :=: (RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) )! CTR+:=1) ; 'SKIP' 'END' ; 'BEGIN' # SERVITUDES POUR UNITES DU MODE 'PROC''PROC''MODEREP' # 'PROC''PROC''MODEREP' IDENT = 'PROC''MODEREP' : 'MODEREP' : RU; 'OP' &=:=('BOOL' A,'PROC''PROC''MODEREP'B)'PROC''PROC''MODEREP' : (A!B) , 'PRIO' &=:= 9 , 'STRUCT'('PROC''PROC''MODEREP'DE,OF) DE = (IDENT,'SKIP') ; []'PROC''PROC''MODEREP'RANG = IDENT , 'PROC' PAV = ('PROC''PROC''MODEREP' X) 'PROC''PROC''MODEREP' : X ; # CONTEXTES # CTRT:= 34 ; C(('PROC''MODEREP' : 'MODEREP' : RU):= ( ('PROC''MODEREP' : 'MODEREP' : RU) := ('PROC''MODEREP' : 'MODEREP' : RU) := ('PROC''MODEREP' : 'MODEREP' : RU) := 1)) ; ((('PROC''MODEREP' : 'MODEREP' : RU) :/=: 'NIL')'AND' (RU :=: ('PROC''MODEREP' : 'MODEREP' : RU))! CTR+:=1) ; CTRT:= 35 ; C('NOT''FALSE'&=:IDENT:= ( 'NOT''FALSE'&=:IDENT := 'NOT''FALSE'&=:IDENT := 'NOT''FALSE'&=:IDENT := 1)) ; (('NOT''FALSE'&=:IDENT :/=: 'NIL')'AND' (RU :=: 'NOT''FALSE'&=:IDENT)! CTR+:=1) ; CTRT:= 36 ; C(DE'OF'DE:= ( DE'OF'DE := DE'OF'DE := DE'OF'DE := 1)) ; ((DE'OF'DE :/=: 'NIL')'AND' (RU :=: DE'OF'DE)! CTR+:=1) ; CTRT:= 37 ; C(RANG[1]:= ( RANG[1] := RANG[1] := RANG[1] := 1)) ; ((RANG[1] :/=: 'NIL')'AND' (RU :=: RANG[1])! CTR+:=1) ; CTRT:= 38 ; C(PAV(IDENT):= ( PAV(IDENT) := PAV(IDENT) := PAV(IDENT) := 1)) ; ((PAV(IDENT) :/=: 'NIL')'AND' (RU :=: PAV(IDENT))! CTR+:=1) ; CTRT:= 39 ; C('PROC''PROC''MODEREP''BEGIN'IDENT'END':= ( 'PROC''PROC''MODEREP''BEGIN'IDENT'END' := 'PROC''PROC''MODEREP''BEGIN'IDENT'END' := 'PROC''PROC''MODEREP''BEGIN'IDENT'END' := 1)) ; (('PROC''PROC''MODEREP''BEGIN'IDENT'END' :/=: 'NIL')'AND' (RU :=: 'PROC''PROC''MODEREP''BEGIN'IDENT'END')! CTR+:=1) ; CTRT:= 40 ; C(IDENT:= ( IDENT := IDENT := IDENT := 1)) ; ((IDENT :/=: 'NIL')'AND' (RU :=: IDENT)! CTR+:=1) ; CTRT:= 41 ; C('BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END':= ( 'BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END' := 'BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END' := 'BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END' := 1)) ; (('BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END' :/=: 'NIL')'AND' (RU :=: 'BEGIN' ('SKIP' ; 'GOTO'S) 'EXIT' S: IDENT 'EXIT' E:'SKIP''END')! CTR+:=1) ; CTRT:= 42 ; C(('TRUE'!'SKIP';IDENT):= ( ('TRUE'!'SKIP';IDENT) := ('TRUE'!'SKIP';IDENT) := ('TRUE'!'SKIP';IDENT) := 1)) ; ((('TRUE'!'SKIP';IDENT) :/=: 'NIL')'AND' (RU :=: ('TRUE'!'SKIP';IDENT))! CTR+:=1) ; CTRT:= 43 ; C('CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC':= ( 'CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC' := 'CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC' := 'CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC' := 1)) ; (('CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC' :/=: 'NIL')'AND' (RU :=: 'CASE'-2'IN''SKIP',IDENT 'OUT'IDENT'ESAC')! CTR+:=1) ; CTRT:= 44 ; C((RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) := ( (RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) := (RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) := (RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) := 1)) ; (((RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) :/=: 'NIL')'AND' (RU :=: (RU!('UNION'('COMPL', 'UNION'('INT','COMPL'),'INT')): IDENT) )! CTR+:=1) ; 'SKIP' 'END' ; PRINT((CTR," TESTS ",(CTR=VF !"OK"!"ERREUR")))) ###### # R6D # (PRINT(("COERCIONS IN WEAK CONTEXT",NEWLINE)) ; 'INT' VF = 11*(3+13+9+17) ; 'INT' CTRT:=0 , CTR:=0 ; 'PROC' CONTROLE = ( []'REAL' A , 'UNION'('STRING','CHAR','COMPL') B ) 'VOID' : (('UPB' A=1 'AND' 'ABS'(A[1]-1)<1E-5 ! CTR+:=1 !: 'UPB' A=3 'AND' 'ABS'(A[3]-1)<1E-5 ! CTR+:=5) ; (B ! ('CHAR' C) : (C="""" ! CTR+:=2) , ('STRING' C) : ('UPB' C=3 'AND' C[2]="." ! CTR+:=8) , ('COMPL' C) : (RE'OF'C=0 'AND' 'ABS'('IM' C-1)<1E-5 ! CTR+:=12))) ; 'PRIO' ?=:=1 , ?:==9 ; # CONTROLE,SERVITUDES ET CONTEXTES POUR MODES : 'COMPL' ET 'STRING' # 'BEGIN' 'PROC' C = ('REAL' A , 'CHAR' B )'VOID' : ('INT' X=CTR ; CONTROLE(A,B) ; CTR/=X+3 ! PRINT(("COUNT ER IN TEST",CTRT,CTR,X+3,NEWLINE))) ; 'PROC''PROC''COMPL' IDS = 'PROC''COMPL' : 'COMPL' : (0,1) ; 'PROC''PROC''STRING' IDR = 'PROC''STRING' : 'STRING' : """.""" ; 'OP' ?=:=('PROC''PROC''COMPL' A) 'PROC''PROC''COMPL' : A , ?:==('PROC''PROC''STRING' A) 'PROC''PROC''STRING' : A , ?=:=('PROC''PROC''COMPL' A , 'INT' B) 'PROC''PROC''COMPL' : (B ! 'SKIP',A) , ?:==('PROC''PROC''STRING' A , 'INT' B) 'PROC''PROC''STRING' : (B ! 'SKIP',A) , 'STRUCT'('COMPL' TOTO , 'PROC''PROC''COMPL'DE)DE = (0,IDS) , 'STRUCT'('COMPL' TOTO , 'PROC''PROC''STRING'OF)OF = (0,IDR) , []'PROC''PROC''COMPL'SANG = IDS , []'PROC''PROC''STRING'RANG = IDR , 'PROC' SI = ('PROC''PROC''COMPL' A) 'PROC''PROC''COMPL' : A , RI = ('PROC''PROC''STRING' A) 'PROC''PROC''STRING' : A , 'UNION'('CHAR','PROC''PROC''COMPL' , 'PROC''PROC''STRING') U ; CTRT:= 1 ; C ( IM 'OF' ('PROC''COMPL' : 'COMPL' : (0,1)) , ('PROC''STRING' : 'STRING' : """.""")[3] ) ; CTRT:= 2 ; C ( IM 'OF' (?=:IDS?=:2) , (?:=IDR?:=2)[3] ) ; CTRT:= 3 ; C ( IM 'OF' DE'OF'DE , (OF'OF'OF)[3] ) ; CTRT:= 4 ; C ( IM 'OF' SANG[1] , RANG[1][3] ) ; CTRT:= 5 ; C ( IM 'OF' SI(IDS) , RI(IDR)[3] ) ; CTRT:= 6 ; C ( IM 'OF' 'PROC''PROC''COMPL'(IDS) , 'PROC''PROC''STRING'(IDR)[3] ) ; CTRT:= 7 ; C ( IM 'OF' IDS , IDR[3] ) ; CTRT:= 8 ; C ( IM 'OF' 'BEGIN'('INT' X;IDS)'EXIT' ETIQ:'SKIP''END' , 'BEGIN'('INT' X;IDR)'EXIT' ETIQ:'SKIP''END'[3] ) ; CTRT:= 9 ; C ( IM 'OF' 'IF''TRUE''THEN'IDS'FI' , 'IF''TRUE''THEN'IDR'FI'[3] ) ; CTRT:= 10 ; C ( IM 'OF' (1!IDS,'SKIP') , (1!IDR,'SKIP')[3] ) ; CTRT:= 11 ; C ( IM 'OF' (U:=IDS!('PROC''PROC''COMPL'X):X) , (U:=IDR!('PROC''PROC''STRING'X):X)[3] ) ; 'SKIP' 'END' ; # CONTROLE,SERVITUDES ET CONTEXTES POUR MODES : 'STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM) ET []'REF''STRING' # 'BEGIN' 'PROC' C = ([]'REAL' A , 'REF''STRING' B )'VOID' : ('INT' X=CTR ; CONTROLE(A,B) ; CTR/=X+13 ! PRINT(("COUNT ER IN TEST",CTRT,CTR,X+13,NEWLINE))) ; 'REF''PROC''STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM) IDS = 'HEAP' 'PROC' 'STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM):= 'STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM) : (0,(2,3,1)) ; 'REF''PROC'[]'REF''STRING' IDR = 'HEAP''PROC' []'REF''STRING' := []'REF''STRING' : ('NIL','NIL','HEAP''STRING':=""".""") ; 'OP' ?=:=('REF''PROC''STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM) A) 'REF''PROC''STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM) : A , ?:==('REF''PROC'[]'REF''STRING' A) 'REF''PROC'[]'REF''STRING' : A , ?=:=('REF''PROC''STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM) A , 'INT' B) 'REF''PROC''STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM) : (B ! 'SKIP',A) , ?:==('REF''PROC'[]'REF''STRING' A , 'INT' B) 'REF''PROC'[]'REF''STRING' : (B ! 'SKIP',A) , 'STRUCT'('COMPL' TOTO , 'REF''PROC''STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM)DE)DE = (0,IDS) , 'STRUCT'('COMPL' TOTO , 'REF''PROC'[]'REF''STRING'OF)OF = (0,IDR) , []'REF''PROC''STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM)SANG = IDS , []'REF''PROC'[]'REF''STRING'RANG = IDR , 'PROC' SI = ('REF''PROC''STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM) A) 'REF''PROC''STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM) : A , RI = ('REF''PROC'[]'REF''STRING' A) 'REF''PROC'[]'REF''STRING' : A , 'UNION'('CHAR','REF''PROC''STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM) , 'REF''PROC'[]'REF''STRING') U ; CTRT:= 12 ; C ( IM 'OF' ('HEAP' 'PROC' 'STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM):= 'STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM) : (0,(2,3,1))) , ('HEAP''PROC' []'REF''STRING' := []'REF''STRING' : ('NIL','NIL','HEAP''STRING':=""".""")) [3] ) ; CTRT:= 13 ; C ( IM 'OF' (?=:IDS?=:2) , (?:=IDR?:=2)[3] ) ; CTRT:= 14 ; C ( IM 'OF' DE'OF'DE , (OF'OF'OF)[3] ) ; CTRT:= 15 ; C ( IM 'OF' SANG[1] , RANG[1][3] ) ; CTRT:= 16 ; C ( IM 'OF' SI(IDS) , RI(IDR)[3] ) ; CTRT:= 17 ; C ( IM 'OF' 'REF''PROC''STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM)(IDS) , 'REF''PROC'[]'REF''STRING'(IDR)[3] ) ; CTRT:= 18 ; C ( IM 'OF' IDS , IDR[3] ) ; CTRT:= 19 ; C ( IM 'OF' 'BEGIN'('INT' X;IDS)'EXIT' ETIQ:'SKIP''END' , 'BEGIN'('INT' X;IDR)'EXIT' ETIQ:'SKIP''END'[3] ) ; CTRT:= 20 ; C ( IM 'OF' 'IF''TRUE''THEN'IDS'FI' , 'IF''TRUE''THEN'IDR'FI'[3] ) ; CTRT:= 21 ; C ( IM 'OF' (1!IDS,'SKIP') , (1!IDR,'SKIP')[3] ) ; CTRT:= 22 ; C ( IM 'OF' (U:=IDS!('REF''PROC' 'STRUCT'('UNION'('INT','PROC''STRING')RE , []'REAL' IM)X):X) , (U:=IDR!('REF''PROC'[]'REF''STRING'X):X)[3] ) ; 'SKIP' 'END' ; # CONTROLE,SERVITUDES ET CONTEXTES POUR MODES : 'REF''COMPL' ET 'REF'[]'REF''STRING' # 'BEGIN' 'PROC' C = ('REF''REAL' A , 'REF''REF''STRING' B )'VOID' : ('INT' X=CTR ; CONTROLE(A,B) ; CTR/=X+9 ! PRINT(("COUNT ER IN TEST",CTRT,CTR,X+9,NEWLINE))) ; 'PROC''REF''COMPL' IDS = 'REF''COMPL' : 'HEAP''COMPL':=(0,1) ; 'PROC''REF'[]'REF''STRING' IDR = 'REF'[]'REF''STRING' : 'HEAP'[3]'REF''STRING' := ('NIL','NIL','HEAP''STRING':=""".""") ; 'OP' ?=:=('PROC''REF''COMPL' A) 'PROC''REF''COMPL' : A , ?:==('PROC''REF'[]'REF''STRING' A) 'PROC''REF'[]'REF''STRING' : A , ?=:=('PROC''REF''COMPL' A , 'INT' B) 'PROC''REF''COMPL' : (B ! 'SKIP',A) , ?:==('PROC''REF'[]'REF''STRING' A , 'INT' B) 'PROC''REF'[]'REF''STRING' : (B ! 'SKIP',A) , 'STRUCT'('COMPL' TOTO , 'PROC''REF''COMPL'DE)DE = (0,IDS) , 'STRUCT'('COMPL' TOTO , 'PROC''REF'[]'REF''STRING'OF)OF = (0,IDR) , []'PROC''REF''COMPL'SANG = IDS , []'PROC''REF'[]'REF''STRING'RANG = IDR , 'PROC' SI = ('PROC''REF''COMPL' A) 'PROC''REF''COMPL' : A , RI = ('PROC''REF'[]'REF''STRING' A) 'PROC''REF'[]'REF''STRING' : A , 'UNION'('CHAR','PROC''REF''COMPL' , 'PROC''REF'[]'REF''STRING') U ; CTRT:= 23 ; C ( IM 'OF' ('REF''COMPL' : 'HEAP''COMPL':=(0,1)) , ('REF'[]'REF''STRING' : 'HEAP'[3]'REF''STRING' := ('NIL','NIL','HEAP''STRING':="""."""))[3] ) ; CTRT:= 24 ; C ( IM 'OF' (?=:IDS?=:2) , (?:=IDR?:=2)[3] ) ; CTRT:= 25 ; C ( IM 'OF' DE'OF'DE , (OF'OF'OF)[3] ) ; CTRT:= 26 ; C ( IM 'OF' SANG[1] , RANG[1][3] ) ; CTRT:= 27 ; C ( IM 'OF' SI(IDS) , RI(IDR)[3] ) ; CTRT:= 28 ; C ( IM 'OF' 'PROC''REF''COMPL'(IDS) , 'PROC''REF'[]'REF''STRING'(IDR)[3] ) ; CTRT:= 29 ; C ( IM 'OF' IDS , IDR[3] ) ; CTRT:= 30 ; C ( IM 'OF' 'BEGIN'('INT' X;IDS)'EXIT' ETIQ:'SKIP''END' , 'BEGIN'('INT' X;IDR)'EXIT' ETIQ:'SKIP''END'[3] ) ; CTRT:= 31 ; C ( IM 'OF' 'IF''TRUE''THEN'IDS'FI' , 'IF''TRUE''THEN'IDR'FI'[3] ) ; CTRT:= 32 ; C ( IM 'OF' (1!IDS,'SKIP') , (1!IDR,'SKIP')[3] ) ; CTRT:= 33 ; C ( IM 'OF' (U:=IDS!('PROC''REF''COMPL'X):X) , (U:=IDR!('PROC''REF'[]'REF''STRING'X):X)[3] ) ; 'SKIP' 'END' ; # CONTROLE,SERVITUDES ET CONTEXTES POUR MODES : 'REF'[]'COMPL' ET 'REF'[]'COMPL' # 'BEGIN' 'PROC' C = ('REF'[]'REAL' A , 'REF''COMPL' B )'VOID' : ('INT' X=CTR ; CONTROLE(A,B) ; CTR/=X+17 ! PRINT(("COUNT ER IN TEST",CTRT,CTR,X+17,NEWLINE))) ; 'REF''PROC''REF''REF'[]'COMPL' IDS = 'HEAP''PROC''REF''REF'[]'COMPL' := 'REF''REF'[]'COMPL' : 'HEAP''REF'[]'COMPL' := 'HEAP'[3]'COMPL' := (0'I'3,0'I'2,0'I'1) ; 'REF''PROC''REF''REF'[]'COMPL' IDR = 'HEAP''PROC''REF''REF'[]'COMPL' := 'REF''REF'[]'COMPL' : 'HEAP''REF'[]'COMPL' := 'HEAP'[3]'COMPL' := (0'I'3,0'I'2,0'I'1) ; 'OP' ?=:=('REF''PROC''REF''REF'[]'COMPL' A) 'REF''PROC''REF''REF'[]'COMPL' : A , ?:==('REF''PROC''REF''REF'[]'COMPL' A) 'REF''PROC''REF''REF'[]'COMPL' : A , ?=:=('REF''PROC''REF''REF'[]'COMPL' A , 'INT' B) 'REF''PROC''REF''REF'[]'COMPL' : (B ! 'SKIP',A) , ?:==('REF''PROC''REF''REF'[]'COMPL' A , 'INT' B) 'REF''PROC''REF''REF'[]'COMPL' : (B ! 'SKIP',A) , 'STRUCT'('COMPL' TOTO , 'REF''PROC''REF''REF'[]'COMPL'DE)DE = (0,IDS) , 'STRUCT'('COMPL' TOTO , 'REF''PROC''REF''REF'[]'COMPL'OF)OF = (0,IDR) , []'REF''PROC''REF''REF'[]'COMPL'SANG = IDS , []'REF''PROC''REF''REF'[]'COMPL'RANG = IDR , 'PROC' SI = ('REF''PROC''REF''REF'[]'COMPL' A) 'REF''PROC''REF''REF'[]'COMPL' : A , RI = ('REF''PROC''REF''REF'[]'COMPL' A) 'REF''PROC''REF''REF'[]'COMPL' : A , 'UNION'('CHAR','REF''PROC''REF''REF'[]'COMPL' , 'REF''PROC''REF' 'REF'[]'COMPL') U ; CTRT:= 34 ; C ( IM 'OF' ('HEAP''PROC''REF''REF'[]'COMPL' := 'REF''REF'[]'COMPL' : 'HEAP''REF'[]'COMPL' := 'HEAP'[3]'COMPL' := (0'I'3,0'I'2,0'I'1) ) , ('HEAP''PROC''REF''REF'[]'COMPL' := 'REF''REF'[]'COMPL' : 'HEAP''REF'[]'COMPL' := 'HEAP'[3]'COMPL' := (0'I'3,0'I'2,0'I'1) )[3] ) ; CTRT:= 35 ; C ( IM 'OF' (?=:IDS?=:2) , (?:=IDR?:=2)[3] ) ; CTRT:= 36 ; C ( IM 'OF' DE'OF'DE , (OF'OF'OF)[3] ) ; CTRT:= 37 ; C ( IM 'OF' SANG[1] , RANG[1][3] ) ; CTRT:= 38 ; C ( IM 'OF' SI(IDS) , RI(IDR)[3] ) ; CTRT:= 39 ; C ( IM 'OF' 'REF''PROC''REF''REF'[]'COMPL'(IDS) , 'REF''PROC''REF''REF'[]'COMPL'(IDR)[3] ) ; CTRT:= 40 ; C ( IM 'OF' IDS , IDR[3] ) ; CTRT:= 41 ; C ( IM 'OF' 'BEGIN'('INT' X;IDS)'EXIT' ETIQ:'SKIP''END' , 'BEGIN'('INT' X;IDR)'EXIT' ETIQ:'SKIP''END'[3] ) ; CTRT:= 42 ; C ( IM 'OF' 'IF''TRUE''THEN'IDS'FI' , 'IF''TRUE''THEN'IDR'FI'[3] ) ; CTRT:= 43 ; C ( IM 'OF' (1!IDS,'SKIP') , (1!IDR,'SKIP')[3] ) ; CTRT:= 44 ; C ( IM 'OF' (U:=IDS!('REF''PROC''REF''REF'[]'COMPL'X):X) , (U:=IDR!('REF''PROC''REF''REF'[]'COMPL'X):X)[3] ) ; 'SKIP' 'END' ; PRINT((CTR," TESTS ",(CTR=VF !"OK"!"ERREUR")))) ###### # R6C # (PRINT(("COERCIONS IN MEEK CONTEXT",NEWLINE)) ; 'INT' VF = 37*14 ; 'INT' CTRT:=0 , CTR:=0 ; # PROCEDURE DE CONTROLE SEMANTIQUE # 'PROC' AD = ('REF''INT' A,[]'STRING' B,'INT' C,D,E,F,G,H)'INT' : ('INT' ENT=A+'LWB'B+'UPB'B+'UPB'B[2]+C+D+E+F+G+H ; ENT=37 ! ENT ! PRINT(("COUNT ERR. IN TEST",CTRT,ENT,37,NEWLINE)) ;1) ; #DECLARATIONS INITIALES# # 'INT' # 'MODE' 'A'='INT'; 'INT' AA = 2 ; # 'BOOL' # 'MODE' 'B'='BOOL'; 'BOOL' AB = 'TRUE' ; # 'UNION'('INT','REAL') # 'MODE' 'C'='UNION'('INT','REAL'); 'C' AC = 5 ; # 'PROC'('REF''INT',[]'STRING','INT','INT','INT','INT','INT','INT')'INT' # 'MODE' 'D'= 'PROC'('REF''INT',[]'STRING','INT','INT','INT','INT','INT','INT')'INT' ; # PROC AD CI-DESSUS # # NOUVEAU PREFIXE : 'REF' # # 'INT' # 'MODE' 'AA' = 'REF' 'A' ; 'AA'BA = 'LOC' 'A':=AA ; # 'BOOL' # 'MODE' 'AB' = 'REF' 'B' ; 'AB'BB = 'LOC' 'B':=AB ; # 'UNION'('INT','REAL') # 'MODE' 'AC' = 'REF' 'C' ; 'AC'BC = 'LOC' 'C':=AC ; # 'PROC'('REF''INT',[]'STRING','INT','INT','INT','INT','INT','INT')'INT' # 'MODE' 'AD' = 'REF' 'D' ; 'AD'BD = 'LOC' 'D':=AD ; 'BEGIN' CTRT:= 1 ; ( ['LOC' 'A':=AA,10]'INT' ENT ; ENT[1,2]:=11 ; 'LOC' 'B':=AB ! 'FOR' DEPUIS 'FROM' 'LOC' 'A':=AA 'BY' 'LOC' 'A':=AA 'TO' 'LOC' 'A':=AA 'WHILE' 'MODE' 'M' = [-3:'LOC' 'A':=AA]'STRING' ; 'M' VAR , 'M' CHAINE = 'M'('SKIP','SKIP',"","","","321")[@-3] ; 'LOC' 'B':=AB 'DO' CTR+:=('LOC' 'D':=AD) ( ENT[1,'LOC' 'A':=AA] , CHAINE['LOC' 'A':=AA : 'LOC' 'A':=AA @ 'LOC' 'A':=AA] , ('LOC' 'C':=AC ! ('INT' X) : X) , ('LOC' 'A':=AA ! 41,7,43!50) , 'LWB' ENT,1'UPB'ENT , DEPUIS , 'UPB' VAR) 'OD' ) ; 'SKIP' 'END' ; # NOUVEAU PREFIXE : 'PROC' # # 'INT' # 'MODE' 'BA' = 'PROC' 'A' ; 'BA'CA = 'A' : AA ; 'PRIO' 'O1' = 9 ; 'OP' 'O1' = ('INT' A,'BA' B)'BA' : (A!B,'SKIP') ; # 'BOOL' # 'MODE' 'BB' = 'PROC' 'B' ; 'BB'CB = 'B' : AB ; 'PRIO' 'O2' = 9 ; 'OP' 'O2' = ('INT' A,'BB' B)'BB' : (A!B,'SKIP') ; # 'UNION'('INT','REAL') # 'MODE' 'BC' = 'PROC' 'C' ; 'BC'CC = 'C' : AC ; 'PRIO' 'O3' = 9 ; 'OP' 'O3' = ('INT' A,'BC' B)'BC' : (A!B,'SKIP') ; # 'PROC'('REF''INT',[]'STRING','INT','INT','INT','INT','INT','INT')'INT' # 'MODE' 'BD' = 'PROC' 'D' ; 'BD'CD = 'D' : AD ; 'PRIO' 'O4' = 9 ; 'OP' 'O4' = ('INT' A,'BD' B)'BD' : (A!B,'SKIP') ; 'BEGIN' CTRT:= 2 ; ( [-(-1)'O1'CA,10]'INT' ENT ; ENT[1,2]:=11 ; -(-1)'O2'CB ! 'FOR' DEPUIS 'FROM' -(-1)'O1'CA 'BY' -(-1)'O1'CA 'TO' -(-1)'O1'CA 'WHILE' 'MODE' 'M' = [-3:-(-1)'O1'CA]'STRING' ; 'M' VAR , 'M' CHAINE = 'M'('SKIP','SKIP',"","","","321")[@-3] ; -(-1)'O2'CB 'DO' CTR+:=(-(-1)'O4'CD) ( ENT[1,-(-1)'O1'CA] , CHAINE[-(-1)'O1'CA : -(-1)'O1'CA @ -(-1)'O1'CA] , (-(-1)'O3'CC ! ('INT' X) : X) , (-(-1)'O1'CA ! 41,7,43!50) , 'LWB' ENT,1'UPB'ENT , DEPUIS , 'UPB' VAR) 'OD' ) ; 'SKIP' 'END' ; # NOUVEAU PREFIXE : 'REF''REF' # # 'INT' # 'MODE' 'CA' = 'REF' 'AA' ; 'CA'DA = 'LOC' 'AA':=BA ; 'STRUCT'('STRUCT'('CA' DE,'REAL' OF)DE , 'INT' OF) DEA = ((DA,0),0) ; # 'BOOL' # 'MODE' 'CB' = 'REF' 'AB' ; 'CB'DB = 'LOC' 'AB':=BB ; 'STRUCT'('STRUCT'('CB' DE,'REAL' OF)DE , 'INT' OF) DEB = ((DB,0),0) ; # 'UNION'('INT','REAL') # 'MODE' 'CC' = 'REF' 'AC' ; 'CC'DC = 'LOC' 'AC':=BC ; 'STRUCT'('STRUCT'('CC' DE,'REAL' OF)DE , 'INT' OF) DEC = ((DC,0),0) ; # 'PROC'('REF''INT',[]'STRING','INT','INT','INT','INT','INT','INT')'INT' # 'MODE' 'CD' = 'REF' 'AD' ; 'CD'DD = 'LOC' 'AD':=BD ; 'STRUCT'('STRUCT'('CD' DE,'REAL' OF)DE , 'INT' OF) DED = ((DD,0),0) ; 'BEGIN' CTRT:= 3 ; ( [DE'OF'DE'OF'DEA,10]'INT' ENT ; ENT[1,2]:=11 ; DE'OF'DE'OF'DEB ! 'FOR' DEPUIS 'FROM' DE'OF'DE'OF'DEA 'BY' DE'OF'DE'OF'DEA 'TO' DE'OF'DE'OF'DEA 'WHILE' 'MODE' 'M' = [-3:DE'OF'DE'OF'DEA]'STRING' ; 'M' VAR , 'M' CHAINE = 'M'('SKIP','SKIP',"","","","321")[@-3] ; DE'OF'DE'OF'DEB 'DO' CTR+:=(DE'OF'DE'OF'DED) ( ENT[1,DE'OF'DE'OF'DEA] , CHAINE[DE'OF'DE'OF'DEA : DE'OF'DE'OF'DEA @ DE'OF'DE'OF'DEA] , (DE'OF'DE'OF'DEC ! ('INT' X) : X) , (DE'OF'DE'OF'DEA ! 41,7,43!50) , 'LWB' ENT,1'UPB'ENT , DEPUIS , 'UPB' VAR) 'OD' ) ; 'SKIP' 'END' ; # NOUVEAU PREFIXE : 'PROC''REF' # # 'INT' # 'MODE' 'DA' = 'PROC' 'AA' ; 'DA'EA = 'AA' : BA ; # 'BOOL' # 'MODE' 'DB' = 'PROC' 'AB' ; 'DB'EB = 'AB' : BB ; # 'UNION'('INT','REAL') # 'MODE' 'DC' = 'PROC' 'AC' ; 'DC'EC = 'AC' : BC ; # 'PROC'('REF''INT',[]'STRING','INT','INT','INT','INT','INT','INT')'INT' # 'MODE' 'DD' = 'PROC' 'AD' ; 'DD'ED = 'AD' : BD ; 'BEGIN' CTRT:= 4 ; ( ['AA' : BA,10]'INT' ENT ; ENT[1,2]:=11 ; 'AB' : BB ! 'FOR' DEPUIS 'FROM' 'AA' : BA 'BY' 'AA' : BA 'TO' 'AA' : BA 'WHILE' 'MODE' 'M' = [-3:'AA' : BA]'STRING' ; 'M' VAR , 'M' CHAINE = 'M'('SKIP','SKIP',"","","","321")[@-3] ; 'AB' : BB 'DO' CTR+:=('AD' : BD) ( ENT[1,'AA' : BA] , CHAINE['AA' : BA : 'AA' : BA @ 'AA' : BA] , ('AC' : BC ! ('INT' X) : X) , ('AA' : BA ! 41,7,43!50) , 'LWB' ENT,1'UPB'ENT , DEPUIS , 'UPB' VAR) 'OD' ) ; 'SKIP' 'END' ; # NOUVEAU PREFIXE : 'REF''PROC' # # 'INT' # 'MODE' 'EA' = 'REF' 'BA' ; 'EA'FA = 'LOC' 'BA':=CA ; 'OP' 'O1' = ('EA' A)'EA' : A ; # 'BOOL' # 'MODE' 'EB' = 'REF' 'BB' ; 'EB'FB = 'LOC' 'BB':=CB ; 'OP' 'O2' = ('EB' A)'EB' : A ; # 'UNION'('INT','REAL') # 'MODE' 'EC' = 'REF' 'BC' ; 'EC'FC = 'LOC' 'BC':=CC ; 'OP' 'O3' = ('EC' A)'EC' : A ; # 'PROC'('REF''INT',[]'STRING','INT','INT','INT','INT','INT','INT')'INT' # 'MODE' 'ED' = 'REF' 'BD' ; 'ED'FD = 'LOC' 'BD':=CD ; 'OP' 'O4' = ('ED' A)'ED' : A ; 'BEGIN' CTRT:= 5 ; ( ['O1''O1'FA,10]'INT' ENT ; ENT[1,2]:=11 ; 'O2''O2'FB ! 'FOR' DEPUIS 'FROM' 'O1''O1'FA 'BY' 'O1''O1'FA 'TO' 'O1''O1'FA 'WHILE' 'MODE' 'M' = [-3:'O1''O1'FA]'STRING' ; 'M' VAR , 'M' CHAINE = 'M'('SKIP','SKIP',"","","","321")[@-3] ; 'O2''O2'FB 'DO' CTR+:=('O4''O4'FD) ( ENT[1,'O1''O1'FA] , CHAINE['O1''O1'FA : 'O1''O1'FA @ 'O1''O1'FA] , ('O3''O3'FC ! ('INT' X) : X) , ('O1''O1'FA ! 41,7,43!50) , 'LWB' ENT,1'UPB'ENT , DEPUIS , 'UPB' VAR) 'OD' ) ; 'SKIP' 'END' ; # NOUVEAU PREFIXE : 'PROC''PROC' # # 'INT' # 'MODE' 'FA' = 'PROC' 'BA' ; 'FA'GA = 'BA' : CA ; # 'BOOL' # 'MODE' 'FB' = 'PROC' 'BB' ; 'FB'GB = 'BB' : CB ; # 'UNION'('INT','REAL') # 'MODE' 'FC' = 'PROC' 'BC' ; 'FC'GC = 'BC' : CC ; # 'PROC'('REF''INT',[]'STRING','INT','INT','INT','INT','INT','INT')'INT' # 'MODE' 'FD' = 'PROC' 'BD' ; 'FD'GD = 'BD' : CD ; 'BEGIN' CTRT:= 6 ; ( [GA,10]'INT' ENT ; ENT[1,2]:=11 ; GB ! 'FOR' DEPUIS 'FROM' GA 'BY' GA 'TO' GA 'WHILE' 'MODE' 'M' = [-3:GA]'STRING' ; 'M' VAR , 'M' CHAINE = 'M'('SKIP','SKIP',"","","","321")[@-3] ; GB 'DO' CTR+:=GD ( ENT[1,GA] , CHAINE[GA : GA @ GA] , (GC ! ('INT' X) : X) , (GA ! 41,7,43!50) , 'LWB' ENT,1'UPB'ENT , DEPUIS , 'UPB' VAR) 'OD' ) ; 'SKIP' 'END' ; # NOUVEAU PREFIXE : 'REF''REF''REF' # # 'INT' # 'MODE' 'GA' = 'REF' 'CA' ; 'GA'HA = 'LOC' 'CA':=DA ; # 'BOOL' # 'MODE' 'GB' = 'REF' 'CB' ; 'GB'HB = 'LOC' 'CB':=DB ; # 'UNION'('INT','REAL') # 'MODE' 'GC' = 'REF' 'CC' ; 'GC'HC = 'LOC' 'CC':=DC ; # 'PROC'('REF''INT',[]'STRING','INT','INT','INT','INT','INT','INT')'INT' # 'MODE' 'GD' = 'REF' 'CD' ; 'GD'HD = 'LOC' 'CD':=DD ; 'BEGIN' CTRT:= 7 ; ( [HA,10]'INT' ENT ; ENT[1,2]:=11 ; HB ! 'FOR' DEPUIS 'FROM' HA 'BY' HA 'TO' HA 'WHILE' 'MODE' 'M' = [-3:HA]'STRING' ; 'M' VAR , 'M' CHAINE = 'M'('SKIP','SKIP',"","","","321")[@-3] ; HB 'DO' CTR+:=HD ( ENT[1,HA] , CHAINE[HA : HA @ HA] , (HC ! ('INT' X) : X) , (HA ! 41,7,43!50) , 'LWB' ENT,1'UPB'ENT , DEPUIS , 'UPB' VAR) 'OD' ) ; 'SKIP' 'END' ; # NOUVEAU PREFIXE : 'PROC''REF''REF' # # 'INT' # 'MODE' 'HA' = 'PROC' 'CA' ; 'HA'IA = 'CA' : DA ; []'HA'A = ('SKIP','SKIP',IA) ; # 'BOOL' # 'MODE' 'HB' = 'PROC' 'CB' ; 'HB'IB = 'CB' : DB ; []'HB'B = ('SKIP','SKIP',IB) ; # 'UNION'('INT','REAL') # 'MODE' 'HC' = 'PROC' 'CC' ; 'HC'IC = 'CC' : DC ; []'HC'C = ('SKIP','SKIP',IC) ; # 'PROC'('REF''INT',[]'STRING','INT','INT','INT','INT','INT','INT')'INT' # 'MODE' 'HD' = 'PROC' 'CD' ; 'HD'ID = 'CD' : DD ; []'HD'D = ('SKIP','SKIP',ID) ; 'BEGIN' CTRT:= 8 ; ( [A[3],10]'INT' ENT ; ENT[1,2]:=11 ; B[3] ! 'FOR' DEPUIS 'FROM' A[3] 'BY' A[3] 'TO' A[3] 'WHILE' 'MODE' 'M' = [-3:A[3]]'STRING' ; 'M' VAR , 'M' CHAINE = 'M'('SKIP','SKIP',"","","","321")[@-3] ; B[3] 'DO' CTR+:=D[3] ( ENT[1,A[3]] , CHAINE[A[3] : A[3] @ A[3]] , (C[3] ! ('INT' X) : X) , (A[3] ! 41,7,43!50) , 'LWB' ENT,1'UPB'ENT , DEPUIS , 'UPB' VAR) 'OD' ) ; 'SKIP' 'END' ; # NOUVEAU PREFIXE : 'REF''PROC''REF' # # 'INT' # 'MODE' 'IA' = 'REF' 'DA' ; 'IA'JA = 'LOC' 'DA':=EA ; 'PROC' PA = ('INT' ENT,'IA' B,'INT' AUT)'IA' : (ENT=AUT!B) ; # 'BOOL' # 'MODE' 'IB' = 'REF' 'DB' ; 'IB'JB = 'LOC' 'DB':=EB ; 'PROC' PB = ('INT' ENT,'IB' B,'INT' AUT)'IB' : (ENT=AUT!B) ; # 'UNION'('INT','REAL') # 'MODE' 'IC' = 'REF' 'DC' ; 'IC'JC = 'LOC' 'DC':=EC ; 'PROC' PC = ('INT' ENT,'IC' B,'INT' AUT)'IC' : (ENT=AUT!B) ; # 'PROC'('REF''INT',[]'STRING','INT','INT','INT','INT','INT','INT')'INT' # 'MODE' 'ID' = 'REF' 'DD' ; 'ID'JD = 'LOC' 'DD':=ED ; 'PROC' PD = ('INT' ENT,'ID' B,'INT' AUT)'ID' : (ENT=AUT!B) ; 'BEGIN' CTRT:= 9 ; ( [PA( -123456,JA,-123456),10]'INT' ENT ; ENT[1,2]:=11 ; PB( -123456,JB,-123456) ! 'FOR' DEPUIS 'FROM' PA( -123456,JA,-123456) 'BY' PA( -123456,JA,-123456) 'TO' PA( -123456,JA,-123456) 'WHILE' 'MODE' 'M' = [-3:PA( -123456,JA,-123456)]'STRING' ; 'M' VAR , 'M' CHAINE = 'M'('SKIP','SKIP',"","","","321")[@-3] ; PB( -123456,JB,-123456) 'DO' CTR+:=PD( -123456,JD,-123456) ( ENT[1,PA( -123456,JA,-123456)] , CHAINE[PA( -123456,JA,-123456) : PA( -123456,JA,-123456) @ PA( -123456,JA,-123456)] , (PC( -123456,JC,-123456) ! ('INT' X) : X) , (PA( -123456,JA,-123456) ! 41,7,43!50) , 'LWB' ENT,1'UPB'ENT , DEPUIS , 'UPB' VAR) 'OD' ) ; 'SKIP' 'END' ; # NOUVEAU PREFIXE : 'PROC''PROC''REF' # # 'INT' # 'MODE' 'JA' = 'PROC' 'DA' ; 'JA'KA = 'DA' : EA ; # 'BOOL' # 'MODE' 'JB' = 'PROC' 'DB' ; 'JB'KB = 'DB' : EB ; # 'UNION'('INT','REAL') # 'MODE' 'JC' = 'PROC' 'DC' ; 'JC'KC = 'DC' : EC ; # 'PROC'('REF''INT',[]'STRING','INT','INT','INT','INT','INT','INT')'INT' # 'MODE' 'JD' = 'PROC' 'DD' ; 'JD'KD = 'DD' : ED ; 'BEGIN' CTRT:= 10 ; ( [('INT' X;(E:KA)),10]'INT' ENT ; ENT[1,2]:=11 ; ('INT' X;(E:KB)) ! 'FOR' DEPUIS 'FROM' ('INT' X;(E:KA)) 'BY' ('INT' X;(E:KA)) 'TO' ('INT' X;(E:KA)) 'WHILE' 'MODE' 'M' = [-3:('INT' X;(E:KA))]'STRING' ; 'M' VAR , 'M' CHAINE = 'M'('SKIP','SKIP',"","","","321")[@-3] ; ('INT' X;(E:KB)) 'DO' CTR+:=('INT' X;(E:KD)) ( ENT[1,('INT' X;(E:KA))] , CHAINE[('INT' X;(E:KA)) : ('INT' X;(E:KA)) @ ('INT' X;(E:KA))] , (('INT' X;(E:KC)) ! ('INT' X) : X) , (('INT' X;(E:KA)) ! 41,7,43!50) , 'LWB' ENT,1'UPB'ENT , DEPUIS , 'UPB' VAR) 'OD' ) ; 'SKIP' 'END' ; # NOUVEAU PREFIXE : 'REF''REF''PROC' # # 'INT' # 'MODE' 'KA' = 'REF' 'EA' ; 'KA'LA = 'LOC' 'EA':=FA ; # 'BOOL' # 'MODE' 'KB' = 'REF' 'EB' ; 'KB'LB = 'LOC' 'EB':=FB ; # 'UNION'('INT','REAL') # 'MODE' 'KC' = 'REF' 'EC' ; 'KC'LC = 'LOC' 'EC':=FC ; # 'PROC'('REF''INT',[]'STRING','INT','INT','INT','INT','INT','INT')'INT' # 'MODE' 'KD' = 'REF' 'ED' ; 'KD'LD = 'LOC' 'ED':=FD ; 'BEGIN' CTRT:= 11 ; ( [('GOTO' F 'EXIT' E:LA 'EXIT' F: 'GOTO' E),10]'INT' ENT ; ENT[1,2]:=11 ; ('GOTO' F 'EXIT' E:LB 'EXIT' F: 'GOTO' E) ! 'FOR' DEPUIS 'FROM' ('GOTO' F 'EXIT' E:LA 'EXIT' F: 'GOTO' E) 'BY' ('GOTO' F 'EXIT' E:LA 'EXIT' F: 'GOTO' E) 'TO' ('GOTO' F 'EXIT' E:LA 'EXIT' F: 'GOTO' E) 'WHILE' 'MODE' 'M' = [-3:('GOTO' F 'EXIT' E:LA 'EXIT' F: 'GOTO' E)]'STRING' ; 'M' VAR , 'M' CHAINE = 'M'('SKIP','SKIP',"","","","321")[@-3] ; ('GOTO' F 'EXIT' E:LB 'EXIT' F: 'GOTO' E) 'DO' CTR+:=('GOTO' F 'EXIT' E:LD 'EXIT' F: 'GOTO' E) ( ENT[1,('GOTO' F 'EXIT' E:LA 'EXIT' F: 'GOTO' E)] , CHAINE[('GOTO' F 'EXIT' E:LA 'EXIT' F: 'GOTO' E) : ('GOTO' F 'EXIT' E:LA 'EXIT' F: 'GOTO' E) @ ('GOTO' F 'EXIT' E:LA 'EXIT' F: 'GOTO' E)] , (('GOTO' F 'EXIT' E:LC 'EXIT' F: 'GOTO' E) ! ('INT' X) : X) , (('GOTO' F 'EXIT' E:LA 'EXIT' F: 'GOTO' E) ! 41,7,43!50) , 'LWB' ENT,1'UPB'ENT , DEPUIS , 'UPB' VAR) 'OD' ) ; 'SKIP' 'END' ; # NOUVEAU PREFIXE : 'PROC''REF''PROC' # # 'INT' # 'MODE' 'LA' = 'PROC' 'EA' ; 'LA'MA = 'EA' : FA ; # 'BOOL' # 'MODE' 'LB' = 'PROC' 'EB' ; 'LB'MB = 'EB' : FB ; # 'UNION'('INT','REAL') # 'MODE' 'LC' = 'PROC' 'EC' ; 'LC'MC = 'EC' : FC ; # 'PROC'('REF''INT',[]'STRING','INT','INT','INT','INT','INT','INT')'INT' # 'MODE' 'LD' = 'PROC' 'ED' ; 'LD'MD = 'ED' : FD ; 'BEGIN' CTRT:= 12 ; ( ['LA''IF''FALSE''THEN''SKIP''ELSE'MA'FI',10]'INT' ENT ; ENT[1,2]:=11 ; 'LB''IF''FALSE''THEN''SKIP''ELSE'MB'FI' ! 'FOR' DEPUIS 'FROM' 'LA''IF''FALSE''THEN''SKIP''ELSE'MA'FI' 'BY' 'LA''IF''FALSE''THEN''SKIP''ELSE'MA'FI' 'TO' 'LA''IF''FALSE''THEN''SKIP''ELSE'MA'FI' 'WHILE' 'MODE' 'M' = [-3:'LA''IF''FALSE''THEN''SKIP''ELSE'MA'FI' ]'STRING' ; 'M' VAR , 'M' CHAINE = 'M'('SKIP','SKIP',"","","","321")[@-3] ; 'LB''IF''FALSE''THEN''SKIP''ELSE'MB'FI' 'DO' CTR+:='LD''IF''FALSE''THEN''SKIP''ELSE'MD'FI' ( ENT[1,'LA''IF''FALSE''THEN''SKIP''ELSE'MA'FI'] , CHAINE['LA''IF''FALSE''THEN''SKIP''ELSE'MA'FI' : 'LA''IF''FALSE''THEN''SKIP''ELSE'MA'FI' @ 'LA''IF''FALSE''THEN''SKIP''ELSE'MA'FI'] , ('LC''IF''FALSE''THEN''SKIP''ELSE'MC'FI' ! ('INT' X) : X) , ('LA''IF''FALSE''THEN''SKIP''ELSE'MA'FI' ! 41,7,43!50) , 'LWB' ENT,1'UPB'ENT , DEPUIS , 'UPB' VAR) 'OD' ) ; 'SKIP' 'END' ; # NOUVEAU PREFIXE : 'REF''PROC''PROC' # # 'INT' # 'MODE' 'MA' = 'REF' 'FA' ; 'MA'NA = 'LOC' 'FA':=GA ; # 'BOOL' # 'MODE' 'MB' = 'REF' 'FB' ; 'MB'NB = 'LOC' 'FB':=GB ; # 'UNION'('INT','REAL') # 'MODE' 'MC' = 'REF' 'FC' ; 'MC'NC = 'LOC' 'FC':=GC ; # 'PROC'('REF''INT',[]'STRING','INT','INT','INT','INT','INT','INT')'INT' # 'MODE' 'MD' = 'REF' 'FD' ; 'MD'ND = 'LOC' 'FD':=GD ; 'BEGIN' CTRT:= 13 ; ( [(-1!'SKIP',NA !NA),10]'INT' ENT ; ENT[1,2]:=11 ; (-1!'SKIP',NB !NB) ! 'FOR' DEPUIS 'FROM' (-1!'SKIP',NA !NA) 'BY' (-1!'SKIP',NA !NA) 'TO' (-1!'SKIP',NA !NA) 'WHILE' 'MODE' 'M' = [-3:(-1!'SKIP',NA !NA)]'STRING' ; 'M' VAR , 'M' CHAINE = 'M'('SKIP','SKIP',"","","","321")[@-3] ; (-1!'SKIP',NB !NB) 'DO' CTR+:=(-1!'SKIP',ND !ND) ( ENT[1,(-1!'SKIP',NA !NA)] , CHAINE[(-1!'SKIP',NA !NA) : (-1!'SKIP',NA !NA) @ (-1!'SKIP',NA !NA)] , ((-1!'SKIP',NC !NC) ! ('INT' X) : X) , ((-1!'SKIP',NA !NA) ! 41,7,43!50) , 'LWB' ENT,1'UPB'ENT , DEPUIS , 'UPB' VAR) 'OD' ) ; 'SKIP' 'END' ; # NOUVEAU PREFIXE : 'PROC''PROC''PROC' # # 'INT' # 'MODE' 'NA' = 'PROC' 'FA' ; 'NA'OA = 'FA' : GA ; 'UNION'('CHAR','NA') UA = OA ; # 'BOOL' # 'MODE' 'NB' = 'PROC' 'FB' ; 'NB'OB = 'FB' : GB ; 'UNION'('CHAR','NB') UB = OB ; # 'UNION'('INT','REAL') # 'MODE' 'NC' = 'PROC' 'FC' ; 'NC'OC = 'FC' : GC ; 'UNION'('CHAR','NC') UC = OC ; # 'PROC'('REF''INT',[]'STRING','INT','INT','INT','INT','INT','INT')'INT' # 'MODE' 'ND' = 'PROC' 'FD' ; 'ND'OD = 'FD' : GD ; 'UNION'('CHAR','ND') UD = OD ; 'BEGIN' CTRT:= 14 ; ( [(UA ! ('NA' X) : X),10]'INT' ENT ; ENT[1,2]:=11 ; (UB ! ('NB' X) : X) ! 'FOR' DEPUIS 'FROM' (UA ! ('NA' X) : X) 'BY' (UA ! ('NA' X) : X) 'TO' (UA ! ('NA' X) : X) 'WHILE' 'MODE' 'M' = [-3:(UA ! ('NA' X) : X)]'STRING' ; 'M' VAR , 'M' CHAINE = 'M'('SKIP','SKIP',"","","","321")[@-3] ; (UB ! ('NB' X) : X) 'DO' CTR+:=(UD ! ('ND' X) : X) ( ENT[1,(UA ! ('NA' X) : X)] , CHAINE[(UA ! ('NA' X) : X) : (UA ! ('NA' X) : X) @ (UA ! ('NA' X) : X)] , ((UC ! ('NC' X) : X) ! ('INT' X) : X) , ((UA ! ('NA' X) : X) ! 41,7,43!50) , 'LWB' ENT,1'UPB'ENT , DEPUIS , 'UPB' VAR) 'OD' ) ; 'SKIP' 'END' ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R6B # (PRINT(("COERCIONS IN FIRM CONTEXT",NEWLINE)) ; 'INT' VF = 800 ; 'INT' CTRT:=0, CTR:=0 , CTRLOC:=0 ; 'BOOL' BASCULE:='TRUE',B , 'PROC' CONTROLE = 'VOID' : 'IF' B 'AND' CTR=CTRLOC+15 'THEN' CTR+:=5 'ELSE' PRINT(("ER. IN TEST",CTRT,CTR,CTRLOC+15,NEWLINE))'FI' ; 'PROC' TILT = 'VOID' : PRINT(("ER.OP",CTRT,CTR-CTRLOC,NEWLINE)) ; # SERVITUDES # 'UNION'('INT','REAL') VU = 1E0 , 'MODE' 'SB' = 'STRUCT'('BOOL' CH,OF) , 'UBE' = 'UNION'('BOOL','INT') , 'PRIO' 'BOLD' = 2 , -==:= 1 ; # MODE A POSTERIORI : [,]'BOOL' # 'OP' -==:= ([,]'BOOL' A) [,]'BOOL' : ('FALSE','FALSE','NOT'(CTR+:=1;A)[3,1]) , -==:= ([,]'BOOL' A,B) [,]'BOOL' : (A[3,1]'AND'B[3,1]! CTR+:=2;('FALSE','FALSE','TRUE' ) ! TILT ; 'SKIP') , 'BOLD' = ([,]'BOOL' A,B) [,]'BOOL' : ('NOT'A[3,1]'AND'B[3,1]! CTR+:=2;('FALSE','FALSE',BASCULE:='NOT'BASCULE ) ! TILT ; 'SKIP') ; # MODE A POSTERIORI : 'UNION'('BITS','REAL','SB') # 'OP' -==:= ('UNION'('BITS','REAL','SB') A) 'SB' : ('NOT'CH'OF'(CTR+:=1;A!('SB'A):A),'FALSE') , -==:= ('UNION'('BITS','REAL','SB') A,B) 'SB' : (((A!('SB'A):CH'OF'A)'AND'(B!('SB'B):CH'OF'B)! CTR+:=2 ;'TRUE' ! TILT ; 'SKIP') , 'FALSE') , 'BOLD' = ('UNION'('BITS','REAL','SB') A,B) 'SB' : (('NOT'(A!('SB'A):CH'OF'A)'AND'(B!('SB'B):CH'OF'B)! CTR+:=2 ;BASCULE:='NOT'BASCULE ! TILT ; 'SKIP') , 'FALSE') ; # MODE A POSTERIORI : 'UNION'('UNION'('COMPL','BOOL'), 'INT','UNION'('INT','UBE')) # 'OP' -==:= ('UNION'('UNION'('COMPL','BOOL'), 'INT','UNION'('INT','UBE')) A) 'BOOL' : (CTR+:=1;A!('BOOL'A):'NOT'A) , -==:= ('UNION'('UNION'('COMPL','BOOL'), 'INT','UNION'('INT','UBE')) A,B) 'BOOL' : ((A!('BOOL'A):A)'AND'(B!('BOOL'B):B) ! CTR+:=2 ;'TRUE' ! TILT ; 'SKIP') , 'BOLD' = ('UNION'('UNION'('COMPL','BOOL'), 'INT','UNION'('INT','UBE')) A,B) 'BOOL' : ('NOT'(A!('BOOL'A):A)'AND'(B!('BOOL'B):B) ! CTR+:=2 ;BASCULE:='NOT'BASCULE ! TILT ; 'SKIP') ; 'BEGIN' # COERCION SUR MODE : 'SB' # 'SB'IDENT =('TRUE','FALSE'); 'STRUCT'('INT' A,'SB'CH)DE = (0,IDENT) , []'SB'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('SB' A) 'SB' : A ; #CONTEXTES # CTRT:= 1 ; CTRLOC:=CTR ; B:=CH'OF'(IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT ) ; CONTROLE ; CTRT:= 2 ; CTRLOC:=CTR ; B:=CH'OF'('SB'(('TRUE','FALSE')) -==:'SB'(('TRUE','FALSE')) -==:-==:'SB'(('TRUE','FALSE'))'BOLD' (-==:-==:'SB'(('TRUE','FALSE'))-==: ('SB'(('TRUE','FALSE'))-==:'SB'(('TRUE','FALSE')))) 'BOLD''SB'(('TRUE','FALSE')) ) ; CONTROLE ; CTRT:= 3 ; CTRLOC:=CTR ; B:=CH'OF'(CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE ) ; CONTROLE ; CTRT:= 4 ; CTRLOC:=CTR ; B:=CH'OF'(RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] ) ; CONTROLE ; CTRT:= 5 ; CTRLOC:=CTR ; B:=CH'OF'(PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) ) ; CONTROLE ; CTRT:= 6 ; CTRLOC:=CTR ; B:=CH'OF'('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' ) ; CONTROLE ; CTRT:= 7 ; CTRLOC:=CTR ; B:=CH'OF'('SB'(1!IDENT,'SKIP') -==:'SB'(1!IDENT,'SKIP') -==:-==:'SB'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'SB'(1!IDENT,'SKIP') -==: ('SB'(1!IDENT,'SKIP') -==:'SB'(1!IDENT,'SKIP') )) 'BOLD''SB'(1!IDENT,'SKIP') ) ; CONTROLE ; CTRT:= 8 ; CTRLOC:=CTR ; B:=CH'OF'(('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) ) ; CONTROLE ; 'SKIP''END' ; 'BEGIN' # COERCION SUR MODE : 'BOOL' # 'BOOL'IDENT ='TRUE'; 'STRUCT'('INT' A,'BOOL'CH)DE = (0,IDENT) , []'BOOL'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('BOOL' A) 'BOOL' : A ; #CONTEXTES # CTRT:= 9 ; CTRLOC:=CTR ; B:=IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT ; CONTROLE ; CTRT:= 10 ; CTRLOC:=CTR ; B:='BOOL'('TRUE') -==:'BOOL'('TRUE') -==:-==:'BOOL'('TRUE')'BOLD' (-==:-==:'BOOL'('TRUE')-==: ('BOOL'('TRUE')-==:'BOOL'('TRUE'))) 'BOLD''BOOL'('TRUE') ; CONTROLE ; CTRT:= 11 ; CTRLOC:=CTR ; B:=CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE ; CONTROLE ; CTRT:= 12 ; CTRLOC:=CTR ; B:=RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] ; CONTROLE ; CTRT:= 13 ; CTRLOC:=CTR ; B:=PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) ; CONTROLE ; CTRT:= 14 ; CTRLOC:=CTR ; B:='IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' ; CONTROLE ; CTRT:= 15 ; CTRLOC:=CTR ; B:='BOOL'(1!IDENT,'SKIP') -==:'BOOL'(1!IDENT,'SKIP') -==:-==:'BOOL'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'BOOL'(1!IDENT,'SKIP') -==: ('BOOL'(1!IDENT,'SKIP') -==:'BOOL'(1!IDENT,'SKIP') )) 'BOLD''BOOL'(1!IDENT,'SKIP') ; CONTROLE ; CTRT:= 16 ; CTRLOC:=CTR ; B:=('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) ; CONTROLE ; 'SKIP''END' ; 'BEGIN' # COERCION SUR MODE : 'REF'[,]'BOOL' # 'REF'[,]'BOOL'IDENT ='HEAP'[3,1]'BOOL':=('FALSE','FALSE','TRUE'); 'STRUCT'('INT' A,'REF'[,]'BOOL'CH)DE = (0,IDENT) , []'REF'[,]'BOOL'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('REF'[,]'BOOL' A) 'REF'[,]'BOOL' : A ; #CONTEXTES # CTRT:= 17 ; CTRLOC:=CTR ; B:=(IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT )[3,1] ; CONTROLE ; CTRT:= 18 ; CTRLOC:=CTR ; B:=('REF'[,]'BOOL'('HEAP'[3,1]'BOOL':=('FALSE','FALSE','TRUE')) -==:'REF'[,]'BOOL'('HEAP'[3,1]'BOOL':=('FALSE','FALSE','TRUE')) -==:-==:'REF'[,]'BOOL'('HEAP'[3,1]'BOOL':=('FALSE','FALSE','TRUE')) 'BOLD' (-==:-==:'REF'[,]'BOOL'('HEAP'[3,1]'BOOL':=('FALSE','FALSE','TRUE') )-==: ('REF'[,]'BOOL'('HEAP'[3,1]'BOOL':=('FALSE','FALSE','TRUE'))-==: 'REF'[,]'BOOL'('HEAP'[3,1]'BOOL':=('FALSE','FALSE','TRUE')))) 'BOLD''REF'[,]'BOOL'('HEAP'[3,1]'BOOL':=('FALSE','FALSE','TRUE')) )[3,1] ; CONTROLE ; CTRT:= 19 ; CTRLOC:=CTR ; B:=(CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE )[3,1] ; CONTROLE ; CTRT:= 20 ; CTRLOC:=CTR ; B:=(RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] )[3,1] ; CONTROLE ; CTRT:= 21 ; CTRLOC:=CTR ; B:=(PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) )[3,1] ; CONTROLE ; CTRT:= 22 ; CTRLOC:=CTR ; B:=('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )[3,1] ; CONTROLE ; CTRT:= 23 ; CTRLOC:=CTR ; B:=('REF'[,]'BOOL'(1!IDENT,'SKIP') -==:'REF'[,]'BOOL'(1!IDENT,'SKIP') -==:-==:'REF'[,]'BOOL'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'REF'[,]'BOOL'(1!IDENT,'SKIP') -==: ('REF'[,]'BOOL'(1!IDENT,'SKIP') -==:'REF'[,]'BOOL'(1!IDENT,'SKIP') )) 'BOLD''REF'[,]'BOOL'(1!IDENT,'SKIP') )[3,1] ; CONTROLE ; CTRT:= 24 ; CTRLOC:=CTR ; B:=(('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )[3,1] ; CONTROLE ; 'SKIP''END' ; 'BEGIN' # COERCION SUR MODE : 'REF''SB' # 'REF''SB'IDENT ='HEAP''SB':=('TRUE','FALSE'); 'STRUCT'('INT' A,'REF''SB'CH)DE = (0,IDENT) , []'REF''SB'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('REF''SB' A) 'REF''SB' : A ; #CONTEXTES # CTRT:= 25 ; CTRLOC:=CTR ; B:=CH'OF'(IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT ) ; CONTROLE ; CTRT:= 26 ; CTRLOC:=CTR ; B:=CH'OF'('REF''SB'('HEAP''SB':=('TRUE','FALSE')) -==:'REF''SB'('HEAP''SB':=('TRUE','FALSE')) -==:-==:'REF''SB'('HEAP''SB':=('TRUE','FALSE'))'BOLD' (-==:-==:'REF''SB'('HEAP''SB':=('TRUE','FALSE'))-==: ('REF''SB'('HEAP''SB':=('TRUE','FALSE'))-==:'REF''SB'('HEAP''SB':= ('TRUE','FALSE')))) 'BOLD''REF''SB'('HEAP''SB':=('TRUE','FALSE')) ) ; CONTROLE ; CTRT:= 27 ; CTRLOC:=CTR ; B:=CH'OF'(CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE ) ; CONTROLE ; CTRT:= 28 ; CTRLOC:=CTR ; B:=CH'OF'(RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] ) ; CONTROLE ; CTRT:= 29 ; CTRLOC:=CTR ; B:=CH'OF'(PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) ) ; CONTROLE ; CTRT:= 30 ; CTRLOC:=CTR ; B:=CH'OF'('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' ) ; CONTROLE ; CTRT:= 31 ; CTRLOC:=CTR ; B:=CH'OF'('REF''SB'(1!IDENT,'SKIP') -==:'REF''SB'(1!IDENT,'SKIP') -==:-==:'REF''SB'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'REF''SB'(1!IDENT,'SKIP') -==: ('REF''SB'(1!IDENT,'SKIP') -==:'REF''SB'(1!IDENT,'SKIP') )) 'BOLD''REF''SB'(1!IDENT,'SKIP') ) ; CONTROLE ; CTRT:= 32 ; CTRLOC:=CTR ; B:=CH'OF'(('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) ) ; CONTROLE ; 'SKIP''END' ; 'BEGIN' # COERCION SUR MODE : 'REF''BOOL' # 'REF''BOOL'IDENT ='HEAP''BOOL':='TRUE'; 'STRUCT'('INT' A,'REF''BOOL'CH)DE = (0,IDENT) , []'REF''BOOL'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('REF''BOOL' A) 'REF''BOOL' : A ; #CONTEXTES # CTRT:= 33 ; CTRLOC:=CTR ; B:=IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT ; CONTROLE ; CTRT:= 34 ; CTRLOC:=CTR ; B:='REF''BOOL'('HEAP''BOOL':='TRUE') -==:'REF''BOOL'('HEAP''BOOL':='TRUE') -==:-==:'REF''BOOL'('HEAP''BOOL':='TRUE')'BOLD' (-==:-==:'REF''BOOL'('HEAP''BOOL':='TRUE')-==: ('REF''BOOL'('HEAP''BOOL':='TRUE')-==:'REF''BOOL'('HEAP''BOOL':= 'TRUE'))) 'BOLD''REF''BOOL'('HEAP''BOOL':='TRUE') ; CONTROLE ; CTRT:= 35 ; CTRLOC:=CTR ; B:=CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE ; CONTROLE ; CTRT:= 36 ; CTRLOC:=CTR ; B:=RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] ; CONTROLE ; CTRT:= 37 ; CTRLOC:=CTR ; B:=PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) ; CONTROLE ; CTRT:= 38 ; CTRLOC:=CTR ; B:='IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' ; CONTROLE ; CTRT:= 39 ; CTRLOC:=CTR ; B:='REF''BOOL'(1!IDENT,'SKIP') -==:'REF''BOOL'(1!IDENT,'SKIP') -==:-==:'REF''BOOL'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'REF''BOOL'(1!IDENT,'SKIP') -==: ('REF''BOOL'(1!IDENT,'SKIP') -==:'REF''BOOL'(1!IDENT,'SKIP') )) 'BOLD''REF''BOOL'(1!IDENT,'SKIP') ; CONTROLE ; CTRT:= 40 ; CTRLOC:=CTR ; B:=('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) ; CONTROLE ; 'SKIP''END' ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R6B # (PRINT(("COERCIONS IN FIRM CONTEXT",NEWLINE)) ; 'INT' VF = 800 ; 'INT' CTRT:=0, CTR:=0 , CTRLOC:=0 ; 'BOOL' BASCULE:='TRUE',B , 'PROC' CONTROLE = 'VOID' : 'IF' B 'AND' CTR=CTRLOC+15 'THEN' CTR+:=5 'ELSE' PRINT(("ER. IN TEST",CTRT,CTR,CTRLOC+15,NEWLINE))'FI' ; 'PROC' TILT = 'VOID' : PRINT(("ER.OP",CTRT,CTR-CTRLOC,NEWLINE)) ; # SERVITUDES # 'UNION'('INT','REAL') VU = 1E0 , 'MODE' 'SB' = 'STRUCT'('BOOL' CH,OF) , 'UBE' = 'UNION'('BOOL','INT') , 'PRIO' 'BOLD' = 2 , -==:= 1 ; # MODE A POSTERIORI : [,]'BOOL' # 'OP' -==:= ([,]'BOOL' A) [,]'BOOL' : ('FALSE','FALSE','NOT'(CTR+:=1;A)[3,1]) , -==:= ([,]'BOOL' A,B) [,]'BOOL' : (A[3,1]'AND'B[3,1]! CTR+:=2;('FALSE','FALSE','TRUE' ) ! TILT ; 'SKIP') , 'BOLD' = ([,]'BOOL' A,B) [,]'BOOL' : ('NOT'A[3,1]'AND'B[3,1]! CTR+:=2;('FALSE','FALSE',BASCULE:='NOT'BASCULE ) ! TILT ; 'SKIP') ; # MODE A POSTERIORI : 'UNION'('BITS','REAL','SB') # 'OP' -==:= ('UNION'('BITS','REAL','SB') A) 'SB' : ('NOT'CH'OF'(CTR+:=1;A!('SB'A):A),'FALSE') , -==:= ('UNION'('BITS','REAL','SB') A,B) 'SB' : (((A!('SB'A):CH'OF'A)'AND'(B!('SB'B):CH'OF'B)! CTR+:=2 ;'TRUE' ! TILT ; 'SKIP') , 'FALSE') , 'BOLD' = ('UNION'('BITS','REAL','SB') A,B) 'SB' : (('NOT'(A!('SB'A):CH'OF'A)'AND'(B!('SB'B):CH'OF'B)! CTR+:=2 ;BASCULE:='NOT'BASCULE ! TILT ; 'SKIP') , 'FALSE') ; # MODE A POSTERIORI : 'UNION'('UNION'('COMPL','BOOL'), 'INT','UNION'('INT','UBE')) # 'OP' -==:= ('UNION'('UNION'('COMPL','BOOL'), 'INT','UNION'('INT','UBE')) A) 'BOOL' : (CTR+:=1;A!('BOOL'A):'NOT'A) , -==:= ('UNION'('UNION'('COMPL','BOOL'), 'INT','UNION'('INT','UBE')) A,B) 'BOOL' : ((A!('BOOL'A):A)'AND'(B!('BOOL'B):B) ! CTR+:=2 ;'TRUE' ! TILT ; 'SKIP') , 'BOLD' = ('UNION'('UNION'('COMPL','BOOL'), 'INT','UNION'('INT','UBE')) A,B) 'BOOL' : ('NOT'(A!('BOOL'A):A)'AND'(B!('BOOL'B):B) ! CTR+:=2 ;BASCULE:='NOT'BASCULE ! TILT ; 'SKIP') ; 'BEGIN' # COERCION SUR MODE : 'PROC'[,]'BOOL' # 'PROC'[,]'BOOL'IDENT =[,]'BOOL':('FALSE','FALSE','TRUE'); 'STRUCT'('INT' A,'PROC'[,]'BOOL'CH)DE = (0,IDENT) , []'PROC'[,]'BOOL'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('PROC'[,]'BOOL' A) 'PROC'[,]'BOOL' : A ; #CONTEXTES # CTRT:= 41 ; CTRLOC:=CTR ; B:=(IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT )[3,1] ; CONTROLE ; CTRT:= 42 ; CTRLOC:=CTR ; B:=('PROC'[,]'BOOL'([,]'BOOL':('FALSE','FALSE','TRUE')) -==:'PROC'[,]'BOOL'([,]'BOOL':('FALSE','FALSE','TRUE')) -==:-==:'PROC'[,]'BOOL'([,]'BOOL':('FALSE','FALSE','TRUE'))'BOLD' (-==:-==:'PROC'[,]'BOOL'([,]'BOOL':('FALSE','FALSE','TRUE'))-==: ('PROC'[,]'BOOL'([,]'BOOL':('FALSE','FALSE','TRUE'))-==:'PROC' [,]'BOOL'([,]'BOOL':('FALSE','FALSE','TRUE')))) 'BOLD''PROC'[,]'BOOL'([,]'BOOL':('FALSE','FALSE','TRUE')) )[3,1] ; CONTROLE ; CTRT:= 43 ; CTRLOC:=CTR ; B:=(CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE )[3,1] ; CONTROLE ; CTRT:= 44 ; CTRLOC:=CTR ; B:=(RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] )[3,1] ; CONTROLE ; CTRT:= 45 ; CTRLOC:=CTR ; B:=(PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) )[3,1] ; CONTROLE ; CTRT:= 46 ; CTRLOC:=CTR ; B:=('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )[3,1] ; CONTROLE ; CTRT:= 47 ; CTRLOC:=CTR ; B:=('PROC'[,]'BOOL'(1!IDENT,'SKIP') -==:'PROC'[,]'BOOL'(1!IDENT,'SKIP') -==:-==:'PROC'[,]'BOOL'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'PROC'[,]'BOOL'(1!IDENT,'SKIP') -==: ('PROC'[,]'BOOL'(1!IDENT,'SKIP') -==:'PROC'[,]'BOOL'(1!IDENT,'SKIP') )) 'BOLD''PROC'[,]'BOOL'(1!IDENT,'SKIP') )[3,1] ; CONTROLE ; CTRT:= 48 ; CTRLOC:=CTR ; B:=(('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )[3,1] ; CONTROLE ; 'SKIP''END' ; 'BEGIN' # COERCION SUR MODE : 'PROC''SB' # 'PROC''SB'IDENT ='SB':('TRUE','FALSE'); 'STRUCT'('INT' A,'PROC''SB'CH)DE = (0,IDENT) , []'PROC''SB'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('PROC''SB' A) 'PROC''SB' : A ; #CONTEXTES # CTRT:= 49 ; CTRLOC:=CTR ; B:=CH'OF'(IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT ) ; CONTROLE ; CTRT:= 50 ; CTRLOC:=CTR ; B:=CH'OF'('PROC''SB'('SB':('TRUE','FALSE')) -==:'PROC''SB'('SB':('TRUE','FALSE')) -==:-==:'PROC''SB'('SB':('TRUE','FALSE'))'BOLD' (-==:-==:'PROC''SB'('SB':('TRUE','FALSE'))-==: ('PROC''SB'('SB':('TRUE','FALSE'))-==:'PROC''SB'('SB': ('TRUE','FALSE')))) 'BOLD''PROC''SB'('SB':('TRUE','FALSE')) ) ; CONTROLE ; CTRT:= 51 ; CTRLOC:=CTR ; B:=CH'OF'(CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE ) ; CONTROLE ; CTRT:= 52 ; CTRLOC:=CTR ; B:=CH'OF'(RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] ) ; CONTROLE ; CTRT:= 53 ; CTRLOC:=CTR ; B:=CH'OF'(PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) ) ; CONTROLE ; CTRT:= 54 ; CTRLOC:=CTR ; B:=CH'OF'('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' ) ; CONTROLE ; CTRT:= 55 ; CTRLOC:=CTR ; B:=CH'OF'('PROC''SB'(1!IDENT,'SKIP') -==:'PROC''SB'(1!IDENT,'SKIP') -==:-==:'PROC''SB'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'PROC''SB'(1!IDENT,'SKIP') -==: ('PROC''SB'(1!IDENT,'SKIP') -==:'PROC''SB'(1!IDENT,'SKIP') )) 'BOLD''PROC''SB'(1!IDENT,'SKIP') ) ; CONTROLE ; CTRT:= 56 ; CTRLOC:=CTR ; B:=CH'OF'(('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) ) ; CONTROLE ; 'SKIP''END' ; 'BEGIN' # COERCION SUR MODE : 'PROC''BOOL' # 'PROC''BOOL'IDENT ='BOOL':'TRUE'; 'STRUCT'('INT' A,'PROC''BOOL'CH)DE = (0,IDENT) , []'PROC''BOOL'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('PROC''BOOL' A) 'PROC''BOOL' : A ; #CONTEXTES # CTRT:= 57 ; CTRLOC:=CTR ; B:=IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT ; CONTROLE ; CTRT:= 58 ; CTRLOC:=CTR ; B:='PROC''BOOL'('BOOL':'TRUE') -==:'PROC''BOOL'('BOOL':'TRUE') -==:-==:'PROC''BOOL'('BOOL':'TRUE')'BOLD' (-==:-==:'PROC''BOOL'('BOOL':'TRUE')-==: ('PROC''BOOL'('BOOL':'TRUE')-==:'PROC''BOOL'('BOOL':'TRUE'))) 'BOLD''PROC''BOOL'('BOOL':'TRUE') ; CONTROLE ; CTRT:= 59 ; CTRLOC:=CTR ; B:=CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE ; CONTROLE ; CTRT:= 60 ; CTRLOC:=CTR ; B:=RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] ; CONTROLE ; CTRT:= 61 ; CTRLOC:=CTR ; B:=PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) ; CONTROLE ; CTRT:= 62 ; CTRLOC:=CTR ; B:='IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' ; CONTROLE ; CTRT:= 63 ; CTRLOC:=CTR ; B:='PROC''BOOL'(1!IDENT,'SKIP') -==:'PROC''BOOL'(1!IDENT,'SKIP') -==:-==:'PROC''BOOL'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'PROC''BOOL'(1!IDENT,'SKIP') -==: ('PROC''BOOL'(1!IDENT,'SKIP') -==:'PROC''BOOL'(1!IDENT,'SKIP') )) 'BOLD''PROC''BOOL'(1!IDENT,'SKIP') ; CONTROLE ; CTRT:= 64 ; CTRLOC:=CTR ; B:=('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) ; CONTROLE ; 'SKIP''END' ; 'BEGIN' # COERCION SUR MODE : 'REF''REF'[,]'BOOL' # 'REF''REF'[,]'BOOL'IDENT ='HEAP''REF'[,]'BOOL':='HEAP' [3,1]'BOOL':=('FALSE','FALSE','TRUE'); 'STRUCT'('INT' A,'REF''REF'[,]'BOOL'CH)DE = (0,IDENT) , []'REF''REF'[,]'BOOL'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('REF''REF'[,]'BOOL' A) 'REF''REF'[,]'BOOL' : A ; #CONTEXTES # CTRT:= 65 ; CTRLOC:=CTR ; B:=(IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT )[3,1] ; CONTROLE ; CTRT:= 66 ; CTRLOC:=CTR ; B:=('REF''REF'[,]'BOOL'('HEAP''REF'[,]'BOOL':='HEAP'[3,1]'BOOL':= ('FALSE','FALSE','TRUE')) -==:'REF''REF'[,]'BOOL'('HEAP''REF'[,]'BOOL':='HEAP'[3,1]'BOOL':= ('FALSE','FALSE','TRUE')) -==:-==:'REF''REF'[,]'BOOL'('HEAP''REF'[,]'BOOL':='HEAP' [3,1]'BOOL':=('FALSE','FALSE','TRUE'))'BOLD' (-==:-==:'REF''REF'[,]'BOOL'('HEAP''REF'[,]'BOOL':='HEAP' [3,1]'BOOL':=('FALSE','FALSE','TRUE'))-==: ('REF''REF'[,]'BOOL'('HEAP''REF'[,]'BOOL':='HEAP'[3,1]'BOOL':= ('FALSE','FALSE','TRUE'))-==:'REF''REF'[,]'BOOL'('HEAP''REF'[,]'BOOL':= 'HEAP'[3,1]'BOOL':=('FALSE','FALSE','TRUE')))) 'BOLD''REF''REF'[,]'BOOL'('HEAP''REF'[,]'BOOL':='HEAP'[3,1]'BOOL' :=('FALSE','FALSE','TRUE')) )[3,1] ; CONTROLE ; CTRT:= 67 ; CTRLOC:=CTR ; B:=(CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE )[3,1] ; CONTROLE ; CTRT:= 68 ; CTRLOC:=CTR ; B:=(RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] )[3,1] ; CONTROLE ; CTRT:= 69 ; CTRLOC:=CTR ; B:=(PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) )[3,1] ; CONTROLE ; CTRT:= 70 ; CTRLOC:=CTR ; B:=('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )[3,1] ; CONTROLE ; CTRT:= 71 ; CTRLOC:=CTR ; B:=('REF''REF'[,]'BOOL'(1!IDENT,'SKIP') -==:'REF''REF'[,]'BOOL'(1!IDENT,'SKIP') -==:-==:'REF''REF'[,]'BOOL'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'REF''REF'[,]'BOOL'(1!IDENT,'SKIP') -==: ('REF''REF'[,]'BOOL'(1!IDENT,'SKIP') -==:'REF''REF'[,]'BOOL'(1!IDENT,'SKIP') )) 'BOLD''REF''REF'[,]'BOOL'(1!IDENT,'SKIP') )[3,1] ; CONTROLE ; CTRT:= 72 ; CTRLOC:=CTR ; B:=(('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )[3,1] ; CONTROLE ; 'SKIP''END' ; 'BEGIN' # COERCION SUR MODE : 'REF''REF''SB' # 'REF''REF''SB'IDENT ='HEAP''REF''SB':='HEAP''SB':=('TRUE','FALSE'); 'STRUCT'('INT' A,'REF''REF''SB'CH)DE = (0,IDENT) , []'REF''REF''SB'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('REF''REF''SB' A) 'REF''REF''SB' : A ; #CONTEXTES # CTRT:= 73 ; CTRLOC:=CTR ; B:=CH'OF'(IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT ) ; CONTROLE ; CTRT:= 74 ; CTRLOC:=CTR ; B:=CH'OF'('REF''REF''SB'('HEAP''REF''SB':='HEAP''SB':=('TRUE','FALSE')) -==:'REF''REF''SB'('HEAP''REF''SB':='HEAP''SB':=('TRUE','FALSE')) -==:-==:'REF''REF''SB'('HEAP''REF''SB':='HEAP''SB':=('TRUE','FALSE')) 'BOLD' (-==:-==:'REF''REF''SB'('HEAP''REF''SB':='HEAP''SB':=('TRUE','FALSE')) -==: ('REF''REF''SB'('HEAP''REF''SB':='HEAP''SB':=('TRUE','FALSE'))-==: 'REF''REF''SB'('HEAP''REF''SB':='HEAP''SB':=('TRUE','FALSE')))) 'BOLD''REF''REF''SB'('HEAP''REF''SB':='HEAP''SB':=('TRUE','FALSE')) ) ; CONTROLE ; CTRT:= 75 ; CTRLOC:=CTR ; B:=CH'OF'(CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE ) ; CONTROLE ; CTRT:= 76 ; CTRLOC:=CTR ; B:=CH'OF'(RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] ) ; CONTROLE ; CTRT:= 77 ; CTRLOC:=CTR ; B:=CH'OF'(PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) ) ; CONTROLE ; CTRT:= 78 ; CTRLOC:=CTR ; B:=CH'OF'('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' ) ; CONTROLE ; CTRT:= 79 ; CTRLOC:=CTR ; B:=CH'OF'('REF''REF''SB'(1!IDENT,'SKIP') -==:'REF''REF''SB'(1!IDENT,'SKIP') -==:-==:'REF''REF''SB'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'REF''REF''SB'(1!IDENT,'SKIP') -==: ('REF''REF''SB'(1!IDENT,'SKIP') -==:'REF''REF''SB'(1!IDENT,'SKIP') )) 'BOLD''REF''REF''SB'(1!IDENT,'SKIP') ) ; CONTROLE ; CTRT:= 80 ; CTRLOC:=CTR ; B:=CH'OF'(('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) ) ; CONTROLE ; 'SKIP''END' ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R6B # (PRINT(("COERCIONS IN FIRM CONTEXT",NEWLINE)) ; 'INT' VF = 800 ; 'INT' CTRT:=0, CTR:=0 , CTRLOC:=0 ; 'BOOL' BASCULE:='TRUE',B , 'PROC' CONTROLE = 'VOID' : 'IF' B 'AND' CTR=CTRLOC+15 'THEN' CTR+:=5 'ELSE' PRINT(("ER. IN TEST",CTRT,CTR,CTRLOC+15,NEWLINE))'FI' ; 'PROC' TILT = 'VOID' : PRINT(("ER.OP",CTRT,CTR-CTRLOC,NEWLINE)) ; # SERVITUDES # 'UNION'('INT','REAL') VU = 1E0 , 'MODE' 'SB' = 'STRUCT'('BOOL' CH,OF) , 'UBE' = 'UNION'('BOOL','INT') , 'PRIO' 'BOLD' = 2 , -==:= 1 ; # MODE A POSTERIORI : [,]'BOOL' # 'OP' -==:= ([,]'BOOL' A) [,]'BOOL' : ('FALSE','FALSE','NOT'(CTR+:=1;A)[3,1]) , -==:= ([,]'BOOL' A,B) [,]'BOOL' : (A[3,1]'AND'B[3,1]! CTR+:=2;('FALSE','FALSE','TRUE' ) ! TILT ; 'SKIP') , 'BOLD' = ([,]'BOOL' A,B) [,]'BOOL' : ('NOT'A[3,1]'AND'B[3,1]! CTR+:=2;('FALSE','FALSE',BASCULE:='NOT'BASCULE ) ! TILT ; 'SKIP') ; # MODE A POSTERIORI : 'UNION'('BITS','REAL','SB') # 'OP' -==:= ('UNION'('BITS','REAL','SB') A) 'SB' : ('NOT'CH'OF'(CTR+:=1;A!('SB'A):A),'FALSE') , -==:= ('UNION'('BITS','REAL','SB') A,B) 'SB' : (((A!('SB'A):CH'OF'A)'AND'(B!('SB'B):CH'OF'B)! CTR+:=2 ;'TRUE' ! TILT ; 'SKIP') , 'FALSE') , 'BOLD' = ('UNION'('BITS','REAL','SB') A,B) 'SB' : (('NOT'(A!('SB'A):CH'OF'A)'AND'(B!('SB'B):CH'OF'B)! CTR+:=2 ;BASCULE:='NOT'BASCULE ! TILT ; 'SKIP') , 'FALSE') ; # MODE A POSTERIORI : 'UNION'('UNION'('COMPL','BOOL'), 'INT','UNION'('INT','UBE')) # 'OP' -==:= ('UNION'('UNION'('COMPL','BOOL'), 'INT','UNION'('INT','UBE')) A) 'BOOL' : (CTR+:=1;A!('BOOL'A):'NOT'A) , -==:= ('UNION'('UNION'('COMPL','BOOL'), 'INT','UNION'('INT','UBE')) A,B) 'BOOL' : ((A!('BOOL'A):A)'AND'(B!('BOOL'B):B) ! CTR+:=2 ;'TRUE' ! TILT ; 'SKIP') , 'BOLD' = ('UNION'('UNION'('COMPL','BOOL'), 'INT','UNION'('INT','UBE')) A,B) 'BOOL' : ('NOT'(A!('BOOL'A):A)'AND'(B!('BOOL'B):B) ! CTR+:=2 ;BASCULE:='NOT'BASCULE ! TILT ; 'SKIP') ; 'BEGIN' # COERCION SUR MODE : 'REF''REF''BOOL' # 'REF''REF''BOOL'IDENT ='HEAP''REF''BOOL':='HEAP''BOOL':='TRUE'; 'STRUCT'('INT' A,'REF''REF''BOOL'CH)DE = (0,IDENT) , []'REF''REF''BOOL'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('REF''REF''BOOL' A) 'REF''REF''BOOL' : A ; #CONTEXTES # CTRT:= 81 ; CTRLOC:=CTR ; B:=IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT ; CONTROLE ; CTRT:= 82 ; CTRLOC:=CTR ; B:='REF''REF''BOOL'('HEAP''REF''BOOL':='HEAP''BOOL':='TRUE') -==:'REF''REF''BOOL'('HEAP''REF''BOOL':='HEAP''BOOL':='TRUE') -==:-==:'REF''REF''BOOL'('HEAP''REF''BOOL':='HEAP''BOOL':='TRUE')'BOLD' (-==:-==:'REF''REF''BOOL'('HEAP''REF''BOOL':='HEAP''BOOL':='TRUE')-==: ('REF''REF''BOOL'('HEAP''REF''BOOL':='HEAP''BOOL':='TRUE')-==: 'REF''REF''BOOL'('HEAP''REF''BOOL':='HEAP''BOOL':='TRUE'))) 'BOLD''REF''REF''BOOL'('HEAP''REF''BOOL':='HEAP''BOOL':='TRUE') ; CONTROLE ; CTRT:= 83 ; CTRLOC:=CTR ; B:=CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE ; CONTROLE ; CTRT:= 84 ; CTRLOC:=CTR ; B:=RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] ; CONTROLE ; CTRT:= 85 ; CTRLOC:=CTR ; B:=PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) ; CONTROLE ; CTRT:= 86 ; CTRLOC:=CTR ; B:='IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' ; CONTROLE ; CTRT:= 87 ; CTRLOC:=CTR ; B:='REF''REF''BOOL'(1!IDENT,'SKIP') -==:'REF''REF''BOOL'(1!IDENT,'SKIP') -==:-==:'REF''REF''BOOL'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'REF''REF''BOOL'(1!IDENT,'SKIP') -==: ('REF''REF''BOOL'(1!IDENT,'SKIP') -==:'REF''REF''BOOL'(1!IDENT,'SKIP') )) 'BOLD''REF''REF''BOOL'(1!IDENT,'SKIP') ; CONTROLE ; CTRT:= 88 ; CTRLOC:=CTR ; B:=('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) ; CONTROLE ; 'SKIP''END' ; 'BEGIN' # COERCION SUR MODE : 'REF''PROC'[,]'BOOL' # 'REF''PROC'[,]'BOOL'IDENT ='HEAP''PROC'[,]'BOOL':=[,]'BOOL': ('FALSE','FALSE','TRUE'); 'STRUCT'('INT' A,'REF''PROC'[,]'BOOL'CH)DE = (0,IDENT) , []'REF''PROC'[,]'BOOL'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('REF''PROC'[,]'BOOL' A) 'REF''PROC'[,]'BOOL' : A ; #CONTEXTES # CTRT:= 89 ; CTRLOC:=CTR ; B:=(IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT )[3,1] ; CONTROLE ; CTRT:= 90 ; CTRLOC:=CTR ; B:=('REF''PROC'[,]'BOOL'('HEAP''PROC'[,]'BOOL':=[,]'BOOL': ('FALSE','FALSE','TRUE')) -==:'REF''PROC'[,]'BOOL'('HEAP''PROC'[,]'BOOL':=[,]'BOOL': ('FALSE','FALSE','TRUE')) -==:-==:'REF''PROC'[,]'BOOL'('HEAP''PROC'[,]'BOOL':=[,]'BOOL': ('FALSE','FALSE','TRUE'))'BOLD' (-==:-==:'REF''PROC'[,]'BOOL'('HEAP''PROC'[,]'BOOL':=[,]'BOOL': ('FALSE','FALSE','TRUE'))-==: ('REF''PROC'[,]'BOOL'('HEAP''PROC'[,]'BOOL':=[,]'BOOL': ('FALSE','FALSE','TRUE'))-==:'REF''PROC'[,]'BOOL'('HEAP''PROC'[,]'BOOL' :=[,]'BOOL':('FALSE','FALSE','TRUE')))) 'BOLD''REF''PROC'[,]'BOOL'('HEAP''PROC'[,]'BOOL':=[,]'BOOL': ('FALSE','FALSE','TRUE')) )[3,1] ; CONTROLE ; CTRT:= 91 ; CTRLOC:=CTR ; B:=(CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE )[3,1] ; CONTROLE ; CTRT:= 92 ; CTRLOC:=CTR ; B:=(RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] )[3,1] ; CONTROLE ; CTRT:= 93 ; CTRLOC:=CTR ; B:=(PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) )[3,1] ; CONTROLE ; CTRT:= 94 ; CTRLOC:=CTR ; B:=('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )[3,1] ; CONTROLE ; CTRT:= 95 ; CTRLOC:=CTR ; B:=('REF''PROC'[,]'BOOL'(1!IDENT,'SKIP') -==:'REF''PROC'[,]'BOOL'(1!IDENT,'SKIP') -==:-==:'REF''PROC'[,]'BOOL'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'REF''PROC'[,]'BOOL'(1!IDENT,'SKIP') -==: ('REF''PROC'[,]'BOOL'(1!IDENT,'SKIP') -==:'REF''PROC'[,]'BOOL'(1!IDENT,'SKIP') )) 'BOLD''REF''PROC'[,]'BOOL'(1!IDENT,'SKIP') )[3,1] ; CONTROLE ; CTRT:= 96 ; CTRLOC:=CTR ; B:=(('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )[3,1] ; CONTROLE ; 'SKIP''END' ; 'BEGIN' # COERCION SUR MODE : 'REF''PROC''SB' # 'REF''PROC''SB'IDENT ='HEAP''PROC''SB':='SB':('TRUE','FALSE'); 'STRUCT'('INT' A,'REF''PROC''SB'CH)DE = (0,IDENT) , []'REF''PROC''SB'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('REF''PROC''SB' A) 'REF''PROC''SB' : A ; #CONTEXTES # CTRT:= 97 ; CTRLOC:=CTR ; B:=CH'OF'(IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT ) ; CONTROLE ; CTRT:= 98 ; CTRLOC:=CTR ; B:=CH'OF'('REF''PROC''SB'('HEAP''PROC''SB':='SB':('TRUE','FALSE')) -==:'REF''PROC''SB'('HEAP''PROC''SB':='SB':('TRUE','FALSE')) -==:-==:'REF''PROC''SB'('HEAP''PROC''SB':='SB':('TRUE','FALSE'))'BOLD' (-==:-==:'REF''PROC''SB'('HEAP''PROC''SB':='SB':('TRUE','FALSE'))-==: ('REF''PROC''SB'('HEAP''PROC''SB':='SB':('TRUE','FALSE'))-==: 'REF''PROC''SB'('HEAP''PROC''SB':='SB':('TRUE','FALSE')))) 'BOLD''REF''PROC''SB'('HEAP''PROC''SB':='SB':('TRUE','FALSE')) ) ; CONTROLE ; CTRT:= 99 ; CTRLOC:=CTR ; B:=CH'OF'(CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE ) ; CONTROLE ; CTRT:= 100 ; CTRLOC:=CTR ; B:=CH'OF'(RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] ) ; CONTROLE ; CTRT:= 101 ; CTRLOC:=CTR ; B:=CH'OF'(PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) ) ; CONTROLE ; CTRT:= 102 ; CTRLOC:=CTR ; B:=CH'OF'('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' ) ; CONTROLE ; CTRT:= 103 ; CTRLOC:=CTR ; B:=CH'OF'('REF''PROC''SB'(1!IDENT,'SKIP') -==:'REF''PROC''SB'(1!IDENT,'SKIP') -==:-==:'REF''PROC''SB'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'REF''PROC''SB'(1!IDENT,'SKIP') -==: ('REF''PROC''SB'(1!IDENT,'SKIP') -==:'REF''PROC''SB'(1!IDENT,'SKIP') )) 'BOLD''REF''PROC''SB'(1!IDENT,'SKIP') ) ; CONTROLE ; CTRT:= 104 ; CTRLOC:=CTR ; B:=CH'OF'(('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) ) ; CONTROLE ; 'SKIP''END' ; 'BEGIN' # COERCION SUR MODE : 'REF''PROC''BOOL' # 'REF''PROC''BOOL'IDENT ='HEAP''PROC''BOOL':='BOOL':'TRUE'; 'STRUCT'('INT' A,'REF''PROC''BOOL'CH)DE = (0,IDENT) , []'REF''PROC''BOOL'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('REF''PROC''BOOL' A) 'REF''PROC''BOOL' : A ; #CONTEXTES # CTRT:= 105 ; CTRLOC:=CTR ; B:=IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT ; CONTROLE ; CTRT:= 106 ; CTRLOC:=CTR ; B:='REF''PROC''BOOL'('HEAP''PROC''BOOL':='BOOL':'TRUE') -==:'REF''PROC''BOOL'('HEAP''PROC''BOOL':='BOOL':'TRUE') -==:-==:'REF''PROC''BOOL'('HEAP''PROC''BOOL':='BOOL':'TRUE')'BOLD' (-==:-==:'REF''PROC''BOOL'('HEAP''PROC''BOOL':='BOOL':'TRUE')-==: ('REF''PROC''BOOL'('HEAP''PROC''BOOL':='BOOL':'TRUE')-==: 'REF''PROC''BOOL'('HEAP''PROC''BOOL':='BOOL':'TRUE'))) 'BOLD''REF''PROC''BOOL'('HEAP''PROC''BOOL':='BOOL':'TRUE') ; CONTROLE ; CTRT:= 107 ; CTRLOC:=CTR ; B:=CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE ; CONTROLE ; CTRT:= 108 ; CTRLOC:=CTR ; B:=RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] ; CONTROLE ; CTRT:= 109 ; CTRLOC:=CTR ; B:=PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) ; CONTROLE ; CTRT:= 110 ; CTRLOC:=CTR ; B:='IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' ; CONTROLE ; CTRT:= 111 ; CTRLOC:=CTR ; B:='REF''PROC''BOOL'(1!IDENT,'SKIP') -==:'REF''PROC''BOOL'(1!IDENT,'SKIP') -==:-==:'REF''PROC''BOOL'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'REF''PROC''BOOL'(1!IDENT,'SKIP') -==: ('REF''PROC''BOOL'(1!IDENT,'SKIP') -==:'REF''PROC''BOOL'(1!IDENT,'SKIP') )) 'BOLD''REF''PROC''BOOL'(1!IDENT,'SKIP') ; CONTROLE ; CTRT:= 112 ; CTRLOC:=CTR ; B:=('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) ; CONTROLE ; 'SKIP''END' ; 'BEGIN' # COERCION SUR MODE : 'PROC''REF'[,]'BOOL' # 'PROC''REF'[,]'BOOL'IDENT ='REF'[,]'BOOL':'HEAP'[3,1]'BOOL':= ('FALSE','FALSE','TRUE'); 'STRUCT'('INT' A,'PROC''REF'[,]'BOOL'CH)DE = (0,IDENT) , []'PROC''REF'[,]'BOOL'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('PROC''REF'[,]'BOOL' A) 'PROC''REF'[,]'BOOL' : A ; #CONTEXTES # CTRT:= 113 ; CTRLOC:=CTR ; B:=(IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT )[3,1] ; CONTROLE ; CTRT:= 114 ; CTRLOC:=CTR ; B:=('PROC''REF'[,]'BOOL'('REF'[,]'BOOL':'HEAP'[3,1]'BOOL':= ('FALSE','FALSE','TRUE')) -==:'PROC''REF'[,]'BOOL'('REF'[,]'BOOL':'HEAP'[3,1]'BOOL':= ('FALSE','FALSE','TRUE')) -==:-==:'PROC''REF'[,]'BOOL'('REF'[,]'BOOL':'HEAP'[3,1]'BOOL':= ('FALSE','FALSE','TRUE'))'BOLD' (-==:-==:'PROC''REF'[,]'BOOL'('REF'[,]'BOOL':'HEAP'[3,1]'BOOL' :=('FALSE','FALSE','TRUE'))-==: ('PROC''REF'[,]'BOOL'('REF'[,]'BOOL':'HEAP'[3,1]'BOOL':= ('FALSE','FALSE','TRUE'))-==:'PROC''REF'[,]'BOOL'('REF'[,]'BOOL':'HEAP' [3,1]'BOOL':=('FALSE','FALSE','TRUE')))) 'BOLD''PROC''REF'[,]'BOOL'('REF'[,]'BOOL':'HEAP'[3,1]'BOOL':= ('FALSE','FALSE','TRUE')) )[3,1] ; CONTROLE ; CTRT:= 115 ; CTRLOC:=CTR ; B:=(CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE )[3,1] ; CONTROLE ; CTRT:= 116 ; CTRLOC:=CTR ; B:=(RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] )[3,1] ; CONTROLE ; CTRT:= 117 ; CTRLOC:=CTR ; B:=(PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) )[3,1] ; CONTROLE ; CTRT:= 118 ; CTRLOC:=CTR ; B:=('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )[3,1] ; CONTROLE ; CTRT:= 119 ; CTRLOC:=CTR ; B:=('PROC''REF'[,]'BOOL'(1!IDENT,'SKIP') -==:'PROC''REF'[,]'BOOL'(1!IDENT,'SKIP') -==:-==:'PROC''REF'[,]'BOOL'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'PROC''REF'[,]'BOOL'(1!IDENT,'SKIP') -==: ('PROC''REF'[,]'BOOL'(1!IDENT,'SKIP') -==:'PROC''REF'[,]'BOOL'(1!IDENT,'SKIP') )) 'BOLD''PROC''REF'[,]'BOOL'(1!IDENT,'SKIP') )[3,1] ; CONTROLE ; CTRT:= 120 ; CTRLOC:=CTR ; B:=(('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )[3,1] ; CONTROLE ; 'SKIP''END' ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R6B # (PRINT(("COERCIONS IN FIRM CONTEXT",NEWLINE)) ; 'INT' VF = 800 ; 'INT' CTRT:=0, CTR:=0 , CTRLOC:=0 ; 'BOOL' BASCULE:='TRUE',B , 'PROC' CONTROLE = 'VOID' : 'IF' B 'AND' CTR=CTRLOC+15 'THEN' CTR+:=5 'ELSE' PRINT(("ER. IN TEST",CTRT,CTR,CTRLOC+15,NEWLINE))'FI' ; 'PROC' TILT = 'VOID' : PRINT(("ER.OP",CTRT,CTR-CTRLOC,NEWLINE)) ; # SERVITUDES # 'UNION'('INT','REAL') VU = 1E0 , 'MODE' 'SB' = 'STRUCT'('BOOL' CH,OF) , 'UBE' = 'UNION'('BOOL','INT') , 'PRIO' 'BOLD' = 2 , -==:= 1 ; # MODE A POSTERIORI : [,]'BOOL' # 'OP' -==:= ([,]'BOOL' A) [,]'BOOL' : ('FALSE','FALSE','NOT'(CTR+:=1;A)[3,1]) , -==:= ([,]'BOOL' A,B) [,]'BOOL' : (A[3,1]'AND'B[3,1]! CTR+:=2;('FALSE','FALSE','TRUE' ) ! TILT ; 'SKIP') , 'BOLD' = ([,]'BOOL' A,B) [,]'BOOL' : ('NOT'A[3,1]'AND'B[3,1]! CTR+:=2;('FALSE','FALSE',BASCULE:='NOT'BASCULE ) ! TILT ; 'SKIP') ; # MODE A POSTERIORI : 'UNION'('BITS','REAL','SB') # 'OP' -==:= ('UNION'('BITS','REAL','SB') A) 'SB' : ('NOT'CH'OF'(CTR+:=1;A!('SB'A):A),'FALSE') , -==:= ('UNION'('BITS','REAL','SB') A,B) 'SB' : (((A!('SB'A):CH'OF'A)'AND'(B!('SB'B):CH'OF'B)! CTR+:=2 ;'TRUE' ! TILT ; 'SKIP') , 'FALSE') , 'BOLD' = ('UNION'('BITS','REAL','SB') A,B) 'SB' : (('NOT'(A!('SB'A):CH'OF'A)'AND'(B!('SB'B):CH'OF'B)! CTR+:=2 ;BASCULE:='NOT'BASCULE ! TILT ; 'SKIP') , 'FALSE') ; # MODE A POSTERIORI : 'UNION'('UNION'('COMPL','BOOL'), 'INT','UNION'('INT','UBE')) # 'OP' -==:= ('UNION'('UNION'('COMPL','BOOL'), 'INT','UNION'('INT','UBE')) A) 'BOOL' : (CTR+:=1;A!('BOOL'A):'NOT'A) , -==:= ('UNION'('UNION'('COMPL','BOOL'), 'INT','UNION'('INT','UBE')) A,B) 'BOOL' : ((A!('BOOL'A):A)'AND'(B!('BOOL'B):B) ! CTR+:=2 ;'TRUE' ! TILT ; 'SKIP') , 'BOLD' = ('UNION'('UNION'('COMPL','BOOL'), 'INT','UNION'('INT','UBE')) A,B) 'BOOL' : ('NOT'(A!('BOOL'A):A)'AND'(B!('BOOL'B):B) ! CTR+:=2 ;BASCULE:='NOT'BASCULE ! TILT ; 'SKIP') ; 'BEGIN' # COERCION SUR MODE : 'PROC''REF''SB' # 'PROC''REF''SB'IDENT ='REF''SB':'HEAP''SB':=('TRUE','FALSE'); 'STRUCT'('INT' A,'PROC''REF''SB'CH)DE = (0,IDENT) , []'PROC''REF''SB'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('PROC''REF''SB' A) 'PROC''REF''SB' : A ; #CONTEXTES # CTRT:= 121 ; CTRLOC:=CTR ; B:=CH'OF'(IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT ) ; CONTROLE ; CTRT:= 122 ; CTRLOC:=CTR ; B:=CH'OF'('PROC''REF''SB'('REF''SB':'HEAP''SB':=('TRUE','FALSE')) -==:'PROC''REF''SB'('REF''SB':'HEAP''SB':=('TRUE','FALSE')) -==:-==:'PROC''REF''SB'('REF''SB':'HEAP''SB':=('TRUE','FALSE'))'BOLD' (-==:-==:'PROC''REF''SB'('REF''SB':'HEAP''SB':=('TRUE','FALSE'))-==: ('PROC''REF''SB'('REF''SB':'HEAP''SB':=('TRUE','FALSE'))-==: 'PROC''REF''SB'('REF''SB':'HEAP''SB':=('TRUE','FALSE')))) 'BOLD''PROC''REF''SB'('REF''SB':'HEAP''SB':=('TRUE','FALSE')) ) ; CONTROLE ; CTRT:= 123 ; CTRLOC:=CTR ; B:=CH'OF'(CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE ) ; CONTROLE ; CTRT:= 124 ; CTRLOC:=CTR ; B:=CH'OF'(RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] ) ; CONTROLE ; CTRT:= 125 ; CTRLOC:=CTR ; B:=CH'OF'(PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) ) ; CONTROLE ; CTRT:= 126 ; CTRLOC:=CTR ; B:=CH'OF'('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' ) ; CONTROLE ; CTRT:= 127 ; CTRLOC:=CTR ; B:=CH'OF'('PROC''REF''SB'(1!IDENT,'SKIP') -==:'PROC''REF''SB'(1!IDENT,'SKIP') -==:-==:'PROC''REF''SB'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'PROC''REF''SB'(1!IDENT,'SKIP') -==: ('PROC''REF''SB'(1!IDENT,'SKIP') -==:'PROC''REF''SB'(1!IDENT,'SKIP') )) 'BOLD''PROC''REF''SB'(1!IDENT,'SKIP') ) ; CONTROLE ; CTRT:= 128 ; CTRLOC:=CTR ; B:=CH'OF'(('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) ) ; CONTROLE ; 'SKIP''END' ; 'BEGIN' # COERCION SUR MODE : 'PROC''REF''BOOL' # 'PROC''REF''BOOL'IDENT ='REF''BOOL':'HEAP''BOOL':='TRUE'; 'STRUCT'('INT' A,'PROC''REF''BOOL'CH)DE = (0,IDENT) , []'PROC''REF''BOOL'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('PROC''REF''BOOL' A) 'PROC''REF''BOOL' : A ; #CONTEXTES # CTRT:= 129 ; CTRLOC:=CTR ; B:=IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT ; CONTROLE ; CTRT:= 130 ; CTRLOC:=CTR ; B:='PROC''REF''BOOL'('REF''BOOL':'HEAP''BOOL':='TRUE') -==:'PROC''REF''BOOL'('REF''BOOL':'HEAP''BOOL':='TRUE') -==:-==:'PROC''REF''BOOL'('REF''BOOL':'HEAP''BOOL':='TRUE')'BOLD' (-==:-==:'PROC''REF''BOOL'('REF''BOOL':'HEAP''BOOL':='TRUE')-==: ('PROC''REF''BOOL'('REF''BOOL':'HEAP''BOOL':='TRUE')-==:'PROC''REF' 'BOOL'('REF''BOOL':'HEAP''BOOL':='TRUE'))) 'BOLD''PROC''REF''BOOL'('REF''BOOL':'HEAP''BOOL':='TRUE') ; CONTROLE ; CTRT:= 131 ; CTRLOC:=CTR ; B:=CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE ; CONTROLE ; CTRT:= 132 ; CTRLOC:=CTR ; B:=RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] ; CONTROLE ; CTRT:= 133 ; CTRLOC:=CTR ; B:=PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) ; CONTROLE ; CTRT:= 134 ; CTRLOC:=CTR ; B:='IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' ; CONTROLE ; CTRT:= 135 ; CTRLOC:=CTR ; B:='PROC''REF''BOOL'(1!IDENT,'SKIP') -==:'PROC''REF''BOOL'(1!IDENT,'SKIP') -==:-==:'PROC''REF''BOOL'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'PROC''REF''BOOL'(1!IDENT,'SKIP') -==: ('PROC''REF''BOOL'(1!IDENT,'SKIP') -==:'PROC''REF''BOOL'(1!IDENT,'SKIP') )) 'BOLD''PROC''REF''BOOL'(1!IDENT,'SKIP') ; CONTROLE ; CTRT:= 136 ; CTRLOC:=CTR ; B:=('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) ; CONTROLE ; 'SKIP''END' ; 'BEGIN' # COERCION SUR MODE : 'PROC''PROC'[,]'BOOL' # 'PROC''PROC'[,]'BOOL'IDENT ='PROC'[,]'BOOL':[,]'BOOL': ('FALSE','FALSE','TRUE'); 'STRUCT'('INT' A,'PROC''PROC'[,]'BOOL'CH)DE = (0,IDENT) , []'PROC''PROC'[,]'BOOL'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('PROC''PROC'[,]'BOOL' A) 'PROC''PROC'[,]'BOOL' : A ; #CONTEXTES # CTRT:= 137 ; CTRLOC:=CTR ; B:=(IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT )[3,1] ; CONTROLE ; CTRT:= 138 ; CTRLOC:=CTR ; B:=('PROC''PROC'[,]'BOOL'('PROC'[,]'BOOL':[,]'BOOL': ('FALSE','FALSE','TRUE')) -==:'PROC''PROC'[,]'BOOL'('PROC'[,]'BOOL':[,]'BOOL': ('FALSE','FALSE','TRUE')) -==:-==:'PROC''PROC'[,]'BOOL'('PROC'[,]'BOOL':[,]'BOOL': ('FALSE','FALSE','TRUE'))'BOLD' (-==:-==:'PROC''PROC'[,]'BOOL'('PROC'[,]'BOOL':[,]'BOOL': ('FALSE','FALSE','TRUE'))-==: ('PROC''PROC'[,]'BOOL'('PROC'[,]'BOOL':[,]'BOOL': ('FALSE','FALSE','TRUE'))-==:'PROC''PROC'[,]'BOOL'('PROC'[,]'BOOL': [,]'BOOL':('FALSE','FALSE','TRUE')))) 'BOLD''PROC''PROC'[,]'BOOL'('PROC'[,]'BOOL':[,]'BOOL': ('FALSE','FALSE','TRUE')) )[3,1] ; CONTROLE ; CTRT:= 139 ; CTRLOC:=CTR ; B:=(CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE )[3,1] ; CONTROLE ; CTRT:= 140 ; CTRLOC:=CTR ; B:=(RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] )[3,1] ; CONTROLE ; CTRT:= 141 ; CTRLOC:=CTR ; B:=(PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) )[3,1] ; CONTROLE ; CTRT:= 142 ; CTRLOC:=CTR ; B:=('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )[3,1] ; CONTROLE ; CTRT:= 143 ; CTRLOC:=CTR ; B:=('PROC''PROC'[,]'BOOL'(1!IDENT,'SKIP') -==:'PROC''PROC'[,]'BOOL'(1!IDENT,'SKIP') -==:-==:'PROC''PROC'[,]'BOOL'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'PROC''PROC'[,]'BOOL'(1!IDENT,'SKIP') -==: ('PROC''PROC'[,]'BOOL'(1!IDENT,'SKIP') -==:'PROC''PROC'[,]'BOOL'(1!IDENT,'SKIP') )) 'BOLD''PROC''PROC'[,]'BOOL'(1!IDENT,'SKIP') )[3,1] ; CONTROLE ; CTRT:= 144 ; CTRLOC:=CTR ; B:=(('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )[3,1] ; CONTROLE ; 'SKIP''END' ; 'BEGIN' # COERCION SUR MODE : 'PROC''PROC''SB' # 'PROC''PROC''SB'IDENT ='PROC''SB':'SB':('TRUE','FALSE'); 'STRUCT'('INT' A,'PROC''PROC''SB'CH)DE = (0,IDENT) , []'PROC''PROC''SB'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('PROC''PROC''SB' A) 'PROC''PROC''SB' : A ; #CONTEXTES # CTRT:= 145 ; CTRLOC:=CTR ; B:=CH'OF'(IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT ) ; CONTROLE ; CTRT:= 146 ; CTRLOC:=CTR ; B:=CH'OF'('PROC''PROC''SB'('PROC''SB':'SB':('TRUE','FALSE')) -==:'PROC''PROC''SB'('PROC''SB':'SB':('TRUE','FALSE')) -==:-==:'PROC''PROC''SB'('PROC''SB':'SB':('TRUE','FALSE'))'BOLD' (-==:-==:'PROC''PROC''SB'('PROC''SB':'SB':('TRUE','FALSE'))-==: ('PROC''PROC''SB'('PROC''SB':'SB':('TRUE','FALSE'))-==:'PROC''PROC' 'SB'('PROC''SB':'SB':('TRUE','FALSE')))) 'BOLD''PROC''PROC''SB'('PROC''SB':'SB':('TRUE','FALSE')) ) ; CONTROLE ; CTRT:= 147 ; CTRLOC:=CTR ; B:=CH'OF'(CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE ) ; CONTROLE ; CTRT:= 148 ; CTRLOC:=CTR ; B:=CH'OF'(RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] ) ; CONTROLE ; CTRT:= 149 ; CTRLOC:=CTR ; B:=CH'OF'(PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) ) ; CONTROLE ; CTRT:= 150 ; CTRLOC:=CTR ; B:=CH'OF'('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' ) ; CONTROLE ; CTRT:= 151 ; CTRLOC:=CTR ; B:=CH'OF'('PROC''PROC''SB'(1!IDENT,'SKIP') -==:'PROC''PROC''SB'(1!IDENT,'SKIP') -==:-==:'PROC''PROC''SB'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'PROC''PROC''SB'(1!IDENT,'SKIP') -==: ('PROC''PROC''SB'(1!IDENT,'SKIP') -==:'PROC''PROC''SB'(1!IDENT,'SKIP') )) 'BOLD''PROC''PROC''SB'(1!IDENT,'SKIP') ) ; CONTROLE ; CTRT:= 152 ; CTRLOC:=CTR ; B:=CH'OF'(('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) ) ; CONTROLE ; 'SKIP''END' ; 'BEGIN' # COERCION SUR MODE : 'PROC''PROC''BOOL' # 'PROC''PROC''BOOL'IDENT ='PROC''BOOL':'BOOL':'TRUE'; 'STRUCT'('INT' A,'PROC''PROC''BOOL'CH)DE = (0,IDENT) , []'PROC''PROC''BOOL'RANG = ('SKIP',IDENT,'SKIP') , 'PROC' PROC = ('PROC''PROC''BOOL' A) 'PROC''PROC''BOOL' : A ; #CONTEXTES # CTRT:= 153 ; CTRLOC:=CTR ; B:=IDENT -==:IDENT -==:-==:IDENT'BOLD' (-==:-==:IDENT-==: (IDENT-==:IDENT)) 'BOLD'IDENT ; CONTROLE ; CTRT:= 154 ; CTRLOC:=CTR ; B:='PROC''PROC''BOOL'('PROC''BOOL':'BOOL':'TRUE') -==:'PROC''PROC''BOOL'('PROC''BOOL':'BOOL':'TRUE') -==:-==:'PROC''PROC''BOOL'('PROC''BOOL':'BOOL':'TRUE')'BOLD' (-==:-==:'PROC''PROC''BOOL'('PROC''BOOL':'BOOL':'TRUE')-==: ('PROC''PROC''BOOL'('PROC''BOOL':'BOOL':'TRUE')-==:'PROC''PROC' 'BOOL'('PROC''BOOL':'BOOL':'TRUE'))) 'BOLD''PROC''PROC''BOOL'('PROC''BOOL':'BOOL':'TRUE') ; CONTROLE ; CTRT:= 155 ; CTRLOC:=CTR ; B:=CH'OF'DE -==:CH'OF'DE -==:-==:CH'OF'DE'BOLD' (-==:-==:CH'OF'DE-==: (CH'OF'DE-==:CH'OF'DE)) 'BOLD'CH'OF'DE ; CONTROLE ; CTRT:= 156 ; CTRLOC:=CTR ; B:=RANG[2] -==:RANG[2] -==:-==:RANG[2]'BOLD' (-==:-==:RANG[2]-==: (RANG[2]-==:RANG[2])) 'BOLD'RANG[2] ; CONTROLE ; CTRT:= 157 ; CTRLOC:=CTR ; B:=PROC(IDENT) -==:PROC(IDENT) -==:-==:PROC(IDENT)'BOLD' (-==:-==:PROC(IDENT)-==: (PROC(IDENT)-==:PROC(IDENT))) 'BOLD'PROC(IDENT) ; CONTROLE ; CTRT:= 158 ; CTRLOC:=CTR ; B:='IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' 'BOLD' (-==:-==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==: ('IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' -==:'IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' )) 'BOLD''IF''FALSE''THEN''SKIP''ELSE'IDENT'FI' ; CONTROLE ; CTRT:= 159 ; CTRLOC:=CTR ; B:='PROC''PROC''BOOL'(1!IDENT,'SKIP') -==:'PROC''PROC''BOOL'(1!IDENT,'SKIP') -==:-==:'PROC''PROC''BOOL'(1!IDENT,'SKIP') 'BOLD' (-==:-==:'PROC''PROC''BOOL'(1!IDENT,'SKIP') -==: ('PROC''PROC''BOOL'(1!IDENT,'SKIP') -==:'PROC''PROC''BOOL'(1!IDENT,'SKIP') )) 'BOLD''PROC''PROC''BOOL'(1!IDENT,'SKIP') ; CONTROLE ; CTRT:= 160 ; CTRLOC:=CTR ; B:=('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) 'BOLD' (-==:-==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==: (('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) -==:('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) )) 'BOLD'('GOTO'EE'EXIT'E:('INT'X;VU!('REAL'):IDENT) 'EXIT' EE:'GOTO'E) ; CONTROLE ; 'SKIP''END' ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R6A # (PRINT(("COERCIONS DEREF,DEPROC AND UNITING IN STRONG CONTEXT", NEWLINE)) ; 'INT' VF = 341 ; 'INT' CTRT:=0,CTR:=0 , MEM ; 'PROC' CONTROLE = ('INT' INCR)'VOID' : (CTR/=MEM+INCR ! PRINT(("COUNT ERROR IN TEST",CTRT,CTR,MEM+INCR,NEWLINE))) ; # SERVITUDES # 'UNION'('INT','STRING') VU = "" ; 'PRIO' &=:=9 , 'MODE' 'MU' = 'UNION'('STRING','INT','PROC''VOID') ; 'MU' RM:='MU'(23) , 'MU' MUVF = "" , 'PROC' NONDP = 'VOID' : (CTR+:=100 ; PRINT(("ACTIVATION PROC VOID",CTRT,NEWLINE))) ; 'PROC' PPN = 'PROC''VOID' : (CTR+:=1 ; NONDP) ; 'PROC''PROC''VOID' RPPN:=PPN ; 'BEGIN' # MODE FINAL : 'MU' # 'PROC' C #CONTROLE VALEUR RENDUE # =('INT' NUMTEST , 'MU' A)'VOID' : (CTRT:=NUMTEST ; (A!('INT' A):A=23!'FALSE') !CTR+:=1 ! PRINT(("ER.VALUE IN TEST",NUMTEST,NEWLINE))) ; # MODE A PRIORI : 'REF''MU' # 'REF''MU' IDENT = 'HEAP''MU':=23 , 'OP' &=:=('MU' A , 'REF''MU'B) 'REF''MU' : (A!('STRING'):B) ; 'STRUCT'('INT' A,'REF''MU' DE) DE = (0,IDENT) , []'REF''MU' R = IDENT , 'PROC' PROC = ('REF''MU' A) 'REF''MU' : A ; # CONTEXTES # ( MEM:=CTR ; 'MU' ID = 'HEAP''MU':=23, 'MU' VAR:=IDENT , PG ; C( 1,ID) ; C( 2,VAR) ; PG:=PROC(IDENT);C( 3,PG); 'PROC' P ='MU' : R[1];C( 4,P); 'OP' + =('INT' X)'MU' : R[1];C( 5,+1); C( 6,DE'OF'DE); C( 7,'CASE' 3 'IN''SKIP','SKIP', 'HEAP''MU':=23,'SKIP' 'ESAC'); C( 8,(VU!('STRING'): 'CASE'VU'IN'('STRING'):IDENT'ESAC',('INT' X):'SKIP')); []'MU' RANG = ( IDENT, ('FALSE'!'SKIP'!IDENT), 'HEAP''MU':=23); C( 9,RANG[1]);C( 10,RANG[2]);C( 11,RANG[3]); 'STRUCT'('STRUCT'('MU' CH1,CH2) CH1, 'MU' CH2) STRUCT = (( ('SKIP';IDENT'EXIT'E:'SKIP'), IDENT), ('SKIP';IDENT'EXIT'E:'SKIP')); C( 12,CH1'OF'CH1'OF'STRUCT); C( 13,CH2'OF'CH1'OF'STRUCT); C( 14,CH2'OF'STRUCT); C( 15,'BEGIN' 'SKIP';DE'OF'DE'END'); C( 16,'IF''TRUE''THEN'R[1]'FI'); C( 17,'IF''FALSE''THEN''SKIP''ELSE' PROC(IDENT)'FI'); C( 18,(0!'SKIP','SKIP'!IDENT)); C( 19,'CASE'VU'IN'('INT'):'SKIP''OUT' ('FALSE'!'SKIP'!IDENT)'ESAC') ) ; CONTROLE( 19); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' +=('INT' NUMTEST, 'MU' A)'VOID':C(NUMTEST,A) ; MEM:=CTR ; 20+'CASE'1'IN''REF''MU'(2!'SKIP',IDENT), MUVF,'SKIP''ESAC'; 21+(VU!('INT') :MUVF ,('STRING'):('SKIP';IDENT'EXIT'E:'SKIP')); 22+(('SKIP';IDENT'EXIT'E:'SKIP')'EXIT' EE : MUVF); 23+('TRUE'!PROC(IDENT) !:'FALSE' !MUVF); 24+(10!'SKIP',MUVF !:-1!'SKIP','SKIP'!PROC(IDENT)); 25+('FALSE'!MUVF! PROC(IDENT)); 26+(VU!('INT'X):MUVF! DE'OF'DE); CONTROLE( 7) ; 'SKIP''END' ; 'BEGIN' # MODE FINAL : 'PROC''VOID' # 'PROC' C #CONTROLE VALEUR RENDUE # =('INT' NUMTEST , 'PROC''VOID' A)'VOID' : (CTRT:=NUMTEST ; 'TRUE' !CTR+:=1 ! PRINT(("ER.VALUE IN TEST",NUMTEST,NEWLINE))) ; # MODE A PRIORI : 'PROC''PROC''VOID' # 'PROC''PROC''VOID' IDENT = PPN , 'OP' &=:=('MU' A , 'PROC''PROC''VOID'B) 'PROC''PROC''VOID' : (A!('STRING'):B) ; 'STRUCT'('INT' A,'PROC''PROC''VOID' DE) DE = (0,IDENT) , []'PROC''PROC''VOID' R = IDENT , 'PROC' PROC = ('PROC''PROC''VOID' A) 'PROC''PROC''VOID' : A ; # CONTEXTES # ( MEM:=CTR ; 'PROC''VOID' ID = DE'OF'DE, 'PROC''VOID' VAR:=""&=:IDENT , PG ; C( 27,ID) ; C( 28,VAR) ; PG:=('SKIP';IDENT'EXIT'E:'SKIP');C( 29,PG); 'PROC' P ='PROC''VOID' : 'CASE'VU'IN'('STRING'):IDENT'ESAC';C( 30,P); 'OP' + =('INT' X)'PROC''VOID' : DE'OF'DE;C( 31,+1); C( 32,R[1]); C( 33,'CASE' 3 'IN''SKIP','SKIP', ('SKIP';IDENT'EXIT'E:'SKIP'),'SKIP' 'ESAC'); C( 34,(VU!('STRING'): ('SKIP';IDENT'EXIT'E:'SKIP'),('INT' X):'SKIP')); []'PROC''VOID' RANG = ( PPN, 'PROC''PROC''VOID'(2!'SKIP',IDENT), 'PROC''PROC''VOID'(2!'SKIP',IDENT)); C( 35,RANG[1]);C( 36,RANG[2]);C( 37,RANG[3]); 'STRUCT'('STRUCT'('PROC''VOID' CH1,CH2) CH1, 'PROC''VOID' CH2) STRUCT = (( R[1], PROC(IDENT)), DE'OF'DE); C( 38,CH1'OF'CH1'OF'STRUCT); C( 39,CH2'OF'CH1'OF'STRUCT); C( 40,CH2'OF'STRUCT); C( 41,'BEGIN' 'SKIP';('SKIP';IDENT'EXIT'E:'SKIP')'END'); C( 42,'IF''TRUE''THEN'R[1]'FI'); C( 43,'IF''FALSE''THEN''SKIP''ELSE' IDENT'FI'); C( 44,(0!'SKIP','SKIP'!'PROC''PROC''VOID'(2!'SKIP',IDENT))); C( 45,'CASE'VU'IN'('INT'):'SKIP''OUT' ('FALSE'!'SKIP'!IDENT)'ESAC') ) ; CONTROLE( 38); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' +=('INT' NUMTEST, 'PROC''VOID' A)'VOID':C(NUMTEST,A) ; MEM:=CTR ; 46+'CASE'1'IN''PROC''PROC''VOID'(2!'SKIP',IDENT), NONDP,'SKIP''ESAC'; 47+(VU!('INT') :NONDP ,('STRING'):'PROC''PROC''VOID'(2!'SKIP',IDENT)); 48+(""&=:IDENT'EXIT' EE : NONDP); 49+('TRUE'!('SKIP';IDENT'EXIT'E:'SKIP') !:'FALSE' !NONDP); 50+(10!'SKIP',NONDP !:-1!'SKIP','SKIP'!('SKIP';IDENT'EXIT'E:'SKIP')); 51+('FALSE'!NONDP! ('SKIP';IDENT'EXIT'E:'SKIP')); 52+(VU!('INT'X):NONDP! ('SKIP';IDENT'EXIT'E:'SKIP')); CONTROLE( 14) ; 'SKIP''END' ; 'BEGIN' # MODE FINAL : 'REF''PROC''INT' # 'PROC' C #CONTROLE VALEUR RENDUE # =('INT' NUMTEST , 'REF''PROC''INT' A)'VOID' : (CTRT:=NUMTEST ; A:=:'NIL' !CTR+:=1 ! PRINT(("ER.VALUE IN TEST",NUMTEST,NEWLINE))) ; # MODE A PRIORI : 'REF''PROC''REF''REF''PROC''INT' # 'REF''PROC''REF''REF''PROC''INT' IDENT = 'LOC''PROC''REF''REF''PROC''INT':= 'REF''REF''PROC''INT' : (CTR+:=1;'HEAP''REF''PROC''INT':='NIL') , 'OP' &=:=('MU' A , 'REF''PROC''REF''REF''PROC''INT'B) 'REF''PROC''REF''REF''PROC''INT' : (A!('STRING'):B) ; 'STRUCT'('INT' A,'REF''PROC''REF''REF''PROC''INT' DE) DE = (0,IDENT) , []'REF''PROC''REF''REF''PROC''INT' R = IDENT , 'PROC' PROC = ('REF''PROC''REF''REF''PROC''INT' A) 'REF''PROC''REF''REF''PROC''INT' : A ; # CONTEXTES # ( MEM:=CTR ; 'REF''PROC''INT' ID = R[1], 'REF''PROC''INT' VAR:=R[1] , PG ; C( 53,ID) ; C( 54,VAR) ; PG:=""&=:IDENT;C( 55,PG); 'PROC' P ='REF''PROC''INT' : ""&=:IDENT;C( 56,P); 'OP' + =('INT' X)'REF''PROC''INT' : R[1];C( 57,+1); C( 58,PROC(IDENT)); C( 59,'CASE' 3 'IN''SKIP','SKIP', DE'OF'DE,'SKIP' 'ESAC'); C( 60,(VU!('STRING'): 'CASE'VU'IN'('STRING'):IDENT'ESAC',('INT' X):'SKIP')); []'REF''PROC''INT' RANG = ( R[1], DE'OF'DE, PROC(IDENT)); C( 61,RANG[1]);C( 62,RANG[2]);C( 63,RANG[3]); 'STRUCT'('STRUCT'('REF''PROC''INT' CH1,CH2) CH1, 'REF''PROC''INT' CH2) STRUCT = (( ""&=:IDENT, IDENT), ('SKIP';IDENT'EXIT'E:'SKIP')); C( 64,CH1'OF'CH1'OF'STRUCT); C( 65,CH2'OF'CH1'OF'STRUCT); C( 66,CH2'OF'STRUCT); C( 67,'BEGIN' 'SKIP';R[1]'END'); C( 68,'IF''TRUE''THEN'R[1]'FI'); C( 69,'IF''FALSE''THEN''SKIP''ELSE' 'LOC''PROC''REF''REF''PROC''INT':= 'REF''REF''PROC''INT' : (CTR+:=1;'HEAP''REF''PROC''INT':='NIL') 'FI'); C( 70,(0!'SKIP','SKIP'!'REF''PROC''REF''REF''PROC''INT'(2!'SKIP',IDENT) )); C( 71,'CASE'VU'IN'('INT'):'SKIP''OUT' ""&=:IDENT'ESAC') ;(IDENT) :=: 'LOC''PROC''INT') ; CONTROLE( 39); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' +=('INT' NUMTEST, 'REF''PROC''INT' A)'VOID':C(NUMTEST,A) ; MEM:=CTR ; 72+'CASE'1'IN'""&=:IDENT, 'LOC''REF''PROC''INT','SKIP''ESAC'; 73+(VU!('INT') :'LOC''REF''PROC''INT' ,('STRING'):""&=:IDENT); 74+(R[1]'EXIT' EE : 'LOC''REF''PROC''INT'); 75+('TRUE'!""&=:IDENT !:'FALSE' !'LOC''REF''PROC''INT'); 76+(10!'SKIP','LOC''REF''PROC''INT' !:-1!'SKIP','SKIP'!('FALSE'!'SKIP'!IDENT)); 77+('FALSE'!'LOC''REF''PROC''INT'! 'CASE'VU'IN'('STRING'):IDENT'ESAC'); 78+(VU!('INT'X):'LOC''REF''PROC''INT'! 'REF''PROC''REF''REF''PROC''INT'(2!'SKIP',IDENT)); CONTROLE( 14) ; MEM:=CTR ; C( 79,'CASE'1'IN'('SKIP';IDENT'EXIT'E:'SKIP'), 'LOC''REF''PROC''INT','SKIP''ESAC':=IDENT) ; C( 80,(VU!('INT') :'LOC''REF''PROC''INT' ,('STRING'):R[1]):=IDENT) ; C( 81,(""&=:IDENT'EXIT' EE : 'LOC''REF''PROC''INT'):=IDENT) ; C( 82,('TRUE'!""&=:IDENT !:'FALSE' !'LOC''REF''PROC''INT'):=IDENT) ; C( 83,(10!'SKIP','LOC''REF''PROC''INT' !:-1!'SKIP','SKIP'!'LOC''PROC''REF''REF''PROC''INT':= 'REF''REF''PROC''INT' : (CTR+:=1;'HEAP''REF''PROC''INT':='NIL') ):=IDENT) ; C( 84,('FALSE'!'LOC''REF''PROC''INT'! 'LOC''PROC''REF''REF''PROC''INT':= 'REF''REF''PROC''INT' : (CTR+:=1;'HEAP''REF''PROC''INT':='NIL') ):=IDENT) ; C( 85,(VU!('INT'X):'LOC''REF''PROC''INT'! DE'OF'DE):=IDENT) ; CONTROLE( 21) ; MEM:=CTR ; 'NIL':/=:'CASE'1'IN'IDENT, 'LOC''REF''PROC''INT','SKIP''ESAC'; 'NIL':/=:(VU!('INT') :'LOC''REF''PROC''INT' ,('STRING'):'LOC''PROC''REF''REF''PROC''INT':= 'REF''REF''PROC''INT' : (CTR+:=1;'HEAP''REF''PROC''INT':='NIL') ); 'NIL':/=:(DE'OF'DE'EXIT' EE : 'LOC''REF''PROC''INT'); 'NIL':/=:('TRUE'!'REF''PROC''REF''REF''PROC''INT'(2!'SKIP',IDENT) !:'FALSE' !'LOC''REF''PROC''INT'); 'NIL':/=:(10!'SKIP','LOC''REF''PROC''INT' !:-1!'SKIP','SKIP'!PROC(IDENT)); 'NIL':/=:('FALSE'!'LOC''REF''PROC''INT'! ""&=:IDENT); 'NIL':/=:(VU!('INT'X):'LOC''REF''PROC''INT'! ('FALSE'!'SKIP'!IDENT)); CONTROLE( 7) ; 'SKIP''END' ; 'BEGIN' # MODE FINAL : 'MU' # 'PROC' C #CONTROLE VALEUR RENDUE # =('INT' NUMTEST , 'MU' A)'VOID' : (CTRT:=NUMTEST ; (A!('STRING' A):A=""!'FALSE') !CTR+:=1 ! PRINT(("ER.VALUE IN TEST",NUMTEST,NEWLINE))) ; # MODE A PRIORI : 'STRING' # 'STRING' IDENT = "" , 'OP' &=:=('MU' A , 'STRING'B) 'STRING' : (A!('STRING'):B) ; 'STRUCT'('INT' A,'STRING' DE) DE = (0,IDENT) , []'STRING' R = IDENT , 'PROC' PROC = ('STRING' A) 'STRING' : A ; # CONTEXTES # ( MEM:=CTR ; 'MU' ID = ""&=:IDENT, 'MU' VAR:=('FALSE'!'SKIP'!IDENT) , PG ; C( 86,ID) ; C( 87,VAR) ; PG:=""&=:IDENT;C( 88,PG); 'PROC' P ='MU' : ('SKIP';IDENT'EXIT'E:'SKIP');C( 89,P); 'OP' + =('INT' X)'MU' : "";C( 90,+1); C( 91,DE'OF'DE); C( 92,'CASE' 3 'IN''SKIP','SKIP', R[1],'SKIP' 'ESAC'); C( 93,(VU!('STRING'): PROC(IDENT),('INT' X):'SKIP')); []'MU' RANG = ( 'CASE'VU'IN'('STRING'):IDENT'ESAC', R[1], PROC(IDENT)); C( 94,RANG[1]);C( 95,RANG[2]);C( 96,RANG[3]); 'STRUCT'('STRUCT'('MU' CH1,CH2) CH1, 'MU' CH2) STRUCT = (( ('SKIP';IDENT'EXIT'E:'SKIP'), ""), ""&=:IDENT); C( 97,CH1'OF'CH1'OF'STRUCT); C( 98,CH2'OF'CH1'OF'STRUCT); C( 99,CH2'OF'STRUCT); C( 100,'BEGIN' 'SKIP';'CASE'VU'IN'('STRING'):IDENT'ESAC''END'); C( 101,'IF''TRUE''THEN'IDENT'FI'); C( 102,'IF''FALSE''THEN''SKIP''ELSE' R[1]'FI'); C( 103,(0!'SKIP','SKIP'!'CASE'VU'IN'('STRING'):IDENT'ESAC')); C( 104,'CASE'VU'IN'('INT'):'SKIP''OUT' IDENT'ESAC') ) ; CONTROLE( 19); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' +=('INT' NUMTEST, 'MU' A)'VOID':C(NUMTEST,A) ; MEM:=CTR ; 105+'CASE'1'IN'('FALSE'!'SKIP'!IDENT), MUVF,'SKIP''ESAC'; 106+(VU!('INT') :MUVF ,('STRING'):'CASE'VU'IN'('STRING'):IDENT'ESAC'); 107+(('FALSE'!'SKIP'!IDENT)'EXIT' EE : MUVF); 108+('TRUE'!""&=:IDENT !:'FALSE' !MUVF); 109+(10!'SKIP',MUVF !:-1!'SKIP','SKIP'!'CASE'VU'IN'('STRING'):IDENT'ESAC'); 110+('FALSE'!MUVF! DE'OF'DE); 111+(VU!('INT'X):MUVF! ""); CONTROLE( 7) ; 'SKIP''END' ; 'BEGIN' # MODE FINAL : 'MU' # 'PROC' C #CONTROLE VALEUR RENDUE # =('INT' NUMTEST , 'MU' A)'VOID' : (CTRT:=NUMTEST ; (A!('INT' A):A=11!'FALSE') !CTR+:=1 ! PRINT(("ER.VALUE IN TEST",NUMTEST,NEWLINE))) ; # MODE A PRIORI : 'REF''INT' # 'REF''INT' IDENT = 'HEAP''INT':=11 , 'OP' &=:=('MU' A , 'REF''INT'B) 'REF''INT' : (A!('STRING'):B) ; 'STRUCT'('INT' A,'REF''INT' DE) DE = (0,IDENT) , []'REF''INT' R = IDENT , 'PROC' PROC = ('REF''INT' A) 'REF''INT' : A ; # CONTEXTES # ( MEM:=CTR ; 'MU' ID = 'REF''INT'(2!'SKIP',IDENT), 'MU' VAR:=R[1] , PG ; C( 112,ID) ; C( 113,VAR) ; PG:='REF''INT'(2!'SKIP',IDENT);C( 114,PG); 'PROC' P ='MU' : ""&=:IDENT;C( 115,P); 'OP' + =('INT' X)'MU' : PROC(IDENT);C( 116,+1); C( 117,PROC(IDENT)); C( 118,'CASE' 3 'IN''SKIP','SKIP', PROC(IDENT),'SKIP' 'ESAC'); C( 119,(VU!('STRING'): 'HEAP''INT':=11,('INT' X):'SKIP')); []'MU' RANG = ( R[1], DE'OF'DE, ('SKIP';IDENT'EXIT'E:'SKIP')); C( 120,RANG[1]);C( 121,RANG[2]);C( 122,RANG[3]); 'STRUCT'('STRUCT'('MU' CH1,CH2) CH1, 'MU' CH2) STRUCT = (( ('SKIP';IDENT'EXIT'E:'SKIP'), R[1]), ('FALSE'!'SKIP'!IDENT)); C( 123,CH1'OF'CH1'OF'STRUCT); C( 124,CH2'OF'CH1'OF'STRUCT); C( 125,CH2'OF'STRUCT); C( 126,'BEGIN' 'SKIP';IDENT'END'); C( 127,'IF''TRUE''THEN'""&=:IDENT'FI'); C( 128,'IF''FALSE''THEN''SKIP''ELSE' ""&=:IDENT'FI'); C( 129,(0!'SKIP','SKIP'!PROC(IDENT))); C( 130,'CASE'VU'IN'('INT'):'SKIP''OUT' ""&=:IDENT'ESAC') ) ; CONTROLE( 19); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' +=('INT' NUMTEST, 'MU' A)'VOID':C(NUMTEST,A) ; MEM:=CTR ; 131+'CASE'1'IN''REF''INT'(2!'SKIP',IDENT), MUVF,'SKIP''ESAC'; 132+(VU!('INT') :MUVF ,('STRING'):DE'OF'DE); 133+(DE'OF'DE'EXIT' EE : MUVF); 134+('TRUE'!('FALSE'!'SKIP'!IDENT) !:'FALSE' !MUVF); 135+(10!'SKIP',MUVF !:-1!'SKIP','SKIP'!PROC(IDENT)); 136+('FALSE'!MUVF! DE'OF'DE); 137+(VU!('INT'X):MUVF! R[1]); CONTROLE( 7) ; 'SKIP''END' ; 'BEGIN' # MODE FINAL : 'MU' # 'PROC' C #CONTROLE VALEUR RENDUE # =('INT' NUMTEST , 'MU' A)'VOID' : (CTRT:=NUMTEST ; (A!('PROC''VOID'):'TRUE'!'FALSE') !CTR+:=1 ! PRINT(("ER.VALUE IN TEST",NUMTEST,NEWLINE))) ; # MODE A PRIORI : 'PROC''PROC''VOID' # 'PROC''PROC''VOID' IDENT = 'PROC''VOID':(CTR+:=1;NONDP) , 'OP' &=:=('MU' A , 'PROC''PROC''VOID'B) 'PROC''PROC''VOID' : (A!('STRING'):B) ; 'STRUCT'('INT' A,'PROC''PROC''VOID' DE) DE = (0,IDENT) , []'PROC''PROC''VOID' R = IDENT , 'PROC' PROC = ('PROC''PROC''VOID' A) 'PROC''PROC''VOID' : A ; # CONTEXTES # ( MEM:=CTR ; 'MU' ID = PROC(IDENT), 'MU' VAR:='CASE'VU'IN'('STRING'):IDENT'ESAC' , PG ; C( 138,ID) ; C( 139,VAR) ; PG:='PROC''VOID':(CTR+:=1;NONDP);C( 140,PG); 'PROC' P ='MU' : R[1];C( 141,P); 'OP' + =('INT' X)'MU' : ""&=:IDENT;C( 142,+1); C( 143,IDENT); C( 144,'CASE' 3 'IN''SKIP','SKIP', 'CASE'VU'IN'('STRING'):IDENT'ESAC','SKIP' 'ESAC'); C( 145,(VU!('STRING'): ""&=:IDENT,('INT' X):'SKIP')); []'MU' RANG = ( 'CASE'VU'IN'('STRING'):IDENT'ESAC', ""&=:IDENT, IDENT); C( 146,RANG[1]);C( 147,RANG[2]);C( 148,RANG[3]); 'STRUCT'('STRUCT'('MU' CH1,CH2) CH1, 'MU' CH2) STRUCT = (( ""&=:IDENT, 'PROC''VOID':(CTR+:=1;NONDP)), 'CASE'VU'IN'('STRING'):IDENT'ESAC'); C( 149,CH1'OF'CH1'OF'STRUCT); C( 150,CH2'OF'CH1'OF'STRUCT); C( 151,CH2'OF'STRUCT); C( 152,'BEGIN' 'SKIP';DE'OF'DE'END'); C( 153,'IF''TRUE''THEN'('FALSE'!'SKIP'!IDENT)'FI'); C( 154,'IF''FALSE''THEN''SKIP''ELSE' IDENT'FI'); C( 155,(0!'SKIP','SKIP'!('FALSE'!'SKIP'!IDENT))); C( 156,'CASE'VU'IN'('INT'):'SKIP''OUT' ""&=:IDENT'ESAC') ) ; CONTROLE( 38); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' +=('INT' NUMTEST, 'MU' A)'VOID':C(NUMTEST,A) ; MEM:=CTR ; 157+'CASE'1'IN'IDENT, MUVF,'SKIP''ESAC'; 158+(VU!('INT') :MUVF ,('STRING'):('SKIP';IDENT'EXIT'E:'SKIP')); 159+('CASE'VU'IN'('STRING'):IDENT'ESAC''EXIT' EE : MUVF); 160+('TRUE'!IDENT !:'FALSE' !MUVF); 161+(10!'SKIP',MUVF !:-1!'SKIP','SKIP'!'CASE'VU'IN'('STRING'):IDENT'ESAC'); 162+('FALSE'!MUVF! IDENT); 163+(VU!('INT'X):MUVF! 'PROC''PROC''VOID'(2!'SKIP',IDENT)); CONTROLE( 14) ; 'SKIP''END' ; 'BEGIN' # MODE FINAL : 'UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) # 'PROC' C #CONTROLE VALEUR RENDUE # =('INT' NUMTEST , 'UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) A)'VOID' : (CTRT:=NUMTEST ; (A!('PROC''VOID'):'TRUE'!'FALSE') !CTR+:=1 ! PRINT(("ER.VALUE IN TEST",NUMTEST,NEWLINE))) ; # MODE A PRIORI : 'PROC''REF''PROC''PROC''VOID' # 'PROC''REF''PROC''PROC''VOID' IDENT = 'REF''PROC''PROC''VOID':(CTR+:=1;RPPN) , 'OP' &=:=('MU' A , 'PROC''REF''PROC''PROC''VOID'B) 'PROC''REF''PROC''PROC''VOID' : (A!('STRING'):B) ; 'STRUCT'('INT' A,'PROC''REF''PROC''PROC''VOID' DE) DE = (0,IDENT) , []'PROC''REF''PROC''PROC''VOID' R = IDENT , 'PROC' PROC = ('PROC''REF''PROC''PROC''VOID' A) 'PROC''REF''PROC''PROC''VOID' : A ; # CONTEXTES # ( MEM:=CTR ; 'UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) ID = 'PROC''REF''PROC''PROC''VOID'(2!'SKIP',IDENT), 'UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) VAR:=R[1] , PG ; C( 164,ID) ; C( 165,VAR) ; PG:='PROC''REF''PROC''PROC''VOID'(2!'SKIP',IDENT);C( 166,PG); 'PROC' P ='UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) : ('SKIP';IDENT'EXIT'E:'SKIP');C( 167,P); 'OP' + =('INT' X)'UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) : DE'OF'DE;C( 168,+1); C( 169,IDENT); C( 170,'CASE' 3 'IN''SKIP','SKIP', R[1],'SKIP' 'ESAC'); C( 171,(VU!('STRING'): IDENT,('INT' X):'SKIP')); []'UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) RANG = ( R[1], ""&=:IDENT, PROC(IDENT)); C( 172,RANG[1]);C( 173,RANG[2]);C( 174,RANG[3]); 'STRUCT'('STRUCT'('UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) CH1,CH2) CH1, 'UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) CH2) STRUCT = (( ""&=:IDENT, 'CASE'VU'IN'('STRING'):IDENT'ESAC'), 'CASE'VU'IN'('STRING'):IDENT'ESAC'); C( 175,CH1'OF'CH1'OF'STRUCT); C( 176,CH2'OF'CH1'OF'STRUCT); C( 177,CH2'OF'STRUCT); C( 178,'BEGIN' 'SKIP';DE'OF'DE'END'); C( 179,'IF''TRUE''THEN'IDENT'FI'); C( 180,'IF''FALSE''THEN''SKIP''ELSE' 'REF''PROC''PROC''VOID':(CTR+:=1;RPPN)'FI'); C( 181,(0!'SKIP','SKIP'!'REF''PROC''PROC''VOID':(CTR+:=1;RPPN))); C( 182,'CASE'VU'IN'('INT'):'SKIP''OUT' DE'OF'DE'ESAC') ) ; CONTROLE( 57); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' +=('INT' NUMTEST, 'UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) A)'VOID':C(NUMTEST,A) ; MEM:=CTR ; 183+'CASE'1'IN'('FALSE'!'SKIP'!IDENT), 'UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) ('SKIP'),'SKIP''ESAC'; 184+(VU!('INT') :'UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) ('SKIP') ,('STRING'):DE'OF'DE); 185+('REF''PROC''PROC''VOID':(CTR+:=1;RPPN)'EXIT' EE : 'UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) ('SKIP')); 186+('TRUE'!'CASE'VU'IN'('STRING'):IDENT'ESAC' !:'FALSE' !'UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) ('SKIP')); 187+(10!'SKIP','UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) ('SKIP') !:-1!'SKIP','SKIP'!'PROC''REF''PROC''PROC''VOID'(2!'SKIP',IDENT)); 188+('FALSE'!'UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) ('SKIP')! 'PROC''REF''PROC''PROC''VOID'(2!'SKIP',IDENT)); 189+(VU!('INT'X):'UNION'('UNION'('STRING','REAL','INT'), 'BITS' , 'UNION'('REF'[]'BOOL','MU')) ('SKIP')! DE'OF'DE); CONTROLE( 21) ; 'SKIP''END' ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R65A # (PRINT(("COERCION WIDENING",NEWLINE)) ; 'INT' VF = 3*(19+19+57+7+7+21) ; 'INT' CTR:=0,CTRT,MEM ; 'PROC' CONTROLE = ('INT' INC )'VOID' : (CTR/=MEM+INC ! PRINT(("COUNT ER IN TEST",CTRT,CTR,MEM+INC,NEWLINE))) ; 'UNION'('INT','STRING') VU = "VIDE" ; 'BYTES' CAT = BYTESPACK("""""""") , CAT4 = BYTESPACK("'CO'") ; 'PRIO' & = 8 ; 'BEGIN' # MODE FINAL : 'REAL' # 'PROC' C #CONTROLE VALEUR RENDUE # =('INT' NUMTEST , 'REAL' A)'VOID' : (CTRT:=NUMTEST ; A<-15.999'AND'A>-16.001 ! CTR+:=1 ! PRINT(("ER VALUE IN TEST",NUMTEST,NEWLINE))) ; 'PROC' RP := 'INT' : (CTR+:=1 ; -000016) ; # MODE A PRIORI : 'INT' # ('INT' IDENT =-000016 ; 'STRUCT'('INT' A,'INT' DE) DE = (0,IDENT) , []'INT' R = (IDENT,-000016) , 'PROC' PROC = ('INT' A)'INT' : A ; 'OP'('INT')'INT' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; 'REAL' ID = -000016 , 'REAL'VAR:=IDENT , PG ; C( 1,ID) ; C( 2,VAR) ; PG:=PROC(-000016); C( 3,PG); 'PROC' P ='REAL' : R[2]; C( 4,P); 'OP' + =('INT' X)'REAL' : R[2]; C( 5,+1); C( 6,DE'OF'DE); C( 7,'CASE' 3 'IN''SKIP','SKIP', -000016,'SKIP' 'ESAC'); C( 8,(VU!('STRING'): ('INT' X = IDENT ; 1 ! X,'SKIP'),('INT' X):'SKIP')); []'REAL' RANG = (IDENT, ('GOTO'E'EXIT' E:IDENT), -000016); C( 9,RANG[1]); C( 10,RANG[2]); C( 11,RANG[3]); 'STRUCT'('STRUCT'('REAL' CH1,CH2) CH1, 'REAL' CH2) STRUCT = (( 'O' IDENT, IDENT), 'O' IDENT); C( 12,CH1'OF'CH1'OF'STRUCT); C( 13,CH2'OF'CH1'OF'STRUCT); C( 14,CH2'OF'STRUCT); C( 15,'BEGIN' 'SKIP';DE'OF'DE'END'); C( 16,'IF''TRUE''THEN'R[2]'FI'); C( 17,'IF''FALSE''THEN''SKIP''ELSE' PROC(-000016)'FI'); C( 18,(0!'SKIP','SKIP'! IDENT)); C( 19,'CASE'VU'IN'('INT'):'SKIP''OUT' ('GOTO'E'EXIT' E:IDENT)'ESAC') ; CONTROLE ( 19); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'INT' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,'REAL' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 20&'CASE'1'IN'('GOTO'E'EXIT' E:IDENT), 1E0,'SKIP''ESAC'; 21&(VU!('INT') :1E0 ,('STRING'):'O' IDENT); 22&('O' IDENT'EXIT' EE :1E0); 23&('TRUE'!PROC(-000016) !:'FALSE' !1E0); 24&(10!'SKIP',1E0 !:-1!'SKIP','SKIP'! PROC(-000016)); 25&('FALSE'!1E0! PROC(-000016)); 26&(VU!('INT'X):1E0! DE'OF'DE); CONTROLE( 7) ; 'SKIP') ; # MODE A PRIORI : 'REF''INT' # ('REF''INT' IDENT ='HEAP''INT':=-000016 ; 'STRUCT'('INT' A,'REF''INT' DE) DE = (0,IDENT) , []'REF''INT' R = (IDENT,'HEAP''INT':=-000016) , 'PROC' PROC = ('REF''INT' A)'REF''INT' : A ; 'OP'('REF''INT')'REF''INT' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; 'REAL' ID = DE'OF'DE , 'REAL'VAR:=DE'OF'DE , PG ; C( 27,ID) ; C( 28,VAR) ; PG:='O' IDENT; C( 29,PG); 'PROC' P ='REAL' : ('REF''INT' X = IDENT ; 1 ! X,'SKIP'); C( 30,P); 'OP' + =('INT' X)'REAL' : DE'OF'DE; C( 31,+1); C( 32,R[2]); C( 33,'CASE' 3 'IN''SKIP','SKIP', 'O' IDENT,'SKIP' 'ESAC'); C( 34,(VU!('STRING'): 'O' IDENT,('INT' X):'SKIP')); []'REAL' RANG = ('HEAP''INT':=-000016, ('GOTO'E'EXIT' E:IDENT), ('GOTO'E'EXIT' E:IDENT)); C( 35,RANG[1]); C( 36,RANG[2]); C( 37,RANG[3]); 'STRUCT'('STRUCT'('REAL' CH1,CH2) CH1, 'REAL' CH2) STRUCT = (( R[2], PROC('HEAP''INT':=-000016)), R[2]); C( 38,CH1'OF'CH1'OF'STRUCT); C( 39,CH2'OF'CH1'OF'STRUCT); C( 40,CH2'OF'STRUCT); C( 41,'BEGIN' 'SKIP';'O' IDENT'END'); C( 42,'IF''TRUE''THEN'R[2]'FI'); C( 43,'IF''FALSE''THEN''SKIP''ELSE' IDENT'FI'); C( 44,(0!'SKIP','SKIP'! ('GOTO'E'EXIT' E:IDENT))); C( 45,'CASE'VU'IN'('INT'):'SKIP''OUT' ('GOTO'E'EXIT' E:IDENT)'ESAC') ; CONTROLE ( 19); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'REF''INT' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,'REAL' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 46&'CASE'1'IN'('GOTO'E'EXIT' E:IDENT), 1E0,'SKIP''ESAC'; 47&(VU!('INT') :1E0 ,('STRING'):('GOTO'E'EXIT' E:IDENT)); 48&(IDENT'EXIT' EE :1E0); 49&('TRUE'!PROC('HEAP''INT':=-000016) !:'FALSE' !1E0); 50&(10!'SKIP',1E0 !:-1!'SKIP','SKIP'! PROC('HEAP''INT':=-000016)); 51&('FALSE'!1E0! PROC('HEAP''INT':=-000016)); 52&(VU!('INT'X):1E0! 'O' IDENT); CONTROLE( 7) ; 'SKIP') ; # MODE A PRIORI : 'PROC''REF''PROC''INT' # ('PROC''REF''PROC''INT' IDENT ='REF''PROC''INT' :(CTR+:=1; RP) ; 'STRUCT'('INT' A,'PROC''REF''PROC''INT' DE) DE = (0,IDENT) , []'PROC''REF''PROC''INT' R = (IDENT,'REF''PROC''INT' :(CTR+:=1; RP)) , 'PROC' PROC = ('PROC''REF''PROC''INT' A)'PROC''REF''PROC''INT' : A ; 'OP'('PROC''REF''PROC''INT')'PROC''REF''PROC''INT' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; 'REAL' ID = R[2] , 'REAL'VAR:=R[2] , PG ; C( 53,ID) ; C( 54,VAR) ; PG:=IDENT; C( 55,PG); 'PROC' P ='REAL' : IDENT; C( 56,P); 'OP' + =('INT' X)'REAL' : R[2]; C( 57,+1); C( 58,PROC('REF''PROC''INT' :(CTR+:=1; RP))); C( 59,'CASE' 3 'IN''SKIP','SKIP', R[2],'SKIP' 'ESAC'); C( 60,(VU!('STRING'): ('PROC''REF''PROC''INT' X = IDENT ; 1 ! X,'SKIP'),('INT' X):'SKIP')); []'REAL' RANG = (R[2], DE'OF'DE, PROC('REF''PROC''INT' :(CTR+:=1; RP))); C( 61,RANG[1]); C( 62,RANG[2]); C( 63,RANG[3]); 'STRUCT'('STRUCT'('REAL' CH1,CH2) CH1, 'REAL' CH2) STRUCT = (( IDENT, IDENT), 'O' IDENT); C( 64,CH1'OF'CH1'OF'STRUCT); C( 65,CH2'OF'CH1'OF'STRUCT); C( 66,CH2'OF'STRUCT); C( 67,'BEGIN' 'SKIP';R[2]'END'); C( 68,'IF''TRUE''THEN'R[2]'FI'); C( 69,'IF''FALSE''THEN''SKIP''ELSE' 'REF''PROC''INT' :(CTR+:=1; RP)'FI'); C( 70,(0!'SKIP','SKIP'! ('GOTO'E'EXIT' E:IDENT))); C( 71,'CASE'VU'IN'('INT'):'SKIP''OUT' DE'OF'DE'ESAC') ; CONTROLE ( 57); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'PROC''REF''PROC''INT' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,'REAL' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 72&'CASE'1'IN'IDENT, 1E0,'SKIP''ESAC'; 73&(VU!('INT') :1E0 ,('STRING'):DE'OF'DE); 74&(DE'OF'DE'EXIT' EE :1E0); 75&('TRUE'!R[2] !:'FALSE' !1E0); 76&(10!'SKIP',1E0 !:-1!'SKIP','SKIP'! DE'OF'DE); 77&('FALSE'!1E0! 'O' IDENT); 78&(VU!('INT'X):1E0! ('PROC''REF''PROC''INT' X = IDENT ; 1 ! X,'SKIP')); CONTROLE( 21) ; 'SKIP') ; 'SKIP''END' ; 'BEGIN' # MODE FINAL : 'COMPL' # 'PROC' C #CONTROLE VALEUR RENDUE # =('INT' NUMTEST , 'COMPL' A)'VOID' : (CTRT:=NUMTEST ; 'ABS'('RE'A-MAXINT)<50000 'AND' IM'OF'A=0 ! CTR+:=1 ! PRINT(("ER VALUE IN TEST",NUMTEST,NEWLINE))) ; 'PROC' RP := 'INT' : (CTR+:=1 ; MAXINT) ; # MODE A PRIORI : 'INT' # ('INT' IDENT =MAXINT ; 'STRUCT'('INT' A,'INT' DE) DE = (0,IDENT) , []'INT' R = (IDENT,MAXINT) , 'PROC' PROC = ('INT' A)'INT' : A ; 'OP'('INT')'INT' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; 'COMPL' ID = ('GOTO'E'EXIT' E:IDENT) , 'COMPL'VAR:='O' IDENT , PG ; C( 79,ID) ; C( 80,VAR) ; PG:=R[2]; C( 81,PG); 'PROC' P ='COMPL' : IDENT; C( 82,P); 'OP' + =('INT' X)'COMPL' : IDENT; C( 83,+1); C( 84,MAXINT); C( 85,'CASE' 3 'IN''SKIP','SKIP', MAXINT,'SKIP' 'ESAC'); C( 86,(VU!('STRING'): DE'OF'DE,('INT' X):'SKIP')); []'COMPL' RANG = (IDENT, MAXINT, DE'OF'DE); C( 87,RANG[1]); C( 88,RANG[2]); C( 89,RANG[3]); 'STRUCT'('STRUCT'('COMPL' CH1,CH2) CH1, 'COMPL' CH2) STRUCT = (( ('GOTO'E'EXIT' E:IDENT), PROC(MAXINT)), DE'OF'DE); C( 90,CH1'OF'CH1'OF'STRUCT); C( 91,CH2'OF'CH1'OF'STRUCT); C( 92,CH2'OF'STRUCT); C( 93,'BEGIN' 'SKIP';'O' IDENT'END'); C( 94,'IF''TRUE''THEN'IDENT'FI'); C( 95,'IF''FALSE''THEN''SKIP''ELSE' ('GOTO'E'EXIT' E:IDENT)'FI'); C( 96,(0!'SKIP','SKIP'! DE'OF'DE)); C( 97,'CASE'VU'IN'('INT'):'SKIP''OUT' PROC(MAXINT)'ESAC') ; CONTROLE ( 19); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'INT' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,'COMPL' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 98&'CASE'1'IN'MAXINT, 1'I'0,'SKIP''ESAC'; 99&(VU!('INT') :1'I'0 ,('STRING'):DE'OF'DE); 100&(R[2]'EXIT' EE :1'I'0); 101&('TRUE'!PROC(MAXINT) !:'FALSE' !1'I'0); 102&(10!'SKIP',1'I'0 !:-1!'SKIP','SKIP'! ('INT' X = IDENT ; 1 ! X,'SKIP')); 103&('FALSE'!1'I'0! R[2]); 104&(VU!('INT'X):1'I'0! PROC(MAXINT)); CONTROLE( 7) ; 'SKIP') ; # MODE A PRIORI : 'REF''INT' # ('REF''INT' IDENT ='HEAP''INT':=MAXINT ; 'STRUCT'('INT' A,'REF''INT' DE) DE = (0,IDENT) , []'REF''INT' R = (IDENT,'HEAP''INT':=MAXINT) , 'PROC' PROC = ('REF''INT' A)'REF''INT' : A ; 'OP'('REF''INT')'REF''INT' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; 'COMPL' ID = 'O' IDENT , 'COMPL'VAR:='HEAP''INT':=MAXINT , PG ; C( 105,ID) ; C( 106,VAR) ; PG:=DE'OF'DE; C( 107,PG); 'PROC' P ='COMPL' : ('REF''INT' X = IDENT ; 1 ! X,'SKIP'); C( 108,P); 'OP' + =('INT' X)'COMPL' : IDENT; C( 109,+1); C( 110,R[2]); C( 111,'CASE' 3 'IN''SKIP','SKIP', ('REF''INT' X = IDENT ; 1 ! X,'SKIP'),'SKIP' 'ESAC'); C( 112,(VU!('STRING'): IDENT,('INT' X):'SKIP')); []'COMPL' RANG = (('GOTO'E'EXIT' E:IDENT), ('REF''INT' X = IDENT ; 1 ! X,'SKIP'), 'O' IDENT); C( 113,RANG[1]); C( 114,RANG[2]); C( 115,RANG[3]); 'STRUCT'('STRUCT'('COMPL' CH1,CH2) CH1, 'COMPL' CH2) STRUCT = (( DE'OF'DE, ('REF''INT' X = IDENT ; 1 ! X,'SKIP')), DE'OF'DE); C( 116,CH1'OF'CH1'OF'STRUCT); C( 117,CH2'OF'CH1'OF'STRUCT); C( 118,CH2'OF'STRUCT); C( 119,'BEGIN' 'SKIP';'HEAP''INT':=MAXINT'END'); C( 120,'IF''TRUE''THEN'('GOTO'E'EXIT' E:IDENT)'FI'); C( 121,'IF''FALSE''THEN''SKIP''ELSE' R[2]'FI'); C( 122,(0!'SKIP','SKIP'! ('GOTO'E'EXIT' E:IDENT))); C( 123,'CASE'VU'IN'('INT'):'SKIP''OUT' IDENT'ESAC') ; CONTROLE ( 19); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'REF''INT' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,'COMPL' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 124&'CASE'1'IN'PROC('HEAP''INT':=MAXINT), 1'I'0,'SKIP''ESAC'; 125&(VU!('INT') :1'I'0 ,('STRING'):PROC('HEAP''INT':=MAXINT)); 126&(PROC('HEAP''INT':=MAXINT)'EXIT' EE :1'I'0); 127&('TRUE'!'HEAP''INT':=MAXINT !:'FALSE' !1'I'0); 128&(10!'SKIP',1'I'0 !:-1!'SKIP','SKIP'! R[2]); 129&('FALSE'!1'I'0! R[2]); 130&(VU!('INT'X):1'I'0! 'O' IDENT); CONTROLE( 7) ; 'SKIP') ; # MODE A PRIORI : 'PROC''REF''PROC''INT' # ('PROC''REF''PROC''INT' IDENT ='REF''PROC''INT' :(CTR+:=1; RP) ; 'STRUCT'('INT' A,'PROC''REF''PROC''INT' DE) DE = (0,IDENT) , []'PROC''REF''PROC''INT' R = (IDENT,'REF''PROC''INT' :(CTR+:=1; RP)) , 'PROC' PROC = ('PROC''REF''PROC''INT' A)'PROC''REF''PROC''INT' : A ; 'OP'('PROC''REF''PROC''INT')'PROC''REF''PROC''INT' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; 'COMPL' ID = PROC('REF''PROC''INT' :(CTR+:=1; RP)) , 'COMPL'VAR:=R[2] , PG ; C( 131,ID) ; C( 132,VAR) ; PG:='O' IDENT; C( 133,PG); 'PROC' P ='COMPL' : IDENT; C( 134,P); 'OP' + =('INT' X)'COMPL' : IDENT; C( 135,+1); C( 136,DE'OF'DE); C( 137,'CASE' 3 'IN''SKIP','SKIP', PROC('REF''PROC''INT' :(CTR+:=1; RP)),'SKIP' 'ESAC'); C( 138,(VU!('STRING'): IDENT,('INT' X):'SKIP')); []'COMPL' RANG = (('GOTO'E'EXIT' E:IDENT), DE'OF'DE, DE'OF'DE); C( 139,RANG[1]); C( 140,RANG[2]); C( 141,RANG[3]); 'STRUCT'('STRUCT'('COMPL' CH1,CH2) CH1, 'COMPL' CH2) STRUCT = (( 'O' IDENT, PROC('REF''PROC''INT' :(CTR+:=1; RP))), R[2]); C( 142,CH1'OF'CH1'OF'STRUCT); C( 143,CH2'OF'CH1'OF'STRUCT); C( 144,CH2'OF'STRUCT); C( 145,'BEGIN' 'SKIP';R[2]'END'); C( 146,'IF''TRUE''THEN'PROC('REF''PROC''INT' :(CTR+:=1; RP))'FI'); C( 147,'IF''FALSE''THEN''SKIP''ELSE' ('PROC''REF''PROC''INT' X = IDENT ; 1 ! X,'SKIP')'FI'); C( 148,(0!'SKIP','SKIP'! 'REF''PROC''INT' :(CTR+:=1; RP))); C( 149,'CASE'VU'IN'('INT'):'SKIP''OUT' R[2]'ESAC') ; CONTROLE ( 57); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'PROC''REF''PROC''INT' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,'COMPL' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 150&'CASE'1'IN'IDENT, 1'I'0,'SKIP''ESAC'; 151&(VU!('INT') :1'I'0 ,('STRING'):'REF''PROC''INT' :(CTR+:=1; RP)); 152&(('PROC''REF''PROC''INT' X = IDENT ; 1 ! X,'SKIP')'EXIT' EE :1'I'0); 153&('TRUE'!DE'OF'DE !:'FALSE' !1'I'0); 154&(10!'SKIP',1'I'0 !:-1!'SKIP','SKIP'! ('PROC''REF''PROC''INT' X = IDENT ; 1 ! X,'SKIP')); 155&('FALSE'!1'I'0! DE'OF'DE); 156&(VU!('INT'X):1'I'0! IDENT); CONTROLE( 21) ; 'SKIP') ; 'SKIP''END' ; 'BEGIN' # MODE FINAL : 'COMPL' # 'PROC' C #CONTROLE VALEUR RENDUE # =('INT' NUMTEST , 'COMPL' A)'VOID' : (CTRT:=NUMTEST ; RE'OF'A<.009991 'AND' 'RE'A>.009989 'AND' 'IM'A=0 ! CTR+:=1 ! PRINT(("ER VALUE IN TEST",NUMTEST,NEWLINE))) ; 'PROC' RP := 'REAL' : (CTR+:=1 ; 00000.0999E-001) ; # MODE A PRIORI : 'REAL' # ('REAL' IDENT =00000.0999E-001 ; 'STRUCT'('INT' A,'REAL' DE) DE = (0,IDENT) , []'REAL' R = (IDENT,00000.0999E-001) , 'PROC' PROC = ('REAL' A)'REAL' : A ; 'OP'('REAL')'REAL' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; 'COMPL' ID = IDENT , 'COMPL'VAR:=00000.0999E-001 , PG ; C( 157,ID) ; C( 158,VAR) ; PG:=('REAL' X = IDENT ; 1 ! X,'SKIP'); C( 159,PG); 'PROC' P ='COMPL' : DE'OF'DE; C( 160,P); 'OP' + =('INT' X)'COMPL' : 'O' IDENT; C( 161,+1); C( 162,IDENT); C( 163,'CASE' 3 'IN''SKIP','SKIP', ('GOTO'E'EXIT' E:IDENT),'SKIP' 'ESAC'); C( 164,(VU!('STRING'): IDENT,('INT' X):'SKIP')); []'COMPL' RANG = (00000.0999E-001, 'O' IDENT, ('REAL' X = IDENT ; 1 ! X,'SKIP')); C( 165,RANG[1]); C( 166,RANG[2]); C( 167,RANG[3]); 'STRUCT'('STRUCT'('COMPL' CH1,CH2) CH1, 'COMPL' CH2) STRUCT = (( 00000.0999E-001, ('REAL' X = IDENT ; 1 ! X,'SKIP')), IDENT); C( 168,CH1'OF'CH1'OF'STRUCT); C( 169,CH2'OF'CH1'OF'STRUCT); C( 170,CH2'OF'STRUCT); C( 171,'BEGIN' 'SKIP';('GOTO'E'EXIT' E:IDENT)'END'); C( 172,'IF''TRUE''THEN'('REAL' X = IDENT ; 1 ! X,'SKIP')'FI'); C( 173,'IF''FALSE''THEN''SKIP''ELSE' R[2]'FI'); C( 174,(0!'SKIP','SKIP'! ('GOTO'E'EXIT' E:IDENT))); C( 175,'CASE'VU'IN'('INT'):'SKIP''OUT' 'O' IDENT'ESAC') ; CONTROLE ( 19); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'REAL' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,'COMPL' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 176&'CASE'1'IN'DE'OF'DE, 0'I'1,'SKIP''ESAC'; 177&(VU!('INT') :0'I'1 ,('STRING'):IDENT); 178&(R[2]'EXIT' EE :0'I'1); 179&('TRUE'!IDENT !:'FALSE' !0'I'1); 180&(10!'SKIP',0'I'1 !:-1!'SKIP','SKIP'! R[2]); 181&('FALSE'!0'I'1! IDENT); 182&(VU!('INT'X):0'I'1! PROC(00000.0999E-001)); CONTROLE( 7) ; 'SKIP') ; # MODE A PRIORI : 'REF''REAL' # ('REF''REAL' IDENT ='HEAP''REAL':=00000.0999E-001 ; 'STRUCT'('INT' A,'REF''REAL' DE) DE = (0,IDENT) , []'REF''REAL' R = (IDENT,'HEAP''REAL':=00000.0999E-001) , 'PROC' PROC = ('REF''REAL' A)'REF''REAL' : A ; 'OP'('REF''REAL')'REF''REAL' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; 'COMPL' ID = IDENT , 'COMPL'VAR:=('REF''REAL' X = IDENT ; 1 ! X,'SKIP') , PG ; C( 183,ID) ; C( 184,VAR) ; PG:=('REF''REAL' X = IDENT ; 1 ! X,'SKIP'); C( 185,PG); 'PROC' P ='COMPL' : DE'OF'DE; C( 186,P); 'OP' + =('INT' X)'COMPL' : IDENT; C( 187,+1); C( 188,'HEAP''REAL':=00000.0999E-001); C( 189,'CASE' 3 'IN''SKIP','SKIP', 'HEAP''REAL':=00000.0999E-001,'SKIP' 'ESAC'); C( 190,(VU!('STRING'): DE'OF'DE,('INT' X):'SKIP')); []'COMPL' RANG = ('O' IDENT, DE'OF'DE, 'HEAP''REAL':=00000.0999E-001); C( 191,RANG[1]); C( 192,RANG[2]); C( 193,RANG[3]); 'STRUCT'('STRUCT'('COMPL' CH1,CH2) CH1, 'COMPL' CH2) STRUCT = (( ('REF''REAL' X = IDENT ; 1 ! X,'SKIP'), ('REF''REAL' X = IDENT ; 1 ! X,'SKIP')), ('GOTO'E'EXIT' E:IDENT)); C( 194,CH1'OF'CH1'OF'STRUCT); C( 195,CH2'OF'CH1'OF'STRUCT); C( 196,CH2'OF'STRUCT); C( 197,'BEGIN' 'SKIP';DE'OF'DE'END'); C( 198,'IF''TRUE''THEN'PROC('HEAP''REAL':=00000.0999E-001)'FI'); C( 199,'IF''FALSE''THEN''SKIP''ELSE' ('REF''REAL' X = IDENT ; 1 ! X,'SKIP')'FI'); C( 200,(0!'SKIP','SKIP'! DE'OF'DE)); C( 201,'CASE'VU'IN'('INT'):'SKIP''OUT' PROC('HEAP''REAL':=00000.0999E-001)'ESAC') ; CONTROLE ( 19); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'REF''REAL' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,'COMPL' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 202&'CASE'1'IN''HEAP''REAL':=00000.0999E-001, 0'I'1,'SKIP''ESAC'; 203&(VU!('INT') :0'I'1 ,('STRING'):R[2]); 204&('O' IDENT'EXIT' EE :0'I'1); 205&('TRUE'!('REF''REAL' X = IDENT ; 1 ! X,'SKIP') !:'FALSE' !0'I'1); 206&(10!'SKIP',0'I'1 !:-1!'SKIP','SKIP'! 'O' IDENT); 207&('FALSE'!0'I'1! 'O' IDENT); 208&(VU!('INT'X):0'I'1! DE'OF'DE); CONTROLE( 7) ; 'SKIP') ; # MODE A PRIORI : 'PROC''REF''PROC''REAL' # ('PROC''REF''PROC''REAL' IDENT ='REF''PROC''REAL' :(CTR+:=1; RP) ; 'STRUCT'('INT' A,'PROC''REF''PROC''REAL' DE) DE = (0,IDENT) , []'PROC''REF''PROC''REAL' R = (IDENT,'REF''PROC''REAL' :(CTR+:=1; RP) ) , 'PROC' PROC = ('PROC''REF''PROC''REAL' A)'PROC''REF''PROC''REAL' : A ; 'OP'('PROC''REF''PROC''REAL')'PROC''REF''PROC''REAL' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; 'COMPL' ID = ('PROC''REF''PROC''REAL' X = IDENT ; 1 ! X,'SKIP') , 'COMPL'VAR:='REF''PROC''REAL' :(CTR+:=1; RP) , PG ; C( 209,ID) ; C( 210,VAR) ; PG:=DE'OF'DE; C( 211,PG); 'PROC' P ='COMPL' : PROC('REF''PROC''REAL' :(CTR+:=1; RP)); C( 212,P); 'OP' + =('INT' X)'COMPL' : ('PROC''REF''PROC''REAL' X = IDENT ; 1 ! X,'SKIP'); C( 213,+1); C( 214,'O' IDENT); C( 215,'CASE' 3 'IN''SKIP','SKIP', 'O' IDENT,'SKIP' 'ESAC'); C( 216,(VU!('STRING'): 'O' IDENT,('INT' X):'SKIP')); []'COMPL' RANG = ('REF''PROC''REAL' :(CTR+:=1; RP), IDENT, ('GOTO'E'EXIT' E:IDENT)); C( 217,RANG[1]); C( 218,RANG[2]); C( 219,RANG[3]); 'STRUCT'('STRUCT'('COMPL' CH1,CH2) CH1, 'COMPL' CH2) STRUCT = (( IDENT, DE'OF'DE), PROC('REF''PROC''REAL' :(CTR+:=1; RP))); C( 220,CH1'OF'CH1'OF'STRUCT); C( 221,CH2'OF'CH1'OF'STRUCT); C( 222,CH2'OF'STRUCT); C( 223,'BEGIN' 'SKIP';IDENT'END'); C( 224,'IF''TRUE''THEN'PROC('REF''PROC''REAL' :(CTR+:=1; RP))'FI'); C( 225,'IF''FALSE''THEN''SKIP''ELSE' 'O' IDENT'FI'); C( 226,(0!'SKIP','SKIP'! DE'OF'DE)); C( 227,'CASE'VU'IN'('INT'):'SKIP''OUT' 'O' IDENT'ESAC') ; CONTROLE ( 57); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'PROC''REF''PROC''REAL' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,'COMPL' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 228&'CASE'1'IN'('GOTO'E'EXIT' E:IDENT), 0'I'1,'SKIP''ESAC'; 229&(VU!('INT') :0'I'1 ,('STRING'):('PROC''REF''PROC''REAL' X = IDENT ; 1 ! X,'SKIP')); 230&(R[2]'EXIT' EE :0'I'1); 231&('TRUE'!PROC('REF''PROC''REAL' :(CTR+:=1; RP)) !:'FALSE' !0'I'1); 232&(10!'SKIP',0'I'1 !:-1!'SKIP','SKIP'! PROC('REF''PROC''REAL' :(CTR+:=1; RP))); 233&('FALSE'!0'I'1! DE'OF'DE); 234&(VU!('INT'X):0'I'1! 'O' IDENT); CONTROLE( 21) ; 'SKIP') ; 'SKIP''END' ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R65B # (PRINT(("COERCION WIDENING",NEWLINE)) ; 'INT' VF = 3*(19+19+57+7+7+21) + 3*(7+7+21) ; 'INT' CTR:=0,CTRT,MEM ; 'PROC' CONTROLE = ('INT' INC )'VOID' : (CTR/=MEM+INC ! PRINT(("COUNT ER IN TEST",CTRT,CTR,MEM+INC,NEWLINE))) ; 'UNION'('INT','STRING') VU = "VIDE" ; 'BYTES' CAT = BYTESPACK("""""""") , CAT4 = BYTESPACK("'CO'") ; 'PRIO' & = 8 ; 'BEGIN' # MODE FINAL : []'BOOL' # 'PROC' C #CONTROLE VALEUR RENDUE # =('INT' NUMTEST , []'BOOL' A)'VOID' : (CTRT:=NUMTEST ; 'UPB'A=32'AND''LWB'A=1'AND'A[1]'AND''NOT'A[2] 'AND' A[32]'AND'A[31]'AND'BITSPACK(A)=16RBEB1A23F ! CTR+:=1 ! PRINT(("ER VALUE IN TEST",NUMTEST,NEWLINE))) ; 'PROC' CBC = ('INT' I , NUMTEST , 'BOOL' V)'VOID' : (CTRT:=NUMTEST ; I=1 'AND' V ! CTR+:=1 ! PRINT(("ER WEAK CONTEXT",NUMTEST,NEWLINE))) ; 'PROC' RP := 'BITS' : (CTR+:=1 ; 8R27654321077) ; # MODE A PRIORI : 'BITS' # ('BITS' IDENT =8R27654321077 ; 'STRUCT'('INT' A,'BITS' DE) DE = (0,IDENT) , []'BITS' R = (IDENT,8R27654321077) , 'PROC' PROC = ('BITS' A)'BITS' : A ; 'OP'('BITS')'BITS' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; []'BOOL' ID = 8R27654321077 , [BITS WIDTH]'BOOL'VAR:=IDENT , PG ; C( 1,ID) ; C( 2,VAR) ; PG:=PROC(8R27654321077); C( 3,PG); 'PROC' P =[]'BOOL' : R[2]; C( 4,P); 'OP' + =('INT' X)[]'BOOL' : R[2]; C( 5,+1); C( 6,DE'OF'DE); C( 7,'CASE' 3 'IN''SKIP','SKIP', 8R27654321077,'SKIP' 'ESAC'); C( 8,(VU!('STRING'): ('BITS' X = IDENT ; 1 ! X,'SKIP'),('INT' X):'SKIP')); [][]'BOOL' RANG = (IDENT, ('GOTO'E'EXIT' E:IDENT), 8R27654321077); C( 9,RANG[1]); C( 10,RANG[2]); C( 11,RANG[3]); 'STRUCT'('STRUCT'([]'BOOL' CH1,CH2) CH1, []'BOOL' CH2) STRUCT = (( 'O' IDENT, IDENT), 'O' IDENT); C( 12,CH1'OF'CH1'OF'STRUCT); C( 13,CH2'OF'CH1'OF'STRUCT); C( 14,CH2'OF'STRUCT); C( 15,'BEGIN' 'SKIP';DE'OF'DE'END'); C( 16,'IF''TRUE''THEN'R[2]'FI'); C( 17,'IF''FALSE''THEN''SKIP''ELSE' PROC(8R27654321077)'FI'); C( 18,(0!'SKIP','SKIP'! IDENT)); C( 19,'CASE'VU'IN'('INT'):'SKIP''OUT' ('GOTO'E'EXIT' E:IDENT)'ESAC') ; CONTROLE ( 19); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'BITS' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,[]'BOOL' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 20&'CASE'1'IN'('GOTO'E'EXIT' E:IDENT), []'BOOL'('SKIP'),'SKIP''ESAC'; 21&(VU!('INT') :[]'BOOL'('SKIP') ,('STRING'):'O' IDENT); 22&('O' IDENT'EXIT' EE :[]'BOOL'('SKIP')); 23&('TRUE'!PROC(8R27654321077) !:'FALSE' ![]'BOOL'('SKIP')); 24&(10!'SKIP',[]'BOOL'('SKIP') !:-1!'SKIP','SKIP'! PROC(8R27654321077)); 25&('FALSE'![]'BOOL'('SKIP')! PROC(8R27654321077)); 26&(VU!('INT'X):[]'BOOL'('SKIP')! DE'OF'DE); CONTROLE( 7) ; MEM:=CTR ; CBC(1, 27,'CASE'1'IN'DE'OF'DE, []'BOOL'('SKIP'),'SKIP''ESAC'[3]); CBC(1, 28,(VU!('INT') :[]'BOOL'('SKIP') ,('STRING'):DE'OF'DE)[3]); CBC(1, 29,('O' IDENT'EXIT' EE :[]'BOOL'('SKIP'))[3]); CBC(1, 30,('TRUE'!('BITS' X = IDENT ; 1 ! X,'SKIP') !:'FALSE' ![]'BOOL'('SKIP'))[3]); CBC(1, 31,(10!'SKIP',[]'BOOL'('SKIP') !:-1!'SKIP','SKIP'! DE'OF'DE)[3]); CBC(1, 32,('FALSE'![]'BOOL'('SKIP')! R[2])[3]); CBC(1, 33,(VU!('INT'X):[]'BOOL'('SKIP')! 'O' IDENT)[3]); CONTROLE( 7) ; 'SKIP') ; # MODE A PRIORI : 'REF''BITS' # ('REF''BITS' IDENT ='HEAP''BITS':=8R27654321077 ; 'STRUCT'('INT' A,'REF''BITS' DE) DE = (0,IDENT) , []'REF''BITS' R = (IDENT,'HEAP''BITS':=8R27654321077) , 'PROC' PROC = ('REF''BITS' A)'REF''BITS' : A ; 'OP'('REF''BITS')'REF''BITS' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; []'BOOL' ID = 'O' IDENT , [BITS WIDTH]'BOOL'VAR:='HEAP''BITS':=8R27654321077 , PG ; C( 34,ID) ; C( 35,VAR) ; PG:=('GOTO'E'EXIT' E:IDENT); C( 36,PG); 'PROC' P =[]'BOOL' : ('GOTO'E'EXIT' E:IDENT); C( 37,P); 'OP' + =('INT' X)[]'BOOL' : R[2]; C( 38,+1); C( 39,PROC('HEAP''BITS':=8R27654321077)); C( 40,'CASE' 3 'IN''SKIP','SKIP', R[2],'SKIP' 'ESAC'); C( 41,(VU!('STRING'): 'O' IDENT,('INT' X):'SKIP')); [][]'BOOL' RANG = (R[2], IDENT, ('GOTO'E'EXIT' E:IDENT)); C( 42,RANG[1]); C( 43,RANG[2]); C( 44,RANG[3]); 'STRUCT'('STRUCT'([]'BOOL' CH1,CH2) CH1, []'BOOL' CH2) STRUCT = (( ('GOTO'E'EXIT' E:IDENT), ('GOTO'E'EXIT' E:IDENT)), ('GOTO'E'EXIT' E:IDENT)); C( 45,CH1'OF'CH1'OF'STRUCT); C( 46,CH2'OF'CH1'OF'STRUCT); C( 47,CH2'OF'STRUCT); C( 48,'BEGIN' 'SKIP';IDENT'END'); C( 49,'IF''TRUE''THEN'PROC('HEAP''BITS':=8R27654321077)'FI'); C( 50,'IF''FALSE''THEN''SKIP''ELSE' PROC('HEAP''BITS':=8R27654321077)'FI'); C( 51,(0!'SKIP','SKIP'! PROC('HEAP''BITS':=8R27654321077))); C( 52,'CASE'VU'IN'('INT'):'SKIP''OUT' 'O' IDENT'ESAC') ; CONTROLE ( 19); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'REF''BITS' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,[]'BOOL' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 53&'CASE'1'IN'R[2], []'BOOL'('SKIP'),'SKIP''ESAC'; 54&(VU!('INT') :[]'BOOL'('SKIP') ,('STRING'):R[2]); 55&(IDENT'EXIT' EE :[]'BOOL'('SKIP')); 56&('TRUE'!IDENT !:'FALSE' ![]'BOOL'('SKIP')); 57&(10!'SKIP',[]'BOOL'('SKIP') !:-1!'SKIP','SKIP'! R[2]); 58&('FALSE'![]'BOOL'('SKIP')! PROC('HEAP''BITS':=8R27654321077)); 59&(VU!('INT'X):[]'BOOL'('SKIP')! R[2]); CONTROLE( 7) ; MEM:=CTR ; CBC(1, 60,'CASE'1'IN'('REF''BITS' X = IDENT ; 1 ! X,'SKIP'), []'BOOL'('SKIP'),'SKIP''ESAC'[3]); CBC(1, 61,(VU!('INT') :[]'BOOL'('SKIP') ,('STRING'):R[2])[3]); CBC(1, 62,(DE'OF'DE'EXIT' EE :[]'BOOL'('SKIP'))[3]); CBC(1, 63,('TRUE'!PROC('HEAP''BITS':=8R27654321077) !:'FALSE' ![]'BOOL'('SKIP'))[3]); CBC(1, 64,(10!'SKIP',[]'BOOL'('SKIP') !:-1!'SKIP','SKIP'! IDENT)[3]); CBC(1, 65,('FALSE'![]'BOOL'('SKIP')! IDENT)[3]); CBC(1, 66,(VU!('INT'X):[]'BOOL'('SKIP')! 'O' IDENT)[3]); CONTROLE( 7) ; 'SKIP') ; # MODE A PRIORI : 'PROC''REF''PROC''BITS' # ('PROC''REF''PROC''BITS' IDENT ='REF''PROC''BITS' :(CTR+:=1; RP) ; 'STRUCT'('INT' A,'PROC''REF''PROC''BITS' DE) DE = (0,IDENT) , []'PROC''REF''PROC''BITS' R = (IDENT,'REF''PROC''BITS' :(CTR+:=1; RP) ) , 'PROC' PROC = ('PROC''REF''PROC''BITS' A)'PROC''REF''PROC''BITS' : A ; 'OP'('PROC''REF''PROC''BITS')'PROC''REF''PROC''BITS' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; []'BOOL' ID = R[2] , [BITS WIDTH]'BOOL'VAR:=R[2] , PG ; C( 67,ID) ; C( 68,VAR) ; PG:='REF''PROC''BITS' :(CTR+:=1; RP); C( 69,PG); 'PROC' P =[]'BOOL' : ('GOTO'E'EXIT' E:IDENT); C( 70,P); 'OP' + =('INT' X)[]'BOOL' : DE'OF'DE; C( 71,+1); C( 72,IDENT); C( 73,'CASE' 3 'IN''SKIP','SKIP', DE'OF'DE,'SKIP' 'ESAC'); C( 74,(VU!('STRING'): DE'OF'DE,('INT' X):'SKIP')); [][]'BOOL' RANG = (R[2], DE'OF'DE, 'O' IDENT); C( 75,RANG[1]); C( 76,RANG[2]); C( 77,RANG[3]); 'STRUCT'('STRUCT'([]'BOOL' CH1,CH2) CH1, []'BOOL' CH2) STRUCT = (( ('PROC''REF''PROC''BITS' X = IDENT ; 1 ! X,'SKIP'), ('GOTO'E'EXIT' E:IDENT)), 'O' IDENT); C( 78,CH1'OF'CH1'OF'STRUCT); C( 79,CH2'OF'CH1'OF'STRUCT); C( 80,CH2'OF'STRUCT); C( 81,'BEGIN' 'SKIP';R[2]'END'); C( 82,'IF''TRUE''THEN'IDENT'FI'); C( 83,'IF''FALSE''THEN''SKIP''ELSE' IDENT'FI'); C( 84,(0!'SKIP','SKIP'! 'REF''PROC''BITS' :(CTR+:=1; RP))); C( 85,'CASE'VU'IN'('INT'):'SKIP''OUT' 'REF''PROC''BITS' :(CTR+:=1; RP)'ESAC') ; CONTROLE ( 57); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'PROC''REF''PROC''BITS' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,[]'BOOL' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 86&'CASE'1'IN'DE'OF'DE, []'BOOL'('SKIP'),'SKIP''ESAC'; 87&(VU!('INT') :[]'BOOL'('SKIP') ,('STRING'):IDENT); 88&('REF''PROC''BITS' :(CTR+:=1; RP)'EXIT' EE :[]'BOOL'('SKIP')); 89&('TRUE'!DE'OF'DE !:'FALSE' ![]'BOOL'('SKIP')); 90&(10!'SKIP',[]'BOOL'('SKIP') !:-1!'SKIP','SKIP'! ('GOTO'E'EXIT' E:IDENT)); 91&('FALSE'![]'BOOL'('SKIP')! PROC('REF''PROC''BITS' :(CTR+:=1; RP))); 92&(VU!('INT'X):[]'BOOL'('SKIP')! DE'OF'DE); CONTROLE( 21) ; MEM:=CTR ; CBC(1, 93,'CASE'1'IN''O' IDENT, []'BOOL'('SKIP'),'SKIP''ESAC'[3]); CBC(1, 94,(VU!('INT') :[]'BOOL'('SKIP') ,('STRING'):IDENT)[3]); CBC(1, 95,(('GOTO'E'EXIT' E:IDENT)'EXIT' EE :[]'BOOL'('SKIP'))[3]); CBC(1, 96,('TRUE'!DE'OF'DE !:'FALSE' ![]'BOOL'('SKIP'))[3]); CBC(1, 97,(10!'SKIP',[]'BOOL'('SKIP') !:-1!'SKIP','SKIP'! PROC('REF''PROC''BITS' :(CTR+:=1; RP)))[3]); CBC(1, 98,('FALSE'![]'BOOL'('SKIP')! 'REF''PROC''BITS' :(CTR+:=1; RP))[3]); CBC(1, 99,(VU!('INT'X):[]'BOOL'('SKIP')! DE'OF'DE)[3]); CONTROLE( 21) ; 'SKIP') ; 'SKIP''END' ; 'BEGIN' # MODE FINAL : []'CHAR' # 'PROC' C #CONTROLE VALEUR RENDUE # =('INT' NUMTEST , []'CHAR' A)'VOID' : (CTRT:=NUMTEST ; 'LWB'A=1'AND''UPB'A=4'AND'A[1]=""""'AND'A[2]=""""'AND'A[3]="""" ! CTR+:=1 ! PRINT(("ER VALUE IN TEST",NUMTEST,NEWLINE))) ; 'PROC' CBC = ('INT' I , NUMTEST , 'CHAR' V)'VOID' : (CTRT:=NUMTEST ; I=2 'AND' V = """" ! CTR+:=1 ! PRINT(("ER WEAK CONTEXT",NUMTEST,NEWLINE))) ; 'PROC' RP := 'BYTES' : (CTR+:=1 ; CAT) ; # MODE A PRIORI : 'BYTES' # ('BYTES' IDENT =CAT ; 'STRUCT'('INT' A,'BYTES' DE) DE = (0,IDENT) , []'BYTES' R = (IDENT,CAT) , 'PROC' PROC = ('BYTES' A)'BYTES' : A ; 'OP'('BYTES')'BYTES' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; []'CHAR' ID = R[2] , [BYTES WIDTH]'CHAR'VAR:=PROC(CAT) , PG ; C( 100,ID) ; C( 101,VAR) ; PG:=('BYTES' X = IDENT ; 1 ! X,'SKIP'); C( 102,PG); 'PROC' P =[]'CHAR' : R[2]; C( 103,P); 'OP' + =('INT' X)[]'CHAR' : PROC(CAT); C( 104,+1); C( 105,'O' IDENT); C( 106,'CASE' 3 'IN''SKIP','SKIP', CAT,'SKIP' 'ESAC'); C( 107,(VU!('STRING'): DE'OF'DE,('INT' X):'SKIP')); [][]'CHAR' RANG = (('BYTES' X = IDENT ; 1 ! X,'SKIP'), IDENT, R[2]); C( 108,RANG[1]); C( 109,RANG[2]); C( 110,RANG[3]); 'STRUCT'('STRUCT'([]'CHAR' CH1,CH2) CH1, []'CHAR' CH2) STRUCT = (( ('BYTES' X = IDENT ; 1 ! X,'SKIP'), IDENT), ('GOTO'E'EXIT' E:IDENT)); C( 111,CH1'OF'CH1'OF'STRUCT); C( 112,CH2'OF'CH1'OF'STRUCT); C( 113,CH2'OF'STRUCT); C( 114,'BEGIN' 'SKIP';('BYTES' X = IDENT ; 1 ! X,'SKIP')'END'); C( 115,'IF''TRUE''THEN''O' IDENT'FI'); C( 116,'IF''FALSE''THEN''SKIP''ELSE' DE'OF'DE'FI'); C( 117,(0!'SKIP','SKIP'! ('BYTES' X = IDENT ; 1 ! X,'SKIP'))); C( 118,'CASE'VU'IN'('INT'):'SKIP''OUT' DE'OF'DE'ESAC') ; CONTROLE ( 19); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'BYTES' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,[]'CHAR' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 119&'CASE'1'IN'CAT, []'CHAR'(),'SKIP''ESAC'; 120&(VU!('INT') :[]'CHAR'() ,('STRING'):('GOTO'E'EXIT' E:IDENT)); 121&(R[2]'EXIT' EE :[]'CHAR'()); 122&('TRUE'!('GOTO'E'EXIT' E:IDENT) !:'FALSE' ![]'CHAR'()); 123&(10!'SKIP',[]'CHAR'() !:-1!'SKIP','SKIP'! IDENT); 124&('FALSE'![]'CHAR'()! PROC(CAT)); 125&(VU!('INT'X):[]'CHAR'()! PROC(CAT)); CONTROLE( 7) ; MEM:=CTR ; CBC(2, 126,'CASE'1'IN'PROC(CAT), []'CHAR'(),'SKIP''ESAC'[3]); CBC(2, 127,(VU!('INT') :[]'CHAR'() ,('STRING'):CAT)[3]); CBC(2, 128,(R[2]'EXIT' EE :[]'CHAR'())[3]); CBC(2, 129,('TRUE'!R[2] !:'FALSE' ![]'CHAR'())[3]); CBC(2, 130,(10!'SKIP',[]'CHAR'() !:-1!'SKIP','SKIP'! 'O' IDENT)[3]); CBC(2, 131,('FALSE'![]'CHAR'()! PROC(CAT))[3]); CBC(2, 132,(VU!('INT'X):[]'CHAR'()! R[2])[3]); CONTROLE( 7) ; 'SKIP') ; # MODE A PRIORI : 'REF''BYTES' # ('REF''BYTES' IDENT ='HEAP''BYTES':=CAT ; 'STRUCT'('INT' A,'REF''BYTES' DE) DE = (0,IDENT) , []'REF''BYTES' R = (IDENT,'HEAP''BYTES':=CAT) , 'PROC' PROC = ('REF''BYTES' A)'REF''BYTES' : A ; 'OP'('REF''BYTES')'REF''BYTES' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; []'CHAR' ID = 'O' IDENT , [BYTES WIDTH]'CHAR'VAR:=IDENT , PG ; C( 133,ID) ; C( 134,VAR) ; PG:=IDENT; C( 135,PG); 'PROC' P =[]'CHAR' : DE'OF'DE; C( 136,P); 'OP' + =('INT' X)[]'CHAR' : PROC('HEAP''BYTES':=CAT); C( 137,+1); C( 138,IDENT); C( 139,'CASE' 3 'IN''SKIP','SKIP', ('GOTO'E'EXIT' E:IDENT),'SKIP' 'ESAC'); C( 140,(VU!('STRING'): DE'OF'DE,('INT' X):'SKIP')); [][]'CHAR' RANG = (DE'OF'DE, 'O' IDENT, PROC('HEAP''BYTES':=CAT)); C( 141,RANG[1]); C( 142,RANG[2]); C( 143,RANG[3]); 'STRUCT'('STRUCT'([]'CHAR' CH1,CH2) CH1, []'CHAR' CH2) STRUCT = (( R[2], R[2]), PROC('HEAP''BYTES':=CAT)); C( 144,CH1'OF'CH1'OF'STRUCT); C( 145,CH2'OF'CH1'OF'STRUCT); C( 146,CH2'OF'STRUCT); C( 147,'BEGIN' 'SKIP';('REF''BYTES' X = IDENT ; 1 ! X,'SKIP')'END'); C( 148,'IF''TRUE''THEN''HEAP''BYTES':=CAT'FI'); C( 149,'IF''FALSE''THEN''SKIP''ELSE' R[2]'FI'); C( 150,(0!'SKIP','SKIP'! IDENT)); C( 151,'CASE'VU'IN'('INT'):'SKIP''OUT' 'HEAP''BYTES':=CAT'ESAC') ; CONTROLE ( 19); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'REF''BYTES' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,[]'CHAR' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 152&'CASE'1'IN'('REF''BYTES' X = IDENT ; 1 ! X,'SKIP'), []'CHAR'(),'SKIP''ESAC'; 153&(VU!('INT') :[]'CHAR'() ,('STRING'):DE'OF'DE); 154&(('REF''BYTES' X = IDENT ; 1 ! X,'SKIP')'EXIT' EE :[]'CHAR'()); 155&('TRUE'!DE'OF'DE !:'FALSE' ![]'CHAR'()); 156&(10!'SKIP',[]'CHAR'() !:-1!'SKIP','SKIP'! IDENT); 157&('FALSE'![]'CHAR'()! IDENT); 158&(VU!('INT'X):[]'CHAR'()! 'HEAP''BYTES':=CAT); CONTROLE( 7) ; MEM:=CTR ; CBC(2, 159,'CASE'1'IN'('REF''BYTES' X = IDENT ; 1 ! X,'SKIP'), []'CHAR'(),'SKIP''ESAC'[3]); CBC(2, 160,(VU!('INT') :[]'CHAR'() ,('STRING'):DE'OF'DE)[3]); CBC(2, 161,('O' IDENT'EXIT' EE :[]'CHAR'())[3]); CBC(2, 162,('TRUE'!IDENT !:'FALSE' ![]'CHAR'())[3]); CBC(2, 163,(10!'SKIP',[]'CHAR'() !:-1!'SKIP','SKIP'! ('GOTO'E'EXIT' E:IDENT))[3]); CBC(2, 164,('FALSE'![]'CHAR'()! IDENT)[3]); CBC(2, 165,(VU!('INT'X):[]'CHAR'()! 'HEAP''BYTES':=CAT)[3]); CONTROLE( 7) ; 'SKIP') ; # MODE A PRIORI : 'PROC''REF''PROC''BYTES' # ('PROC''REF''PROC''BYTES' IDENT ='REF''PROC''BYTES' :(CTR+:=1; RP) ; 'STRUCT'('INT' A,'PROC''REF''PROC''BYTES' DE) DE = (0,IDENT) , []'PROC''REF''PROC''BYTES' R = (IDENT,'REF''PROC''BYTES' :(CTR+:=1; RP)) , 'PROC' PROC = ('PROC''REF''PROC''BYTES' A)'PROC''REF''PROC''BYTES' : A ; 'OP'('PROC''REF''PROC''BYTES')'PROC''REF''PROC''BYTES' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; []'CHAR' ID = 'O' IDENT , [BYTES WIDTH]'CHAR'VAR:=('PROC''REF''PROC''BYTES' X = IDENT ; 1 ! X,'SKIP') , PG ; C( 166,ID) ; C( 167,VAR) ; PG:='REF''PROC''BYTES' :(CTR+:=1; RP); C( 168,PG); 'PROC' P =[]'CHAR' : ('PROC''REF''PROC''BYTES' X = IDENT ; 1 ! X,'SKIP'); C( 169,P); 'OP' + =('INT' X)[]'CHAR' : IDENT; C( 170,+1); C( 171,('GOTO'E'EXIT' E:IDENT)); C( 172,'CASE' 3 'IN''SKIP','SKIP', ('PROC''REF''PROC''BYTES' X = IDENT ; 1 ! X,'SKIP'),'SKIP' 'ESAC'); C( 173,(VU!('STRING'): R[2],('INT' X):'SKIP')); [][]'CHAR' RANG = (('GOTO'E'EXIT' E:IDENT), 'O' IDENT, DE'OF'DE); C( 174,RANG[1]); C( 175,RANG[2]); C( 176,RANG[3]); 'STRUCT'('STRUCT'([]'CHAR' CH1,CH2) CH1, []'CHAR' CH2) STRUCT = (( IDENT, R[2]), IDENT); C( 177,CH1'OF'CH1'OF'STRUCT); C( 178,CH2'OF'CH1'OF'STRUCT); C( 179,CH2'OF'STRUCT); C( 180,'BEGIN' 'SKIP';R[2]'END'); C( 181,'IF''TRUE''THEN'IDENT'FI'); C( 182,'IF''FALSE''THEN''SKIP''ELSE' PROC('REF''PROC''BYTES' :(CTR+:=1; RP))'FI'); C( 183,(0!'SKIP','SKIP'! IDENT)); C( 184,'CASE'VU'IN'('INT'):'SKIP''OUT' ('PROC''REF''PROC''BYTES' X = IDENT ; 1 ! X,'SKIP')'ESAC') ; CONTROLE ( 57); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'PROC''REF''PROC''BYTES' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,[]'CHAR' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 185&'CASE'1'IN'('PROC''REF''PROC''BYTES' X = IDENT ; 1 ! X,'SKIP'), []'CHAR'(),'SKIP''ESAC'; 186&(VU!('INT') :[]'CHAR'() ,('STRING'):DE'OF'DE); 187&(IDENT'EXIT' EE :[]'CHAR'()); 188&('TRUE'!'REF''PROC''BYTES' :(CTR+:=1; RP) !:'FALSE' ![]'CHAR'()); 189&(10!'SKIP',[]'CHAR'() !:-1!'SKIP','SKIP'! 'REF''PROC''BYTES' :(CTR+:=1; RP)); 190&('FALSE'![]'CHAR'()! DE'OF'DE); 191&(VU!('INT'X):[]'CHAR'()! 'O' IDENT); CONTROLE( 21) ; MEM:=CTR ; CBC(2, 192,'CASE'1'IN'DE'OF'DE, []'CHAR'(),'SKIP''ESAC'[3]); CBC(2, 193,(VU!('INT') :[]'CHAR'() ,('STRING'):'REF''PROC''BYTES' :(CTR+:=1; RP))[3]); CBC(2, 194,(('PROC''REF''PROC''BYTES' X = IDENT ; 1 ! X,'SKIP')'EXIT' EE :[]'CHAR'())[3]); CBC(2, 195,('TRUE'!('PROC''REF''PROC''BYTES' X = IDENT ; 1 ! X,'SKIP') !:'FALSE' ![]'CHAR'())[3]); CBC(2, 196,(10!'SKIP',[]'CHAR'() !:-1!'SKIP','SKIP'! ('GOTO'E'EXIT' E:IDENT))[3]); CBC(2, 197,('FALSE'![]'CHAR'()! DE'OF'DE)[3]); CBC(2, 198,(VU!('INT'X):[]'CHAR'()! PROC('REF''PROC''BYTES' :(CTR+:=1; RP)))[3]); CONTROLE( 21) ; 'SKIP') ; 'SKIP''END' ; 'BEGIN' # MODE FINAL : 'STRING' # 'PROC' C #CONTROLE VALEUR RENDUE # =('INT' NUMTEST , 'STRING' A)'VOID' : (CTRT:=NUMTEST ; 'LWB'A=1'AND''UPB'A=4'AND'A[1]="'"'ET' A[2]="C"'AND'A[3]="O"'AND'A[4]="'" ! CTR+:=1 ! PRINT(("ER VALUE IN TEST",NUMTEST,NEWLINE))) ; 'PROC' CBC = ('INT' I , NUMTEST , 'CHAR' V)'VOID' : (CTRT:=NUMTEST ; I=3 'AND' V = "O" ! CTR+:=1 ! PRINT(("ER WEAK CONTEXT",NUMTEST,NEWLINE))) ; 'PROC' RP := 'BYTES' : (CTR+:=1 ; CAT4) ; # MODE A PRIORI : 'BYTES' # ('BYTES' IDENT =CAT4 ; 'STRUCT'('INT' A,'BYTES' DE) DE = (0,IDENT) , []'BYTES' R = (IDENT,CAT4) , 'PROC' PROC = ('BYTES' A)'BYTES' : A ; 'OP'('BYTES')'BYTES' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; 'STRING' ID = ('BYTES' X = IDENT ; 1 ! X,'SKIP') , 'STRING'VAR:=DE'OF'DE , PG ; C( 199,ID) ; C( 200,VAR) ; PG:=PROC(CAT4); C( 201,PG); 'PROC' P ='STRING' : CAT4; C( 202,P); 'OP' + =('INT' X)'STRING' : R[2]; C( 203,+1); C( 204,'O' IDENT); C( 205,'CASE' 3 'IN''SKIP','SKIP', ('BYTES' X = IDENT ; 1 ! X,'SKIP'),'SKIP' 'ESAC'); C( 206,(VU!('STRING'): 'O' IDENT,('INT' X):'SKIP')); []'STRING' RANG = ('O' IDENT, DE'OF'DE, ('BYTES' X = IDENT ; 1 ! X,'SKIP')); C( 207,RANG[1]); C( 208,RANG[2]); C( 209,RANG[3]); 'STRUCT'('STRUCT'('STRING' CH1,CH2) CH1, 'STRING' CH2) STRUCT = (( CAT4, DE'OF'DE), PROC(CAT4)); C( 210,CH1'OF'CH1'OF'STRUCT); C( 211,CH2'OF'CH1'OF'STRUCT); C( 212,CH2'OF'STRUCT); C( 213,'BEGIN' 'SKIP';('BYTES' X = IDENT ; 1 ! X,'SKIP')'END'); C( 214,'IF''TRUE''THEN''O' IDENT'FI'); C( 215,'IF''FALSE''THEN''SKIP''ELSE' 'O' IDENT'FI'); C( 216,(0!'SKIP','SKIP'! 'O' IDENT)); C( 217,'CASE'VU'IN'('INT'):'SKIP''OUT' CAT4'ESAC') ; CONTROLE ( 19); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'BYTES' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,'STRING' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 218&'CASE'1'IN'IDENT, "",'SKIP''ESAC'; 219&(VU!('INT') :"" ,('STRING'):('GOTO'E'EXIT' E:IDENT)); 220&(IDENT'EXIT' EE :""); 221&('TRUE'!DE'OF'DE !:'FALSE' !""); 222&(10!'SKIP',"" !:-1!'SKIP','SKIP'! PROC(CAT4)); 223&('FALSE'!""! IDENT); 224&(VU!('INT'X):""! PROC(CAT4)); CONTROLE( 7) ; MEM:=CTR ; CBC(3, 225,'CASE'1'IN''O' IDENT, "",'SKIP''ESAC'[3]); CBC(3, 226,(VU!('INT') :"" ,('STRING'):DE'OF'DE)[3]); CBC(3, 227,('O' IDENT'EXIT' EE :"")[3]); CBC(3, 228,('TRUE'!('GOTO'E'EXIT' E:IDENT) !:'FALSE' !"")[3]); CBC(3, 229,(10!'SKIP',"" !:-1!'SKIP','SKIP'! ('BYTES' X = IDENT ; 1 ! X,'SKIP'))[3]); CBC(3, 230,('FALSE'!""! R[2])[3]); CBC(3, 231,(VU!('INT'X):""! PROC(CAT4))[3]); CONTROLE( 7) ; 'SKIP') ; # MODE A PRIORI : 'REF''BYTES' # ('REF''BYTES' IDENT ='HEAP''BYTES':=CAT4 ; 'STRUCT'('INT' A,'REF''BYTES' DE) DE = (0,IDENT) , []'REF''BYTES' R = (IDENT,'HEAP''BYTES':=CAT4) , 'PROC' PROC = ('REF''BYTES' A)'REF''BYTES' : A ; 'OP'('REF''BYTES')'REF''BYTES' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; 'STRING' ID = PROC('HEAP''BYTES':=CAT4) , 'STRING'VAR:=DE'OF'DE , PG ; C( 232,ID) ; C( 233,VAR) ; PG:='O' IDENT; C( 234,PG); 'PROC' P ='STRING' : R[2]; C( 235,P); 'OP' + =('INT' X)'STRING' : ('REF''BYTES' X = IDENT ; 1 ! X,'SKIP'); C( 236,+1); C( 237,'HEAP''BYTES':=CAT4); C( 238,'CASE' 3 'IN''SKIP','SKIP', 'HEAP''BYTES':=CAT4,'SKIP' 'ESAC'); C( 239,(VU!('STRING'): 'O' IDENT,('INT' X):'SKIP')); []'STRING' RANG = (('REF''BYTES' X = IDENT ; 1 ! X,'SKIP'), ('GOTO'E'EXIT' E:IDENT), 'O' IDENT); C( 240,RANG[1]); C( 241,RANG[2]); C( 242,RANG[3]); 'STRUCT'('STRUCT'('STRING' CH1,CH2) CH1, 'STRING' CH2) STRUCT = (( PROC('HEAP''BYTES':=CAT4), IDENT), 'HEAP''BYTES':=CAT4); C( 243,CH1'OF'CH1'OF'STRUCT); C( 244,CH2'OF'CH1'OF'STRUCT); C( 245,CH2'OF'STRUCT); C( 246,'BEGIN' 'SKIP';('GOTO'E'EXIT' E:IDENT)'END'); C( 247,'IF''TRUE''THEN'PROC('HEAP''BYTES':=CAT4)'FI'); C( 248,'IF''FALSE''THEN''SKIP''ELSE' R[2]'FI'); C( 249,(0!'SKIP','SKIP'! 'HEAP''BYTES':=CAT4)); C( 250,'CASE'VU'IN'('INT'):'SKIP''OUT' DE'OF'DE'ESAC') ; CONTROLE ( 19); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'REF''BYTES' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,'STRING' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 251&'CASE'1'IN'('GOTO'E'EXIT' E:IDENT), "",'SKIP''ESAC'; 252&(VU!('INT') :"" ,('STRING'):IDENT); 253&(PROC('HEAP''BYTES':=CAT4)'EXIT' EE :""); 254&('TRUE'!'HEAP''BYTES':=CAT4 !:'FALSE' !""); 255&(10!'SKIP',"" !:-1!'SKIP','SKIP'! PROC('HEAP''BYTES':=CAT4)); 256&('FALSE'!""! DE'OF'DE); 257&(VU!('INT'X):""! DE'OF'DE); CONTROLE( 7) ; MEM:=CTR ; CBC(3, 258,'CASE'1'IN'R[2], "",'SKIP''ESAC'[3]); CBC(3, 259,(VU!('INT') :"" ,('STRING'):IDENT)[3]); CBC(3, 260,(('REF''BYTES' X = IDENT ; 1 ! X,'SKIP')'EXIT' EE :"")[3]); CBC(3, 261,('TRUE'!'O' IDENT !:'FALSE' !"")[3]); CBC(3, 262,(10!'SKIP',"" !:-1!'SKIP','SKIP'! ('REF''BYTES' X = IDENT ; 1 ! X,'SKIP'))[3]); CBC(3, 263,('FALSE'!""! DE'OF'DE)[3]); CBC(3, 264,(VU!('INT'X):""! PROC('HEAP''BYTES':=CAT4))[3]); CONTROLE( 7) ; 'SKIP') ; # MODE A PRIORI : 'PROC''REF''PROC''BYTES' # ('PROC''REF''PROC''BYTES' IDENT ='REF''PROC''BYTES' :(CTR+:=1; RP) ; 'STRUCT'('INT' A,'PROC''REF''PROC''BYTES' DE) DE = (0,IDENT) , []'PROC''REF''PROC''BYTES' R = (IDENT,'REF''PROC''BYTES' :(CTR+:=1; RP)) , 'PROC' PROC = ('PROC''REF''PROC''BYTES' A)'PROC''REF''PROC''BYTES' : A ; 'OP'('PROC''REF''PROC''BYTES')'PROC''REF''PROC''BYTES' 'O' = PROC ; # CONTEXTES # MEM:=CTR ; 'STRING' ID = R[2] , 'STRING'VAR:='REF''PROC''BYTES' :(CTR+:=1; RP) , PG ; C( 265,ID) ; C( 266,VAR) ; PG:=IDENT; C( 267,PG); 'PROC' P ='STRING' : DE'OF'DE; C( 268,P); 'OP' + =('INT' X)'STRING' : R[2]; C( 269,+1); C( 270,R[2]); C( 271,'CASE' 3 'IN''SKIP','SKIP', DE'OF'DE,'SKIP' 'ESAC'); C( 272,(VU!('STRING'): IDENT,('INT' X):'SKIP')); []'STRING' RANG = ('O' IDENT, 'REF''PROC''BYTES' :(CTR+:=1; RP), IDENT); C( 273,RANG[1]); C( 274,RANG[2]); C( 275,RANG[3]); 'STRUCT'('STRUCT'('STRING' CH1,CH2) CH1, 'STRING' CH2) STRUCT = (( 'REF''PROC''BYTES' :(CTR+:=1; RP), R[2]), ('PROC''REF''PROC''BYTES' X = IDENT ; 1 ! X,'SKIP')); C( 276,CH1'OF'CH1'OF'STRUCT); C( 277,CH2'OF'CH1'OF'STRUCT); C( 278,CH2'OF'STRUCT); C( 279,'BEGIN' 'SKIP';IDENT'END'); C( 280,'IF''TRUE''THEN''O' IDENT'FI'); C( 281,'IF''FALSE''THEN''SKIP''ELSE' R[2]'FI'); C( 282,(0!'SKIP','SKIP'! R[2])); C( 283,'CASE'VU'IN'('INT'):'SKIP''OUT' R[2]'ESAC') ; CONTROLE ( 57); # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' X,'PROC''REF''PROC''BYTES' A)'VOID' : PRINT(("ER.OP &",CTRT+1,NEWLINE)) , & =('INT' NUMTEST,'STRING' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 284&'CASE'1'IN'PROC('REF''PROC''BYTES' :(CTR+:=1; RP)), "",'SKIP''ESAC'; 285&(VU!('INT') :"" ,('STRING'):DE'OF'DE); 286&(('GOTO'E'EXIT' E:IDENT)'EXIT' EE :""); 287&('TRUE'!('GOTO'E'EXIT' E:IDENT) !:'FALSE' !""); 288&(10!'SKIP',"" !:-1!'SKIP','SKIP'! 'REF''PROC''BYTES' :(CTR+:=1; RP)); 289&('FALSE'!""! DE'OF'DE); 290&(VU!('INT'X):""! 'REF''PROC''BYTES' :(CTR+:=1; RP)); CONTROLE( 21) ; MEM:=CTR ; CBC(3, 291,'CASE'1'IN'R[2], "",'SKIP''ESAC'[3]); CBC(3, 292,(VU!('INT') :"" ,('STRING'):IDENT)[3]); CBC(3, 293,(DE'OF'DE'EXIT' EE :"")[3]); CBC(3, 294,('TRUE'!PROC('REF''PROC''BYTES' :(CTR+:=1; RP)) !:'FALSE' !"")[3]); CBC(3, 295,(10!'SKIP',"" !:-1!'SKIP','SKIP'! ('GOTO'E'EXIT' E:IDENT))[3]); CBC(3, 296,('FALSE'!""! PROC('REF''PROC''BYTES' :(CTR+:=1; RP)))[3]); CBC(3, 297,(VU!('INT'X):""! ('GOTO'E'EXIT' E:IDENT))[3]); CONTROLE( 21) ; 'SKIP') ; 'SKIP''END' ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R65C # (PRINT(("WIDENING OF SOME INTEGERS",NEWLINE)) ;'INT' VF = 258 ; 'INT' CTR:=0 , CT:=0 ; 'REAL' ERC:=0 , SUPER:=0 , ER ; 'PROC' E = ('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))) ; 'OP' + = ('INT' A,B)'REAL' : ('REAL' X=A,Y=B ; X+Y) , - = ('INT' A,B)'REAL' : ('REAL' X=A,Y=B ; X-Y) , * = ('INT' A,B)'REAL' : ('REAL' X=A,Y=B ; X*Y) ; 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 REAL ",(CTR=VF !"OK"!"ERROR"),NEWLINE, "MEAN REL.DIFFER. : ",ERC/CT,NEWLINE,"MAX REL DIFF : ",SUPER))) ###### # R66A # (PRINT(("COERCION ROWING YIELDING ROWS",NEWLINE)) ; 'INT' VF = (19+2*7)*6 ; 'INT' CTR:=0,CTRT,MEM ; 'PROC' CONTROLE = ('INT' INCR)'VOID' : (CTR/=MEM+INCR ! PRINT(("COUNT ERR IN TEST",CTRT,CTR,MEM+INCR,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 # 'UNION'('INT','STRING') VU:= "VIDE" ,VE:=28 ; 'PRIO' ><=1; 'INT' RE:=17 , 'HEAP' 'REAL' RR:=MAXREAL , 'HEAP'[5]'INT' RTE:=(-2,-1,0,1,2) ; 'REF'[]'INT' RRTE:=RTE ; 'MODE' 'M3R' = 'REF''REF''REF''UNION'('INT','STRING') ; 'REF''REF''UNION'('INT','STRING')RRRU:= 'LOC''REF''UNION'('INT','STRING'):=VE ; 'PROC''REF''INT' RPRE , 'PROC' RP3R:='M3R' : (CTR+:=1 ; RRRU) , 'MODE' 'TU' = [3]'UNION'('INT','STRING') ; 'HEAP''TU' RTU:=("",VE,"3") ; 'BEGIN' # MODE FINAL : # 'MODE' 'M' = [1]'REF''INT' , # MODE INITIAL : # 'MA' = 'REF''INT' ; 'PROC' C =('INT' NUMTEST , 'M' A)'VOID' : (CTRT:=NUMTEST;K:=1; 'LWB'A=1&'UPB'A=1&(A[1]:=:RE)&A[1]=17 ! CTR+:=1 ! PRINT(("ER.VALUE IN",NUMTEST,NEWLINE))) ; 'MA' IDENT = RE ; 'OP' >< = ('INT' A,'MA' B)'MA' : (A!'SKIP',B) , 'STRUCT'('STRING' OF,'MA' DE)DE = ("",IDENT) , []'MA' R = IDENT , 'PROC' PROC = ('MA' A)'MA' : A ; # CONTEXTES # MEM:=CTR ; 'M' ID = RE , 'M' VAR:=IDENT , PG ; C( 1,ID) ; C( 2,VAR) ; PG:=PROC(IDENT); C( 3,PG); 'PROC' P = 'M' : R[1]; C( 4,P); 'OP' + =('INT' X) 'M' : R[1]; C( 5,+1); C( 6,DE'OF'DE); C( 7,'CASE' 3 'IN''SKIP','SKIP', RE,'SKIP' 'ESAC'); C( 8,(VU!('STRING'):'CASE'VU'IN'('STRING'):IDENT'ESAC' ,('INT' X):'SKIP')); []'M' RANG = (IDENT ,('FALSE'!'SKIP'!IDENT) ,RE); C( 9,RANG[1]); C( 10,RANG[2]); C( 11,RANG[3]); 'STRUCT'('STRUCT'('M' CH1,CH2) CH1,'M' CH2) STRUCT = (( ('SKIP';IDENT'EXIT'E:'SKIP'), IDENT), ('SKIP';IDENT'EXIT'E:'SKIP')); C( 12,CH1'OF'CH1'OF'STRUCT); C( 13,CH2'OF'CH1'OF'STRUCT); C( 14,CH2'OF'STRUCT); C( 15,'BEGIN' 'SKIP'; DE'OF'DE'END'); C( 16,'IF''TRUE''THEN' R[1]'FI'); C( 17,'IF''FALSE''THEN''SKIP''ELSE' PROC(IDENT)'FI'); C( 18,(0!'SKIP','SKIP'! IDENT)); C( 19,'CASE'VU'IN'('INT'):'SKIP''OUT' ('FALSE'!'SKIP'!IDENT)'ESAC') ; CONTROLE(19*1) ; # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' NUMTEST,'MA' A)'VOID': PRINT(("ER.OP.&",NUMTEST,NEWLINE)) , & = ('INT' NUMTEST,'M' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 20&'CASE'1'IN''MA'(2!'SKIP',IDENT) ,'M'('SKIP'),'SKIP''ESAC'; 21&(VU!('INT') :'M'('SKIP'),('STRING'): ('SKIP';IDENT'EXIT'E:'SKIP')); 22&(('SKIP';IDENT'EXIT'E:'SKIP')'EXIT' EE :'M'('SKIP')); 23&('TRUE'!PROC(IDENT) !:'FALSE' !'M'('SKIP')); 24&(10!'SKIP','M'('SKIP') !:-1!'SKIP','SKIP'! PROC(IDENT)); 25&('FALSE'!'M'('SKIP')! PROC(IDENT)); 26&(VU!('INT'X):'M'('SKIP')! DE'OF'DE); CONTROLE(7*1) ; MEM:=CTR ; C( 27,'CASE'1'IN'DE'OF'DE ,'M'('SKIP'),'SKIP''ESAC'[]) ; C( 28,(VU!('INT') :'M'('SKIP'),('STRING'): 2>< = ('INT' A,'MA' B)'MA' : (A!'SKIP',B) , 'STRUCT'('STRING' OF,'MA' DE)DE = ("",IDENT) , []'MA' R = IDENT , 'PROC' PROC = ('MA' A)'MA' : A ; # CONTEXTES # MEM:=CTR ; 'M' ID = ('SKIP';IDENT'EXIT'E:'SKIP') , 'M' VAR:='LOC''REF''TU':=RTU , PG ; C( 34,ID) ; C( 35,VAR) ; PG:='MA'(2!'SKIP',IDENT); C( 36,PG); 'PROC' P = 'M' : 'MA'(2!'SKIP',IDENT); C( 37,P); 'OP' + =('INT' X) 'M' : R[1]; C( 38,+1); C( 39,PROC(IDENT)); C( 40,'CASE' 3 'IN''SKIP','SKIP', DE'OF'DE,'SKIP' 'ESAC'); C( 41,(VU!('STRING'):('SKIP';IDENT'EXIT'E:'SKIP') ,('INT' X):'SKIP')); []'M' RANG = (R[1] ,IDENT ,'MA'(2!'SKIP',IDENT)); C( 42,RANG[1]); C( 43,RANG[2]); C( 44,RANG[3]); 'STRUCT'('STRUCT'('M' CH1,CH2) CH1,'M' CH2) STRUCT = (( ('FALSE'!'SKIP'!IDENT), 'MA'(2!'SKIP',IDENT)), 'MA'(2!'SKIP',IDENT)); C( 45,CH1'OF'CH1'OF'STRUCT); C( 46,CH2'OF'CH1'OF'STRUCT); C( 47,CH2'OF'STRUCT); C( 48,'BEGIN' 'SKIP'; 2>< = ('INT' A,'MA' B)'MA' : (A!'SKIP',B) , 'STRUCT'('STRING' OF,'MA' DE)DE = ("",IDENT) , []'MA' R = IDENT , 'PROC' PROC = ('MA' A)'MA' : A ; # CONTEXTES # MEM:=CTR ; 'M' ID = R[1] , 'M' VAR:=R[1] , PG ; C( 67,ID) ; C( 68,VAR) ; PG:=RR; C( 69,PG); 'PROC' P = 'M' : 'MA'(2!'SKIP',IDENT); C( 70,P); 'OP' + =('INT' X) 'M' : 2>< = ('INT' A,'MA' B)'MA' : (A!'SKIP',B) , 'STRUCT'('STRING' OF,'MA' DE)DE = ("",IDENT) , []'MA' R = IDENT , 'PROC' PROC = ('MA' A)'MA' : A ; # CONTEXTES # MEM:=CTR ; 'M' ID = R[1] , 'M' VAR:=PROC(IDENT) , PG ; C( 100,ID) ; C( 101,VAR) ; PG:='CASE'VU'IN'('STRING'):IDENT'ESAC'; C( 102,PG); 'PROC' P = 'M' : R[1]; C( 103,P); 'OP' + =('INT' X) 'M' : PROC(IDENT); C( 104,+1); C( 105,('SKIP';IDENT'EXIT'E:'SKIP')); C( 106,'CASE' 3 'IN''SKIP','SKIP', RPRE:='REF''INT' : (CTR+:=1;RE),'SKIP' 'ESAC'); C( 107,(VU!('STRING'):2>< = ('INT' A,'MA' B)'MA' : (A!'SKIP',B) , 'STRUCT'('STRING' OF,'MA' DE)DE = ("",IDENT) , []'MA' R = IDENT , 'PROC' PROC = ('MA' A)'MA' : A ; # CONTEXTES # MEM:=CTR ; 'M' ID = ('FALSE'!'SKIP'!IDENT) , 'M' VAR:=IDENT , PG ; C( 133,ID) ; C( 134,VAR) ; PG:=2><=1; 'INT' RE:=17 , 'HEAP' 'REAL' RR:=MAXREAL , 'HEAP'[5]'INT' RTE:=(-2,-1,0,1,2) ; 'REF'[]'INT' RRTE:=RTE ; 'MODE' 'TU' = [3]'UNION'('INT','STRING') ; 'HEAP''TU' RTU:=("",VE,"3") ; 'MODE' 'M3R' = 'REF''REF''REF''TU' ; 'REF''REF''TU' RRRU := 'LOC''REF''TU':= RTU ; 'PROC''REF''INT' RPRE , 'PROC' RP3R:='M3R' : (CTR+:=1 ; RRRU) ; 'BEGIN' # MODE FINAL : # 'MODE' 'M' = 'REF'[]'UNION'('STRING','INT') , # MODE INITIAL : # 'MA' = 'REF''UNION'('INT','STRING') ; 'PROC' C =('INT' NUMTEST , 'M' A)'VOID' : (CTRT:=NUMTEST;K:=1; 'UPB'A=1&(A[1]!('STRING'A):A="VIDE") ! CTR+:=1 ! PRINT(("ER.VALUE IN",NUMTEST,NEWLINE))) ; 'MA' IDENT = VU ; 'OP' >< = ('INT' A,'MA' B)'MA' : (A!'SKIP',B) , 'STRUCT'('STRING' OF,'MA' DE)DE = ("",IDENT) , []'MA' R = IDENT , 'PROC' PROC = ('MA' A)'MA' : A ; # CONTEXTES # MEM:=CTR ; 'M' ID = VU , 'M' VAR:=IDENT , PG ; C( 1,ID) ; C( 2,VAR) ; PG:=PROC(IDENT); C( 3,PG); 'PROC' P = 'M' : R[1]; C( 4,P); 'OP' + =('INT' X) 'M' : R[1]; C( 5,+1); C( 6,DE'OF'DE); C( 7,'CASE' 3 'IN''SKIP','SKIP', VU,'SKIP' 'ESAC'); C( 8,(VU!('STRING'):'CASE'VU'IN'('STRING'):IDENT'ESAC' ,('INT' X):'SKIP')); []'M' RANG = (IDENT ,('FALSE'!'SKIP'!IDENT) ,VU); C( 9,RANG[1]); C( 10,RANG[2]); C( 11,RANG[3]); 'STRUCT'('STRUCT'('M' CH1,CH2) CH1,'M' CH2) STRUCT = (( ('SKIP';IDENT'EXIT'E:'SKIP'), IDENT), ('SKIP';IDENT'EXIT'E:'SKIP')); C( 12,CH1'OF'CH1'OF'STRUCT); C( 13,CH2'OF'CH1'OF'STRUCT); C( 14,CH2'OF'STRUCT); C( 15,'BEGIN' 'SKIP'; DE'OF'DE'END'); C( 16,'IF''TRUE''THEN' R[1]'FI'); C( 17,'IF''FALSE''THEN''SKIP''ELSE' PROC(IDENT)'FI'); C( 18,(0!'SKIP','SKIP'! IDENT)); C( 19,'CASE'VU'IN'('INT'):'SKIP''OUT' ('FALSE'!'SKIP'!IDENT)'ESAC') ; 'M'('NIL') :/=: ('MA'(2!'SKIP',IDENT)) ; CONTROLE(19*1+0) ; # CONTEXTES FORTS PAR EQUILIBRAGE # 'OP' & =('INT' NUMTEST,'MA' A)'VOID': PRINT(("ER.OP.&",NUMTEST,NEWLINE)) , & = ('INT' NUMTEST,'M' A)'VOID' : C(NUMTEST,A) ; MEM:=CTR ; 20&'CASE'1'IN'('SKIP';IDENT'EXIT'E:'SKIP') ,'M'('SKIP'),'SKIP''ESAC'; 21&(VU!('INT') :'M'('SKIP'),('STRING'): ('SKIP';IDENT'EXIT'E:'SKIP')); 22&(PROC(IDENT)'EXIT' EE :'M'('SKIP')); 23&('TRUE'!PROC(IDENT) !:'FALSE' !'M'('SKIP')); 24&(10!'SKIP','M'('SKIP') !:-1!'SKIP','SKIP'! PROC(IDENT)); 25&('FALSE'!'M'('SKIP')! DE'OF'DE); 26&(VU!('INT'X):'M'('SKIP')! DE'OF'DE); CONTROLE(7*1) ; MEM:=CTR ; C( 27,'CASE'1'IN'2>< = ('INT' A,'MA' B)'MA' : (A!'SKIP',B) , 'STRUCT'('STRING' OF,'MA' DE)DE = ("",IDENT) , []'MA' R = IDENT , 'PROC' PROC = ('MA' A)'MA' : A ; # CONTEXTES # MEM:=CTR ; 'M' ID = ('SKIP';IDENT'EXIT'E:'SKIP') , 'M' VAR:=('SKIP';IDENT'EXIT'E:'SKIP') , PG ; C( 41,ID) ; C( 42,VAR) ; PG:=('SKIP';IDENT'EXIT'E:'SKIP'); C( 43,PG); 'PROC' P = 'M' : ('SKIP';IDENT'EXIT'E:'SKIP'); C( 44,P); 'OP' + =('INT' X) 'M' : R[1]; C( 45,+1); C( 46,R[1]); C( 47,'CASE' 3 'IN''SKIP','SKIP', 2>< = ('INT' A,'MA' B)'MA' : (A!'SKIP',B) , 'STRUCT'('STRING' OF,'MA' DE)DE = ("",IDENT) , []'MA' R = IDENT , 'PROC' PROC = ('MA' A)'MA' : A ; # CONTEXTES # MEM:=CTR ; 'M' ID = ('SKIP';IDENT'EXIT'E:'SKIP') , 'M' VAR:=RTU , PG ; C( 81,ID) ; C( 82,VAR) ; PG:=DE'OF'DE; C( 83,PG); 'PROC' P = 'M' : R[1]; C( 84,P); 'OP' + =('INT' X) 'M' : PROC(IDENT); C( 85,+1); C( 86,'CASE'VU'IN'('STRING'):IDENT'ESAC'); C( 87,'CASE' 3 'IN''SKIP','SKIP', R[1],'SKIP' 'ESAC'); C( 88,(VU!('STRING'):PROC(IDENT) ,('INT' X):'SKIP')); []'M' RANG = (('SKIP';IDENT'EXIT'E:'SKIP') ,RTU ,2>< = ('INT' A,'MA' B)'MA' : (A!'SKIP',B) , 'STRUCT'('STRING' OF,'MA' DE)DE = ("",IDENT) , []'MA' R = IDENT , 'PROC' PROC = ('MA' A)'MA' : A ; # CONTEXTES # MEM:=CTR ; 'M' ID = R[1] , 'M' VAR:=PROC(IDENT) , PG ; C( 121,ID) ; C( 122,VAR) ; PG:='CASE'VU'IN'('STRING'):IDENT'ESAC'; C( 123,PG); 'PROC' P = 'M' : 'REF''PROC''M3R':(CTR+:=1;RP3R); C( 124,P); 'OP' + =('INT' X) 'M' : R[1]; C( 125,+1); C( 126,2>0 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(26)); (CTRT:= 4 ; MEM:=CTR ; K:=14 ; 'WHILE''REF''INT' XX; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(26)); (CTRT:= 5 ; MEM:=CTR ; K:=14 ; 'WHILE'XX:='LOC''INT'; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(26)); (CTRT:= 6 ; MEM:=CTR ; K:=14 ; 'WHILE'XX:='LOC''INT'; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(26)); (CTRT:= 7 ; MEM:=CTR ; K:=14 ; 'TO' VJQA 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(15)); (CTRT:= 8 ; MEM:=CTR ; K:=14 ; 'TO' VJQA 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(15)); (CTRT:= 9 ; MEM:=CTR ; K:=14 ; 'TO' VJQA 'WHILE''REF''INT' XX; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(24)); (CTRT:= 10 ; MEM:=CTR ; K:=14 ; 'TO' VJQA 'WHILE''REF''INT' XX; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(24)); (CTRT:= 11 ; MEM:=CTR ; K:=14 ; 'TO' VJQA 'WHILE'XX:='LOC''INT'; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(24)); (CTRT:= 12 ; MEM:=CTR ; K:=14 ; 'TO' VJQA 'WHILE'XX:='LOC''INT'; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(24)); (CTRT:= 13 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=1-INCR ; 'FOR' IND 'DO'((VI+:=INCR)=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(14)); (CTRT:= 14 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=1-INCR ; 'FOR' IND 'DO'((VI+:=INCR)=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(14)); (CTRT:= 15 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=1-INCR ; 'FOR' IND 'WHILE''REF''INT' XX; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(26)); (CTRT:= 16 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=1-INCR ; 'FOR' IND 'WHILE''REF''INT' XX; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(26)); (CTRT:= 17 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=1-INCR ; 'FOR' IND 'WHILE'XX:='LOC''INT'; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(26)); (CTRT:= 18 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=1-INCR ; 'FOR' IND 'WHILE'XX:='LOC''INT'; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(26)); (CTRT:= 19 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=1-INCR ; 'FOR' IND 'TO' VJQA 'DO'((VI+:=INCR)=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(15)); (CTRT:= 20 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=1-INCR ; 'FOR' IND 'TO' VJQA 'DO'((VI+:=INCR)=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(15)); (CTRT:= 21 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=1-INCR ; 'FOR' IND 'TO' VJQA 'WHILE''REF''INT' XX; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(24)); (CTRT:= 22 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=1-INCR ; 'FOR' IND 'TO' VJQA 'WHILE''REF''INT' XX; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(24)); (CTRT:= 23 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=1-INCR ; 'FOR' IND 'TO' VJQA 'WHILE'XX:='LOC''INT'; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(24)); (CTRT:= 24 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=1-INCR ; 'FOR' IND 'TO' VJQA 'WHILE'XX:='LOC''INT'; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(24)); (CTRT:= 25 ; MEM:=CTR ; K:=14 ; 'BY' VPAS 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(19)); (CTRT:= 26 ; MEM:=CTR ; K:=14 ; 'BY' VPAS 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(19)); (CTRT:= 27 ; MEM:=CTR ; K:=14 ; 'BY' VPAS 'WHILE''REF''INT' XX; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(31)); (CTRT:= 28 ; MEM:=CTR ; K:=14 ; 'BY' VPAS 'WHILE''REF''INT' XX; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(31)); (CTRT:= 29 ; MEM:=CTR ; K:=14 ; 'BY' VPAS 'WHILE'XX:='LOC''INT'; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(31)); (CTRT:= 30 ; MEM:=CTR ; K:=14 ; 'BY' VPAS 'WHILE'XX:='LOC''INT'; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(31)); (CTRT:= 31 ; MEM:=CTR ; K:=14 ; 'BY' VPAS'TO' VJQA 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 32 ; MEM:=CTR ; K:=14 ; 'BY' VPAS'TO' VJQA 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 33 ; MEM:=CTR ; K:=14 ; 'BY' VPAS'TO' VJQA 'WHILE''REF''INT' XX; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 34 ; MEM:=CTR ; K:=14 ; 'BY' VPAS'TO' VJQA 'WHILE''REF''INT' XX; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 35 ; MEM:=CTR ; K:=14 ; 'BY' VPAS'TO' VJQA 'WHILE'XX:='LOC''INT'; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 36 ; MEM:=CTR ; K:=14 ; 'BY' VPAS'TO' VJQA 'WHILE'XX:='LOC''INT'; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 37 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=1-INCR ; 'FOR' IND 'BY' VPAS 'DO'((VI+:=INCR)=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(19)); (CTRT:= 38 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=1-INCR ; 'FOR' IND 'BY' VPAS 'DO'((VI+:=INCR)=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(19)); (CTRT:= 39 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=1-INCR ; 'FOR' IND 'BY' VPAS 'WHILE''REF''INT' XX; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(31)); (CTRT:= 40 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=1-INCR ; 'FOR' IND 'BY' VPAS 'WHILE''REF''INT' XX; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(31)); (CTRT:= 41 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=1-INCR ; 'FOR' IND 'BY' VPAS 'WHILE'XX:='LOC''INT'; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(31)); (CTRT:= 42 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=1-INCR ; 'FOR' IND 'BY' VPAS 'WHILE'XX:='LOC''INT'; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(31)); (CTRT:= 43 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=1-INCR ; 'FOR' IND 'BY' VPAS'TO' VJQA 'DO'((VI+:=INCR)=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 44 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=1-INCR ; 'FOR' IND 'BY' VPAS'TO' VJQA 'DO'((VI+:=INCR)=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 45 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=1-INCR ; 'FOR' IND 'BY' VPAS'TO' VJQA 'WHILE''REF''INT' XX; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 46 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=1-INCR ; 'FOR' IND 'BY' VPAS'TO' VJQA 'WHILE''REF''INT' XX; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 47 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=1-INCR ; 'FOR' IND 'BY' VPAS'TO' VJQA 'WHILE'XX:='LOC''INT'; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 48 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=1-INCR ; 'FOR' IND 'BY' VPAS'TO' VJQA 'WHILE'XX:='LOC''INT'; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 49 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(19)); (CTRT:= 50 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(19)); (CTRT:= 51 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP 'WHILE''REF''INT' XX; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(31)); (CTRT:= 52 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP 'WHILE''REF''INT' XX; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(31)); (CTRT:= 53 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP 'WHILE'XX:='LOC''INT'; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(31)); (CTRT:= 54 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP 'WHILE'XX:='LOC''INT'; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(31)); (CTRT:= 55 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'TO' VJQA 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 56 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'TO' VJQA 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 57 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'TO' VJQA 'WHILE''REF''INT' XX; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 58 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'TO' VJQA 'WHILE''REF''INT' XX; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 59 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'TO' VJQA 'WHILE'XX:='LOC''INT'; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 60 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'TO' VJQA 'WHILE'XX:='LOC''INT'; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 61 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP 'DO'((VI+:=INCR)=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(19)); (CTRT:= 62 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP 'DO'((VI+:=INCR)=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(19)); (CTRT:= 63 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP 'WHILE''REF''INT' XX; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(31)); (CTRT:= 64 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP 'WHILE''REF''INT' XX; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(31)); (CTRT:= 65 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP 'WHILE'XX:='LOC''INT'; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(31)); (CTRT:= 66 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP 'WHILE'XX:='LOC''INT'; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(31)); (CTRT:= 67 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'TO' VJQA 'DO'((VI+:=INCR)=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 68 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'TO' VJQA 'DO'((VI+:=INCR)=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 69 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'TO' VJQA 'WHILE''REF''INT' XX; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 70 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'TO' VJQA 'WHILE''REF''INT' XX; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 71 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'TO' VJQA 'WHILE'XX:='LOC''INT'; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 72 ; MEM:=CTR ; K:=14 ; INCR:=1;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'TO' VJQA 'WHILE'XX:='LOC''INT'; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(17)); (CTRT:= 73 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'BY' VPAS 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(24)); (CTRT:= 74 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'BY' VPAS 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(24)); (CTRT:= 75 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'BY' VPAS 'WHILE''REF''INT' XX; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(36)); (CTRT:= 76 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'BY' VPAS 'WHILE''REF''INT' XX; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(36)); (CTRT:= 77 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'BY' VPAS 'WHILE'XX:='LOC''INT'; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(36)); (CTRT:= 78 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'BY' VPAS 'WHILE'XX:='LOC''INT'; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(36)); (CTRT:= 79 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'BY' VPAS'TO' VJQA 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(25)); (CTRT:= 80 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'BY' VPAS'TO' VJQA 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(25)); (CTRT:= 81 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'BY' VPAS'TO' VJQA 'WHILE''REF''INT' XX; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(34)); (CTRT:= 82 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'BY' VPAS'TO' VJQA 'WHILE''REF''INT' XX; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(34)); (CTRT:= 83 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'BY' VPAS'TO' VJQA 'WHILE'XX:='LOC''INT'; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(34)); (CTRT:= 84 ; MEM:=CTR ; K:=14 ; 'FROM' VDEP'BY' VPAS'TO' VJQA 'WHILE'XX:='LOC''INT'; CTR+:=3 ; (K-:=2)>0 'DO'CTR+:=1 ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(34)); (CTRT:= 85 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'BY' VPAS 'DO'((VI+:=INCR)=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(24)); (CTRT:= 86 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'BY' VPAS 'DO'((VI+:=INCR)=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(24)); (CTRT:= 87 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'BY' VPAS 'WHILE''REF''INT' XX; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(36)); (CTRT:= 88 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'BY' VPAS 'WHILE''REF''INT' XX; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(36)); (CTRT:= 89 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'BY' VPAS 'WHILE'XX:='LOC''INT'; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(36)); (CTRT:= 90 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'BY' VPAS 'WHILE'XX:='LOC''INT'; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(36)); (CTRT:= 91 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'BY' VPAS'TO' VJQA 'DO'((VI+:=INCR)=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(25)); (CTRT:= 92 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'BY' VPAS'TO' VJQA 'DO'((VI+:=INCR)=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(25)); (CTRT:= 93 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'BY' VPAS'TO' VJQA 'WHILE''REF''INT' XX; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(34)); (CTRT:= 94 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'BY' VPAS'TO' VJQA 'WHILE''REF''INT' XX; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(34)); (CTRT:= 95 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'BY' VPAS'TO' VJQA 'WHILE'XX:='LOC''INT'; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; 'REF''INT' XX; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(34)); (CTRT:= 96 ; MEM:=CTR ; K:=14 ; INCR:=-2;VI:=8-INCR ; 'FOR' IND 'FROM' VDEP'BY' VPAS'TO' VJQA 'WHILE'XX:='LOC''INT'; ((VI+:=INCR)=IND ! CTR+:=3 ! TILTI(IND)) ; (K-:=2)>0 'DO'(VI=IND ! CTR+:=1 ! TILTI(IND)) ; XX:='LOC''INT'; ((K-:=1)=0!'GOTO' E)'OD' ; CTR+:=7 ; E : C(34)); PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R33D # (PRINT(("VOID COLLATERAL CLAUSES",NEWLINE)) ; 'INT' VF = 718*2 ; 'INT' CTR:=0,MEM,CTRT ; 'PROC' CONTROLE = ('INT' INCR)'VOID' : (CTR/=MEM+INCR ! PRINT(("COUNT ER IN TEST",CTRT,CTR,MEM+INCR,NEWLINE))) ; 'BOOL' BOO:='TRUE' , 'INT' DECR,K,VI, 'MODE' 'M' = 'UNION'('INT','STRING') , 'M' VU:="VIDE" , 'PROC' P1 = 'INT' : 1 , []'M' TRE=(1,"VIDE","VIDE") , 'STRUCT'('M' A,B) SRM = ("VIDE",2) ; (CTRT:= 1;MEM:=CTR ; 'REF''INT' XX , 'INT' INCR = 0 ; ( (BOO ! BOO:='FALSE' ; CTR+:=7) ; 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' ; CTR+:=7; EA : CTRT:= 2 ; 'IF' (BOO ! BOO:='FALSE' ; CTR+:=7) ; 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' ; 'TRUE''THEN'CTR+:=7'FI'; EB : CTRT:= 3 ; ( (BOO ! BOO:='FALSE' ; CTR+:=7) ; 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' ; 1 ! CTR+:=7 , "VIDE" ) ; EC : CTRT:= 4 ; 'CASE' (BOO ! BOO:='FALSE' ; CTR+:=7) ; 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' ; VU'IN'('INT'):'SKIP''ESAC' ; CTR+:=7 ; ED : CTRT:= 5 ; 'FOR' I 'WHILE' (BOO ! BOO:='FALSE' ; CTR+:=7) ; 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' ; 'FALSE''DO''REF''INT' XX;'SKIP''OD';CTR+:=7; EE : CTRT:= 6 ; 'TO' 4 'DO' (BOO ! BOO:='FALSE' ; CTR+:=7) ; 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' ; CTR+:=7'OD' ; EF : CTRT:= 7 ; 'IF' (BOO ! BOO:='FALSE' ; CTR+:=7) ; 'TRUE''THEN' 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' ; CTR+:=7 'FI' ; EG : CTRT:= 8 ; ( (BOO ! BOO:='FALSE' ; CTR+:=7) ; 'FALSE' ! 'SKIP' ! 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' ; CTR+:=7 ) ; EH : CTRT:= 9 ; 'CASE' 0 'IN' 1,2 'OUT' (BOO ! BOO:='FALSE' ; CTR+:=7) ; 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' ; CTR+:=7 'ESAC' ; EI : CTRT:= 10 ; ('SKIP' ; (BOO ! BOO:='FALSE' ; CTR+:=7) ; VU ! ('INT'):'SKIP' ! 'SKIP' ; 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' ; CTR+:=7) ; EJ : CTRT:= 11 ; DECR:=2 ; 'FOR' I 'TO' 7 'WHILE' 'BOOL' B=(DECR-:=1)>=0 ; (B! (BOO ! BOO:='FALSE' ; CTR+:=7) ) ; 'REF''INT'XX ; B 'DO' 'SKIP' ; 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' 'OD' ; CTR+:=7 ; EK : CTRT:= 12 ; (BOO ! BOO:='FALSE' ; CTR+:=7) ; ('TRUE' ! 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' ! "VIDE") ; CTR+:=7 ; EL : CTRT:= 13 ; 'IF' (BOO ! BOO:='FALSE' ; CTR+:=7) ; 'FALSE''THEN''REF''INT' XX ; 'SKIP''ELSE' 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' 'FI' ; CTR+:=7; EM : CTRT:= 14 ; ( (BOO ! BOO:='FALSE' ; CTR+:=7) ; -1 ! "VIDE" , "VIDE" ! 'REF''INT' XX ; 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' ) ; CTR+:=7 ; EN : CTRT:= 15 ; 'CASE' 'REF''INT' XX ; VU 'IN'('INT' A):"VIDE" 'OUT' (BOO ! BOO:='FALSE' ; CTR+:=7) ; 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' 'ESAC' ; CTR+:=7 ; EO : CTRT:= 16 ; (BOO ! BOO:='FALSE' ; CTR+:=7) ; ('SKIP' , 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' , (1.0,0)) ; CTR+:=7 ; EP : CTRT:= 17 ; 'CASE' (BOO ! BOO:='FALSE' ; CTR+:=7) ; 3'IN' (0,1,2) , "VIDE" , 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' 'ESAC' ; CTR+:=7 ; EQ : CTRT:= 18 ; ( (BOO ! BOO:='FALSE' ; CTR+:=7) ; VU ! ('STRING'): 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' , ('INT'):"VIDE") ; CTR+:=7 ; ER : CTRT:= 19 ; ('PROC' P=('REF''INT' KK)'VOID' : 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' ; P( (BOO ! BOO:='FALSE' ; CTR+:=7) )) ; CTR+:=7 ; ES : CTRT:= 20 ; (BOO ! BOO:='FALSE' ; CTR+:=7) ; 'VOID' : 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' ; CTR+:=7 ; ET : CTRT:= 21 ; (BOO ! BOO:='FALSE' ; CTR+:=7) ; 'BEGIN' BOO:='TRUE' , CTR+:=15 'END' ) ; CTR+:=7 ; EU : CONTROLE(718)) ; (CTRT:= 22;MEM:=CTR ; 'REF''INT' XX , 'INT' INCR = 0 ; ( 'SKIP' ; ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) ; CTR+:=7; EA : CTRT:= 23 ; 'IF' 'SKIP' ; ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) ; 'TRUE''THEN'CTR+:=7'FI'; EB : CTRT:= 24 ; ( 'SKIP' ; ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) ; 1 ! CTR+:=7 , "VIDE" ) ; EC : CTRT:= 25 ; 'CASE' 'SKIP' ; ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) ; VU'IN'('INT'):'SKIP''ESAC' ; CTR+:=7 ; ED : CTRT:= 26 ; 'FOR' I 'WHILE' 'SKIP' ; ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) ; 'FALSE''DO''REF''INT' XX;'SKIP''OD';CTR+:=7; EE : CTRT:= 27 ; 'TO' 4 'DO' 'SKIP' ; ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) ; CTR+:=7'OD' ; EF : CTRT:= 28 ; 'IF' 'SKIP' ; 'TRUE''THEN' ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) ; CTR+:=7 'FI' ; EG : CTRT:= 29 ; ( 'SKIP' ; 'FALSE' ! 'SKIP' ! ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) ; CTR+:=7 ) ; EH : CTRT:= 30 ; 'CASE' 0 'IN' 1,2 'OUT' 'SKIP' ; ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) ; CTR+:=7 'ESAC' ; EI : CTRT:= 31 ; ('SKIP' ; 'SKIP' ; VU ! ('INT'):'SKIP' ! 'SKIP' ; ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) ; CTR+:=7) ; EJ : CTRT:= 32 ; DECR:=2 ; 'FOR' I 'TO' 7 'WHILE' 'BOOL' B=(DECR-:=1)>=0 ; (B! 'SKIP' ) ; 'REF''INT'XX ; B 'DO' 'SKIP' ; ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) 'OD' ; CTR+:=7 ; EK : CTRT:= 33 ; 'SKIP' ; ('TRUE' ! ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) ! "VIDE") ; CTR+:=7 ; EL : CTRT:= 34 ; 'IF' 'SKIP' ; 'FALSE''THEN''REF''INT' XX ; 'SKIP''ELSE' ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) 'FI' ; CTR+:=7; EM : CTRT:= 35 ; ( 'SKIP' ; -1 ! "VIDE" , "VIDE" ! 'REF''INT' XX ; ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) ) ; CTR+:=7 ; EN : CTRT:= 36 ; 'CASE' 'REF''INT' XX ; VU 'IN'('INT' A):"VIDE" 'OUT' 'SKIP' ; ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) 'ESAC' ; CTR+:=7 ; EO : CTRT:= 37 ; 'SKIP' ; ('SKIP' , ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) , (1.0,0)) ; CTR+:=7 ; EP : CTRT:= 38 ; 'CASE' 'SKIP' ; 3'IN' (0,1,2) , "VIDE" , ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) 'ESAC' ; CTR+:=7 ; EQ : CTRT:= 39 ; ( 'SKIP' ; VU ! ('STRING'): ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) , ('INT'):"VIDE") ; CTR+:=7 ; ER : CTRT:= 40 ; ('PROC' P=('REF''INT' KK)'VOID' : ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) ; P( 'SKIP' )) ; CTR+:=7 ; ES : CTRT:= 41 ; 'SKIP' ; 'VOID' : ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) ; CTR+:=7 ; ET : CTRT:= 42 ; 'SKIP' ; ('BEGIN''SKIP','REF''M'('NIL'),'HEAP''M''END','LOC''M':=5,CTR:=:MEM, (1,2,CTR+100),('REAL' X:=3.14;CTR-MEM*5/X),-P1,CTR+:=22 , TRE[3],A'OF'SRM,('INT'A)'VOID':CTR-:=100) ) ; CTR+:=7 ; EU : CONTROLE(718)) ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ###### # R35B # (PRINT(("LOOPS IN SOME CONTEXTS",NEWLINE)) ; 'INT' VF = 718*6+231*3 ; 'INT' CTR:=0,MEM,CTRT ; 'PROC' CONTROLE = ('INT' INCR)'VOID' : (CTR/=MEM+INCR ! PRINT(("COUNT ER IN TEST",CTRT,CTR,MEM+INCR,NEWLINE))) ; 'BOOL' BOO:='TRUE' , 'INT' DECR,K,VI, 'MODE' 'M' = 'UNION'('INT','STRING') , 'M' VU:="VIDE" , 'PROC' TILTI=('INT' IND)'VOID': PRINT(("ER.INDEX",CTRT,VI,IND,NEWLINE)) , 'PROC' PPP='INT' : (CTR+:=5;-3) ; 'STRUCT' ('PROC''INT' OF,CH)STR = ('SKIP',PPP) , [,]'PROC''INT' RANG = ('INT' : 0 , PPP) , 'PROC' PAV = ('INT' I)'INT' : (CTR+:=5;I) ; (CTRT:= 1;MEM:=CTR ; 'REF''INT' XX , 'INT' INCR = 0 ; ( (K:=10;CTR+:=3) ; 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; CTR+:=7; EA : CTRT:= 2 ; 'IF' (K:=10;CTR+:=3) ; 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; 'TRUE''THEN'CTR+:=7'FI'; EB : CTRT:= 3 ; ( (K:=10;CTR+:=3) ; 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; 1 ! CTR+:=7 , "VIDE" ) ; EC : CTRT:= 4 ; 'CASE' (K:=10;CTR+:=3) ; 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; VU'IN'('INT'):'SKIP''ESAC' ; CTR+:=7 ; ED : CTRT:= 5 ; 'FOR' I 'WHILE' (K:=10;CTR+:=3) ; 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; 'FALSE''DO''REF''INT' XX;'SKIP''OD';CTR+:=7; EE : CTRT:= 6 ; 'TO' 4 'DO' (K:=10;CTR+:=3) ; 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; CTR+:=7'OD' ; EF : CTRT:= 7 ; 'IF' (K:=10;CTR+:=3) ; 'TRUE''THEN' 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; CTR+:=7 'FI' ; EG : CTRT:= 8 ; ( (K:=10;CTR+:=3) ; 'FALSE' ! 'SKIP' ! 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; CTR+:=7 ) ; EH : CTRT:= 9 ; 'CASE' 0 'IN' 1,2 'OUT' (K:=10;CTR+:=3) ; 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; CTR+:=7 'ESAC' ; EI : CTRT:= 10 ; ('SKIP' ; (K:=10;CTR+:=3) ; VU ! ('INT'):'SKIP' ! 'SKIP' ; 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; CTR+:=7) ; EJ : CTRT:= 11 ; DECR:=2 ; 'FOR' I 'TO' 7 'WHILE' 'BOOL' B=(DECR-:=1)>=0 ; (B! (K:=10;CTR+:=3) ) ; 'REF''INT'XX ; B 'DO' 'SKIP' ; 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' 'OD' ; CTR+:=7 ; EK : CTRT:= 12 ; (K:=10;CTR+:=3) ; ('TRUE' ! 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' ! "VIDE") ; CTR+:=7 ; EL : CTRT:= 13 ; 'IF' (K:=10;CTR+:=3) ; 'FALSE''THEN''REF''INT' XX ; 'SKIP''ELSE' 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' 'FI' ; CTR+:=7; EM : CTRT:= 14 ; ( (K:=10;CTR+:=3) ; -1 ! "VIDE" , "VIDE" ! 'REF''INT' XX ; 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' ) ; CTR+:=7 ; EN : CTRT:= 15 ; 'CASE' 'REF''INT' XX ; VU 'IN'('INT' A):"VIDE" 'OUT' (K:=10;CTR+:=3) ; 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' 'ESAC' ; CTR+:=7 ; EO : CTRT:= 16 ; (K:=10;CTR+:=3) ; ('SKIP' , 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' , (1.0,0)) ; CTR+:=7 ; EP : CTRT:= 17 ; 'CASE' (K:=10;CTR+:=3) ; 3'IN' (0,1,2) , "VIDE" , 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' 'ESAC' ; CTR+:=7 ; EQ : CTRT:= 18 ; ( (K:=10;CTR+:=3) ; VU ! ('STRING'): 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' , ('INT'):"VIDE") ; CTR+:=7 ; ER : CTRT:= 19 ; ('PROC' P=('REF''INT' KK)'VOID' : 'WHILE' CTR+:=3; (K-:=2)>0 'DO' 'REF''INT' XX; CTR+:=1'OD' ; P( (K:=10;CTR+:=3) )) ; CTR+:=7 ; ES : CTRT:= 20 ; (K:=10;CTR+:=3) ; 'VOID' : 'WHILE' CTR+:=3; (K-:=2)>0 'DO' 'REF''INT' XX; CTR+:=1'OD' ; CTR+:=7 ; ET : CTRT:= 21 ; (K:=10;CTR+:=3) ; 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1'OD' ) ; CTR+:=7 ; EU : CONTROLE( 718)) ; (CTRT:= 22;MEM:=CTR ; 'REF''INT' XX , 'INT' INCR = 0 ; ( 'SKIP' ; 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; CTR+:=7; EA : CTRT:= 23 ; 'IF' 'SKIP' ; 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; 'TRUE''THEN'CTR+:=7'FI'; EB : CTRT:= 24 ; ( 'SKIP' ; 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; 1 ! CTR+:=7 , "VIDE" ) ; EC : CTRT:= 25 ; 'CASE' 'SKIP' ; 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; VU'IN'('INT'):'SKIP''ESAC' ; CTR+:=7 ; ED : CTRT:= 26 ; 'FOR' I 'WHILE' 'SKIP' ; 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; 'FALSE''DO''REF''INT' XX;'SKIP''OD';CTR+:=7; EE : CTRT:= 27 ; 'TO' 4 'DO' 'SKIP' ; 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; CTR+:=7'OD' ; EF : CTRT:= 28 ; 'IF' 'SKIP' ; 'TRUE''THEN' 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; CTR+:=7 'FI' ; EG : CTRT:= 29 ; ( 'SKIP' ; 'FALSE' ! 'SKIP' ! 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; CTR+:=7 ) ; EH : CTRT:= 30 ; 'CASE' 0 'IN' 1,2 'OUT' 'SKIP' ; 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; CTR+:=7 'ESAC' ; EI : CTRT:= 31 ; ('SKIP' ; 'SKIP' ; VU ! ('INT'):'SKIP' ! 'SKIP' ; 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' ; CTR+:=7) ; EJ : CTRT:= 32 ; DECR:=2 ; 'FOR' I 'TO' 7 'WHILE' 'BOOL' B=(DECR-:=1)>=0 ; (B! 'SKIP' ) ; 'REF''INT'XX ; B 'DO' 'SKIP' ; 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' 'OD' ; CTR+:=7 ; EK : CTRT:= 33 ; 'SKIP' ; ('TRUE' ! 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' ! "VIDE") ; CTR+:=7 ; EL : CTRT:= 34 ; 'IF' 'SKIP' ; 'FALSE''THEN''REF''INT' XX ; 'SKIP''ELSE' 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' 'FI' ; CTR+:=7; EM : CTRT:= 35 ; ( 'SKIP' ; -1 ! "VIDE" , "VIDE" ! 'REF''INT' XX ; 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' ) ; CTR+:=7 ; EN : CTRT:= 36 ; 'CASE' 'REF''INT' XX ; VU 'IN'('INT' A):"VIDE" 'OUT' 'SKIP' ; 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' 'ESAC' ; CTR+:=7 ; EO : CTRT:= 37 ; 'SKIP' ; ('SKIP' , 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' , (1.0,0)) ; CTR+:=7 ; EP : CTRT:= 38 ; 'CASE' 'SKIP' ; 3'IN' (0,1,2) , "VIDE" , 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' 'ESAC' ; CTR+:=7 ; EQ : CTRT:= 39 ; ( 'SKIP' ; VU ! ('STRING'): 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' , ('INT'):"VIDE") ; CTR+:=7 ; ER : CTRT:= 40 ; ('PROC' P=('REF''INT' KK)'VOID' : 'TO' (CTR+:=19;3) 'DO' 'REF''INT' XX; CTR+:=1'OD' ; P( 'SKIP' )) ; CTR+:=7 ; ES : CTRT:= 41 ; 'SKIP' ; 'VOID' : 'TO' (CTR+:=19;3) 'DO' 'REF''INT' XX; CTR+:=1'OD' ; CTR+:=7 ; ET : CTRT:= 42 ; 'SKIP' ; 'TO' (CTR+:=19;3) 'DO' XX:='LOC''INT'; CTR+:=1'OD' ) ; CTR+:=7 ; EU : CONTROLE( 718)) ; (CTRT:= 43;MEM:=CTR ; 'REF''INT' XX , 'INT' INCR = 0 ; ( K:=11 ; 'BY' 'LOC' 'PROC''INT':=PPP 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EA)'OD' ; CTR+:=7; EA : CTRT:= 44 ; 'IF' K:=11 ; 'BY' 'INT' : (CTR+:=5;-3) 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EB)'OD' ; 'TRUE''THEN'CTR+:=7'FI'; EB : CTRT:= 45 ; ( K:=11 ; 'BY' RANG[2,1] 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EC)'OD' ; 1 ! CTR+:=7 , "VIDE" ) ; EC : CTRT:= 46 ; 'CASE' K:=11 ; 'BY' CH'OF'STR 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' ED)'OD' ; VU'IN'('INT'):'SKIP''ESAC' ; CTR+:=7 ; ED : CTRT:= 47 ; 'FOR' I 'WHILE' K:=11 ; 'BY' CH'OF'STR 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EE)'OD' ; 'FALSE''DO''REF''INT' XX;'SKIP''OD';CTR+:=7; EE : CTRT:= 48 ; 'TO' 4 'DO' K:=11 ; 'BY' -(9+PPP)?2 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EF)'OD' ; CTR+:=7'OD' ; EF : CTRT:= 49 ; 'IF' K:=11 ; 'TRUE''THEN' 'BY' 'LOC' 'PROC''INT':=PPP 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EG)'OD' ; CTR+:=7 'FI' ; EG : CTRT:= 50 ; ( K:=11 ; 'FALSE' ! 'SKIP' ! 'BY' 'IF''TRUE''THEN'PPP'FI' 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EH)'OD' ; CTR+:=7 ) ; EH : CTRT:= 51 ; 'CASE' 0 'IN' 1,2 'OUT' K:=11 ; 'BY' 'INT' : (CTR+:=5;-3) 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EI)'OD' ; CTR+:=7 'ESAC' ; EI : CTRT:= 52 ; ('SKIP' ; K:=11 ; VU ! ('INT'):'SKIP' ! 'SKIP' ; 'BY' PPP 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EJ)'OD' ; CTR+:=7) ; EJ : CTRT:= 53 ; DECR:=2 ; 'FOR' I 'TO' 7 'WHILE' 'BOOL' B=(DECR-:=1)>=0 ; (B! K:=11 ) ; 'REF''INT'XX ; B 'DO' 'SKIP' ; 'BY' 'LOC' 'PROC''INT':=PPP 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EK)'OD' 'OD' ; CTR+:=7 ; EK : CTRT:= 54 ; K:=11 ; ('TRUE' ! 'BY' PAV(-3) 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EL)'OD' ! "VIDE") ; CTR+:=7 ; EL : CTRT:= 55 ; 'IF' K:=11 ; 'FALSE''THEN''REF''INT' XX ; 'SKIP''ELSE' 'BY' 'INT' : (CTR+:=5;-3) 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EM)'OD' 'FI' ; CTR+:=7; EM : CTRT:= 56 ; ( K:=11 ; -1 ! "VIDE" , "VIDE" ! 'REF''INT' XX ; 'BY' PAV(-3) 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EN)'OD' ) ; CTR+:=7 ; EN : CTRT:= 57 ; 'CASE' 'REF''INT' XX ; VU 'IN'('INT' A):"VIDE" 'OUT' K:=11 ; 'BY' -(9+PPP)?2 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EO)'OD' 'ESAC' ; CTR+:=7 ; EO : CTRT:= 58 ; K:=11 ; ('SKIP' , 'BY' CH'OF'STR 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EP)'OD' , (1.0,0)) ; CTR+:=7 ; EP : CTRT:= 59 ; 'CASE' K:=11 ; 3'IN' (0,1,2) , "VIDE" , 'BY' RANG[2,1] 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EQ)'OD' 'ESAC' ; CTR+:=7 ; EQ : CTRT:= 60 ; ( K:=11 ; VU ! ('STRING'): 'BY' 'INT' : (CTR+:=5;-3) 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' ER)'OD' , ('INT'):"VIDE") ; CTR+:=7 ; ER : CTRT:= 61 ; ('PROC' P=('REF''INT' KK)'VOID' : 'BY' PPP 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' 'REF''INT' XX; CTR+:=1;((K-:=1)<=0!'GOTO' ES)'OD' ; P( K:=11 )) ; CTR+:=7 ; ES : CTRT:= 62 ; K:=11 ; 'VOID' : 'BY' PPP 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' 'REF''INT' XX; CTR+:=1;((K-:=1)<=0!'GOTO' ET)'OD' ; CTR+:=7 ; ET : CTRT:= 63 ; K:=11 ; 'BY' PAV(-3) 'TO' (CTR+:=2;-8) 'WHILE' CTR+:=3; (K-:=2)>0 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EU)'OD' ) ; CTR+:=7 ; EU : CONTROLE( 718)) ; (CTRT:= 64;MEM:=CTR ; 'REF''INT' XX , 'INT' INCR = 0 ; ( (CTR+:=1;K:=5) ; 'FROM' -6 'TO' PAV(-3) 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EA)'OD' ; CTR+:=7; EA : CTRT:= 65 ; 'IF' (CTR+:=1;K:=5) ; 'FROM' -6 'TO' RANG[2,1] 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EB)'OD' ; 'TRUE''THEN'CTR+:=7'FI'; EB : CTRT:= 66 ; ( (CTR+:=1;K:=5) ; 'FROM' -6 'TO' RANG[2,1] 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EC)'OD' ; 1 ! CTR+:=7 , "VIDE" ) ; EC : CTRT:= 67 ; 'CASE' (CTR+:=1;K:=5) ; 'FROM' -6 'TO' RANG[2,1] 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' ED)'OD' ; VU'IN'('INT'):'SKIP''ESAC' ; CTR+:=7 ; ED : CTRT:= 68 ; 'FOR' I 'WHILE' (CTR+:=1;K:=5) ; 'FROM' -6 'TO' -(9+PPP)?2 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EE)'OD' ; 'FALSE''DO''REF''INT' XX;'SKIP''OD';CTR+:=7; EE : CTRT:= 69 ; 'TO' 4 'DO' (CTR+:=1;K:=5) ; 'FROM' -6 'TO' -(9+PPP)?2 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EF)'OD' ; CTR+:=7'OD' ; EF : CTRT:= 70 ; 'IF' (CTR+:=1;K:=5) ; 'TRUE''THEN' 'FROM' -6 'TO' -(9+PPP)?2 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EG)'OD' ; CTR+:=7 'FI' ; EG : CTRT:= 71 ; ( (CTR+:=1;K:=5) ; 'FALSE' ! 'SKIP' ! 'FROM' -6 'TO' PAV(-3) 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EH)'OD' ; CTR+:=7 ) ; EH : CTRT:= 72 ; 'CASE' 0 'IN' 1,2 'OUT' (CTR+:=1;K:=5) ; 'FROM' -6 'TO' 'IF''TRUE''THEN'PPP'FI' 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EI)'OD' ; CTR+:=7 'ESAC' ; EI : CTRT:= 73 ; ('SKIP' ; (CTR+:=1;K:=5) ; VU ! ('INT'):'SKIP' ! 'SKIP' ; 'FROM' -6 'TO' -(9+PPP)?2 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EJ)'OD' ; CTR+:=7) ; EJ : CTRT:= 74 ; DECR:=2 ; 'FOR' I 'TO' 7 'WHILE' 'BOOL' B=(DECR-:=1)>=0 ; (B! (CTR+:=1;K:=5) ) ; 'REF''INT'XX ; B 'DO' 'SKIP' ; 'FROM' -6 'TO' CH'OF'STR 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EK)'OD' 'OD' ; CTR+:=7 ; EK : CTRT:= 75 ; (CTR+:=1;K:=5) ; ('TRUE' ! 'FROM' -6 'TO' PAV(-3) 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EL)'OD' ! "VIDE") ; CTR+:=7 ; EL : CTRT:= 76 ; 'IF' (CTR+:=1;K:=5) ; 'FALSE''THEN''REF''INT' XX ; 'SKIP''ELSE' 'FROM' -6 'TO' PAV(-3) 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EM)'OD' 'FI' ; CTR+:=7; EM : CTRT:= 77 ; ( (CTR+:=1;K:=5) ; -1 ! "VIDE" , "VIDE" ! 'REF''INT' XX ; 'FROM' -6 'TO' 'LOC' 'PROC''INT':=PPP 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EN)'OD' ) ; CTR+:=7 ; EN : CTRT:= 78 ; 'CASE' 'REF''INT' XX ; VU 'IN'('INT' A):"VIDE" 'OUT' (CTR+:=1;K:=5) ; 'FROM' -6 'TO' PPP 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EO)'OD' 'ESAC' ; CTR+:=7 ; EO : CTRT:= 79 ; (CTR+:=1;K:=5) ; ('SKIP' , 'FROM' -6 'TO' PPP 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EP)'OD' , (1.0,0)) ; CTR+:=7 ; EP : CTRT:= 80 ; 'CASE' (CTR+:=1;K:=5) ; 3'IN' (0,1,2) , "VIDE" , 'FROM' -6 'TO' CH'OF'STR 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EQ)'OD' 'ESAC' ; CTR+:=7 ; EQ : CTRT:= 81 ; ( (CTR+:=1;K:=5) ; VU ! ('STRING'): 'FROM' -6 'TO' RANG[2,1] 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' ER)'OD' , ('INT'):"VIDE") ; CTR+:=7 ; ER : CTRT:= 82 ; ('PROC' P=('REF''INT' KK)'VOID' : 'FROM' -6 'TO' CH'OF'STR 'WHILE' CTR+:=3; 'TRUE' 'DO' 'REF''INT' XX; CTR+:=1;((K-:=1)<=0!'GOTO' ES)'OD' ; P( (CTR+:=1;K:=5) )) ; CTR+:=7 ; ES : CTRT:= 83 ; (CTR+:=1;K:=5) ; 'VOID' : 'FROM' -6 'TO' PAV(-3) 'WHILE' CTR+:=3; 'TRUE' 'DO' 'REF''INT' XX; CTR+:=1;((K-:=1)<=0!'GOTO' ET)'OD' ; CTR+:=7 ; ET : CTRT:= 84 ; (CTR+:=1;K:=5) ; 'FROM' -6 'TO' CH'OF'STR 'WHILE' CTR+:=3; 'TRUE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EU)'OD' ) ; CTR+:=7 ; EU : CONTROLE( 718)) ; (CTRT:= 85;MEM:=CTR ; 'REF''INT' XX , 'INT' INCR = 1 ; ( (CTR+:=3;K:=10;VI:=0) ; 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' ; CTR+:=7; EA : CTRT:= 86 ; 'IF' (CTR+:=3;K:=10;VI:=0) ; 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' ; 'TRUE''THEN'CTR+:=7'FI'; EB : CTRT:= 87 ; ( (CTR+:=3;K:=10;VI:=0) ; 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' ; 1 ! CTR+:=7 , "VIDE" ) ; EC : CTRT:= 88 ; 'CASE' (CTR+:=3;K:=10;VI:=0) ; 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' ; VU'IN'('INT'):'SKIP''ESAC' ; CTR+:=7 ; ED : CTRT:= 89 ; 'FOR' I 'WHILE' (CTR+:=3;K:=10;VI:=0) ; 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' ; 'FALSE''DO''REF''INT' XX;'SKIP''OD';CTR+:=7; EE : CTRT:= 90 ; 'TO' 4 'DO' (CTR+:=3;K:=10;VI:=0) ; 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' ; CTR+:=7'OD' ; EF : CTRT:= 91 ; 'IF' (CTR+:=3;K:=10;VI:=0) ; 'TRUE''THEN' 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' ; CTR+:=7 'FI' ; EG : CTRT:= 92 ; ( (CTR+:=3;K:=10;VI:=0) ; 'FALSE' ! 'SKIP' ! 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' ; CTR+:=7 ) ; EH : CTRT:= 93 ; 'CASE' 0 'IN' 1,2 'OUT' (CTR+:=3;K:=10;VI:=0) ; 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' ; CTR+:=7 'ESAC' ; EI : CTRT:= 94 ; ('SKIP' ; (CTR+:=3;K:=10;VI:=0) ; VU ! ('INT'):'SKIP' ! 'SKIP' ; 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' ; CTR+:=7) ; EJ : CTRT:= 95 ; DECR:=2 ; 'FOR' I 'TO' 7 'WHILE' 'BOOL' B=(DECR-:=1)>=0 ; (B! (CTR+:=3;K:=10;VI:=0) ) ; 'REF''INT'XX ; B 'DO' 'SKIP' ; 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' 'OD' ; CTR+:=7 ; EK : CTRT:= 96 ; (CTR+:=3;K:=10;VI:=0) ; ('TRUE' ! 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' ! "VIDE") ; CTR+:=7 ; EL : CTRT:= 97 ; 'IF' (CTR+:=3;K:=10;VI:=0) ; 'FALSE''THEN''REF''INT' XX ; 'SKIP''ELSE' 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' 'FI' ; CTR+:=7; EM : CTRT:= 98 ; ( (CTR+:=3;K:=10;VI:=0) ; -1 ! "VIDE" , "VIDE" ! 'REF''INT' XX ; 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' ) ; CTR+:=7 ; EN : CTRT:= 99 ; 'CASE' 'REF''INT' XX ; VU 'IN'('INT' A):"VIDE" 'OUT' (CTR+:=3;K:=10;VI:=0) ; 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' 'ESAC' ; CTR+:=7 ; EO : CTRT:= 100 ; (CTR+:=3;K:=10;VI:=0) ; ('SKIP' , 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' , (1.0,0)) ; CTR+:=7 ; EP : CTRT:= 101 ; 'CASE' (CTR+:=3;K:=10;VI:=0) ; 3'IN' (0,1,2) , "VIDE" , 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' 'ESAC' ; CTR+:=7 ; EQ : CTRT:= 102 ; ( (CTR+:=3;K:=10;VI:=0) ; VU ! ('STRING'): 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' , ('INT'):"VIDE") ; CTR+:=7 ; ER : CTRT:= 103 ; ('PROC' P=('REF''INT' KK)'VOID' : 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' 'REF''INT' XX; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' ; P( (CTR+:=3;K:=10;VI:=0) )) ; CTR+:=7 ; ES : CTRT:= 104 ; (CTR+:=3;K:=10;VI:=0) ; 'VOID' : 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' 'REF''INT' XX; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' ; CTR+:=7 ; ET : CTRT:= 105 ; (CTR+:=3;K:=10;VI:=0) ; 'FOR' IND 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) 'OD' ) ; CTR+:=7 ; EU : CONTROLE( 718)) ; (CTRT:= 106;MEM:=CTR ; 'REF''INT' XX , 'INT' INCR = -3 ; ( (VI:=0;K:=14) ; 'FOR' IND 'FROM' 'INT' : (CTR+:=5;-3) 'BY' PPP'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EA)'OD' ; CTR+:=7; EA : CTRT:= 107 ; 'IF' (VI:=0;K:=14) ; 'FOR' IND 'FROM' PPP 'BY' PPP'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EB)'OD' ; 'TRUE''THEN'CTR+:=7'FI'; EB : CTRT:= 108 ; ( (VI:=0;K:=14) ; 'FOR' IND 'FROM' PPP 'BY' 'INT' : (CTR+:=5;-3)'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EC)'OD' ; 1 ! CTR+:=7 , "VIDE" ) ; EC : CTRT:= 109 ; 'CASE' (VI:=0;K:=14) ; 'FOR' IND 'FROM' RANG[2,1] 'BY' RANG[2,1]'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' ED)'OD' ; VU'IN'('INT'):'SKIP''ESAC' ; CTR+:=7 ; ED : CTRT:= 110 ; 'FOR' I 'WHILE' (VI:=0;K:=14) ; 'FOR' IND 'FROM' RANG[2,1] 'BY' PAV(-3)'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EE)'OD' ; 'FALSE''DO''REF''INT' XX;'SKIP''OD';CTR+:=7; EE : CTRT:= 111 ; 'TO' 4 'DO' (VI:=0;K:=14) ; 'FOR' IND 'FROM' CH'OF'STR 'BY' CH'OF'STR'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EF)'OD' ; CTR+:=7'OD' ; EF : CTRT:= 112 ; 'IF' (VI:=0;K:=14) ; 'TRUE''THEN' 'FOR' IND 'FROM' 'INT' : (CTR+:=5;-3) 'BY' 'INT' : (CTR+:=5;-3)'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EG)'OD' ; CTR+:=7 'FI' ; EG : CTRT:= 113 ; ( (VI:=0;K:=14) ; 'FALSE' ! 'SKIP' ! 'FOR' IND 'FROM' CH'OF'STR 'BY' RANG[2,1]'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EH)'OD' ; CTR+:=7 ) ; EH : CTRT:= 114 ; 'CASE' 0 'IN' 1,2 'OUT' (VI:=0;K:=14) ; 'FOR' IND 'FROM' CH'OF'STR 'BY' 'IF''TRUE''THEN'PPP'FI''TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EI)'OD' ; CTR+:=7 'ESAC' ; EI : CTRT:= 115 ; ('SKIP' ; (VI:=0;K:=14) ; VU ! ('INT'):'SKIP' ! 'SKIP' ; 'FOR' IND 'FROM' CH'OF'STR 'BY' -(9+PPP)?2'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EJ)'OD' ; CTR+:=7) ; EJ : CTRT:= 116 ; DECR:=2 ; 'FOR' I 'TO' 7 'WHILE' 'BOOL' B=(DECR-:=1)>=0 ; (B! (VI:=0;K:=14) ) ; 'REF''INT'XX ; B 'DO' 'SKIP' ; 'FOR' IND 'FROM' RANG[2,1] 'BY' 'INT' : (CTR+:=5;-3)'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EK)'OD' 'OD' ; CTR+:=7 ; EK : CTRT:= 117 ; (VI:=0;K:=14) ; ('TRUE' ! 'FOR' IND 'FROM' 'INT' : (CTR+:=5;-3) 'BY' PAV(-3)'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EL)'OD' ! "VIDE") ; CTR+:=7 ; EL : CTRT:= 118 ; 'IF' (VI:=0;K:=14) ; 'FALSE''THEN''REF''INT' XX ; 'SKIP''ELSE' 'FOR' IND 'FROM' CH'OF'STR 'BY' CH'OF'STR'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EM)'OD' 'FI' ; CTR+:=7; EM : CTRT:= 119 ; ( (VI:=0;K:=14) ; -1 ! "VIDE" , "VIDE" ! 'REF''INT' XX ; 'FOR' IND 'FROM' 'LOC' 'PROC''INT':=PPP 'BY' PPP'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EN)'OD' ) ; CTR+:=7 ; EN : CTRT:= 120 ; 'CASE' 'REF''INT' XX ; VU 'IN'('INT' A):"VIDE" 'OUT' (VI:=0;K:=14) ; 'FOR' IND 'FROM' -(9+PPP)?2 'BY' 'INT' : (CTR+:=5;-3)'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EO)'OD' 'ESAC' ; CTR+:=7 ; EO : CTRT:= 121 ; (VI:=0;K:=14) ; ('SKIP' , 'FOR' IND 'FROM' -(9+PPP)?2 'BY' -(9+PPP)?2'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EP)'OD' , (1.0,0)) ; CTR+:=7 ; EP : CTRT:= 122 ; 'CASE' (VI:=0;K:=14) ; 3'IN' (0,1,2) , "VIDE" , 'FOR' IND 'FROM' CH'OF'STR 'BY' -(9+PPP)?2'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EQ)'OD' 'ESAC' ; CTR+:=7 ; EQ : CTRT:= 123 ; ( (VI:=0;K:=14) ; VU ! ('STRING'): 'FOR' IND 'FROM' PAV(-3) 'BY' 'IF''TRUE''THEN'PPP'FI''TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' ER)'OD' , ('INT'):"VIDE") ; CTR+:=7 ; ER : CTRT:= 124 ; ('PROC' P=('REF''INT' KK)'VOID' : 'FOR' IND 'FROM' PPP 'BY' PAV(-3)'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' 'REF''INT' XX; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' ES)'OD' ; P( (VI:=0;K:=14) )) ; CTR+:=7 ; ES : CTRT:= 125 ; (VI:=0;K:=14) ; 'VOID' : 'FOR' IND 'FROM' CH'OF'STR 'BY' 'INT' : (CTR+:=5;-3)'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' 'REF''INT' XX; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' ET)'OD' ; CTR+:=7 ; ET : CTRT:= 126 ; (VI:=0;K:=14) ; 'FOR' IND 'FROM' 'INT' : (CTR+:=5;-3) 'BY' 'LOC' 'PROC''INT':=PPP'TO' -10 'WHILE' ((VI+:=INCR)=IND!CTR+:=3 ! TILTI(IND)); (K-:=2)>0 'DO' XX:='LOC''INT'; (VI=IND ! CTR+:=1 ! TILTI(IND)) ;((K-:=1)<=0!'GOTO' EU)'OD' ) ; CTR+:=7 ; EU : CONTROLE( 718)) ; (CTRT:= 127;MEM:=CTR ; 'REF''INT' XX , 'INT' INCR = 0 ; ( K:=11 ; 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EA)'OD' ; CTR+:=7; EA : CTRT:= 128 ; 'IF' K:=11 ; 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EB)'OD' ; 'TRUE''THEN'CTR+:=7'FI'; EB : CTRT:= 129 ; ( K:=11 ; 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EC)'OD' ; 1 ! CTR+:=7 , "VIDE" ) ; EC : CTRT:= 130 ; 'CASE' K:=11 ; 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' ED)'OD' ; VU'IN'('INT'):'SKIP''ESAC' ; CTR+:=7 ; ED : CTRT:= 131 ; 'FOR' I 'WHILE' K:=11 ; 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EE)'OD' ; 'FALSE''DO''REF''INT' XX;'SKIP''OD';CTR+:=7; EE : CTRT:= 132 ; 'TO' 4 'DO' K:=11 ; 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EF)'OD' ; CTR+:=7'OD' ; EF : CTRT:= 133 ; 'IF' K:=11 ; 'TRUE''THEN' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EG)'OD' ; CTR+:=7 'FI' ; EG : CTRT:= 134 ; ( K:=11 ; 'FALSE' ! 'SKIP' ! 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EH)'OD' ; CTR+:=7 ) ; EH : CTRT:= 135 ; 'CASE' 0 'IN' 1,2 'OUT' K:=11 ; 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EI)'OD' ; CTR+:=7 'ESAC' ; EI : CTRT:= 136 ; ('SKIP' ; K:=11 ; VU ! ('INT'):'SKIP' ! 'SKIP' ; 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EJ)'OD' ; CTR+:=7) ; EJ : CTRT:= 137 ; DECR:=2 ; 'FOR' I 'TO' 7 'WHILE' 'BOOL' B=(DECR-:=1)>=0 ; (B! K:=11 ) ; 'REF''INT'XX ; B 'DO' 'SKIP' ; 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EK)'OD' 'OD' ; CTR+:=7 ; EK : CTRT:= 138 ; K:=11 ; ('TRUE' ! 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EL)'OD' ! "VIDE") ; CTR+:=7 ; EL : CTRT:= 139 ; 'IF' K:=11 ; 'FALSE''THEN''REF''INT' XX ; 'SKIP''ELSE' 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EM)'OD' 'FI' ; CTR+:=7; EM : CTRT:= 140 ; ( K:=11 ; -1 ! "VIDE" , "VIDE" ! 'REF''INT' XX ; 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EN)'OD' ) ; CTR+:=7 ; EN : CTRT:= 141 ; 'CASE' 'REF''INT' XX ; VU 'IN'('INT' A):"VIDE" 'OUT' K:=11 ; 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EO)'OD' 'ESAC' ; CTR+:=7 ; EO : CTRT:= 142 ; K:=11 ; ('SKIP' , 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EP)'OD' , (1.0,0)) ; CTR+:=7 ; EP : CTRT:= 143 ; 'CASE' K:=11 ; 3'IN' (0,1,2) , "VIDE" , 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EQ)'OD' 'ESAC' ; CTR+:=7 ; EQ : CTRT:= 144 ; ( K:=11 ; VU ! ('STRING'): 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' ER)'OD' , ('INT'):"VIDE") ; CTR+:=7 ; ER : CTRT:= 145 ; ('PROC' P=('REF''INT' KK)'VOID' : 'DO' 'REF''INT' XX; CTR+:=1;((K-:=1)<=0!'GOTO' ES)'OD' ; P( K:=11 )) ; CTR+:=7 ; ES : CTRT:= 146 ; K:=11 ; 'VOID' : 'DO' 'REF''INT' XX; CTR+:=1;((K-:=1)<=0!'GOTO' ET)'OD' ; CTR+:=7 ; ET : CTRT:= 147 ; K:=11 ; 'DO' XX:='LOC''INT'; CTR+:=1;((K-:=1)<=0!'GOTO' EU)'OD' ) ; CTR+:=7 ; EU : CONTROLE( 231)) ; (CTRT:= 148;MEM:=CTR ; 'REF''INT' XX , 'INT' INCR = 1 ; ( (K:=11;VI:=0) ; 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EA)'OD' ; CTR+:=7; EA : CTRT:= 149 ; 'IF' (K:=11;VI:=0) ; 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EB)'OD' ; 'TRUE''THEN'CTR+:=7'FI'; EB : CTRT:= 150 ; ( (K:=11;VI:=0) ; 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EC)'OD' ; 1 ! CTR+:=7 , "VIDE" ) ; EC : CTRT:= 151 ; 'CASE' (K:=11;VI:=0) ; 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' ED)'OD' ; VU'IN'('INT'):'SKIP''ESAC' ; CTR+:=7 ; ED : CTRT:= 152 ; 'FOR' I 'WHILE' (K:=11;VI:=0) ; 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EE)'OD' ; 'FALSE''DO''REF''INT' XX;'SKIP''OD';CTR+:=7; EE : CTRT:= 153 ; 'TO' 4 'DO' (K:=11;VI:=0) ; 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EF)'OD' ; CTR+:=7'OD' ; EF : CTRT:= 154 ; 'IF' (K:=11;VI:=0) ; 'TRUE''THEN' 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EG)'OD' ; CTR+:=7 'FI' ; EG : CTRT:= 155 ; ( (K:=11;VI:=0) ; 'FALSE' ! 'SKIP' ! 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EH)'OD' ; CTR+:=7 ) ; EH : CTRT:= 156 ; 'CASE' 0 'IN' 1,2 'OUT' (K:=11;VI:=0) ; 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EI)'OD' ; CTR+:=7 'ESAC' ; EI : CTRT:= 157 ; ('SKIP' ; (K:=11;VI:=0) ; VU ! ('INT'):'SKIP' ! 'SKIP' ; 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EJ)'OD' ; CTR+:=7) ; EJ : CTRT:= 158 ; DECR:=2 ; 'FOR' I 'TO' 7 'WHILE' 'BOOL' B=(DECR-:=1)>=0 ; (B! (K:=11;VI:=0) ) ; 'REF''INT'XX ; B 'DO' 'SKIP' ; 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EK)'OD' 'OD' ; CTR+:=7 ; EK : CTRT:= 159 ; (K:=11;VI:=0) ; ('TRUE' ! 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EL)'OD' ! "VIDE") ; CTR+:=7 ; EL : CTRT:= 160 ; 'IF' (K:=11;VI:=0) ; 'FALSE''THEN''REF''INT' XX ; 'SKIP''ELSE' 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EM)'OD' 'FI' ; CTR+:=7; EM : CTRT:= 161 ; ( (K:=11;VI:=0) ; -1 ! "VIDE" , "VIDE" ! 'REF''INT' XX ; 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EN)'OD' ) ; CTR+:=7 ; EN : CTRT:= 162 ; 'CASE' 'REF''INT' XX ; VU 'IN'('INT' A):"VIDE" 'OUT' (K:=11;VI:=0) ; 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EO)'OD' 'ESAC' ; CTR+:=7 ; EO : CTRT:= 163 ; (K:=11;VI:=0) ; ('SKIP' , 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EP)'OD' , (1.0,0)) ; CTR+:=7 ; EP : CTRT:= 164 ; 'CASE' (K:=11;VI:=0) ; 3'IN' (0,1,2) , "VIDE" , 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EQ)'OD' 'ESAC' ; CTR+:=7 ; EQ : CTRT:= 165 ; ( (K:=11;VI:=0) ; VU ! ('STRING'): 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' ER)'OD' , ('INT'):"VIDE") ; CTR+:=7 ; ER : CTRT:= 166 ; ('PROC' P=('REF''INT' KK)'VOID' : 'FOR' IND 'DO' 'REF''INT' XX; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' ES)'OD' ; P( (K:=11;VI:=0) )) ; CTR+:=7 ; ES : CTRT:= 167 ; (K:=11;VI:=0) ; 'VOID' : 'FOR' IND 'DO' 'REF''INT' XX; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' ET)'OD' ; CTR+:=7 ; ET : CTRT:= 168 ; (K:=11;VI:=0) ; 'FOR' IND 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EU)'OD' ) ; CTR+:=7 ; EU : CONTROLE( 231)) ; (CTRT:= 169;MEM:=CTR ; 'REF''INT' XX , 'INT' INCR = -3 ; ( (VI:=4;K:=6) ; 'FOR' IND 'BY' 'LOC' 'PROC''INT':=PPP 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EA)'OD' ; CTR+:=7; EA : CTRT:= 170 ; 'IF' (VI:=4;K:=6) ; 'FOR' IND 'BY' -(9+PPP)?2 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EB)'OD' ; 'TRUE''THEN'CTR+:=7'FI'; EB : CTRT:= 171 ; ( (VI:=4;K:=6) ; 'FOR' IND 'BY' 'INT' : (CTR+:=5;-3) 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EC)'OD' ; 1 ! CTR+:=7 , "VIDE" ) ; EC : CTRT:= 172 ; 'CASE' (VI:=4;K:=6) ; 'FOR' IND 'BY' 'LOC' 'PROC''INT':=PPP 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' ED)'OD' ; VU'IN'('INT'):'SKIP''ESAC' ; CTR+:=7 ; ED : CTRT:= 173 ; 'FOR' I 'WHILE' (VI:=4;K:=6) ; 'FOR' IND 'BY' -(9+PPP)?2 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EE)'OD' ; 'FALSE''DO''REF''INT' XX;'SKIP''OD';CTR+:=7; EE : CTRT:= 174 ; 'TO' 4 'DO' (VI:=4;K:=6) ; 'FOR' IND 'BY' PPP 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EF)'OD' ; CTR+:=7'OD' ; EF : CTRT:= 175 ; 'IF' (VI:=4;K:=6) ; 'TRUE''THEN' 'FOR' IND 'BY' RANG[2,1] 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EG)'OD' ; CTR+:=7 'FI' ; EG : CTRT:= 176 ; ( (VI:=4;K:=6) ; 'FALSE' ! 'SKIP' ! 'FOR' IND 'BY' -(9+PPP)?2 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EH)'OD' ; CTR+:=7 ) ; EH : CTRT:= 177 ; 'CASE' 0 'IN' 1,2 'OUT' (VI:=4;K:=6) ; 'FOR' IND 'BY' PAV(-3) 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EI)'OD' ; CTR+:=7 'ESAC' ; EI : CTRT:= 178 ; ('SKIP' ; (VI:=4;K:=6) ; VU ! ('INT'):'SKIP' ! 'SKIP' ; 'FOR' IND 'BY' 'INT' : (CTR+:=5;-3) 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EJ)'OD' ; CTR+:=7) ; EJ : CTRT:= 179 ; DECR:=2 ; 'FOR' I 'TO' 7 'WHILE' 'BOOL' B=(DECR-:=1)>=0 ; (B! (VI:=4;K:=6) ) ; 'REF''INT'XX ; B 'DO' 'SKIP' ; 'FOR' IND 'BY' PPP 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EK)'OD' 'OD' ; CTR+:=7 ; EK : CTRT:= 180 ; (VI:=4;K:=6) ; ('TRUE' ! 'FOR' IND 'BY' -(9+PPP)?2 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EL)'OD' ! "VIDE") ; CTR+:=7 ; EL : CTRT:= 181 ; 'IF' (VI:=4;K:=6) ; 'FALSE''THEN''REF''INT' XX ; 'SKIP''ELSE' 'FOR' IND 'BY' RANG[2,1] 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EM)'OD' 'FI' ; CTR+:=7; EM : CTRT:= 182 ; ( (VI:=4;K:=6) ; -1 ! "VIDE" , "VIDE" ! 'REF''INT' XX ; 'FOR' IND 'BY' 'LOC' 'PROC''INT':=PPP 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EN)'OD' ) ; CTR+:=7 ; EN : CTRT:= 183 ; 'CASE' 'REF''INT' XX ; VU 'IN'('INT' A):"VIDE" 'OUT' (VI:=4;K:=6) ; 'FOR' IND 'BY' -(9+PPP)?2 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EO)'OD' 'ESAC' ; CTR+:=7 ; EO : CTRT:= 184 ; (VI:=4;K:=6) ; ('SKIP' , 'FOR' IND 'BY' CH'OF'STR 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EP)'OD' , (1.0,0)) ; CTR+:=7 ; EP : CTRT:= 185 ; 'CASE' (VI:=4;K:=6) ; 3'IN' (0,1,2) , "VIDE" , 'FOR' IND 'BY' RANG[2,1] 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EQ)'OD' 'ESAC' ; CTR+:=7 ; EQ : CTRT:= 186 ; ( (VI:=4;K:=6) ; VU ! ('STRING'): 'FOR' IND 'BY' 'IF''TRUE''THEN'PPP'FI' 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' ER)'OD' , ('INT'):"VIDE") ; CTR+:=7 ; ER : CTRT:= 187 ; ('PROC' P=('REF''INT' KK)'VOID' : 'FOR' IND 'BY' CH'OF'STR 'DO' 'REF''INT' XX; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' ES)'OD' ; P( (VI:=4;K:=6) )) ; CTR+:=7 ; ES : CTRT:= 188 ; (VI:=4;K:=6) ; 'VOID' : 'FOR' IND 'BY' RANG[2,1] 'DO' 'REF''INT' XX; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' ET)'OD' ; CTR+:=7 ; ET : CTRT:= 189 ; (VI:=4;K:=6) ; 'FOR' IND 'BY' PAV(-3) 'DO' XX:='LOC''INT'; ((VI+:=INCR)=IND!CTR+:=1 ! TILTI(IND));((K-:=1)<=0!'GOTO' EU)'OD' ) ; CTR+:=7 ; EU : CONTROLE( 231)) ; PRINT((CTR," TESTS ",(CTR=VF!"OK"!"ERROR")))) ######