Skip to content
This repository was archived by the owner on Jan 8, 2023. It is now read-only.

Commit d9a8e9c

Browse files
author
ApsarasX
committed
chore: change the class name of AST nodes
1 parent c03de6f commit d9a8e9c

27 files changed

+839
-801
lines changed

grammar/StaticScriptLexer.g4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
lexer grammar StaticScriptLexer;
22

33
options {
4-
language = Cpp;
4+
language = Cpp;
55
}
66

77
// 关键字

include/AST/AST.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
#ifndef STATICSCRIPT_AST_AST_H
22
#define STATICSCRIPT_AST_AST_H
33

4-
#include "AST/Type.h"
5-
#include "AST/Decl.h"
6-
#include "AST/Stmt.h"
7-
#include "AST/Expr.h"
4+
#include "AST/TypeNode.h"
5+
#include "AST/DeclNode.h"
6+
#include "AST/StmtNode.h"
7+
#include "AST/ExprNode.h"
88
#include "AST/Module.h"
9-
#include "AST/ASTVisitor.h"
9+
#include "AST/ASTBuilder.h"
1010

1111
#endif // STATICSCRIPT_AST_AST_H

include/AST/ASTBuilder.h

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
#ifndef STATICSCRIPT_AST_ASTBUILDER_H
2+
#define STATICSCRIPT_AST_ASTBUILDER_H
3+
4+
#include <iostream>
5+
#include "StaticScriptParserBaseVisitor.h"
6+
#include "AST/DeclNode.h"
7+
#include "AST/StmtNode.h"
8+
#include "AST/TypeNode.h"
9+
#include "AST/ExprNode.h"
10+
#include "AST/Module.h"
11+
#include "Util/Alias.h"
12+
13+
class ASTBuilder final : public StaticScriptParserVisitor {
14+
public:
15+
explicit ASTBuilder(String filename);
16+
17+
antlrcpp::Any visitModule(StaticScriptParser::ModuleContext *ctx) override;
18+
19+
antlrcpp::Any visitStatements(StaticScriptParser::StatementsContext *ctx) override;
20+
21+
antlrcpp::Any visitStatement(StaticScriptParser::StatementContext *ctx) override;
22+
23+
antlrcpp::Any visitEmptyStatement(StaticScriptParser::EmptyStatementContext *ctx) override;
24+
25+
antlrcpp::Any visitDeclarationStatement(StaticScriptParser::DeclarationStatementContext *ctx) override;
26+
27+
antlrcpp::Any visitDeclaration(StaticScriptParser::DeclarationContext *ctx) override;
28+
29+
antlrcpp::Any visitVariableDeclaration(StaticScriptParser::VariableDeclarationContext *ctx) override;
30+
31+
antlrcpp::Any visitVariableDeclarators(StaticScriptParser::VariableDeclaratorsContext *ctx) override;
32+
33+
antlrcpp::Any visitVariableModifier(StaticScriptParser::VariableModifierContext *ctx) override;
34+
35+
antlrcpp::Any visitVariableDeclarator(StaticScriptParser::VariableDeclaratorContext *ctx) override;
36+
37+
antlrcpp::Any visitTypeAnnotation(StaticScriptParser::TypeAnnotationContext *ctx) override;
38+
39+
antlrcpp::Any visitVariableInitializer(StaticScriptParser::VariableInitializerContext *ctx) override;
40+
41+
antlrcpp::Any visitBuiltinType(StaticScriptParser::BuiltinTypeContext *ctx) override;
42+
43+
antlrcpp::Any visitFunctionDeclaration(StaticScriptParser::FunctionDeclarationContext *ctx) override;
44+
45+
antlrcpp::Any visitParameterList(StaticScriptParser::ParameterListContext *ctx) override;
46+
47+
antlrcpp::Any visitFunctionBody(StaticScriptParser::FunctionBodyContext *ctx) override;
48+
49+
antlrcpp::Any visitCallExpression(StaticScriptParser::CallExpressionContext *ctx) override;
50+
51+
antlrcpp::Any visitArgumentList(StaticScriptParser::ArgumentListContext *ctx) override;
52+
53+
antlrcpp::Any visitCompoundStatement(StaticScriptParser::CompoundStatementContext *ctx) override;
54+
55+
antlrcpp::Any visitExpressionStatement(StaticScriptParser::ExpressionStatementContext *ctx) override;
56+
57+
antlrcpp::Any visitExpression(StaticScriptParser::ExpressionContext *ctx) override;
58+
59+
antlrcpp::Any visitLiteral(StaticScriptParser::LiteralContext *ctx) override;
60+
61+
antlrcpp::Any visitSelectionStatement(StaticScriptParser::SelectionStatementContext *ctx) override;
62+
63+
antlrcpp::Any visitIfStatement(StaticScriptParser::IfStatementContext *ctx) override;
64+
65+
antlrcpp::Any visitIterationStatement(StaticScriptParser::IterationStatementContext *ctx) override;
66+
67+
antlrcpp::Any visitWhileStatement(StaticScriptParser::WhileStatementContext *ctx) override;
68+
69+
antlrcpp::Any visitForStatement(StaticScriptParser::ForStatementContext *ctx) override;
70+
71+
antlrcpp::Any visitForInit(StaticScriptParser::ForInitContext *ctx) override;
72+
73+
antlrcpp::Any visitExpressionList(StaticScriptParser::ExpressionListContext *ctx) override;
74+
75+
antlrcpp::Any visitJumpStatement(StaticScriptParser::JumpStatementContext *ctx) override;
76+
77+
antlrcpp::Any visitContinueStatement(StaticScriptParser::ContinueStatementContext *ctx) override;
78+
79+
antlrcpp::Any visitBreakStatement(StaticScriptParser::BreakStatementContext *ctx) override;
80+
81+
antlrcpp::Any visitReturnStatement(StaticScriptParser::ReturnStatementContext *ctx) override;
82+
83+
private:
84+
const String filename;
85+
};
86+
87+
88+
#endif // STATICSCRIPT_AST_ASTBUILDER_H

