packages feed

parsley-2.0.0.1: parsley.cabal

cabal-version:       2.2
name:                parsley
-- https://wiki.haskell.org/Package_versioning_policy
-- PVP summary:      +--------- breaking API changes
--                   | +------- breaking API changes
--                   | | +----- non-breaking API additions
--                   | | | +--- code changes with no API change
version:             2.0.0.1
synopsis:            A fast parser combinator library backed by Typed Template Haskell
description:         Parsley is a staged selective parser combinator library, which means
                     it does not support monadic operations, and relies on Typed Template
                     Haskell to generate very fast code. Currently there are no error messages
                     but there are plans for this in the works.
                     .
                     Based on the work found in [/Staged Selective Parser Combinators/
                     (Willis et al. 2020)](https://dl.acm.org/doi/10.1145/3409002)


homepage:            https://github.com/j-mie6/ParsleyHaskell/tree/master/parsley
bug-reports:         https://github.com/j-mie6/ParsleyHaskell/issues
license:             BSD-3-Clause
license-file:        LICENSE
author:              Jamie Willis, Parsley Contributors
maintainer:          Jamie Willis <j.willis19@imperial.ac.uk>
category:            Parsing
build-type:          Simple
extra-doc-files:     ChangeLog.md
                     README.md
tested-with:         GHC == 8.6.1,  GHC == 8.6.2,  GHC == 8.6.3,  GHC == 8.6.4,  GHC == 8.6.5,
                     GHC == 8.8.1,  GHC == 8.8.2,  GHC == 8.8.3,  GHC == 8.8.4,
                     GHC == 8.10.4, GHC == 8.10.5,
                     GHC == 9.0.1

library
  exposed-modules:     Parsley,
                       Parsley.Applicative,
                       Parsley.Alternative,
                       Parsley.Char,
                       Parsley.Combinator,
                       Parsley.Defunctionalized,
                       Parsley.Debug,
                       Parsley.Selective,
                       Parsley.Register,
                       Parsley.Fold,
                       --Parsley.Patterns,
                       Parsley.InputExtras,
                       Parsley.Precedence,
                       Parsley.ParserOps

  default-extensions:  BangPatterns,
                       DataKinds,
                       GADTs,
                       FlexibleContexts,
                       FlexibleInstances,
                       KindSignatures,
                       PolyKinds,
                       RankNTypes,
                       ScopedTypeVariables,
                       TemplateHaskell,
                       TypeOperators,

                       NoStarIsType

--                     ghc                  >= 8.6     && < 9.8,
  build-depends:       base                 >= 4.10    && < 4.19,
                       parsley-core         >= 2       && < 3,
                       template-haskell     >= 2.14    && < 3,
                       text                 >= 1.2.3   && < 2.1

  hs-source-dirs:      src/ghc
  default-language:    Haskell2010
  ghc-options:         -Wall -Weverything -Wcompat
                       -Wno-unticked-promoted-constructors
                       -Wno-name-shadowing
                       -Wno-unused-do-bind
                       -Wno-implicit-prelude
                       -Wno-missing-import-lists
                       -Wno-missing-local-signatures
                       -Wno-safe
                       -Wno-unsafe
                       -Wno-missed-specialisations
                       -Wno-all-missed-specialisations
                       -Wno-incomplete-uni-patterns
                       -freverse-errors
  if impl(ghc >= 8.10)
    ghc-options:       -Wno-missing-safe-haskell-mode
                       -Wno-prepositive-qualified-module
                       -Wno-unused-packages
  if impl(ghc >= 9.2)
    ghc-options:       -Wno-missing-kind-signatures
                       -Wno-implicit-lift

source-repository head
  type:                git
  location:            https://github.com/j-mie6/ParsleyHaskell

common test-common
  build-depends:       base >=4.10 && <5,
                       parsley,
                       parsley-core,
                       tasty,
                       template-haskell
  build-tool-depends:  cpphs:cpphs          >= 1.18.8  && < 1.21
  other-extensions:    TemplateHaskellQuotes, TemplateHaskell
  hs-source-dirs:      test
  default-language:    Haskell2010
  ghc-options:         -pgmP cpphs -optP --cpp
  other-modules:       TestUtils
  if false && impl(ghc < 9)
    build-depends:     dump-core
    ghc-options:       -fplugin=DumpCore

test-suite parsley-test
  import:              test-common
  type:                exitcode-stdio-1.0
  build-depends:       tasty-hunit, tasty-quickcheck, th-test-utils, deepseq, containers
  main-is:             Parsley/Tests.hs
  other-modules:       Parsley.Alternative.Test, Parsley.Applicative.Test, Parsley.Combinator.Test, Parsley.Fold.Test,
                       Parsley.Precedence.Test, Parsley.Register.Test, Parsley.Selective.Test, Parsley.Char.Test,
                       Parsley.Alternative.Parsers, Parsley.Applicative.Parsers, Parsley.Combinator.Parsers, Parsley.Fold.Parsers,
                       Parsley.Precedence.Parsers, Parsley.Register.Parsers, Parsley.Selective.Parsers, Parsley.Char.Parsers
                       --Parsley.Javascript.Parsers, Parsley.Javascript.Shared, Parsley.Javascript.Test

test-suite regression-test
  import:              test-common
  type:                exitcode-stdio-1.0
  build-depends:       tasty-hunit, tasty-quickcheck, th-test-utils, deepseq
  main-is:             Regression/Tests.hs
  other-modules:       Regression.Parsers

common benchmark-common
  build-tool-depends:  happy:happy
  build-depends:       base >=4.10 && <5,
                       parsley,
                       gauge,
                       deepseq,
                       template-haskell,
                       parsec,
                       attoparsec,
                       megaparsec,
                       text,
                       bytestring,
                       mtl,
                       array,
                       containers
  build-tool-depends:  cpphs:cpphs          >= 1.18.8  && < 1.21
  hs-source-dirs:      benchmarks
  other-extensions:    TemplateHaskellQuotes, TemplateHaskell
  other-modules:       Shared.BenchmarkUtils, Shared.Attoparsec.Extended, Shared.Megaparsec.Extended, Shared.Parsec.Extended
  default-language:    Haskell2010
  ghc-options:         -rtsopts -pgmP cpphs -optP --cpp -ddump-splices -ddump-to-file
  if false && impl(ghc < 9)
    build-depends:     dump-core
    ghc-options:       -fplugin=DumpCore

--benchmark brainfuck-bench
--  import:              benchmark-common
--  type:                exitcode-stdio-1.0
--  other-modules:       BrainfuckBench.Shared, BrainfuckBench.Parsley.Parser, BrainfuckBench.Parsec.Parser, BrainfuckBench.Megaparsec.Parser,
--                       BrainfuckBench.Attoparsec.Parser, BrainfuckBench.Handrolled.Parser, BrainfuckBench.Happy.Parser
--  main-is:             BrainfuckBench/Main.hs

--benchmark javascript-bench
--  import:              benchmark-common
--  type:                exitcode-stdio-1.0
--  other-modules:       JavascriptBench.Shared, JavascriptBench.Parsley.Parser, JavascriptBench.Parsec.Parser, JavascriptBench.Megaparsec.Parser,
--                       JavascriptBench.Attoparsec.Parser, JavascriptBench.Happy.Parser
--  main-is:             JavascriptBench/Main.hs

--benchmark nandlang-bench
--  import:              benchmark-common
--  type:                exitcode-stdio-1.0
  --cc-options:          -O3
--  other-modules:       NandlangBench.Parsley.Parser, NandlangBench.Parsley.Functions, NandlangBench.Bison.Parser
--  c-sources:           benchmarks/NandlangBench/Bison/lex.yy.c, benchmarks/NandlangBench/Bison/Nandlang.tab.c
--  main-is:             NandlangBench/Main.hs