Пример #1
0
KL_Block* 
KL_create_block(KL_StmtList* stmt_list)
{
  KL_Block* block = (KL_Block*)KL_util_malloc(sizeof(*block));
  block->stmt_list = stmt_list;

  return block;
}
Пример #2
0
char* 
KL_create_identifier(const char* str)
{
  char* new_str = (char*)KL_util_malloc(strlen(str) + 1);
  strcpy(new_str, str);

  return new_str;
}
Пример #3
0
char* 
KL_close_string_literal(void)
{
  char* new_str = KL_util_malloc(s_str_literal_buffer_size + 1);
  memcpy(new_str, s_str_literal_buffer, s_str_literal_buffer_size);
  new_str[s_str_literal_buffer_size] = 0;

  return new_str;
}
Пример #4
0
KL_ArgList* 
KL_create_arg_list(KL_Expr* expr) 
{
  KL_ArgList* arg = (KL_ArgList*)KL_util_malloc(sizeof(*arg));
  arg->expr = expr;
  arg->next = NULL;

  return arg;
}
Пример #5
0
KL_ParamList* 
KL_create_param(const char* identifier)
{
  KL_ParamList* p = (KL_ParamList*)KL_util_malloc(sizeof(*p));
  p->name = (char*)identifier;
  p->next = NULL;

  return p;
}
Пример #6
0
KL_IDList* 
KL_create_global_identifier(const char* identifier)
{
  KL_IDList* id_list = (KL_IDList*)KL_util_malloc(sizeof(*id_list));
  id_list->name = (char*)identifier;
  id_list->next = NULL;

  return id_list;
}
Пример #7
0
static KL_Stmt* 
alloc_stmt(int stmt_type)
{
  KL_Stmt* stmt = (KL_Stmt*)KL_util_malloc(sizeof(*stmt));
  stmt->stmt_type = stmt_type;
  stmt->lineno = KL_get_state()->lineno;

  return stmt;
}
Пример #8
0
KL_Expr* 
KL_alloc_expr(int expr_type)
{
  KL_Expr* expr = (KL_Expr*)KL_util_malloc(sizeof(*expr));
  expr->expr_type = expr_type;
  expr->lineno = KL_get_state()->lineno;

  return expr;
}
Пример #9
0
KL_StmtList* 
KL_create_stmt_list(KL_Stmt* stmt)
{
  KL_StmtList* stmt_list = (KL_StmtList*)KL_util_malloc(sizeof(*stmt_list));
  stmt_list->stmt = stmt;
  stmt_list->next = NULL;

  return stmt_list;
}
Пример #10
0
void 
KL_function_def(const char* identifier, 
    KL_ParamList* param_list, KL_Block* block)
{
  KL_Function* func;
  KL_State* L;

  if (KL_lookup_func(identifier)) 
    return;

  L = KL_get_state();

  func = KL_util_malloc(sizeof(*func));
  func->name = (char*)identifier;
  func->func_type = FT_DEFINE;
  func->func.define.param = param_list;
  func->func.define.block = block;
  func->next = L->func_list;
  L->func_list = func;
}