Форум программистов, компьютерный форум CyberForum.ru

Как написать анализатор команд? - C++

Восстановить пароль Регистрация
 
cpp_job
 Аватар для cpp_job
4 / 4 / 1
Регистрация: 25.11.2013
Сообщений: 108
04.11.2015, 21:33     Как написать анализатор команд? #1
Как написать анализатор команд?

-[команда]

Ну например

-call_calculator -module_plus -first_var 10 -second 5


Значит разбить на подстроки по пробелам?
Что делать если юзать сложную конструкцию с используя 2+ параметров?
-first_var 10

В кодесе не нуждаюсь, просто хочу узнать правильность хода мыслей.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2015, 21:33     Как написать анализатор команд?
Посмотрите здесь:

Лексический анализатор C++
C++ подскажите как сделать анализатор для короля в шахматах
Анализатор C++
Анализатор команд C++
Написала программу, но не знаю, как анализатор добавить в нее C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mesteriis
 Аватар для Mesteriis
371 / 154 / 40
Регистрация: 08.08.2015
Сообщений: 1,059
Завершенные тесты: 1
04.11.2015, 22:08     Как написать анализатор команд? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
cpp_job, Пдсказка виде алгоритма, ловим строку, парсим ее таки образом читаем до -{имя переменной} потом откусываем пробел {значение переменной}, после читаем переменные и если есть значение или еще что то выполняем алгоритм действий
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
04.11.2015, 22:18     Как написать анализатор команд? #3
Цитата Сообщение от cpp_job Посмотреть сообщение
Как написать анализатор команд?
Анализатор команд чего?
cpp_job
 Аватар для cpp_job
4 / 4 / 1
Регистрация: 25.11.2013
Сообщений: 108
05.11.2015, 17:35  [ТС]     Как написать анализатор команд? #4
castaway, для своего приложения, чтобы задавать параметры в нем строкой команд.

Описал все в задании.
Где-то недавно задавали вопрос как написать калькулятор вида "111+11-2". Вот думаю найти и преобразовать код под себя, а человек выше вашего поста мне уже подсказал, как это реализовать.
Может будут у вас тоже идеии? Смело говорите, мне будет интересно Вас выслушать!

Добавлено через 5 минут
Вот нашел.. Конвертация string в vector по условию
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
05.11.2015, 17:39     Как написать анализатор команд? #5
cpp_job, я не просто так спросил. Дело в том, что параметры командной строки уже разбиты по пробелам, и находятся во втором параметре функции main, а их количество в первом.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
05.11.2015, 17:41     Как написать анализатор команд? #6
Цитата Сообщение от cpp_job Посмотреть сообщение
чтобы задавать параметры в нем строкой команд
Я вот это использую, очень мощная вещь.
cpp_job
 Аватар для cpp_job
4 / 4 / 1
Регистрация: 25.11.2013
Сообщений: 108
05.11.2015, 17:50  [ТС]     Как написать анализатор команд? #7
castaway, существование argc и argv я знаю. Если не ошибаюсь, то эти параметры задаются с запуском приложения через консоль. А я хочу задавать эти параметры именно в своем приложении.

Тоесть запустить свой test.exe, указать запуск функции умножения.

-umnozenie -arg_first 10 -arg_second 2
Я думаю нужно разделять по -. А потом разбивать по пробелам.

Ну и после этой команды должна вызваться функция умножения, которая выдаст на экран число 20.
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
05.11.2015, 17:56     Как написать анализатор команд? #8
Цитата Сообщение от cpp_job Посмотреть сообщение
Тоесть запустить свой test.exe, указать запуск функции умножения.
Я не понимаю что ты имеешь в виду. На псевдокоде можешь показать?
cpp_job
 Аватар для cpp_job
4 / 4 / 1
Регистрация: 25.11.2013
Сообщений: 108
05.11.2015, 18:05  [ТС]     Как написать анализатор команд? #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <cstring> 
#include <locale>
 
#pragma warning(disable:4996)
 
int main(void)
{
    setlocale(0, "rus");
    char str[24] = "-calk -var1 10 -var2 10";
    char sep[3] = "-";
    char *istr;
 
    printf("Исходная строка : %s\n", str);
    printf("Результат разбиения : \n\n");
    // Выделение первой части строки
    istr = strtok(str, sep);
 
    // Выделение последующих частей
    while (istr != NULL)
    {
        // Вывод очередной выделенной части
        printf("%s\n", istr);
        // Выделение очередной части строки
        istr = strtok(NULL, sep);
    }
    getchar();
    return 0;
}
Вот налдыбал кодес с юзаньем strtok.

Блин, плохо знач объясняю, ну извини тогда(

Добавлено через 2 минуты
Ну теперь думаю создать двухмерный массив, в котором будет хранится индекс и строка.
А дальше делать прогон по этому массиву и искать calk, если есть, то ищем два аргумента их тоже разбить и выделить функцией atoi и преобразовать их в число, посчитать и вывести на экран.

Добавлено через 48 секунд
Правилен ли мой ход мыслей?

Добавлено через 1 минуту
Конечно это все можно перенести на вектора. Но есть ли смысл?
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
05.11.2015, 19:17     Как написать анализатор команд? #10
Понял. Тебе надо просто распарсить строку, а дальше как с argv.

Добавлено через 1 час 11 минут
Может я чего-то не понял.. Вопрос решён? Или у тебя что-то не получается?
cpp_job
05.11.2015, 21:00  [ТС]
  #11

Не по теме:

castaway, все хорошо не парся ты все правильно понял, это я забыл словечко умное "парсер"))

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2015, 00:11     Как написать анализатор команд?
Еще ссылки по теме:

C++ Использование Bat команд в С++ try как использовать
Написать программу результатов матчей футбольных команд (Используя контейнер map) C++
Написать программу, работающую со спортивным клубом, состоящим из команд, выполненных в виде структуры C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Mesteriis
 Аватар для Mesteriis
371 / 154 / 40
Регистрация: 08.08.2015
Сообщений: 1,059
Завершенные тесты: 1
06.11.2015, 00:11     Как написать анализатор команд? #12
Цитата Сообщение от cpp_job Посмотреть сообщение
Конечно это все можно перенести на вектора. Но есть ли смысл?
Вот прям правильный вопрос ты задал сете, зачем вектор? у тебя что там будет хренова туча действий (да и для этих целей вектор не то) в твоем случае по моему вообще проще не заморачиватся и реализовать все через условия, будет это свич или обычные ифы тут уже решай сам!

Добавлено через 1 минуту
Тем более ты изначально знаешь набор действий которые заносишь в программу и тебе не надо их добавлять по ходу пьесы, так что не лезь в массивы в этой задаче!
Yandex
Объявления
06.11.2015, 00:11     Как написать анализатор команд?
Ответ Создать тему
Опции темы

Текущее время: 05:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru