aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/lux/data/text/lexer.lux
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/source/lux/data/text/lexer.lux23
1 files changed, 12 insertions, 11 deletions
diff --git a/stdlib/source/lux/data/text/lexer.lux b/stdlib/source/lux/data/text/lexer.lux
index 9ecbb99c7..b5b0434e4 100644
--- a/stdlib/source/lux/data/text/lexer.lux
+++ b/stdlib/source/lux/data/text/lexer.lux
@@ -8,12 +8,13 @@
["." product]
["." maybe]
["." error (#+ Error)]
- [number ("nat/." Codec<Text,Nat>)]
+ [number
+ [nat ("nat/." decimal)]]
[collection
- ["." list ("list/." Fold<List>)]]]
+ ["." list ("list/." fold)]]]
[macro
["." code]]]
- ["." // ("text/." Monoid<Text>)])
+ ["." // ("text/." monoid)])
(type: #export Offset Nat)
@@ -55,7 +56,7 @@
(def: (with-slices lexer)
(-> (Lexer (List Slice)) (Lexer Slice))
- (do p.Monad<Parser>
+ (do p.monad
[offset ..offset
slices lexer]
(wrap (list/fold (function (_ [slice::basis slice::distance]
@@ -160,7 +161,7 @@
(def: #export (range bottom top)
{#.doc "Only lex characters within a range."}
(-> Nat Nat (Lexer Text))
- (do p.Monad<Parser>
+ (do p.monad
[char any
#let [char' (maybe.assume (//.nth 0 char))]
_ (p.assert ($_ text/compose "Character is not within range: " (//.from-code bottom) "-" (//.from-code top))
@@ -262,14 +263,14 @@
(def: #export (and left right)
(-> (Lexer Text) (Lexer Text) (Lexer Text))
- (do p.Monad<Parser>
+ (do p.monad
[=left left
=right right]
(wrap ($_ text/compose =left =right))))
(def: #export (and! left right)
(-> (Lexer Slice) (Lexer Slice) (Lexer Slice))
- (do p.Monad<Parser>
+ (do p.monad
[[left::basis left::distance] left
[right::basis right::distance] right]
(wrap [left::basis ("lux i64 +" left::distance right::distance)])))
@@ -278,7 +279,7 @@
[(def: #export (<name> lexer)
{#.doc (code.text ($_ text/compose "Lex " <doc-modifier> " characters as a single continuous text."))}
(-> (Lexer Text) (Lexer Text))
- (|> lexer <base> (:: p.Monad<Parser> map //.concat)))]
+ (|> lexer <base> (:: p.monad map //.concat)))]
[some p.some "some"]
[many p.many "many"]
@@ -298,7 +299,7 @@
[(def: #export (<name> amount lexer)
{#.doc (code.text ($_ text/compose "Lex " <doc-modifier> " N characters."))}
(-> Nat (Lexer Text) (Lexer Text))
- (|> lexer (<base> amount) (:: p.Monad<Parser> map //.concat)))]
+ (|> lexer (<base> amount) (:: p.monad map //.concat)))]
[exactly p.exactly "exactly"]
[at-most p.at-most "at most"]
@@ -319,7 +320,7 @@
(def: #export (between from to lexer)
{#.doc "Lex between N and M characters."}
(-> Nat Nat (Lexer Text) (Lexer Text))
- (|> lexer (p.between from to) (:: p.Monad<Parser> map //.concat)))
+ (|> lexer (p.between from to) (:: p.monad map //.concat)))
(def: #export (between! from to lexer)
{#.doc "Lex between N and M characters."}
@@ -345,7 +346,7 @@
(def: #export (slice lexer)
(-> (Lexer Slice) (Lexer Text))
- (do p.Monad<Parser>
+ (do p.monad
[[basis distance] lexer]
(function (_ (^@ input [offset tape]))
(case (//.clip basis ("lux i64 +" basis distance) tape)