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

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

?? dictment.cpp

?? 計算機英漢機器翻譯系統中的英語詞性標注方法實現
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
#include "stdafx.h"
//#include "DictMent.h"
#include "Diction.h"

#include <stdio.h>
#include <string.h>
#include <memory.h>

COneWord::COneWord()
{
	m_pFirstChinese = NULL;
	m_pLastChinese = NULL;
	m_nEnglishLen = 0;
	m_pszEnglish = NULL;
	m_nCurrReadLineNum = 0;
	
	m_pszOrig = NULL;
	m_nOrigLen = 0;

	m_pszAmbig = NULL;
	m_nAmbigLen = 0;

	m_bIsExistOrig = FALSE;
	m_bIsExistAmbig = FALSE;

	m_mapCate.RemoveAll();
	m_mapHead.RemoveAll();
	m_mapAmbig.RemoveAll();
	m_mapNoValueSlot.RemoveAll();
	m_mapCate.RemoveAll();
	
	m_arraySlotName.RemoveAll();
	for ( int Loop=0;Loop<MAX_SLOT_NAME_NUM;Loop++ ) {
		m_mapSlotValue[Loop].RemoveAll();
	}
}

COneWord::~COneWord()
{

}

BOOL COneWord::FillMap(CMapStringToOb &mapName,FILE *fpDefine)
{
	const int MAX_DEFINE_LINE_LEN = 100;
	char szLine[MAX_DEFINE_LINE_LEN];
	LPSTR pszTep;
	CString strLine;
	ObWord *pObject;
	int nIndex = 0;
	do {
		fgets(szLine,MAX_DEFINE_LINE_LEN,fpDefine);
		if ( feof(fpDefine) )
			break;
		else if ( szLine[0] == '[' )
			break;
		pszTep = strchr(szLine,0x0d);
		if ( pszTep == NULL ) {
			ASSERT(FALSE);
		}
		*pszTep = '\0';
		
		strLine = szLine;
		pObject = new ObWord;
		pObject->GiveVolue(nIndex);
		nIndex ++;
		mapName.SetAt( strLine, (ObWord*)pObject );
	} while ( TRUE );
	return TRUE;
}

BOOL COneWord::FillMapWithArray(CMapStringToOb &mapName,
								CStringArray &arrayName,
								int &nNameNum,FILE *fpDefine)
{
	char szLine[MAX_DEFINE_LINE_LEN];
	LPSTR pszTep;

	CString strLine;
	ObWord *pObject;
	nNameNum = 0;
	do {
		fgets(szLine,MAX_DEFINE_LINE_LEN,fpDefine);
		if ( feof(fpDefine) )
			break;
		else if ( szLine[0] == '[' )
			break;
		pszTep = strchr(szLine,0x0d);
		if ( pszTep == NULL ) {
			ASSERT(FALSE);
		}
		*pszTep = '\0';
		
		nNameNum ++;

		strLine = szLine;
		arrayName.Add(strLine);
		pObject = new ObWord;
		pObject->GiveVolue(nNameNum-1);
		mapName.SetAt( strLine,(ObWord*)pObject );
	} while ( TRUE );

	return TRUE;
}

BOOL COneWord::Init(LPSTR pszDefineName)
// 初始化
{
	FILE *fpDefine = fopen(pszDefineName,"rb");
	if ( fpDefine == NULL ) {
		CString strMsg;
		strMsg.Format("Cann't Open %s ",pszDefineName);
		AfxMessageBox(strMsg);
		return FALSE;
	}
	
	// 跳過第一行
	char szLine[MAX_DEFINE_LINE_LEN];
	fgets(szLine,MAX_DEFINE_LINE_LEN,fpDefine);

	FillMap(m_mapCate,fpDefine);
	FillMap(m_mapHead,fpDefine);
	FillMapWithArray(m_mapSlotName,m_arraySlotName,m_nSlotNameNum,fpDefine);
	FillMap(m_mapNoValueSlot,fpDefine);
	FillMap(m_mapAmbig,fpDefine);
	
	for ( int Loop=0;Loop<m_nSlotNameNum;Loop++ ) {
		//ASSERT( Loop != 13 );
		FillMap(m_mapSlotValue[Loop],fpDefine);
	}
	
	fclose(fpDefine);
	return TRUE;
}

