コード例 #1
0
ファイル: grammarRules.c プロジェクト: salarshad/pyexip
errorCode printGrammarRule(SmallIndex nonTermID, GrammarRule* rule, EXIPSchema *schema)
{
	Index j = 0;
	unsigned char b = 0;
	Index tmp_prod_indx = 0;

	DEBUG_MSG(INFO, EXIP_DEBUG, ("\n>RULE\n"));
	DEBUG_MSG(INFO, EXIP_DEBUG, ("NT-%u:", (unsigned int) nonTermID));

	DEBUG_MSG(INFO, EXIP_DEBUG, ("\n"));

	for(b = 0; b < 3; b++)
	{
		for(j = 0; j < rule->part[b].count; j++)
		{
			String *localName = NULL;
			tmp_prod_indx = rule->part[b].count - 1 - j;
			DEBUG_MSG(INFO, EXIP_DEBUG, ("\t"));
			switch(rule->part[b].prod[tmp_prod_indx].eventType)
			{
				case EVENT_SD:
					DEBUG_MSG(INFO, EXIP_DEBUG, ("SD "));
					break;
				case EVENT_ED:
					DEBUG_MSG(INFO, EXIP_DEBUG, ("ED "));
					break;
				case EVENT_SE_QNAME:
				{
					QNameID *qname = &rule->part[b].prod[tmp_prod_indx].qnameId;
					localName = &(GET_LN_URI_P_QNAME(schema->uriTable, qname).lnStr);
					DEBUG_MSG(INFO, EXIP_DEBUG, ("SE (qname: %u:%u) ", (unsigned int) qname->uriId, (unsigned int) qname->lnId));
					break;
				}
				case EVENT_SE_URI:
					DEBUG_MSG(INFO, EXIP_DEBUG, ("SE (uri) "));
					break;
				case EVENT_SE_ALL:
					DEBUG_MSG(INFO, EXIP_DEBUG, ("SE (*) "));
					break;
				case EVENT_EE:
					DEBUG_MSG(INFO, EXIP_DEBUG, ("EE "));
					break;
				case EVENT_AT_QNAME:
				{
					QNameID *qname = &rule->part[b].prod[tmp_prod_indx].qnameId;
					localName = &(GET_LN_URI_P_QNAME(schema->uriTable, qname).lnStr);
					DEBUG_MSG(INFO, EXIP_DEBUG, ("AT (qname %u:%u) [%u]", (unsigned int) rule->part[b].prod[tmp_prod_indx].qnameId.uriId, (unsigned int) rule->part[b].prod[tmp_prod_indx].qnameId.lnId, (unsigned int) rule->part[b].prod[tmp_prod_indx].typeId));
					break;
				}
				case EVENT_AT_URI:
					DEBUG_MSG(INFO, EXIP_DEBUG, ("AT (uri) "));
					break;
				case EVENT_AT_ALL:
					DEBUG_MSG(INFO, EXIP_DEBUG, ("AT (*) [%u]", (unsigned int) rule->part[b].prod[tmp_prod_indx].typeId));
					break;
				case EVENT_CH:
					DEBUG_MSG(INFO, EXIP_DEBUG, ("CH [%u]", (unsigned int) rule->part[b].prod[tmp_prod_indx].typeId));
					break;
				case EVENT_NS:
					DEBUG_MSG(INFO, EXIP_DEBUG, ("NS "));
					break;
				case EVENT_CM:
					DEBUG_MSG(INFO, EXIP_DEBUG, ("CM "));
					break;
				case EVENT_PI:
					DEBUG_MSG(INFO, EXIP_DEBUG, ("PI "));
					break;
				case EVENT_DT:
					DEBUG_MSG(INFO, EXIP_DEBUG, ("DT "));
					break;
				case EVENT_ER:
					DEBUG_MSG(INFO, EXIP_DEBUG, ("ER "));
					break;
				case EVENT_SC:
					DEBUG_MSG(INFO, EXIP_DEBUG, ("SC "));
					break;
				case EVENT_VOID:
					DEBUG_MSG(INFO, EXIP_DEBUG, (" "));
					break;
				default:
					return UNEXPECTED_ERROR;
			}
			DEBUG_MSG(INFO, EXIP_DEBUG, ("\t"));
			if(rule->part[b].prod[tmp_prod_indx].nonTermID != GR_VOID_NON_TERMINAL)
			{
				DEBUG_MSG(INFO, EXIP_DEBUG, ("NT-%u", (unsigned int) rule->part[b].prod[tmp_prod_indx].nonTermID));
			}
			DEBUG_MSG(INFO, EXIP_DEBUG, ("\t"));
			if(b > 0)
			{
				DEBUG_MSG(INFO, EXIP_DEBUG, ("%u", (unsigned int) rule->part[0].count));
				DEBUG_MSG(INFO, EXIP_DEBUG, ("."));
				if(b > 1)
				{
					DEBUG_MSG(INFO, EXIP_DEBUG, ("%u", (unsigned int) rule->part[1].count));
					DEBUG_MSG(INFO, EXIP_DEBUG, ("."));
				}
			}
			DEBUG_MSG(INFO, EXIP_DEBUG, ("%u", (unsigned int) j));

			if (localName != NULL)
			{
				DEBUG_MSG(INFO, EXIP_DEBUG, ("\t"));
				printString(localName);
			}
			DEBUG_MSG(INFO, EXIP_DEBUG, ("\n"));
		}
	}
	return ERR_OK;
}
コード例 #2
0
ファイル: grammars.c プロジェクト: actility/ong
errorCode printGrammarRule(SmallIndex nonTermID, GrammarRule* rule, EXIPSchema *schema)
{
	Index j = 0;
	Production* tmpProd;
	EXIType exiType = VALUE_TYPE_NONE;

	DEBUG_MSG(INFO, EXIP_DEBUG, ("\n>RULE\n"));
	DEBUG_MSG(INFO, EXIP_DEBUG, ("NT-%u:", (unsigned int) nonTermID));

	DEBUG_MSG(INFO, EXIP_DEBUG, ("\n"));

	for(j = 0; j < rule->pCount; j++)
	{
		String *localName = NULL;
		tmpProd = &rule->production[rule->pCount - 1 - j];
		DEBUG_MSG(INFO, EXIP_DEBUG, ("\t"));

		if(GET_PROD_EXI_EVENT(tmpProd->content) != EVENT_SE_QNAME && tmpProd->typeId != INDEX_MAX)
			exiType = GET_EXI_TYPE(schema->simpleTypeTable.sType[tmpProd->typeId].content);
		else
			exiType = VALUE_TYPE_NONE;

		switch(GET_PROD_EXI_EVENT(tmpProd->content))
		{
			case EVENT_SD:
				DEBUG_MSG(INFO, EXIP_DEBUG, ("SD "));
				break;
			case EVENT_ED:
				DEBUG_MSG(INFO, EXIP_DEBUG, ("ED "));
				break;
			case EVENT_SE_QNAME:
			{
				QNameID *qname = &tmpProd->qnameId;
				localName = &(GET_LN_URI_P_QNAME(schema->uriTable, qname).lnStr);
				DEBUG_MSG(INFO, EXIP_DEBUG, ("SE (qname: %u:%u) ", (unsigned int) qname->uriId, (unsigned int) qname->lnId));
				break;
			}
			case EVENT_SE_URI:
				DEBUG_MSG(INFO, EXIP_DEBUG, ("SE (uri) "));
				break;
			case EVENT_SE_ALL:
				DEBUG_MSG(INFO, EXIP_DEBUG, ("SE (*) "));
				break;
			case EVENT_EE:
				DEBUG_MSG(INFO, EXIP_DEBUG, ("EE "));
				break;
			case EVENT_AT_QNAME:
			{
				QNameID *qname = &tmpProd->qnameId;
				localName = &(GET_LN_URI_P_QNAME(schema->uriTable, qname).lnStr);
				DEBUG_MSG(INFO, EXIP_DEBUG, ("AT (qname %u:%u) ", (unsigned int) tmpProd->qnameId.uriId, (unsigned int) tmpProd->qnameId.lnId));
				writeValueTypeString(exiType);
				break;
			}
			case EVENT_AT_URI:
				DEBUG_MSG(INFO, EXIP_DEBUG, ("AT (uri) "));
				break;
			case EVENT_AT_ALL:
				DEBUG_MSG(INFO, EXIP_DEBUG, ("AT (*) "));
				writeValueTypeString(exiType);
				break;
			case EVENT_CH:
				DEBUG_MSG(INFO, EXIP_DEBUG, ("CH "));
				writeValueTypeString(exiType);
				break;
			case EVENT_NS:
				DEBUG_MSG(INFO, EXIP_DEBUG, ("NS "));
				break;
			case EVENT_CM:
				DEBUG_MSG(INFO, EXIP_DEBUG, ("CM "));
				break;
			case EVENT_PI:
				DEBUG_MSG(INFO, EXIP_DEBUG, ("PI "));
				break;
			case EVENT_DT:
				DEBUG_MSG(INFO, EXIP_DEBUG, ("DT "));
				break;
			case EVENT_ER:
				DEBUG_MSG(INFO, EXIP_DEBUG, ("ER "));
				break;
			case EVENT_SC:
				DEBUG_MSG(INFO, EXIP_DEBUG, ("SC "));
				break;
			case EVENT_VOID:
				DEBUG_MSG(INFO, EXIP_DEBUG, (" "));
				break;
			default:
				return UNEXPECTED_ERROR;
		}
		DEBUG_MSG(INFO, EXIP_DEBUG, ("\t"));
		if(GET_PROD_NON_TERM(tmpProd->content) != GR_VOID_NON_TERMINAL)
		{
			DEBUG_MSG(INFO, EXIP_DEBUG, ("NT-%u", (unsigned int) GET_PROD_NON_TERM(tmpProd->content)));
		}
		DEBUG_MSG(INFO, EXIP_DEBUG, ("\t"));

		DEBUG_MSG(INFO, EXIP_DEBUG, ("%u", (unsigned int) j));

		if (localName != NULL)
		{
			DEBUG_MSG(INFO, EXIP_DEBUG, ("\t"));
			printString(localName);
		}
		DEBUG_MSG(INFO, EXIP_DEBUG, ("\n"));
	}
	return ERR_OK;
}