language-c: Analysis and generation of C code

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

Language C is a haskell library for the analysis and generation of C code. It features a complete, well tested parser and pretty printer for all of C99 and a large set of C11 and clang/GNU extensions.


[Skip to Readme]

Properties

Versions 0.3.0, 0.3.1, 0.3.1.1, 0.3.2, 0.3.2.1, 0.4.1, 0.4.2, 0.4.3, 0.4.4, 0.4.5, 0.4.6, 0.4.7, 0.5.0, 0.6, 0.6.1, 0.7.0, 0.7.1, 0.7.2, 0.8, 0.8.1, 0.8.2, 0.8.3, 0.9, 0.9, 0.9.0.1, 0.9.0.2, 0.9.1, 0.9.2, 0.9.3
Change log ChangeLog
Dependencies array, base (>=4.7 && <5), bytestring (>=0.9.0), containers (>=0.3), deepseq (>=1.4.0.0 && <1.5), directory, filepath, ghc-prim (>=0.2 && <0.3), mtl, pretty (<1.2.0), process, syb [details]
License BSD-3-Clause
Copyright LICENSE
Author AUTHORS
Maintainer benedikt.huber@gmail.com
Category Language
Home page http://visq.github.io/language-c/
Bug tracker https://github.com/visq/language-c/issues/
Source repo head: git clone https://github.com/visq/language-c.git
Uploaded by jophish at 2020-09-04T14:17:01Z

Modules

[Index] [Quick Jump]

Flags

Automatic Flags
NameDescriptionDefault
usebytestrings

Use ByteString as InputStream datatype

Enabled
separatesyb

Data.Generics available in separate package.

Enabled
allwarnings

Turn on all warnings for building (development)

Disabled
iecfpextension

Support IEC 60559 floating point extension (defines _Float128)

Enabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for language-c-0.9

[back to package description]
= Language.C =

Language.C is a parser and pretty-printer framework for C11 and the extensions of gcc.

See http://visq.github.io/language-c/

== Build and Install ==

cabal install

-- or --

runhaskell Setup.hs configure FLAGS
runhaskell Setup.hs build
runhaskell Setup.hs install

Provide the set of flags passing
 --flags="<flags-seperated-by-space>"
to configure.

== Compatibility ==

Tested with GHC 8.0, 8.2, 8.4, 8.6, 8.8 and 8.10

It is recommended to use the most recent platform release: http://hackage.haskell.org/platform/.

== C Language Compatibility ==

Currently unsupported C11 constructs:
 - static assertion 6.7.10 (_Static_assert)
 - generic selection 6.5.1.1 (_Generic)
 - _Atomic, _Alignas, _Thread_local
 - Universal character names

Currently unsupported GNU C extensions:
 - __auto_type
 - __builtin_offsetof
   char a[__builtin_offsetof (struct S, sa->f)
 - _Decimal32
 - Extended assembler
   __asm__ __volatile__ ("" : : : );
   __asm__ goto ("" : : : : label);
 - __attribute__((packed)): types featuring this attribute may have an
   incorrect size or alignment calculated.

IEC 60559:
  Since language-c-0.8, extended floating point types are supported (gcc 7 feature). Package maintainers may decide to disable these types (flag iecFpExtension) to work around the fact that the _Float128 type is redefined by glibc >= 2.26 if gcc < 7 is used for preprocessing:
  /* The type _Float128 exists only since GCC 7.0.  */
  # if !__GNUC_PREREQ (7, 0) || defined __cplusplus
  typedef __float128 _Float128;
  # endif

== Sources ==

see src/README

== Examples ==

A couple of small examples are available in /examples

== Testing ==

A couple of regression tests can be run via
> cd test/harness; make

For more tests, see test/README.