GCC插件添加一个传递来引入新关键字

时间:2012-10-24 00:15:09

标签: gcc compiler-construction

我刚刚开始探索GCC插件API的世界,我正在尝试扩展GCC以用于以下示例。

class Foo { ... };

Foo* f = __construct Foo(); // __construct is meant to be a new keyword

理想情况下,我希望该插件可以简单地将__construct替换为new (foo_class_info)之类的内容,这样您最终会得到

Foo* f = new (foo_class_info) Foo();

其中foo_class_info已通过PLUGIN_FINISH_TYPE回调提供(即__construct在预处理器传递时无法替换)。

实现这一目标的最佳/最简单方法是什么?我甚至不介意将一些用户土地模板代码与插件结合起来。

添加新通行证是否可行?如果是这样,我真的可以使用一些指针。

1 个答案:

答案 0 :(得分:0)

插件从根本上无法改变语法。

你可以做的最多就是添加一个新的pragma,属性或内置函数,然后在以后的传递中执行一些操作。