packages feed

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

module Language.OCaml.Parser.PatternNoExn
  ( patternNoExnP
  ) where

import Text.Megaparsec

import Language.OCaml.Definitions.Parsing.ParseTree
import Language.OCaml.Parser.Common
import Language.OCaml.Parser.Pattern
import Language.OCaml.Parser.PatternGen
import Language.OCaml.Parser.Tokens
import Language.OCaml.Parser.ValIdent
import Language.OCaml.Parser.Utils.Combinators
import Language.OCaml.Parser.Utils.Types

patternNoExnP :: Parser Pattern
patternNoExnP = leftRecursive
  [ patternGenP patternP
  ]
  [ do
    try asT
    i <- valIdentP
    return $ \ x -> mkpat $ PpatAlias x (mkRHS i 3)
  -- TODO: patternNoExnCommaList
  -- , do
  --   try colonColonT
  --   p <- patternP
  --   return $ mkpatCons _ _
  , do
    try barT
    p <- patternP
    return $ \ x -> mkpat $ PpatOr x p
  -- TODO: attribute
  ]