Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Roblox
GitHub Repository: Roblox/luau
Path: blob/master/Ast/src/Cst.cpp
2725 views
1
// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
2
#include "Luau/Ast.h"
3
#include "Luau/Cst.h"
4
#include "Luau/Common.h"
5
6
namespace Luau
7
{
8
9
int gCstRttiIndex = 0;
10
11
CstExprConstantNumber::CstExprConstantNumber(const AstArray<char>& value)
12
: CstNode(CstClassIndex())
13
, value(value)
14
{
15
}
16
17
CstExprConstantString::CstExprConstantString(AstArray<char> sourceString, QuoteStyle quoteStyle, unsigned int blockDepth)
18
: CstNode(CstClassIndex())
19
, sourceString(sourceString)
20
, quoteStyle(quoteStyle)
21
, blockDepth(blockDepth)
22
{
23
LUAU_ASSERT(blockDepth == 0 || quoteStyle == QuoteStyle::QuotedRaw);
24
}
25
26
CstExprConstantInteger::CstExprConstantInteger(const AstArray<char>& value)
27
: CstNode(CstClassIndex())
28
, value(value)
29
{
30
}
31
32
CstExprCall::CstExprCall(std::optional<Position> openParens, std::optional<Position> closeParens, AstArray<Position> commaPositions)
33
: CstNode(CstClassIndex())
34
, openParens(openParens)
35
, closeParens(closeParens)
36
, commaPositions(commaPositions)
37
{
38
}
39
40
CstExprIndexExpr::CstExprIndexExpr(Position openBracketPosition, Position closeBracketPosition)
41
: CstNode(CstClassIndex())
42
, openBracketPosition(openBracketPosition)
43
, closeBracketPosition(closeBracketPosition)
44
{
45
}
46
47
CstExprFunction::CstExprFunction()
48
: CstNode(CstClassIndex())
49
{
50
}
51
52
CstExprTable::CstExprTable(const AstArray<Item>& items)
53
: CstNode(CstClassIndex())
54
, items(items)
55
{
56
}
57
58
CstExprOp::CstExprOp(Position opPosition)
59
: CstNode(CstClassIndex())
60
, opPosition(opPosition)
61
{
62
}
63
64
CstExprTypeAssertion::CstExprTypeAssertion(Position opPosition)
65
: CstNode(CstClassIndex())
66
, opPosition(opPosition)
67
{
68
}
69
70
CstExprIfElse::CstExprIfElse(Position thenPosition, Position elsePosition, bool isElseIf)
71
: CstNode(CstClassIndex())
72
, thenPosition(thenPosition)
73
, elsePosition(elsePosition)
74
, isElseIf(isElseIf)
75
{
76
}
77
78
CstExprInterpString::CstExprInterpString(AstArray<AstArray<char>> sourceStrings, AstArray<Position> stringPositions)
79
: CstNode(CstClassIndex())
80
, sourceStrings(sourceStrings)
81
, stringPositions(stringPositions)
82
{
83
}
84
85
CstExprExplicitTypeInstantiation::CstExprExplicitTypeInstantiation(CstTypeInstantiation instantiation)
86
: CstNode(CstClassIndex())
87
, instantiation(instantiation)
88
{
89
}
90
91
CstStatDo::CstStatDo(Position statsStartPosition, Position endPosition)
92
: CstNode(CstClassIndex())
93
, statsStartPosition(statsStartPosition)
94
, endPosition(endPosition)
95
{
96
}
97
98
CstStatRepeat::CstStatRepeat(Position untilPosition)
99
: CstNode(CstClassIndex())
100
, untilPosition(untilPosition)
101
{
102
}
103
104
CstStatReturn::CstStatReturn(AstArray<Position> commaPositions)
105
: CstNode(CstClassIndex())
106
, commaPositions(commaPositions)
107
{
108
}
109
110
CstStatLocal::CstStatLocal(
111
AstArray<Position> varsAnnotationColonPositions,
112
AstArray<Position> varsCommaPositions,
113
AstArray<Position> valuesCommaPositions
114
)
115
: CstNode(CstClassIndex())
116
, varsAnnotationColonPositions(varsAnnotationColonPositions)
117
, varsCommaPositions(varsCommaPositions)
118
, valuesCommaPositions(valuesCommaPositions)
119
{
120
}
121
122
CstStatFor::CstStatFor(
123
Position annotationColonPosition,
124
Position equalsPosition,
125
Position endCommaPosition,
126
std::optional<Position> stepCommaPosition
127
)
128
: CstNode(CstClassIndex())
129
, annotationColonPosition(annotationColonPosition)
130
, equalsPosition(equalsPosition)
131
, endCommaPosition(endCommaPosition)
132
, stepCommaPosition(stepCommaPosition)
133
{
134
}
135
136
CstStatForIn::CstStatForIn(
137
AstArray<Position> varsAnnotationColonPositions,
138
AstArray<Position> varsCommaPositions,
139
AstArray<Position> valuesCommaPositions
140
)
141
: CstNode(CstClassIndex())
142
, varsAnnotationColonPositions(varsAnnotationColonPositions)
143
, varsCommaPositions(varsCommaPositions)
144
, valuesCommaPositions(valuesCommaPositions)
145
{
146
}
147
148
CstStatAssign::CstStatAssign(AstArray<Position> varsCommaPositions, Position equalsPosition, AstArray<Position> valuesCommaPositions)
149
: CstNode(CstClassIndex())
150
, varsCommaPositions(varsCommaPositions)
151
, equalsPosition(equalsPosition)
152
, valuesCommaPositions(valuesCommaPositions)
153
{
154
}
155
156
CstStatCompoundAssign::CstStatCompoundAssign(Position opPosition)
157
: CstNode(CstClassIndex())
158
, opPosition(opPosition)
159
{
160
}
161
162
CstStatFunction::CstStatFunction(Position functionKeywordPosition)
163
: CstNode(CstClassIndex())
164
, functionKeywordPosition(functionKeywordPosition)
165
{
166
}
167
168
CstStatLocalFunction::CstStatLocalFunction(Position localKeywordPosition, Position functionKeywordPosition)
169
: CstNode(CstClassIndex())
170
, localKeywordPosition(localKeywordPosition)
171
, functionKeywordPosition(functionKeywordPosition)
172
{
173
}
174
175
CstGenericType::CstGenericType(std::optional<Position> defaultEqualsPosition)
176
: CstNode(CstClassIndex())
177
, defaultEqualsPosition(defaultEqualsPosition)
178
{
179
}
180
181
CstGenericTypePack::CstGenericTypePack(Position ellipsisPosition, std::optional<Position> defaultEqualsPosition)
182
: CstNode(CstClassIndex())
183
, ellipsisPosition(ellipsisPosition)
184
, defaultEqualsPosition(defaultEqualsPosition)
185
{
186
}
187
188
CstStatTypeAlias::CstStatTypeAlias(
189
Position typeKeywordPosition,
190
Position genericsOpenPosition,
191
AstArray<Position> genericsCommaPositions,
192
Position genericsClosePosition,
193
Position equalsPosition
194
)
195
: CstNode(CstClassIndex())
196
, typeKeywordPosition(typeKeywordPosition)
197
, genericsOpenPosition(genericsOpenPosition)
198
, genericsCommaPositions(genericsCommaPositions)
199
, genericsClosePosition(genericsClosePosition)
200
, equalsPosition(equalsPosition)
201
{
202
}
203
204
CstStatTypeFunction::CstStatTypeFunction(Position typeKeywordPosition, Position functionKeywordPosition)
205
: CstNode(CstClassIndex())
206
, typeKeywordPosition(typeKeywordPosition)
207
, functionKeywordPosition(functionKeywordPosition)
208
{
209
}
210
211
CstTypeReference::CstTypeReference(
212
std::optional<Position> prefixPointPosition,
213
Position openParametersPosition,
214
AstArray<Position> parametersCommaPositions,
215
Position closeParametersPosition
216
)
217
: CstNode(CstClassIndex())
218
, prefixPointPosition(prefixPointPosition)
219
, openParametersPosition(openParametersPosition)
220
, parametersCommaPositions(parametersCommaPositions)
221
, closeParametersPosition(closeParametersPosition)
222
{
223
}
224
225
CstTypeTable::CstTypeTable(AstArray<Item> items, bool isArray)
226
: CstNode(CstClassIndex())
227
, items(items)
228
, isArray(isArray)
229
{
230
}
231
232
CstTypeFunction::CstTypeFunction(
233
Position openGenericsPosition,
234
AstArray<Position> genericsCommaPositions,
235
Position closeGenericsPosition,
236
Position openArgsPosition,
237
AstArray<std::optional<Position>> argumentNameColonPositions,
238
AstArray<Position> argumentsCommaPositions,
239
Position closeArgsPosition,
240
Position returnArrowPosition
241
)
242
: CstNode(CstClassIndex())
243
, openGenericsPosition(openGenericsPosition)
244
, genericsCommaPositions(genericsCommaPositions)
245
, closeGenericsPosition(closeGenericsPosition)
246
, openArgsPosition(openArgsPosition)
247
, argumentNameColonPositions(argumentNameColonPositions)
248
, argumentsCommaPositions(argumentsCommaPositions)
249
, closeArgsPosition(closeArgsPosition)
250
, returnArrowPosition(returnArrowPosition)
251
{
252
}
253
254
CstTypeTypeof::CstTypeTypeof(Position openPosition, Position closePosition)
255
: CstNode(CstClassIndex())
256
, openPosition(openPosition)
257
, closePosition(closePosition)
258
{
259
}
260
261
CstTypeUnion::CstTypeUnion(std::optional<Position> leadingPosition, AstArray<Position> separatorPositions)
262
: CstNode(CstClassIndex())
263
, leadingPosition(leadingPosition)
264
, separatorPositions(separatorPositions)
265
{
266
}
267
268
CstTypeIntersection::CstTypeIntersection(std::optional<Position> leadingPosition, AstArray<Position> separatorPositions)
269
: CstNode(CstClassIndex())
270
, leadingPosition(leadingPosition)
271
, separatorPositions(separatorPositions)
272
{
273
}
274
275
CstTypeSingletonString::CstTypeSingletonString(AstArray<char> sourceString, CstExprConstantString::QuoteStyle quoteStyle, unsigned int blockDepth)
276
: CstNode(CstClassIndex())
277
, sourceString(sourceString)
278
, quoteStyle(quoteStyle)
279
, blockDepth(blockDepth)
280
{
281
LUAU_ASSERT(quoteStyle != CstExprConstantString::QuotedInterp);
282
}
283
284
CstTypePackExplicit::CstTypePackExplicit()
285
: CstNode(CstClassIndex())
286
, hasParentheses(false)
287
, openParenthesesPosition(Position{0, 0})
288
, closeParenthesesPosition(Position{0, 0})
289
, commaPositions({})
290
{
291
}
292
293
CstTypePackExplicit::CstTypePackExplicit(Position openParenthesesPosition, Position closeParenthesesPosition, AstArray<Position> commaPositions)
294
: CstNode(CstClassIndex())
295
, hasParentheses(true)
296
, openParenthesesPosition(openParenthesesPosition)
297
, closeParenthesesPosition(closeParenthesesPosition)
298
, commaPositions(commaPositions)
299
{
300
}
301
302
CstTypePackGeneric::CstTypePackGeneric(Position ellipsisPosition)
303
: CstNode(CstClassIndex())
304
, ellipsisPosition(ellipsisPosition)
305
{
306
}
307
308
} // namespace Luau
309
310