83 lines
2.0 KiB
C++
83 lines
2.0 KiB
C++
#ifndef SAQUT_AST_STMT
|
|
#define SAQUT_AST_STMT
|
|
|
|
#include "parser/ast_node.hpp"
|
|
|
|
class BlockNode : public ASTNode {
|
|
public:
|
|
BlockNode();
|
|
void log(int indent = 0) override;
|
|
std::string toJson(int depth = 0) override;
|
|
};
|
|
|
|
class IfStatementNode : public ASTNode {
|
|
public:
|
|
ASTNode* condition = nullptr;
|
|
ASTNode* thenBranch = nullptr;
|
|
ASTNode* elseBranch = nullptr;
|
|
IfStatementNode();
|
|
void log(int indent = 0) override;
|
|
std::string toJson(int depth = 0) override;
|
|
};
|
|
|
|
class WhileStatementNode : public ASTNode {
|
|
public:
|
|
ASTNode* condition = nullptr;
|
|
ASTNode* body = nullptr;
|
|
WhileStatementNode();
|
|
void log(int indent = 0) override;
|
|
std::string toJson(int depth = 0) override;
|
|
};
|
|
|
|
class ForStatementNode : public ASTNode {
|
|
public:
|
|
ASTNode* init = nullptr;
|
|
ASTNode* condition = nullptr;
|
|
ASTNode* update = nullptr;
|
|
ASTNode* body = nullptr;
|
|
ForStatementNode();
|
|
void log(int indent = 0) override;
|
|
std::string toJson(int depth = 0) override;
|
|
};
|
|
|
|
class DoWhileStatementNode : public ASTNode {
|
|
public:
|
|
ASTNode* condition = nullptr;
|
|
ASTNode* body = nullptr;
|
|
DoWhileStatementNode();
|
|
void log(int indent = 0) override;
|
|
std::string toJson(int depth = 0) override;
|
|
};
|
|
|
|
class ReturnStatementNode : public ASTNode {
|
|
public:
|
|
ASTNode* value = nullptr;
|
|
ReturnStatementNode();
|
|
void log(int indent = 0) override;
|
|
std::string toJson(int depth = 0) override;
|
|
};
|
|
|
|
class BreakStatementNode : public ASTNode {
|
|
public:
|
|
BreakStatementNode();
|
|
void log(int indent = 0) override;
|
|
std::string toJson(int depth = 0) override;
|
|
};
|
|
|
|
class ContinueStatementNode : public ASTNode {
|
|
public:
|
|
ContinueStatementNode();
|
|
void log(int indent = 0) override;
|
|
std::string toJson(int depth = 0) override;
|
|
};
|
|
|
|
class ExpressionStatementNode : public ASTNode {
|
|
public:
|
|
ASTNode* expression = nullptr;
|
|
ExpressionStatementNode();
|
|
void log(int indent = 0) override;
|
|
std::string toJson(int depth = 0) override;
|
|
};
|
|
|
|
#endif
|