새로운 언어를 구현하고 싶고 유명한 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와 비슷한 fileformat을 사용하고 AST를 만들고 트래버스하는 데 도움이되는 도구와 함께 사용해야하는 도구를 사용해 보았습니다.불행히도 나는 그 이름을 기억할 수 없으며, 다시 찾을 수 있을지는 의심 스럽다. 그러나 최소한 그러한 도구가 존재합니다. –
emacs 또는 visual studio를 사용하는 경우 미리보기를 사용하여 많은 시간을 얻을 수 있습니다. – Eregrith