我想實現一種新的語言,我想用C語言來完成它,着名的flex + yacc組合。嗯,事情是,編寫整個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的工具一起使用。不幸的是我不記得這個名字,我懷疑它會很容易找到。但至少存在(或已經存在)這樣的工具。 – 2012-02-16 15:59:07
如果您使用emacs或visual studio,您可以依靠片段來幫助您獲得大量時間 – Eregrith 2012-02-16 16:02:45