tangled
alpha
login
or
join now
gearsco.de
/
just
3
fork
atom
A JavaScript lexer and syntax highlighter for Gleam!
3
fork
atom
overview
issues
pulls
pipelines
Report errors for invalid private identifiers
gearsco.de
11 months ago
adc623db
8ee8fb77
+35
-2
1 changed file
expand all
collapse all
unified
split
src
just.gleam
+35
-2
src/just.gleam
···
26
26
UnterminatedTemplate
27
27
LetterAfterNumber
28
28
NumericSeparatorNotAllowed
29
29
-
NumberEndAfterExponent
29
29
+
ExpectedExponent
30
30
+
InvalidPrivateIdentifier(identifier: String)
31
31
+
}
32
32
+
33
33
+
pub fn stringify_error(error: Error) -> String {
34
34
+
case error {
35
35
+
InvalidPrivateIdentifier(identifier) ->
36
36
+
"Invalid private identifier: `" <> identifier <> "`"
37
37
+
LetterAfterNumber ->
38
38
+
"Identifier characters cannot appear directly after numbers"
39
39
+
ExpectedExponent -> "Expected an exponent"
40
40
+
NumericSeparatorNotAllowed -> "Numeric separator is not allowed here"
41
41
+
UnknownCharacter(character) -> "Unexpected character: `" <> character <> "`"
42
42
+
UnterminatedComment -> "Unterminated comment"
43
43
+
UnterminatedRegularExpression -> "Unterminated regular expression literal"
44
44
+
UnterminatedString -> "Unterminated strint literal"
45
45
+
UnterminatedTemplate -> "Unterminated template literal"
46
46
+
}
30
47
}
31
48
32
49
pub fn new(source: String) -> Lexer {
···
261
278
262
279
"#" <> source -> {
263
280
let #(lexer, name) = lex_identifier(advance(lexer, source), "")
281
281
+
282
282
+
let lexer = case name {
283
283
+
""
284
284
+
| "0" <> _
285
285
+
| "1" <> _
286
286
+
| "2" <> _
287
287
+
| "3" <> _
288
288
+
| "4" <> _
289
289
+
| "5" <> _
290
290
+
| "6" <> _
291
291
+
| "7" <> _
292
292
+
| "8" <> _
293
293
+
| "9" <> _ -> error(lexer, InvalidPrivateIdentifier("#" <> name))
294
294
+
_ -> lexer
295
295
+
}
296
296
+
264
297
#(lexer, token.PrivateIdentifier(name))
265
298
}
266
299
···
487
520
)
488
521
489
522
_, _, AfterExponent -> #(
490
490
-
error(lexer, NumberEndAfterExponent),
523
523
+
error(lexer, ExpectedExponent),
491
524
token.Number(lexed),
492
525
)
493
526