MiniUnix/usr/source/rat/r.g
%term LCURL RCURL LPAR RPAR SCOL DIGITS
%term XIF XELSE XFOR XWHILE XBREAK NEXT
%term OLDDO NEWDO
%term XGOK XDEFINE XINCLUDE
%term REPEAT UNTIL
%%
statl : statl stat
|
;
stat : if stat ={ outcont($1); }
| ifelse stat ={ outcont($1+1); }
| while stat ={ whilestat($1); }
| for stat ={ forstat($1); }
| repeat stat UNTIL ={ untils($1); }
| XBREAK ={ breakcode($1); }
| NEXT ={ nextcode($1); }
| newdo stat ={ dostat($1); }
| OLDDO ={ docode(0,$1); }
| XGOK ={ gokcode($1); }
| SCOL
| LCURL statl RCURL
| label stat
| error ={ errcode($1); yyclearin; }
;
label : DIGITS ={ outcode($1); outcode("\t"); }
;
if : XIF ={ ifcode($1); }
;
ifelse : if stat XELSE ={ outgoto($1+1); outcont($1); }
;
while : XWHILE ={ whilecode($1); }
;
for : XFOR ={ forcode($1); }
;
repeat : REPEAT ={ repcode($1); }
;
newdo : NEWDO ={ docode(1,$1); }
;
%%