language-ocaml-0.1.31: lib/Language/OCaml/Parser/RecordExpr.hs
module Language.OCaml.Parser.RecordExpr
( recordExprP
) where
import Text.Megaparsec
import Language.OCaml.Definitions.Parsing.ASTTypes
import Language.OCaml.Definitions.Parsing.ParseTree
import Language.OCaml.Parser.LblExprList
import Language.OCaml.Parser.Tokens
import Language.OCaml.Parser.Utils.Types
recordExprP ::
Parser Expression -> Parser Expression -> Parser (Maybe Expression, [(Loc Longident, Expression)])
recordExprP exprP simpleExprP = choice
[ do
e <- try $ do
e <- simpleExprP
withT
return e
l <- lblExprListP'
return (Just e, l)
, do
l <- lblExprListP'
return (Nothing, l)
]
where
lblExprListP' = lblExprListP exprP