language-ocaml-0.1.31: lib/Language/OCaml/Parser/ConstructorDeclarations.hs
module Language.OCaml.Parser.ConstructorDeclarations
( constructorDeclarationsP
) where
import Language.OCaml.Definitions.Parsing.ParseTree
import Language.OCaml.Parser.BarConstructorDeclaration
import Language.OCaml.Parser.ConstructorDeclaration
import Language.OCaml.Parser.Tokens
import Language.OCaml.Parser.Utils.Combinators
import Language.OCaml.Parser.Utils.Types
constructorDeclarationsP ::
Parser Structure -> Parser CoreType -> Parser [ConstructorDeclaration]
constructorDeclarationsP structureP coreTypeP = leftRecursive
[ (: []) <$> constructorDeclarationP'
, (: []) <$> barConstructorDeclarationP'
, barT *> return []
]
[ (:) <$> barConstructorDeclarationP'
]
where
constructorDeclarationP' = constructorDeclarationP structureP coreTypeP
barConstructorDeclarationP' = barConstructorDeclarationP structureP coreTypeP