core: Properly restore state in delimited
This commit is contained in:
parent
93d4d876d9
commit
ef690db972
1 changed files with 7 additions and 3 deletions
|
@ -283,10 +283,14 @@ delimited before after x = do
|
||||||
pnote "Parsing delimited by \{show before} \{show after}"
|
pnote "Parsing delimited by \{show before} \{show after}"
|
||||||
starting_state <- save
|
starting_state <- save
|
||||||
_ <- parseExactChar before
|
_ <- parseExactChar before
|
||||||
val <- x
|
Right val <- tryEither x
|
||||||
|
| Left err => do
|
||||||
|
load starting_state
|
||||||
|
throw err
|
||||||
Just _ <- tryMaybe $ parseExactChar after
|
Just _ <- tryMaybe $ parseExactChar after
|
||||||
| _ => throw $
|
| _ => do
|
||||||
MkParseError starting_state "Unmatched delimiter \{show before}"
|
load starting_state
|
||||||
|
throw $ MkParseError starting_state "Unmatched delimiter \{show before}"
|
||||||
pure val
|
pure val
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue