lib: tweak whitespace parsing for better parse errors
- expands the set of expected tokens when e.g. parsing the invalid posting `account $1 a` - whitespace can affect parse errors because of the longest match rule where errors that occur later take precedence over those that occur earlier
This commit is contained in:
parent
ed0106b209
commit
9674f2a8cc
@ -523,6 +523,7 @@ test_spaceandamountormissingp = do
|
|||||||
amountp :: JournalParser m Amount
|
amountp :: JournalParser m Amount
|
||||||
amountp = label "amount" $ do
|
amountp = label "amount" $ do
|
||||||
amount <- amountwithoutpricep
|
amount <- amountwithoutpricep
|
||||||
|
lift $ skipMany spacenonewline
|
||||||
price <- priceamountp
|
price <- priceamountp
|
||||||
pure $ amount { aprice = price }
|
pure $ amount { aprice = price }
|
||||||
|
|
||||||
@ -657,7 +658,7 @@ simplecommoditysymbolp = takeWhile1P Nothing (not . isNonsimpleCommodityChar)
|
|||||||
|
|
||||||
priceamountp :: JournalParser m Price
|
priceamountp :: JournalParser m Price
|
||||||
priceamountp = option NoPrice $ do
|
priceamountp = option NoPrice $ do
|
||||||
try $ lift (skipMany spacenonewline) *> char '@'
|
char '@'
|
||||||
priceConstructor <- char '@' *> pure TotalPrice <|> pure UnitPrice
|
priceConstructor <- char '@' *> pure TotalPrice <|> pure UnitPrice
|
||||||
|
|
||||||
lift (skipMany spacenonewline)
|
lift (skipMany spacenonewline)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user