Skip to content

Commit 5aee188

Browse files
author
Jan Svoboda
committed
Rename SyntaxTransformer to ASTGen
1 parent 44d7769 commit 5aee188

File tree

6 files changed

+50
-61
lines changed

6 files changed

+50
-61
lines changed
Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//===--- SyntaxTransformer.h ----------------------------------------------===//
1+
//===--- ASTGen.h ---------------------------------------------------------===//
22
//
33
// This source file is part of the Swift.org open source project
44
//
@@ -10,17 +10,17 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13-
#ifndef SWIFT_PARSE_SYNTAXTRANSFORMER_H
14-
#define SWIFT_PARSE_SYNTAXTRANSFORMER_H
13+
#ifndef SWIFT_PARSE_ASTGEN_H
14+
#define SWIFT_PARSE_ASTGEN_H
1515

1616
#include "swift/AST/ASTContext.h"
1717
#include "swift/AST/Expr.h"
1818
#include "swift/Syntax/SyntaxNodes.h"
1919
#include "llvm/ADT/DenseMap.h"
2020

2121
namespace swift {
22-
/// Transforms Syntax nodes into AST nodes.
23-
class SyntaxTransformer {
22+
/// Generates AST nodes from Syntax nodes.
23+
class ASTGen {
2424
ASTContext &Context;
2525
// A stack of source locations of syntax constructs. Allows us to get the
2626
// SourceLoc necessary to create AST nodes for nodes in not-yet-complete
@@ -30,18 +30,18 @@ class SyntaxTransformer {
3030
llvm::SmallVector<SourceLoc, 16> LocStack;
3131

3232
public:
33-
explicit SyntaxTransformer(ASTContext &Context) : Context(Context) {}
33+
explicit ASTGen(ASTContext &Context) : Context(Context) {}
3434

35-
IntegerLiteralExpr *transform(syntax::IntegerLiteralExprSyntax &Expr);
36-
FloatLiteralExpr *transform(syntax::FloatLiteralExprSyntax &Expr);
37-
NilLiteralExpr *transform(syntax::NilLiteralExprSyntax &Expr);
38-
BooleanLiteralExpr *transform(syntax::BooleanLiteralExprSyntax &Expr);
39-
MagicIdentifierLiteralExpr *transform(syntax::PoundFileExprSyntax &Expr);
40-
MagicIdentifierLiteralExpr *transform(syntax::PoundLineExprSyntax &Expr);
41-
MagicIdentifierLiteralExpr *transform(syntax::PoundColumnExprSyntax &Expr);
42-
MagicIdentifierLiteralExpr *transform(syntax::PoundFunctionExprSyntax &Expr);
43-
MagicIdentifierLiteralExpr *transform(syntax::PoundDsohandleExprSyntax &Expr);
44-
Expr *transform(syntax::UnknownExprSyntax &Expr);
35+
IntegerLiteralExpr *generate(syntax::IntegerLiteralExprSyntax &Expr);
36+
FloatLiteralExpr *generate(syntax::FloatLiteralExprSyntax &Expr);
37+
NilLiteralExpr *generate(syntax::NilLiteralExprSyntax &Expr);
38+
BooleanLiteralExpr *generate(syntax::BooleanLiteralExprSyntax &Expr);
39+
MagicIdentifierLiteralExpr *generate(syntax::PoundFileExprSyntax &Expr);
40+
MagicIdentifierLiteralExpr *generate(syntax::PoundLineExprSyntax &Expr);
41+
MagicIdentifierLiteralExpr *generate(syntax::PoundColumnExprSyntax &Expr);
42+
MagicIdentifierLiteralExpr *generate(syntax::PoundFunctionExprSyntax &Expr);
43+
MagicIdentifierLiteralExpr *generate(syntax::PoundDsohandleExprSyntax &Expr);
44+
Expr *generate(syntax::UnknownExprSyntax &Expr);
4545

4646
/// Stores source location necessary for AST creation.
4747
void pushLoc(SourceLoc Loc);
@@ -56,7 +56,7 @@ class SyntaxTransformer {
5656
SourceLoc topLoc();
5757

5858
MagicIdentifierLiteralExpr *
59-
transformMagicIdentifierLiteralExpr(const syntax::TokenSyntax &PoundToken);
59+
generateMagicIdentifierLiteralExpr(const syntax::TokenSyntax &PoundToken);
6060

6161
/// Map magic literal tokens such as #file to their MagicIdentifierLiteralExpr
6262
/// kind.
@@ -65,4 +65,4 @@ class SyntaxTransformer {
6565
};
6666
} // namespace swift
6767

68-
#endif // SWIFT_PARSE_SYNTAXTRANSFORMER_H
68+
#endif // SWIFT_PARSE_ASTGEN_H

include/swift/Parse/Parser.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "swift/AST/Pattern.h"
2626
#include "swift/AST/Stmt.h"
2727
#include "swift/Basic/OptionSet.h"
28+
#include "swift/Parse/ASTGen.h"
2829
#include "swift/Parse/Lexer.h"
2930
#include "swift/Parse/LocalContext.h"
3031
#include "swift/Parse/PersistentParserState.h"
@@ -34,7 +35,6 @@
3435
#include "swift/Parse/ParserResult.h"
3536
#include "swift/Parse/SyntaxParserResult.h"
3637
#include "swift/Parse/SyntaxParsingContext.h"
37-
#include "swift/Parse/SyntaxTransformer.h"
3838
#include "swift/Syntax/References.h"
3939
#include "swift/Config.h"
4040
#include "llvm/ADT/SetVector.h"
@@ -378,8 +378,8 @@ class Parser {
378378
/// Current syntax parsing context where call backs should be directed to.
379379
SyntaxParsingContext *SyntaxContext;
380380

381-
/// The libSyntax to AST transformer.
382-
SyntaxTransformer Transformer;
381+
/// The AST generator.
382+
ASTGen Generator;
383383

384384
public:
385385
Parser(unsigned BufferID, SourceFile &SF, DiagnosticEngine* LexerDiags,

lib/Parse/SyntaxTransformer.cpp renamed to lib/Parse/ASTGen.cpp

Lines changed: 23 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//===--- SyntaxTransformer.cpp --------------------------------------------===//
1+
//===--- ASTGen.cpp -------------------------------------------------------===//
22
//
33
// This source file is part of the Swift.org open source project
44
//
@@ -10,66 +10,59 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13-
#include "swift/Parse/SyntaxTransformer.h"
13+
#include "swift/Parse/ASTGen.h"
1414

1515
using namespace swift;
1616
using namespace swift::syntax;
1717

18-
IntegerLiteralExpr *
19-
SyntaxTransformer::transform(IntegerLiteralExprSyntax &Expr) {
18+
IntegerLiteralExpr *ASTGen::generate(IntegerLiteralExprSyntax &Expr) {
2019
TokenSyntax Digits = Expr.getDigits();
2120
StringRef Text = copyAndStripUnderscores(Digits.getText());
2221
SourceLoc Loc = topLoc();
2322
return new (Context) IntegerLiteralExpr(Text, Loc);
2423
}
2524

26-
FloatLiteralExpr *SyntaxTransformer::transform(FloatLiteralExprSyntax &Expr) {
25+
FloatLiteralExpr *ASTGen::generate(FloatLiteralExprSyntax &Expr) {
2726
TokenSyntax FloatingDigits = Expr.getFloatingDigits();
2827
StringRef Text = copyAndStripUnderscores(FloatingDigits.getText());
2928
SourceLoc Loc = topLoc();
3029
return new (Context) FloatLiteralExpr(Text, Loc);
3130
}
3231

33-
NilLiteralExpr *SyntaxTransformer::transform(NilLiteralExprSyntax &Expr) {
32+
NilLiteralExpr *ASTGen::generate(NilLiteralExprSyntax &Expr) {
3433
TokenSyntax Nil = Expr.getNilKeyword();
3534
SourceLoc Loc = topLoc();
3635
return new (Context) NilLiteralExpr(Loc);
3736
}
3837

39-
BooleanLiteralExpr *
40-
SyntaxTransformer::transform(BooleanLiteralExprSyntax &Expr) {
38+
BooleanLiteralExpr *ASTGen::generate(BooleanLiteralExprSyntax &Expr) {
4139
TokenSyntax Literal = Expr.getBooleanLiteral();
4240
bool Value = Literal.getTokenKind() == tok::kw_true;
4341
SourceLoc Loc = topLoc();
4442
return new (Context) BooleanLiteralExpr(Value, Loc);
4543
}
4644

47-
MagicIdentifierLiteralExpr *
48-
SyntaxTransformer::transform(PoundFileExprSyntax &Expr) {
49-
return transformMagicIdentifierLiteralExpr(Expr.getPoundFile());
45+
MagicIdentifierLiteralExpr *ASTGen::generate(PoundFileExprSyntax &Expr) {
46+
return generateMagicIdentifierLiteralExpr(Expr.getPoundFile());
5047
}
5148

52-
MagicIdentifierLiteralExpr *
53-
SyntaxTransformer::transform(PoundLineExprSyntax &Expr) {
54-
return transformMagicIdentifierLiteralExpr(Expr.getPoundLine());
49+
MagicIdentifierLiteralExpr *ASTGen::generate(PoundLineExprSyntax &Expr) {
50+
return generateMagicIdentifierLiteralExpr(Expr.getPoundLine());
5551
}
5652

57-
MagicIdentifierLiteralExpr *
58-
SyntaxTransformer::transform(PoundColumnExprSyntax &Expr) {
59-
return transformMagicIdentifierLiteralExpr(Expr.getPoundColumn());
53+
MagicIdentifierLiteralExpr *ASTGen::generate(PoundColumnExprSyntax &Expr) {
54+
return generateMagicIdentifierLiteralExpr(Expr.getPoundColumn());
6055
}
6156

62-
MagicIdentifierLiteralExpr *
63-
SyntaxTransformer::transform(PoundFunctionExprSyntax &Expr) {
64-
return transformMagicIdentifierLiteralExpr(Expr.getPoundFunction());
57+
MagicIdentifierLiteralExpr *ASTGen::generate(PoundFunctionExprSyntax &Expr) {
58+
return generateMagicIdentifierLiteralExpr(Expr.getPoundFunction());
6559
}
6660

67-
MagicIdentifierLiteralExpr *
68-
SyntaxTransformer::transform(PoundDsohandleExprSyntax &Expr) {
69-
return transformMagicIdentifierLiteralExpr(Expr.getPoundDsohandle());
61+
MagicIdentifierLiteralExpr *ASTGen::generate(PoundDsohandleExprSyntax &Expr) {
62+
return generateMagicIdentifierLiteralExpr(Expr.getPoundDsohandle());
7063
}
7164

72-
Expr* SyntaxTransformer::transform(UnknownExprSyntax& Expr) {
65+
Expr *ASTGen::generate(UnknownExprSyntax &Expr) {
7366
if (Expr.getNumChildren() == 1 && Expr.getChild(0)->isToken()) {
7467
Syntax Token = *Expr.getChild(0);
7568
tok Kind = Token.getRaw()->getTokenKind();
@@ -90,12 +83,9 @@ Expr* SyntaxTransformer::transform(UnknownExprSyntax& Expr) {
9083
return nullptr;
9184
}
9285

93-
void SyntaxTransformer::pushLoc(SourceLoc Loc) {
94-
LocStack.push_back(Loc);
95-
}
86+
void ASTGen::pushLoc(SourceLoc Loc) { LocStack.push_back(Loc); }
9687

97-
StringRef SyntaxTransformer::copyAndStripUnderscores(StringRef Orig,
98-
ASTContext &Context) {
88+
StringRef ASTGen::copyAndStripUnderscores(StringRef Orig, ASTContext &Context) {
9989
char *start = static_cast<char *>(Context.Allocate(Orig.size(), 1));
10090
char *p = start;
10191

@@ -110,26 +100,25 @@ StringRef SyntaxTransformer::copyAndStripUnderscores(StringRef Orig,
110100
return StringRef(start, p - start);
111101
}
112102

113-
StringRef SyntaxTransformer::copyAndStripUnderscores(StringRef Orig) {
103+
StringRef ASTGen::copyAndStripUnderscores(StringRef Orig) {
114104
return copyAndStripUnderscores(Orig, Context);
115105
}
116106

117-
SourceLoc SyntaxTransformer::topLoc() {
107+
SourceLoc ASTGen::topLoc() {
118108
// todo [gsoc]: create SourceLoc by pointing the offset of Syntax node into
119109
// the source buffer
120110
return LocStack.back();
121111
}
122112

123113
MagicIdentifierLiteralExpr *
124-
SyntaxTransformer::transformMagicIdentifierLiteralExpr(
125-
const TokenSyntax &PoundToken) {
114+
ASTGen::generateMagicIdentifierLiteralExpr(const TokenSyntax &PoundToken) {
126115
auto Kind = getMagicIdentifierLiteralKind(PoundToken.getTokenKind());
127116
SourceLoc Loc = topLoc();
128117
return new (Context) MagicIdentifierLiteralExpr(Kind, Loc);
129118
}
130119

131120
MagicIdentifierLiteralExpr::Kind
132-
SyntaxTransformer::getMagicIdentifierLiteralKind(tok Kind) {
121+
ASTGen::getMagicIdentifierLiteralKind(tok Kind) {
133122
switch (Kind) {
134123
case tok::kw___COLUMN__:
135124
case tok::pound_column:

lib/Parse/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ else()
55
endif()
66

77
add_swift_host_library(swiftParse STATIC
8+
ASTGen.cpp
89
Confusables.cpp
910
HiddenLibSyntaxAction.cpp
1011
Lexer.cpp
@@ -23,7 +24,6 @@ add_swift_host_library(swiftParse STATIC
2324
Scope.cpp
2425
SyntaxParsingCache.cpp
2526
SyntaxParsingContext.cpp
26-
SyntaxTransformer.cpp
2727

2828
GYB_SOURCES
2929
ParsedSyntaxBuilders.cpp.gyb

lib/Parse/ParseExpr.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -891,7 +891,7 @@ ParserResult<Expr> Parser::parseExprSuper() {
891891
}
892892

893893
StringRef Parser::copyAndStripUnderscores(StringRef orig) {
894-
return SyntaxTransformer::copyAndStripUnderscores(orig, Context);
894+
return ASTGen::copyAndStripUnderscores(orig, Context);
895895
}
896896

897897
/// Disambiguate the parse after '{' token that is in a place that might be
@@ -1414,11 +1414,11 @@ ParserResult<Expr> Parser::parseExprAST() {
14141414
// todo [gsoc]: improve this somehow
14151415
if (SyntaxContext->isTopNode<SyntaxKind::UnknownExpr>()) {
14161416
auto Expr = SyntaxContext->topNode<UnknownExprSyntax>();
1417-
auto ExprAST = Transformer.transform(Expr);
1417+
auto ExprAST = Generator.generate(Expr);
14181418
return makeParserResult(ExprAST);
14191419
}
14201420
auto Expr = SyntaxContext->topNode<SyntaxNode>();
1421-
auto ExprAST = Transformer.transform(Expr);
1421+
auto ExprAST = Generator.generate(Expr);
14221422
return makeParserResult(ExprAST);
14231423
}
14241424

lib/Parse/Parser.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -528,7 +528,7 @@ Parser::Parser(std::unique_ptr<Lexer> Lex, SourceFile &SF,
528528
L->getBufferID(),
529529
SF.SyntaxParsingCache,
530530
SF.getASTContext().getSyntaxArena())))),
531-
Transformer(SF.getASTContext()) {
531+
Generator(SF.getASTContext()) {
532532
State = PersistentState;
533533
if (!State) {
534534
OwnedState.reset(new PersistentParserState(Context));
@@ -590,7 +590,7 @@ ParsedTokenSyntax Parser::consumeTokenSyntax() {
590590

591591
// todo [gsoc]: remove when possible
592592
// todo [gsoc]: handle backtracking properly
593-
Transformer.pushLoc(Tok.getLoc());
593+
Generator.pushLoc(Tok.getLoc());
594594

595595
consumeTokenWithoutFeedingReceiver();
596596
return ParsedToken;

0 commit comments

Comments
 (0)