У меня есть идея для проекта хобби, который выполняет некоторый анализ кода и манипуляции. Для этого проекта потребуются как конкретные, так и абстрактные синтаксические деревья заданного исходного файла. Кроме того, полезны двунаправленные ссылки между двумя деревьями. Я хотел бы избежать работы по расшифровке грамматики, чтобы построить собственный лексер и парсер.Стандартный формат для конкретных и абстрактных деревьев синтаксиса
Существует ли стандартный формат описания конкретных или абстрактных деревьев синтаксиса? Поддерживаются ли какие-либо широко используемые цепочки инструментов в этих форматах?
У меня нет конкретного целевого языка программирования. Любой популярный будет делать для прототипа, но я бы предпочел, чтобы я хорошо знал: Python, C#, Javascript или C/C++.
Мне нужна возможность запускать исходный файл через инструмент или библиотеку и возвращать оба дерева. В идеальном мире было бы практично запускать этот инструмент по коду, поскольку он редактируется пользователем и допускает ошибки. Опять же, я просто пытаюсь разработать прототип, поэтому эти требования довольно слабы.
Спасибо!
Ответ ANTLR от @vs является убедительным, но предпочтительным может быть стандартный формат, который пропускает сложность генерации кода. Я подожду один день, прежде чем пометить ответ. –