packages feed

parsley-1.0.2.0: 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:             1.0.2.0
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.Defunctionalized,
                       Parsley.Selective,
                       Parsley.Register,
                       Parsley.Combinator,
                       Parsley.Fold,
                       Parsley.InputExtras,
                       Parsley.Precedence

  other-modules:       Parsley.Debug
                       Parsley.ParserOps

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

                       NoStarIsType

--                     ghc                  >= 8.6     && < 9.2,
  build-depends:       base                 >= 4.10    && < 4.16,
                       parsley-core         >= 1.8     && < 3,
                       template-haskell     >= 2.14    && < 3,
                       text                 >= 1.2.3   && < 1.3,
  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

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

common test-common
  build-depends:       base >=4.10 && <5,
                       parsley,
                       parsley-core,
                       parsley-garnish,
                       tasty,
                       template-haskell
  other-extensions:    TemplateHaskellQuotes, TemplateHaskell
  hs-source-dirs:      test
  default-language:    Haskell2010
  ghc-options:         -fplugin=Parsley.OverloadedQuotesPlugin
  other-modules:       TestUtils

test-suite parsley-test
  import:              test-common
  type:                exitcode-stdio-1.0
  build-depends:       tasty-hunit, tasty-quickcheck, th-test-utils, deepseq
  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.Alternative.Parsers, Parsley.Applicative.Parsers, Parsley.Combinator.Parsers, Parsley.Fold.Parsers,
                       Parsley.Precedence.Parsers, Parsley.Register.Parsers, Parsley.Selective.Parsers

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,
                       parsley-garnish,
                       criterion >=1.5 && <1.6,
                       deepseq,
                       template-haskell,
                       parsec,
                       attoparsec,
                       megaparsec,
                       text,
                       bytestring,
                       mtl,
                       array,
                       containers
  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
  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