core: nom and surround
This commit is contained in:
parent
3029432699
commit
59fba4584d
1 changed files with 35 additions and 0 deletions
|
@ -198,6 +198,7 @@ Lift a parser producing a `List` or `List1` of `Char` into a parser producing a
|
||||||
`String`
|
`String`
|
||||||
|
|
||||||
```idris
|
```idris
|
||||||
|
-- TODO: Rename these
|
||||||
export
|
export
|
||||||
parseString : Parser (List Char) -> Parser String
|
parseString : Parser (List Char) -> Parser String
|
||||||
parseString x = do
|
parseString x = do
|
||||||
|
@ -250,6 +251,40 @@ exactString str with (asList str)
|
||||||
pure input
|
pure input
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Wrap a parser in delimiter characters, discarding the value of the delimiters
|
||||||
|
|
||||||
|
```idris
|
||||||
|
export
|
||||||
|
delimited : (before, after : Char) -> Parser a -> Parser a
|
||||||
|
delimited before after x = do
|
||||||
|
starting_state <- save
|
||||||
|
_ <- parseExactChar before
|
||||||
|
val <- x
|
||||||
|
Just _ <- tryMaybe $ parseExactChar after
|
||||||
|
| _ => throw $
|
||||||
|
MkParseError starting_state "Unmatched delimiter \{show before}"
|
||||||
|
pure val
|
||||||
|
```
|
||||||
|
|
||||||
|
Consume any number of characters of the provided character class and discard the
|
||||||
|
result. Also a version for doing so on both sides of a provided parser
|
||||||
|
|
||||||
|
```idris
|
||||||
|
export
|
||||||
|
nom : Parser Char -> Parser ()
|
||||||
|
nom x = do
|
||||||
|
_ <- many x
|
||||||
|
pure ()
|
||||||
|
|
||||||
|
export
|
||||||
|
surround : (around : Parser Char) -> (item : Parser a) -> Parser a
|
||||||
|
surround around item = do
|
||||||
|
nom around
|
||||||
|
val <- item
|
||||||
|
nom around
|
||||||
|
pure val
|
||||||
|
```
|
||||||
|
|
||||||
### Composition of boolean functions
|
### Composition of boolean functions
|
||||||
|
|
||||||
```idris
|
```idris
|
||||||
|
|
Loading…
Add table
Reference in a new issue