void COneWord::FreeMap(CMapStringToOb &mapName)
{
	POSITION pos;
	ObWord* pObject;
	CString string;
	for( pos = mapName.GetStartPosition(); pos != NULL; ) {
		mapName.GetNextAssoc( pos,string, (CObject*&)pObject );
		delete pObject;
	}
  
	mapName.RemoveAll();
}

void COneWord::ExitInit()
// 釋放保留字數組占用的空間
{
	FreeMap(m_mapCate);
	FreeMap(m_mapHead);
	FreeMap(m_mapSlotName);
	FreeMap(m_mapNoValueSlot);
	FreeMap(m_mapAmbig);
	
	m_arraySlotName.RemoveAll();
	for ( int Loop=0;Loop<m_nSlotNameNum;Loop++ ) {
		FreeMap(m_mapSlotValue[Loop]);
	}
}

BOOL COneWord::SetEnglishOfWordItem(LPSTR pszEnglish,int nEnglishLen)
{
	if ( nEnglishLen <= 0 ) {
		CString strMsg;
		strMsg.Format("ERROR 1,在%s的%d行(無英文)",
			m_pszDicName,m_nCurrReadLineNum);
		if ( m_bIsWriteLog ) {
			fputs(strMsg,m_fpErrLogFile);
			fputs("\r\n",m_fpErrLogFile);
		} else
			AfxMessageBox(strMsg);

		if ( m_bIsWriteErrToDic ) {
			fputs(strMsg,m_fpTarDic);
			fputs("\r\n",m_fpTarDic);
		}
		return FALSE;
	}
	// 將英文詞條添入結構中
	m_nEnglishLen = nEnglishLen;
	m_pszEnglish = new char[m_nEnglishLen+1];
	memcpy(m_pszEnglish,pszEnglish,m_nEnglishLen);
	m_pszEnglish[m_nEnglishLen] = '\0';
	return TRUE;
}

BOOL COneWord::SetChiTextOfWordItem(LPSTR pszChinese,int nChineseLen)
{
	if ( nChineseLen <= 0 ) {
		m_pCurrChinese->m_nChineseLen = 0;
		m_pCurrChinese->m_pszChinese = NULL;
	} else {
		// 將中文詞條添入結構中
		m_pCurrChinese->m_nChineseLen = nChineseLen;
		m_pCurrChinese->m_pszChinese = new char[m_pCurrChinese->m_nChineseLen+1];
		memcpy(m_pCurrChinese->m_pszChinese,pszChinese,
			m_pCurrChinese->m_nChineseLen);
		m_pCurrChinese->m_pszChinese[m_pCurrChinese->m_nChineseLen] = '\0';
	}
	return TRUE;
}

BOOL COneWord::SetCateOfWordItem(LPSTR pszCate,int nCateLen)
{
	if ( nCateLen <= 0 ) {
		CString strMsg;
		strMsg.Format("ERROR 3,在%s的%d行: Cate空",
			m_pszDicName,m_nCurrReadLineNum);
		if ( m_bIsWriteLog ) {
			fputs(strMsg,m_fpErrLogFile);
			fputs("\r\n",m_fpErrLogFile);
		} else
			AfxMessageBox(strMsg);

		if ( m_bIsWriteErrToDic ) {
			fputs(strMsg,m_fpTarDic);
			fputs("\r\n",m_fpTarDic);
			}
		return FALSE;
	}
	m_pCurrChinese->m_pszCate = new char[nCateLen+1];
	memcpy(m_pCurrChinese->m_pszCate,pszCate,nCateLen);
	m_pCurrChinese->m_pszCate[nCateLen] = '\0';

	ObWord* pObject;
	if ( m_mapCate.Lookup(m_pCurrChinese->m_pszCate,( CObject*& )pObject) == FALSE ) {
		// Not Found
		CString strMsg;
		strMsg.Format("ERROR 20,第%d行: Cate的值%s非法",
			m_pszDicName,m_nCurrReadLineNum,m_pCurrChinese->m_pszCate);
		if ( m_bIsWriteLog ) {
			fputs(strMsg,m_fpErrLogFile);
			fputs("\r\n",m_fpErrLogFile);
		} else
			AfxMessageBox(strMsg);

		if ( m_bIsWriteErrToDic ) {
			fputs(strMsg,m_fpTarDic);
			fputs("\r\n",m_fpTarDic);
		}
		return FALSE;
	}
	return TRUE;
}

