This is an appendix to a series in implementing a functional language. The introduction is here. This is a literate Haskell file - you can download the source here. To load it into GHCi and play around, you can use the following command (you’ll need the source for the Core.Language
module as well):
stack --resolver lts-12.2 \
ghci --package megaparsec \
--package text \
2019-03-03-parsing-core.lhs \
2019-03-03-the-core-language.lhs
This module exports two functions: parser
and parseTest
. parser
is the parser for our language. We can pass it to functions like Text.Megaparsec.Parse
to parse input into a Core.CoreProgram
. parseTest
is a convenience function that will take a String
as input and produce a Core.CoreProgram
, throwing an error if the parse fails.