Jikka-5.2.0.0: src/Jikka/Core/Parse.hs
{-# LANGUAGE FlexibleContexts #-}
module Jikka.Core.Parse
( run,
parseProgram,
parseExpr,
parseType,
parseRule,
)
where
import Data.Text (Text, unpack)
import Jikka.Common.Alpha
import Jikka.Common.Error
import Jikka.Core.Language.Expr
import qualified Jikka.Core.Parse.Alex as L
import qualified Jikka.Core.Parse.Happy as P
parseRule :: (MonadAlpha m, MonadError Error m) => String -> m (String, [(VarName, Type)], Expr, Expr)
parseRule input = do
tokens <- L.run input
P.runRule tokens
parseType :: (MonadAlpha m, MonadError Error m) => String -> m Type
parseType input = do
tokens <- L.run input
P.runType tokens
parseExpr :: (MonadAlpha m, MonadError Error m) => String -> m Expr
parseExpr input = do
tokens <- L.run input
P.runExpr tokens
parseProgram :: (MonadAlpha m, MonadError Error m) => String -> m Program
parseProgram input = do
tokens <- L.run input
P.runProgram tokens
run :: (MonadAlpha m, MonadError Error m) => FilePath -> Text -> m Program
run _ input = do
tokens <- L.run $ unpack input
P.runProgram tokens