| ... | ... | @@ -77,6 +77,12 @@ const Token = struct { |
| 77 | 77 | LParen, |
| 78 | 78 | RParen, |
| 79 | 79 | Semicolon, |
| 80 | Percent, |
| 81 | LBrace, |
| 82 | RBrace, |
| 83 | Period, |
| 84 | Minus, |
| 85 | Arrow, |
| 80 | 86 | }; |
| 81 | 87 | }; |
| 82 | 88 | |
| ... | ... | @@ -102,6 +108,7 @@ const Tokenizer = struct { |
| 102 | 108 | C, |
| 103 | 109 | StringLiteral, |
| 104 | 110 | StringLiteralBackslash, |
| 111 | Minus, |
| 105 | 112 | }; |
| 106 | 113 | |
| 107 | 114 | pub fn next(self: &Tokenizer) -> Token { |
| ... | ... | @@ -154,6 +161,29 @@ const Tokenizer = struct { |
| 154 | 161 | self.index += 1; |
| 155 | 162 | break; |
| 156 | 163 | }, |
| 164 | '%' => { |
| 165 | result.id = Token.Id { .Percent = {} }; |
| 166 | self.index += 1; |
| 167 | break; |
| 168 | }, |
| 169 | '{' => { |
| 170 | result.id = Token.Id { .LBrace = {} }; |
| 171 | self.index += 1; |
| 172 | break; |
| 173 | }, |
| 174 | '}' => { |
| 175 | result.id = Token.Id { .RBrace = {} }; |
| 176 | self.index += 1; |
| 177 | break; |
| 178 | }, |
| 179 | '.' => { |
| 180 | result.id = Token.Id { .Period = {} }; |
| 181 | self.index += 1; |
| 182 | break; |
| 183 | }, |
| 184 | '-' => { |
| 185 | state = State.Minus; |
| 186 | }, |
| 157 | 187 | else => { |
| 158 | 188 | result.id = Token.Id { .Invalid = {} }; |
| 159 | 189 | self.index += 1; |
| ... | ... | @@ -195,9 +225,24 @@ const Tokenizer = struct { |
| 195 | 225 | '\n' => break, // Look for this error later. |
| 196 | 226 | else => {}, |
| 197 | 227 | }, |
| 228 | |
| 198 | 229 | State.StringLiteralBackslash => switch (c) { |
| 199 | 230 | '\n' => break, // Look for this error later. |
| 200 | | else => {}, |
| 231 | else => { |
| 232 | state = State.StringLiteral; |
| 233 | }, |
| 234 | }, |
| 235 | |
| 236 | State.Minus => switch (c) { |
| 237 | '>' => { |
| 238 | result.id = Token.Id { .Arrow = {} }; |
| 239 | self.index += 1; |
| 240 | break; |
| 241 | }, |
| 242 | else => { |
| 243 | result.id = Token.Id { .Minus = {} }; |
| 244 | break; |
| 245 | }, |
| 201 | 246 | }, |
| 202 | 247 | } |
| 203 | 248 | } |