Есть ли рабочий файл грамматики C ++ для ANTLR? - PullRequest
10 голосов
/ 25 февраля 2010

Существуют ли какие-либо файлы грамматики C ++ для ANTLR?

Я смотрю на lex, а не на парсинг некоторых файлов исходного кода C ++.

Я посмотрел на странице грамматики ANTLR , и похоже, что здесь есть одна созданная Sun Microsystems здесь .

Однако, похоже, это сгенерированный парсер.

Может кто-нибудь указать мне на файл лексера или грамматики C ++ ANTLR?

1 Ответ

2 голосов
/ 25 февраля 2010

C ++ парсеры сложны для сборки.

Я не могу говорить с опытом о , используя ANTLR C ++ грамматики. Здесь я обсуждаю , что я узнал, прочитав заметки, прикрепленные к той, которую я видел на сайте ANTLR; по сути, автор создал неполную грамматику. И это было только для C ++ 98. Прошло некоторое время с тех пор, как я посмотрел; могут быть и другие.

Наш инструментарий реинжиниринга программного обеспечения DMS имеет надежный интерфейс C ++ .

Лексер обрабатывает все, что нужно для ANSI, GCC3, MS Visual Studio 2008, включая большие числа с плавающей запятой и т. Д.

[ПРАВКА: 12/2011. Теперь обрабатывает директивы C ++ 11 и OpenMP]

[ПРАВКА: 3/2015: теперь обрабатывает C ++ 14 в GCC и MS вариантах. См. Некоторые деревья разбора здесь на SO ]

Наличие "просто" парсера на самом деле не очень полезно. Помимо «простого синтаксического анализа», наш внешний интерфейс будет создавать AST, создавать точные таблицы символов (для C ++ это чрезвычайно сложно сделать), выполнять анализ потока функции на локальном уровне и позволять выполнять преобразования программы и т. Д. См. Жизнь после разбора .

[РЕДАКТИРОВАТЬ: 5/2019: Теперь обрабатывает C ++ 17 в вариантах ANSI, GCC и MS. Выполняет полное разрешение имени и типа в единицах компиляции. Используется для автоматизации крупномасштабного рефакторинга / разделения * по классу Бога * в системах из 3000 единиц компиляции.]

...