https://github.com/binaryanalysisplatform/frontc
An OCaml library providing a C parser and lexer
https://github.com/binaryanalysisplatform/frontc
Last synced: about 1 year ago
JSON representation
An OCaml library providing a C parser and lexer
- Host: GitHub
- URL: https://github.com/binaryanalysisplatform/frontc
- Owner: BinaryAnalysisPlatform
- License: lgpl-2.1
- Created: 2018-11-19T18:15:49.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-11-08T14:33:06.000Z (over 1 year ago)
- Last Synced: 2025-05-07T17:14:48.931Z (about 1 year ago)
- Language: OCaml
- Homepage:
- Size: 198 KB
- Stars: 42
- Watchers: 9
- Forks: 14
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
FrontC v4.0
----------
FrontC is C language front-end. It provides the program in "C Abstract Form", a tree representation of the original C source. It may be used for many source works including:
- compilation,
- source pre-processing,
- source beautification,
- source analysis,
- and so on.
It provides also an XML back-end making easier to transform the C program using XML tools like XSLT (it was my first goal when I perform this task).
ctoxml
======
The `ctoxml` package provides a `ctoxml` binary that translates a C binary into its XML representation.
calipso
=======
The `calipso` package provides a program analysis tool that removes non-structural control-flow from C programs. See https://dblp.org/rec/journals/tsi/CasseFRS02 for more details. The tool provides two binaries, `calipso` and `calipso_stat`
FrontC v3.0 (stable)
-----------
The [stable][1] branch supports only ANSI C (C89) with partial support for some GNU extensions. This branch is using ocamlyacc as a parser generator and doesn't accept new features, only occasional bug fixes.
Building and Installing
-----------------------
The easiest option is to install using [opam][2], e.g.,
```
opam install FrontC # or calipso, or ctoxml
```
The command above will install the latest version of the package from the ocaml.org [opam-repositor][3]. To get the current development (not yet released to ocaml.org) version of a package, you can use the `opam pin command`, e.g.,
```
opam pin FrontC --dev-repo
```
You can also just clone this repo and do
```
make && make install # translates to `dune build && dune install`
```
If you change anything do not forget to run tests with `make test`.
Documentation
-------------
You can easily get the documentation using odig,
```
odig doc FrontC
```
[1]: https://github.com/BinaryAnalysisPlatform/FrontC/tree/stable
[2]: https://opam.ocaml.org
[3]: https://opam.ocaml.org/packages/