packages feed

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

module Language.OCaml.Parser.PatternGen
  ( patternGenP
  ) where

import Text.Megaparsec

import Language.OCaml.Definitions.Parsing.ParseTree
import Language.OCaml.Parser.Common
import Language.OCaml.Parser.ConstrLongident
import Language.OCaml.Parser.SimplePattern
import Language.OCaml.Parser.Utils.Types

patternGenP :: Parser Pattern -> Parser Pattern
patternGenP patternP = choice
  [ try $ do
    i <- constrLongidentP
    p <- patternP
    return $ mkpat $ PpatConstruct (mkRHS i 1) (Just p)
  , try $ simplePatternP'
  ]
  where
    simplePatternP' = simplePatternP patternP