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