Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2012, 21:39   #1
JoberLord
Пользователь
 
Аватар для JoberLord
 
Регистрация: 28.03.2010
Сообщений: 38
По умолчанию Обработчик команд (проектирование)

Доброго времени суток возникла идея написать простенький консольный обработчик команд но вот возникает вопрос как обрабатывать эти самые строки?
пример команды: create-file test
У меня есть идея, что нужно считывать строку, искать в ней пробел после считать полученную команду от начала и до пробела и сопоставить ее со списком команд, потом проделывать тоже самое уже с параметром команды.
Но получается очень запутанная реализация, может знающие подскажут более простое решение?
JoberLord вне форума Ответить с цитированием
Старый 26.08.2012, 21:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
более простое решение
Ты высказал самое надежное решение.
Правда тут есть несколько "но", в частности что если параметр команды будет содержать пробел?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.08.2012, 21:57   #3
JoberLord
Пользователь
 
Аватар для JoberLord
 
Регистрация: 28.03.2010
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты высказал самое надежное решение.
Правда тут есть несколько "но", в частности что если параметр команды будет содержать пробел?
хм, да об этом я не подумал и как же быть?
JoberLord вне форума Ответить с цитированием
Старый 26.08.2012, 22:51   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Разработать четкую систему команд, не допускающих лишнее в коде
Тогда твоя схема становится оправданной и единственно простой.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.08.2012, 01:35   #5
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
хм, да об этом я не подумал и как же быть?
Поддерживать передачу параметров в кавычках и правильно это обрабатывать, например.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 27.08.2012, 07:13   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Поддерживать передачу параметров в кавычках
А если внутри команды должна быть кавычка?
Это палка о двух концах.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.08.2012, 07:32   #7
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
А если внутри команды должна быть кавычка?
И поддержку экранирования, конечно!
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 27.08.2012, 09:40   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
И поддержку экранирования, конечно!
Ога. Посему предлагаю сделать как в JS - строку могут описывать несколько видов ковычек. Если начинается строка с " то внутри позволено размещать ' и наоборот.
Как альтернативу можно взять `, если в строке предполагается размещать оба вида ковычек.
по крайней мере я у себя так делал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.08.2012, 10:27   #9
JoberLord
Пользователь
 
Аватар для JoberLord
 
Регистрация: 28.03.2010
Сообщений: 38
По умолчанию

Ох все стало сложнее)) ну ладно буду пытаться)) спасибо вам)
JoberLord вне форума Ответить с цитированием
Старый 27.08.2012, 10:38   #10
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты высказал самое надежное решение.
Правда тут есть несколько "но", в частности что если параметр команды будет содержать пробел?
Никаких "но" не возникнет так-как идёт сравнение с таблицей команд. Всё, что с этой таблицей не совпадает, считается параметром предыдущей команды совпавшей со списком. Для разделения параметров можно использовать общепринятый символ "," (запятая).
Тогда формат команд будет таким:
Команда (пробелы недопустимы) пробел (или группа пробелов) параметр1, параметр2 (пробел или разделитель ";") Новая_команда (из списка) .....
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 27.08.2012 в 10:44.
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проектирование БД Morgusha SQL, базы данных 1 03.06.2012 10:22
Проектирование БД. lovetolaugh БД в Delphi 3 15.06.2011 22:08
Пишу обработчик команд SaNeKBF C# (си шарп) 2 24.05.2011 19:20
Проектирование JKING Помощь студентам 0 02.05.2010 17:56
реализация команд с помощью набора других команд zhenyaa Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 08.11.2009 21:37