An Erlang lexer and syntax highlighter in Gleam

Fix parsing of characters and question marks

+5 -2
+3 -2
src/pearl.gleam
··· 153 153 "*" <> source -> #(advance(lexer, source), token.Star) 154 154 "/" <> source -> #(advance(lexer, source), token.Slash) 155 155 "?=" <> source -> #(advance(lexer, source), token.QuestionEqual) 156 + "?" <> source -> #(advance(lexer, source), token.Question) 156 157 "!" <> source -> #(advance(lexer, source), token.Bang) 157 158 "=" <> source -> #(advance(lexer, source), token.Equal) 158 159 ··· 250 251 } 251 252 _ -> 252 253 case string.pop_grapheme(lexer.source) { 253 - Ok(#(source, char)) -> #(advance(lexer, source), token.Character(char)) 254 + Ok(#(char, source)) -> #(advance(lexer, source), token.Character(char)) 254 255 Error(_) -> #(error(lexer, UnterminatedCharacter), token.Character("")) 255 256 } 256 257 } ··· 334 335 _ -> 335 336 case string.pop_grapheme(lexer.source) { 336 337 Error(_) -> #(error(lexer, UnterminatedEscapeSequence), "") 337 - Ok(#(source, char)) -> #(advance(lexer, source), char) 338 + Ok(#(char, source)) -> #(advance(lexer, source), char) 338 339 } 339 340 } 340 341 }
+2
src/pearl/token.gleam
··· 89 89 DoublePlus 90 90 DoubleMinus 91 91 QuestionEqual 92 + Question 92 93 Bang 93 94 Equal 94 95 ··· 196 197 DoublePlus -> "++" 197 198 DoubleMinus -> "--" 198 199 QuestionEqual -> "?=" 200 + Question -> "?" 199 201 Bang -> "!" 200 202 Equal -> "=" 201 203