【发布时间】:2012-02-13 02:01:24
【问题描述】:
我想创建一种形式的解析器:
#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;
}
}
一个布尔函数,如果 char 的序列为“5”或“(5+3)”或“((5+3)+6)”或“”形式,则返回 TRUE (((4+2)+1)+6)" ...等其他情况为 FALSE
基本上,如果表达式为单个数字或“开括号-单个数字-加号-单个数字-闭括号”形式,则表达式将被视为有效
-
有效表达式 = 一位数
和
有效表达式 = (有效表达式 + 有效表达式)
鉴于上述表格的大小没有限制(左括号和右括号的数量等),我想使用递归来做到这一点
作为我的新手..感谢您提供任何有用的意见!
【问题讨论】:
标签: c++ parsing recursion boolean