Есть ли какие-либо существующие файлы грамматики C++ для ANTLR?
Я обращаюсь к закону, не анализируют некоторые файлы исходного кода C++.
Я считал страницу грамматики ANTLR, и похоже, что существует тот, перечисленный созданный Sun Microsystems здесь.
Однако это, кажется, сгенерированный Синтаксический анализатор.
Кто-либо может указать на меня на C++ лексический анализатор ANTLR или файл грамматики?
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 единиц компиляции]
.