version 1.1, 1999/10/08 02:12:15 |
version 1.5, 2003/08/22 16:08:20 |
|
|
|
/* $OpenXM: OpenXM/src/k097/ki.c,v 1.4 2002/02/24 10:27:21 takayama Exp $ */ |
/* ki.c ( kx interpreter ) */ |
/* ki.c ( kx interpreter ) */ |
|
|
#include <stdio.h> |
#include <stdio.h> |
|
|
|
|
char *getLOAD_K_PATH(); /* from d.h */ |
char *getLOAD_K_PATH(); /* from d.h */ |
|
|
|
#if defined(__CYGWIN__) |
|
#define JMP_BUF sigjmp_buf |
|
#define SETJMP(env) sigsetjmp(env,1) |
|
#define LONGJMP(env,p) siglongjmp(env,p) |
|
#else |
|
#define JMP_BUF jmp_buf |
|
#define SETJMP(env) setjmp(env) |
|
#define LONGJMP(env,p) longjmp(env,p) |
|
#endif |
|
|
#ifdef CALLASIR |
#ifdef CALLASIR |
#include "ak0.h" |
#include "ak0.h" |
#endif |
#endif |
|
|
extern jmp_buf KCenvOfParser; |
extern JMP_BUF KCenvOfParser; |
|
|
char Ktmp[10240]; |
char Ktmp[10240]; |
int Ksize = 10240; |
int Ksize = 10240; |
|
|
struct object obj; |
struct object obj; |
int result; |
int result; |
signal(SIGINT,SIG_IGN); /* Don't jump to ctrlC(). */ |
signal(SIGINT,SIG_IGN); /* Don't jump to ctrlC(). */ |
if (p == 10) {printf("In(%d)=",n++); return;} |
if (p == 10) {printf("In(%d)= ",n++); return;} |
if (p == 0 && DebugCompiler) printf("sendKan[%s]\n",Kbuff); |
if (p == 0 && DebugCompiler) printf("sendKan[%s]\n",Kbuff); |
/* printf("sendKan[%s]\n",Kbuff); */ |
/* printf("sendKan[%s]\n",Kbuff); */ |
if (strlen(Kbuff) != 0) { |
if (strlen(Kbuff) != 0) { |
|
|
} |
} |
#define AFO |
#define AFO |
#ifdef AFO |
#ifdef AFO |
if (setjmp(KCenvOfParser)) { |
if (SETJMP(KCenvOfParser)) { |
fprintf(stderr,"Error: Goto the top level.\n"); |
fprintf(stderr,"Error: Goto the top level.\n"); |
parseAfile(stdin); |
parseAfile(stdin); |
KCparse(); |
KCparse(); |
|
|
/* However, it should be rewrited in a future. */ |
/* However, it should be rewrited in a future. */ |
}else{ /* fprintf(stderr,"setjmp\n"); */ } |
}else{ /* fprintf(stderr,"setjmp\n"); */ } |
#endif |
#endif |
if (p == 0 && Interactive) printf("In(%d)=",n++); |
if (p == 0 && Interactive) printf("In(%d)= ",n++); |
Kpt=0; Kbuff[0] = '\0'; |
Kpt=0; Kbuff[0] = '\0'; |
} |
} |
|
|
|
|
if (strlen(s)+Kpt >= Ksize) { |
if (strlen(s)+Kpt >= Ksize) { |
Ksize = Ksize*2; |
Ksize = Ksize*2; |
t = (char *)GC_malloc(sizeof(char)*Ksize); |
t = (char *)GC_malloc(sizeof(char)*Ksize); |
if (t == (char *)NULL) { fprintf(stderr,"No memory."); exit();} |
if (t == (char *)NULL) { fprintf(stderr,"No memory."); exit(1);} |
strcpy(t,Kbuff); Kbuff = t; |
strcpy(t,Kbuff); Kbuff = t; |
} |
} |
strcpy(&(Kbuff[Kpt]),s); |
strcpy(&(Kbuff[Kpt]),s); |