touched up code
This commit is contained in:
		| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: err.c 307 2009-11-25 13:32:20Z hyunghwan.chung $ | ||||
|  * $Id: err.c 311 2009-12-09 11:35:54Z hyunghwan.chung $ | ||||
|  * | ||||
|     Copyright 2006-2009 Chung, Hyung-Hwan. | ||||
|     This file is part of QSE. | ||||
| @ -143,14 +143,12 @@ const qse_char_t* qse_awk_dflerrstr (qse_awk_t* awk, qse_awk_errnum_t errnum) | ||||
| 		QSE_T("right parenthesis expected in regular expression"), | ||||
| 		QSE_T("right bracket expected in regular expression"), | ||||
| 		QSE_T("right brace expected in regular expression"), | ||||
| 		QSE_T("unbalanced parenthesis in regular expression"), | ||||
| 		QSE_T("invalid brace in regular expression"), | ||||
| 		QSE_T("colon expected in regular expression"), | ||||
| 		QSE_T("invalid character range in regular expression"), | ||||
| 		QSE_T("invalid character class in regular expression"), | ||||
| 		QSE_T("invalid occurrence bound in regular expression"), | ||||
| 		QSE_T("premature end of regular expression"), | ||||
| 		QSE_T("garbage after regular expression") | ||||
| 		QSE_T("special character at wrong position"), | ||||
| 		QSE_T("premature end of regular expression") | ||||
| 	}; | ||||
|  | ||||
| 	return (errnum >= 0 && errnum < QSE_COUNTOF(errstr))? | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: misc.c 307 2009-11-25 13:32:20Z hyunghwan.chung $ | ||||
|  * $Id: misc.c 311 2009-12-09 11:35:54Z hyunghwan.chung $ | ||||
|  * | ||||
|     Copyright 2006-2009 Chung, Hyung-Hwan. | ||||
|     This file is part of QSE. | ||||
| @ -1035,14 +1035,12 @@ qse_char_t* qse_awk_rtx_strxnfld ( | ||||
| 	 (err == QSE_REX_ERPAREN)?     QSE_AWK_EREXRPAREN: \ | ||||
| 	 (err == QSE_REX_ERBRACK)?     QSE_AWK_EREXRBRACK: \ | ||||
| 	 (err == QSE_REX_ERBRACE)?     QSE_AWK_EREXRBRACE: \ | ||||
| 	 (err == QSE_REX_EUNBALPAREN)? QSE_AWK_EREXUNBALPAREN: \ | ||||
| 	 (err == QSE_REX_EINVALBRACE)? QSE_AWK_EREXINVALBRACE: \ | ||||
| 	 (err == QSE_REX_ECOLON)?      QSE_AWK_EREXCOLON: \ | ||||
| 	 (err == QSE_REX_ECRANGE)?     QSE_AWK_EREXCRANGE: \ | ||||
| 	 (err == QSE_REX_ECCLASS)?     QSE_AWK_EREXCCLASS: \ | ||||
| 	 (err == QSE_REX_EBOUND)?      QSE_AWK_EREXBOUND: \ | ||||
| 	 (err == QSE_REX_ESPCAWP)?     QSE_AWK_EREXSPCAWP: \ | ||||
| 	 (err == QSE_REX_EPREEND)?     QSE_AWK_EREXPREEND: \ | ||||
| 	 (err == QSE_REX_EGARBAGE)?    QSE_AWK_EREXGARBAGE: \ | ||||
| 	                               QSE_AWK_EINTERN) | ||||
|  | ||||
| void* qse_awk_buildrex ( | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: rex.c 307 2009-11-25 13:32:20Z hyunghwan.chung $ | ||||
|  * $Id: rex.c 311 2009-12-09 11:35:54Z hyunghwan.chung $ | ||||
|  *  | ||||
|     Copyright 2006-2009 Chung, Hyung-Hwan. | ||||
|     This file is part of QSE. | ||||
| @ -384,22 +384,7 @@ void* qse_buildrex ( | ||||
| 	if (builder.ptn.curc.type != CT_EOF) | ||||
| 	{ | ||||
| 		if (errnum != QSE_NULL)  | ||||
| 		{ | ||||
| 			if (builder.ptn.curc.type ==  CT_SPECIAL && | ||||
| 			    builder.ptn.curc.value == QSE_T(')')) | ||||
| 			{ | ||||
| 				*errnum = QSE_REX_EUNBALPAREN; | ||||
| 			} | ||||
| 			else if (builder.ptn.curc.type ==  CT_SPECIAL && | ||||
| 			         builder.ptn.curc.value == QSE_T('{')) | ||||
| 			{ | ||||
| 				*errnum = QSE_REX_EINVALBRACE; | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				*errnum = QSE_REX_EGARBAGE; | ||||
| 			} | ||||
| 		} | ||||
| 			*errnum = QSE_REX_ESPCAWP; | ||||
|  | ||||
| 		QSE_MMGR_FREE (builder.mmgr, builder.code.buf); | ||||
| 		return QSE_NULL; | ||||
|  | ||||
| @ -210,14 +210,12 @@ const qse_char_t* qse_rex_geterrmsg (qse_rex_t* rex) | ||||
| 		QSE_T("right parenthesis expected"), | ||||
| 		QSE_T("right bracket expected"), | ||||
| 		QSE_T("right brace expected"), | ||||
| 		QSE_T("unbalanced parenthesis"), | ||||
| 		QSE_T("invalid brace"), | ||||
| 		QSE_T("colon expected"), | ||||
| 		QSE_T("invalid character range"), | ||||
| 		QSE_T("invalid character class"), | ||||
| 		QSE_T("invalid occurrence bound"), | ||||
| 		QSE_T("premature expression end"), | ||||
| 		QSE_T("garbage after expression"), | ||||
| 		QSE_T("special character at wrong position"), | ||||
| 		QSE_T("premature expression end") | ||||
| 	}; | ||||
| 	 | ||||
| 	return (rex->errnum >= 0 && rex->errnum < QSE_COUNTOF(errstr))? | ||||
| @ -793,6 +791,20 @@ static qse_rex_node_t* comp2 (comp_t* com) | ||||
| 				break; | ||||
|  | ||||
| 			default: | ||||
| 				if (com->rex->option & QSE_REX_STRICT) | ||||
| 				{ | ||||
| 					qse_char_t spc[] = QSE_T(")?*+{"); | ||||
|  | ||||
| 					if (com->rex->option & QSE_REX_NOBOUND) | ||||
| 						spc[4] = QSE_T('\0'); | ||||
|  | ||||
| 					if (qse_strchr (spc, com->c.value) != QSE_NULL) | ||||
| 					{ | ||||
| 						com->rex->errnum = QSE_REX_ESPCAWP; | ||||
| 						return QSE_NULL; | ||||
| 					} | ||||
| 				} | ||||
|  | ||||
| 				goto normal_char; | ||||
| 		} | ||||
| 	} | ||||
| @ -1202,13 +1214,21 @@ else | ||||
| qse_printf (QSE_T("adding %d NA\n"), node->id); | ||||
| */ | ||||
| 		 | ||||
| if (qse_lda_search ( | ||||
| 	&e->cand.set[e->cand.pending], | ||||
| 	0, | ||||
| 	&cand, 1) != QSE_LDA_NIL) | ||||
| { | ||||
| return 0; | ||||
| } | ||||
| 	if (qse_lda_search ( | ||||
| 		&e->cand.set[e->cand.pending], | ||||
| 		0, &cand, 1) != QSE_LDA_NIL) | ||||
| 	{ | ||||
| 		/* exclude any existing entries in the array. | ||||
| 		 * see comp_cand() for the equality test used. | ||||
| 		 * note this linear search may be a performance bottle neck	 | ||||
| 		 * if the arrary grows large. not so sure if it should be | ||||
| 		 * switched to a different data structure such as a hash table. | ||||
| 		 * the problem is that most practical regular expressions | ||||
| 		 * won't have many candidates for a particular match point. | ||||
| 		 * so i'm a bit skeptical about data struct switching. | ||||
| 		 */ | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	if (qse_lda_insert ( | ||||
| 		&e->cand.set[e->cand.pending], | ||||
| @ -1810,8 +1830,9 @@ static int comp_cand (qse_lda_t* lda, | ||||
| { | ||||
| 	cand_t* c1 = (cand_t*)dptr1; | ||||
| 	cand_t* c2 = (cand_t*)dptr2; | ||||
| 	if (c1->node == c2->node) return 0; | ||||
| 	return 1; | ||||
| 	return (c1->node == c2->node &&  | ||||
| 	        c1->mptr == c2->mptr && | ||||
| 	        c1->occ == c2->occ)? 0: 1; | ||||
| } | ||||
|  | ||||
| static int init_exec_dds (exec_t* e, qse_mmgr_t* mmgr) | ||||
|  | ||||
		Reference in New Issue
	
	Block a user