@hackage language-c0.8

Analysis and generation of C code

  • Installation

  • Tested Compilers

  • Dependencies (10)

  • Dependents (2)

    @hackage/c2hs, @hackage/struct-inspector
  • Package Flags

      usebytestrings
       (on by default)

      Use ByteString as InputStream datatype

      separatesyb
       (on by default)

      Data.Generics available in separate package.

      allwarnings
       (off by default)

      Turn on all warnings for building (development)

      iecfpextension
       (on by default)

      Support IEC 60559 floating point extension (defines _Float128)

= 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="" to configure.

== Compatibility ==

Tested with GHC 7.8, 7.10, 8.0 and 8.2. 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);

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.