Skip to content

Commit 75971a1

Browse files
author
Donald Steinert
committed
Merge pull request #192 from shift-js/feat/lexer
refactors handle end of line helper function, cleans up lexical types
2 parents e21d1f9 + aa6bf42 commit 75971a1

File tree

2 files changed

+84
-102
lines changed

2 files changed

+84
-102
lines changed

transpiler/lexer/lexerFunctions.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -232,12 +232,12 @@ module.exports = {
232232
module.exports.checkFor('FUNCTION_DECLARATION', '...', tokens);
233233
return true;
234234
} else {
235-
module.exports.checkFor('RANGES', '...', tokens);
235+
module.exports.checkFor('RANGE', '...', tokens);
236236
return true;
237237
}
238238
}
239239
if (currCol === '.' && nextCol === '.' && nextNextCol === '<') {
240-
module.exports.checkFor('RANGES', '..<', tokens);
240+
module.exports.checkFor('RANGE', '..<', tokens);
241241
return true;
242242
}
243243
}
@@ -420,8 +420,8 @@ module.exports = {
420420
}
421421
},
422422

423-
handleEndOfFile: function(nextCol, tokens) {
424-
if (nextCol === undefined) module.exports.makeToken(undefined, undefined, tokens, 'TERMINATOR', 'EOF');
423+
handleEndOfFile: function(col, tokens) {
424+
if (col === undefined) module.exports.makeToken(undefined, undefined, tokens, 'TERMINATOR', 'EOF');
425425
}
426426

427427
};

transpiler/lexer/lexicalTypes.js

