InterscriptGrammarandSemantics,April15,198310:40amThesemanticsareclaimedtobecomplete,includingerrorconditions2.TheLanguageBasis:SyntaxandSemantics2.1.GrammarOurnotationisbasicallyBNFwithterminalsquotedandparenthesesusedforgrouping.script::=headernodetrailerheader::="INTERSCRIPT/INTERCHANGE/1.0"trailer::="ENDSCRIPT"item::=tag|label|indirection|binding|sBinding|term|openedNode|scopeitems::=empty|itemsitemtag::=name"$"label::=name":"openedNode::=(term|name"%")"|"scope::="["items"]"binding::=name"_"termsBinding::=name"%_"(term|indirection|"'"term"'")term::=primary|termopprimaryop::="+"|""|"*"|"/"|"!"|"LT"|"EQ"primary::=literal|lookup|node|"("term")"literal::=name|integer|number|string|NIL|"#"name::=id|name"."idlookup::=name"^"indirection::=name"%"node::="{"items"}"2.2.AbstractGrammarforInterscriptscript::=nodeitem::=tag|label|indirection|binding|sBinding|term|openedNode|scopeitems::=empty|itemsitemtag::=namelabel::=nameopenedNode::=primary|namescope::=itemsbinding::=nametermsBinding::=namesRhspZ ",0 U#t' ,F23q P Mn $M*a- r L 3!;$bs Iw q F =8%*o-& 47:  BB7 @@qt!@@q-@.@0 >>ta>>q> <<2 "#()/0f34 <= ;;p 99p 7&7&p 55 wT!$z 3D3D 1S1Sq 0# /b/bq 0$&%$(k)G 081379Z -q-q   ++ g"#&7't'+(}+q)6+*k++Ht++,+q-+ ))q \!9%&*/+ -j0 ''pL#$(t)'*i'q+',' %%_;7 ##q  ! > Fs  -_ q  2 "#()/0f34 <= p      & &q 0 5hITVm$vsRhs::=term|indirection|quotedquoted::=termterm::=primary|termopprimaryop::=ADD|SUB|MUL|DIV|SUBSCRIPT|LT|EQprimary::=literal|lookup|node|termliteral::=name|integer|number|string|NIL|"#"name::=id|nameidlookup::=nameindirection::=namenode::=items2.3.FormalSemanticsforInterscript2.3.1.SemanticsorganizedacordingtotheabstractgrammarThesemanticsaredescribedprimarilybythefunctionV:environmentXabstracted-script_VnodeAnabstractedscriptisthetreerepresentationofascriptintermsoftheabstractgrammar.AVnodeisanabstractvaluecorrespondingtoanodeinascriptandisasequenceofvalueitems.ThefollowingprojectionfunctionsprovideaccesstothecomponentsofaVnode.Inparenthesesfollowingeachprojectionnamearethenamesofthefunctionsusedto"add"elementstothatfunction.Vitems(allofthebelow):bindings(make-binding,make-%Binding)Thishastwointerestingcontainedprojections(andoneother,whateverbindingsarenotincludedinthesethree):sBindings(make-%Binding)relBindings(none;relevantbindingsaremanufacturedbymake-node)nonBindings:(everythingbelow)tags(make-tag)labels(make-label)contents(make-lit,make-atom,make-node,make-ind)contents%(make-ind)Avalueitem,visatuplewherem,themark,specifiesthetypeofthetuple;misoneof{ATOM,BIND,BIND%,INT,IND%,LABEL,VNODE,NUM,ONODE%,QUOTED%,SCOPE,TAG}c,thecontent,maybeaname,integer,number,NIL,#(DONTCARE),orasequenceofv*;x,theextrainformation,isinterpretedbasedonthemark,m;inatupleoftheform,thevalueofxisempty.edenotesthecurrentenvironmentatthepointwhereasemanticruleisappliedtoanabstractedscript.Anenvironmentissimplyasequenceofbindingsjustlikethosethatarerelevanttoanode.Thecurrentenvironmentisstrictlyaninheritedattribute(intheattributegrammarsense).Someofthesemanticrulespresentamodifiedetosubstructureintheabstractedscript;see,e.g.,theruledefiningitems.Anenvironmentcanbeaugmentedbyoneormorebindings,bind*,denotedbye1bind*.Fortherootnodeofanabstractedscript,theinitialenvironmentistheexternalenvironmentX.Onlythesemanticsfor"interesting"alternativesofthegrammararegivenbelow.Foranyalternativeconsistingofasinglenon-terminalNTthatisnot,inthissense,interesting,itsvaluesemanticsareV(e,NT);e.g.,thesemanticsfortermin"item::=term"isV(e,term).Ifnoneofthealternativesforaruleareinteresting,therulehasbeenomittedfromthefollowingenumeration.2q b!b!   `.V7 ^;^;   \H\Ht\H\Hq\Ht\H5\Hq=\Ht\H+\Hq3\Ht \H \Hq"\Ht#q\H$\Hq*!\Ht*\Hq,\Ht-\Hq ZVZVq \!9%&*/+  XcXcpL#$(t)Xc*iXcq+Xc,Xc VpVp_; T~T~q R  PPs M@ I u Jr )!$)4q G Mw!t#p%vF? wF?vF?w$F?v&F?q Cu ?C CqOCC %'(,w.%136;  A; xSCZ $&'+C,.1457%= u>A;?`A;BOqEXA;FA; ? !%'* 134:'< C| =  _ V"$n*l-/W3o9*:=u<=vI<=<=kx:v%:: $ 0 3:58[ ?8 #&*0|68j:@B37@xd5v 5!H5 xd3 v"~3"3&,%14 <> x24 v2424 %xd0v00xd.vH.. xd-)v-) q-)&, - 5x7+zv%+z&+zq (u y( (q(u(q(s&u(q(u(qd(u@(q( <u 'q ''&%$ G"$u('q*I'+.0Tt1'1'q4~'t5n'6''q8_'t9O':'q='t>'>m'q@'t@'Ai'qD 'tD'E'qH't%^q%^t%^%^q%^t%^s%^q%^t%^ d%^q%Q%^t&.%^&%^q)%^t*%^+k%^q-,%^u #kq H#k%#k$t*v#k+_#kq,#k-_#k/Dt/#k0#kq6L#k6#k79f:@xuB1#kqB#ku !xq u!xh!xi b %)+%-u1!xq2!x356:qB6uB!xqC!xuD!xqE!xG/zu3q~hh*hhohy Oq pO 7OuOO qWOO #_'+',Y246e;X=? E  0 0  "(*-H035;<=AD  f%A'h)/X54 ~ C *!fy'T~q(~* 2i4*6 =1A~D<G/  uiqr x !$I&V-/2b4B7u=>q@A2B*Gy /w /u /q/I/  W #%) 13c5; uCqD + q,| '),82'48U=c@"B H6' uh { q! "\ $&3)*-a1^ 8uu:U : =qD D F_yG qH u q ` Y5u h q  u v q#z # u&M & q( *" +y- q- u. /# q1X 1 3(489BCF( \tF\;q\tU\;q\vtO\;q\ w \\q"&\ Y p!#&b ,/253h6T >ADZH# XQ JV !&#'G(+'0358K= U q,| '),82'48U=c@"B T! I :- uoT! T!q!T!"dT!$&>)*-q1o 8u:iT!:T!q@T!A1T!ByD]T!qE9T!uFT!G0T!qHT!HT! Ry >|uRy2RyqRyWRyu[RyRyq lRy Ryu#MRy#Ryq%Ry'0Ry(y*Ryq*Ryu+Ry,LRyq.Ry.Ry0l15r749 @C(DZG; P ]5!$&, J{0r J J{ J J{w J tJ{ tJ%J{ %J&J{&J'J{K'J(J{(J)J{)J*J{*J+3J{w+3J+J{+J,qJ{,qJ H$ H Hw HHHHHHHHH?H?HHHHHHwHHHHHq FdBFd DmDmuDmqDm ABA ?W?y?q?w?q!?y#,?w$?x%V?&.?q,?,?y.?q.?/4 =c B=c ;l;l 8B8 66 4bB4b 2j2j y!q2jq"M2j#) / B/ - Q-y!-q"-#u(-)-q*-t+{-w.-x0-q5-6.-y7-q8-9] ++y+q+y \+q!8+"u&B+&+q'+t)+w,u+q(*D x1*D2*Dq6*D77*Dy;*Dq<*D= 'B' %m% y!E%q"!%"'y(%q)h%*D #:B#: !Cm!C y"M!Cq#)!C$(y)!Cq*p!C+M B  9B9 AAy &Aq!A!%y'nAq(JA)& B   Q  Q  y q } !Zt'A ( q* w+ q-j t  q  z)%TVm$name::=ididnameidnameidlookup::=nameV(e,lookup(e,name))indirection::=namemake-ind(name,V(e,lookup(e,name)))node::=itemsmake-node(e,V(e,items))2.3.2Definitionsofsemanticfunctionsmake-tag(name)=make-label(name)=make-atom(name)=make-int(value)=TRUE=FALSE=make-number(value)=make-ind(name,v)=make-quoted(term)=oNode%(name,v*)=make-scope(v*)=ifcontents%(v*)=emptythencontents(v*)elsemake-node(e,v*)=WemustextendthefunctionVtocoverthecasesofvaluesassociatedwithindirectionsandquotedexpressions:V(e,)=cV(e,)=cV(e,)=V(e,c)V(e,)=(m=IND%Vm=ONODE%Vm=QUOTED%)gmake-binding(e,name,v)=bind-name(e,v,name,BIND)make-%binding(e,name,v)=bind-name(e,v,name,BIND%)bind-name(e,v,id,kind)=bind-name(e,v,nameid,kind)=bind-name(e,make-node(e,Vitems(lookup(e,name))1),name)apply(ADD,v1,v2)=(v1.m=INT&v2.m=INT)gmake-int(v1.c+v2.c)apply(ADD,v1,v2)=(v1.m=NUM&v2.m=NUM)gmake-number(v1.c+v2.c)apply(SUB,v1,v2)=(v1.m=INT&v2.m=INT)gmake-int(v1.cv2.c)apply(SUB,v1,v2)=(v1.m=NUM&v2.m=NUM)gmake-number(v1.cv2.c)apply(MUL,v1,v2)=(v1.m=INT&v2.m=INT)gmake-int(v1.c*v2.c)4q bxBbx `` ^m Q^$ \ B\  ZZyZqZy \Zq!8Z" W BW UU "y$2Uq%U%y*Uq+cU,@ SBS Q)Q) yQ)q }Q)!Zy"Q)q#Q)$u N[ Fq K  vt&KKqK}Ktq IP tIPnIPqmIPJIP FA&tFFqQF-F DHt`DHDHqkDHHDHt Aq AgAtAAq"AAt @q @@t@@q@q@ =to=X=qO=+= ; u;q;tE;;qQ;u-;q; 8t8e8qR8/8 6 u6q&6tj6F6q~6uZ6q6  3 uV3q33c3k3yk3xi3@3q3uu3q 3 3"3"3#@3*#@3$j3$j3%13o%13%3%3&3o&3'C3'C3( 3( 3(3(3x)3*3q03u1/3q132{31n1R1ncR11n191n91c1t11q1x1o1q S1u 1q!g1"1 /T y/Tq/Tu/TqP/T-t]-(-q-xh-?-q-u?-q--w-qxZ- 2-q$g-u$-q%|-&,-w'*-qx(-)-q/-u01-q0-1|-w2z-x4- q=-y>[-q?7-x@-@-qCq-uC-qD-E6- +$ +R o$I&*h,G0 7-:n B D )| 'y%'q't''q'uv'q'u'q %y%%q%t%j%q%u~%q%u%q #y%#q#t#j#qW#u4#q#zy #q!#u"#q#D# !y%!q!u!q!u!q!u!q!lQu!w!t !w!w!qu ^!w!t!t"!#}!w(!qu)!w+!t,=q)=u/G=t/u0o=q1b=u2=t3]u3=q4= t K q u ta rq u tf rq tZ u tV ru qQ t w qu t!v ru" q#q t$ w(| q* u3 t4/ ru4 q5 u7 t7 ru88 q9+ 5t 5 5q\ 5u9 5t qa 5u= 5t qe 5ct 5u- 5t uU 5q 5t$ 5w 5qu 5t!~ u" 5q#y 5t$ 5w' 5q) 5u/ 5t0T u0 5q1 5u2 5t3 u3 5q4 5z)TVm$apply(MUL,v1,v2)=(v1.m=NUM&v2.m=NUM)gmake-number(v1.c*v2.c)apply(DIV,v1,v2)=(v1.m=INT&v2.m=INT)gmake-int(v1.c/v2.c)apply(DIV,v1,v2)=(v1.m=NUM&v2.m=NUM)gmake-number(v1.c/v2.c)apply(LT,v1,v2)=(v1.m=INTVv1.m=NUM&v2.m=INTVv2.m=NUM)gifv1.c,id)=ifid'=idthenvelselookup(e,id)lookup(e1,id)=ifid'=idthenvelselookup(e,id)lookup(e,nameid)=e=emptyglookup(lookup(e,name),id)tags(v*)=SORT(get-tags(v*)),whereget-tags(v*v)=get-tags(v*)1get-tags(v)get-tags(v)=ifv.m=TAGthenvelseemptylabels(v*)=SORT(get-labels(v*)),whereget-labels(v*v)=get-labels(v*)1get-labels(v)get-labels(v)=ifv.m=LABELthenvelseemptyVitems(v)=v.m=VNODEgv.cbindings(v)=v.m=VNODEgselect-bindings(Vitems(v.c))select-bindings(v*v)=select-bindings(v*)1select-bindings(v)select-bindings()=select-bindings()=relBindings(e,tag*tag)=relBindings(e,tag*)1relBindings(e,tag)relBindings(e,tag)=match-bindings(e,bindings(lookup(e,tag).c)),wherematch-bindings(e,bind*bind)=match-bindings(e,bind*)1match-bindings(e,bind)match-bindings(e,bind)=lookup(e,bind.x)contents(v*v)=contents(v*)1contents(v)contents(v)=ifv.m=SCOPEthenv.celseifv.m=TAGorv.m=LABELorv.m=BINDthenemptyelsevcontents%(v*v)=contents%(v*)1contents%(v)contents%(v)=if(v.m=IND%Vv.m=ONODE%Vv.m=QUOTED%Vv.m=BIND%)thenvelseempty2.3.3EquivalenceofScriptsAscripts1isequivalenttoascripts2,writtens1~s2iffV(X,s1)=V(X,s2).5q bt bbq\bu9btaqabu=btaqebctbu-btauUbqbt$bwnbqu!Mbt!au"ubq#bt%Dbw(bq+_Oq_u_tC_Oq_t7_u_t3_Ou_q._t_wn_qu M_t _Ou!u_q"_t$D_w'_q)h_u/#_t/_Ou0K_q1>_u1_t2_Ou3_q4 _ ]t ]]q]u]t>\q]u]tC\q]t7]u]t3\u]q.]t]w]qu ]t!R\u!]q#N]t$]w(Y]q*] u3q]t4 \u4]q5]u6<]t6\u7d]q8W] Zt ZeZqZuZtZYq#ZuZtZYq'Z%tZuZtZYuZqZtZw\Zqu7ZtZYu _Zq!Zt#.Zw&wZqu(WZt(ZYu)Zq*Zt,NZw.Zqu0Zt19ZYu1Zq34Zt4Zw7ZmXcqmXXyXuXthXuXqXuXt4XuX 8Xoq 8X X X!nX!nX"X"Xt#^X$X&Xq&X'Xc'X'X'X(X(Xt)X*dXq V}t V}eV}qBV}uV}tV6qFV}u#V}tV6qKV}HtV}uV}tV6u;V}qV}t V}wV}quZV}tV6u V}q!V}t#QV}w&V}qu(zV}t)V6u)V}q+V}t,qV}w.V}qu0V}t1\V6u1V}q3XV}t4V}w7V}mTlcqmTTlyTuTthTuTqTuITtTuqT Tloq T!WTl!WT"Tl"T"Tl"Tt$T$T'Tlq'T(JTlc(JT(Tl(T)1Tl)1Tt*[T+Tq R[t R[KR[qR[uR[tjRqR[uR[tnRqR[tcR[uR[t_RuR[qZR[tR[w$SR[u&3R[t&Ru'[R[q(R[t**R[w-R[q/NR[x/R[0R[q6R[u6R[t7Rq8$R[u9zR[t:Ru:R[q;R[ OyOwdOqOtcOqTO1OuOq*OO0cO'O0y'O%O#O0o#O$%O0$%O$O0$O%O0%Ou&Oq'O0'O(O0c(O)O0)O)O0)O*Oy/NOq0*O1 MyMwdMqMtcMq(MMucMqMMBcMMByMM$MBo$M$MB$M%MB%M&eMB&eMu'Mq(MB(M)tMBc)tM)MB)M*\MB*\M+My0"Mq0M1 KyKqdKA(y KwKKTqKKT*KKTKKToKKTKwOKq K y)Kq*K+0u Fq AFu Fq UFFtFFqFkFukFqF DuDqIDu}DqDuDqDwDDq Du%Dq%D BuBqIBF+B;c+BB;yBuB'BqBtBB;oqBIB;IBB;BB;Bu Bq! B;! B!B;c!B"(B;"(B"B;"B#B;#B$|B;*$|B%B;%B&mB;o&mB&B;&Bu @*q 2@*u @*qF@*@*t@*y@*q@*\@* uo@*q @* >< u><q\><u><q,><) u"><q><w k><q"=>< u(Q><q(>< *q,*,w1\*q3.*y<*q=*> (yV(q2(y"E(q#!(#u&('(q'(x &Bq&Bu!&Bq&Bu&Bq&Bxn&BF&Bq*&Bu&Bq>&B&Bw&Bqx!&B"&Bq(z&Bu(&Bq)&Bx $q$u!$q$$$1c$$1y$u$$q$ti$z$1oqz$$1$$1$V$1V$u $q!;$u!$q""t"ct"""\"\""c""y"u"q"tP" 4"q 4" " "u!"""q$"t%b")"q)"*?"*?"u+H"+"q-Q"t."2 "oq2 "2|"2|"3C"3C"3"3"53"53"5"*5"7"7"7"o7"88"88" !Lt ct!L !L\ \!Lu!Lx ququqcaxFquRq w!qx#m$Eq+u+zq,x )q)u)q))cy u!qtwfquAqJtw%)qu''q) t*nw0qu2}3q4t5q9:o:;;;;<<u=qqRqcRq9q9cqcq*2q2qohqhu  ;q  y9tXq; t Xq !p&#t&Xw'4q(t)RXq*c,=u-q.t/Xq0u3mq4jt5GXq5z)TVm$ g HELVETICA HIPPOYGACHAMATHLAUREL TIMESROMAN TIMESROMAN TIMESROMAN TIMESROMANY TIMESROMAN TIMESROMAN v #4j/75=9interscript-language.tioga15-Apr-83 15:03:21