2011-01-19 53 views
7

如何将新关键字添加到叮当声中?新的关键字应该是一个函数限定符。声明部分在哪里去?如何为clang添加一个新关键字,该关键字将被视为主要关键字?

谢谢。

+0

听起来你需要为clang/LLVM拼写解析和lexing部分,并从那里出发,我怀疑你可能会从clang邮件列表中获得更好的帮助 – Necrolis 2011-01-19 15:10:12

+0

我编辑了IdentifierTabe.cpp,并添加了新的关键字TokenKinds.def尽可能从解析和lexing我无法找到从C的主要行为,因为我不知道它在哪里定义。 – 2011-01-19 15:27:23

回答

7

您必须将其添加到include/clang/Basic/TokenKinds.def,然后向ParseDeclarationSpecifiers(...)添加一个新案例。

也许更容易的选择是定义一个新的属性,然后用

#define your_new_qualifier __attribute__((your_new_attribute))

否则你不得不将此限定符支持添加到AST,这可能是容易出错,而属性会通过相同函数的各种声明自动传播。