https://github.com/leozhang1/QtInterpreter这个链接 varnode.h代码 展示
时间: 2023-09-26 17:07:06 浏览: 159
jaksuhn.github.io:网站
以下是 varnode.h 的代码:
```c++
#ifndef VARNODE_H
#define VARNODE_H
#include <string>
#include <unordered_map>
using std::string;
using std::unordered_map;
class VarNode
{
public:
enum Type { INT, DOUBLE, STRING };
VarNode(Type type = INT, int ival = 0, double dval = 0.0, string sval = "");
Type type() const { return m_type; }
int intValue() const { return m_ival; }
double doubleValue() const { return m_dval; }
string stringValue() const { return m_sval; }
void setIntValue(int ival) { m_ival = ival; }
void setDoubleValue(double dval) { m_dval = dval; }
void setStringValue(string sval) { m_sval = sval; }
static Type typeFromString(const string& str);
private:
Type m_type;
int m_ival;
double m_dval;
string m_sval;
};
class VarTable
{
public:
VarTable() {}
bool isDefined(const string& name) const;
VarNode::Type getVarType(const string& name) const;
int getIntVar(const string& name) const;
double getDoubleVar(const string& name) const;
string getStringVar(const string& name) const;
void setIntVar(const string& name, int value);
void setDoubleVar(const string& name, double value);
void setStringVar(const string& name, const string& value);
void defineVar(const string& name, VarNode::Type type, int ival = 0, double dval = 0.0, string sval = "");
private:
unordered_map<string, VarNode> m_vars;
};
#endif // VARNODE_H
```
这个头文件声明了两个类,`VarNode` 和 `VarTable`。其中,`VarNode` 是一个简单的数据结构,表示一个变量。`VarTable` 是一个哈希表,用于存储各种类型的变量。该类提供了一些方法,可以获取和设置变量的值,以及判断变量是否已定义。同时,该类还提供了一个方法,用于在哈希表中定义一个新变量。
阅读全文