include/AST/ASTVisitor.h

Lines changed: 21 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,29 @@
11
#ifndef STATICSCRIPT_AST_ASTVISITOR_H
22
#define STATICSCRIPT_AST_ASTVISITOR_H
33

4-
#include <iostream>
5-
#include "StaticScriptParserBaseVisitor.h"
6-
#include "AST/Decl.h"
7-
#include "AST/Stmt.h"
8-
#include "AST/Type.h"
9-
#include "AST/Expr.h"
10-
#include "AST/Module.h"
11-
#include "Util/Alias.h"
4+
#include "AST/AST.h"
125

13-
class ASTVisitor final : public StaticScriptParserVisitor {
6+
template<typename S, typename E>
7+
class ASTVisitor {
148
public:
15-
explicit ASTVisitor(String filename);
16-
17-
antlrcpp::Any visitModule(StaticScriptParser::ModuleContext *ctx) override;
18-
19-
antlrcpp::Any visitStatements(StaticScriptParser::StatementsContext *ctx) override;
20-
21-
antlrcpp::Any visitStatement(StaticScriptParser::StatementContext *ctx) override;
22-
23-
antlrcpp::Any visitEmptyStatement(StaticScriptParser::EmptyStatementContext *ctx) override;
24-
25-
antlrcpp::Any visitDeclarationStatement(StaticScriptParser::DeclarationStatementContext *ctx) override;
26-
27-
antlrcpp::Any visitDeclaration(StaticScriptParser::DeclarationContext *ctx) override;
28-
29-
antlrcpp::Any visitVariableDeclaration(StaticScriptParser::VariableDeclarationContext *ctx) override;
30-
31-
antlrcpp::Any visitVariableDeclarators(StaticScriptParser::VariableDeclaratorsContext *ctx) override;
32-
33-
antlrcpp::Any visitVariableModifier(StaticScriptParser::VariableModifierContext *ctx) override;
34-
35-
antlrcpp::Any visitVariableDeclarator(StaticScriptParser::VariableDeclaratorContext *ctx) override;
36-
37-
antlrcpp::Any visitTypeAnnotation(StaticScriptParser::TypeAnnotationContext *ctx) override;
38-
39-
antlrcpp::Any visitVariableInitializer(StaticScriptParser::VariableInitializerContext *ctx) override;
40-
41-
antlrcpp::Any visitBuiltinType(StaticScriptParser::BuiltinTypeContext *ctx) override;
42-
43-
antlrcpp::Any visitFunctionDeclaration(StaticScriptParser::FunctionDeclarationContext *ctx) override;
44-
45-
antlrcpp::Any visitParameterList(StaticScriptParser::ParameterListContext *ctx) override;
46-
47-
antlrcpp::Any visitFunctionBody(StaticScriptParser::FunctionBodyContext *ctx) override;
48-
49-
antlrcpp::Any visitCallExpression(StaticScriptParser::CallExpressionContext *ctx) override;
50-
51-
antlrcpp::Any visitArgumentList(StaticScriptParser::ArgumentListContext *ctx) override;
52-
53-
antlrcpp::Any visitCompoundStatement(StaticScriptParser::CompoundStatementContext *ctx) override;
54-
55-
antlrcpp::Any visitExpressionStatement(StaticScriptParser::ExpressionStatementContext *ctx) override;
56-
57-
antlrcpp::Any visitExpression(StaticScriptParser::ExpressionContext *ctx) override;
58-
59-
antlrcpp::Any visitLiteral(StaticScriptParser::LiteralContext *ctx) override;
60-
61-
antlrcpp::Any visitSelectionStatement(StaticScriptParser::SelectionStatementContext *ctx) override;
62-
63-
antlrcpp::Any visitIfStatement(StaticScriptParser::IfStatementContext *ctx) override;
64-
65-
antlrcpp::Any visitIterationStatement(StaticScriptParser::IterationStatementContext *ctx) override;
66-
67-
antlrcpp::Any visitWhileStatement(StaticScriptParser::WhileStatementContext *ctx) override;
68-
69-
antlrcpp::Any visitForStatement(StaticScriptParser::ForStatementContext *ctx) override;
70-
71-
antlrcpp::Any visitForInit(StaticScriptParser::ForInitContext *ctx) override;
72-
73-
antlrcpp::Any visitExpressionList(StaticScriptParser::ExpressionListContext *ctx) override;
74-
75-
antlrcpp::Any visitJumpStatement(StaticScriptParser::JumpStatementContext *ctx) override;
76-
77-
antlrcpp::Any visitContinueStatement(StaticScriptParser::ContinueStatementContext *ctx) override;
78-
79-
antlrcpp::Any visitBreakStatement(StaticScriptParser::BreakStatementContext *ctx) override;
80-
81-
antlrcpp::Any visitReturnStatement(StaticScriptParser::ReturnStatementContext *ctx) override;
82-
83-
private:
84-
const String filename;
9+
virtual SharedPtr<S> visit(SharedPtr<CompoundStmt> stmt) = 0;
10+
virtual SharedPtr<S> visit(SharedPtr<ExprStmt> stmt) = 0;
11+
virtual SharedPtr<S> visit(SharedPtr<VarDeclStmt> stmt) = 0;
12+
virtual SharedPtr<S> visit(SharedPtr<FunctionDeclStmt> stmt) = 0;
13+
virtual SharedPtr<S> visit(SharedPtr<IfStmt> stmt) = 0;
14+
virtual SharedPtr<S> visit(SharedPtr<WhileStmt> stmt) = 0;
15+
virtual SharedPtr<S> visit(SharedPtr<ForStmt> stmt) = 0;
16+
virtual SharedPtr<S> visit(SharedPtr<ContinueStmt> stmt) = 0;
17+
virtual SharedPtr<S> visit(SharedPtr<BreakStmt> stmt) = 0;
18+
virtual SharedPtr<S> visit(SharedPtr<ReturnStmt> stmt) = 0;
19+
20+
virtual SharedPtr<E> visit(SharedPtr<BooleanLiteralExpr> expr) = 0;
21+
virtual SharedPtr<E> visit(SharedPtr<IntegerLiteralExpr> expr) = 0;
22+
virtual SharedPtr<E> visit(SharedPtr<StringLiteralExpr> expr) = 0;
23+
virtual SharedPtr<E> visit(SharedPtr<IdentifierExpr> expr) = 0;
24+
virtual SharedPtr<E> visit(SharedPtr<CallExpr> expr) = 0;
25+
virtual SharedPtr<E> visit(SharedPtr<UnaryOperatorExpr> expr) = 0;
26+
virtual SharedPtr<E> visit(SharedPtr<BinaryOperatorExpr> expr) = 0;
8527
};
8628

87-
8829
#endif // STATICSCRIPT_AST_ASTVISITOR_H

include/AST/Decl.h

Lines changed: 0 additions & 57 deletions
This file was deleted.

include/AST/DeclNode.h

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#ifndef STATICSCRIPT_AST_DECLNODE_H
2+
#define STATICSCRIPT_AST_DECLNODE_H
3+
4+
#include "AST/TypeNode.h"
5+
#include "AST/StmtNode.h"
6+
#include "AST/ExprNode.h"
7+
#include "Util/Alias.h"
8+
9+
enum class VarModifier {
10+
Let, Const, Param
11+
};
12+
13+
class DeclNode {
14+
public:
15+
virtual ~DeclNode() = default;
16+
};
17+
18+
// 变量声明
19+
class VarDeclNode : public DeclNode {
20+
public:
21+
VarDeclNode();
22+
23+
VarDeclNode(VarModifier modifier, String name, const SharedPtr<BuiltinTypeNode> &type);
24+
25+
VarDeclNode(VarModifier modifier, String name, const SharedPtr<BuiltinTypeNode> &type, const SharedPtr<ExprNode> &defaultVal);
26+
27+
~VarDeclNode() override = default;
28+
29+
VarModifier modifier;
30+
String name;
31+
SharedPtr<BuiltinTypeNode> type;
32+
SharedPtr<ExprNode> defaultVal;
33+
};
34+
35+
// 函数参数声明
36+
class ParmVarDeclNode : public VarDeclNode {
37+
public:
38+
ParmVarDeclNode(const String &name, const SharedPtr<BuiltinTypeNode> &type);
39+
40+
~ParmVarDeclNode() override = default;
41+
};
42+
43+
// 函数声明
44+
class FunctionDeclNode : public DeclNode {
45+
public:
46+
FunctionDeclNode(String name, const SharedPtrVector<ParmVarDeclNode> &params, const SharedPtr<BuiltinTypeNode> &returnType,
47+
const SharedPtr<CompoundStmtNode> &body);
48+
49+
~FunctionDeclNode() override = default;
50+
51+
String name;
52+
SharedPtrVector<ParmVarDeclNode> params;
53+
SharedPtr<BuiltinTypeNode> returnType;
54+
SharedPtr<CompoundStmtNode> body;
55+
};
56+
57+
#endif // STATICSCRIPT_AST_DECLNODE_H

0 commit comments

Comments
 (0)