Я наткнулся на альтернативную грамматику SPECS для C ++ , и хотя я не уверен, что мне нравятся некоторые из более необоснованных изменений синтаксиса, которые они внесли (например, изменение указателей с * на ^), это завел меня к идее настройки и реализации нового синтаксиса. SPECS утверждает, что он семантически идентичен C ++, а Clang довольно модульный, поэтому я решил, что не составит труда написать в AST Clang и воспользоваться преимуществами всего существующего кода.
При этом, я не совсем уверен, насколько легко было бы изменить текущие Lexer и Parser Clang, чтобы они принимали разные токены и упорядочения (таким образом, используя их большие сообщения об ошибках), или было бы проще это сделать что вместо написания отдельного парсера, который просто делает вызовы AST Clang. За последние пару дней я копался в документации, но мне было интересно, может ли кто-нибудь здесь с большим опытом работы с кодовой базой дать мне некоторую информацию о том, должен ли я искать
- API для изменения функциональности лексинга / разбора
- классов для прямого изменения / подкласса для моей желаемой функциональности
- лучший способ написать собственный синтаксический анализ для взаимодействия с AST.