PWB1/sys/source/s2/yacc.d/yaccrpar
yydebu = yyargu;
yystat = 0;
yychar = -1;
yynerr = 0;
yyerrf = 0;
yypv = 0;
999 if( yydebu != 0 ) {
write( 6, 911 ) yystat, yyval, yychar, yypv
911 format("state ", i5, " value ", i6, " char ", i6, " level ", i3 )
}
yypv = yypv + 1
yys( yypv ) = yystat
yyvalv( yypv ) = yyval
920
yyn = yypact( yystat+1 )
if( yyn <= (-1000) ) goto 950
if( yychar<0 ) yychar = yylex(yylval);
if( yydebu > 1 ){
write( 6, 921 ) yyn, yychar
921 format( "n = ", i6, " char = ", i5 )
}
yyn = yyn + yychar;
if( yyn < 0 || yyn >= YYLAST ) goto 950
yyn = yyact( yyn+1 )
if( yychk( yyn+1 ) == yychar ){
yychar = -1
yyval = yylval
yystat = yyn
if( yyerrf > 0 ) yyerrf = yyerrf - 1
goto 999
}
950
if( yydebu > 1 ){
write( 6, 951 ) yyn
951 format( "default is ", i5 )
}
yyn = yydef( yystat+1 )
if( yyn == (-2) ) {
if( yychar < 0 ) yychar = yylex(yylval);
yyn = yyexcp( yystat, yychar );
}
if( yyn == (-1 ) ) {
yypars = 0;
return;
}
if( yyn == 0 ){
if( yyerrf == 3 ){
if( yydebu != 0 ){
write( 6, 961 ) yychar
961 format( "error recovery discards char ", i5 )
}
if( yychar == (-1) ){
yypars = 1
return
}
yychar = -1
goto 920
}
if( yyerrf == 0 ){# new error
write( 6, 971 )
971 format( "syntax error" )
975 continue # for simulated arror activity
yynerr = yynerr + 1;
}
yyerrf = 3
# find a state where error is a legal shift
while( yypv >= 1 ){
yyn = yys( yypv )
yyn = yypact( yyn+1 ) + YYERRCODE
if( yyn >= 0 && yyn < YYLAST ){
yyn = yyact( yyn+1 )
if( yychk( yyn+1 ) == YYERRCODE ){
yystat = yyn
goto 999
}
}
if( yydebu != 0 ){
write ( 6, 972 ) yys(yypv ), yys( yypv-1 )
972 format( "error recovery pops ", i4, " uncovers ", i4 )
}
yypv = yypv - 1
}
yypars = 1
return
}
if( yydebu != 0 ){
write ( 6, 981 ) yyn
981 format( "reduce ", i5 )
}
yypvt = yypv
yym = yyn
yypv = yypv - yyr2( yyn+1 )
yyval = yyvalv( yypv+1 )
if( yydebu > 2 ){
write( 6, 982 ) yys(yypv), yypv, yyval
982 format( "reduce uncovers ", i4, " level ", i3, " val ", i6 )
}
yyn = yyr1( yyn+1 )
yyj = yypgo( yyn+1 ) + yys( yypv ) +2
if( yyj > YYLAST ) goto 990
yystat = yyact( yyj )
if( yychk( yystat+1 ) != ( -yyn ) ){
990 yyn = yypgo( yyn+1 )
yystat = yyact( yyn+1 )
}
goto 1000
$A
end