Beispiel #1
0
/* 文のリストを表示 */
void pr_stmt_list(FILE * fp, stmt_list_t ss)
{
  int n = stmt_list_sz(ss);
  int i;
  for (i = 0; i < n; i++) {
    stmt_t s = stmt_list_get(ss, i);
    pr_stmt(fp, s);
  }
}
int cogen_stmt_compound(FILE *fp,stmt_t s,env_t env,label_gen_t lg)
{
  int sz;
  int i;
  env = set_env_vars(s->u.c.decls,env);//宣言された変数を環境に登録、ここではメモリ確保必要ないはず
  sz = stmt_list_sz(s->u.c.body);
  for(i=0;i<sz;i++)
    {
      stmt_t x = stmt_list_get(s->u.c.body,i);
      cogen_stmt(fp,x,env,lg);
    }
  delete_env_vars(env);//スコープ脱出の際に一番上のスタックを環境から削除
  return 0;
}