2+2, распарсить строчку

 
0
 
C++
ava
neosapient | 05.10.2013, 18:57
Здравствуйте.

Требуется распарсить строчку вида "2+2" или с пробелами " 2 + 2 ".

Псевдо код, который не работает

#include <iostream>
#include <sstream>
#include <string>

void foo(std::wstring str, int& first, int& second)
{
    std::wstringstream ss;
    ss.str(str);
    std::wstring plus;
    ss >> first >> plus >> second;
}

void main()
{
    int first=0;
    int second=0;
    foo(L"2+2", first, second);
    std::cout << first << "+" << second << std::endl;
    foo(L" 2 + 2 ", first, second);
    std::cout << first << "+" << second << std::endl;
}


Как правильно написать парсер?
Comments (2)
ava
LeonidPr | 05.10.2013, 19:33 #
Конкретно для выражений типа x+y удалить все пробелы до, после и внутри, а потом уже парсить.
ava
Amp | 05.10.2013, 19:36 #
Правильно для общего случая - бить исходную строку на последовательность токенов с помощью лексического анализатора и последующим анализом/разбором. А этот случай можно простенькой регуляркой обработать с минимумом телодвижений.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit