Esempio n. 1
0
void *producer_thread_function(void *arg)
{
    printf("[Producer] Creation successful! Generating processes...\n");
    generate_items();
    pthread_exit("Producer quitting...\n");
}
Esempio n. 2
0
WORD do_all( BYTE *filename )
{
	/* Hauptroutine */
	BYTE	*temp_file_name;

	/* Info-Datei lesen */
	if( read_info_file() < 0 )
		/* Fehler */
		return( -1 );

	/* Zeile zuruecksetzen */
	zeile = 1;

	/* Grammatik-Datei lesen */
	if( read_grammar_file( filename ) < 0 )
		/* Fehler */
		return( -1 );

	/* Die Hash-Tabelle initialisieren */
	if( ( hash_tab = ( HASH_TAB * ) calloc( lr_info.hash_tab_size, sizeof( HASH_TAB ) ) ) == NULL )
		/* Fehler */
		return( error( NOT_ENOUGH_MEMORY, 0, 0 ) );

	/* Dateinamen ausgeben */
	if( output_file_msg( filename ) < 0 )
		/* Fehler */
		return( -1 );

	/* Ausgaben in Datei bzw. auf den Bildschirm */
	if( lr_info.dest == DFILE )
	{
		/* Dateinamen aufbereiten */
		temp_file_name = strrchr( filename, ( WORD ) '.' );
		strcpy( temp_file_name, ".TXT" );

		/* Datei zum Schreiben �ffnen */
		file = freopen( filename, "w", 0L );
	}

	/* Ausgabe auf Bildschirm ? */
	else if( lr_info.dest == DSCREEN )
		/* Bildschirm */
		file = stdout;

	else
		/* Drucker */
		file = stdprn;

	/* Ausgabe der Fehler auf Bildschirm ? */
	if( lr_info.err_dest == DSCREEN )
		/* Bildschirm */
		err_file = stderr;

	else
		/* Drucker */
		err_file = stdprn;

	/* Grammatik analysieren */
	if( analyze_grammar() < 0 )
		/* Fehler */
		return( -1 );

	/* Speicher der Grammatik-Datei freigeben */
	free_mem( ( VOID * ) &grammar );

	/* Grammatik in BNF ausgeben ? */
	if( !lr_info.output_grammar )
	{
		/* Ja */
		if( output_grammar() < 0 )
			/* Fehler */
			return( -1 );
	}

	/* Items generieren */
	if( generate_items() < 0 )
		/* Fehler */
		return( -1 );

	/* Die LR-Tabelle erzeugen */
	if( make_tab() < 0 )
		/* Fehler */
		return( -1 );

	/* FIRST-Mengen ausgeben ? */
	if( !lr_info.first )
	{
		/* Ja */
		if( output_first() < 0 )
			/* Fehler */
			return( -1 );
	}

	/* FOLLOW-Mengen ausgeben ? */
	if( !lr_info.follow )
	{
		/* Ja */
		if( output_follow() < 0 )
			/* Fehler */
			return( -1 );
	}

	/* Items ausgeben ? */
	if( !lr_info.lr_items )
	{
		/* Ja */
		if( output_items() < 0 )
			/* Fehler */
			return( -1 );
	}

	/* LR-Tabelle ausgeben ? */
	if( !lr_info.lr_tab )
	{
		/* Ja */
		if( output_lr_tab() < 0 )
			/* Fehler */
			return( -1 );
	}

	/* LR-Tabelle optional komprimieren */
	if( !lr_info.compress )
	{
		/* LR-Tabelle komprimieren */
		if( compress_lr_tab() < 0 )
			/* Fehler */
			return( -1 );
	}

	/* Parser-Quelltext erzeugen */
	if( generate_parser() < 0 )
		/* Fehler */
		return( -1 );

	/* Alles OK */
	return( 0 );
}