aboutsummaryrefslogtreecommitdiff
path: root/src/lexer/mod.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2017-12-30 13:30:37 +0000
committerAleksey Kladov <[email protected]>2017-12-30 13:30:44 +0000
commitfad3e50987311a3c42a45bd3d9dbcf7c7a77e544 (patch)
treeb5f1d262e5ecb1226dc73780db50ee3eebe66ff8 /src/lexer/mod.rs
parent3e91e8b77db443775eea2ccd40b0cf1e27dc77d8 (diff)
Lexer: symbols
Diffstat (limited to 'src/lexer/mod.rs')
-rw-r--r--src/lexer/mod.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/lexer/mod.rs b/src/lexer/mod.rs
index e60dbbe8e..d2d4aaa22 100644
--- a/src/lexer/mod.rs
+++ b/src/lexer/mod.rs
@@ -37,6 +37,47 @@ fn next_token_inner(c: char, ptr: &mut Ptr) -> SyntaxKind {
37 return scan_number(c, ptr); 37 return scan_number(c, ptr);
38 } 38 }
39 39
40 // One-byte tokens.
41 match c {
42 ';' => return SEMI,
43 ',' => return COMMA,
44 '(' => return L_PAREN,
45 ')' => return R_PAREN,
46 '{' => return L_CURLY,
47 '}' => return R_CURLY,
48 '[' => return L_BRACK,
49 ']' => return R_BRACK,
50 '@' => return AT,
51 '#' => return POUND,
52 '~' => return TILDE,
53 '?' => return QUESTION,
54 '$' => return DOLLAR,
55 '.' => return match (ptr.next(), ptr.nnext()) {
56 (Some('.'), Some('.')) => {
57 ptr.bump();
58 ptr.bump();
59 DOTDOTDOT
60 },
61 (Some('.'), Some('=')) => {
62 ptr.bump();
63 ptr.bump();
64 DOTDOTEQ
65 },
66 (Some('.'), _) => {
67 ptr.bump();
68 DOTDOT
69 },
70 _ => DOT
71 },
72 ':' => return match ptr.next() {
73 Some(':') => {
74 ptr.bump();
75 COLONCOLON
76 }
77 _ => COLON
78 },
79 _ => (),
80 }
40 ERROR 81 ERROR
41} 82}
42 83