









		$B#M#S!]#D#O#S(J



$B#O#P#S#5(J
$B%f!<%6!<%:(J $B%^%K%e%"%k(J






















	$BJ!2,9)6HBg3X(J
	$B9S208&5f<<(J	(1986)
1 $B=xO@(J

    OPS5$B$O!"%W%m%@%/%7%g%s!&%7%9%F%`(J(production system) $B$H$7$FCN$i$l$k%W%m%0%i(J
$B%_%s%08@8l$N0l$D$G$"$k!#(JOPS5$B$O<g$H$7$F!"?M9)CNG=!"%(%-%9%Q!<%H!&%7%9%F%`!"$*$h(J
$B$SG'CN?4M}3X$NNN0h$K$*$1$k1~MQ%W%m%0%i%`:n@.$K;HMQ$5$l$k!#$3$N%^%K%e%"%k$G$O!"(J
$BJ8K!!"$*$h$S4pK\E*$JMQK!$K$D$$$F5-=R$9$k!#$?$@$7!"$3$N%^%K%e%"%k$G$OJ!2,9)6HBg(J
$B3X!"9S208&5f<<$G%Q%?!<%s!&%^%C%A%s%0$N8&5f$N$?$a(J Pascal $B$G%$%s%W%j%a%s%H$5$l$?(J
$B$b$N$K$D$$$F@bL@$r$9$k!#(J


1.0 $B@bL@K!$K$D$$$F(J

    $B$J$*!"@bL@$NCf$G=q<0Ey$N@bL@$r$9$k>l9g(JBNF$B5-K!$r4pK\$KMQ$$$k$3$H$H$9$k!#(JBNF
$B5-K!$O<!$N$h$&$J=q<0$G$"$k!#(J

$BJ8;zNs(J ::= $B=q<0(J 

1) '$BJ8;zNs(J'$B$O(J'$B=q<0(J'$B$HI=$9$3$H$r0UL#$9$k!#(J
2) "'#$B$G0O$s$@>l9g$=$N$b$N$r<($9!#(J
3) "|#$B$O$$$:$l$+$r<h$k$3$H$r<($9!#(J 
4) "[ ]#$B$G0O$s$@>l9g$O>JN,2DG=$G$"$k!#(J
5) "%%%#$B$O7+$jJV$7$rI=$9!#(J

$B=q<0(JA ::= [$B=q<0(J1] $B=q<0(J2|$B=q<0(J3

$B$3$l$O(J $B!V(J'$B=q<0(JA'$B$O(J '$B=q<0(J1'$B$r=q$$$F(J '$B=q<0(J2'$B$^$?$O(J '$B=q<0(J3'$B$r=q$/!#(J '$B=q<0(J1'$B$O>JN,(J
$B2DG=$G$"$k!#!W$H8@$&0UL#$K$J$k!#(J 
1.1 $B%W%m%@%/%7%g%s(J  $B%7%9%F%`(J  $B%"!<%-%F%/%A%c(J

    $B%W%m%@%/%7%g%s!&%7%9%F%`$O!"%W%m%@%/%7%g%s$H8F$P$l$k>r7oJ8Ns$G9=@.$5$l$?%W(J
$B%m%0%i%`$G$"$k!#$3$l$i$N%W%m%@%/%7%g%s$O%o!<%-%s%0!&%a%b%j(J(Working memory)$B$H$$(J
$B$&A40hE*$J%G!<%?%Y!<%9$K3JG<$5$l$?I=8=(J(expression)$B$K:nMQ$9$k!#$=$7$F!"%W%m%@%/(J
$B%7%g%s!&%a%b%j$H8F$P$l$kJL$N%a%b%j$K3JG<$5$l$k!#%W%m%@%/%7%g%s$O=>Mh$N%W%m%0%i(J
$B%_%s%08@8l$N(Jif-then$BJ8$K;w$F$$$k!#(J $B$9$J$o$A!"(JC1$B$+$i(JCn$B8D$N>r7o5Z$S(JA1$B$+$i(JAm$B8D$NF0(J
$B:n(J(action)$B$r4^$`%W%m%@%/%7%g%s$O(J

    "$B%o!<%-%s%0!&%a%b%j$K!">r7o(JC1$B$+$i(JCn$B$,F1;~$K@.N)$9$k$h$&$J$b$N$,B8:_$9$k$J(J
$B$i$P!"F0:n(JA1$B$+$i(JAm$B$,<B9T$5$l$k!#(J"

$B$H$$$&$3$H$r0UL#$9$k!#%W%m%@%/%7%g%s$N>r7oItJ,$ODL>o(JLHS($B:8JU(J)$B$H8F$P$l!"F0:nIt(J
$BJ,$O(JRHS($B1&JU(J)$B$H8F$P$l$k!#(J

    $B%W%m%@%/%7%g%s!&%7%9%F%`$N%$%s%?%W%j%?$O!"<!$NG'<1(J-$BF0:n%5%$%/%k(J(recognize 
- act cycle)$B$H8F$P$l$kA`:nNs$r9T$&$3$H$K$h$j!"%W%m%@%/%7%g%s!&%7%9%F%`$r<B9T$9(J
$B$k!#(J

1. [$B>H9g(J(Match)] $B%o!<%-%s%0!&%a%b%j$N8=:_$NFbMF$,M?$($i$l$?>l9g$K!"$I$N%W(J
$B%m%@%/%7%g%s$,K~B-$5$l$k$+$r7hDj$9$k$?$a$K!"$=$N(JLHS($B:8JU(J)$B$rI>2A$9$k!#(J

2. [$B6%9g2r>C(J(Conflict resolution)] $BK~B-$5$l$?:8JU$r;}$D%W%m%@%/%7%g%s$r0l(J
$B$DA*Br$9$k!#$b$7!"K~B-$9$k$h$&$J:8JU$r;}$D%W%m%@%/%7%g%s$,L5$1$l$P%$%s%?%W(J
$B%j%?$r;_$a$k!#(J

3. [$BF0:n(J(Act)] $BA*Br$5$l$?%W%m%@%/%7%g%s$N1&JU$K5-=R$5$l$?F0:n$r9T$&!#(J

4. 1.$B$XLa$k!#(J

    $B%W%m%@%/%7%g%s!&%7%9%F%`$OFs$D$N<gMW$JE@$K$*$$$F!"=>Mh$N%W%m%0%i%_%s%08@8l(J
$B$H$O0[$J$k!#=>Mh$N%W%m%0%i%_%s%08@8l$O!"6I=j$*$h$SA40hJQ?t$KCM$rBeF~$9$k$3$H$K(J
$B$h$C$F>uBV$rId9f2=$9$k!#%W%m%@%/%7%g%s!&%7%9%F%`$O%7%9%F%`$NA40hE*%o!<%-%s%0!&(J
$B%a%b%j$KI=8=$rF~$l$k$3$H$K$h$C$F>uBV$rId9f2=$9$k!#BhFs$K!"@)8f$NN.$l$N4IM}J}K!(J
$B$G$"$k!#=>Mh$N%W%m%0%i%`$O!"%5%V%k!<%A%s8F$S=P$7!"7+$jJV$7!"$*$h$S>r7oJ,4t$r4^(J
$B$`$$$/$D$b$N@)8f9=B$$r4^$`J8$rO"B3E*$K<B9T$9$k!#$=$l$KBP$7!"%W%m%@%/%7%g%s!&%7(J
$B%9%F%`$O!"3F%W%m%@%/%7%g%s$N:8JU$O!"$=$N%W%m%@%/%7%g%s$,E,1~$G$-$k>uBV$N5-=R$G(J
$B$"$k!"$9$J$o$A%o!<%-%s%0!&%a%b%j$NCf$K$=$N%W%m%@%/%7%g%s$,E,1~$G$-$k>pJs$,$"$k(J
$B$H$-!":8JU$O??$H$J$k!#>H9g=hM}(J(match process)$B$r%$%s%?%W%j%?$,9T$&$H$$$&$N$O!"(J
$BMW$9$k$K%o!<%-%s%0!&%a%b%j$NCf$N%G!<%?$r$I$N$h$&$K=hM}$9$k$N$+$rCN$C$F$$$k%W%m(J
$B%@%/%7%g%s$rA\$9$3$H$G$"$k!#%$%s%?%W%j%?$,$=$N$h$&$J%W%m%@%/%7%g%s$r8+$D$1!"$=(J
$B$N1&JU$r<B9T$9$k$H$-!"%o!<%-%s%0!&%a%b%j$OJQ99$5$l$k!#$=$7$F$D$.$N7+$jJV$7$G%$(J
$B%s%?%W%j%?$O!"?7$7$$%G!<%?$r<h$j07$($k%W%m%@%/%7%g%s$r8+$D$1$k$?$a$K:F$S>H9g$r(J
$B9T$&!#(J
1.2  OPS5$B$N%o!<%-%s%0!&%a%b%j(J

    OPS5$B$K$*$$$F!"%o!<%-%s%0!&%a%b%jCf$N>pJs$rI=$9$?$a$K:G$b0lHLE*$K!"MQ$$$i$l(J
$B$kI=8=7A<0$O!"B0@-(J-$BCM(J (attribute-value)$BI=8=$G$"$k!#$3$NI=8=7A<0$OBP>](J (object)
$B$*$h$SBP>]4V$N4X78$r5-=R$9$k$N$KE,$7$?I=8=$G$"$k!"$9$J$o$A!JBgItJ,$NI=8=7A<0$H(J
$BF1MM$K!KB>$NL\E*$K$bB??tMQ$$$k$3$H$,$G$-$k$,!"BP>]$H4X78$r5-=R$9$k$N$K:G$b<+A3(J
$B$JI=8=$G$"$k!#(J


1.2.1 $B%o!<%-%s%0!&%a%b%j$NI=8=(J

    $B%o!<%-%s%0!&%a%b%j$N<B:]$NI=8=$H$7$F$O0l3,$N%Y%/%H%k$GI=$5$l$k!#@hF,$OI,$:(J
$BDj5A$5$l$k%"%H%`$GM?$($k!#$3$NMWAG$r%/%i%9$H8F$V!#$3$N8e$KG$0U$N8D?t!J$?$@$7!"(J
$B%$%s%W%j%a%s%H$K$h$k:GBg$,$"$j$^$9!#$=$N:GBg$O(J 254$B8D$G$9!#!K$NCM$rJB$Y$FI=8=$5(J
$B$l$k!#$^$?!"%o!<%-%s%0!&%a%b%j$K$O!"$=$l$>$l$NMWAG$rG'<1$9$k$?$a$K!"%?%$%`%?%0(J
$B!JMWAG$N@8@.=g$r<($9CM!K$H!"@8@.%k!<%kL>$,?6$i$l$k!#(J


1.2.2 $B%o!<%-%s%0!&%a%b%j$NCM$N0LCV;XDj(J

    $B$=$l$>$l$NCM$N0LCV$KBP$7$F!"%"%/%;%9$r$9$k$3$H$,$G$-$k!#$3$N:]!"$I$NCM$r%"(J
$B%/%;%9$9$k$+$r7h$a$k$?$a!"%$%s%G%C%/%91i;;;R(J"^" $B$r;XDj$9$k!#$3$N1i;;;R$N8e$KB0(J
$B@-L>$rM?$($k!"$^$?$O?tCM$GD>@\$K0LCV$r;XDj$9$k!#?tCM;XDj$N>l9g!"%/%i%9L>$ND>8e(J
$B$G$"$l$P!"(J"^2"$B$H<($9$3$H$,$G$-$k!#(J

1.2.3 $B%o!<%-%s%0!&%a%b%j$NNc(J

    $B%o!<%-%s%0!&%a%b%j$O!"<!$N$h$&$J7A<0$GI=8=$5$l$k!#(J

$B=q<0(J: 
$B%o!<%-%s%0!&%a%b%j(J ::= [$B%(%l%a%s%H(J %%%]
$B%(%l%a%s%H(J ::= $B%?%$%`%?%0(J '['$B@8@.%k!<%kL>(J']' ($B%/%i%9L>(J [$BCM(J %%%])
$B%?%$%`%?%0(J ::= $B@0?t(J
$B@8@.%k!<%kL>(J,$B%/%i%9L>(J ::= $BJ8;z%"%H%`(J
$BCM(J ::= $B%"%H%`(J

$BNc(J: 15 [$B;E;v$N3d$jIU$1(J] ($B;E;v(J $BCn<h$j(J $B%3!<%G%#%s%0(J $BJ8=q@0M}(J)

    $B$?$@$7!"@8@.%k!<%kL>$,(J NIL$B$N>l9g$O%$%s%?%W%j%?!&%3%^%s%I$K$h$j%o!<%-%s%0!&(J
$B%a%b%j$,@8@.$5$l$?$3$H$r<($9!#(J
2.1  OPS5$B$N5/F0(J

    OPS5$B$r5/F0$9$k>l9g$O(JMS-DOS$B$rN)$A>e$2$F(J

A>OPS5
OPS5>

    $B%"%s%@!<%i%$%s$NItJ,$rF~NO$9$k$3$H$G5/F0$9$k!#<!$K=P$F$$$k$N$O(JOPS5$B$N%W%m%`(J
$B%W%H$G$"$k!#$3$3$+$i$O(JOPS5$B$NJ8$r<u$1IU$1$k!#(J

2.2  OPS5$B$NJ8(J

    OPS5$B$N%W%m%`%W%H$,=P$F$$$k;~E@$G%7%9%F%`$O%$%s%?%W%j%?%3%^%s%I!"%W%m%@%/%7(J
$B%g%s!"@k8@J8$J$I$r<u$1IU$1$k!#$=$l$i$O!"(JS$B<0$K$h$jF~NO$9$k!#(JS$B<0$O!"%"%H%`$r3g8L(J
$B$G0O$s$?$b$N$G$"$j!"%"%H%`$OJ8;z$N=8$^$j$r;X$9!#(J

1) $B%"%H%`$NI=8=(J

$B=q<0(J: 
$B%"%H%`(J ::= $BJ8;z%"%H%`(J|$B?tCM%"%H%`(J
$BJ8;z%"%H%`(J ::= $B%G%j%_%?$r4^$^$J$$J8;zNs(J ;'|'$B$d(J'\'$B$r;H$&5-K!$,$"$k(J
$B?tCM%"%H%`(J ::= [+|-] $BL5Id9f@0?t(J [.[$BL5Id9f@0?t(J]] [E[+|-]$BL5Id9f@0?t(J]
$BL5Id9f@0?t(J ::= $B?t;z(J[$B?t;z(J %%%]
$B?t;z(J ::= '0'..'9'

2) $BJ8;z%"%H%`(J

    $B%7%9%F%`$ODL>o1Q>.J8;z$OBgJ8;z$K<+F0E*$KJQ49$7$^$9!#$3$l$rHr$1$k$?$a$K(J
$B$O(J '|'$B$G0O$`!#$^$?(J ' ','(',')','{','}','^'$BEy$O%G%j%_%?!J6h@Z$j5-9f!K$H$J$j(J
$B$^$9$N$G%"%H%`$K4^$a$?$$>l9g$K$b(J '|'$B$G0O$`!#(J 
$B$^$?!"(J '\'$B$O%(%9%1!<%W5-9f$N%3%s%H%m!<%kJ8;z$dFC<l$JJ8;z$r<($9$3$H$KMQ$$$i(J
$B$l$k!#Nc$($P!"(J'\\'$B$O(J'\'$B<+?H$rI=$7!"(J'\ '$B$O6uGr$rI=$7$^$9!#(J "A"$B$+$i(J"Z","[", 
']','^','_'$B$K(J'\'$B$rIU$1$k$H@)8fJ8;z$K$J$j$^$9!#(J
    $B$?$@$7(Jnul$B%3!<%I(J(00H$B%"%9%-!<(J)$B$O%"%H%`$K4^$`$3$H$,$G$-$J$$$N$GCm0U$,I,MW(J
$B$G$"$k!#(J

$BNc(J:
ABC %%%%%%%%%% "ABC" $B$H$$$&%"%H%`(J
abc %%%%%%%%%% 	$BF1>e(J
|abc| %%%%%%%% "abc" $B$H$$$&%"%H%`(J
ABC DEF %%%%%% "ABC" $B$H(J "DEF" $B$H$$$&Fs$D$N%"%H%`(J
|ABC DEF| %%%% "ABC DEF" $B$H$$$&0l$D$N%"%H%`(J
ABC\ DEF %%%%% 	$BF1>e(J
\M %%%%%%%%%%% <CR>$B%3!<%I$r<($9%"%H%`(J
|\|\\\|| %%%%% "|\|" $B$H$$$&%"%H%`(J
|123| %%%%%%%% "123" $B$H$$$&%"%H%`(J

3) $B?tCM%"%H%`(J

    $B$3$N%7%9%F%`$G$O4pK\E*$K?tCM$OIbF0>.?t$GI=8=$5$l$k!#M-8z?tCMEy$O%3%s%Q(J
$B%$%i$N;EMM$K$h$j7hDj$5$l$k$,!"$3$3$G$O(JTURBO-Pascal$B$rMxMQ$7$?$?$a:GBgM-8z7e(J
11$B7e!"?tCMHO0O$O(J1E-38$B$+$i(J1E+38$B$G$9!#(J

$BNc(J:
123
1.256
+56.2
1E-5
-33


4) S$B<0$NI=8=(J

    S$B<0$NI=8=$O%"%H%`$r3g8L$G0O$`$3$H$K$h$jI=8=$9$k!#(JS$B<0$NCf$K(JS$B<0$r4^$`$N(J
$B$O<+M3$G$"$k!#2?$b4^$^$J$$3g8L$O(J NIL$B$HEy2A$G$"$k!#(J

$B=q<0(J:
S$B<0(J ::= '('[$B%"%H%`(J|S$B<0(J % % % ]')'

$BNc(J:
(make $B;E;v(J ^$B=*$o$j(J $B8a8e#1#2;~(J) 
(p test (a b c) --> (write |This is test.| (crlf))) 
()              ; NIL$B$KEy$7$$(J
((list in (list)) is list)

2.3  $B@k8@J8(J

    $B$"$i$+$8$aCM$H$7$F@_Dj$r$7$?$j!"=hM}$K@hN)$A@k8@$9$k$Y$-J8$G$"$k!#(JOPS5$B$G$O(J
$BB0@-L>$N=hM}$N$?$a$K@k8@$,I,MW$G$"$k!#(J

1) vector-attribute$B@k8@(J

    $B%Y%/%H%kB0@-$r$b$C$?B0@-L>$r@k8@$9$k!#(J

$B=q<0(J:
$B%Y%/%H%kDj5A(J ::= (vector-attribute $BB0@-L>(J [% % %])
$BB0@-L>(J ::= $BJ8;z%"%H%`(J  ;$BB0@-L>$O%Y%/%H%k$KIU$1$i$l$kL>A0$G$"$k!#(J

    $B$3$N8e(Jliteralize$B@k8@$G!"$3$NB0@-L>$,;H$o$l$?>l9g%Y%/%H%k0LCV$O:G8e(J
$B$K3d$jEv$F$i$l$k!#(J

$BNc(J:(vector-attribute $B;D$j(J $B;v9`(J)  ;$B;D$j$H;v9`$O%Y%/%H%kB0@-$G$"$k!#(J


2) literal %%%%%%%%%%%% $BB0@-$N%Y%/%H%k0LCV$r;XDj$9$k!#(J

$B=q<0(J:
literal$B@k8@(J ::= (literal $BB0@-L>(J = $B%Y%/%H%k0LCV(J [% % %])
$BB0@-L>$N%Y%/%H%k0LCV$rD>@\;XDj$9$k!#(J

$BNc(J:
(literal $BBP>](J = 5   ;$BBP>]$H$$$&B0@-$O#5HVL\$K3d$jEv$F$i$l$k!#(J
         $B:GBg(J = 6)  ;$B:GBg$H$$$&B0@-$O#6HVL\$K3d$jEv$F$i$l$k!#(J

3) literalize$B@k8@(J

    $B%/%i%9$4$H$NB0@-L>$r@k8@$9$k!#(J

$B=q<0(J:
literalize$B@k8@(J ::= (literalize $B%/%i%9L>(J $BB0@-L>(J[$BB0@-L>(J %%%])

  $B%/%i%9Kh$K!"<h$kB0@-L>$r@k8@$9$k!#B0@-L>$r;HMQ$9$k>l9g$O(Jliteral$B$^$?(J
$B$O(J literalize$B$GI,$:@k8@$r$7$J$1$l$P$J$i$J$$!#(J

$BNc(J:
(literalize $B%4!<%k(J $BBP>](J $B:GBg(J $B;D$j(J $BC#@.(J)

  $B%4!<%k$OBP>]!":GBg!";D$j$NB0@-$r;}$A!"(Jliteral$B@k8@$H$N4X78>e!"BP>](J=5,
$B:GBg(J=6,$B;D$j(J=7,$BC#@.(J=2 $B$,3d$jIU$1$i$l$k!#(J

2.4 $B%k!<%kJ8(J

    $B%k!<%k$O!"(JOPS5$B$N=hM}$r>r7o$N7A$G5-=R$r$7$?$b$N$GM?$($k!#(J

1) p $B%k!<%k(J

    $B%W%m%@%/%7%g%s!&%k!<%k$rM?$($k!#(JOPS5$B$N=hM}$O$3$N%k!<%k$G5-=R$5$l!"F~NO(J
$B$5$l$?%k!<%k$O%W%m%@%/%7%g%s!&%a%b%j$K5-21$5$l$k!#(J

$B=q<0(J:
p$B%k!<%k(J ::= (p $B%k!<%kL>(J $B:8JU(J '-->' $B1&JU(J)
$B:8JU(J ::= $B9NDj%Q%?!<%s(J $B%Q%?!<%s(J-list
$B:8JU(J ::= ($BF0:n(J) [($BF0:n(J) %%%]

    p $B%k!<%k$O%W%m%@%/%7%g%s!&%k!<%k$r5-=R$9$k$?$a$KMQ$$$k!#5-=R$N>\:Y$O8e(J
$B@a$G@bL@$r$9$k!#(J

$BNc(J: 
(p $B<!$N;E;v(J
   { <next> ($B%4!<%k(J ^$BBP>](J <o> ^$BC#@.(J <c>) }
   -($B%4!<%k(J ^$BC#@.(J < <c>) 
-->
    (write $B<!$O(J <o> $B$r=hM}$9$Y$-$G$9!#(J (crlf))
    (modify <next> ^$B:GBg(J 100))

2) catch$B%k!<%k(J

    $B%k!<%W!&%-%c%C%A%c!&%k!<%k$r<($7$^$9!#%k!<%W!&%-%c%C%A%c$O%k!<%W$r@)8B(J
$B$7$?$j!"%k!<%k2r<a2s?t$K$h$j=hM}$NN.$l$rJQ$($k$?$a$KMQ$$$i$l$^$9!#(J after$B$K(J
$B$h$j5/F0$,@_Dj$5$l!"%k!<%k$N2r<a2s?t$K$h$C$F$N$_5/F0$5$l$k$?$a!">H9gIt$r;}(J
$B$A$^$;$s!#$3$N%k!<%k$NCf$G$OJQ?t$d<0$J$I$O;H$($^$;$s!#(J

$B=q<0(J: 
catch$B%k!<%k(J ::= (catch $B%-%c%C%A%cL>(J $B1&JU(J)

$BNc(J: 
(catch $B%k!<%W$N=P8}(J
   (write $B%k!<%W$N6/@)=*N;(J (crlf))
   (make $B%k!<%W=*N;(J))


3) startup$B%k!<%k(J

    $B=i4|>uBV$G<B9T$5$l$k%k!<%k$G$"$k!#(J startup$B%k!<%k$O!"<B9TD>8e$K%o!<%-%s(J
$B%0!&%a%b%j$,6u$G$"$l$P5/F0$5$l!"%7%9%F%`$N=i4|@_Dj$J$I$r9T$&!#(J

$B=q<0(J:
startup$B%k!<%k(J ::= (startup $B1&JU(J)

$BNc(J:
(startup 
    (watch 0)
    (write |$B8N>c?GCG%7%9%F%`%9%?!<%H(J| (crlf))
    (make $B?GCG3+;O(J))

2.5 $B%$%s%?%W%j%?%3%^%s%I(J

    OPS5$B$O5/F08e%H%C%W%l%Y%k$N%3%^%s%I!&%$%s%?%W%j%?$N%b!<%I$K$"$k!#!J(J'OPS5>'
$B$N%W%m%`%W%H$,=P$F$$$k>uBV!K$3$N;~E@$G%f!<%6$O%$%s%?%W%j%?%3%^%s%I$K$h$j%7%9%F(J
$B%`$N>uBV$r@)8f$9$k$3$H$,$G$-$k!#(J

2.5.1 $B%$%s%?%W%j%?%3%^%s%I$N<B9T(J

    $B%W%m%`%W%H(J'OPS5>' $B$N=P$F$$$k;~E@$G%3%^%s%I$rF~NO$9$k$3$H$G2r<a!"<B9T$,$5$l(J
$B$k!#%3%^%s%I$O(J S$B<0$N7A$GM?$($k$,0z?t$r;}$?$J$$>l9g!"3g8L$r>JN,$7$F$b$h$$!#(J

1) make $B%3%^%s%I(J

    make$B%3%^%s%I$O%o!<%-%s%0!&%a%b%j$K%H%C%W%l%Y%k$h$j%(%l%a%s%H$r@8@.DI2C(J
$B$9$k!#(J

$B=q<0(J:
make$B%3%^%s%I(J ::= (make $B%/%i%9L>(J [wm-$BCM(J %%%])
wm-$BCM(J ::= [^ $BB0@-L>(J] $BDj?t(J

$BNc(J:
(make start 1)   ;(start 1)$B$H$$$&%(%l%a%s%H$,DI2C$5$l$k!#(J

2) remove$B%3%^%s%I(J

    remove$B%3%^%s%I$O%o!<%-%s%0!&%a%b%j$+$i%?%$%`%?%0$G;XDj$7$?%(%l%a%s%H$r(J
$B:o=|$9$k!#(J

$B=q<0(J:
remove$B%3%^%s%I(J ::= (remove '*'|$B%?%$%`%?%0(J-list)
$B%?%$%`%?%0(J-list ::= $B%?%$%`%?%0(J [$B%?%$%`%?%0(J %%%]

$BNc(J:
(remove *)    ;'*'$B$r;XDj$9$k$HAm$F$N%(%l%a%s%H$,:o=|$5$l$k!#(J
(remove 5)    ;5$BHV$N%?%$%`%?%0$NIU$$$?%(%l%a%s%H$,:o=|$5$l$k!#(J

3) openfile$B%3%^%s%I(J

    openfile$B%3%^%s%I$O%U%!%$%k$HL>A0$r4X78IU$1$F%*%W!<%s$9$k!#%*!<%W%s$5$l(J
$B$?%U%!%$%k$O$3$NL>A0$G=hM}7O$+$iA`:n$G$-$k!#(J

$B=q<0(J:
openfile$B%3%^%s%I(J ::= (openfile $B%U%!%$%k<1JLL>(J $B%U%!%$%kL>(J 'IN'|'OUT')

    $B%U%!%$%k<1JLL>$O(JOS$B$N%U%!%$%k$H4X78IU$1$r$5$l$?L>A0$H$J$k!#%U%!%$%kL>$N(J
$B;XDjK!$O!"DL>o$N(JOS$B%U%!%$%k$NI=8=$H$[$\F1MM$G$"$k$,!"(J '\'$B5-9f!J%G%l%/%H%jI=(J
$B8=!K$O=hM}7O$,FC<oJ8;z$H$7$F07$&$?$aFs$DB3$1$F<($9!#$^$?%U%!%$%k$KIU$1$k%*(J
$B%W%7%g%s$,>JN,$5$l$k$H<+F0E*$K(J".OPS"$B$,IU$1$i$l$k!#IU$1$?$/$J$1$l$P!":G8e$K(J
"."$B$rIU$1$k!#(J

$BNc(J: 
(openfile dump \\ops5\\trace.lst out)
'dump'$B$H$$$&L>A0$r(J'\OPS5\TRACE.LST'$B$H$$$&=PNO%U%!%$%k$K4X78IU$1$k!#(J

4) closefile$B%3%^%s%I(J

    closefile$B%3%^%s%I$O;XDj$5$l$?%U%!%$%k<1JLL>$N%U%!%$%k$r%/%m!<%:$7$FL>(J
$BA0$N4X78IU$1$r2r=|$9$k!#(J

$B=q<0(J:
closefile$B%3%^%s%I(J ::= (closefile [$B%U%!%$%k<1JLL>(J %%%])

    $B;XDj$5$l$?%U%!%$%k<1JLL>$N%U%!%$%k$r%/%m!<%:$9$k!#0z?t$,$J$$>l9g$OAm$F(J
$B$N%U%!%$%k$,%/%m!<%:$5$l$k!#(J

$BNc(J:
(closefile dump)
closefile         ;$BAm$F%/%m!<%:(J

5) default$B%3%^%s%I(J

    default$B%3%^%s%I$O<B9T;~$NI8=`F~=PNO%U%!%$%k$r;XDj$9$k!#(J

$B=q<0(J:
default$B%3%^%s%I(J ::= (default $B%U%!%$%k<1JLL>(J $BI8=`L>>N(J)
$BI8=`L>>N(J ::= 'accept' | 'trace' | 'write'

    'accept'$B$OI8=`F~NO$N;XDj$G$"$j%U%!%$%k<1JLL>$G<($5$l$k%U%!%$%k$+$iFI$_(J
$B9~$^$l$k!#%U%!%$%k<1JLL>$,(J NIL$B$G$"$l$P%-!<%\!<%I$h$jFI$_9~$^$l$k!#(J 'trace'
$B$O%H%l!<%9>pJs$r=PNO$9$k%U%!%$%k!"(J 'write'$B$OI8=`=PNO%U%!%$%k$r<($9!#%U%!%$(J
$B%k<1JLL>$,(J NIL$B$G$"$l$P%G%#%9%W%l%$$K=PNO$5$l$k!#L5;XDj$J$i$P(JNIL$B$H$J$k!#(J

$BNc(J:
(default dump trace)

6) run$B%3%^%s%I(J

run $B%3%^%s%I$O%k!<%k$N<B9T$r9T$o$;$k!#(J

$B=q<0(J:
run$B%3%^%s%I(J ::= (run [$B<B9T%k!<%k?t(J])
$B<B9T%k!<%k?t(J ::= $B@0?t(J

    $B<B9T%k!<%k?t$G<($5$l$?2s?t$N%k!<%k$r2r<a$7$F%H%C%W%l%Y%k$KLa$k!#<B9T?t(J
$B$,;XDj$5$l$J$1$l$P!"Dd;_>r7o$,H/@8$9$k$^$G<B9T$rB3$1$k!#(J

$BNc(J:
(run 10)   ;10$B2s!"%k!<%k$r<B9T$9$k!#(J
run        ;$B<B9T$r$9$k!#(J

7) ppwm$B%3%^%s%I(J

    $B;XDj$5$l$?>r7o$r;}$D%o!<%-%s%0!&%a%b%j!&%(%l%a%s%H$rI=<($9$k!#(J

$B=q<0(J:
ppwm$B%3%^%s%I(J ::= (ppwm [$B%/%i%9L>(J [$B>H9g%Z%"(J %%%]])
$B>H9g%Z%"(J ::= [^ $BB0@-L>(J] [$B>H9gK!(J] $BDj?t(J

    $B0z?t$H$7$FM?$($i$l$?%Q%?!<%s$H%^%C%A%s%0$9$k%(%l%a%s%H$r0u:~$9$k!#0z?t(J
$B$,M?$($i$l$J$1$l$PAm$F$N%(%l%a%s%H$r0u:~$9$k!#JQ?t$K$h$k%^%C%A%s%0$O;H$($J(J
$B$$!#(J

$BNc(J:
(ppwm $B%4!<%k(J ^$BL\I8(J $BC#@.(J) ;$BL\I8$NC#@.$5$l$?%4!<%k$r0u:~(J

8) wm$B%3%^%s%I(J

    wm$B%3%^%s%I$O%?%$%`%?%0$G;XDj$7$?%o!<%-%s%0!&%a%b%j$N%(%l%a%s%H$rI=<($9(J
$B$k!#(J

$B=q<0(J:
wm$B%3%^%s%I(J ::= (wm [$B%?%$%`%?%0(J %%%])

    $B0z?t$,M?$($i$l$J$1$l$PAm$F$N%(%l%a%s%H$r0u:~$9$k!#(J

$BNc(J:
(wm 2 3 5)   ;2,3,5$BHV$N%?%$%`%?%0$r;}$D%(%l%a%s%H$,0u:~$5$l$k!#(J
wm           ;$BAm$F$N%(%l%a%s%H$r0u:~!#(J

9) pm$B%3%^%s%I(J

    pm$B%3%^%s%I$O%W%m%@%/%7%g%s!&%a%b%jFb$N%k!<%k$r0u:~$9$k!#(J

$B=q<0(J:
pm$B%3%^%s%I(J ::= (pm [$B%k!<%kL>(J %%%])

    $B0z?t$H$7$FM?$($i$l$?%k!<%k$r0u:~$9$k!#0z?t$r;XDj$7$J$1$l$PAm$F$N%k!<%k(J
$B$,0u:~$5$l$k!#;XDj$5$l$?%k!<%k$,B8:_$7$J$/$F$b%(%i!<$OJV$5$J$$$N$GCm0U$7$F(J
$B2<$5$$!#(J

$BNc(J:
(pm $B=i4|2=(J $B=*N;(J)   ;'$B=i4|2=(J'$B$H(J'$B=*N;(J'$B$N%k!<%k$r0u:~!#(J
pm                 ;$BAm$F$N%k!<%k$r0u:~!#(J

10) cs$B%3%^%s%I(J

    cs$B%3%^%s%I$O$=$N;~E@$N6%9g=89g$NFbMF$rI=<($9$k!#(J

$B=q<0(J:
cs$B%3%^%s%I(J ::= cs

    $B$=$N;~E@$G@.N)$r$7$F$$$k%k!<%kL>$HBP1~$9$k%(%l%a%s%H$NJB$S$N7A$G6%9g=8(J
$B9g$NFbMF$rI=<($9$k!#0z?t$O$J$7!#(J

$BNc(J:
cs

11) strategy$B%3%^%s%I(J

    strategy$B%3%^%s%I$O6%9g2r>C$N@oN,$rJQ99!"I=<($r$9$k!#(J

$B=q<0(J:
strategy$B%3%^%s%I(J ::= (strategy [LEX|MEA])

    $B0z?t$G<($5$l$?@oN,(J(LEX$B$^$?$O(JMEA)$B$,A*Br$5$l$k!#0z?t$,>JN,$5$l$?>l9g$O8=(J
$B:_$N@oN,$rI=<($9$k!#(J

$BNc(J:
(strategy mea)   ;MEA$B@oN,$rA*Br$9$k!#(J

12) watch$B%3%^%s%I(J

    watch$B%3%^%s%I$O%H%l!<%9>pJs$r=PNO$9$k%l%Y%k$rJQ99!"I=<($r$9$k!#(J

$B=q<0(J:
watch$B%3%^%s%I(J ::= (watch [0|1|2|3])

    $B0z?t$rM?$($J$$>l9g!"8=:_$N%H%l!<%9%l%Y%k$,I=<($5$l$^$9!#%H%l!<%9%l%Y%k(J
$B$O(J0$B$+$i(J3$B$^$G$"$C$F0J2<$N$h$&$K$J$k!#0z?t$,>JN,$5$l$?>l9g$O8=:_$N%l%Y%k$,I=(J
$B<($5$l$k!#(J

0) $B%H%l!<%9>pJs$r=PNO$7$J$$!#(J
1) $B<B9T%k!<%k$r=PNO$9$k!#(J
2) $B<B9T%k!<%k$H%o!<%-%s%0!&%a%b%j$NJQ2=J,$r=PNO$9$k!#(J
3) $B<B9T%k!<%k!"%o!<%-%s%0!&%a%b%j$*$h$S6%9g=89g$NJQ2=J,$r=PNO$9$k!#(J

$BNc(J:
(watch 2)		;$B%H%l!<%9%l%Y%k$r(J2$B$K$9$k!#(J

13) excise$B%3%^%s%I(J

    $B6%9g=89gFb$N<B9T2DG=$J%k!<%k$r:o=|$9$k!#$3$l$O%k!<%k$N<B9T$r0U<1E*$KHr(J
$B$1$?$$>l9g$KMQ$$$k!#(J

$B=q<0(J:
excise$B%3%^%s%I(J ::= (excise $B%k!<%kL>(J [$B%k!<%kL>(J %%%])
$BNc(J:
(excise $BLn:Z$rGc$&(J)     ;$B!VLn:Z$rGc$&!W$r<h$j=|$/!#(J

14) @ $B%3%^%s%I(J

    @ $B%3%^%s%I$G$O0z?t$GM?$($i$l$?%U%!%$%k$rFI$_9~$_!"%3%^%s%I$H$7$F<B9T$9(J
$B$k!#%k!<%k$r%U%!%$%k$GM?$($?$$>l9g;~$K$O!"$3$N%3%^%s%I$GFI$_9~$`!#B?=E$K$3(J
$B$N%3%^%s%I$,H/9T$5$l$F$b$h$$$,!"F1;~MxMQ$G$-$k%U%!%$%k?t$K$O8BEY$,$"$kE@$K(J
$BCm0U$,I,MW$G$"$k!#(J

$B=q<0(J:
@$B%3%^%s%I(J ::= (@ $B%U%!%$%kL>(J)
$BNc(J:
(@ \\ops5\\startup)    ;$B%G%l%/%H%j(J"\OPS5\STARTUP.OPS"$B%U%!%$%k$N<B9T!#(J

15) exit$B%3%^%s%I(J

    OPS5$B$N%7%9%F%`$r=*N;$7$F(JOS$B$N%3%^%s%I%l%Y%k$KLa$j$^$9!#(J"^Z"$B!J%3%s%H%m!<(J
$B%k(JZ $BJ8;z%3!<%I(J"1AH"$B!K$G$bF1MM$K07$o$l$k!#0z?t$O$J$7(J

$B=q<0(J:
exit$B%3%^%s%I(J ::= exit
$BNc(J:
exit

16) after$B%3%^%s%I(J

after$B%3%^%s%I$O%-%c%C%A%c!&%k!<%k$N5/F0$r@_Dj$9$k!#%-%c%C%A%c$N;XDj$OF1;~(J
$B$K0l$D$7$+$G$-$J$$!#=E$M$F(Jafter$B%3%^%s%I$r<B9T$9$k$HA0$N;XDj$O2r=|$5$l$k!#(J

$B=q<0(J:
after$B%3%^%s%I(J ::= (after [$B<B9T%k!<%k?t(J $B%k!<%kL>(J])

    $B0z?t$r;XDj$7$J$1$l$P!";XDj$N2r=|$,9T$o$l$k!#%k!<%k$,<B9T%k!<%k?t$G<($7(J
$B$?2s?t<B9T$5$l$?8e!"%-%c%C%A%c!&%k!<%k$,<B9T$5$l$k!#(J

$BNc(J:
(after 10 $B%k!<%WC&=P(J)

17) write$B%3%^%s%I(J

    $BJ8;z$r=PNO$7!"%3%^%s%I%U%!%$%k$G%a%C%;!<%8=PNO$KMxMQ$G$-$k!#(J17)$B0J9_$N(J
$B%3%^%s%I$O%*%j%8%J%k$N(JOPS5$B$G$ODj5A$5$l$F$$$^$;$s$N$GCm0U$7$F2<$5$$!#(J

$B=q<0(J:
write$B%3%^%s%I(J ::= (write [$B%U%!%$%k<1JLL>(J] [$B=PNOMWAG(J %%%])
$B=PNOMWAG(J ::= $B%"%H%`(J|($B=PNOA`:n(J)  ;$B%"%H%`$J$i$P$=$N$^$^=PNO$5$l$^$9!#(J
$B=PNOA`:n(J ::= crlf               ;$B2~9T(J
            |tabto $B@0?t(J         ;$B2#0LCV;XDj(J
            |rjust $B@0?t(J         ;$B0u:~I};XDj$N1&$E$a(J
            |cls                ;$B!J$*$^$1(J:$B2hLL>C5n!K(J
$BNc(J:
(write (cls) (tabto 20) $B$3$l$O%O%N%$$NEc$N%k!<%k$G$9!#(J(crlf))
; |\[34m| $B$H$J$I$H$$$&%"%H%`$r=PNO$9$k$HJ8;z$N%+%i!<@)8f$b$G$-$k!#(J
18) save$B%3%^%s%I(J

   $B%W%m%@%/%7%g%s!&%a%b%j$NFbMF$r%U%!%$%k$K=q$-=P$9!#(J

$B=q<0(J:
save$B%3%^%s%I(J ::= (save $B%U%!%$%kL>(J)
$BNc(J:
(save $B%5%s%W%k(J)

19) optimize$B%3%^%s%I(J

    $B%M%C%H%o!<%/!&%3!<%I@8@.$N:GE,2=%l%Y%k$r;XDj$9$k!#9bB.2=%"%k%4%j%:%`$N(J
$B8&5f@.2L$r%7%9%F%`$KH?1G$5$;$k$3$H$,$G$-$k$,!"EvA3!":GE,2=$rB?$/$+$1$k$[$I(J
$BJQ49;~4V$OD9$/$J$k$?$a!":n@.Cf$ODc$a$K!"<B9TCJ3,$G$O!"Bg$-$J:GE,2=N($rMQ$$(J
$B$l$P$h$$!#(J

$B=q<0(J:
optimize$B%3%^%s%I(J ::= (optimize [$B:GE,2=%l%Y%k(J])
$B:GE,2=%l%Y%k(J ::= 0|1|2|3|6|7

    $B:GE,2=$N>\:Y$O!"(J'$B!V9bB.%Q%?!<%s%^%C%A%s%0$N8&5f!W(J:$BJ!2,9)6HBg3XB46H8&5f(J
$BO@J8(J' $B$r;2>H$7$F2<$5$$!#0z?t$,;XDj$5$l$J$1$l$P!"8=:_$N:GE,2=%l%Y%k$,I=<($5(J
$B$l$^$9!#B>$NCM$r;XDj$7$?>l9g!"%S%C%H$G<($5$l$k$?$a>e0L7e$OL5;k$5$l$k!#(J

0:$B:GE,2=$J$7(J
1:$B6&DL%N!<%I$r$^$H$a$k(J
2:$BGSB>%N!<%IMxMQ(J
3:$B6&DL%N!<%I$r$^$H$a$+$D!"GSB>%N!<%IMxMQ(J
6:$BGSB>%N!<%IMxMQ$7$F%/%i%9%=!<%H$r9T$&(J
7:$B6&DL%N!<%I$r$^$H$a$+$D!"GSB>%N!<%IMxMQ$7$F%/%i%9%=!<%H$r9T$&(J

$BNc(J:
(optimize 7) ;$B:GE,2=$r:G9b$K$9$k(J

2.6 $B%k!<%k>r7oIt(J

    $B%k!<%k$O%o!<%-%s%0!&%a%b%j$H>r7oIt$,%^%C%A%s%0$7$?$H$-5/F0$5$l$k!#$3$N5/F0(J
$B>r7o$r=@Fp$KI=8=$9$k$?$a$K!"$$$/$D$+$NI=8=J}K!$rAH$_9g$o$;$FJ#;($J>r7o5-=R$b$G(J
$B$-$k$h$K$J$C$F$$$k!#$3$3$G$O$^$:!"%k!<%k$N:8JU$K$D$$$F@bL@$9$k!#(J

$B=q<0(J:
p$B%k!<%k(J ::= (p $B%k!<%kL>(J $B:8JU(J '-->' $B1&JU(J)

$B:8JU(J ::= $B9NDj%Q%?!<%s(J $B%Q%?!<%s(J-list
$B%Q%?!<%s(J-list ::= [$B>H9g%Q%?!<%s(J $B%Q%?!<%s(J-list]
$B>H9g%Q%?!<%s(J ::= $B9NDj%Q%?!<%s(J | $BH]Dj%Q%?!<%s(J
$BH]Dj%Q%?!<%s(J ::= '-' $B%Q%?!<%s(J
$B9NDj%Q%?!<%s(J ::= $B%Q%?!<%s(J | '{' $BJQ?t%Q%?!<%s(J '}'
$BJQ?t%Q%?!<%s(J ::= $B%Q%?!<%s(J $B%Q%?!<%sJQ?t(J | $B%Q%?!<%sJQ?t(J $B%Q%?!<%s(J
$B%Q%?!<%sJQ?t(J ::= $BJQ?t(J
$B%Q%?!<%s(J ::= '(' $B%/%i%9L>(J $B>H9g(J-list ')'
$B>H9g(J-list ::=[$B>H9g(J $B>H9g(J-list]
$B>H9g(J ::= ['^' $BB0@-L>(J] $B:8JU(J-term
$B:8JU(J-term ::= [$B>H9gK!(J] $B>H9gCM(J | $B>H9g%0%k!<%W(J
$B>H9gCM(J ::= $BJQ?t(J | $BDj?t(J
$BJQ?t(J ::= <$B%"%H%`(J>       ;"<"$B$G;O$^$j(J">"$B$G=*$o$k%"%H%`$OJQ?t!#(J
$BDj?t(J ::= ['//'] $B%"%H%`(J  ;'//'$B$rIU$1$k$HFC<l$J%"%H%`$bDj?t$H$G$-$k(J 
$B>H9g%0%k!<%W(J ::= or-list
               | '{' $B>H9gCM(J [%%%]|or-list '}'
or-list ::= '<<' $B>H9gCM(J [%%%] '>>'
$B>H9gK!(J ::= '='   ;$BEy$7$$(J
         | '<>'  ;$BEy$7$/$J$$(J
         | '<'   ;$B>.$5$$(J
         | '<='  ;$B0J2<(J
         | '>'   ;$BBg$-$$(J
         | '>='  ;$B0J>e(J
         | '<=>' ;$B7?$,Ey$7$$(J

1) $B%(%l%a%s%H$N>H9g(J

    $B>r7oIt$O%o!<%-%s%0!&%a%b%j$N>uBV$rD4$Y$i$l$k$h$&$K5-=R$9$k!#%(%l%a%s%H(J
$B$N%Q%?!<%s$r<($9$N$K$^$:%/%i%9L>(J($BBh0l$NCM(J)$B$OI,?\$G$"$k!#(J
    $B!V(J"$B%4!<%k(J"$B$H$$$&%/%i%9$r;}$C$?%(%l%a%s%H$,B8:_$9$k!#!W$H$$$&>r7o$G$"$l(J
$B$P(J"($B%4!<%k(J)"$B$H5-=R$9$k!#!V(J"$B%4!<%k(J"$B$H$$$&%/%i%9$G(J 2$BHVL\$NCM$,(J"$BC#@.(J"$B$G$J$$%((J
$B%l%a%s%H$,B8:_$9$k!#!W$J$i$P(J "($B%4!<%k(J <> $BC#@.(J)"$B$^$?$O(J"($B%4!<%k(J ^2 <> $BC#@.(J)"
$B$H5-=R$9$k!#(J"<>"$B$OEy$7$/$J$$$3$H$r>r7o$H$9$k$3$H$r<($9!#(J 2$BHVL\$N$H$$$&Be$o(J
$B$j$KB0@-L>$rMQ$$$F!J(Jliteral$B$^$?$O(Jliteralize$B@k8@!K<($9$3$H$b$G$-$k!#(J "($B%4!<(J
$B%k(J ^$B=hM}(J <> $BC#@.(J)"$B$H$J$k!#?tCM$J$i$PBg>.$NHf3S$r$9$k$3$H$,$G$-$k!#0J2<$K!"(J
$BC1=c$J>l9g$N>H9g$K$D$$$FNs5s$9$k!#(J

$B(#(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(((!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!($(J
$B("(J   $B%^%C%A%s%0%Q%?!<%s(J         $B("(J $B0UL#$NNc!J2r<aK!$OMxMQ<T$N<+M3$G$"$k!K(J     $B("(J
$B('(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!()(J
$B("(J($B%4!<%k(J ^$BL\I8(J $B%I%"(J ^$BF0:n(J $BJb$/(J)$B("L\I8$N%I%"$KJb$$$F$$$/$3$H$,%4!<%k$G$"$k$+!#("(J
$B("(J                              $B("(J                                            $B("(J
$B("(J($B%4!<%k(J ^$B=hM}(J <> $BC#@.(J)        $B("=hM}$,C#@.$G$-$F$$$J$$%4!<%k$,$"$k$+!#(J      $B("(J
$B("(J                              $B("(J                                            $B("(J
$B("(J($B0YBX(J ^$B%l!<%H(J < 180 ^$BC10L(J $B1_(J) $B("0YBX$N%l!<%H$,(J180$B1_L$K~$G$"$k$+!#(J           $B("(J
$B("(J                              $B("(J                                            $B("(J
$B("(J($B<0(J ^$BCM(J1 <=> 0)               $B("<0$NCM(J1$B$O?tCM$G$"$k$+!#(J                     $B("(J
$B(&(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(*(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(%(J


2) $BJQ?t$NMxMQ(J

    $BJQ?t$O$I$s$JCM$H$G$b%^%C%A%s%0$9$k!#$3$l$rMQ$$$F!"Aj8_$N4X78$r5-=R$9$k(J
$B$3$H$,$G$-$k!#$^$?%"%/%7%g%sFb$G%o!<%-%s%0!&%a%b%j$NCM$r0zMQ$7$?$$>l9g$OH>(J
$B?t$r2p$7$F9T$&!#JQ?t$O(J"<"$B$G;O$^$j(J">"$B$G=*$o$k%"%H%`$rMQ$$$k!#(J


$B(#(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(((!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!($(J
$B("(J   $B%^%C%A%s%0%Q%?!<%s(J         $B("(J               $B0UL#$NNc$N<+M3(J               $B("(J
$B('(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!()(J
$B("(J($B?tNs(J <x> > <x>)              $B("?tNs$N(J2$BHVL\$NCM$h$j(J3$BHVL\$NJ}$,Bg$-$$$+!#(J    $B("(J
$B("(J                              $B("(J                                            $B("(J
$B("(J($B%4!<%k(J ^$BL\I8(J <$B0LCV(J>)         $B("L\I8$NCM$rB>$G0zMQ$9$k!#(J                    $B("(J
$B("(J                              $B("(J                                            $B("(J
$B("(J($B0YBX(J ^$B%l!<%H(J < <v> ^$BC10L(J <n>)$B("C10L$O0YBX$N%l!<%H$,B>$G<($5$l$k$h$j>.$5$$!#("(J
$B(&(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(*(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(%(J

3) $BJ#9g>r7o$N;XDj(J

    $B0l$D$N%(%l%a%s%HFb$N>r7o$r$$$/$D$+=E$M$k$3$H$G$h$j0lHLE*$JI=8=$,2DG=$G(J
$B$"$k!#$3$N$?$a(JOPS5$B$G$O!"O@M}@Q!"NQM}OB$NI=8=$,$G$-$k!#(J
    $BO@M}@Q$D$^$j(J AND$B$K$h$k7k9g$K$h$kI=8=$O(J"{  }#$B$G>r7o$r0O$s$GI=$9Nc$($P!"(J
$B!V(J90$B0J>e$G(J100$BL$K~!W$G$"$l$P(J"{ >= 90 < 100 }"$B$HI=$9$3$H$,$G$-$k!#(J
    $BO@M}OB$D$^$j(JOR$B$K$h$k7k9g$K$h$kI=8=$O(J"<< >>#$B$G>r7o$r0O$s$GI=$9Nc$($P!"(J
$B!V(J90$BL$K~$^$?$O(J100$B0J>e!W$G$"$l$P(J"<< < 90 >= 100 >>"$B$HI=$9$3$H$,$G$-$k!#(J


$B(#(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(((!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!($(J
$B("(J   $B%^%C%A%s%0%Q%?!<%s(J         $B("(J               $B0UL#$NNc$N<+M3(J               $B("(J
$B('(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!()(J
$B("(J($BMxN((J ^$B856b(J { >= 20 < 100})   $B("856b$,(J20$BK|1_0J>e(J100$BK|1_L$K~$N>l9g$NMxN($O!#(J $B("(J
$B("(J                              $B("(J                                            $B("(J
$B("(J($B<0(J ^$B1i;;;R(J { <> * <> /})     $B("1i;;;R$O(J*$B$G$b(J/$B$G$b$J$$!#(J                    $B("(J
$B("(J                              $B("(J                                            $B("(J
$B("(J(60D^ ^O08 << 8WL^ =M_0D^ >>) $B("%+!<%I$O%/%i%V$+%9%Z!<%I$G$"$k!#(J            $B("(J
$B("(J                              $B("(J                                            $B("(J
$B("(J($B<0(J ^$B1i;;;R(J << *  / >>)       $B("1i;;;R$O(J*$B$+(J/$B$G$"$k!#(J                        $B("(J
$B(&(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(*(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(%(J

    $B$?$@$7!"(J AND$B$NCf$G(JOR$B$rMQ$$$k$3$H$O$G$-$k$,5U$O5v$5$l$J$$!#$^$?!"$D$^$j(J
$B<!$N$h$&$J>l9g$G$"$k!#(J AND$B$OJQ?t$H7k9g$9$k>l9g$K>r7o$rIU$1$?$j$9$k$3$H$,$G(J
$B$-$k!#(J

<< { > 5 < 10 } { > 15 < 20 } >> ;$B$3$N$h$&$J5-=R$OJXMx$G$"$k$,5v$5$l$J$$!#(J
{<x> << a b >>}                  ;$B$3$l$O5v$5$l$k!#(J
4) $B%(%l%a%s%HC10L$N=hM}5-=R(J

    $B%(%l%a%s%H$4$H$N=hM}$OA0@a$N$h$&$K9T$o$l$k$,%(%l%a%s%HF1;N$r>r7o$H$7$F(J
$B7k9g$r$7$F$5$i$KJ#;($J>r7o$r<($9$3$H$,$G$-$k!#$3$N;~$N7k9g$OO@M}@Q$N$_$G$"(J
$B$k!#>r7oIt$O(J 1$B8D0J>e$N%^%C%A%s%0%Q%?!<%s$r7k9g$7$FI=$9!#$3$NI=8=$O%Q%?!<%s(J
$B$rNs5s$9$k$@$1$G9T$o$l$k!#Nc$($P!"(J"$B%4!<%k(J"$B$N%(%l%a%s%H$H(J"$BBP>](J"$B$N%(%l%a%s%H(J
$B$,F1;~$KB8:_$9$k$3$H$r>r7o$H$7$?$1$l$P(J"($B%4!<%k(J)($BBP>](J)"$B$H$9$l$P$h$$!#!JDL>o(J
$B=q$/>l9g!"2~9T$rF~$l$^$9!#!K%Q%?!<%sFb$G7k9g$5$l$?JQ?t$O!"%(%l%a%s%H$K$^$?(J
$B$,$C$F<($5$l$F$b5v$5$l$^$9!#$^$?!"$3$l$i$N%(%l%a%s%H$4$HJQ?t$K4X78IU$1$F%"(J
$B%/%7%g%s$G;2>H$9$k$3$H$,$G$-$^$9!#$3$l$O%(%l%a%s%H$r(J"{  }#$B$G0O$s$GJQ?t$GB+(J
$BG{$7$^$9$,!"%Q%?!<%sFb$G$3$l$rMxMQ$9$k$3$H$O$G$-$^$;$s!#!J%"%/%7%g%s$G$N%((J
$B%l%a%s%H;XDj$N$_$KE,MQ!K$^$?%Q%?!<%s$NH]Dj7k9g$b(J 2$BHVL\0J9_$N%Q%?!<%s$K$D$$(J
$B$F5v$5$l$k!#$3$l$O!"$=$N%Q%?!<%s$H%^%C%A%s%0$9$k%(%l%a%s%H$,B8:_$7$J$$$3$H(J
$B$,>r7o$H$J$k!#$3$NH]Dj%Q%?!<%s$rJQ?t$G7k9g$9$k$3$H$O$G$-$J$$!#!JEvA3B8:_$7(J
$B$J$$%(%l%a%s%H$H$O7k9g$G$-$J$$!K(J

$B(#(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(((!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!($(J
$B("(J   $B%^%C%A%s%0%Q%?!<%s(J         $B("(J               $B0UL#$NNc$N<+M3(J               $B("(J
$B('(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!()(J
$B("(J($BMxN((J ^$B856b(J { >= 20 < 100})   $B("856b$,(J20$BK|1_0J>e(J100$BK|1_L$K~$N$G$"$j(J         $B("(J
$B("(J                              $B("(J                                            $B("(J
$B("(J($B8}:B(J ^$BJ,N`(J $B4]M%(J)             $B("$+$DJ,N`$,4]M%$N8}:B$,$"$k!#(J                $B("(J
$B('(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!()(J
$B("(J($BJQ?t(J ^$BCM(J { <x> <=> 0 })      $B("JQ?t$NCM$,?tCM$G$"$j(J                        $B("(J
$B("(J                              $B("(J                                            $B("(J
$B("(J($B@)8B(J ^$B>e8B(J < <X> ^$B2<8B(J > <x>)$B("$+$D@)8B$N>e8BL$K~$G2<8B$h$jBg$-$$!#(J        $B("(J
$B('(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!()(J
$B("(J{<e1> ($B%4!<%k(J <x>)}           $B("$"$k%4!<%k$N%(%l%a%s%H$r(J<e1>$B$H$7!"$+$D(J      $B("(J
$B("(J                              $B("(J                                            $B("(J
$B("(J{<e2> ($B%4!<%k(J <> <x>)}        $B("$=$l$H$O0[$J$k%(%l%a%s%H(J<e2>$B$,B8:_$9$k!#(J    $B("(J
$B('(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!()(J
$B("(J{($B%4!<%k(J <x>) <e1>}           $B("(J                                            $B("(J
$B("(J                              $B("(J     $BF1>e(J    $B!JJQ?t$OA08e$I$A$i$G$b$h$$!K(J   $B("(J
$B("(J{($B%4!<%k(J <> <x>) <e2>}        $B("(J                                            $B("(J
$B('(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!()(J
$B("(J($B%4!<%k(J <x>)                  $B("$"$k%4!<%k$,$"$j!"$+$D(J                      $B("(J
$B("(J                              $B("(J                                            $B("(J
$B("(J-($B%4!<%k(J <> <x>)              $B("$=$NB>$N%4!<%k$OB8:_$7$J$$!#(J                $B("(J
$B(&(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(*(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(%(J

2.7 $B%k!<%k<B9TIt(J

    OPS5$B$N<B9T$O%k!<%k$N1&JU$N%"%/%7%g%s$G<($5$l<B9T$5$l$k!#$3$N%"%/%7%g%s(J
$B$N<B9T$K$h$j!"%o!<%-%s%0!&%a%b%j$NFbMF$rJQ2=$5$;$F=hM}$r9T$&Lu$G$"$k!#(J 
$B=q<0(J:
p$B%k!<%k(J ::= (p $B%k!<%kL>(J $B:8JU(J '-->' $B1&JU(J)

$B:8JU(J ::= ($BF0:n(J) [($BF0:n(J) %%%]
$BF0:n(J ::= 'addstare' $B%U%!%$%kL>>N(J   ;($BL$%5%]!<%H(J)
       | 'after' $B?tCM(J $BL>A0(J         ;$B%-%c%C%A%c!&%k!<%k$N5/F0@_Dj(J
       | 'bind' $BJQ?t(J $B3d$jEv$F<0(J    ;$B%m!<%+%kJQ?t$NB+G{(J
       | 'call' $BL>A0(J change-list   ;($BL$%5%]!<%H(J)
       | 'cbind' $BJQ?t(J              ;($BL$%5%]!<%H(J)
       | 'closefile' [$B%U%!%$%k<1JLL>(J %%%] ;$B%U%!%$%k$N%/%m!<%:(J
       | 'default' $B%U%!%$%k<1JLL>(J $BI8=`L>(J  ;$BI8=`CM%U%!%$%k$r7h$a$k(J
       | 'halt' $B=*N;%^!<%/(J                ;$B@)8f$r%9!<%Q!<%P%$%6$KLa$9(J
       | 'make' $B%/%i%9(J $BJQ99(J-list          ;$B#W#M$r@8@.$9$k(J
       | 'modify' $B1&JUJQ?t(J $BJQ99(J-list      ;$B#W#M$rJQ99$9$k(J
       | 'openfile' $B%U%!%$%k<1JLL>(J $B%U%!%$%kL>(J $BF~=PNO;XDj(J ;$B%*!<%W%s=hM}(J
       | 'remove' $B1&JUJQ?t(J [$B:8JUJQ?t(J %%%] ;$B#W#M$r:o=|$9$k(J
       | 'restorestate' $B%U%!%$%k<1JLL>(J    ;($BL$%5%]!<%H(J)
       | 'savestate' $B%U%!%$%k<1JLL>(J       ;($BL$%5%]!<%H(J)
       | 'write' [$B%U%!%$%k<1JLL>(J] [$B=PNOMWAG(J %%%] ;$B0z?t$r=q$-$@$9(J

    $B0J2<$K<B9TJ8$K$D$$$F$=$l$>$lF0:n$H=q<0$K$D$$$F@bL@$9$k!#(J

1) after$B%"%/%7%g%s(J

    $B%-%c%C%A%c!&%k!<%k$N5/F0$r@_Dj$9$k!#%-%c%C%A%c$N;XDj$OF1;~$K0l$D$7$+$G(J
$B$-$^$;$s!#=E$M$F(Jafter$B$r<B9T$9$k$HA0$N;XDj$O2r=|$5$l$k!#$3$l$O(J after$B%3%^%s(J
$B%I$HA4$/F1$8:nMQ$r$9$k%"%/%7%g%s$G$"$k!#(J

$B=q<0(J:
after$B%"%/%7%g%s(J ::= after $B<B9T%k!<%k?t(J $B%k!<%kL>(J

    $B%k!<%k$,<B9T%k!<%k?t$G<($7$?2s?t<B9T$5$l$?8e!"%-%c%C%A%c!&%k!<%k$,<B9T(J
$B$5$l$k!#(J

$BNc(J:
(after 10 $B%k!<%WC&=P(J)

2) bind$B%"%/%7%g%s(J

    bind$B$O%m!<%+%kJQ?t$rB+G{!JBeF~!K$9$k!#(Jbind$B$9$kJQ?t$O:8JU$G;H$o$l$F$$$F(J
$B$O$J$i$J$$!#(J


$B=q<0(J:
bind$B%"%/%7%g%s(J ::= (bind $BJQ?t(J $BBeF~<0(J)
$BBeF~<0(J ::= $BDj?t(J|$BJQ?t(J|$B<0(J
$B<0(J ::= (compute $B7W;;<0(J)
     | (accept [$B%U%!%$%k<1JLL>(J])

    compute$B$O7W;;<0$NCM$rJV$9!#(Jaccept$B$OF~NO4X?t$G;XDj$N%U%!%$%k!JL5;XDj$J(J
$B$iI8=`%U%!%$%k!K$+$iF~NO$r9T$&!#<0$J$I$K$D$$$F$O8e$G@bL@$rJL$KIU$1$k!#(J

$BNc(J:
(bind <$BCM(J> (compute (<n> * 4)+10))

3) closefile$B%"%/%7%g%s(J

    $B;XDj$5$l$?%U%!%$%k<1JLL>$N%U%!%$%k$r%/%m!<%:$7$FL>A0$N4X78IU$1$r2r=|$9(J
$B$k!#%$%s%?%W%j%?!&%3%^%s%I$HF1MM$NF0:n$G$"$k!#(J

$B=q<0(J:
closefile$B%"%/%7%g%s(J ::= (closefile [$B%U%!%$%k<1JLL>(J %%%])

    $B;XDj$5$l$?%U%!%$%k<1JLL>$N%U%!%$%k$r%/%m!<%:$9$k!#0z?t$,$J$$>l9g$OAm$F(J
$B$N%U%!%$%k$,%/%m!<%:$5$l$k!#(J

$BNc(J:
(closefile dump)

4) default$B%"%/%7%g%s(J

    $BI8=`F~=PNO%U%!%$%k$r;XDj$9$k!#(J

$B=q<0(J:
default$B%"%/%7%g%s(J ::= (default $B%U%!%$%k<1JLL>(J $BI8=`L>>N(J)
$BI8=`L>>N(J ::= 'accept' | 'trace' | 'write'

    'accept'$B$OI8=`F~NO$N;XDj$G$"$j%U%!%$%k<1JLL>$G<($5$l$k%U%!%$%k$+$iFI$_(J
$B9~$^$l$k!#%U%!%$%k<1JLL>$,(J NIL$B$G$"$l$P%-!<%\!<%I$h$jFI$_9~$^$l$k!#(J 'trace'
$B$O%H%l!<%9>pJs$r=PNO$9$k%U%!%$%k!"(J 'write'$B$OI8=`=PNO%U%!%$%k$r<($9!#%U%!%$(J
$B%k<1JLL>$,(J NIL$B$G$"$l$P%G%#%9%W%l%$$K=PNO$5$l$k!#(J

$BNc(J:
(default dump trace)

5) halt$B%"%/%7%g%s(J

    $B%k!<%k$N<B9T$r6/@)E*$K=*N;$7$F!"%3%^%s%I!&%$%s%?%W%j%?$K@)8f$r0\$9!#(J

$B=q<0(J:
halt$B%"%/%7%g%s(J ::= (halt [$B%"%H%`(J %%%])

    $B8e$m$KIU$1$i$l$?%"%H%`$r0u:~$7$F=*N;$9$k!#(J

$BNc(J:
(halt)

6) make$B%"%/%7%g%s(J

    make$B$O%o!<%-%s%0!&%a%b%j$K%(%l%a%s%H$r@8@.DI2C$9$k!#(J

$B=q<0(J:
make$B%"%/%7%g%s(J ::= (make $B%/%i%9L>(J [$BB0@-CM(J %%%])
$BB0@-CM(J ::= [^ $BB0@-L>(J] $BCM(J
$BCM(J ::= [//] $BDj?t(J|$BJQ?t(J|$B4X?t(J
$B4X?t(J ::= $B<0(J
       | acceptline $B%U%!%$%kB0@-L>(J           ;$B9TF~NO(J
       | substr $B%Q%?!<%sJQ?t(J $B3+;O0LCV(J $BD9$5(J   ;$B%(%l%a%s%H@Z$j=P$7(J

    $B%Q%?!<%sJQ?t$O!">r7oIt$H%^%C%A%s%0$7$?JQ?t!"$^$?$O!"$=$N>r7o$NJB$Y$i$l(J
$B$?=gHV$r<($9HV9f$GM?$($k!#%(%l%a%s%H$NHV9f$OH]Dj%Q%?!<%s$r=|$$$F(J 1$B$+$i=g$K(J
$BIU$1$i$l$k!#(J

     $B%Q%?!<%s(J                 $B%Q%?!<%s$N;X<((J
(p $B%k!<%kL>(J
  {($B%(%l%a%s%H(J1) <e1>}    ;<e1>$B$^$?$O(J 1
   ($B%(%l%a%s%H(J2)          ; 2
  -($B%(%l%a%s%H(J3)          ;$B$3$l$O<($;$J$$(J
  {<e2> ($B%(%l%a%s%H(J4)}    ;<e2>$B$^$?$O(J 3($BH]Dj%(%l%a%s%H$O?t$($J$$(J)
-->
  $B%"%/%7%g%s(J))

$BNc(J:
(make $B;E;v(J (substr <e1> 15 inf)) 

7) modify$B%"%/%7%g%s(J

    modify$B$O!">r7oIt$H%^%C%A%s%0$7$?%(%l%a%s%H$rJQ99$9$k!#(J

$B=q<0(J:
modify$B%"%/%7%g%s(J ::= (modify $B%Q%?!<%sJQ?t(J [$BB0@-CM(J %%%])

    $BJQ99$5$l$?%(%l%a%s%H$K$O?7$7$$%?%$%`%?%0$,?6$i$l$F!"A4$/JL$N%(%l%a%s%H(J
$B$H$7$F07$o$l$k!#(J

$BNc(J:
(modify <e> ^$B;D$j(J 1) 

8) openfile$B%"%/%7%g%s(J

    openfile$B$O%U%!%$%k$HL>A0$r4X78IU$1$F%*%W!<%s$9$k!#%*!<%W%s$5$l$?%U%!%$(J
$B%k$OA`:n$9$k!#%$%s%?%W%j%?!&%3%^%s%I$HF1MM$N=hM}$G$"$k!#(J

$B=q<0(J:
openfile$B%3%^%s%I(J ::= (openfile $B%U%!%$%k<1JLL>(J $B%U%!%$%kL>(J 'IN'|'OUT')

    $B%U%!%$%k<1JLL>$O(JOS$B$N%U%!%$%k$H4X78IU$1$r$5$l$?L>A0$H$J$k!#%U%!%$%kL>$N(J
$B;XDjK!$O!"DL>o$N(JOS$B%U%!%$%k$NI=8=$H$[$\F1MM$G$"$k$,!"(J '\'$B5-9f!J%G%l%/%H%jI=(J
$B8=!K$O=hM}7O$,FC<oJ8;z$H$7$F07$&$?$aFs$DB3$1$F<($9!#$^$?%U%!%$%k$KIU$1$k%*(J
$B%W%7%g%s$,>JN,$5$l$k$H<+F0E*$K(J".OPS"$B$,IU$1$i$l$k!#IU$1$?$/$J$1$l$P!":G8e$K(J
"."$B$rIU$1$k!#(J

$BNc(J: 
(openfile data case1.dat in)
'DATA'$B$H$$$&L>A0$r(J'CASE1.DAT'$B$H$$$&F~NO%U%!%$%k$K4X78IU$1$k!#(J

9) remove$B%"%/%7%g%s(J

    remove$B$O>r7oIt$H%^%C%A%s%0$7$?%(%l%a%s%H$r:o=|$9$k!#(J

$B=q<0(J:
remove$B%"%/%7%g%s(J ::= (remove $B%Q%?!<%sJQ?t(J [$B%Q%?!<%sJQ?t(J %%%])

$BNc(J:
(remove 1 3)

10) write$B%"%/%7%g%s(J

    write$B%"%/%7%g%s$O=hM}Cf$K%a%C%;!<%8$r0u:~$9$k$?$a$KMQ$$$k!#(J

$B=q<0(J:
write$B%"%/%7%g%s(J ::= (write [$B%U%!%$%k<1JLL>(J] [$B=PNOMWAG(J %%%])
$B=PNOMWAG(J ::= $B%"%H%`(J|$BJQ?t(J|$B<0(J|($B=PNOA`:n(J)
                                   ;$B%"%H%`$J$i$P$=$N$^$^=PNO(J

$BNc(J:
(write (tabto 20) \| (rjust 15) <x> \| (crlf))

2.8 $B4X?t(J

    $B1&JU$GCM$rJQ99$9$k$?$a$K4X?t$rMxMQ$9$k$3$H$,$G$-$k!#$3$N4X?t$ODL>o0l$D(J
$B$NCM$rJV$7$F!"<0$r5-=R$9$k=j$GMQ$$$k!#(J

1) substr

    $B4X?t(Jsubstr$B$O;XDj$5$l$?%(%l%a%s%H$+$iG$0U$NCMNs$r@Z$j=P$9!#(Jmake$B%"%/(J
$B%7%g%s$^$?$O(Jmodify$B%"%/%7%g%s$NCf$G$N$_MxMQ$G$-$k4X?t$G$"$k!#$3$N4X?t$O(J
$BJ#?t$NCM$rJV$9!#(J

$B=q<0(J:
substr$B4X?t(J ::= (substr $B%Q%?!<%sJQ?t(J $B3+;O0LCV(J $BD9$5(J)
$B3+;O0LCV(J ::= $B@0?t(J
$BD9$5(J ::= $B@0?t(J|inf

    $B%Q%?!<%sJQ?t$G<($5$l$?%(%l%a%s%H$N3+;O0LCV$+$iD9$5J,$r@Z$j=P$9!#D9(J
$B$5$K(J 'inf'$B$,;XDj$5$l$?>l9g:G8e$^$G@Z$j=P$9!#(J

$BNc(J:
(substr 2 3 inf)
2$BHVL\$,(J'(c1 a b c d)'$B$H$$$&%(%l%a%s%H$K%^%C%A%s%0$7$?>l9g(J'b c d'$B$N(J
$BCM$,@Z$j=P$5$l$k!#(J

2) compute

    $B4X?t(Jcompute$B$OM?$($i$l$??t<0$N7W;;7k2L$rJV$9!#(J

$B=q<0(J:
compute$B4X?t(J ::= (compute $B7W;;<0(J)
$B7W;;<0(J ::= $BDj?t(J|$BJQ?t(J|($B7W;;<0(J) [$B1i;;;R(J $B7W;;<0(J]
         |$BC19`4X?t(J          ;($B$3$l$O$*$^$1%*%j%8%J%k$K$O$J$$(J)
$BC19`4X?t(J ::= $B4X?tL>(J $B7W;;<0(J
$B4X?tL>(J ::= sin|cos|sqrt|int|abs
$B1i;;;R(J ::= +|-|*|//|\\

    $B1i;;;R$N0UL#$O(J'+',$B2C;;!"(J'-',$B8:;;!"(J'*',$B>h;;!"(J'//',$B=|;;!"(J'\\',$B@0?t>j(J
$BM>$G$"$k$,!"1i;;;R$KM%@h=g0L$OL5$/!"JB$Y$i$l$?>l9g8e$m$+$i=g$K7W;;$5$l(J
$B$k!#7W;;=g$rL@<($9$k>l9g$O3g8L$G0O$s$G<($9!#C19`4X?t$O$=$N8e$N<0$NCM$N(J
$B4X?tCM$rJV$9!#C19`4X?t$K$O%5%$%s!"%3%5%$%s!"J?J}:,!"@0?t2=!"@dBPCM$r5a(J
$B$a$k4X?t$,MQ0U$5$l$k!#<0$NMWAG$N4V$K$O%G%j%_%?$rK:$l$:$K$$$l$k!#(J

$BNc(J:
(compute 2 * 2 - 1)      ==> 2$B$K$J$k!#(J2*(2-1)
(compute <x> // 2 + <y>) ==> <y>$B$K(J2$B$r2C;;$7$?$b$N$G(J<x>$B$r3d$k(J
(compute sin <x>)        ==> <x>$B$N%5%$%s$r5a$a$k(J
(compute (abs (<a> * 3)) + 1)

3) litval

    $B4X?t(Jlitval$B$OB0@-L>$G<($5$l$k%$%s%G%C%/%9HV9f$rJV$9!#(J

$B=q<0(J:
litval$B4X?t(J ::= (litval $BB0@-L>(J)

$BNc(J:
(litval $BA`:n(J)  ;'^$BA`:n(J'$B$NCM(J

4) accept

    $B4X?t(Jaccept$B$O%U%!%$%k$+$iCM$rFI$_<h$k!#$3$N4X?t$G$O0l$D$N%"%H%`$rFI(J
$B$_<h$j$^$9!#(J S$B<0$,M?$($i$l$?>l9g!"CM$OJ]>Z$5$l$^$;$s!#(J

$B=q<0(J:
accept$B4X?t(J ::= (accept [$B%U%!%$%k<1JLL>(J])

    $B%U%!%$%k<1JLL>$,>JN,$5$l$?>l9gI8=`F~NO$+$iFI$_9~$l$k!#(J

$BNc(J:
(accept data)

5) acceptline

    $B4X?t(Jacceptline$B$O%U%!%$%k$N(J 1$B9TJ,$rF~NO$9$k!#9T$O%"%H%`$NNs$H$7$F2~(J
$B9T$,9T$o$l$k$^$GFI$_9~$l$k!#(Jmake$B%"%/%7%g%s$^$?$O(Jmodify$B%"%/%7%g%s$NCf$G(J
$B$N$_MxMQ$G$-$k4X?t$G$"$k!#$3$N4X?t$OJ#?t$NCM$rJV$9!#(J

$B=q<0(J:
acceptline$B4X?t(J ::= (acceptline [$B%U%!%$%k<1JLL>(J])

    $B%U%!%$%k<1JLL>$,>JN,$5$l$?>l9gI8=`F~NO$+$iFI$_9~$l$k!#(J

$BNc(J:
(acceptline)
