\r
int main(int argc, const char * argv[])\r
{\r
+ //エントリポイント\r
int i, i_max;\r
CHNLIB_String *input, *temp;\r
CHNLIB_UIPArray *separated;\r
\r
CHNLIB_UIPArray *AI_Think_SlideLookUpWordByHistory(CHNLIB_String *input)\r
{\r
+ //入力文字列と履歴文字列を照らし合わせ、単語の候補を抜き出す。\r
CHNLIB_UIPArray *candidatewordlist;\r
int i, i_max;\r
int j, j_max;\r
\r
void AI_Memory_AddRootWordData(CHNLIB_String *tag)\r
{\r
+ //WorkingSet.RootWordListに文字列を追加する。\r
+ //重複がある場合は警告を出し、追加しない。\r
int i, i_max;\r
\r
i_max = CHNLIB_UIPArray_GetNumberOfDatas(WorkingSet.RootWordList);\r
\r
int AI_Memory_AddRootWordData_IsDuplicated(const void *listtag, const void *newtag)\r
{\r
+ //CHNLIB_UIPArray_AppendLast_ProtectFromDuplicationに渡す関数ポインタ。\r
if(CHNLIB_StructureHeader_GetTypeID(listtag) != CHNLIB_STRUCT_ID_String){\r
return False;\r
}\r
\r
void AI_System_InitializeSystemWorkingSet(void)\r
{\r
+ //WorkingSetを初期化する。\r
WorkingSet.SystemWordList0 = CHNLIB_UIPArray_Initialize();\r
- CHNLIB_UIPArray_AppendLast(&WorkingSet.SystemWordList0, 0, CHNLIB_String_Initialize(":"));\r
- CHNLIB_UIPArray_AppendLast(&WorkingSet.SystemWordList0, 0, CHNLIB_String_Initialize(","));\r
+ CHNLIB_UIPArray_AppendLast(&WorkingSet.SystemWordList0, True, CHNLIB_String_Initialize(":"));\r
+ CHNLIB_UIPArray_AppendLast(&WorkingSet.SystemWordList0, True, CHNLIB_String_Initialize(","));\r
\r
WorkingSet.InputHistory = CHNLIB_UIPArray_Initialize();\r
\r
\r
void AI_System_LoadMemory(const char configfilename[])\r
{\r
+ //指定されたファイル名のテキストファイルから設定を読み出す。\r
FILE *fp;\r
CHNLIB_String *line, *currentfilename;\r
int i;\r
CHNLIB_String *line;
CHNLIB_UIPArray *root, *wordlist;
int i, i_max;
+ int level, recording;
CHNLIB_Environment_SetCurrentWorkingDirectory(argv[0]);
wordlist = CHNLIB_UIPArray_Initialize();
CHNLIB_UIPArray_AppendLast(&wordlist, 1, CHNLIB_String_Initialize("{"));
CHNLIB_UIPArray_AppendLast(&wordlist, 2, CHNLIB_String_Initialize("}"));
- //CHNLIB_UIPArray_AppendLast(&wordlist, 1, CHNLIB_String_Initialize(""));
+ CHNLIB_UIPArray_AppendLast(&wordlist, 3, CHNLIB_String_Initialize("//"));
root = CHNLIB_UIPArray_Initialize();
for(;;){
i_max = CHNLIB_UIPArray_GetNumberOfDatas(root);
fp = fopen("out.txt", "wb");
+ recording = False;
+ level = 0;
for(i = 0; i < i_max; i++){
-
+ switch(CHNLIB_UIPArray_GetData32ByIndex(root, i)){
+ case 1: //"{"
+ if(level == 0){
+ fprintf(fp, "***%s\n", CHNLIB_String_GetReferencePointerOfCString(CHNLIB_UIPArray_GetPointerByIndex(root, i - 1)));
+ recording = True;
+ } else if(recording){
+ recording = False;
+ fprintf(fp, "\n");
+ }
+ level++;
+ break;
+ case 2: //"}"
+ if(recording){
+ recording = False;
+ fprintf(fp, "\n");
+ }
+ level--;
+ break;
+ case 3: //"//"
+ if(recording){
+ i++;
+ fprintf(fp, "%s\n", CHNLIB_String_GetReferencePointerOfCString(CHNLIB_UIPArray_GetPointerByIndex(root, i)));
+ }
+ break;
+ }
}
-
+ fflush(fp);
fclose(fp);
return 0;
{\r
//listにある文字列でsを分割し、その結果をseparatedに追加する。\r
//listに存在する文字列は新しくメモリを確保せず、リスト中のStringタグへのポインタをseparatedに記録する。\r
- //従ってseparatedを解放する際は、CHNLIB_UIPArray_FreeSelectedAllを利用するべきである。\r
- //listにない文字列はdata32==False\r
- //listにある文字列はdata32==True\r
+ //従ってseparatedを解放する際は、listのdata32をすべてTrueにした上で、CHNLIB_UIPArray_FreeSelectedAllを利用するべきである。\r
+ //listにない文字列はdata32==False(0)\r
+ //listにある文字列はdata32==tag->data32\r
int index, end, end_end, location;\r
\r
if(s == NULL){\r
CHNLIB_UIPArray_AppendLast(separated, False, CHNLIB_String_ExtractByLength(s, end, location));\r
end += location;\r
}\r
- CHNLIB_UIPArray_AppendLast(separated, True, CHNLIB_UIPArray_GetPointerByIndex(list, index));\r
+ CHNLIB_UIPArray_AppendLast(separated, CHNLIB_UIPArray_GetData32ByIndex(list, index), CHNLIB_UIPArray_GetPointerByIndex(list, index));\r
end += CHNLIB_String_GetLength(CHNLIB_UIPArray_GetPointerByIndex(list, index));\r
}\r
return 0;\r