home *** CD-ROM | disk | FTP | other *** search
-
- # include "y3.h"
-
- void go2out( )
- {
- /* output the gotos for the nontermninals */
- int i,
- j,
- k,
- best,
- count,
- cbest,
- times;
-
- fprintf( ftemp, "$\n" ); /* mark begining of gotos */
-
- for ( i = 1; i <= nnonter; ++i )
- {
- go2gen( i );
-
- /* find the best one to make default */
-
- best = -1;
- times = 0;
-
- for ( j = 0; j <= nstate; ++j )
- {
- /* is j the most frequent */
- if ( tystate[ j ] == 0 )
- continue ;
- if ( tystate[ j ] == best )
- continue ;
-
- /* is tystate[j] the most frequent */
-
- count = 0;
- cbest = tystate[ j ];
-
- for ( k = j; k <= nstate; ++k )
- if ( tystate[ k ] == cbest )
- ++count;
-
- if ( count > times )
- {
- best = cbest;
- times = count;
- }
- }
-
- /* best is now the default entry */
-
- zzgobest += ( times - 1 );
- for ( j = 0; j <= nstate; ++j )
- {
- if ( tystate[ j ] != 0 && tystate[ j ] != best )
- {
- fprintf( ftemp, "%d,%d,", j, tystate[ j ] );
- zzgoent += 1;
- }
- }
-
- /* now, the default */
-
- zzgoent += 1;
- fprintf( ftemp, "%d\n", best );
-
- }
- }
-
-