BOOL COneWord::SetHeadOfWordItem(LPSTR pszHead,int nHeadLen)
{
	if ( nHeadLen <= 0 ) {
		CString strMsg;
		strMsg.Format("ERROR 4,第%d行: Head空",
			m_pszDicName,m_nCurrReadLineNum);
		if ( m_bIsWriteLog ) {
			fputs(strMsg,m_fpErrLogFile);
			fputs("\r\n",m_fpErrLogFile);
		} else
			AfxMessageBox(strMsg);

		if ( m_bIsWriteErrToDic ) {
//			fputs(strMsg,m_fpTarDic);
			fputs("\r\n",m_fpTarDic);
		}
		return FALSE;
	}
	m_pCurrChinese->m_pszHead = new char[nHeadLen+1];
	memcpy(m_pCurrChinese->m_pszHead,pszHead,nHeadLen);
	m_pCurrChinese->m_pszHead[nHeadLen] = '\0';

	ObWord* pObject;
	if ( m_mapHead.Lookup(m_pCurrChinese->m_pszHead,( CObject*& )pObject) == FALSE ) {
		// Not Found
		CString strMsg;
		strMsg.Format("ERROR 21,第%d行: Head的值%s非法",
			m_pszDicName,m_nCurrReadLineNum,m_pCurrChinese->m_pszHead);
		if ( m_bIsWriteLog ) {
			fputs(strMsg,m_fpErrLogFile);
			fputs("\r\n",m_fpErrLogFile);
		} else
			AfxMessageBox(strMsg);

		if ( m_bIsWriteErrToDic ) {
//			fputs(strMsg,m_fpTarDic);
			fputs("\r\n",m_fpTarDic);
		}
		return FALSE;
	}
	return TRUE;
}

