V6/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); }
	;
%%