c-expr-dsl: DSL for the language support by c-expr-runtime

[ bsd3, library, system ] [ Propose Tags ] [ Report a vulnerability ]

This library provides the front end for the c-expr DSL: a Parsec-based parser that turns libclang macro tokens into a syntax tree, and a typechecker that assigns types to macro expressions according to the rules implemented in c-expr-runtime.


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0, 0.1.0.1
Change log CHANGELOG.md
Dependencies base (>=4.16 && <4.23), bytestring (>=0.10 && <0.13), c-expr-runtime (>=0.1.0.0 && <0.2), containers (>=0.6 && <0.9), debruijn (>=0.3.1 && <0.4), fin (>=0.3.2 && <0.4), indexed-traversable (>=0.1.4 && <0.2), libclang-bindings (>=0.1 && <0.2), mtl (>=2.2 && <2.4), parsec (>=3.1 && <3.2), scientific (>=0.3.7 && <0.4), some (>=1.0.6 && <1.1), text (>=1.2 && <2.2), vec (>=0.5 && <0.6) [details]
Tested with ghc ==9.2.8 || ==9.4.8 || ==9.6.7 || ==9.8.4 || ==9.10.3 || ==9.12.2 || ==9.14.1
License BSD-3-Clause
Author Well-Typed LLP
Maintainer info@well-typed.com
Uploaded by dschrempf at 2026-07-22T07:21:27Z
Category System
Source repo head: git clone https://github.com/well-typed/c-expr.git(c-expr-dsl)
this: git clone https://github.com/well-typed/c-expr.git(tag release-0.1.0.1)(c-expr-dsl)
Distributions
Downloads 0 total (0 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for c-expr-dsl-0.1.0.1

[back to package description]

c-expr-dsl

c-expr-dsl is a Haskell library providing a DSL for the C expression and type language implemented by c-expr-runtime: a Parsec-based parser turning LLVM/Clang libclang macro tokens into a syntax tree, and a bidirectional typechecker. It supports the hs-bindgen project but can be used independently.

c-expr-dsl requires an LLVM/Clang installation, as it parses macros via libclang; see libclang-bindings for setup details.

See the main README for more information, and the changelog for release notes.