BOOL COneWord::SetOrigWord(LPSTR pszLeft)
{
	m_bIsExistOrig = TRUE;

	LPSTR pszTep;
	pszTep = strchr(pszLeft,'[');
	if ( pszTep == NULL ) {
		CString strMsg;

		strMsg.Format("ERROR 5,第%d行: 找不到 [ ",
			m_pszDicName,m_nCurrReadLineNum);
		if ( m_bIsWriteLog ) {
			fputs(strMsg,m_fpErrLogFile);
			fputs("\r\n",m_fpErrLogFile);
		} else
			AfxMessageBox(strMsg);

		if ( m_bIsWriteErrToDic ) {
			fputs(strMsg,m_fpTarDic);
			fputs("\r\n",m_fpTarDic);
		}
		return FALSE;
	}
	m_nOrigLen = pszTep - pszLeft;
	m_pszOrig = new char[m_nOrigLen+1];
	memcpy(m_pszOrig,pszLeft,m_nOrigLen);
	m_pszOrig[m_nOrigLen] = '\0';
	
	// 取詞條類型
	pszLeft = pszTep;
	if ( strncmp(pszLeft,"[ed]",4) == 0 ) {
		m_nWordStyle = STYLE_ED;
		pszLeft += 4;
	} else if ( strncmp(pszLeft,"[ing]",5) == 0 ) {
		m_nWordStyle = STYLE_ING;
		pszLeft += 5;
	} else if ( strncmp(pszLeft,"[is]",4) == 0 ) {
		m_nWordStyle = STYLE_IS;
		pszLeft += 4;
	} else if ( strncmp(pszLeft,"[am]",4) == 0 ) {
		m_nWordStyle = STYLE_AM;
		pszLeft += 4;
	} else if ( strncmp(pszLeft,"[are]",5) == 0 ) {
		m_nWordStyle = STYLE_ARE;
		pszLeft += 5;
	} else if ( strncmp(pszLeft,"[s]",3) == 0 ) {
		m_nWordStyle = STYLE_S;
		pszLeft += 3;
	} else if ( strncmp(pszLeft,"[ed1]",5) == 0 ) {
		m_nWordStyle = STYLE_ED1;
		pszLeft += 5;
	} else if ( strncmp(pszLeft,"[ed2]",5) == 0 ) {
		m_nWordStyle = STYLE_ED2;
		pszLeft += 5;
	} else {
		CString strMsg;
		strMsg.Format("ERROR 6,第%d行: []中詞條類型錯",
			m_pszDicName,m_nCurrReadLineNum);
		if ( m_bIsWriteLog ) {
			fputs(strMsg,m_fpErrLogFile);
			fputs("\r\n",m_fpErrLogFile);
		} else
			AfxMessageBox(strMsg);

		if ( m_bIsWriteErrToDic ) {
			fputs(strMsg,m_fpTarDic);
			fputs("\r\n",m_fpTarDic);
		}
		return FALSE;
	}
	
	if ( pszLeft[0] == ',' && pszLeft[1] == 'A' ) { // 下面是兼類
		pszLeft++;
		if ( !SetAmbig(pszLeft) )
			return FALSE;
	} else if ( pszLeft[0] == 0x0d ) {
		
	} else {
		CString strMsg;
		strMsg.Format("ERROR 7,第%d行: 本行尾的內容未知",
			m_pszDicName,m_nCurrReadLineNum);
		if ( m_bIsWriteLog ) {
			fputs(strMsg,m_fpErrLogFile);
			fputs("\r\n",m_fpErrLogFile);
		} else
			AfxMessageBox(strMsg);

		if ( m_bIsWriteErrToDic ) {
			fputs(strMsg,m_fpTarDic);
			fputs("\r\n",m_fpTarDic);
		}
		return FALSE;
	}
	return TRUE;
}

BOOL COneWord::SetAmbig(LPSTR pszLeft)
{
	m_bIsExistAmbig = TRUE;
	
	LPSTR pszTep = strchr(pszLeft,'=');
	if ( pszTep == NULL ) {
		CString strMsg;
		strMsg.Format("ERROR 8,第%d行: 兼類內容不全",
			m_pszDicName,m_nCurrReadLineNum);
		if ( m_bIsWriteLog ) {
			fputs(strMsg,m_fpErrLogFile);
			fputs("\r\n",m_fpErrLogFile);
		} else
			AfxMessageBox(strMsg);

		if ( m_bIsWriteErrToDic ) {
			fputs(strMsg,m_fpTarDic);
			fputs("\r\n",m_fpTarDic);
		}
		return FALSE;
	}
	pszLeft = pszTep + 1;
	pszTep = strchr(pszLeft,0x0d );
	if ( pszTep == NULL ) {
		CString strMsg;
		strMsg.Format("ERROR 9,第%d行",
			m_pszDicName,m_nCurrReadLineNum);
		if ( m_bIsWriteLog ) {
			fputs(strMsg,m_fpErrLogFile);
			fputs("\r\n",m_fpErrLogFile);
		} else
			AfxMessageBox(strMsg);

		if ( m_bIsWriteErrToDic ) {
			fputs(strMsg,m_fpTarDic);
			fputs("\r\n",m_fpTarDic);
		}
		return FALSE;
	}
	m_nAmbigLen = pszTep - pszLeft;
	m_pszAmbig = new char[m_nAmbigLen + 1];
	memcpy(m_pszAmbig,pszLeft,m_nAmbigLen);
	m_pszAmbig[m_nAmbigLen] = '\0';

	ObWord* pObject;
	if ( m_mapAmbig.Lookup(m_pszAmbig,( CObject*& )pObject) == FALSE ) {
		// Not Found
		CString strMsg;
		strMsg.Format("ERROR 22,第%d行: Ambig的值非法",
			m_pszDicName,m_nCurrReadLineNum);
		if ( m_bIsWriteLog ) {
			fputs(strMsg,m_fpErrLogFile);
			fputs("\r\n",m_fpErrLogFile);
		} else
			AfxMessageBox(strMsg);

		if ( m_bIsWriteErrToDic ) {
			fputs(strMsg,m_fpTarDic);
			fputs("\r\n",m_fpTarDic);
		}
		return FALSE;
	}
	return TRUE;
}

