[cfe-dev] adding a new AST node class
Ted Kremenek
kremenek at apple.com
Fri Jul 18 13:52:35 PDT 2008
On Jul 18, 2008, at 11:52 AM, Micah Heyer wrote:
> Hello,
> I have been rather excited about this project and have been keeping
> an
> eye on it for several months,myself been some what of a PL
> aficionado.I have tinkered around with the driver ,writing simple
> programs such as building a AST from scratch.But I was wondering:
> how do
> I add custom language features to the AST as if I was building
> another C
> language variant? Is it possible to make a class inherit from the
> 'Stmt'
> class and function properly without modifying the 'StmtNodes.def' and
> re-compiling?.
> If I understand right, the clang project is meant to be a highly
> flexible collection of libraries to be used with c/c++/obj-c/obj-c+
> +.But
> has it been designed as to be extended for other languages in this
> closely related family?
> thanks in advance for your time.
> -micah
Hi Micah,
The ASTs have been designed to be extendable by defining subclasses of
Stmt or Expr. You do need to add an extra entry to StmtNodes.def,
however, because that is used by the internal RTTI of Clang (all the
cast<> and dyn_cast<> magic works using the values defined in
StmtNodes.def). If you look at subclasses of Stmt and Expr
respectively, you will see that they pass up a value defined in
StmtNodes.def to the ctor of Stmt.
Ted
More information about the cfe-dev
mailing list