44 lines
1.0 KiB
C++
44 lines
1.0 KiB
C++
#ifndef SAQUT_AST_EXPR_EXT
|
|
#define SAQUT_AST_EXPR_EXT
|
|
|
|
#include "parser/ast_node.hpp"
|
|
|
|
class PostfixNode : public ASTNode {
|
|
public:
|
|
ASTNode* operand = nullptr;
|
|
TokenType Operator;
|
|
PostfixNode();
|
|
void log(int indent = 0) override;
|
|
std::string toJson(int depth = 0) override;
|
|
};
|
|
|
|
class CallExpressionNode : public ASTNode {
|
|
public:
|
|
ASTNode* callee = nullptr;
|
|
std::vector<ASTNode*> arguments;
|
|
CallExpressionNode();
|
|
void log(int indent = 0) override;
|
|
std::string toJson(int depth = 0) override;
|
|
};
|
|
|
|
class MemberAccessNode : public ASTNode {
|
|
public:
|
|
ASTNode* object = nullptr;
|
|
std::string member;
|
|
bool arrow = false;
|
|
MemberAccessNode();
|
|
void log(int indent = 0) override;
|
|
std::string toJson(int depth = 0) override;
|
|
};
|
|
|
|
class IndexExpressionNode : public ASTNode {
|
|
public:
|
|
ASTNode* object = nullptr;
|
|
ASTNode* index = nullptr;
|
|
IndexExpressionNode();
|
|
void log(int indent = 0) override;
|
|
std::string toJson(int depth = 0) override;
|
|
};
|
|
|
|
#endif
|