diff options
author | Aleksey Kladov <[email protected]> | 2017-12-30 13:30:37 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2017-12-30 13:30:44 +0000 |
commit | fad3e50987311a3c42a45bd3d9dbcf7c7a77e544 (patch) | |
tree | b5f1d262e5ecb1226dc73780db50ee3eebe66ff8 /src/lexer/mod.rs | |
parent | 3e91e8b77db443775eea2ccd40b0cf1e27dc77d8 (diff) |
Lexer: symbols
Diffstat (limited to 'src/lexer/mod.rs')
-rw-r--r-- | src/lexer/mod.rs | 41 |
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 | ||