Esempio n. 1
0
File: var.c Progetto: tangziwen/tina
/*输入的参数当前栈的相对起始位置,以及当前的层数,和位置*/
static void local_declare_parse(int offset,int layer,int * pos)
{
	static int a=0;
	a++;
	int index =offset;/*索引,最开始在偏移量处*/
	TokenInfo t_k;
	token_Get(pos,&t_k);/*先跳过本层的左括号*/
	do
	{
		/*因为需要更多的信息,所以我们有两个变量控制*/
		/*步进关系*/
		int test_pos=(*pos);
		token_Get(&test_pos,&t_k);/*开始读取*/
		switch(t_k.type)
		{
			/*遇到变量的声明式*/
		case TOKEN_TYPE_VAR_DEF:
		{
			(*pos)=test_pos;
			var_define(pos,&index,offset,layer);
		}
		break;
		/*遇到左括号说明遇见了嵌套结构*/
		case TOKEN_TYPE_LEFT_BRACE:
			/*回退一格,递归调用本函数*/
			local_declare_parse(index,layer+1,pos);
			break;

			/*for语句较为特殊,因为其初始化表达式可能有定义式*/
		case TOKEN_TYPE_FOR:
			token_Get(&test_pos,&t_k);/*跳过左小括号*/
			token_Get(&test_pos,&t_k);/*判定for语句的初始化表达式是否有定义式*/
			(*pos)=test_pos;
			if(t_k.type==TOKEN_TYPE_VAR_DEF)
			{
				/*for语句初始化表达式所定义的变量属于内层变量*/
				/*所以它针对的起始偏移量要发生改变*/
				var_define(pos,&index,offset+index,layer+1);
			}
			break;
			/*遇到右括号则终结*/
		case TOKEN_TYPE_RIGHT_BRACE:
			(*pos)=test_pos;
			return;
			break;
			/*我们只检测声明式,所以遇见了其他的几号就跳过改句*/
		default:
			(*pos)=test_pos;
			break;

		}
	}
	while(t_k.type!=TOKEN_TYPE_EOF);
}
Esempio n. 2
0
File: event.c Progetto: barak/lush
void init_event(void)
{
   mt_event_timer =
      MM_REGTYPE("event_timer", sizeof(event_timer_t),
                 clear_event_timer, mark_event_timer, 0);

   MM_ROOT(timers);
   
   /* set up event queue */
   MM_ROOT(head);
   head = tail = new_cons(NIL, NIL);
   
   /* EVENTS FUNCTION */
   at_handle = var_define("handle");
   dx_define("set-event-handler", xseteventhandler);
   dx_define("process-pending-events", xprocess_pending_events);
   dx_define("sendevent", xsendevent);
   dx_define("testevent", xtestevent);
   dx_define("checkevent", xcheckevent);
   dx_define("waitevent", xwaitevent);
   dx_define("eventinfo", xeventinfo);

   /* TIMER FUNCTIONS */
   dx_define("create-timer", xcreate_timer);
   dx_define("create-timer-absolute", xcreate_timer_absolute);
   dx_define("kill-timer", xkill_timer);
   dx_define("sleep", xsleep);
}
Esempio n. 3
0
void init_oostruct(void)
{
   mt_object = MM_REGTYPE("object", SIZEOF_OBJECT,
                          clear_object, mark_object, finalize_object);
   mt_object2 = MM_REGTYPE("object2", SIZEOF_OBJECT2,
                          clear_object, mark_object, finalize_object);
   mt_method_hash = 
      MM_REGTYPE("method-hash", 0, 
                 clear_method_hash, mark_method_hash, 0);

   pre_init_oostruct();
   MM_ROOT(unreachables);
   class_class->backptr = new_at(class_class, class_class);
   class_define("Class", class_class);

   /* 
    * mm_alloc object_class to avoid hickup in mark_class
    */
   object_class = new_builtin_class(NIL);
   object_class->dispose = (dispose_func_t *)oostruct_dispose;
   object_class->listeval = oostruct_listeval;
   object_class->compare = oostruct_compare;
   object_class->hash = oostruct_hash;
   object_class->getslot = oostruct_getslot;
   object_class->setslot = oostruct_setslot;
   class_define("object", object_class);  
   
   dx_define("allslots", xallslots);
   dx_define("slots",xslots);
   dx_define("super",xsuper);
   dx_define("subclasses",xsubclasses);
   dx_define("methods",xmethods);
   dx_define("classname",xclassname);
   dy_define("classof", yclassof);
   dx_define("isa",xisa);
   dx_define("emptyp",xemptyp);
   dx_define("make-class",xmake_class);
   dx_define("builtin-class-p",xbuiltin_class_p);
   dy_define("new",ynew);
   dx_define("new-empty",xnew_empty);
   dx_define("delete",xdelete);
   dy_define("with-object",ywith_object);
   dx_define("getmethod",xgetmethod);
   dx_define("putmethod",xputmethod);
   dy_define("send",ysend);
   dx_define("sender",xsender);

   at_this = var_define("this");
   at_progn = var_define("progn");
   at_destroy = var_define("-destructor");
   at_listeval = var_define("-listeval");
   at_emptyp = var_define("-emptyp"); 
   at_mexpand = var_define("macroexpand");
   at_unknown = var_define("-unknown");
   at_pname = var_define("pname");
}
Esempio n. 4
0
File: storage.c Progetto: barak/lush
void init_storage()
{
   assert(ST_FIRST==0);
   assert(sizeof(char)==sizeof(uchar));

#ifdef HAVE_MMAP                           
   size_t storage_size = offsetof(storage_t, mmap_addr);
#else
   size_t storage_size = sizeof(storage_t);
#endif

   mt_storage = MM_REGTYPE("storage", storage_size,
                           clear_storage, mark_storage, 0);

   /* set up storage_classes */
   abstract_storage_class = new_builtin_class(NIL);
   class_define("storage", abstract_storage_class);
   Generic_storage_class_init(ST_BOOL, Bool);
   Generic_storage_class_init(ST_AT, Atom);
   Generic_storage_class_init(ST_FLOAT, Float);
   Generic_storage_class_init(ST_DOUBLE, Double);
   Generic_storage_class_init(ST_INT, Int);
   Generic_storage_class_init(ST_SHORT, Short);
   Generic_storage_class_init(ST_CHAR, Char);
   Generic_storage_class_init(ST_UCHAR, UChar);
   Generic_storage_class_init(ST_GPTR, Gptr);
   Generic_storage_class_init(ST_MPTR, Mptr);

   at *p = var_define("storage-classes");
   at *l = NIL;
   for (storage_type_t st=ST_FIRST; st<ST_LAST; st++)
      l = new_cons(storage_class[st]->backptr, l);
   var_set(p, reverse(l));
   var_lock(p);

   dx_define("new-storage", xnew_storage);
   dx_define("new-storage/managed", xnew_storage_managed);
   dx_define("new-storage/foreign", xnew_storage_foreign);
#ifdef HAVE_MMAP
   dx_define("new-storage/mmap",xnew_storage_mmap);
#endif
   dx_define("storage-alloc",xstorage_alloc);
   dx_define("storage-realloc",xstorage_realloc);
   dx_define("storage-clear",xstorage_clear);
   dx_define("storagep",xstoragep);
   dx_define("storage-readonlyp",xstorage_readonlyp);
   dx_define("storage-set-readonly", xstorage_set_readonly);
   dx_define("storage-load",xstorage_load);
   dx_define("storage-save",xstorage_save);
   dx_define("storage-nelems",xstorage_nelems);
   dx_define("storage-nbytes",xstorage_nbytes);
}
Esempio n. 5
0
void 
init_network(void)
{
  /* Network Creation */
  dx_define("alloc-net",xalloc_net);
  dx_define("newneurons",xnewneurons);
#ifndef NONEURTYPE
  dx_define("set-neurtype-regular", xset_neurtype_regular);
  dx_define("get-neurtype", xget_neurtype);
#endif
  dx_define("clear_net",xclear_net);
  dx_define("connect",xconnect);
  dx_define("cut-connection", xcut_connection);
#ifdef ITERATIVE
  dx_define("dup-connection",xdup_connection);
#ifdef WMATRIX
  w_matrix_var = var_define("weight_matrix");
#endif
#endif
  
  /* Topology functions */
  dx_define("amont",xamont);
  dx_define("aval",xaval);

  /* File functions */
  dx_define("save-net/merge",xsave_net);
  dx_define("save-ascii-net/merge",xsave_ascii_net);
  dx_define("merge-net",xmerge_net);
  
  /* Network to matrix transferts */
  dx_define("weight-to-matrix",xweight_to_matrix);
  dx_define("matrix-to-weight",xmatrix_to_weight);
#ifdef ITERATIVE
  dx_define("acc-to-matrix",xacc_to_matrix);
  dx_define("matrix-to-acc",xmatrix_to_acc);
  dx_define("delta-to-matrix",xdelta_to_matrix);
  dx_define("matrix-to-delta",xmatrix_to_delta);
#ifdef NEWTON
  dx_define("hess-to-matrix",xhess_to_matrix);
  dx_define("matrix-to-hess",xmatrix_to_hess);
#endif
#endif
}
Esempio n. 6
0
void 
init_event(void)
{
  /* EVENT QUEUE */
  head = tail = cons(NIL,NIL);
  protect(head);
  /* EVENTS FUNCTION */
  at_handle = var_define("handle");
  dx_define("set-event-handler",xseteventhandler);
  dx_define("process-pending-events",xprocess_pending_events);
  dx_define("sendevent",xsendevent);
  dx_define("testevent",xtestevent);
  dx_define("checkevent",xcheckevent);
  dx_define("waitevent",xwaitevent);
  dx_define("eventinfo",xeventinfo);
  /* TIMER FUNCTIONS */
  dx_define("create-timer", xcreate_timer);
  dx_define("create-timer-absolute", xcreate_timer_absolute);
  dx_define("kill-timer", xkill_timer);
  dx_define("sleep", xsleep);
}