packages feed

language-ocaml-0.1.31: lib/Language/OCaml/Parser/SeqExpr.hs

module Language.OCaml.Parser.SeqExpr
  ( seqExprP
  ) where

import Data.Default
import Text.Megaparsec

import Language.OCaml.Definitions.Parsing.ASTHelper.Exp as Exp hiding (try)
import Language.OCaml.Definitions.Parsing.ParseTree
import Language.OCaml.Parser.Expr
import Language.OCaml.Parser.Tokens
import Language.OCaml.Parser.Utils.Types

seqExprP :: Parser Structure -> Parser Expression
seqExprP structureP = choice
  [ try $ do
    e <- exprP'
    semiT
    s <- seqExprP'
    return $ Exp.mk def (PexpSequence e s)
  , try $ do
    e <- exprP'
    semiT
    return e
  , try $ exprP'
  -- TODO: percent
  ]
  where
    exprP' = exprP structureP seqExprP'
    seqExprP' = seqExprP structureP