packages feed

symantic-parser-0.0.0.20210101: symantic-parser.cabal

cabal-version: 2.2
name: symantic-parser
version: 0.0.0.20210101
synopsis: Parser combinators statically optimized and staged via typed meta-programming
description:
  This is a work-in-progress experimental library to generate parsers,
  leveraging Tagless-Final interpreters and Typed Template Haskell staging.
  .
  This is an alternative but less powerful/reviewed
  implementation of [ParsleyHaskell](https://github.com/J-mie6/ParsleyHaskell).
  See the paper by Jamie Willis, Nicolas Wu, and Matthew
  Pickering, admirably well presented at ICFP-2020: [Staged
  Selective Parser
  Combinators](https://icfp20.sigplan.org/details/icfp-2020-papers/20/Staged-Selective-Parser-Combinators).
license: GPL-3.0-or-later
author:      Julien Moutinho <julm+symantic-parser@sourcephile.fr>
maintainer:  Julien Moutinho <julm+symantic-parser@sourcephile.fr>
bug-reports: Julien Moutinho <julm+symantic-parser@sourcephile.fr>
copyright:   Julien Moutinho <julm+symantic-parser@sourcephile.fr>
stability: experimental
category: Parsing
extra-doc-files:
  ChangeLog.md
  ReadMe.md
  ToDo.md
extra-source-files:
  .envrc
  Makefile
  cabal.project
  default.nix
  flake.nix
  shell.nix
extra-tmp-files:
build-type: Simple
tested-with: GHC==9.0.0

source-repository head
  type: git
  location: git://git.sourcephile.fr/haskell/symantic-parser

flag dump-core
  description: Dump GHC's Core in HTML
  manual: True
  default: False

flag dump-splices
  description: Dump code generated by Template Haskell
  manual: True
  default: False

common boilerplate
  default-language: Haskell2010
  default-extensions:
    BangPatterns,
    DataKinds,
    FlexibleContexts,
    FlexibleInstances,
    GADTs,
    GeneralizedNewtypeDeriving,
    LambdaCase,
    MultiParamTypeClasses,
    NamedFieldPuns,
    NoImplicitPrelude,
    RankNTypes,
    RecordWildCards,
    ScopedTypeVariables,
    TypeApplications,
    TypeFamilies,
    TypeOperators
  ghc-options:
    -Wall
    -Wincomplete-uni-patterns
    -Wincomplete-record-updates
    -fhide-source-paths
    -freverse-errors

library
  import: boilerplate
  hs-source-dirs: src
  exposed-modules:
    Symantic.Univariant.Letable
    Symantic.Univariant.Trans
    Symantic.Parser
    Symantic.Parser.Grammar
    Symantic.Parser.Grammar.Combinators
    Symantic.Parser.Grammar.Dump
    Symantic.Parser.Grammar.Fixity
    Symantic.Parser.Grammar.ObserveSharing
    Symantic.Parser.Grammar.Optimize
    Symantic.Parser.Grammar.Write
    Symantic.Parser.Haskell
    Symantic.Parser.Machine
    Symantic.Parser.Machine.Dump
    Symantic.Parser.Machine.Generate
    Symantic.Parser.Machine.Input
    Symantic.Parser.Machine.Instructions
  build-depends:
    base >=4.10 && <5,
    array,
    bytestring,
    containers,
    ghc-prim,
    hashable,
    template-haskell >= 2.16,
    text,
    transformers,
    unordered-containers

test-suite symantic-parser-test
  import: boilerplate
  type: exitcode-stdio-1.0
  hs-source-dirs: test
  main-is: Main.hs
  other-modules:
    Golden
    Golden.Grammar
    -- Golden.Utils
    -- Golden.Parsers
    -- HUnit
    -- QuickCheck
  default-extensions:
    ViewPatterns
  ghc-options:
  build-depends:
    symantic-parser,
    base >= 4.10 && < 5,
    bytestring >= 0.10,
    containers >= 0.5,
    deepseq >= 1.4,
    directory >= 1.3,
    filepath >= 1.4,
    hashable >= 1.2.6,
    process >= 1.6,
    strict >= 0.4,
    tasty >= 0.11,
    tasty-golden >= 2.3,
    -- tasty-hunit,
    template-haskell >= 2.16,
    -- temporary >= 1.3,
    text >= 1.2,
    -- time >= 1.9,
    transformers >= 0.4,
    -- QuickCheck >= 2.0,
    -- tasty-quickcheck,
    unix >= 2.7,
    unordered-containers
  if flag(dump-core)
    build-depends: dump-core
    ghc-options: -fplugin=DumpCore
  if flag(dump-splices)
    ghc-options:
      -ddump-splices
      -ddump-to-file