diff options
author | Aleksey Kladov <[email protected]> | 2017-12-31 12:29:09 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2017-12-31 12:29:09 +0000 |
commit | a071e09412d602d184a70b4b1fc0158fafd3e38e (patch) | |
tree | f857392d2f88233c14f11f8206647a23c81dafe3 /src | |
parent | d76d7d2a7426e34b0fb358029cbaa2d71f0118e8 (diff) |
Lexer: more symbols
Diffstat (limited to 'src')
-rw-r--r-- | src/lexer/mod.rs | 13 | ||||
-rw-r--r-- | src/syntax_kinds.rs | 20 |
2 files changed, 32 insertions, 1 deletions
diff --git a/src/lexer/mod.rs b/src/lexer/mod.rs index d66046ca1..be86416c4 100644 --- a/src/lexer/mod.rs +++ b/src/lexer/mod.rs | |||
@@ -59,6 +59,13 @@ fn next_token_inner(c: char, ptr: &mut Ptr) -> SyntaxKind { | |||
59 | '~' => return TILDE, | 59 | '~' => return TILDE, |
60 | '?' => return QUESTION, | 60 | '?' => return QUESTION, |
61 | '$' => return DOLLAR, | 61 | '$' => return DOLLAR, |
62 | '&' => return AMPERSAND, | ||
63 | '|' => return PIPE, | ||
64 | '+' => return PLUS, | ||
65 | '*' => return STAR, | ||
66 | '/' => return SLASH, | ||
67 | '^' => return CARET, | ||
68 | '%' => return PERCENT, | ||
62 | 69 | ||
63 | // Multi-byte tokens. | 70 | // Multi-byte tokens. |
64 | '.' => return match (ptr.next(), ptr.nnext()) { | 71 | '.' => return match (ptr.next(), ptr.nnext()) { |
@@ -103,6 +110,12 @@ fn next_token_inner(c: char, ptr: &mut Ptr) -> SyntaxKind { | |||
103 | } | 110 | } |
104 | _ => NOT, | 111 | _ => NOT, |
105 | }, | 112 | }, |
113 | '-' => return if ptr.next_is('>') { | ||
114 | ptr.bump(); | ||
115 | THIN_ARROW | ||
116 | } else { | ||
117 | MINUS | ||
118 | }, | ||
106 | 119 | ||
107 | // If the character is an ident start not followed by another single | 120 | // If the character is an ident start not followed by another single |
108 | // quote, then this is a lifetime name: | 121 | // quote, then this is a lifetime name: |
diff --git a/src/syntax_kinds.rs b/src/syntax_kinds.rs index 4a68acb31..83fabe403 100644 --- a/src/syntax_kinds.rs +++ b/src/syntax_kinds.rs | |||
@@ -40,8 +40,17 @@ pub const STRING: SyntaxKind = SyntaxKind(35); | |||
40 | pub const RAW_STRING: SyntaxKind = SyntaxKind(36); | 40 | pub const RAW_STRING: SyntaxKind = SyntaxKind(36); |
41 | pub const BYTE_STRING: SyntaxKind = SyntaxKind(37); | 41 | pub const BYTE_STRING: SyntaxKind = SyntaxKind(37); |
42 | pub const RAW_BYTE_STRING: SyntaxKind = SyntaxKind(38); | 42 | pub const RAW_BYTE_STRING: SyntaxKind = SyntaxKind(38); |
43 | pub const PLUS: SyntaxKind = SyntaxKind(39); | ||
44 | pub const MINUS: SyntaxKind = SyntaxKind(40); | ||
45 | pub const STAR: SyntaxKind = SyntaxKind(41); | ||
46 | pub const SLASH: SyntaxKind = SyntaxKind(42); | ||
47 | pub const CARET: SyntaxKind = SyntaxKind(43); | ||
48 | pub const PERCENT: SyntaxKind = SyntaxKind(44); | ||
49 | pub const AMPERSAND: SyntaxKind = SyntaxKind(45); | ||
50 | pub const PIPE: SyntaxKind = SyntaxKind(46); | ||
51 | pub const THIN_ARROW: SyntaxKind = SyntaxKind(47); | ||
43 | 52 | ||
44 | static INFOS: [SyntaxInfo; 39] = [ | 53 | static INFOS: [SyntaxInfo; 48] = [ |
45 | SyntaxInfo { name: "ERROR" }, | 54 | SyntaxInfo { name: "ERROR" }, |
46 | SyntaxInfo { name: "IDENT" }, | 55 | SyntaxInfo { name: "IDENT" }, |
47 | SyntaxInfo { name: "UNDERSCORE" }, | 56 | SyntaxInfo { name: "UNDERSCORE" }, |
@@ -81,6 +90,15 @@ static INFOS: [SyntaxInfo; 39] = [ | |||
81 | SyntaxInfo { name: "RAW_STRING" }, | 90 | SyntaxInfo { name: "RAW_STRING" }, |
82 | SyntaxInfo { name: "BYTE_STRING" }, | 91 | SyntaxInfo { name: "BYTE_STRING" }, |
83 | SyntaxInfo { name: "RAW_BYTE_STRING" }, | 92 | SyntaxInfo { name: "RAW_BYTE_STRING" }, |
93 | SyntaxInfo { name: "PLUS" }, | ||
94 | SyntaxInfo { name: "MINUS" }, | ||
95 | SyntaxInfo { name: "STAR" }, | ||
96 | SyntaxInfo { name: "SLASH" }, | ||
97 | SyntaxInfo { name: "CARET" }, | ||
98 | SyntaxInfo { name: "PERCENT" }, | ||
99 | SyntaxInfo { name: "AMPERSAND" }, | ||
100 | SyntaxInfo { name: "PIPE" }, | ||
101 | SyntaxInfo { name: "THIN_ARROW" }, | ||
84 | ]; | 102 | ]; |
85 | 103 | ||
86 | pub(crate) fn syntax_info(kind: SyntaxKind) -> &'static SyntaxInfo { | 104 | pub(crate) fn syntax_info(kind: SyntaxKind) -> &'static SyntaxInfo { |