Регистрация | Вход
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <ctype.h>//----------------------------------------------------------------------#define _KOMPUTER_NAME token != NULL && ( strcmp(token, "компьютер") == 0)#define _ACCOMPLISH token != NULL && ( strcmp(token, "выполняй") == 0 || strcmp(token, "исполняй") == 0 || strcmp(token, "действуй") == 0)//----------------------------------------------------------------------#define _CREATE token != NULL && ( strcmp(token, "создай") == 0 || strcmp(token, "создать") == 0)#define _DELETE token != NULL && ( strcmp(token, "удали") == 0 || strcmp(token, "удалить") == 0)#define _RENAME token != NULL && ( strcmp(token, "переименуй") == 0 || strcmp(token, "переименовать") == 0)#define _REPLACE token != NULL && ( strcmp(token, "перемести") == 0 || strcmp(token, "переместить") == 0)#define _SEARCH token != NULL && ( strcmp(token, "найди") == 0 || strcmp(token, "поиск") == 0)//----------------------------------------------------------------------#define _FILE token != NULL && ( strcmp(token, "файл") == 0)#define _DIRECTORY token != NULL && ( strcmp(token, "папку") == 0 || strcmp(token, "каталог") == 0 || strcmp(token, "директорию") == 0)//----------------------------------------------------------------------//----------------------------------------------------------------------#define _FIRST_WORD (token = strtok(request, " .,\0;!?"))#define _NEXT_WORD (token = strtok(NULL, " .,\0;!?"))#define _NEXT_ARG _NEXT_WORD#define _ARGUMENT token != NULL//----------------------------------------------------------------------#define _HEAR_HUMAN if(_NEXT_WORD == NULL){gets(request);_FIRST_WORD;}//----------------------------------------------------------------------#define _ARG_LIMIT 255#define _REQ_SIZE 255#define _ANS_SIZE 4096//----------------------------------------------------------------------#define _INVALID_COMMAND puts("\nКомпьютер: Неверная команда. Повторите запрос.\n");//----------------------------------------------------------------------#define _SAVEARG if(token != NULL && counter < _ARG_LIMIT){argbuf[counter] = token; counter++; printf("\n***DEBUG INFO***\nSAVE_ARG_%d: %s\n", counter, request);}#define _SAVEFNC fncbuf[counter]//----------------------------------------------------------------------int dbgc = 0;#define DBG printf("\nStep = %d\n",dbgc);dbgc++;//----------------------------------------------------------------------//Образцы функцийvoid _delete_directory(char * name, char * answer){ char answer_f[_ANS_SIZE]; sprintf(answer_f, "\n*** DIRECTORY \"%s\" HAS BEEN DELETED! ***\n", name); strcat(answer, answer_f);}void _delete_file(char * name, char * answer){ char answer_f[_ANS_SIZE]; sprintf(answer_f, "\n*** FILE \"%s\" HAS BEEN DELETED! ***\n", name); strcat(answer, answer_f);}void _create_directory(char * name, char * answer){ char answer_f[_ANS_SIZE]; sprintf(answer_f, "\n*** DIRECTORY \"%s\" HAS BEEN CREATED! ***\n", name); strcat(answer, answer_f);}void _create_file(char * name, char * answer){ char answer_f[_ANS_SIZE]; sprintf(answer_f, "\n*** FILE \"%s\" HAS BEEN CREATED! ***\n", name); strcat(answer, answer_f);}void _add_file_ext(char * name, char * ext, char * answer){ char answer_f[_ANS_SIZE]; sprintf(answer_f, "\n*** EXT \"%s\" HAS BEEN ADDED TO FILE %s! ***\n", ext, name); strcat(answer, answer_f);}//Сам интерпретаторvoid parce_word(char request[_REQ_SIZE], char answer[_ANS_SIZE]){ char * token; token = NULL; if(request != NULL && answer != NULL) { memset(answer, 0, _ANS_SIZE); //На каждой ступени, выполняется простая последовательность действий: //1) чтение //2) интерпретация //3) переход к следующему шагу _FIRST_WORD; if(_KOMPUTER_NAME) { _HEAR_HUMAN; if(_CREATE) { _HEAR_HUMAN; if(_FILE) { _HEAR_HUMAN; if(_ARGUMENT) { char * name = token; _create_file(token, answer); _HEAR_HUMAN; if(_ARGUMENT) { _add_file_ext(name, token, answer); } } } else if(_DIRECTORY) { _HEAR_HUMAN; if(_ARGUMENT) { _create_directory(token, answer); } } } else if(_DELETE) { _HEAR_HUMAN; if(_FILE) { _HEAR_HUMAN; if(_ARGUMENT) { _delete_file(token, answer); } } else if(_DIRECTORY) { _HEAR_HUMAN; if(_ARGUMENT) { _delete_directory(token, answer); } } } } }}int main(void){ /*//ТЕСТ funcptr * fnc[255]; //указатель на массив указателей fnc[4] = _create_file; puts(fnc[4]("asdasd")); return 0; //ТЕСТ*/ char request[_REQ_SIZE], answer[_ANS_SIZE]; gets(request); parce_word(request, answer); puts(answer); return 0;}
int main(){ cout << "Hello, Ai!" << endl; return 0;}