亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? transition.cc

?? This is a resource based on j2me embedded,if you dont understand,you can connection with me .
?? CC
字號:
/* * @(#)transition.cc	1.8 06/10/10 * * Copyright  1990-2008 Sun Microsystems, Inc. All Rights Reserved.   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER   *    * This program is free software; you can redistribute it and/or   * modify it under the terms of the GNU General Public License version   * 2 only, as published by the Free Software Foundation.    *    * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   * General Public License version 2 for more details (a copy is   * included at /legal/license.txt).    *    * You should have received a copy of the GNU General Public License   * version 2 along with this work; if not, write to the Free Software   * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA   * 02110-1301 USA    *    * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa   * Clara, CA 95054 or visit www.sun.com if you need additional   * information or have any questions.  * */// @(#)transition.cc       2.23     98/07/03 #include "transition.h"#include "symbol.h"#include "globals.h"#include <assert.h>#include <stdlib.h>#include <stdio.h>#define ENTRIES_PER_LINE 8intfind_error_state(void);/* * transition matrix management. * create em. make em bigger when necessary, * print em. * * A note on the meaning of "maxstates". This is * the NUMBER of rows or columns, as opposed to * the MAXIMUM INDEX of these rows or columns. * If we want to be able to index up to, say, n, * then we had better allocate a thing with maxstates = n+1. * Zero-based addressing strikes again. */struct leaf_transition *leaf_transition::newtransition( terminal_symbol * sp ){	struct leaf_transition * ltp;	assert( sp->functional_type() == symbol::terminal );	ltp = new (leaf_transition);	ltp->op =   sp;	ltp->state = BAD_STATENO;	return ltp;}voidleaf_transition::print(const char * statetype, const char * symbol_name,	    const char * name_template ,FILE *output, FILE *f){	if ( this == 0 ) return;	assert( op->functional_type() == symbol::terminal );	print_statenumber( f, state,"");}voidleaf_transition::free(void){	return;}////////////////////////////////////////////////////////////////struct unary_transition *unary_transition::newtransition( unary_symbol * sp ){	struct unary_transition *utp;	assert( (sp->functional_type() == symbol::unaryop) || 		(sp->functional_type() == symbol::rightunaryop) );	utp = new (unary_transition);	utp->op =   sp;	utp->maxstates = 0;	utp->state = 0;	return utp;}voidunary_transition::print(	const char * statetype,	const char * symbol_name,	const char * name_template,	FILE *output,	FILE *data){	if ( this == 0 ) return;	register stateno i;	register stateno maxminus1 = max_stateno();	register int count = 0;	assert( (op->functional_type() == symbol::unaryop) ||		(op->functional_type() == symbol::rightunaryop) );	fprintf(output, "extern %s\t", statetype);	fprintf(output, name_template, symbol_name );	fprintf(output, "[%d];\n", maxstates);	fprintf(data, "%s\n", statetype);	fprintf(data, name_template, symbol_name );	fprintf(data, "[%d] =\n", maxstates);	fprintf(data, "{ ");	for (i=0; i<maxminus1; i++) {	    print_statenumber( data, state[i], ",");	    count += 1;	    if (count % 20 == 0) {		fputs("\n", data);	    }	}	print_statenumber(data, state[i], " };\n\n");}voidunary_transition::grow( stateno newmax_index ){    stateno *sp, *lastp;    stateno newmax = newmax_index+1;    assert( newmax >= maxstates );    if( newmax == maxstates ){	// trivial "growth"	return;    }    if (maxstates == 0 ){	// first allocation	state = (stateno *)malloc( newmax * sizeof(stateno) );	maxstates_available = newmax;    } else if ( newmax > maxstates_available) {	// already existing, just too small.	state = (stateno *)realloc( (char *) state, newmax * sizeof(stateno ));	maxstates_available = newmax;    }    assert(state != 0); // make sure no malloc failures.    // set new parts of vector to illegal value.    for ( sp = &state[maxstates], lastp= &state[newmax-1]; sp <= lastp; sp++ )	*sp = BAD_STATENO;    // install new size    maxstates = newmax;}/* * To delete state transitions. * A client could do this by manipulating "state[n]" * directly, but with less likely success. Will shrink * the allowable number of transitions (max_stateno()) * but not actually deallocate memory. * Input is a vector of booleans indicating positions to be * deleted. Compacting will be done, basically sliding down * the rest of the vector to fill. * Usage: *	unary_transition * utp; *	stateno delete_list[100]; *	int 	n_deletions; *	int	old_maxstate; *	old_maxstate = utp->max_stateno(); *	utp->delete_transitions( delete_list, n_deletions ); *	assert( old_maxstate == utp->max_stateno()+n_deletions ); */voidunary_transition::delete_transitions(	const char * delete_list ){	// this is the easiest of the choices, given our	// current representation.	register stateno * row;	register int src, dest;	register int max;	int ndel;	row = state;	max = maxstates-1;	// iterate over all "src" transitions, deciding which to copy.	ndel = 0;	for ( src = 0, dest = 0; src <= max ; src ++ ){		if ( delete_list[ src ] == 0 ){			// simply copy			row[ dest++ ] = row[ src ];		} else {			// don't copy, but tally deletions			ndel += 1;		}	}	maxstates -= ndel;}voidunary_transition::free(void){	if (state)		::free((char*)state);	state = 0;}////////////////////////////////////////////////////////////////struct binary_transition *binary_transition::newtransition( binary_symbol * sp ){	struct binary_transition *btp;	assert( sp->type() == symbol::binaryop );	btp = new (binary_transition);	btp->op =   sp;	btp->nrows = 0;	btp->ncols = 0;	btp->state = 0;	return btp;}voidbinary_transition::print(	const char * statetype,	const char * symbol_name,	const char * name_template,	FILE *output,	FILE *data){	if ( this == 0 ) return;	register stateno i,j;	register int count;	assert( op->type() == symbol::binaryop );	fprintf(output, "extern %s\t", statetype);	fprintf(output, name_template, symbol_name );	fprintf(output, "[%d][%d];\n", nrows, ncols);	fprintf(data, "%s\n", statetype);	fprintf(data, name_template, symbol_name );	fprintf(data, "[%d][%d] =\n", nrows, ncols);	fprintf( data, "{");	for (i=0; i<nrows; i++){	    fprintf(data, "{");	    count = 0;	    for (j=0; j<(unsigned)ncols-1; j++){		print_statenumber( data, state[i].state[j], ",");		count += 1;		if (count % 20 == 0) {		    fputs("\n", data);		}	    }	    if (i<(unsigned)nrows-1)		print_statenumber( data, state[i].state[j], "},\n");	    else		print_statenumber( data, state[i].state[j], "}\n");	}	fprintf( data, "};\n\n");}voidbinary_transition::grow( stateno newmax_rows, stateno newmax_cols ){    stateno i;    stateno *sp, *lastp;    stateno new_nrows = newmax_rows + 1;    stateno new_ncols = newmax_cols + 1;    assert( new_nrows >= nrows );    assert( new_ncols >= ncols );    if (nrows == 0 ){	// first allocation	state = (binary_transition_row*)malloc( new_nrows * sizeof(binary_transition_row) );	assert(state != 0); // make sure no malloc failures.	for (i=0; i<new_nrows; i++){	    state[i].state = (stateno *)malloc( new_ncols * sizeof(stateno) );	    assert( state[i].state != 0);	}	nrows_available = new_nrows;	ncols_available = new_ncols;    } else if ( new_nrows > nrows_available || new_ncols > ncols_available ){	// already existing, but too small.	state = (binary_transition_row*)realloc( (char *) state, new_nrows * sizeof(binary_transition_row));	assert(state != 0); // make sure no malloc failures.	for (i=0; i<new_nrows; i++){	    if (i<nrows ){		// preexisting--realloc		state[i].state = (stateno *)realloc( (char *)(state[i].state), new_ncols*sizeof(stateno) );	    } else {		// new -- malloc		state[i].state = (stateno *)malloc(  new_ncols*sizeof(stateno) );	    }	    assert( state[i].state != 0);	}	nrows_available = new_nrows;	ncols_available = new_ncols;    }    // initialize the new parts of the vectors.    for (i=0; i<new_nrows; i++){	if (i<nrows){	    // illegalize end of old vector.	    sp=&(state[i].state[ncols]);	} else {	    // brand new vector -- zap it altogether	    state[i].max_col_inserted = -1;	    sp=&(state[i].state[0]);	}	lastp = &(state[i].state[new_ncols-1]);	for (sp, lastp ; sp<=lastp; sp++)	    *sp = BAD_STATENO;    }    // install new size    nrows = new_nrows;    ncols = new_ncols;}/* * To delete state transitions. * A client could do this by manipulating "state[n]" * directly, but with less likely success. Will shrink * the allowable number of transitions (row_max_stateno() or * col_max_stateno() ) but not actually deallocate memory. * Input is a vector of booleans indicating positions to be * deleted. Compacting will be done, basically sliding down * the rest of the vector to fill. * Usage: *	binary_transition * btp; *	stateno col_delete_list[100]; *	stateno row_delete_list[100]; *	int 	n_col_deletions; *	int 	n_row_deletions; *	int	old_maxcol; *	int	old_maxrow; *	old_maxcol = btp->col_max_stateno(); *	old_maxrow = btp->row_max_stateno(); *	btp->delete_transition_cols( *		col_delete_list, n_col_deletions ); *	btp->delete_transition_rows( *		row_delete_list, n_row_deletions ); *	assert( old_maxcol == btp->col_max_stateno()+n_col_deletions ); *	assert( old_maxrow == btp->row_max_stateno()+n_row_deletions ); */voidbinary_transition::delete_transition_cols(	const char * delete_list ){	// delete given columns from each row.	binary_transition_row * row_vector;	stateno * row;	int nrow, rowmax;	register int src_col, dest_col;	register int colmax;	int ndel;	row_vector = state;	rowmax = nrows-1;	colmax = ncols-1;	// iterate over all rows.	for( nrow = 0 ; nrow <= rowmax; nrow ++ ){		// iterate over all "src" cols		ndel = 0;		row = row_vector[nrow].state;		for ( src_col = 0, dest_col = 0; src_col <= colmax ; src_col ++ ){			if ( delete_list[ src_col ] == 0 ){				// simply copy				row[ dest_col++ ] = row[ src_col ];			} else {				// do not copy this row.				// instead, tally our deletions				ndel += 1;			}		}	}	ncols -= ndel;}voidbinary_transition::delete_transition_rows(	register const char * delete_list ){	// this is the easier of the choices, given our	// current representation.	register binary_transition_row * row_vector;	register int src_row, dest_row;	register int rowmax;	int ndel;	row_vector = state;	rowmax = nrows-1;	// iterate over all "src" rows, deciding which to copy.	// those dropped must be deleted, unless they're at the end.	ndel = 0;	for ( src_row = 0, dest_row = 0; src_row <= rowmax ; src_row ++ ){		if ( delete_list[ src_row ] == 0 ){			// simply copy			row_vector[ dest_row++ ] = row_vector[ src_row ];		} else {			// do not copy this row.			// instead, delete it, tally it.			::free( (char*)row_vector[ src_row ].state );			ndel += 1;		}	}	// just for safety. zero out all the state pointers at end.	for( src_row = nrows-ndel; src_row < nrows ; src_row++)		row_vector[ src_row ].state = 0;	nrows -= ndel;}voidbinary_transition::free(void){	if (state){		register unsigned i;		for ( i = 0 ; i < nrows_available ; i ++ ){			if ( state[i].state )				::free( (char*)state[i].state );		}		::free((char*)state);	}	state = 0;}/* * Debugging check on transition table assignment. * Make sure the entry we're assigning to hasn't been * assigned to before, and try to assure that its in * a transition table. * See above examples of usage */voidinsert_stateno(	register unary_transition *target,	register int subscript,	register int value ){	assert( (unsigned)subscript <= target->max_stateno() );	assert( target->state[subscript] == BAD_STATENO);	assert( (0 <= value ) && ( value <= MAX_STATENO));	target->state[subscript] = value;}voidinsert_stateno(	register leaf_transition *target,	register int value ){	assert( target->state == BAD_STATENO);	assert( (0 <= value ) && ( value <= MAX_STATENO));	target->state = value;}voidinsert_stateno(	register binary_transition *target,	register int subscript1,	register int subscript2,	register int value ){	assert( (unsigned)subscript1 <= target->row_max_stateno() );	assert( (unsigned)subscript2 <= target->col_max_stateno() );	assert( target->state[subscript1].state[subscript2] == BAD_STATENO);	assert( (0 <= value ) && ( value <= MAX_STATENO));	if ( subscript2 > target->state[subscript1].max_col_inserted)		target->state[subscript1].max_col_inserted = subscript2;	target->state[subscript1].state[subscript2] = value;}voidprint_statenumber( FILE *f, stateno n, const char * trailer ){	if (n == BAD_STATENO)		fprintf(f, "BAD%s", trailer);	else		fprintf(f, "%d%s",n, trailer);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久99| 国产激情视频一区二区在线观看 | 欧美性一区二区| 欧美精品久久久久久久久老牛影院| 国产精品毛片久久久久久久| 亚洲卡通欧美制服中文| 午夜欧美电影在线观看| 97精品久久久午夜一区二区三区| 91麻豆精品国产91久久久资源速度 | 亚洲综合久久久久| 亚洲一区视频在线观看视频| 婷婷久久综合九色国产成人| 免费观看在线综合色| 国产另类ts人妖一区二区| 国产成人av一区二区三区在线观看| 国产精品1区2区3区在线观看| 高清不卡在线观看| 在线亚洲人成电影网站色www| 欧美日韩免费观看一区二区三区| 在线不卡a资源高清| 欧美精品一区二区三区一线天视频| 国产三级一区二区| 亚洲自拍偷拍综合| 激情文学综合网| 91免费看视频| 欧美一级黄色大片| 日本一区二区三区久久久久久久久不| 自拍偷拍亚洲欧美日韩| 日本成人在线视频网站| 成人高清视频在线观看| 51精品秘密在线观看| 精品成a人在线观看| 亚洲精品久久久久久国产精华液| 日日摸夜夜添夜夜添国产精品| 国产精品一区二区在线播放| 91蜜桃视频在线| 欧美成人三级在线| 一区二区三区欧美日韩| 老司机精品视频导航| 在线看国产一区| 国产精品久久久久天堂| 久久精品噜噜噜成人88aⅴ| 99久久久久久99| 久久只精品国产| 日韩福利电影在线| 色综合天天性综合| 久久久亚洲精品石原莉奈| 亚洲激情欧美激情| 9i看片成人免费高清| 日韩欧美视频一区| 午夜精品123| 91丨porny丨最新| 国产欧美日韩在线| 国内外精品视频| 日韩一区二区三区在线观看| 最新国产の精品合集bt伙计| 国产一区二区三区日韩| 日韩欧美国产一区二区三区| 伊人性伊人情综合网| 成人精品国产福利| 国产校园另类小说区| 蜜桃av一区二区三区电影| 欧美日本一区二区三区四区| 亚洲精品乱码久久久久久久久 | 欧美性猛交一区二区三区精品| 久久久久99精品国产片| 久久精品99国产国产精| 欧美理论电影在线| 午夜精品久久久久久久久| 欧美羞羞免费网站| 一区2区3区在线看| 91成人在线精品| 亚洲最大色网站| 欧美亚洲综合另类| 亚洲成人免费看| 欧美一区二区高清| 六月婷婷色综合| 精品国产91久久久久久久妲己| 久久99热这里只有精品| 日韩欧美视频在线| 国产麻豆精品在线| 中文字幕久久午夜不卡| 99久久免费视频.com| 亚洲最新在线观看| 欧美人狂配大交3d怪物一区| 蜜桃视频一区二区| 久久精品夜色噜噜亚洲a∨| 国产成人精品三级| 国产精品久久久久aaaa| 色老汉一区二区三区| 亚洲成人午夜影院| 精品福利在线导航| 91女人视频在线观看| 亚洲成人自拍网| 久久久精品人体av艺术| 91麻豆免费观看| 午夜欧美一区二区三区在线播放| 日韩一区二区视频在线观看| 国产高清成人在线| 亚洲激情自拍视频| 欧美电视剧在线观看完整版| 成人午夜碰碰视频| 亚洲国产精品嫩草影院| 精品国产3级a| 99国内精品久久| 免费成人结看片| 国产精品每日更新| 日韩一区二区麻豆国产| 成人激情小说乱人伦| 爽爽淫人综合网网站| 国产精品女同一区二区三区| 欧美四级电影在线观看| 国产精品性做久久久久久| 亚洲成年人影院| 国产精品美女一区二区在线观看| 欧美视频一区二区三区四区 | 99热99精品| 日韩精品成人一区二区在线| 国产精品动漫网站| 欧美精品一区二区在线播放| 欧美亚洲综合一区| av亚洲精华国产精华| 美国三级日本三级久久99| 亚洲一区在线观看免费观看电影高清 | 成人av网站在线观看免费| 全部av―极品视觉盛宴亚洲| 亚洲欧洲精品成人久久奇米网| 欧美丰满高潮xxxx喷水动漫| 国产jizzjizz一区二区| 日本视频中文字幕一区二区三区 | av综合在线播放| 激情深爱一区二区| 五月天丁香久久| 亚洲图片自拍偷拍| 夜夜精品视频一区二区| 亚洲欧洲日韩一区二区三区| 久久综合久久综合亚洲| 91麻豆精品国产91久久久使用方法 | 亚洲国产欧美日韩另类综合 | 91福利国产成人精品照片| 菠萝蜜视频在线观看一区| 国产乱国产乱300精品| 日本色综合中文字幕| 亚洲成人激情av| 亚洲图片欧美一区| 亚洲国产一区二区视频| 亚洲免费成人av| 一区二区中文视频| 国产精品久久久久三级| 国产精品美女视频| 亚洲国产精华液网站w| 国产亚洲精品久| 国产精品高潮久久久久无| 国产拍揄自揄精品视频麻豆| 久久精品欧美日韩精品| 国产日韩欧美精品一区| 国产目拍亚洲精品99久久精品| 国产亚洲人成网站| 国产亚洲一本大道中文在线| 久久午夜羞羞影院免费观看| 欧美精品一区二区三| 国产亚洲一区字幕| 中文字幕在线免费不卡| 亚洲一区二区不卡免费| 日韩制服丝袜先锋影音| 美日韩黄色大片| 国产精品系列在线播放| 成人av网址在线| 精品视频一区二区不卡| 欧美一区二区三区白人| 久久久久久99久久久精品网站| 欧美韩国一区二区| 亚洲激情五月婷婷| 日本不卡中文字幕| 国产精品一区二区无线| 色欧美片视频在线观看 | 麻豆免费看一区二区三区| 国产精品一区二区x88av| 成人av在线网站| 精品视频在线免费观看| 久久一区二区视频| 一区二区三区蜜桃网| 久久国产夜色精品鲁鲁99| 成人18精品视频| 欧美体内she精高潮| 久久亚洲影视婷婷| 一级做a爱片久久| 老司机一区二区| 色乱码一区二区三区88| 久久夜色精品一区| 五月激情综合婷婷| 成人精品视频一区| 欧美一区二区在线不卡| 中文字幕一区二区5566日韩| 免费欧美高清视频| 91一区二区在线| 久久综合九色欧美综合狠狠| 午夜精品福利一区二区蜜股av | 色婷婷综合久久久中文一区二区| 精品人在线二区三区|