symantic-parser-0.2.0.20210703: symantic-parser.cabal
cabal-version: 3.0
name: symantic-parser
version: 0.2.0.20210703
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: AGPL-3.0-or-later
author: Julien Moutinho <julm+symantic-parser@sourcephile.fr>
maintainer: Julien Moutinho <julm+symantic-parser@sourcephile.fr>
bug-reports: https://mails.sourcephile.fr/inbox/symantic-parser
copyright: Julien Moutinho <julm+symantic-parser@sourcephile.fr>
stability: experimental
category: Parsing
extra-doc-files:
ChangeLog.md
Hacking.md
ReadMe.md
ToDo.md
extra-source-files:
cabal.project
default.nix
.envrc
flake.lock
flake.nix
Makefile
parsers/Parsers/Brainfuck/inputs/*.bf
shell.nix
test/Golden/**/*.txt
extra-tmp-files:
build-type: Simple
tested-with: GHC==9.0.1
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 disable-ormolu-check
description: Remove ormolu from build-tool-depends.
Temporary hack while Nixpkgs' haskellPackages.ormolu remains broken.
manual: True
default: False
common boilerplate
default-language: Haskell2010
default-extensions:
NoImplicitPrelude
ghc-options:
-Wall
-Wincomplete-uni-patterns
-Wincomplete-record-updates
-Wpartial-fields
-fprint-potential-instances
library
import: boilerplate
hs-source-dirs: src
exposed-modules:
Language.Haskell.TH.HideName
Language.Haskell.TH.Show
Symantic.Parser
Symantic.Parser.Grammar
Symantic.Parser.Grammar.Combinators
Symantic.Parser.Grammar.ObserveSharing
Symantic.Parser.Grammar.Optimize
Symantic.Parser.Grammar.Production
Symantic.Parser.Grammar.View
Symantic.Parser.Grammar.Write
Symantic.Parser.Machine
Symantic.Parser.Machine.Generate
Symantic.Parser.Machine.Input
Symantic.Parser.Machine.Instructions
Symantic.Parser.Machine.Optimize
Symantic.Parser.Machine.Program
Symantic.Parser.Machine.View
default-extensions:
BangPatterns,
DataKinds,
FlexibleContexts,
FlexibleInstances,
GADTs,
GeneralizedNewtypeDeriving,
LambdaCase,
MultiParamTypeClasses,
NamedFieldPuns,
RankNTypes,
RecordWildCards,
ScopedTypeVariables,
TypeApplications,
TypeFamilies,
TypeOperators
build-depends:
base >=4.10 && <5,
array,
bytestring,
containers,
deepseq >= 1.4,
ghc-prim,
hashable,
-- For Language.Haskell.Ppr.Lib.pprExp
pretty >= 1.1,
symantic-base >= 0.1,
template-haskell >= 2.16,
text,
transformers,
unordered-containers
library parsers
-- visibility: public
import: boilerplate
hs-source-dirs: parsers
exposed-modules:
Parsers.Brainfuck.Attoparsec
Parsers.Brainfuck.Handrolled
Parsers.Brainfuck.SymanticParser
Parsers.Brainfuck.SymanticParser.Grammar
Parsers.Brainfuck.Types
Parsers.Nandlang
Parsers.Playground
Parsers.Utils
Parsers.Utils.Handrolled
Parsers.Utils.Attoparsec
Parsers.Utils.Attoparsec.Text
default-extensions:
BangPatterns,
DefaultSignatures,
FlexibleContexts,
FlexibleInstances,
GeneralizedNewtypeDeriving,
LambdaCase,
MultiParamTypeClasses,
ScopedTypeVariables,
TypeApplications,
TypeFamilies,
TypeOperators
build-depends:
symantic-parser,
attoparsec >= 0.13,
base >= 4.10 && < 5,
bytestring >= 0.10,
containers >= 0.5.10.1,
deepseq >= 1.4,
directory >= 1.3,
filepath >= 1.4,
ghc-prim,
hashable >= 1.2.6,
megaparsec >= 9.0,
process >= 1.6,
strict >= 0.4,
symantic-base >= 0.1,
tasty >= 0.11,
tasty-golden >= 2.3,
template-haskell >= 2.16,
text >= 1.2,
transformers >= 0.4,
unix >= 2.7,
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.Machine
Golden.Parser
Golden.Splice
Golden.Utils
Grammar
-- HUnit
-- QuickCheck
Paths_symantic_parser
autogen-modules:
Paths_symantic_parser
ghc-prof-options: -fexternal-interpreter
build-depends:
symantic-parser,
symantic-parser:parsers,
base >= 4.10 && < 5,
bytestring >= 0.10,
-- Needed for exported Data.Map.Internal
containers >= 0.5.10.1,
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,
-- th-lift-instances >= 0.1.17,
-- temporary >= 1.3,
text >= 1.2,
-- time >= 1.9,
transformers >= 0.4,
-- QuickCheck >= 2.0,
-- tasty-quickcheck,
unix >= 2.7,
unordered-containers
if !flag(disable-ormolu-check)
build-tool-depends:
ormolu:ormolu >= 1.5
if flag(dump-core)
build-depends: dump-core
ghc-options: -fplugin=DumpCore
benchmark symantic-parser-benchmark
import: boilerplate
type: exitcode-stdio-1.0
hs-source-dirs: benchmarks
main-is: Main.hs
default-language: Haskell2010
other-modules:
Brainfuck
Paths_symantic_parser
autogen-modules:
Paths_symantic_parser
default-extensions:
ghc-options: -fno-enable-th-splice-warnings
ghc-prof-options: -fexternal-interpreter
build-depends:
base >= 4.6 && < 5,
symantic-parser,
symantic-parser:parsers,
attoparsec >= 0.13,
bytestring >= 0.10,
containers >= 0.5,
criterion >= 1.5,
deepseq >= 1.4,
megaparsec >= 9.0,
random >= 1.1,
text >= 1.2,
template-haskell >= 2.16,
transformers >= 0.5