Если я правильно понимаю код clang (я все еще учусь, поэтому будьте осторожны), я думаю, что отправной точкой для этого типа добавления будет Parser :: ParseObjCAtExpression в clang / lib / Parse / ParseObjc.cpp.
Следует отметить, что класс Parser реализован в нескольких файлах (казалось бы, разделенных языком ввода), но полностью объявлен в clang / include / Parser.h.
Parser имеет многометоды, следующие шаблону ParseObjCAt, например ParseObjCAtExpression ParseObjCAtStatement ParseObjCAtDirectives и т. д.
В частности, строка 1779 ParseObjc.cpp выглядит там, где анализатор обнаруживает строковый литерал Objective-C в виде @ ",Тем не менее, он также вызывает ParsePostfixExpressionSuffix, который я до конца не понимаю.Я не понял, как он может анализировать строковый литерал (например, вместо @synchronize).
ExprResult Parser::ParseObjCAtExpression(SourceLocation AtLoc) {
...
return ParsePostfixExpressionSuffix(ParseObjCStringLiteral(AtLoc));
...
}
Если вы этого еще не сделали, посетите clang "Getting Started" страница для начала компиляции.