Merge pull request #4038 from msmorgan/feature/lexer-range
Text.Lexer: add character range lexer
commit7d731fba51e3aabf532829cb1c67ece410468cc2
authorJan de Muijnck-Hughes <jfdm@users.noreply.github.com>
dateSun 3 Sep 2017, 15:10 (9 years ago)
parentec294a16fec28c
libs/contrib/Text/Lexer.idr+6
@@ -169,6 +169,12 @@ takeToken lex str
169169 = do i <- scan lex 0 str -- i must be > 0 if successful
170170 pure (substr 0 i (getString str), strTail i str)
171171
172+||| Recognise a character range [`a`-`b`]. Also works in reverse!
173+export
174+range : (start : Char) -> (end : Char) -> Lexer
175+range start end = pred (\x => (x >= min start end)
176+ && (x <= max start end))
177+
172178||| Recognise a single digit 0-9
173179export
174180digit : Lexer