私は新しい言語を実装したいと思っています。有名なflex + yaccの組み合わせでC言語でやりたいと思います。まあ、事は、ASTコード全体を書くことは非常に時間がかかるということです。構造体のコンストラクタを自動的に生成するツールはありますか?Cの構造体コンストラクタを自動的に生成しますか?
は、私は、次の行動で何かをしたいと思います:
入力:
enum AgentKind {A_KIND1, A_KIND2};
typedef struct Agent_st
{
enum AgentKind kind;
union {
struct {int a, b, c} k1;
struct {int a, GList* rest} k2;
} u;
} Agent;
出力:
Agent* agent_A_KIND1_new(int a, b, c)
{
Agent* a = (Agent*)malloc(sizeof(Agent));
a->kind = A_KIND1;
a->k1.a = a;
...
...
return a;
}
Agent* agent_A_KIND2_new(int a, GList* rest)
{ ... }
ありがとうございます!
私は、lex/yaccに似たファイル形式を使ったツールを試してみましたが、それらのツールと一緒に使用することになっていました。その目的はASTの作成とトラバースを助けることでした。残念ながら私はその名前を思い出すことができませんし、再び見つけることは容易ではないと思います。しかし、少なくともそのようなツールが存在する(または存在している)。 –
emacsやvisual studioを使用している場合、スニペットを利用して多くの時間を得ることができます – Eregrith