https://github.com/leozhang1/QtInterpreter这个链接 statementnode.cpp代码 展示
时间: 2023-11-26 22:03:09 浏览: 75
以下是 `statementnode.cpp` 的代码:
```cpp
#include "statementnode.h"
#include "expressionnode.h"
#include "returnnode.h"
StatementNode::StatementNode()
{
}
StatementNode::~StatementNode()
{
}
void StatementNode::setExpression(ExpressionNode *expression)
{
m_expression = expression;
}
void StatementNode::setReturn(ReturnNode *returnNode)
{
m_returnNode = returnNode;
}
void StatementNode::execute()
{
if (m_expression != nullptr) {
m_expression->evaluate();
}
if (m_returnNode != nullptr) {
throw m_returnNode; // Throw the node to be caught by the function call
}
}
```
这个文件实现了 `StatementNode` 类,它是语句节点的抽象基类。它有两个子类:`ExpressionStatementNode` 和 `ReturnStatementNode`,用于表示表达式语句和返回语句。
这个文件中主要实现了 `execute` 方法,该方法执行节点所对应的语句。如果该语句是表达式语句,则调用 `ExpressionNode` 对象的 `evaluate` 方法执行表达式;如果该语句是返回语句,则抛出 `ReturnNode` 异常,该异常将会被函数调用捕获并进行处理。
阅读全文