示例#1
0
文件: Fmapcon.c 项目: hoelzl/Clicc
static void Z131_get_rest_args(CL_FORM *base, CL_FORM *display[])
{
	if(CL_ATOMP(ARG(0)))
	{
		LOAD_NIL(ARG(0));
	}
	else
	{
		COPY(GET_CAR(ARG(0)), ARG(1));
		if(CL_ATOMP(ARG(1)))
		{
			COPY(&display[1][0], ARG(1));
			LOAD_NIL(ARG(2));
			call_cont(ARG(1));
		}
		COPY(GET_CAR(ARG(0)), ARG(1));
		if(CL_CONSP(ARG(1)))
		{
			COPY(GET_CAR(ARG(1)), ARG(2));
		}
		else
		{
			if(CL_TRUEP(ARG(1)))
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[264], ARG(2));	/* ~a is not a list */
				COPY(ARG(1), ARG(3));
				Ferror(ARG(2), 2);
			}
			else
			{
				COPY(ARG(1), ARG(2));
			}
		}
		COPY(ARG(1), ARG(3));
		COPY(ARG(3), ARG(4));
		if(CL_CONSP(ARG(4)))
		{
			COPY(GET_CDR(ARG(4)), ARG(1));
		}
		else
		{
			if(CL_TRUEP(ARG(4)))
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[262], ARG(5));	/* ~a is not a list */
				COPY(ARG(4), ARG(6));
				Ferror(ARG(5), 2);
			}
			else
			{
				COPY(ARG(4), ARG(1));
			}
		}
		COPY(ARG(1), GET_CAR(ARG(0)));
		COPY(&display[0][1], ARG(1));
		COPY(GET_CDR(ARG(0)), ARG(2));
		Z131_get_rest_args(ARG(2), display);
		ALLOC_CONS(ARG(3), ARG(1), ARG(2), ARG(0));
	}
}
示例#2
0
文件: patternE.c 项目: hoelzl/Clicc
static void Z114_lambda(CL_FORM *base)
{
	if(CL_SMSTRP(ARG(0)))
	{
		if(CL_SMSTRP(ARG(1)))
		{
			LOAD_FIXNUM(ARG(2), 0, ARG(2));
			LOAD_NIL(ARG(3));
			LOAD_FIXNUM(ARG(4), 0, ARG(4));
			LOAD_NIL(ARG(5));
			stringE1(ARG(0));
		}
		else
		{
			LOAD_NIL(ARG(0));
		}
	}
	else
	{
		if(CL_CONSP(ARG(0)))
		{
			if(CL_CONSP(ARG(1)))
			{
				COPY(GET_CAR(ARG(0)), ARG(2));
				COPY(GET_CAR(ARG(1)), ARG(3));
				if(EQ(ARG(2), ARG(3)))
				{
					COPY(GET_CDR(ARG(0)), ARG(2));
					COPY(GET_CDR(ARG(1)), ARG(3));
					COPY(ARG(2), ARG(0));
					COPY(ARG(3), ARG(1));
					LOAD_FIXNUM(ARG(2), 0, ARG(2));
					LOAD_NIL(ARG(3));
					LOAD_FIXNUM(ARG(4), 0, ARG(4));
					LOAD_NIL(ARG(5));
					stringE1(ARG(0));
				}
				else
				{
					LOAD_NIL(ARG(0));
				}
			}
			else
			{
				LOAD_NIL(ARG(0));
			}
		}
		else
		{
			LOAD_BOOL(EQ(ARG(0), ARG(1)), ARG(0));
		}
	}
}
示例#3
0
文件: pairlis1.c 项目: hoelzl/Clicc
void pairlis1(CL_FORM *base)
{
	M1_1:;
	if(CL_ATOMP(ARG(0)))
	{
		if(CL_ATOMP(ARG(1)))
		{
			COPY(ARG(2), ARG(0));
			goto RETURN1;
		}
		else
		{
			goto M1_2;
		}
	}
	else
	{
		if(CL_ATOMP(ARG(1)))
		{
			goto M1_2;
		}
		else
		{
			COPY(ARG(0), ARG(3));
			COPY(ARG(3), ARG(4));
			COPY(GET_CAR(ARG(4)), ARG(3));
			COPY(ARG(1), ARG(4));
			COPY(ARG(4), ARG(5));
			COPY(GET_CAR(ARG(5)), ARG(4));
			COPY(ARG(2), ARG(5));
			ALLOC_CONS(ARG(8), ARG(3), ARG(4), ARG(6));
			ALLOC_CONS(ARG(8), ARG(6), ARG(5), ARG(2));
			COPY(GET_CAR(ARG(0)), ARG(3));
			COPY(ARG(0), ARG(4));
			COPY(ARG(4), ARG(5));
			COPY(GET_CDR(ARG(5)), ARG(0));
			COPY(GET_CAR(ARG(1)), ARG(3));
			COPY(ARG(1), ARG(4));
			COPY(ARG(4), ARG(5));
			COPY(GET_CDR(ARG(5)), ARG(1));
		}
	}
	goto M1_1;
	M1_2:;
	LOAD_SMSTR((CL_FORM *)&Kpairlis1[0], ARG(3));	/* The lists of keys and data are of unequal length. */
	Ferror(ARG(3), 1);
	LOAD_NIL(ARG(0));
	RETURN1:;
}
示例#4
0
void EDIRemoveCarFromContext(CONTEXT context, CAR * oldCar)
{
	for (uint i = 0, length = context->nbCars; i < length; ++i)
	{
		if(context->cars[i]->ID == oldCar->ID)
		{
#ifdef DEBUG_BUILD
			printf("\nFlushing car from array: current ptr %p (size %u)\n", context->cars, context->nbCars);
			printCar(oldCar);
#endif
			context->cars = (CAR **) removeItemAtIndexFromArray((void **) context->cars, context->nbCars--, i);
#ifdef DEBUG_BUILD
			printf("Resized: new ptr %p (size %u)\n\n", context->cars, context->nbCars);
#endif
			
			if(oldCar->context.section == SECTION_NODE)
				GET_CAR_NODE(context->EDI.node, oldCar->context.index, oldCar->context.onLeftRoad) = NULL;
			else
				GET_CAR((&context->EDI.externalRoads[oldCar->context.section]), false, oldCar->context.index, oldCar->context.onLeftRoad) = NULL;
			
			crushCar(oldCar);
			break;
		}
	}
}
示例#5
0
文件: lisp192.c 项目: plops/clicc
static void Z86_lambda(CL_FORM *base)
{
	COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(2));
	if(CL_CONSP(ARG(2)))
	{
		COPY(GET_CAR(ARG(2)), ARG(2));
	}
	else
	{
		if(CL_TRUEP(ARG(2)))
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[239], ARG(3));	/* ~a is not a list */
			COPY(ARG(2), ARG(4));
			Ferror(ARG(3), 2);
		}
		else
		{
			LOAD_NIL(ARG(2));
		}
	}
	stream_unreadc(ARG(2));
	COPY(ARG(1), ARG(3));
	Ffuncall(ARG(2), 2);
	COPY(ARG(2), ARG(0));
}
示例#6
0
文件: lisp355.c 项目: plops/clicc
static void Z124_lambda(CL_FORM *base)
{
	if(CL_SMSTRP(ARG(1)))
	{
		COPY(INDIRECT(GET_FORM(ARG(0)) + 4), ARG(2));
		COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(3));
		Ffuncall(ARG(2), 2);
		COPY(ARG(2), ARG(0));
	}
	else
	{
		if(CL_CONSP(ARG(1)))
		{
			COPY(GET_CAR(ARG(1)), ARG(2));
			if(CL_SYMBOLP(ARG(2)) && GET_SYMBOL(ARG(2)) == SYMBOL(Slisp, 255))	/* CHARACTER-SET */
			{
				LOAD_SYMBOL(SYMBOL(Slisp, 255), ARG(3));	/* CHARACTER-SET */
				COPY(INDIRECT(GET_FORM(ARG(0)) + 4), ARG(4));
				COPY(GET_CDR(ARG(1)), ARG(5));
				Ffuncall(ARG(4), 2);
				mv_count = 1;
				ALLOC_CONS(ARG(5), ARG(3), ARG(4), ARG(0));
			}
			else
			{
				COPY(ARG(1), ARG(0));
			}
		}
		else
		{
			COPY(ARG(1), ARG(0));
		}
	}
}
示例#7
0
文件: lisp503.c 项目: hoelzl/Clicc
void null_or_quoted(CL_FORM *base)
{
	if(CL_TRUEP(ARG(0)))
	{
		LOAD_NIL(ARG(1));
	}
	else
	{
		LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(1));	/* T */
	}
	if(CL_TRUEP(ARG(1)))
	{
		COPY(ARG(1), ARG(0));
	}
	else
	{
		if(CL_CONSP(ARG(0)))
		{
			COPY(GET_CAR(ARG(0)), ARG(2));
			LOAD_BOOL(EQ(ARG(2), SYMVAL(Slisp, 444)), ARG(0));	/* *BQ-QUOTE* */
		}
		else
		{
			LOAD_NIL(ARG(0));
		}
	}
}
示例#8
0
文件: bpx.c 项目: edechter/PRISM
TERM bpx_get_car(TERM t) {
	XDEREF(t);

	if (ISLIST(t)) {
		return GET_CAR(t);
	} else {
		bpx_raise("list expected");
	}
}
示例#9
0
文件: mono.c 项目: kmizumar/Mono
void printlist(int addr){
        if(IS_NIL(addr))
        printf(")");
    else {
        print(GET_CAR(addr));
        if(! (IS_NIL(GET_CDR(addr))))
                printf(" ");
        printlist(GET_CDR(addr));
    }
}
示例#10
0
文件: lisp192.c 项目: plops/clicc
static void Z87_readc(CL_FORM *base)
{
	if(CL_TRUEP(INDIRECT(GET_FORM(ARG(0)) + 3)))
	{
		COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(1));
		if(CL_CONSP(ARG(1)))
		{
			COPY(GET_CAR(ARG(1)), ARG(1));
		}
		else
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[239], ARG(2));	/* ~a is not a list */
			COPY(ARG(1), ARG(3));
			Ferror(ARG(2), 2);
		}
		stream_readc(ARG(1));
		Ffuncall(ARG(1), 1);
		mv_count = 1;
		if(CL_TRUEP(ARG(1)))
		{
			COPY(ARG(1), ARG(0));
		}
		else
		{
			if(CL_CONSP(INDIRECT(GET_FORM(ARG(0)) + 3)))
			{
			}
			else
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[239], ARG(2));	/* ~a is not a list */
				COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(3));
				Ferror(ARG(2), 2);
			}
			COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(2));
			COPY(ARG(2), ARG(3));
			if(CL_CONSP(ARG(3)))
			{
				COPY(GET_CDR(ARG(3)), INDIRECT(GET_FORM(ARG(0)) + 3));
			}
			else
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[241], ARG(4));	/* ~a is not a list */
				COPY(ARG(3), ARG(5));
				Ferror(ARG(4), 2);
			}
			COPY(ARG(0), ARG(2));
			Z87_readc(ARG(2));
			COPY(ARG(2), ARG(0));
		}
	}
	else
	{
		LOAD_NIL(ARG(0));
	}
}
示例#11
0
文件: lisp514.c 项目: plops/clicc
void bq_splicing_frob(CL_FORM *base)
{
	if(CL_CONSP(ARG(0)))
	{
		COPY(GET_CAR(ARG(0)), ARG(1));
		LOAD_BOOL(EQ(ARG(1), SYMVAL(Slisp, 427)), ARG(1));	/* *COMMA-ATSIGN* */
		if(CL_TRUEP(ARG(1)))
		{
			LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(0));	/* T */
		}
		else
		{
			COPY(GET_CAR(ARG(0)), ARG(2));
			LOAD_BOOL(EQ(ARG(2), SYMVAL(Slisp, 428)), ARG(0));	/* *COMMA-DOT* */
		}
	}
	else
	{
		LOAD_NIL(ARG(0));
	}
}
示例#12
0
文件: lisp742.c 项目: hoelzl/Clicc
void rt_simple_assoc(CL_FORM *base)
{
	LOAD_NIL(ARG(2));
	COPY(ARG(1), ARG(3));
	M1_1:;
	if(CL_ATOMP(ARG(3)))
	{
		LOAD_NIL(ARG(2));
		COPY(ARG(2), ARG(0));
		goto RETURN1;
	}
	COPY(ARG(3), ARG(4));
	COPY(GET_CAR(ARG(4)), ARG(2));
	if(CL_CONSP(ARG(2)))
	{
		COPY(GET_CAR(ARG(2)), ARG(5));
	}
	else
	{
		if(CL_TRUEP(ARG(2)))
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[264], ARG(5));	/* ~a is not a list */
			COPY(ARG(2), ARG(6));
			Ferror(ARG(5), 2);
		}
		else
		{
			COPY(ARG(2), ARG(5));
		}
	}
	if(EQ(ARG(0), ARG(5)))
	{
		COPY(ARG(2), ARG(0));
		goto RETURN1;
	}
	COPY(ARG(3), ARG(4));
	COPY(GET_CDR(ARG(4)), ARG(3));
	goto M1_1;
	RETURN1:;
}
示例#13
0
文件: Frplaca.c 项目: plops/clicc
void Frplaca(CL_FORM *base)
{
	if(CL_CONSP(ARG(0)))
	{
		COPY(ARG(1), GET_CAR(ARG(0)));
	}
	else
	{
		LOAD_SMSTR((CL_FORM *)&KClisp[237], ARG(2));	/* ~a is not a cons */
		COPY(ARG(0), ARG(3));
		Ferror(ARG(2), 2);
	}
}
示例#14
0
文件: Flogeqv.c 项目: hoelzl/Clicc
void Flogeqv(CL_FORM *base, int nargs)
{
	Flist(ARG(0), nargs - 0);
	LOAD_FIXNUM(ARG(1), -1, ARG(1));
	M1_1:;
	if(CL_TRUEP(ARG(0)))
	{
	}
	else
	{
		COPY(ARG(1), ARG(0));
		goto RETURN1;
	}
	COPY(ARG(0), ARG(3));
	COPY(ARG(3), ARG(4));
	if(CL_CONSP(ARG(4)))
	{
		COPY(GET_CAR(ARG(4)), ARG(3));
	}
	else
	{
		LOAD_SMSTR((CL_FORM *)&KClisp[264], ARG(3));	/* ~a is not a list */
		Ferror(ARG(3), 2);
	}
	COPY(ARG(0), ARG(4));
	COPY(ARG(4), ARG(5));
	if(CL_CONSP(ARG(5)))
	{
		COPY(GET_CDR(ARG(5)), ARG(0));
	}
	else
	{
		LOAD_SMSTR((CL_FORM *)&KClisp[262], ARG(6));	/* ~a is not a list */
		COPY(ARG(5), ARG(7));
		Ferror(ARG(6), 2);
	}
	if(CL_FIXNUMP(ARG(3)))
	{
	}
	else
	{
		COPY(ARG(3), ARG(4));
		LOAD_SMSTR((CL_FORM *)&KClisp[244], ARG(3));	/* type error: ~S is not of type ~S */
		LOAD_SYMBOL(SYMBOL(Slisp, 23), ARG(5));	/* FIXNUM */
		Ferror(ARG(3), 3);
	}
	LOAD_FIXNUM(ARG(4), GET_FIXNUM(ARG(1)) ^ GET_FIXNUM(ARG(3)), ARG(2));
	LOAD_FIXNUM(ARG(3),  ~ GET_FIXNUM(ARG(2)), ARG(1));
	goto M1_1;
	RETURN1:;
}
示例#15
0
文件: mono.c 项目: kmizumar/Mono
//デバッグ用    
void cellprint(int addr){
        switch(GET_TAG(addr)){
        case EMP:       printf("EMP "); break;
        case NUM:       printf("NUM "); break;
        case SYM:       printf("SYM "); break;
        case LIS:       printf("LIS "); break;
        case FUN:       printf("FUN "); break;
    }
    printf("name=%s ", GET_NAME(addr));
    printf("car=%d ", GET_CAR(addr));
    printf("cdr=%d ", GET_CDR(addr));
    printf("num=%d ", GET_NUMBER(addr));
    printf("bind=&d ", GET_BIND(addr));
    printf("subr=%d\n", heap[addr].subr);
}   
示例#16
0
文件: Fmapcon.c 项目: hoelzl/Clicc
static void Z130_mapcon_internal(CL_FORM *base, CL_FORM *display[])
{
	CONTENV new_cont;
	CL_FORM *caller_base;
	new_cont.bind_top = bind_top;
	new_cont.last = last_cont;
	LOAD_UNIQUE_TAG(ARG(0));
	caller_base = (CL_FORM *)SETJMP(new_cont.jmp_buf);
	if(caller_base == NULL)
	{
		last_cont = &new_cont;
		if(CL_ATOMP(&display[0][1]))
		{
			LOAD_NIL(ARG(0));
		}
		else
		{
			COPY(&display[0][0], ARG(1));
			COPY(&display[0][1], ARG(2));
			COPY(GET_CAR(&display[0][1]), ARG(3));
			COPY(&display[0][1], ARG(4));
			COPY(ARG(4), ARG(5));
			COPY(GET_CDR(ARG(5)), &display[0][1]);
			COPY(&display[0][2], ARG(3));
			display[1] = ARG(0);
			Z131_get_rest_args(ARG(3), display);
			Fapply(ARG(1), 3);
			mv_count = 1;
			Z130_mapcon_internal(ARG(2), display);
			Fnconc(ARG(1), 2);
			COPY(ARG(1), ARG(0));
		}
		RETURN1:;
		last_cont = new_cont.last;
	}
	else
	{
		last_cont = new_cont.last;
		if(EQ(STACK(caller_base, 0), ARG(0)))
		{
			COPY(STACK(caller_base, 1), ARG(0));
		}
		else
		{
			call_cont(caller_base);
		}
	}
}
示例#17
0
文件: mlis.c 项目: kzfm1024/misc
void printlist(int addr){
    if(IS_NIL(addr))
        printf(")");
    else
    if((!(listp(cdr(addr)))) && (! (nullp(cdr(addr))))){
        print(car(addr));
        printf(" . ");
        print(cdr(addr));
        printf(")");
    }
    else {
        print(GET_CAR(addr));    
        if(! (IS_NIL(GET_CDR(addr))))
            printf(" ");
        printlist(GET_CDR(addr));
    }
}
示例#18
0
文件: Fset_elt.c 项目: hoelzl/Clicc
void Fset_elt(CL_FORM *base)
{
	if(CL_CONSP(ARG(1)))
	{
		COPY(ARG(2), ARG(3));
		COPY(ARG(1), ARG(4));
		Fnthcdr(ARG(3));
		if(CL_CONSP(ARG(3)))
		{
			COPY(ARG(0), GET_CAR(ARG(3)));
		}
		else
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[252], ARG(0));	/* ~a is not a cons */
			COPY(ARG(3), ARG(1));
			Ferror(ARG(0), 2);
		}
	}
	else
	{
		LOAD_BOOL(CL_SMVECP(ARG(1)), ARG(3));
		if(CL_TRUEP(ARG(3)))
		{
			goto THEN1;
		}
		else
		{
			COPY(ARG(1), ARG(4));
			LOAD_SYMBOL(SYMBOL(Slisp, 150), ARG(5));	/* COMPLEX-VECTOR */
			rt_struct_typep(ARG(4));
		}
		if(CL_TRUEP(ARG(4)))
		{
			THEN1:;
			Fset_row_major_aref(ARG(0));
		}
		else
		{
			COPY(SYMVAL(Slisp, 58), ARG(0));	/* WRONG_TYPE */
			LOAD_SYMBOL(SYMBOL(Slisp, 36), ARG(2));	/* SEQUENCE */
			Ferror(ARG(0), 3);
		}
	}
}
示例#19
0
//-------デバッグ用------------------    
void cellprint(int addr){
	switch(GET_FLAG(addr)){
    	case FRE:	printf("FRE "); break;
        case USE:	printf("USE "); break;
    }
	switch(GET_TAG(addr)){
    	case EMP:	printf("EMP "); break;
        case NUM:	printf("NUM "); break;
        case SYM:	printf("SYM "); break;
        case LIS:	printf("LIS "); break;
        case SUBR:	printf("SUBR   "); break;
        case FSUBR:	printf("FSUBR  "); break;
        case LAMBDA:printf("LAMBDA "); break;
    }
    printf("car=%d ", GET_CAR(addr));
    printf("cdr=%d ", GET_CDR(addr));
    printf("bind=%d ", GET_BIND(addr));
    printf("name=%s \n", GET_NAME(addr));
}   
示例#20
0
文件: mlis.c 项目: kzfm1024/misc
//-------デバッグ用------------------    
void cellprint(int addr){ 
    switch(GET_FLAG(addr)){
        case FRE:   printf("FRE "); break;
        case USE:   printf("USE "); break;
    }
    switch(GET_TAG(addr)){
        case EMP:   printf("EMP    "); break;
        case NUM:   printf("NUM    "); break;
        case SYM:   printf("SYM    "); break;
        case LIS:   printf("LIS    "); break;
        case SUBR:  printf("SUBR   "); break;
        case FSUBR: printf("FSUBR  "); break;
        case FUNC:  printf("FUNC   "); break;
    }
    printf("%07d ", GET_CAR(addr));
    printf("%07d ", GET_CDR(addr));
    printf("%07d ", GET_BIND(addr));
    printf("%s \n", GET_NAME(addr));
}   
示例#21
0
文件: Fcar.c 项目: hoelzl/Clicc
void Fcar(CL_FORM *base)
{
    if(CL_CONSP(ARG(0)))
    {
        COPY(GET_CAR(ARG(0)), ARG(0));
    }
    else
    {
        if(CL_TRUEP(ARG(0)))
        {
            LOAD_SMSTR((CL_FORM *)&KClisp[264], ARG(1));	/* ~a is not a list */
            COPY(ARG(0), ARG(2));
            Ferror(ARG(1), 2);
        }
        else
        {
        }
    }
}
示例#22
0
void list_reverse(CL_FORM *base)
{
	LOAD_NIL(ARG(1));
	LOAD_NIL(ARG(2));
	COPY(ARG(0), ARG(3));
	M1_1:;
	if(CL_ATOMP(ARG(3)))
	{
		LOAD_NIL(ARG(2));
		goto RETURN1;
	}
	COPY(ARG(3), ARG(4));
	COPY(GET_CAR(ARG(4)), ARG(2));
	ALLOC_CONS(ARG(6), ARG(2), ARG(1), ARG(1));
	COPY(ARG(3), ARG(4));
	COPY(GET_CDR(ARG(4)), ARG(3));
	goto M1_1;
	RETURN1:;
	COPY(ARG(1), ARG(0));
}
示例#23
0
文件: lisp475.c 项目: plops/clicc
void rt_do_external_symbols_iterator(CL_FORM *base)
{
	COPY(ARG(1), ARG(2));
	Ppackage_external(ARG(2));
	COPY(SYMVAL(Slisp, 372), ARG(3));	/* PACKAGE-HASHTAB-SIZE */
	LOAD_SMALLFIXNUM(0, ARG(4));
	M1_1:;
	COPY(ARG(4), ARG(5));
	COPY(ARG(3), ARG(6));
	Fge(ARG(5), 2);
	if(CL_TRUEP(ARG(5)))
	{
		LOAD_NIL(ARG(0));
		goto RETURN1;
	}
	LOAD_NIL(ARG(5));
	COPY(ARG(2), ARG(6));
	COPY(ARG(4), ARG(7));
	Fsvref(ARG(6));
	M2_1:;
	if(CL_ATOMP(ARG(6)))
	{
		LOAD_NIL(ARG(5));
		goto RETURN2;
	}
	COPY(ARG(6), ARG(7));
	COPY(GET_CAR(ARG(7)), ARG(5));
	COPY(ARG(0), ARG(7));
	COPY(ARG(5), ARG(8));
	Ffuncall(ARG(7), 2);
	mv_count = 1;
	COPY(ARG(6), ARG(7));
	COPY(GET_CDR(ARG(7)), ARG(6));
	goto M2_1;
	RETURN2:;
	F1plus(ARG(4));
	goto M1_1;
	RETURN1:;
}
示例#24
0
文件: nunion1.c 项目: hoelzl/Clicc
static void Z6_union_internal(CL_FORM *base, CL_FORM *display[])
{
	M1_1:;
	if(CL_TRUEP(ARG(0)))
	{
		if(CL_TRUEP(&display[0][4]))
		{
			COPY(&display[0][4], ARG(1));
			if(CL_CONSP(ARG(0)))
			{
				COPY(GET_CAR(ARG(0)), ARG(2));
			}
			else
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[264], ARG(2));	/* ~a is not a list */
				COPY(ARG(0), ARG(3));
				Ferror(ARG(2), 2);
			}
			Ffuncall(ARG(1), 2);
			mv_count = 1;
		}
		else
		{
			if(CL_CONSP(ARG(0)))
			{
				COPY(GET_CAR(ARG(0)), ARG(1));
			}
			else
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[264], ARG(1));	/* ~a is not a list */
				COPY(ARG(0), ARG(2));
				Ferror(ARG(1), 2);
			}
		}
		COPY(&display[0][1], ARG(2));
		COPY(&display[0][2], ARG(3));
		COPY(&display[0][4], ARG(4));
		COPY(ARG(1), ARG(5));
		COPY(ARG(2), ARG(6));
		COPY(ARG(3), ARG(7));
		LOAD_NIL(ARG(8));
		COPY(ARG(4), ARG(9));
		member1(ARG(5));
		if(CL_TRUEP(ARG(5)))
		{
			COPY(ARG(0), ARG(1));
			if(CL_CONSP(ARG(1)))
			{
				COPY(GET_CDR(ARG(1)), ARG(0));
			}
			else
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[262], ARG(0));	/* ~a is not a list */
				Ferror(ARG(0), 2);
			}
			goto M1_1;
		}
		else
		{
			if(CL_CONSP(ARG(0)))
			{
				COPY(GET_CAR(ARG(0)), ARG(1));
			}
			else
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[264], ARG(1));	/* ~a is not a list */
				COPY(ARG(0), ARG(2));
				Ferror(ARG(1), 2);
			}
			if(CL_CONSP(ARG(0)))
			{
				COPY(GET_CDR(ARG(0)), ARG(2));
			}
			else
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[262], ARG(2));	/* ~a is not a list */
				COPY(ARG(0), ARG(3));
				Ferror(ARG(2), 2);
			}
			Z6_union_internal(ARG(2), display);
			ALLOC_CONS(ARG(3), ARG(1), ARG(2), ARG(0));
		}
	}
	else
	{
		COPY(&display[0][1], ARG(0));
	}
	goto RETURN1;
	RETURN1:;
}
示例#25
0
文件: lisp36.c 项目: hoelzl/Clicc
void set_difference1(CL_FORM *base)
{
	GEN_HEAPVAR(ARG(3), ARG(5));
	if(CL_TRUEP(ARG(2)))
	{
	}
	else
	{
		if(CL_TRUEP(INDIRECT(ARG(3))))
		{
			GEN_CLOSURE(array, ARG(5), 4, Z4_lambda, -1);
			COPY(ARG(3), &array[3]);
			LOAD_CLOSURE(array, ARG(5));
			COPY(ARG(5), ARG(2));
		}
		else
		{
			GEN_STATIC_GLOBAL_FUNARG(extern_closure, Feql, 2);
			LOAD_GLOBFUN(&extern_closure, ARG(2));
		}
	}
	LOAD_NIL(ARG(5));
	LOAD_NIL(ARG(6));
	COPY(ARG(0), ARG(7));
	M1_1:;
	if(CL_ATOMP(ARG(7)))
	{
		LOAD_NIL(ARG(6));
		goto RETURN1;
	}
	COPY(ARG(7), ARG(8));
	COPY(GET_CAR(ARG(8)), ARG(6));
	if(CL_TRUEP(ARG(4)))
	{
		COPY(ARG(4), ARG(8));
		COPY(ARG(6), ARG(9));
		Ffuncall(ARG(8), 2);
		mv_count = 1;
	}
	else
	{
		COPY(ARG(6), ARG(8));
	}
	COPY(ARG(1), ARG(9));
	COPY(ARG(2), ARG(10));
	COPY(ARG(4), ARG(11));
	COPY(ARG(8), ARG(12));
	COPY(ARG(9), ARG(13));
	COPY(ARG(10), ARG(14));
	LOAD_NIL(ARG(15));
	COPY(ARG(11), ARG(16));
	member1(ARG(12));
	if(CL_TRUEP(ARG(12)))
	{
	}
	else
	{
		ALLOC_CONS(ARG(10), ARG(6), ARG(5), ARG(5));
	}
	COPY(ARG(7), ARG(8));
	COPY(GET_CDR(ARG(8)), ARG(7));
	goto M1_1;
	RETURN1:;
	COPY(ARG(5), ARG(0));
}
示例#26
0
文件: lisp355.c 项目: plops/clicc
static void Z122_check_for(CL_FORM *base)
{
	COPY(ARG(1), ARG(2));
	LOAD_SYMBOL(SYMBOL(Slisp, 248), ARG(3));	/* PATTERN */
	rt_struct_typep(ARG(2));
	if(CL_TRUEP(ARG(2)))
	{
		LOAD_NIL(ARG(2));
		COPY(ARG(1), ARG(3));
		pattern_pieces(ARG(3));
		M1_1:;
		if(CL_ATOMP(ARG(3)))
		{
			LOAD_NIL(ARG(2));
			COPY(ARG(2), ARG(0));
			goto RETURN1;
		}
		COPY(ARG(3), ARG(4));
		COPY(GET_CAR(ARG(4)), ARG(2));
		if(CL_SMSTRP(ARG(2)))
		{
			COPY(ARG(0), ARG(4));
			COPY(ARG(2), ARG(5));
			Z122_check_for(ARG(4));
			bool_result = CL_TRUEP(ARG(4));
		}
		else
		{
			if(CL_CONSP(ARG(2)))
			{
				if(CL_CONSP(ARG(1)))
				{
					COPY(GET_CAR(ARG(1)), ARG(4));
				}
				else
				{
					if(CL_TRUEP(ARG(1)))
					{
						LOAD_SMSTR((CL_FORM *)&KClisp[239], ARG(4));	/* ~a is not a list */
						COPY(ARG(1), ARG(5));
						Ferror(ARG(4), 2);
					}
					else
					{
						COPY(ARG(1), ARG(4));
					}
				}
				if(CL_SYMBOLP(ARG(4)) && GET_SYMBOL(ARG(4)) == SYMBOL(Slisp, 255))	/* CHARACTER-SET */
				{
					COPY(ARG(0), ARG(5));
					if(CL_CONSP(ARG(1)))
					{
						COPY(GET_CDR(ARG(1)), ARG(6));
					}
					else
					{
						if(CL_TRUEP(ARG(1)))
						{
							LOAD_SMSTR((CL_FORM *)&KClisp[241], ARG(6));	/* ~a is not a list */
							COPY(ARG(1), ARG(7));
							Ferror(ARG(6), 2);
						}
						else
						{
							COPY(ARG(1), ARG(6));
						}
					}
					Z122_check_for(ARG(5));
				}
				else
				{
					goto ELSE1;
				}
			}
			else
			{
				goto ELSE1;
			}
			bool_result = CL_TRUEP(ARG(5));
		}
		if(bool_result)
		{
			LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(0));	/* T */
			goto RETURN1;
		}
		ELSE1:;
		COPY(ARG(3), ARG(4));
		COPY(GET_CDR(ARG(4)), ARG(3));
		goto M1_1;
		RETURN1:;
	}
	else
	{
		if(CL_LISTP(ARG(1)))
		{
			LOAD_NIL(ARG(2));
			COPY(ARG(1), ARG(3));
			M2_1:;
			if(CL_ATOMP(ARG(3)))
			{
				LOAD_NIL(ARG(2));
				COPY(ARG(2), ARG(0));
				goto RETURN2;
			}
			COPY(ARG(3), ARG(4));
			COPY(GET_CAR(ARG(4)), ARG(2));
			COPY(ARG(0), ARG(4));
			COPY(ARG(2), ARG(5));
			Z122_check_for(ARG(4));
			if(CL_TRUEP(ARG(4)))
			{
				LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(0));	/* T */
				goto RETURN2;
			}
			COPY(ARG(3), ARG(4));
			COPY(GET_CDR(ARG(4)), ARG(3));
			goto M2_1;
			RETURN2:;
		}
		else
		{
			if(CL_SMSTRP(ARG(1)))
			{
				COPY(ARG(1), ARG(2));
				Flength(ARG(2));
				LOAD_SMALLFIXNUM(0, ARG(3));
				M3_1:;
				COPY(ARG(3), ARG(4));
				COPY(ARG(2), ARG(5));
				Fge(ARG(4), 2);
				if(CL_TRUEP(ARG(4)))
				{
					LOAD_NIL(ARG(0));
					goto RETURN3;
				}
				COPY(ARG(0), ARG(4));
				COPY(ARG(1), ARG(5));
				COPY(ARG(3), ARG(6));
				Fschar(ARG(5));
				Ffuncall(ARG(4), 2);
				mv_count = 1;
				if(CL_TRUEP(ARG(4)))
				{
					LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(0));	/* T */
					goto RETURN3;
				}
				F1plus(ARG(3));
				goto M3_1;
				RETURN3:;
			}
			else
			{
				if(CL_SYMBOLP(ARG(1)) && GET_SYMBOL(ARG(1)) == SYMBOL(Slisp, 256))	/* UNSPECIFIC */
				{
					LOAD_NIL(ARG(0));
				}
				else
				{
					LOAD_SMSTR((CL_FORM *)&Kmaybe_diddle_case[0], ARG(0));	/* etypecase: the value ~a is not a legal value */
					Ferror(ARG(0), 2);
				}
			}
		}
	}
}
示例#27
0
文件: lisp785.c 项目: hoelzl/Clicc
void Fget_properties(CL_FORM *base)
{
	M1_1:;
	if(CL_ATOMP(ARG(0)))
	{
		LOAD_NIL(ARG(0));
		LOAD_NIL(ARG(1));
		LOAD_NIL(ARG(2));
		COPY(ARG(1), &mv_buf[0]);
		COPY(ARG(2), &mv_buf[1]);
		mv_count = 3;
	}
	else
	{
		COPY(GET_CAR(ARG(0)), ARG(2));
		COPY(ARG(2), ARG(3));
		COPY(ARG(1), ARG(4));
		LOAD_NIL(ARG(5));
		LOAD_NIL(ARG(6));
		LOAD_NIL(ARG(7));
		member1(ARG(3));
		if(CL_TRUEP(ARG(3)))
		{
			COPY(GET_CAR(ARG(0)), ARG(2));
			COPY(GET_CDR(ARG(0)), ARG(3));
			if(CL_CONSP(ARG(3)))
			{
				COPY(GET_CAR(ARG(3)), ARG(3));
			}
			else
			{
				if(CL_TRUEP(ARG(3)))
				{
					LOAD_SMSTR((CL_FORM *)&KClisp[264], ARG(4));	/* ~a is not a list */
					COPY(ARG(3), ARG(5));
					Ferror(ARG(4), 2);
				}
				else
				{
				}
			}
			COPY(ARG(0), ARG(4));
			COPY(ARG(2), ARG(0));
			COPY(ARG(3), &mv_buf[0]);
			COPY(ARG(4), &mv_buf[1]);
			mv_count = 3;
		}
		else
		{
			COPY(ARG(0), ARG(2));
			COPY(ARG(2), ARG(3));
			COPY(GET_CDR(ARG(3)), ARG(3));
			if(CL_CONSP(ARG(3)))
			{
				COPY(GET_CDR(ARG(3)), ARG(0));
			}
			else
			{
				if(CL_TRUEP(ARG(3)))
				{
					LOAD_SMSTR((CL_FORM *)&KClisp[262], ARG(4));	/* ~a is not a list */
					COPY(ARG(3), ARG(5));
					Ferror(ARG(4), 2);
				}
				else
				{
					COPY(ARG(3), ARG(0));
				}
			}
			goto M1_1;
		}
	}
	goto RETURN1;
	RETURN1:;
}
示例#28
0
文件: lisp381.c 项目: plops/clicc
void Penumerate_directories(CL_FORM *base)
{
	M1_1:;
	if(CL_TRUEP(ARG(1)))
	{
		if(CL_CONSP(ARG(1)))
		{
			COPY(GET_CAR(ARG(1)), ARG(5));
		}
		else
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[239], ARG(5));	/* ~a is not a list */
			COPY(ARG(1), ARG(6));
			Ferror(ARG(5), 2);
		}
		if(CL_SMSTRP(ARG(5)))
		{
			LOAD_SYMBOL(SYMBOL(Slisp, 44), ARG(6));	/* STRING */
			COPY(ARG(0), ARG(7));
			COPY(ARG(5), ARG(8));
			LOAD_SMSTR((CL_FORM *)&KPenumerate_directories[0], ARG(9));	/* / */
			Fconcatenate(ARG(6), 4);
			if(CL_CONSP(ARG(1)))
			{
				COPY(GET_CDR(ARG(1)), ARG(7));
			}
			else
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[241], ARG(7));	/* ~a is not a list */
				COPY(ARG(1), ARG(8));
				Ferror(ARG(7), 2);
			}
			COPY(ARG(6), ARG(0));
			COPY(ARG(7), ARG(1));
			LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(3));	/* T */
			goto M1_1;
		}
		else
		{
			if(CL_SYMBOLP(ARG(5)) && GET_SYMBOL(ARG(5)) == SYMBOL(Slisp, 265))	/* UP */
			{
				LOAD_SYMBOL(SYMBOL(Slisp, 44), ARG(6));	/* STRING */
				COPY(ARG(0), ARG(7));
				LOAD_SMSTR((CL_FORM *)&KPenumerate_directories[2], ARG(8));	/* ../ */
				Fconcatenate(ARG(6), 3);
				if(CL_CONSP(ARG(1)))
				{
					COPY(GET_CDR(ARG(1)), ARG(7));
				}
				else
				{
					LOAD_SMSTR((CL_FORM *)&KClisp[241], ARG(7));	/* ~a is not a list */
					COPY(ARG(1), ARG(8));
					Ferror(ARG(7), 2);
				}
				COPY(ARG(6), ARG(0));
				COPY(ARG(7), ARG(1));
				LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(3));	/* T */
				goto M1_1;
			}
			else
			{
				LOAD_SMSTR((CL_FORM *)&KPenumerate_directories[4], ARG(0));	/* etypecase: the value ~a is not a legal value */
				COPY(ARG(5), ARG(1));
				Ferror(ARG(0), 2);
			}
		}
	}
	else
	{
		COPY(ARG(2), ARG(1));
		LOAD_SYMBOL(SYMBOL(Slisp, 48), ARG(2));	/* T */
		COPY(ARG(4), ARG(3));
		Penumerate_files(ARG(0));
	}
	goto RETURN1;
	RETURN1:;
}
示例#29
0
文件: Fmap.c 项目: hoelzl/Clicc
void Fmap(CL_FORM *base, int nargs)
{
	Flist(ARG(3), nargs - 3);
	ALLOC_CONS(ARG(6), ARG(2), ARG(3), ARG(3));
	LOAD_GLOBFUN(&CFmin, ARG(4));
	LOAD_GLOBFUN(&CFlength, ARG(5));
	COPY(ARG(3), ARG(6));
	Fmapcar(ARG(5), 2);
	Fapply(ARG(4), 2);
	mv_count = 1;
	LOAD_FIXNUM(ARG(5), 0, ARG(5));
	GEN_HEAPVAR(ARG(5), ARG(6));
	{
		GEN_CLOSURE(array, ARG(6), 4, Z146_get_elem, 1);
		COPY(ARG(5), &array[3]);
		LOAD_CLOSURE(array, ARG(6));
	}
	if(CL_TRUEP(ARG(0)))
	{
		if(CL_SYMBOLP(ARG(0)) && GET_SYMBOL(ARG(0)) == SYMBOL(Slisp, 28))	/* LIST */
		{
			LOAD_NIL(ARG(7));
			LOAD_NIL(ARG(8));
			ALLOC_CONS(ARG(9), ARG(7), ARG(8), ARG(7));
			M1_1:;
			COPY(INDIRECT(ARG(5)), ARG(8));
			COPY(ARG(4), ARG(9));
			Fge(ARG(8), 2);
			if(CL_TRUEP(ARG(8)))
			{
				COPY(GET_CAR(ARG(7)), ARG(0));
				goto RETURN1;
			}
			COPY(ARG(1), ARG(8));
			COPY(ARG(6), ARG(9));
			COPY(ARG(3), ARG(10));
			Fmaplist(ARG(9), 2);
			Fapply(ARG(8), 2);
			mv_count = 1;
			COPY(ARG(7), ARG(9));
			add_q(ARG(8));
			COPY(INDIRECT(ARG(5)), ARG(8));
			F1plus(ARG(8));
			COPY(ARG(8), INDIRECT(ARG(5)));
			goto M1_1;
			RETURN1:;
		}
		else
		{
			COPY(ARG(0), ARG(7));
			COPY(ARG(4), ARG(8));
			LOAD_NIL(ARG(9));
			LOAD_NIL(ARG(10));
			make_sequence1(ARG(7));
			M2_1:;
			COPY(INDIRECT(ARG(5)), ARG(8));
			COPY(ARG(4), ARG(9));
			Fge(ARG(8), 2);
			if(CL_TRUEP(ARG(8)))
			{
				COPY(ARG(7), ARG(0));
				goto RETURN2;
			}
			COPY(ARG(7), ARG(8));
			COPY(INDIRECT(ARG(5)), ARG(9));
			COPY(ARG(1), ARG(10));
			COPY(ARG(6), ARG(11));
			COPY(ARG(3), ARG(12));
			Fmaplist(ARG(11), 2);
			Fapply(ARG(10), 2);
			mv_count = 1;
			COPY(ARG(10), ARG(11));
			COPY(ARG(8), ARG(12));
			COPY(ARG(9), ARG(13));
			Fset_elt(ARG(11));
			COPY(INDIRECT(ARG(5)), ARG(8));
			F1plus(ARG(8));
			COPY(ARG(8), INDIRECT(ARG(5)));
			goto M2_1;
			RETURN2:;
		}
	}
	else
	{
		M3_1:;
		COPY(INDIRECT(ARG(5)), ARG(7));
		COPY(ARG(4), ARG(8));
		Fge(ARG(7), 2);
		if(CL_TRUEP(ARG(7)))
		{
			LOAD_NIL(ARG(0));
			goto RETURN3;
		}
		COPY(ARG(1), ARG(7));
		COPY(ARG(6), ARG(8));
		COPY(ARG(3), ARG(9));
		Fmaplist(ARG(8), 2);
		Fapply(ARG(7), 2);
		mv_count = 1;
		COPY(INDIRECT(ARG(5)), ARG(7));
		F1plus(ARG(7));
		COPY(ARG(7), INDIRECT(ARG(5)));
		goto M3_1;
		RETURN3:;
	}
}
示例#30
0
文件: Fmap.c 项目: hoelzl/Clicc
static void Z146_get_elem(CL_FORM *base)
{
	if(CL_CONSP(ARG(1)))
	{
		COPY(GET_CAR(ARG(1)), ARG(2));
	}
	else
	{
		if(CL_TRUEP(ARG(1)))
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[264], ARG(2));	/* ~a is not a list */
			COPY(ARG(1), ARG(3));
			Ferror(ARG(2), 2);
		}
		else
		{
			COPY(ARG(1), ARG(2));
		}
	}
	if(CL_LISTP(ARG(2)))
	{
		if(CL_CONSP(ARG(1)))
		{
			COPY(GET_CAR(ARG(1)), ARG(2));
		}
		else
		{
			if(CL_TRUEP(ARG(1)))
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[264], ARG(2));	/* ~a is not a list */
				COPY(ARG(1), ARG(3));
				Ferror(ARG(2), 2);
			}
			else
			{
				COPY(ARG(1), ARG(2));
			}
		}
		if(CL_CONSP(ARG(2)))
		{
			COPY(GET_CAR(ARG(2)), ARG(3));
		}
		else
		{
			if(CL_TRUEP(ARG(2)))
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[264], ARG(3));	/* ~a is not a list */
				COPY(ARG(2), ARG(4));
				Ferror(ARG(3), 2);
			}
			else
			{
				COPY(ARG(2), ARG(3));
			}
		}
		COPY(ARG(2), ARG(4));
		COPY(ARG(4), ARG(5));
		if(CL_CONSP(ARG(5)))
		{
			COPY(GET_CDR(ARG(5)), ARG(2));
		}
		else
		{
			if(CL_TRUEP(ARG(5)))
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[262], ARG(6));	/* ~a is not a list */
				COPY(ARG(5), ARG(7));
				Ferror(ARG(6), 2);
			}
			else
			{
				COPY(ARG(5), ARG(2));
			}
		}
		if(CL_CONSP(ARG(1)))
		{
			COPY(ARG(2), GET_CAR(ARG(1)));
		}
		else
		{
			LOAD_SMSTR((CL_FORM *)&KClisp[252], ARG(4));	/* ~a is not a cons */
			COPY(ARG(1), ARG(5));
			Ferror(ARG(4), 2);
		}
		COPY(ARG(3), ARG(0));
	}
	else
	{
		if(CL_CONSP(ARG(1)))
		{
			COPY(GET_CAR(ARG(1)), ARG(2));
		}
		else
		{
			if(CL_TRUEP(ARG(1)))
			{
				LOAD_SMSTR((CL_FORM *)&KClisp[264], ARG(2));	/* ~a is not a list */
				COPY(ARG(1), ARG(3));
				Ferror(ARG(2), 2);
			}
			else
			{
				COPY(ARG(1), ARG(2));
			}
		}
		COPY(INDIRECT(GET_FORM(ARG(0)) + 3), ARG(3));
		Felt(ARG(2));
		COPY(ARG(2), ARG(0));
	}
}