packages feed

ptera-core-0.2.0.0: ptera-core.cabal

cabal-version:       3.0
build-type:          Custom

name:                ptera-core
version:             0.2.0.0
license:             Apache-2.0 OR MPL-2.0
license-file:        LICENSE
copyright:           (c) 2021 Mizunashi Mana
author:              Mizunashi Mana
maintainer:          contact@mizunashi.work

category:            Parsing
homepage:            https://github.com/mizunashi-mana/ptera
bug-reports:         https://github.com/mizunashi-mana/ptera/issues
synopsis:            A parser generator
description:
    Ptera is haskell libraries and toolchains for generating parser.

extra-source-files:
    README.md
    CHANGELOG.md

source-repository head
  type:     git
  location: https://github.com/mizunashi-mana/ptera.git

flag develop
    default:     False
    manual:      True
    description: Turn on some options for development

common general
    default-language:
        Haskell2010
    default-extensions:
        NoImplicitPrelude
        BangPatterns
        BinaryLiterals
        BlockArguments
        ConstraintKinds
        DataKinds
        DefaultSignatures
        DeriveFoldable
        DeriveFunctor
        DeriveGeneric
        DeriveLift
        DeriveTraversable
        DerivingVia
        DuplicateRecordFields
        EmptyCase
        FlexibleContexts
        FlexibleInstances
        FunctionalDependencies
        GADTs
        InstanceSigs
        LambdaCase
        MagicHash
        MultiParamTypeClasses
        MultiWayIf
        NamedFieldPuns
        NegativeLiterals
        NumericUnderscores
        OverloadedLabels
        PackageImports
        PatternSynonyms
        PolyKinds
        RankNTypes
        ScopedTypeVariables
        StandaloneDeriving
        Strict
        TypeApplications
        TypeFamilies
        TypeOperators
        UnboxedSums
        UnboxedTuples

    if flag(develop)
        ghc-options:
            -Wall
            -Wcompat
            -Wincomplete-uni-patterns
            -Wmonomorphism-restriction
            -Wpartial-fields

            -fprint-explicit-foralls
            -frefinement-level-hole-fits=1

            -dcore-lint

    build-depends:
        base                    >= 4.14.0 && < 5,

        -- project depends
        transformers            >= 0.5.0 && < 1,
        containers              >= 0.6.0 && < 0.7,
        enummapset              >= 0.7.1 && < 1,
        membership              >= 0.0.1 && < 0.1,
        unordered-containers    >= 0.2.0 && < 0.3,
        hashable                >= 1.1   && < 2,
        array                   >= 0.5.4 && < 0.6,

    autogen-modules:
        Paths_ptera_core
    other-modules:
        Paths_ptera_core

custom-setup
    setup-depends:
        base          >= 4.14.0 && < 5,
        Cabal         >= 3.6    && < 4,
        cabal-doctest >= 1.0.9  && < 2,

library
    import:
        general,
    hs-source-dirs:
        src
    exposed-modules:
        Language.Parser.Ptera.Prelude
        Language.Parser.Ptera.Data.Alignable
        Language.Parser.Ptera.Data.Alignable.Array
        Language.Parser.Ptera.Data.Alignable.Map
        Language.Parser.Ptera.Data.Alignable.Set
        Language.Parser.Ptera.Data.Symbolic.IntSet
        Language.Parser.Ptera.Data.Symbolic.IntMap
        Language.Parser.Ptera.Data.IntMap.GreaterRestriction
        Language.Parser.Ptera.Data.HFList

        Language.Parser.Ptera.Syntax.Grammar
        Language.Parser.Ptera.Machine.PEG
        Language.Parser.Ptera.Machine.PEG.Builder
        Language.Parser.Ptera.Machine.LAPEG
        Language.Parser.Ptera.Machine.LAPEG.Builder
        Language.Parser.Ptera.Machine.SRB
        Language.Parser.Ptera.Machine.SRB.Builder
        Language.Parser.Ptera.Pipeline.Grammar2PEG
        Language.Parser.Ptera.Pipeline.PEG2LAPEG
        Language.Parser.Ptera.Pipeline.LAPEG2SRB
    other-modules:
        Language.Parser.Ptera.Prelude.Core
        Language.Parser.Ptera.Prelude.Alias

test-suite doctest
    import:
        general,
    type:
        exitcode-stdio-1.0
    hs-source-dirs:
        test/doctest
    main-is:
        Doctest.hs
    build-depends:
        doctest,
        QuickCheck,
    autogen-modules:
        Build_doctests
    other-modules:
        Build_doctests

test-suite spec
    import:
        general,
    type:
        exitcode-stdio-1.0
    hs-source-dirs:
        test/spec
    main-is:
        HSpecDriver.hs
    ghc-options:
        -Wno-missing-home-modules
    build-tool-depends:
        hspec-discover:hspec-discover,
    build-depends:
        ptera-core,

        hspec,
        QuickCheck,