📄 tense.cpp
字号:
pDictNode2->m_pFirstChin->m_nChineseLen=
p-(pDictNode2->m_pFirstChin->m_pszChinese);
p[0]='\0';
}
if ( strstr(ComposeWord,"ed")!=0 )
{
if (SearchCate(pDictNode3,Cate_n))
{
while ( pDictNode3->m_pFirstChin->m_nCate != Cate_n )
{
pDictNode3->m_pFirstChin=pDictNode3->m_pFirstChin->m_pNextChin;
}
}
}
if ( (p=strchr(pDictNode3->m_pFirstChin->m_pszChinese,';'))!=NULL )
{
pDictNode3->m_pFirstChin->m_nChineseLen=
p-(pDictNode3->m_pFirstChin->m_pszChinese);
p[0]='\0';
}
strcat(pDictNode2->m_pFirstChin->m_pszChinese,
pDictNode3->m_pFirstChin->m_pszChinese);
nNewLen=pDictNode2->m_pFirstChin->m_nChineseLen
+pDictNode3->m_pFirstChin->m_nChineseLen;
pDictNode->m_pFirstChin->m_pszChinese=new char[nNewLen+2];
strcpy(pDictNode->m_pFirstChin->m_pszChinese,
pDictNode2->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin->m_nChineseLen=
strlen(pDictNode->m_pFirstChin->m_pszChinese);
if ( strstr(ComposeWord,"ed")!=0 ||
pDictNode3->m_byDictForm==STYLE_ED ||
pDictNode3->m_byDictForm==STYLE_ED1 ||
pDictNode3->m_byDictForm==STYLE_ED2 ||
pDictNode3->m_byDictForm==STYLE_ING )
pDictNode->m_pFirstChin->m_nCate=Cate_adj;
else if ( SearchCate(pDictNode3,Cate_n) )
pDictNode->m_pFirstChin->m_nCate=Cate_n;
else if ( SearchCate(pDictNode3,Cate_v) )
pDictNode->m_pFirstChin->m_nCate=Cate_vt;
else
pDictNode->m_pFirstChin->m_nCate=Cate_n;
}
else if (SearchCate(pDictNode2,Cate_adv))
{
while ( pDictNode2->m_pFirstChin->m_nCate != Cate_adv )
{
pDictNode2->m_pFirstChin=pDictNode2->m_pFirstChin->m_pNextChin;
}
if ( (p=strchr(pDictNode2->m_pFirstChin->m_pszChinese,';'))!=NULL )
{
pDictNode2->m_pFirstChin->m_nChineseLen=
p-(pDictNode2->m_pFirstChin->m_pszChinese);
p[0]='\0';
}
if( SearchCate(pDictNode3,Cate_adj) ||
pDictNode3->m_byDictForm==STYLE_ED ||
pDictNode3->m_byDictForm==STYLE_ED1 ||
pDictNode3->m_byDictForm==STYLE_ED2 ||
pDictNode3->m_byDictForm==STYLE_ING )
{
pDictNode->m_pFirstChin->m_nCate=Cate_adj;
while ( pDictNode3->m_pFirstChin->m_nCate != Cate_adj &&
pDictNode3->m_pFirstChin->m_nCate != Cate_vi &&
pDictNode3->m_pFirstChin->m_nCate != Cate_vt &&
pDictNode3->m_pFirstChin->m_nCate != Cate_vd &&
pDictNode3->m_pFirstChin->m_nCate != Cate_vl)
{
pDictNode3->m_pFirstChin=pDictNode3->m_pFirstChin->m_pNextChin;
}
}
else
pDictNode->m_pFirstChin->m_nCate=Cate_n;
if ( (p=strchr(pDictNode3->m_pFirstChin->m_pszChinese,';'))!=NULL )
{
pDictNode3->m_pFirstChin->m_nChineseLen=
p-(pDictNode3->m_pFirstChin->m_pszChinese);
p[0]='\0';
}
strcat(pDictNode2->m_pFirstChin->m_pszChinese,
pDictNode3->m_pFirstChin->m_pszChinese);
nNewLen=pDictNode2->m_pFirstChin->m_nChineseLen
+pDictNode3->m_pFirstChin->m_nChineseLen;
pDictNode->m_pFirstChin->m_pszChinese=new char[nNewLen+2];
strcpy(pDictNode->m_pFirstChin->m_pszChinese,
pDictNode2->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin->m_nChineseLen=
strlen(pDictNode->m_pFirstChin->m_pszChinese);
}
else if (SearchCate(pDictNode2,Cate_n))
{
while ( pDictNode2->m_pFirstChin->m_nCate != Cate_n )
{
pDictNode2->m_pFirstChin=pDictNode2->m_pFirstChin->m_pNextChin;
}
if ( (p=strchr(pDictNode2->m_pFirstChin->m_pszChinese,';'))!=NULL )
{
pDictNode2->m_pFirstChin->m_nChineseLen=
p-(pDictNode2->m_pFirstChin->m_pszChinese);
p[0]='\0';
}
if( SearchCate(pDictNode3,Cate_conj))
{
pDictNode->m_pFirstChin->m_nCate=Cate_adj;
while ( pDictNode3->m_pFirstChin->m_nCate != Cate_conj )
{
pDictNode3->m_pFirstChin=pDictNode3->m_pFirstChin->m_pNextChin;
}
}
else if( SearchCate(pDictNode3,Cate_adj) ||
pDictNode3->m_byDictForm==STYLE_ED ||
pDictNode3->m_byDictForm==STYLE_ED1 ||
pDictNode3->m_byDictForm==STYLE_ED2 ||
pDictNode3->m_byDictForm==STYLE_ING )
{
pDictNode->m_pFirstChin->m_nCate=Cate_adj;
if (pDictNode3->m_pszAmbig!=NULL && (strstr(pDictNode3->m_pszAmbig,"adj")!=0 ||
strstr(pDictNode3->m_pszAmbig,"/v")!=0))
{
while ( pDictNode3->m_pFirstChin->m_nCate != Cate_adj &&
pDictNode3->m_pFirstChin->m_nCate != Cate_vi &&
pDictNode3->m_pFirstChin->m_nCate != Cate_vt &&
pDictNode3->m_pFirstChin->m_nCate != Cate_vd &&
pDictNode3->m_pFirstChin->m_nCate != Cate_vl)
{
pDictNode3->m_pFirstChin=pDictNode3->m_pFirstChin->m_pNextChin;
}
}
}
else if ( SearchCate(pDictNode3,Cate_v) )
{
pDictNode->m_pFirstChin->m_nCate=Cate_vt;
while ( pDictNode3->m_pFirstChin->m_nCate != Cate_vi &&
pDictNode3->m_pFirstChin->m_nCate != Cate_vt &&
pDictNode3->m_pFirstChin->m_nCate != Cate_vd &&
pDictNode3->m_pFirstChin->m_nCate != Cate_vl)
{
pDictNode3->m_pFirstChin=pDictNode3->m_pFirstChin->m_pNextChin;
}
}
else
pDictNode->m_pFirstChin->m_nCate=Cate_n;
if ( (p=strchr(pDictNode3->m_pFirstChin->m_pszChinese,';'))!=NULL )
{
pDictNode3->m_pFirstChin->m_nChineseLen=
p-(pDictNode3->m_pFirstChin->m_pszChinese);
p[0]='\0';
}
strcat(pDictNode2->m_pFirstChin->m_pszChinese,
pDictNode3->m_pFirstChin->m_pszChinese);
nNewLen=pDictNode2->m_pFirstChin->m_nChineseLen
+pDictNode3->m_pFirstChin->m_nChineseLen;
pDictNode->m_pFirstChin->m_pszChinese=new char[nNewLen+2];
strcpy(pDictNode->m_pFirstChin->m_pszChinese,
pDictNode2->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin->m_nChineseLen=
strlen(pDictNode->m_pFirstChin->m_pszChinese);
}
else if (SearchCate(pDictNode2,Cate_v))
{
if ( (p=strchr(pDictNode2->m_pFirstChin->m_pszChinese,';'))!=NULL )
{
pDictNode2->m_pFirstChin->m_nChineseLen=
p-(pDictNode2->m_pFirstChin->m_pszChinese);
p[0]='\0';
}
if ( (p=strchr(pDictNode3->m_pFirstChin->m_pszChinese,';'))!=NULL )
{
pDictNode3->m_pFirstChin->m_nChineseLen=
p-(pDictNode3->m_pFirstChin->m_pszChinese);
p[0]='\0';
}
strcat(pDictNode2->m_pFirstChin->m_pszChinese,
pDictNode3->m_pFirstChin->m_pszChinese);
nNewLen=pDictNode2->m_pFirstChin->m_nChineseLen
+pDictNode3->m_pFirstChin->m_nChineseLen;
pDictNode->m_pFirstChin->m_pszChinese=new char[nNewLen+2];
strcpy(pDictNode->m_pFirstChin->m_pszChinese,
pDictNode2->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin->m_nChineseLen=
strlen(pDictNode->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin->m_nCate=Cate_n;
}
else
{
if ( (p=strchr(pDictNode2->m_pFirstChin->m_pszChinese,';'))!=NULL )
{
pDictNode2->m_pFirstChin->m_nChineseLen=
p-(pDictNode2->m_pFirstChin->m_pszChinese);
p[0]='\0';
}
if ( (p=strchr(pDictNode3->m_pFirstChin->m_pszChinese,';'))!=NULL )
{
pDictNode3->m_pFirstChin->m_nChineseLen=
p-(pDictNode3->m_pFirstChin->m_pszChinese);
p[0]='\0';
}
strcat(pDictNode2->m_pFirstChin->m_pszChinese,
pDictNode3->m_pFirstChin->m_pszChinese);
nNewLen=pDictNode2->m_pFirstChin->m_nChineseLen
+pDictNode3->m_pFirstChin->m_nChineseLen;
pDictNode->m_pFirstChin->m_pszChinese=new char[nNewLen+2];
strcpy(pDictNode->m_pFirstChin->m_pszChinese,
pDictNode2->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin->m_nChineseLen=
strlen(pDictNode->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin->m_nCate=Cate_n;
}
return pDictNode;
}
DictNode* CreateOrdinalWord(DictNode *pDictNode2,char *Word)
{
DictNode* pDictNode;
char temp[150];
int i;
pDictNode = new DictNode;
i = strlen(Word);
pDictNode->m_nLxhCate = NULL;
pDictNode->m_pszEnglish = new char[i+1];
pDictNode->m_pszOrig = new char[i+1];
strcpy(pDictNode->m_pszEnglish,Word);
strcpy(pDictNode->m_pszOrig,Word);
pDictNode->m_byDictForm = STYLE_ORIG;
pDictNode->m_byDictNumber = Sing_Number;
pDictNode->m_byMaxPhraseLen = DefaMaxPhraseLen;
pDictNode->m_pNextWordNode = NULL;
pDictNode->m_pPrevWordNode = NULL;
pDictNode->m_nEnglishLen = i;
pDictNode->m_bIsExistOrig = TRUE;
pDictNode->m_nOrigLen = i;
pDictNode->m_nWordStyle = 0;
pDictNode->m_bIsExistAmbig = 0;
pDictNode->m_pszAmbig = NULL;
pDictNode->m_nAmbigLen = 0;
pDictNode->m_nChinNum = 0;
strcpy(temp,"第");
strcat(temp,pDictNode2->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin = new DictChin;
i = strlen(temp);
pDictNode->m_pFirstChin->m_pszChinese=new char[i+1];
strcpy(pDictNode->m_pFirstChin->m_pszChinese,temp);
pDictNode->m_pFirstChin->m_nChineseLen=
strlen(pDictNode->m_pFirstChin->m_pszChinese);
pDictNode->m_pFirstChin->m_nCate=Cate_number;
pDictNode->m_pFirstChin->m_nSlotNum = 1;
pDictNode->m_pFirstChin->m_pwSlotLink =
new WORD[pDictNode->m_pFirstChin->m_nSlotNum*2+1];
memcpy( pDictNode->m_pFirstChin->m_pwSlotLink,&Sem_OrdnlNU,sizeof(WORD));
Mystrcpy(pDictNode,"number",3);
return pDictNode;
}//cdq add end
void DictWordInit(DictNode* pDictNode) //called by Caim
{ //in diction.cpp DictWordInit(m_pDictNode);
pDictNode->m_pNextWordNode = NULL;
pDictNode->m_pPrevWordNode = NULL;
pDictNode->m_byDictForm = Orig_Form;
pDictNode->m_nLxhCate = NULL;
pDictNode->m_nLxhCateLen = 0;
pDictNode->m_byDictGenetive = No_Genetive; //1:所有格
pDictNode->m_cDictTense = Pre_Tense; //时态:0现在,1过去,2将来,3过去将来
pDictNode->m_cDictAspect = Simple_Aspect; //体态:0一般,1进行,2完成,3完成进行
pDictNode->m_cDictVoice = Active_Voice; //0:主动,1:被动
pDictNode->m_cDictNegative = Positive; //0:肯定,1:否定,
pDictNode->m_byDictPerson = Third_Person; //1:第一人称,2:第二人称,3:第三人称
pDictNode->m_byDictNumber = Sing_Number; //0:单数,1:复数
if(pDictNode->m_bIsExistOrig != FALSE)
pDictNode->m_byDictForm = pDictNode->m_nWordStyle;
else
pDictNode->m_byDictForm = Orig_Form;
pDictNode->m_byDictNumber = Sing_Number;
pDictNode->m_byDictGenetive = No_Genetive;
if(pDictNode->m_bIsExistOrig == FALSE ||
pDictNode->m_pszOrig==NULL)
{
pDictNode->m_pszOrig = Mystrcpy(pDictNode,
pDictNode->m_pszEnglish,2);
}
}
void LxhFreeDictNode(DictNode *pDictNode) //called by Caim
{
if(pDictNode != NULL && pDictNode->m_nLxhCate != NULL)
{
delete pDictNode->m_nLxhCate;
pDictNode->m_nLxhCate = NULL;
pDictNode->m_nLxhCateLen = 0;
}
}
BOOL SearchCate(DictNode *pDictNode,int Cate)
{
DictChin *m_pChin;
if(pDictNode == NULL)
return FALSE;
m_pChin = pDictNode->m_pFirstChin;
while(m_pChin != NULL)
{
if(Cate == Cate_v)
{
if(m_pChin->m_nCate == Cate_vd)
return TRUE;
else if(m_pChin->m_nCate == Cate_ved)
return TRUE;
else if(m_pChin->m_nCate == Cate_vi)
return TRUE;
else if(m_pChin->m_nCate == Cate_ving)
return TRUE;
else if(m_pChin->m_nCate == Cate_vl)
return TRUE;
else if(m_pChin->m_nCate == Cate_vt)
return TRUE;
}
else
if(m_pChin->m_nCate == Cate)
return TRUE;
m_pChin = m_pChin->m_pNextChin;
}
return FALSE;
}
BOOL SearchHead(DictNode *pDictNode,int Head)
{
DictChin *m_pChin;
if(pDictNode == NULL)
return FALSE;
m_pChin = pDictNode->m_pFirstChin;
while(m_pChin != NULL)
{
if(m_pChin->m_nHead == Head)
return TRUE;
else
m_pChin = m_pChin->m_pNextChin;
}
return FALSE;
}
BOOL SearchCase(DictNode *pDictNode,int Case)
{
DictChin *m_pChin;
int i;
if(pDictNode == NULL)
return FALSE;
m_pChin = pDictNode->m_pFirstChin;
while(m_pChin != NULL)
{
for(i=0;i<m_pChin->m_nSlotNum;i++)
if(m_pChin->m_pwSlotLink[i] == Case)
break;
if(i < m_pChin->m_nSlotNum)
return TRUE;
else
m_pChin = m_pChin->m_pNextChin;
}
return FALSE;
}
char * Mystrcpy(DictNode *pDictNode,char *Word,int Option)
{ //Option:1, resource; 2: Original, 3: LxhCate
int StrLen = strlen(Word)+1;
if(Option == 1)
{
if(pDictNode->m_pszEnglish != NULL)
delete pDictNode->m_pszEnglish;
pDictNode->m_pszEnglish = new char[StrLen];
strcpy(pDictNode->m_pszEnglish,Word);
pDictNode->m_nEnglishLen = StrLen-1;
return pDictNode->m_pszEnglish;
}
else if (Option ==2)
{
if(pDictNode->m_pszOrig != NULL)
delete pDictNode->m_pszOrig;
pDictNode->m_pszOrig = new char[StrLen];
strcpy(pDictNode->m_pszOrig,Word);
pDictNode->m_nOrigLen = StrLen-1;
return pDictNode->m_pszOrig;
}
else if (Option == 3)
{
if(pDictNode->m_nLxhCate != NULL)
delete pDictNode->m_nLxhCate;
pDictNode->m_nLxhCate = new char[StrLen];
strcpy(pDictNode->m_nLxhCate,Word);
pDictNode->m_nLxhCateLen = StrLen-1;
return pDictNode->m_pszOrig;
}
return NULL;
}
void FreeSentence(SentenceType * Sen)
{ //释放句子结点
DictNode * pDict1, *pDict2;
pDict1 = Sen->m_pWordFirst;
while(pDict1 != NULL)
{
pDict2 = pDict1->m_pNextWordNode;
g_objLexSearch.FreeNode(
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -