C++ 递归实现简单语言解释器

这篇博客详细介绍了如何使用C++编写一个递归解释器,能够处理包括直接和间接递归在内的赋值语句。解释器支持计算表达式,并遵循特定的输入和输出模板。文章内容涵盖了从因子到项,再到表达式的递归调用结构。
摘要由CSDN通过智能技术生成

程序可以解释赋值语句,完成的功能如下:

  • 判断它是够包含合法的赋值语句
  • 求所有表达式的值
    输入输出模版如下:
    输入输出
    递归包含直接递归和间接递归。例如:一个项可以是一个因子,或者一个因子后面跟着称号“*”(或“/”)以及另一个因子。而因子可能是一个标识符,一个数,圆括号中的表达式,或者带有负号的因子。
    调用链为term()->factor()->expression()->term();
    代码如下:
/***********************interpreter.h***********************/
#ifndef _INTERPRETER_H_
#define _INTERPRETER_H_

#include <iostream>
#include <list>
#include <algorithm>
#include <cstring>
using namespace std;

class IdNode
{
private:
    char *id;
    double value;
    friend class Statement;  //友元类
    friend ostream &operator<<(ostream &out, const IdNode &node);
public:
    IdNode(char *s = "", double e = 0){
        id = strdup(s); //申请空间并复制字符串
        value = e;
    }
    bool operator==(const IdNode& node) const{
        return strcmp(id, node.id) == 0;
    }
};
class Statement
{
private:
    list<IdNode> idList;
    char ch;
    double factor();
    
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值