Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 15.04.2010, 12:25   #1
Ronin333
 
Регистрация: 10.04.2010
Сообщений: 6
Восклицание

Как можно организовать простой парсер для строки в которой хранится уравнение x-y*z ? И как можно сделать чтобы парсер определял приоретет операций?

Код:
int i = 0;
char operation = '=';
float temp = 0.0f;
float result = 0.0f;

while ((i < 20) && (k[i] != 0))
{
   if ((k[i] >= 'a') & (k[i] <= 'z'))
   { temp = getVariable(k[i]); continue; } //getVariable - функция для получения переменных по имени сделана отдельно, чтобы не нагромождать код
   if (k[i] = '=')
   { result = temp; }
   esle if (k[i] = '+')
   { result += temp; }
   esle if (k[i] = '-')
   { result -= temp; }
   esle if (k[i] = '*')
   { result *= temp; }
   esle if (k[i] = '/')
   { result /= temp; }

   i++;
} 

float[27] variables;
getVariable(char name)
{ return variables[name - 'a']; }
Если можно то скиньте ссылку на простой парсер с приорететами

Последний раз редактировалось Stilet; 15.04.2010 в 12:51.
Ronin333 вне форума Ответить с цитированием
Старый 15.04.2010, 12:49   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,305
По умолчанию

Цитата:
Сообщение от Ronin333 Посмотреть сообщение
Если можно то скиньте ссылку на простой парсер с приорететами
У Г. Шилдта есть прекрасная книга Теория и практика С++ там как раз рассматривается подобный вопрос - сначала создание парсера, а потом на его основе простенького интерпретатора SmallBasic.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 15.04.2010, 13:38   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию пример парсера. Exprus.pas

в далёком 1991 году я писал простейший парсер, разбирающий и вычисляющий выражение.

вот, вместе с простейшим примером использования.
Вложения
Тип файла: rar EXPRUS.rar (8.4 Кб, 319 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.04.2010, 14:00   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Опять же и у Страуструпа есть что-то подобное. Глава 6 в первой своей части посвящена именно подобному калькулятору. Правда, он несколько сложнее и предусматривает скобки и определение констант и переменных. Но, возможно, вам оно пойдет.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсер для Java Marx88 Общие вопросы по Java, Java SE, Kotlin 0 01.03.2010 03:36
Парсер из HTML в CSV. OJI HTML и CSS 5 09.09.2009 19:59
Парсер математических выражений Granus Общие вопросы Delphi 3 24.06.2009 15:19
Парсер ПС на Delphi dotsik Помощь студентам 0 06.06.2009 15:12
xpath html парсер volok-aleksej Qt и кроссплатформенное программирование С/С++ 0 19.05.2009 16:17


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS