Я хочу создать своего рода парсер формы:Булева функция для проверки достоверности выражения рекурсивно?
#include <iostream>
#include <string>
#include <sstream>
#include <cctype>
using namespace std;
bool isValid(istringstream& is)
{
char ch;
is.get(ch); //I know get(ch) is a good start but this is as for as I got :)
.......
....
}
int main()
{
string s;
while(getline(cin,s))
{
istringstream is(s);
cout<<(isValid(is)? "Expression OK" : "Not OK")<<endl;
}
}
Булева функция, которая возвращает TRUE, если последовательность полукокса имеет вид «5» или «(5 + 3)» или "((5 + 3) +6)" или "((4 + 2) +1) +6)" ... и т. Д. И FALSE для любого другого случая
В принципе, выражение будет считаться действительным если это либо одна цифра, либо форма «открытая скобка-одиночная цифра плюс знак-одиночная цифра-закрывающая скобка»
Действительно Выражение = одна цифра
и
допустимое выражение = (допустимое выражение + допустимое выражение)
Учитывая то, что не существует никаких ограничений по размеру указанная выше форма (число открывающих и закрывающих скобок).) Я бы хотел сделать это с помощью рекурсии
Будучи новичком, которым я являюсь .. Спасибо за любой полезный ввод!
Спасибо за полезный ввод Daxnitro, хотя я пытаюсь придумать что-то, что ограничит себя использованием только логической функции: bool isValid (istringstream & is), о котором я упоминал в оригинальной записи, с рекурсией внутри нее. Конечно, я обязательно посмотрю ваше предложение. –