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

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

Я обращаюсь к закону, не анализируют некоторые файлы исходного кода C++.

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

Однако это, кажется, сгенерированный Синтаксический анализатор.

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

10
задан c14ppy 24 February 2010 в 21:10
поделиться

1 ответ

C++ парсеры трудно создавать.

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

Наш DMS Software Reengineering Toolkit имеет надежный C++ front end.

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

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

[EDIT: 3/2015: Теперь обрабатывает C++14 как в GCC, так и в MS. См. некоторые деревья разбора здесь на SO]

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

[EDIT: 5/2019: Теперь обрабатывает C++17 в вариантах ANSI, GCC и MS. Выполняет полное разрешение имен и типов в разных блоках компиляции. Используется для автоматизации крупномасштабного рефакторинга/разделения God-класса в системах из 3000 единиц компиляции]

.
2
ответ дан 4 December 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: