Я пишу свой собственный язык сценариев, и мне нужен программный инструмент, который генерирует код C ++ для анализа моего языка. Мне нужен лексический анализатор и генератор синтаксического анализатора, который генерирует код C ++. Было бы хорошо, если бы у меня была возможность создавать проект Visual C ++ 2010. Предложения?
Попробуйте с Flex и Bison. Они являются хорошими лексическими анализаторами и генератором синтаксических анализаторов, полезными для определения новых языков.
http://en.wikipedia.org/wiki/Comparison_of_parser_generators
для C / C ++: http://epaperpress.com/lexandyacc/
Или посмотрите на: Boost.Spirit:
«Spirit — это набор библиотек C ++ для анализа и генерации вывода
реализован как специфичные для домена встроенные языки (DSEL) с использованием
Шаблоны выражений и шаблон мета-программирования. «
Тебе действительно нужен новый язык? Может быть, было бы лучше использовать некоторые известные, как Lua, Python?
Это старый вопрос, но все еще может быть актуальным: поскольку я был недоволен существующими опциями, я недавно написал генератор синтаксического анализатора шаблонов c ++, который не нуждается во внешних инструментах (вы включаете заголовок и определяете грамматику непосредственно в источнике c ++) , Он использует читаемые грамматики PEG, поэтому нет необходимости в отдельном шаге лексинга. Вы можете проверить это на Github.
У вас есть два варианта: создать ли свой собственный парсер, создав АСТ (абстрактное синтаксическое дерево), тогда это будет хорошим упражнением для вас, но его очень долго и сложно реализовать. Или вы можете использовать решение с открытым исходным кодом, такое как ANTLR Генератор синтаксического анализатора, который имеет грамматику для C / C ++, а также препроцессор. Я никогда не использовал его, поэтому я не могу сказать, насколько полным будет его разбор C ++. Тогда Если вы спешите и хотите создать хороший парсер, вам лучше использовать второе решение