windows-nt/Source/XPSP1/NT/inetsrv/intlwb/kor/baseaux.cpp
2020-09-26 16:20:57 +08:00

1847 lines
63 KiB
C++

// =========================================================================
// Copyright (C) 1997 - 1998, Microsoft Corporation. All Rights Reserved.
//
// File Name : BASEAUX.CPP
// Function : BASE ENGINE FUNCTION COLLECTION (AUX PROCESS)
// : NLP Base Engine Function
// =========================================================================
#include "baseaux.hpp"
#include "MainDict.h"
// Many peoples write verb and auxiliary verb without blank.
// In that case, we have to separate the ending of verb and the stem of auxiliary verb.
// Parameters : incode is reverse order.
// Return value : the start position of the stem of auxiliary verb
// made by dhyu -- 1996.3
int SeparateEnding (char *incode)
{
int len = lstrlen (incode)-1;
if (incode [len] == __K_I && incode [len-1] == __V_j)
return len - 1;
if (incode [len] == __K_I && incode [len-1] == __V_k)
return len - 1;
if (incode [len] == __K_G && incode [len-1] == __V_p)
return len - 1;
if (incode [len] == __K_G && incode [len-1] == __V_h)
return len - 1;
if (incode [len] == __K_J && incode [len-1] == __V_l)
return len - 1;
return 0;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_AUX_Find()
// Call Functions :
// Description :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_AUX_Find(char *stem,
char pum)
{
char aux_stem[80],
aux_ending[80],
tmp[80];
int reg, luls, temp;
memset(aux_stem, NULL, 80);
memset(aux_ending, NULL, 80);
lstrcpy(aux_stem, stem);
if((reg = NLP_GET_AUX(aux_stem, aux_ending, pum)) != lTRUE)
{
return reg;
}
lstrcpy(tmp, aux_stem);
luls = AUX_ULSPOS;
if(AUX_ACT_SS == 1)
{
switch(AUXULS)
{
case __V_u :
if((reg = NLP_AUX_SS_Vu(aux_stem)) == Manha_Proc)
{
temp = luls;
__DelStem2(tmp, &temp);
luls = temp;
if((reg = NLP_Manha_Proc(tmp)) < INVALID)
{
if(reg == Manha_VALID)
{
reg = AUX_SS_Manha_VALID;
}
else if(reg == Yenha_VALID)
{
reg = AUX_SS_Yenha_VALID;
}
}
}
else if(reg == Manhaeci_Proc)
{
__RepStem1(tmp, luls, __V_l);
if((reg = NLP_Manhaeci_Proc(tmp)) == Manhaeci_VALID)
{
reg = AUX_SS_Manhaeci_VALID;
}
}
if (reg != MORECHECK)
{
char tstem [80];
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
}
return reg;
case __V_nj :
if((reg = NLP_AUX_SS_Vnj(aux_stem)) == Dap_Proc)
{
temp = luls;
__DelStem1(tmp, &temp);
luls = temp;
__RepStem1(tmp, luls, __K_B);
reg = NLP_Dap_Proc(tmp);
if(reg == Dap_VALID)
{
reg = AUX_SS_Dap_VALID;
}
}
if (reg != MORECHECK)
{
char tstem [80];
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
}
return reg;
case __V_hk :
reg = NLP_AUX_SS_Vhk(aux_stem);
if (reg != MORECHECK)
{
char tstem [80];
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
}
return reg;
case __V_ho :
__RepStem1(tmp, luls, __V_hl);
if(AUX_ACT_VB == 1)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _VERB)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
return AUX_SS_VERB_VALID;
}
}
if(AUX_ACT_AD == 1)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _ADJECTIVE)
{
lstrcat (lrgsz, tmp);
vbuf [wcount++] = POS_ADJECTIVE;
lstrcat (lrgsz, "+");
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
return AUX_SS_ADJ_VALID;
}
}
return MORECHECK;
case __V_o :
if((reg = NLP_AUX_SS_Vo(aux_stem)) == Manha_Proc)
{
__RepStem1(tmp, luls, __V_k);
if((reg = NLP_Manha_Proc(tmp)) < INVALID)
{
if(reg == Manha_VALID)
{
reg = AUX_SS_Manha_VALID;
}
else if(reg == Yenha_VALID)
{
reg = AUX_SS_Yenha_VALID;
}
}
}
if (reg != MORECHECK)
{
char tstem [80];
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
}
return reg;
case __V_p :
reg = NLP_AUX_SS_Vp(aux_stem);
if (reg != MORECHECK)
{
char tstem [80];
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
}
return reg;
case __V_O :
reg = NLP_AUX_SS_Vil(aux_stem);
if (reg != MORECHECK)
{
char tstem [80];
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
}
return reg;
case __V_P :
reg = NLP_AUX_SS_Vul(aux_stem);
if (reg != MORECHECK)
{
char tstem [80];
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
}
return reg;
case __V_j :
if(aux_stem[luls-1] == __K_R)
reg = NLP_AUX_SS_Vj_KR(aux_stem);
else
reg = NLP_AUX_SS_Vj(aux_stem);
if (reg != MORECHECK)
{
char tstem [80];
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
}
return reg;
case __V_k :
if((reg = NLP_AUX_SS_Vk(aux_stem)) == Gop_Proc)
{
__RepStem1(tmp, luls, __V_m);
reg = NLP_Gop_Proc(tmp);
if(reg == Gop_VALID)
{
reg = AUX_SS_Gop_VALID;
}
}
if (reg != MORECHECK)
{
char tstem [80];
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
}
return reg;
case __V_np :
if(__IsDefStem(luls, 1) == 1 && __IsDefStem(luls, 2) == 0 &&
tmp[luls-1] == __K_G_D)
{
char tstem [80];
char SK_WE[3] = {'\xB2', '\xE7', 0};
lstrcat (lrgsz, SK_WE);
vbuf [wcount++] = POS_VERB;
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
return AUX_SS_VERB_VALID;
}
return INVALID;
default : return MORECHECK;
}
}
if((reg = NLP_AUX_VCV_Check(aux_stem, aux_ending)) < INVALID)
{
if(AUX_ACT_VB == 1)
{
char tstem [80];
Conv.INS2HAN (aux_stem, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _VERB)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
return AUX_VERB_VALID;
}
}
if(AUX_ACT_AD == 1)
{
char tstem [80];
Conv.INS2HAN (aux_stem, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _ADJECTIVE)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
return AUX_ADJ_VALID;
}
if(NLP_Dap_Proc(aux_stem) == Dap_VALID)
{
char tstem [80];
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
return AUX_Dap_VALID;
}
if(NLP_Gop_Proc(aux_stem) == Gop_VALID)
{
char tstem [80];
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
return AUX_Gop_VALID;
}
if((reg = NLP_Manha_Proc(aux_stem)) < INVALID)
{
if(reg == Manha_VALID)
{
char tstem [80];
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
return AUX_Manha_VALID;
}
if(reg == Yenha_VALID)
{
char tstem [80];
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
return AUX_Yenha_VALID;
}
}
if((reg = NLP_Manhaeci_Proc(aux_stem)) == Manhaeci_VALID)
{
char tstem [80];
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
return AUX_Manhaeci_VALID;
}
}
}
else if(reg == INVALID)
{
return INVALID;
}
if(AUX_ACT_C == 0 && AUX_ACT_V == 1)
{
if(__IsDefStem(AUXULS, 2) == 1 &&
aux_stem[luls] == __V_n && aux_stem[luls-1] == __K_I)
{
if((reg = NLP_AUX_IRR_01(aux_stem)) == Dap_Proc)
{
temp = luls;
__DelStem1(tmp, &temp);
luls = temp;
__RepStem1(tmp, luls, __K_B);
reg = NLP_Dap_Proc(tmp);
if(reg == Dap_VALID)
{
reg = AUX_Irr_Dap_VALID;
}
}
if(reg != MORECHECK)
{
char tstem [80];
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
return reg;
}
}
}
switch (AUXLME)
{
case __K_N :
reg = NLP_AUX_IRR_KN(aux_stem); break;
case __K_R :
reg = NLP_AUX_IRR_KR(aux_stem); break;
case __K_I :
if(AUXULS == __K_R)
{
reg = NLP_AUX_IRR_KI_KR(aux_stem, aux_ending); break;
}
else if(AUXULS >= __V_k)
{
reg = NLP_AUX_IRR_KI_V(aux_stem, aux_ending); break;
}
else
return MORECHECK;
}
if (reg != MORECHECK)
{
char tstem [80];
lstrcat (lrgsz, "+");
Conv.INR2HAN (aux_ending, tstem, codeWanSeong);
if (lstrlen (tstem) > 2)
{
int mark = SeparateEnding (aux_ending);
if (mark > 0)
{
char tmpending [80];
lstrcpy (tmpending, aux_ending);
Conv.INR2HAN (tmpending+mark, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ENDING;
lstrcat (lrgsz, "+");
tmpending [mark] = '\0';
Conv.INR2HAN (tmpending, tstem, codeWanSeong);
}
}
lstrcat (lrgsz, tstem);
vbuf [wcount++] = (pum == 0) ? POS_AUXVERB : POS_AUXADJ;
return reg;
}
return MORECHECK;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_GET_AUX()
// Parameters : char *aux_stem :
// char *aux_ending :
// char *dummyl :
// char pum :
// Summary :
// Description :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_GET_AUX(char *aux_stem,
char *aux_ending,
char pum)
{
BYTE tempaction;
char action,
dummyl[1];
int res,
checked = -1,
aux_pos = 0,
dictnum = (pum == 0) ? 7 : 8,
codelen = lstrlen(aux_stem) - 1;
for (int i = 0; i <= codelen; i++)
{
aux_ending[i] = aux_stem[codelen-i];
aux_ending[i+1] = NULLCHAR;
if (pum == 0)
res = FindHeosaWord(aux_ending, _AUXVERB, &tempaction);
else
res = FindHeosaWord(aux_ending, _AUXADJ, &tempaction);
switch (res)
{
case FINAL :
case FINAL_MORE :
checked = i;
action = tempaction;
continue;
case FALSE_MORE :
continue;
case NOT_FOUND :
break;
}
break;
}
if(checked == -1)
{
return MORECHECK;
}
aux_stem[codelen-checked] = NULLCHAR;
aux_ending[checked+1] = NULLCHAR;
AUX_ULSPOS = codelen-checked-1;
AUX_LMEPOS = checked;
AUX_ACT_C = GetBit(action, 7);
AUX_ACT_V = GetBit(action, 6);
AUX_ACT_VB = GetBit(action, 5);
AUX_ACT_AD = GetBit(action, 4);
AUX_ACT_SS = GetBit(action, 2);
for (int z = 0; z < 7; z++)
{
if(strcmp(aux_ending, ExceptAuxEnding[z]) == 0)
{
aux_pos = -1;
break;
}
}
return lTRUE;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_AUX_IRR_01()
// Parameters : char *stem :
// Description :
// Return Value :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_AUX_IRR_01( char *aux_stem)
{
char tmp[80];
int luls, temp;
lstrcpy(tmp, aux_stem);
luls = AUX_ULSPOS;
if(__IsDefStem(luls, 1) == 1 &&
tmp[luls-1] == __K_I && tmp[luls] == __V_n)
{
temp = luls;
__DelStem1(tmp, &temp);
luls = temp;
__RepStem1(tmp, luls, __K_B);
if (FindIrrWord (tmp, _IV_BM) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_Irr_VERB_VALID;
}
if(strcmp(tmp, TempDOP) == 0)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_Irr_VERB_VALID;
}
if(AUX_ACT_AD == 1)
{
if(FindIrrWord (tmp, _RA_B) & FINAL)
{
return INVALID;
}
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _ADJECTIVE)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_Irr_ADJ_VALID;
}
return Dap_Proc;
}
}
return MORECHECK;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_AUX_IRR_KN()
// Parameters : char *stem :
// Description :
// Return Value :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_AUX_IRR_KN( char *aux_stem)
{
char tmp[80];
int luls, temp;
lstrcpy(tmp, aux_stem);
luls = AUX_ULSPOS;
if(AUX_ACT_C == 1)
{
if(FindIrrWord(tmp, _YOP) & FINAL ||
FindIrrWord (tmp, _ISS) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_Irr_ADJ_VALID;
}
}
temp = luls;
__AddStem1(tmp, &temp, __K_R);
luls = temp;
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _VERB)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_Irr_VERB_VALID;
}
if(AUX_ACT_AD == 1)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _ADJECTIVE)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_Irr_ADJ_VALID;
}
__RepStem1(tmp, luls, __K_H);
if(FindIrrWord(tmp, _IA_HP) & FINAL ||
FindIrrWord(tmp, _IA_HM) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_Irr_ADJ_VALID;
}
}
return MORECHECK;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_AUX_IRR_KR()
// Parameters : char *stem :
// Description :
// Return Value :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_AUX_IRR_KR( char *aux_stem)
{
char tmp[80];
int temp, luls;
lstrcpy(tmp, aux_stem);
luls = AUX_ULSPOS;
temp = luls;
__AddStem1(tmp, &temp, __K_R);
luls = temp;
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _VERB)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_Irr_VERB_VALID;
}
if(AUX_ACT_AD == 1)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _ADJECTIVE)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_Irr_ADJ_VALID;
}
__RepStem1(tmp, luls, __K_H);
if(FindIrrWord(tmp, _IA_HP) & FINAL ||
FindIrrWord(tmp, _IA_HM) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_Irr_ADJ_VALID;
}
}
return MORECHECK;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_AUX_IRR_KI_KR()
// Parameters : char *stem :
// Description :
// Return Value :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_AUX_IRR_KI_KR( char *aux_stem,
char *aux_ending)
{
char end[80],
tmp[80];
int luls, llme;
lstrcpy(tmp, aux_stem);
lstrcpy(end, aux_ending);
luls = AUX_ULSPOS;
llme = AUX_LMEPOS;
__RepStem1(tmp, luls, __K_D);
if(end[llme-1] == __V_j)
{
if(FindIrrWord(tmp, _IV_DM) & FINAL) //v2-
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_Irr_VERB_VALID;
}
return MORECHECK;
}
if(end[llme-1] == __V_k)
{
if(FindIrrWord(tmp, _IV_DP) & FINAL) //v2+
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_Irr_VERB_VALID;
}
return MORECHECK;
}
if(FindIrrWord(tmp, _IV_DP) & FINAL || //v2+
FindIrrWord(tmp, _IV_DM) & FINAL) //v2-
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_Irr_VERB_VALID;
}
return MORECHECK;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_AUX_IRR_KI_V()
// Parameters : char *stem :
// Description :
// Return Value :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_AUX_IRR_KI_V( char *aux_stem,
char *aux_ending)
{
char end[80],
tmp[80];
int temp, luls, llme;
lstrcpy(tmp, aux_stem);
lstrcpy(end, aux_ending);
luls = AUX_ULSPOS;
llme = AUX_LMEPOS;
temp = luls;
__AddStem1(tmp, &temp, __K_S);
luls = temp;
if(end[llme-1] == __V_j)
{
if(FindIrrWord(tmp, _IV_SM) & FINAL) //v4-
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_Irr_VERB_VALID;
}
return MORECHECK;
}
if(end[llme-1] == __V_k)
{
if(FindIrrWord(tmp, _IV_SP) & FINAL) //v4+
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_Irr_VERB_VALID;
}
temp = luls;
__DelStem1(tmp, &temp);
__AddStem2(tmp, &temp, __K_I, __V_m);
luls = temp;
if(FindIrrWord(tmp, _IV_OmP) & FINAL) //v8+
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_Irr_VERB_VALID;
}
return MORECHECK;
}
if(FindIrrWord(tmp, _IV_SP) & FINAL || //v4+
FindIrrWord(tmp, _IV_SM) & FINAL) //v4-
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_Irr_VERB_VALID;
}
return MORECHECK;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_AUX_SS_Vu()
// Parameters : char *stem :
// Description :
// Return Value :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_AUX_SS_Vu( char *aux_stem)
{
char tmp[80];
int temp, luls;
lstrcpy(tmp, aux_stem);
luls = AUX_ULSPOS;
if(__IsDefStem(luls, 1) == 1 && tmp[luls-1] == __K_I)
{
if(__IsDefStem(luls, 3) == 1 &&
tmp[luls-3] == __K_H && tmp[luls-2] == __V_k )
{
temp = luls;
__DelStem2(tmp, &temp);
luls = temp;
if(AUX_ACT_VB == 1)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _VERB)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
if(AUX_ACT_AD == 1)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _ADJECTIVE)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
}
return Manha_Proc;
}
}
if(AUX_ACT_VB == 1)
{
if(FindIrrWord(tmp, _ZUV_YO) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
__RepStem1(tmp, luls, __V_l);
if(AUX_ACT_VB == 1)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _VERB)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
if(AUX_ACT_AD == 1)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _ADJECTIVE)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
}
return Manhaeci_Proc;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_AUX_SS_Vnj()
// Parameters : char *stem :
// Description :
// Return Value :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_AUX_SS_Vnj( char *aux_stem)
{
char tmp[80];
int temp, luls;
lstrcpy(tmp, aux_stem);
luls = AUX_ULSPOS;
__RepStem1(tmp, luls, __V_n);
if(AUX_ACT_VB == 1)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _VERB)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
if(__IsDefStem(luls, 1) == 1 && tmp[luls-1] == __K_I)
{
temp = luls;
__DelStem1(tmp, &temp);
luls = temp;
__RepStem1(tmp, luls, __K_B);
if(AUX_ACT_VB == 1)
{
if(FindIrrWord(tmp, _IV_BM) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
if(AUX_ACT_AD == 1)
{
if(FindIrrWord(tmp, _RA_B) & FINAL)
{
return INVALID;
}
if(FindIrrWord(tmp, _IA_BP) & FINAL)
{
return INVALID;
}
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _ADJECTIVE)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
return Dap_Proc;
}
}
return MORECHECK;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_AUX_SS_Vhk()
// Parameters : char *stem :
// Description :
// Return Value :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_AUX_SS_Vhk( char *aux_stem)
{
char tmp[80];
int temp, luls;
lstrcpy(tmp, aux_stem);
luls = AUX_ULSPOS;
__RepStem1(tmp, luls, __V_h);
if(AUX_ACT_VB == 1)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _VERB)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
if(__IsDefStem(luls, 1) == 1 && tmp[luls-1] == __K_I)
{
temp = luls;
__DelStem1(tmp, &temp);
luls = temp;
__RepStem1(tmp, luls, __K_B);
if(AUX_ACT_VB == 1)
{
if(FindIrrWord(tmp, _IV_BP) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
if(AUX_ACT_AD == 1)
{
if(FindIrrWord(tmp, _IA_BP) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
}
}
return MORECHECK;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_AUX_SS_Vo()
// Parameters : char *stem :
// Description :
// Return Value :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_AUX_SS_Vo( char *aux_stem)
{
char tmp[80];
int temp, luls;
lstrcpy(tmp, aux_stem);
luls = AUX_ULSPOS;
if(__IsDefStem(luls, 1) == 1 && tmp[luls-1] == __K_H)
{
__RepStem1(tmp, luls, __V_k);
if(AUX_ACT_VB == 1)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _VERB)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
if(AUX_ACT_AD == 1)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _ADJECTIVE)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
}
return Manha_Proc;
}
if(AUX_ACT_VB == 1)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
if (FindSilsaWord (tstem) & _VERB)
{
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
if(AUX_ACT_AD == 1)
{
if(FindIrrWord(tmp, _ZUA_AE) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
__RepStem1(tmp, luls, __V_k);
temp = luls;
__AddStem1(tmp, &temp, __K_H);
luls = temp;
if(FindIrrWord(tmp, _IA_HP) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
__RepStem2(tmp, luls, __V_j, __K_H);
if(FindIrrWord(tmp, _IA_HM) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
}
return MORECHECK;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_AUX_SS_Vp()
// Parameters : char *stem :
// Description :
// Return Value :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_AUX_SS_Vp( char *aux_stem)
{
char tmp[80];
int luls, temp;
lstrcpy(tmp, aux_stem);
luls = AUX_ULSPOS;
if(AUX_ACT_VB == 1)
{
if(FindIrrWord(tmp, _ZUV_E) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
if(AUX_ACT_AD == 1)
{
if(FindIrrWord(tmp, _ZUA_E) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
__RepStem1(tmp, luls, __V_j);
temp = luls;
__AddStem1(tmp, &temp, __K_H);
luls = temp;
if(FindIrrWord(tmp, _IA_HM) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
}
return MORECHECK;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_AUX_SS_Vil()
// Parameters : char *stem :
// Description :
// Return Value :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_AUX_SS_Vil( char *aux_stem)
{
char tmp[80];
int temp, luls;
lstrcpy(tmp, aux_stem);
luls = AUX_ULSPOS;
if(AUX_ACT_AD == 1 &&
__IsDefStem(luls, 1) == 1 && tmp[luls-1] == __K_I)
{
__RepStem1(tmp, luls, __V_i);
temp = luls;
__AddStem1(tmp, &temp, __K_H);
luls = temp;
if(FindIrrWord(tmp, _IA_HP) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
__RepStem2(tmp, luls, __V_u, __K_H);
if(FindIrrWord(tmp, _IA_HM) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
}
return MORECHECK;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_AUX_SS_Vul()
// Parameters : char *stem :
// Description :
// Return Value :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_AUX_SS_Vul( char *aux_stem)
{
char tmp[80];
int temp, luls;
lstrcpy(tmp, aux_stem);
luls = AUX_ULSPOS;
if(AUX_ACT_AD == 1 &&
__IsDefStem(luls, 1) == 1 && tmp[luls-1] == __K_I)
{
__RepStem1(tmp, luls, __V_u);
temp = luls;
__AddStem1(tmp, &temp, __K_H);
luls = temp;
if(FindIrrWord(tmp, _IA_HM) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
}
return MORECHECK;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_AUX_SS_Vj_KR()
// Parameters : char *stem :
// Description :
// Return Value :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_AUX_SS_Vj_KR( char *aux_stem)
{
char tmp[80];
int temp, luls;
lstrcpy(tmp, aux_stem);
luls = AUX_ULSPOS;
temp = luls;
__DelStem2(tmp, &temp);
luls = temp;
if(__IsDefStem(luls, 1) == 1 &&
tmp[luls-1] == __K_R && tmp[luls]==__V_m)
{
if(strcmp(tmp, TempR) == 0)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
if(AUX_ACT_AD == 1)
{
if(FindIrrWord(tmp, _IA_Rj) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
}
return MORECHECK;
}
if(tmp[luls] == __K_R)
{
temp = luls;
__AddStem1(tmp, &temp, __V_m);
luls = temp;
if(AUX_ACT_VB == 1)
{
if(FindIrrWord(tmp, _IV_RmM) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
if(AUX_ACT_AD == 1)
{
if(FindIrrWord(tmp, _IA_RmM) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
}
temp = luls;
__DelStem2(tmp, &temp);
__AddStem1(tmp, &temp, __K_R);
__AddStem2(tmp, &temp, __K_R, __V_m);
luls = temp;
if(FindIrrWord(tmp, _IV_OmM) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
return MORECHECK;
}
temp = luls;
__AddStem2(tmp, &temp, __K_R, __V_m);
luls = temp;
if(AUX_ACT_VB == 1)
{
if(FindIrrWord(tmp, _IV_OmM) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
return MORECHECK;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_AUX_SS_Vj()
// Parameters : char *stem :
// Call Functions :
// Description :
// Return Value :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_AUX_SS_Vj( char *aux_stem)
{
char tmp[80];
int luls;
lstrcpy(tmp, aux_stem);
luls = AUX_ULSPOS;
if(AUX_ACT_VB == 1)
{
if(strcmp(tmp, TempP) == 0) // PEO
{
__RepStem1(tmp,luls,__V_n);
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
else if (FindIrrWord(tmp, _ZUV_O) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
__RepStem1(tmp, luls, __V_m);
if(AUX_ACT_VB == 1)
{
if(FindIrrWord(tmp, _IV_OmM) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
if(AUX_ACT_AD == 1)
{
if(FindIrrWord(tmp, _IA_OmM) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
}
return MORECHECK;
}
//----------------------------------------------------------------------------------------------
//
// Function Name : NLP_AUX_SS_Vk()
// Parameters : char *stem :
// Call Functions :
// Description :
// Return Value :
//
//----------------------------------------------------------------------------------------------
int BaseEngine::NLP_AUX_SS_Vk( char *aux_stem)
{
char tmp[80];
int luls, temp;
lstrcpy(tmp, aux_stem);
luls = AUX_ULSPOS;
if(__IsDefStem(luls, 1) == 1 && tmp[luls-1] == __K_H)
{
return MORECHECK; // by hjw : 95/3/14 INVALID -> MORECHECK
}
if(AUX_ACT_VB == 1)
{
if(FindIrrWord(tmp, _ZUV_A) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
if(AUX_ACT_AD == 1)
{
if(FindIrrWord(tmp, _ZUA_A) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
}
if(__IsDefStem(luls, 1) == 1 && tmp[luls-1] == __K_R)
{
if(__IsDefStem(luls, 2) == 1 && tmp[luls-2] == __K_R)
{
temp = luls;
__DelStem2(tmp, &temp);
__AddStem1(tmp, &temp, __V_m);
luls = temp;
if(AUX_ACT_VB == 1)
{
if(FindIrrWord(tmp, _IV_RmP) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
if(AUX_ACT_AD == 1)
{
if(FindIrrWord(tmp, _IA_RmP) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_ADJECTIVE;
return AUX_SS_ADJ_VALID;
}
}
return MORECHECK;
}
}
__RepStem1(aux_stem, AUX_ULSPOS, __V_m);
if(AUX_ACT_VB == 1)
{
if(FindIrrWord(tmp, _IV_OmP) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_VERB_VALID;
}
}
if(AUX_ACT_AD == 1)
{
if(FindIrrWord(tmp, _IA_OmP) & FINAL)
{
char tstem [80];
Conv.INS2HAN (tmp, tstem, codeWanSeong);
lstrcat (lrgsz, tstem);
vbuf [wcount++] = POS_VERB;
return AUX_SS_ADJ_VALID;
}
}
return MORECHECK;
}