Разбор C для Ocaml - PullRequest
       49

Разбор C для Ocaml

7 голосов
/ 04 марта 2011

Я хотел бы получить Абстрактное синтаксическое дерево (AST) из кода C в значение OCaml, чтобы я мог в дальнейшем обрабатывать проанализированный код с помощью простой программы OCaml.

Я имел в видуиспользовать GCC, получить AST (в GIMPLE) с помощью ловушки и преобразовать код GIMPLE в Ocaml.

Но мне интересно, есть ли другой способ, или кто-то уже сделал что-то подобное.(На самом деле я мало что нашел по этому поводу ...)

Я не хочу прибегать к использованию CIL.Это анализатор OCaml для кода C, но он не содержит всех оптимизаций, которые имеет GCC.(Мне особенно нужен более глубокий анализ псевдонимов, чем тот, который реализован в CIL).

Может ли LLVM быть хорошей идеей для изучения?Возможно уже сделано?

Есть идея получше?

Ответы [ 2 ]

9 голосов
/ 04 марта 2011

Если вашей проблемой с CIL является точность предоставленного анализа псевдонимов, взгляните на Frama-C .Он основан на CIL, но обеспечивает точный анализ значений , который работает для указателей.Анализ стоимости делает его результаты доступными внутри модульной архитектуры.

0 голосов
/ 02 февраля 2018

Другой вариант для разбора C на Ocaml: FrontC .Его описание гласит:

FrontC - это библиотека OCAML, предоставляющая синтаксический анализатор и лексер.В результате получается синтаксическое дерево, легко обрабатываемое с помощью обычного управления деревом OCAML.

Обеспечивает поддержку синтаксиса ANSI C, синтаксиса в стиле old-C K & R и стандартных атрибутов GNU CC.

Предоставляеттакже симпатичный принтер C в качестве примера использования.

...