Popularity
9.1
Stable
Activity
0.0
Stable
34
6
55
Monthly Downloads: 27
Programming language: Haskell
License: Apache License 2.0
Tags:
Language
Latest version: v0.2.0.3
clang-pure alternatives and similar packages
Based on the "Language" category.
Alternatively, view clang-pure alternatives based on common mentions on social networks and blogs.
-
ministg
Ministg is an interpreter for a high-level, small-step, operational semantics for the STG machine.
WorkOS - The modern identity platform for B2B SaaS
The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
Promo
workos.com
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of clang-pure or a related project?
README
Pure Haskell bindings to libclang
A Haskell library for pure C++ code analysis
API examples
Enumerate all function declarations in main.cpp
module Main (main) where
import Control.Monad
import Language.C.Clang
main :: IO ()
main = do
idx <- createIndex
tu <- parseTranslationUnit idx "main.cpp" ["-I/usr/local/include"]
let root = translationUnitCursor tu
children = cursorChildren root
functionDecls = filter (\c -> cursorKind c == FunctionDecl) children
forM_ functionDecls (print . cursorSpelling)
List all function declarations and their types, lens
-style
idx <- createIndex
tu <- parseTranslationUnit idx path clangArgs
let funDecs =
-- fold over cursors recursively
cursorDescendantsF
-- finding FunctionDecls...
. folding (matchKind @'FunctionDecl)
-- ...that are actually in the given file
. filtered (isFromMainFile . rangeStart . cursorExtent)
-- and get their names and types
. to (\funDec -> cursorSpelling funDec <> " :: " <> typeSpelling (cursorType funDec))
BS.putStrLn $ BS.unlines (translationUnitCursor tu ^.. funDecs)
Development
[View development guide][building]