//判断算数表达式是否有效 ( 间接递归的例子 )
//表达式如 a + b | (a + b) | a * (a + b)
//把一个表达式(expression) 进行细分
//expression = term + term | term - term | term
//term = factor * factor | factor / factor | factor
//factor = (expression) | digit | letter
#include <iostream>
#include <string>
using namespace std;
class ExpressionJudge
{
public:
bool isValid(const string& expr,const int pos);
private:
// 检查expr_中从 pos_ 位置开始是否有一个合法的算数表达式
bool ValidExpression();
// 检查expr_中从 pos_ 位置开始是否一个合法的term
bool ValidTerm();
// 检查expr_中从 pos_ 位置开始是否是一个合法的factor
bool ValidFactor();
// 获取expr_中 pos_ 位置之后的下一个非空白字符
char GetChar();
string expr_;
int pos_;
};
bool ExpressionJudge::isValid(const string& expr,const int pos)
{
expr_ = expr;
pos_ = pos;
return ValidExpression() && (pos_ == expr_.length() - 1) ;
}
bool ExpressionJudge::ValidExpression()
{
if( ValidTerm() )
{
char c = GetChar();
if( c == '+' || c == '-')
{
re
分析算术表达式是否有效(间接递归的例子)
最新推荐文章于 2025-07-30 16:45:56 发布
本文通过一个C++实现的示例,展示如何分析一个算术表达式是否有效,采用间接递归的方式处理expression、term和factor。代码包括`ExpressionJudge`类,包含`isValid`、`ValidExpression`、`ValidTerm`和`ValidFactor`等方法,用于检查表达式的各个部分。程序读取用户输入的表达式,判断其有效性并输出结果。

最低0.47元/天 解锁文章
396

被折叠的 条评论
为什么被折叠?



