[Haskell-cafe] parsing Haskell expressions
johannes.waldmann at htwk-leipzig.de
Fri Apr 24 13:54:40 UTC 2020
for a language that has (subset-of) Haskell expression syntax,
but different global declaration syntax, we are using parseExp
from haskell-src-exts. I have two question on this.
I am asking here because
says that it's no longer active.
(1) can we make parseExp self-delimiting? The type is
parseExp :: String -> ParseResult (Exp SrcSpanInfo)
but I'd want "maximum munch" and the part that was not eaten,
as in :: String -> ParseResult (.. , String)
I tried parseExp "x } foo bar"
ParseFailed (SrcLoc "<unknown>.hs" 1 3) "Unexpected }"
so I could extract the error location, and then re-parse that prefix.
That's feels a bit strange.
(2) perhaps we don't need (1) if we do the chunking
on the outside. E.g., we run a lexer and look for delimiters
(keywords of the host language that then are forbidden in
inner expressions). We want to use
lexTokenStream :: String -> ParseResult [Loc Token]
and then I'd want parseExp' :: [Token] -> ...
Else, we'd have to reconstruct the slice of the original input,
which again, feels a bit strange and (because) it duplicates work.
It is suggested to use
Would this help with the above? But then of course
(3) is there a transition strategy (e.g., wrapper modules)?
Thanks - J.W.
NB: this is the issue from the project's tracker:
More information about the Haskell-Cafe