Добавление альтернативного синтаксиса в Clang - PullRequest
4 голосов
/ 19 августа 2011

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

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

  • API для изменения функциональности лексинга / разбора
  • классов для прямого изменения / подкласса для моей желаемой функциональности
  • лучший способ написать собственный синтаксический анализ для взаимодействия с AST.
...