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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 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
Сообщений: 17,351
По умолчанию

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

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

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

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


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсер для Java Marx88 Общие вопросы по Java, Java SE, Kotlin 0 01.03.2010 02: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