-
Notifications
You must be signed in to change notification settings - Fork 4
/
gigaparsec.cabal
223 lines (184 loc) · 8.85 KB
/
gigaparsec.cabal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
cabal-version: 3.0
-- The cabal-version field refers to the version of the .cabal specification,
-- and can be different from the cabal-install (the tool) version and the
-- Cabal (the library) version you are using. As such, the Cabal (the library)
-- version used must be equal or greater than the version stated in this field.
-- Starting from the specification version 2.2, the cabal-version field must be
-- the first thing in the cabal file.
-- Initial package description 'gigaparsec' generated by
-- 'cabal init'. For further documentation, see:
-- http://haskell.org/cabal/users-guide/
--
-- The name of the package.
name: gigaparsec
-- The package version.
-- See the Haskell package versioning policy (PVP) for standards
-- guiding when and how versions should be incremented.
-- https://pvp.haskell.org
-- PVP summary: +-+------- breaking API changes
-- | | +----- non-breaking API additions
-- | | | +--- code changes with no API change
version: 0.3.0.0
-- A short (one-line) description of the package.
synopsis:
Refreshed parsec-style library for compatibility with Scala parsley
-- A longer description of the package.
description:
This is a monadic parser combinator designed to be easy to use,
especially for beginners, and have API parity with the
@[parsley](https://github.com/j-mie6/parsley)@ library. It supports
design patterns introduced in /Design Patterns for Parser Combinators/.
-- URL for the project homepage or repository.
homepage: https://github.com/j-mie6/gigaparsec
-- The license under which the package is released.
license: BSD-3-Clause
-- The file containing the license text.
license-file: LICENSE
-- The package author(s).
author: Jamie Willis
-- An email address to which users can send suggestions, bug reports, and patches.
maintainer: j.willis19@imperial.ac.uk
-- A copyright notice.
copyright: (c) 2023-present Jamie Willis, Gigaparsec Maintainers
category: Text
build-type: Simple
-- Extra doc files to be distributed with the package, such as a CHANGELOG or a README.
-- Don't add README.md here, because it contains stuff specific to the repo itself
extra-doc-files: CHANGELOG.md
stability: alpha
-- Extra source files to be distributed with the package, such as examples, or a tutorial module.
-- extra-source-files:
common warnings
ghc-options: -Weverything -Wno-unsafe -Wno-implicit-prelude -Wno-missing-local-signatures -Wno-star-is-type
common extensions
-- Extensions we want enabled without having to specify them
default-extensions: ScopedTypeVariables, RankNTypes, BangPatterns, TypeApplications,
MultiWayIf, DerivingStrategies, InstanceSigs, StandaloneKindSignatures,
ImportQualifiedPost, RecordWildCards
common base
-- Other library packages from which modules are imported.
-- 4.14 is GHC 8.10 (the 2022 State of Haskell indicates 41% still use 8.10)
build-depends: base >=4.14 && < 5
source-repository head
type: git
location: git://github.com/j-mie6/gigaparsec.git
library
import: warnings, extensions, base
-- Modules exported by the library.
exposed-modules: Text.Gigaparsec,
Text.Gigaparsec.Char,
Text.Gigaparsec.Combinator,
Text.Gigaparsec.Combinator.NonEmpty,
Text.Gigaparsec.Debug,
Text.Gigaparsec.Errors.Combinator,
Text.Gigaparsec.Errors.DefaultErrorBuilder,
Text.Gigaparsec.Errors.ErrorBuilder,
Text.Gigaparsec.Errors.ErrorGen,
Text.Gigaparsec.Errors.Patterns,
Text.Gigaparsec.Errors.TokenExtractors,
Text.Gigaparsec.Expr,
Text.Gigaparsec.Expr.Chain,
Text.Gigaparsec.Expr.Infix,
Text.Gigaparsec.Expr.Subtype,
Text.Gigaparsec.Patterns,
Text.Gigaparsec.Position,
Text.Gigaparsec.State,
Text.Gigaparsec.Token.Descriptions,
Text.Gigaparsec.Token.Errors,
Text.Gigaparsec.Token.Lexer,
Text.Gigaparsec.Token.Patterns,
-- Internals
Text.Gigaparsec.Internal,
Text.Gigaparsec.Internal.Errors,
Text.Gigaparsec.Internal.Errors.CaretControl,
Text.Gigaparsec.Internal.Errors.DefuncBuilders,
Text.Gigaparsec.Internal.Errors.DefuncError,
Text.Gigaparsec.Internal.Errors.DefuncHints,
Text.Gigaparsec.Internal.Errors.DefuncTypes,
Text.Gigaparsec.Internal.Errors.ErrorItem,
Text.Gigaparsec.Internal.Errors.ParseError,
Text.Gigaparsec.Internal.Require,
Text.Gigaparsec.Internal.Token.BitBounds,
Text.Gigaparsec.Internal.Token.Errors,
Text.Gigaparsec.Internal.Token.Generic,
Text.Gigaparsec.Internal.Token.Lexer,
Text.Gigaparsec.Internal.Token.Names,
Text.Gigaparsec.Internal.Token.Numeric,
Text.Gigaparsec.Internal.Token.Symbol,
Text.Gigaparsec.Internal.Token.Text,
-- this can probably be loosened?
build-depends: containers >= 0.6 && < 0.7,
selective >= 0.6 && < 0.8,
pretty-terminal >= 0.1.0 && < 0.2,
template-haskell >= 2.16 && < 3,
rt >= 0.1 && < 0.2
-- Modules included in this library but not exported.
-- other-modules:
-- LANGUAGE extensions used by modules in this package.
-- other-extensions:
-- Directories containing source files.
hs-source-dirs: src
include-dirs: includes
install-includes: includes/portable-unlifted.h
-- Base language which the package is written in.
default-language: Haskell2010
test-suite gigaparsec-test
import: warnings, extensions, base
default-extensions: OverloadedStrings, TypeOperators, BlockArguments, GADTs
-- Base language which the package is written in.
default-language: Haskell2010
-- Modules included in this executable, other than Main.
other-modules: Text.Gigaparsec.GigaparsecTests,
Text.Gigaparsec.PrimitiveTests,
Text.Gigaparsec.CharTests,
Text.Gigaparsec.CombinatorTests,
Text.Gigaparsec.DebugTests,
Text.Gigaparsec.ExprTests,
Text.Gigaparsec.ErrorsTests,
Text.Gigaparsec.Expr.ChainTests,
Text.Gigaparsec.Expr.InfixTests,
Text.Gigaparsec.TokenTests,
Text.Gigaparsec.Token.NamesTests,
Text.Gigaparsec.Internal.Test,
Text.Gigaparsec.Internal.TestError,
Text.Gigaparsec.Internal.PlainString
ghc-options: -Wno-missing-export-lists -Wno-missing-safe-haskell-mode -Wno-safe
-Wno-missing-import-lists -Wno-all-missed-specialisations -Wno-type-defaults
-Wno-missing-kind-signatures -Wno-orphans -Wno-monomorphism-restriction
-- The interface type and version of the test suite.
type: exitcode-stdio-1.0
-- Directories containing source files.
hs-source-dirs: test
-- The entrypoint to the test suite.
main-is: Main.hs
-- Test dependencies.
build-depends:
gigaparsec,
containers >= 0.6 && < 0.7,
deepseq >= 1.4 && < 1.6,
bytestring >= 0.9 && < 0.13,
--deriving-compat >= 0.6 && < 0.7,
tasty >=1.1 && <1.6,
tasty-expected-failure >=0.11 && <0.13,
tasty-hunit >=0.9 && <0.11,
--TODO: property based testing will be useful when we optimise combinators
-- to test against their base implementations
--tasty-quickcheck
--TODO: performance testing with tasty-bench?
--tasty-bench
-- we'd need to keep the basefile files somewhere, cache in CI or keep in repo?
knob >=0.1.1 && <0.3,
rt >= 0.1 && < 0.2,
benchmark perf-test
import: warnings, extensions, base
type: exitcode-stdio-1.0
default-extensions: OverloadedStrings, TypeOperators, BlockArguments, GADTs
-- Base language which the package is written in.
default-language: Haskell2010
hs-source-dirs: benchmarks
build-depends:
gigaparsec,
--containers >= 0.6 && < 0.7,
gauge >= 0.1 && < 0.3,
deepseq >= 1.4 && < 1.6
main-is: Main.hs