Lines changed: 80 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -1,106 +1,38 @@
11
module.exports = {
2+
3+
CLASS_DEFINITION: {
4+
'{': 'CLASS_DEFINITION_START',
5+
'}': 'CLASS_DEFINITION_END',
6+
},
27

3-
// ARRAY: {
4-
// '[': 'ARRAY_START',
5-
// ']': 'ARRAY_END'
6-
// },
7-
8-
// DICTIONARY: {
9-
// '[': 'DICTIONARY_START',
10-
// ']': 'DICTIONARY_END'
11-
// },
12-
13-
NATIVE_METHOD: {
14-
'abs': 'NATIVE_METHOD',
15-
'advancedBy': 'NATIVE_METHOD',
16-
'append': 'NATIVE_METHOD',
17-
'contains': 'NATIVE_METHOD',
18-
'distanceTo': 'NATIVE_METHOD',
19-
'dropFirst': 'NATIVE_METHOD',
20-
'dropLast': 'NATIVE_METHOD',
21-
'elementsEqual': 'NATIVE_METHOD',
22-
'hasPrefix': 'NATIVE_METHOD',
23-
'hasSuffix': 'NATIVE_METHOD',
24-
'insert': 'NATIVE_METHOD',
25-
'insertContentsOf': 'NATIVE_METHOD',
26-
'maxElement': 'NATIVE_METHOD',
27-
'minElement': 'NATIVE_METHOD',
28-
'predecessor': 'NATIVE_METHOD',
29-
'popLast': 'NATIVE_METHOD',
30-
'print': 'NATIVE_METHOD',
31-
'removeAtIndex': 'NATIVE_METHOD',
32-
'removeAll': 'NATIVE_METHOD',
33-
'removeFirst': 'NATIVE_METHOD',
34-
'removeLast': 'NATIVE_METHOD',
35-
'removeRange': 'NATIVE_METHOD',
36-
'removeValueForKey': 'NATIVE_METHOD',
37-
'replaceRange': 'NATIVE_METHOD',
38-
'successor': 'NATIVE_METHOD',
39-
'startsWith': 'NATIVE_METHOD',
40-
'updateValue': 'NATIVE_METHOD',
8+
COLLECTION: {
9+
'[': 'ARRAY_START',
10+
']': 'COLLECTION_END',
4111
},
4212

43-
METHOD_ARGUMENT_NAME: {
44-
'at': 'METHOD_ARGUMENT_NAME',
45-
'atIndex': 'METHOD_ARGUMENT_NAME',
46-
'forKey': 'METHOD_ARGUMENT_NAME',
47-
'repeatedValue': 'METHOD_ARGUMENT_NAME'
13+
COMMENT: {
14+
'//': 'COMMENT_START',
15+
'/*': 'MULTI_LINE_COMMENT_START',
16+
'*/': 'MULTI_LINE_COMMENT_END' ,
4817
},
4918

50-
TYPE_PROPERTY: {
51-
'characters': 'TYPE_PROPERTY',
52-
'count': 'TYPE_PROPERTY',
53-
'description': 'TYPE_PROPERTY',
54-
'endIndex': 'TYPE_PROPERTY',
55-
'lowercaseString': 'TYPE_PROPERTY',
56-
'isEmpty': 'TYPE_PROPERTY',
57-
'startIndex': 'TYPE_PROPERTY',
58-
'uppercaseString': 'TYPE_PROPERTY',
59-
},
60-
61-
RANGES: {
62-
'...': 'CLOSED_RANGE',
63-
'..<': 'HALF-OPEN_RANGE',
64-
},
65-
6619
FUNCTION_DECLARATION: {
6720
'(': 'PARAMS_START',
6821
')': 'PARAMS_END',
6922
'{': 'STATEMENTS_START',
7023
'}': 'STATEMENTS_END',
7124
'->': 'RETURN_ARROW',
72-
'...': 'VARIADIC_PARAM'
25+
'...': 'VARIADIC_PARAM',
7326
},
7427

7528
FUNCTION_INVOCATION: {
7629
'(': 'INVOCATION_START',
77-
')': 'INVOCATION_END'
78-
},
79-
80-
CLASS_DEFINITION: {
81-
'{': 'CLASS_DEFINITION_START',
82-
'}': 'CLASS_DEFINITION_END'
83-
},
84-
85-
STRUCT_DEFINITION: {
86-
'{': 'STRUCT_DEFINITION_START',
87-
'}': 'STRUCT_DEFINITION_END'
30+
')': 'INVOCATION_END',
8831
},
8932

9033
INITIALIZATION: {
9134
'(': 'INITIALIZATION_START',
92-
')': 'INITIALIZATION_END'
93-
},
94-
95-
COLLECTION: {
96-
'[': 'ARRAY_START',
97-
']': 'COLLECTION_END'
98-
},
99-
100-
COMMENT: {
101-
'//': 'COMMENT_START',
102-
'/*': 'MULTI_LINE_COMMENT_START',
103-
'*/': 'MULTI_LINE_COMMENT_END'
35+
')': 'INITIALIZATION_END',
10436
},
10537

10638
KEYWORD: {
@@ -192,12 +124,48 @@ module.exports = {
192124
'Type': 'CONTEXT_SPECIFIC_KEYWORD',
193125
'unowned': 'CONTEXT_SPECIFIC_KEYWORD',
194126
'weak': 'CONTEXT_SPECIFIC_KEYWORD',
195-
'willSet': 'CONTEXT_SPECIFIC_KEYWORD'
127+
'willSet': 'CONTEXT_SPECIFIC_KEYWORD',
196128

197129
},
130+
131+
METHOD_ARGUMENT_NAME: {
132+
'at': 'METHOD_ARGUMENT_NAME',
133+
'atIndex': 'METHOD_ARGUMENT_NAME',
134+
'forKey': 'METHOD_ARGUMENT_NAME',
135+
'repeatedValue': 'METHOD_ARGUMENT_NAME',
136+
},
137+
138+
NATIVE_METHOD: {
139+
'abs': 'NATIVE_METHOD',
140+
'advancedBy': 'NATIVE_METHOD',
141+
'append': 'NATIVE_METHOD',
142+
'contains': 'NATIVE_METHOD',
143+
'distanceTo': 'NATIVE_METHOD',
144+
'dropFirst': 'NATIVE_METHOD',
145+
'dropLast': 'NATIVE_METHOD',
146+
'elementsEqual': 'NATIVE_METHOD',
147+
'hasPrefix': 'NATIVE_METHOD',
148+
'hasSuffix': 'NATIVE_METHOD',
149+
'insert': 'NATIVE_METHOD',
150+
'insertContentsOf': 'NATIVE_METHOD',
151+
'maxElement': 'NATIVE_METHOD',
152+
'minElement': 'NATIVE_METHOD',
153+
'predecessor': 'NATIVE_METHOD',
154+
'popLast': 'NATIVE_METHOD',
155+
'print': 'NATIVE_METHOD',
156+
'removeAtIndex': 'NATIVE_METHOD',
157+
'removeAll': 'NATIVE_METHOD',
158+
'removeFirst': 'NATIVE_METHOD',
159+
'removeLast': 'NATIVE_METHOD',
160+
'removeRange': 'NATIVE_METHOD',
161+
'removeValueForKey': 'NATIVE_METHOD',
162+
'replaceRange': 'NATIVE_METHOD',
163+
'successor': 'NATIVE_METHOD',
164+
'startsWith': 'NATIVE_METHOD',
165+
'updateValue': 'NATIVE_METHOD',
166+
},
198167

199168
OPERATOR: {
200-
201169
'/': 'OPERATOR',
202170
'=': 'OPERATOR',
203171
'-': 'OPERATOR',
@@ -211,14 +179,10 @@ module.exports = {
211179
'|': 'OPERATOR',
212180
'^': 'OPERATOR',
213181
'?': 'OPERATOR',
214-
'~': 'OPERATOR'
215-
182+
'~': 'OPERATOR',
216183
},
217-
218-
// TODO end of file terminator at end of string, new line terminator, semicolon terminator
219-
184+
220185
PUNCTUATION: {
221-
222186
'(': 'PUNCTUATION',
223187
')': 'PUNCTUATION',
224188
'{': 'PUNCTUATION',
@@ -230,8 +194,11 @@ module.exports = {
230194
'@': 'PUNCTUATION',
231195
'#': 'PUNCTUATION',
232196
'`': 'PUNCTUATION',
233-
// '?': 'PUNCTUATION'
234-
197+
},
198+
199+
RANGE: {
200+
'...': 'CLOSED_RANGE',
201+
'..<': 'HALF-OPEN_RANGE',
235202
},
236203

237204
SUBSTRING_LOOKUP: {
@@ -243,12 +210,17 @@ module.exports = {
243210
'\\(': "STRING_INTERPOLATION_START",
244211
')': "STRING_INTERPOLATION_END",
245212
},
213+
214+
STRUCT_DEFINITION: {
215+
'{': 'STRUCT_DEFINITION_START',
216+
'}': 'STRUCT_DEFINITION_END',
217+
},
246218

247219
TERMINATOR: {
248220
'EOF': 'TERMINATOR',
249221
'\\n': 'TERMINATOR',
250222
'\\r': 'TERMINATOR',
251-
'\\t': 'TAB'
223+
'\\t': 'TAB',
252224
},
253225

254226
TYPE: {
@@ -266,8 +238,18 @@ module.exports = {
266238
'UInt8': 'TYPE_NUMBER',
267239
'UInt16': 'TYPE_NUMBER',
268240
'UInt32': 'TYPE_NUMBER',
269-
'UInt64': 'TYPE_NUMBER'
270-
}
271-
241+
'UInt64': 'TYPE_NUMBER',
242+
},
243+
244+
TYPE_PROPERTY: {
245+
'characters': 'TYPE_PROPERTY',
246+
'count': 'TYPE_PROPERTY',
247+
'description': 'TYPE_PROPERTY',
248+
'endIndex': 'TYPE_PROPERTY',
249+
'lowercaseString': 'TYPE_PROPERTY',
250+
'isEmpty': 'TYPE_PROPERTY',
251+
'startIndex': 'TYPE_PROPERTY',
252+
'uppercaseString': 'TYPE_PROPERTY',
253+
},
272254

273-
};
255+
};

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy