packages feed

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

module Language.OCaml.Parser.ConstrLongident
  ( constrLongidentP
  ) where

import Text.Megaparsec

import Language.OCaml.Definitions.Parsing.ParseTree
import Language.OCaml.Parser.ModLongident
import Language.OCaml.Parser.Tokens
import Language.OCaml.Parser.Utils.Types
import Language.OCaml.Parser.Utils.Utils

constrLongidentP :: Parser Longident
constrLongidentP = choice
  [ do
    i <- try $ do
      i <- modLongidentP
      dotT
      return i
    parens colonColonT
    return $ Ldot i "::"
  , modLongidentP
  , try $ lBracketT *> rBracketT *> (return $ Lident "[]")
  , try $ lParenT *> rParenT *> (return $ Lident "()")
  , try (lParenT *> colonColonT) *> rParenT *> (return $ Lident "::")
  , falseT *> (return $ Lident "false")
  , trueT *> (return $ Lident "true")
  ]