`lexbase` is totally the case! In the challenge it is also suggested to use one variant as a "raw" version and one with a lexing support from the language. I also wrote a version which reads one character at a time and it became very dirty very fast as well as it was hard to debug it, so the 2nd, current version is with `re` :)
Actually it's overwhelming how much support Nim has for parsing grammar, there's `lexbase`, `re`, `pegs`, `strscans`.
