Ejemplo n.º 1
0
/* 変数宣言のリストを表示. 各宣言の後ろに ; をつけて */
void pr_var_decl_list_semicolon(FILE * fp, var_decl_list_t ds)
{
  int n = var_decl_list_sz(ds);
  int i;
  for (i = 0; i < n; i++) {
    var_decl_t d = var_decl_list_get(ds, i);
    pr_var_decl(fp, d);
    fprintf(fp, ";\n");
  }
}
Ejemplo n.º 2
0
/* 変数宣言のリストを表示. 各宣言の後ろに , をつけて */
void pr_var_decl_list_comma(FILE * fp, var_decl_list_t ds)
{
  int n = var_decl_list_sz(ds);
  int i;
  for (i = 0; i < n; i++) {
    if (i > 0) fprintf(fp, ", ");
    var_decl_t d = var_decl_list_get(ds, i);
    pr_var_decl(fp, d);
  }
}
Ejemplo n.º 3
0
/*引数の割り当て場所を環境に登録*/
void set_env_params(var_decl_list_t params, env_list_t envs){
  char * a = (char *)malloc(sizeof(char) * 10);
  strcpy(a, "ebp");
  int sz = var_decl_list_sz(params);
  int i;
  int num = 4;
  syntree_info_t info = (syntree_info_t)safe_malloc(sizeof(struct syntree_info));
  info->kind = place_mem;
  info->a = a;
  for (i = 0; i < sz; i++) {
    num = num + 4;
    info->num = num;
    var_decl_t d = var_decl_list_get(params, i);
    env_t env;
    env->f = d->v;
    env->info = info;
    add_env_params(envs, env);
  }
}