https://github.com/leozhang1/QtInterpreter这个链接 statementnode.h代码 展示
时间: 2023-11-26 19:03:28 浏览: 137
以下是 `statementnode.h` 的代码:
```c++
#ifndef STATEMENTNODE_H
#define STATEMENTNODE_H
#include "abstractsyntaxnode.h"
#include <QList>
class StatementNode : public AbstractSyntaxNode
{
public:
StatementNode();
~StatementNode();
virtual void evaluate() = 0;
virtual void setVariables(QHash<QString, float> *) = 0;
};
class StatementSequenceNode : public StatementNode
{
public:
StatementSequenceNode();
~StatementSequenceNode();
void appendStatement(StatementNode *statement);
void evaluate() override;
void setVariables(QHash<QString, float> *variables) override;
private:
QList<StatementNode *> statementList;
};
class AssignmentNode : public StatementNode
{
public:
AssignmentNode(QString variableName, AbstractSyntaxNode *expression);
~AssignmentNode();
void evaluate() override;
void setVariables(QHash<QString, float> *variables) override;
private:
QString m_variableName;
AbstractSyntaxNode *m_expression;
};
class PrintNode : public StatementNode
{
public:
PrintNode(AbstractSyntaxNode *expression);
~PrintNode();
void evaluate() override;
void setVariables(QHash<QString, float> *variables) override;
private:
AbstractSyntaxNode *m_expression;
};
#endif // STATEMENTNODE_H
```
`StatementNode` 是一个抽象类,它有两个纯虚函数 `evaluate()` 和 `setVariables()`,分别用于执行语句和设置变量。`StatementSequenceNode` 是语句序列节点类,它继承自 `StatementNode`,并包含一个语句列表,可以按顺序执行多个语句。`AssignmentNode` 和 `PrintNode` 分别是赋值语句和打印语句节点类,它们也继承自 `StatementNode`,并分别包含变量名、表达式和待打印的表达式。
阅读全文