makefile alternatives and similar packages
Based on the "Parsing" category.
Alternatively, view makefile alternatives based on common mentions on social networks and blogs.
-
trifecta
Parser combinators with highlighting, slicing, layout, literate comments, Clang-style diagnostics and the kitchen sink -
Earley
Parsing all context-free grammars using Earley's algorithm in Haskell. -
parser-combinators
Lightweight package providing commonly useful parser combinators -
replace-megaparsec
Stream editing with Haskell Megaparsec parsers -
descriptive
Self-describing consumers/parsers; forms, cmd-line args, JSON, etc. -
scanner
Fast non-backtracking incremental combinator parsing for bytestrings -
incremental-parser
Haskell parsing combinator liibrary that can be fed the input and emit the parsed output incrementally -
parsec-free
Parsec API encoded as a deeply-embedded DSL, for debugging and analysis -
data-stm32
ARM SVD and CubeMX XML parser and pretty printer for STM32 family -
hsemail
Haskell Parsec parsers for the syntax defined in RFC2821 and 2822 -
replace-attoparsec
Stream editing with Haskell Attoparsec parsers -
parsec-parsers
Orphan instances so you can use `parsers` with `parsec`. -
matrix-market-attoparsec
Attoparsec parsers for the NIST Matrix Market format -
record-syntax
A library for parsing and processing the Haskell syntax sprinkled with anonymous records -
attoparsec-parsec
An Attoparsec compatibility layer for Parsec -
attoparsec-expr
Port of parsec's expression parser to attoparsec. -
streaming-binary
Incremental serialization and deserialization of Haskell values. -
fuzzy-dates
Automatically detect and parse dates in many different formats -
antlrc
Haskell binding to the ANTLR parser generator C runtime library http://www.antlr.org/wiki/display/ANTLR3/ANTLR3+Code+Generation+-+C
Access the most powerful time series database as a service
Do you think we are missing an alternative of makefile or a related project?
README
Haskell Makefile Parser and Generator
Parse and generate Makefile
s. The project is available on hackage
(latest).
Example
Parsing
# Define compiler
CC:=gcc
# Define lazy compiler
LC=ghc
all: hello
hello: foo bar
$(CC) baz.o
Running parseMakefile :: IO (Either String Makefile)
(pretty-printed for
convenience):
Right
( Makefile
{ entries =
[ Assignment SimpleAssign "CC" "gcc"
, Assignment RecursiveAssign "LC" "ghc"
, Rule
(Target "all")
[Dependency "hello"]
[]
, Rule
(Target "hello")
[ Dependency "foo"
, Dependency "bar"
]
[Command "$(CC) baz.o"]
]
}
)
Generating
myMakefile :: Makefile
myMakefile =
Makefile
{ entries =
[ Assignment SimpleAssign "foo" "bar"
, Rule (Target "baz") [Dependency "qux"] [Command "rm -rf /"]
]
}
Running encodeMakefile :: Makefile -> Text
:
foo:=bar
baz: qux
rm -rf /
Release checklist
Make sure you're on (latest) master.
Bump the version in
makefile.cabal
:0.MAJOR.MINOR.PATCH
.
Given a version number MAJOR.MINOR.PATCH, increment the:
MAJOR version when you make incompatible API changes, MINOR version when you add functionality in a backwards-compatible manner, and PATCH version when you make backwards-compatible bug fixes.
- Commit the updated
makefile.cabal
file with commit nameRelease v1.MAJOR.MINOR.PATCH
, as well as the updated documentation. - Tag the commit with
git tag v1.MAJOR.MINOR.PATCH
. - Run
stack upload --pvp-bounds both .
to uploadmakefile
tohackage
. - Push with
git push --follow-tags
.