antlr C грамматика для создания AST - PullRequest
5 голосов
/ 14 апреля 2011

Есть ли какая-либо грамматика C, которая генерирует AST, которая включает в себя все правила синтаксического анализатора, использующие "^" и "!" нотации?

Я прошел книгу, написанную Теренсом Парром, чтобы написать такую ​​грамматику, но кажется, что написание одной такой грамматики для C lang - это трудоемкий процесс, поэтому мне было интересно, если она уже доступна, что может сэкономить много время!

(грамматика для меньшего подмножества языка Си также подойдет ..)

Спасибо:)

Ответы [ 2 ]

2 голосов
/ 28 января 2015

См. это . Это прямо из репозитория ANTLR 4: грамматика C11. Это выглядит довольно послушным.

Конечно, он не поставляется с препроцессором, но сначала достаточно просто передать cpp или mcpp файл.

Он также не поставляется с правилами AST, но не выглядит слишком трудным для выполнения (хотя и трудоемким).

1 голос
/ 28 апреля 2011

Нет ответов через две недели.

Вы правы, создавая полный анализатор, который создает полные AST и обрабатывает все детали C (включая препроцессор) охват различных диалектов языка С (например, ANSI, GNU C 2/3/4 /, Miscrosoft Visual C, Green Hills C) ... на самом деле много работы. И если вы не инвестируете эту работу, она не будет обрабатывать настоящие программы на Си.

Я ожидаю, что будет полная грамматика ANTLR для C, которая сделала это, учитывая, сколько лет ANTLR. Удивительно, что никто здесь не может идентифицировать его; конечно, вы ожидаете найти его на сайте ANTLR.

Мы вложили энергию, необходимую для создания таких синтаксических анализаторов C (охватывающих все вышеперечисленные диалекты), и добавили таблицы вычислительных символов, извлечение потоков управления и данных, построение графиков вызовов, включение анализаторов и преобразований дерева в Набор инструментов для реинжиниринга программного обеспечения DMS с интерфейсом C . Этот интерфейс был применен к приложениям на C, состоящим из 18 000 модулей компиляции для создания пользовательских инструментов анализа.

...