Slot *COneWord::MakeSlot(BOOL bIsTranRule,LPSTR pszSlotName,
						 int nSlotNameLen,LPSTR pszSlotValue,
						 int nSlotValueLen)
{
	Slot *pSlot = new Slot;
	pSlot->m_bIsTranRule = bIsTranRule;

	pSlot->m_pszSlotName = new char[nSlotNameLen+1];
	memcpy(pSlot->m_pszSlotName,pszSlotName,nSlotNameLen);
	pSlot->m_pszSlotName[nSlotNameLen] = '\0';

	if ( nSlotValueLen > 0 ) {
		pSlot->m_pszSlotValue = new char[nSlotValueLen+1];
		memcpy(pSlot->m_pszSlotValue,pszSlotValue,nSlotValueLen);
		pSlot->m_pszSlotValue[nSlotValueLen] = '\0';
	} else {
		pSlot->m_pszSlotValue = NULL;
	}
	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产偷国产偷亚洲高清人白洁 | 91久久免费观看| 色综合久久综合| 欧美一区二区三区在线看| 中文字幕一区视频| 精东粉嫩av免费一区二区三区| 91影院在线免费观看| 欧美一区二区三区在线看| 亚洲欧美色一区| 国产成人一级电影| 精品精品欲导航| 香蕉av福利精品导航| 99精品视频在线播放观看| 久久精品综合网| 美国三级日本三级久久99| 欧美视频在线一区二区三区 | 欧美精品丝袜久久久中文字幕| 国产欧美日韩在线看| 老司机免费视频一区二区| 在线观看日韩一区| 国产精品久线在线观看| 激情久久五月天| 日韩欧美专区在线| 日韩影院精彩在线| 欧美精品1区2区3区| 一区二区视频免费在线观看| 成人午夜视频在线观看| 久久在线免费观看| 国产一区亚洲一区| 亚洲精品一区二区三区99| 国产高清不卡二三区| 精品不卡在线视频| 国产真实乱对白精彩久久| 日韩精品中文字幕一区二区三区 | 综合分类小说区另类春色亚洲小说欧美| 麻豆国产91在线播放| 日韩一区二区视频| 久久电影网站中文字幕| 日韩欧美成人午夜| 国内精品视频一区二区三区八戒| 日韩一区二区三免费高清| 麻豆成人91精品二区三区| 精品乱人伦一区二区三区| 国产一区二区精品久久91| 久久亚洲捆绑美女| 顶级嫩模精品视频在线看| 国产精品久久免费看| 一本高清dvd不卡在线观看| 亚洲男同性视频| 在线观看网站黄不卡| 日韩精品欧美精品| 精品福利av导航| 成人黄色在线视频| 亚洲一区二区三区小说| 欧美丰满美乳xxx高潮www| 久久电影网电视剧免费观看| 国产日韩一级二级三级| 色综合色综合色综合色综合色综合 | 欧美日本在线播放| 久久成人免费日本黄色| 国产精品嫩草影院av蜜臀| 色哟哟日韩精品| 免费在线观看日韩欧美| 国产日韩三级在线| 欧美日韩中文字幕一区二区| 美女性感视频久久| 自拍av一区二区三区| 欧美肥妇bbw| 国产91精品一区二区麻豆网站| 亚洲免费av高清| 日韩你懂的电影在线观看| av不卡在线播放| 日本一不卡视频| 亚洲欧美在线另类| 日韩精品一区二区三区在线| 成人免费观看男女羞羞视频| 亚洲成人自拍一区| 中文字幕在线免费不卡| 亚洲视频综合在线| 91精品国产综合久久福利软件| 国产大片一区二区| 日本不卡不码高清免费观看| 中文字幕av免费专区久久| 欧美乱妇20p| 91在线免费看| 国产精品99久| 青青青爽久久午夜综合久久午夜| 亚洲欧美精品午睡沙发| 久久色在线视频| 欧美一区二区三区免费视频| 国产成人高清视频| 麻豆中文一区二区| 日日夜夜免费精品| 一区二区三区四区精品在线视频| 久久久久久久久久久久久夜| 欧美精品 日韩| 欧美在线视频你懂得| 99久久精品免费精品国产| 经典三级在线一区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 风流少妇一区二区| 免费精品99久久国产综合精品| 亚洲一区二区欧美日韩| 国产精品久久福利| 国产欧美日韩中文久久| 久久综合五月天婷婷伊人| 91精品国产综合久久久久久久久久 | 日本欧美韩国一区三区| 亚洲一区二区精品久久av| 日韩美女视频一区二区| 国产精品久久久久7777按摩| 国产日韩一级二级三级| 国产欧美精品一区二区三区四区| 精品久久久久av影院| 精品国产网站在线观看| 日韩女优制服丝袜电影| 欧美成人精品1314www| 欧美一区中文字幕| 日韩欧美成人午夜| 久久综合五月天婷婷伊人| 精品va天堂亚洲国产| 久久女同性恋中文字幕| 国产婷婷精品av在线| 亚洲男人电影天堂| 中文字幕一区三区| 一区二区三区四区激情| 午夜精品福利久久久| 日韩在线a电影| 国产在线国偷精品免费看| 国产精品一区二区果冻传媒| 成人免费视频一区| 91一区二区三区在线播放| 欧美手机在线视频| 91麻豆精品国产91久久久使用方法 | 99国产精品一区| 91久久久免费一区二区| 欧美精品三级日韩久久| 欧美电视剧免费观看| 国产午夜一区二区三区| 国产精品久久久久国产精品日日| 亚洲另类春色国产| 全国精品久久少妇| 成人综合日日夜夜| 欧美视频在线一区二区三区 | 91精品办公室少妇高潮对白| 欧美日韩国产电影| 久久久精品tv| 亚洲一线二线三线久久久| 日本强好片久久久久久aaa| 国产精品18久久久久久久网站| gogogo免费视频观看亚洲一| 欧美少妇bbb| 久久免费电影网| 亚洲国产精品一区二区尤物区| 精品亚洲免费视频| 在线观看av一区二区| 欧美成va人片在线观看| 亚洲女同ⅹxx女同tv| 另类综合日韩欧美亚洲| 91小视频免费看| 精品国产网站在线观看| 一区二区三区欧美视频| 国产一区二区三区四| 欧美综合视频在线观看| 欧美精品一区二区三区四区| 一区二区三区在线视频免费| 精品亚洲porn| 欧美性大战xxxxx久久久| 国产日韩精品一区二区浪潮av| 香蕉成人啪国产精品视频综合网| 成人av高清在线| 精品日韩一区二区| 香蕉成人伊视频在线观看| 成人黄页在线观看| 久久久五月婷婷| 美腿丝袜亚洲色图| 欧美二区在线观看| 一区二区高清免费观看影视大全 | 99re这里只有精品6| 久久天天做天天爱综合色| 天天色天天操综合| 色婷婷av久久久久久久| 中文字幕在线不卡视频| 国产精品1区2区3区在线观看| 国产精品二区一区二区aⅴ污介绍| 久久99久久精品| 欧美久久一区二区| 亚洲午夜一二三区视频| 97se亚洲国产综合自在线| 欧美激情在线一区二区| 国产一区二区三区免费观看| 欧美一区二区人人喊爽| 亚洲一区二区三区视频在线| 91免费版pro下载短视频| 国产精品福利影院| 99精品国产99久久久久久白柏| 中文字幕乱码久久午夜不卡| 成人午夜免费视频| 国产精品欧美久久久久一区二区 | 91在线观看污|