{"id":27953791,"url":"https://github.com/binaryanalysisplatform/frontc","last_synced_at":"2025-05-07T17:14:54.775Z","repository":{"id":47233160,"uuid":"158270594","full_name":"BinaryAnalysisPlatform/FrontC","owner":"BinaryAnalysisPlatform","description":"An OCaml library providing a C parser and lexer","archived":false,"fork":false,"pushed_at":"2024-11-08T14:33:06.000Z","size":203,"stargazers_count":42,"open_issues_count":6,"forks_count":14,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-05-07T17:14:48.931Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BinaryAnalysisPlatform.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-19T18:15:49.000Z","updated_at":"2025-04-10T19:28:13.000Z","dependencies_parsed_at":"2023-01-21T22:00:17.106Z","dependency_job_id":null,"html_url":"https://github.com/BinaryAnalysisPlatform/FrontC","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BinaryAnalysisPlatform%2FFrontC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BinaryAnalysisPlatform%2FFrontC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BinaryAnalysisPlatform%2FFrontC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BinaryAnalysisPlatform%2FFrontC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BinaryAnalysisPlatform","download_url":"https://codeload.github.com/BinaryAnalysisPlatform/FrontC/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252922320,"owners_count":21825639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-07T17:14:54.022Z","updated_at":"2025-05-07T17:14:54.761Z","avatar_url":"https://github.com/BinaryAnalysisPlatform.png","language":"OCaml","funding_links":[],"categories":[],"sub_categories":[],"readme":"FrontC v4.0\n----------\n\nFrontC 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:\n   - compilation,\n   - source pre-processing,\n   - source beautification,\n   - source analysis,\n   - and so on.\n\nIt 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).\n\nctoxml\n======\n\nThe `ctoxml` package provides a `ctoxml` binary that translates a C binary into its XML representation. \n\ncalipso\n=======\n\nThe `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`\n\nFrontC v3.0 (stable)\n-----------\n\nThe [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.\n\n\n\nBuilding and Installing\n-----------------------\n\nThe easiest option is to install using [opam][2], e.g.,\n\n```\nopam install FrontC # or calipso, or ctoxml\n```\n\nThe 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.,\n\n```\nopam pin FrontC --dev-repo\n```\n\nYou can also just clone this repo and do\n```\nmake \u0026\u0026 make install # translates to `dune build \u0026\u0026 dune install`\n```\n\nIf you change anything do not forget to run tests with `make test`.\n\n\nDocumentation\n-------------\n\nYou can easily get the documentation using odig,\n\n```\nodig doc FrontC\n```\n\n\n\n[1]: https://github.com/BinaryAnalysisPlatform/FrontC/tree/stable\n[2]: https://opam.ocaml.org\n[3]: https://opam.ocaml.org/packages/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinaryanalysisplatform%2Ffrontc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbinaryanalysisplatform%2Ffrontc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinaryanalysisplatform%2Ffrontc/lists"}