version 1.7, 2001/05/04 01:06:25 |
version 1.9, 2002/02/24 10:27:18 |
|
|
/* $OpenXM: OpenXM/src/kan96xx/Kan/stackmachine.c,v 1.6 2001/01/27 05:48:46 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/kan96xx/Kan/stackmachine.c,v 1.8 2001/12/19 23:39:53 takayama Exp $ */ |
/* stackmachin.c */ |
/* stackmachin.c */ |
|
|
#include <stdio.h> |
#include <stdio.h> |
|
|
/* #define OPERAND_STACK_SIZE 2000 */ |
/* #define OPERAND_STACK_SIZE 2000 */ |
#define OPERAND_STACK_SIZE 30000 |
#define OPERAND_STACK_SIZE 30000 |
#define SYSTEM_DICTIONARY_SIZE 200 |
#define SYSTEM_DICTIONARY_SIZE 200 |
/* #define USER_DICTIONARY_SIZE 1223, 3581 */ |
/* #define USER_DICTIONARY_SIZE 1223, 3581, 27449 */ |
#define USER_DICTIONARY_SIZE 27449 |
#define USER_DICTIONARY_SIZE 59359 |
/* The value of USER_DICTIONARY_SIZE must be prime number, because of hashing |
/* The value of USER_DICTIONARY_SIZE must be prime number, because of hashing |
method */ |
method */ |
#define ARGV_WORK_MAX (AGLIMIT+100) |
#define ARGV_WORK_MAX (AGLIMIT+100) |
Line 736 void scanner() { |
|
Line 736 void scanner() { |
|
getokenSM(INIT); |
getokenSM(INIT); |
initSystemDictionary(); |
initSystemDictionary(); |
|
|
|
#if defined(__CYGWIN__) |
|
if (sigsetjmp(EnvOfStackMachine,1)) { |
|
#else |
if (setjmp(EnvOfStackMachine)) { |
if (setjmp(EnvOfStackMachine)) { |
|
#endif |
/* do nothing in the case of error */ |
/* do nothing in the case of error */ |
fprintf(stderr,"An error or interrupt in reading macros, files and command strings.\n"); |
fprintf(stderr,"An error or interrupt in reading macros, files and command strings.\n"); |
exit(10); |
exit(10); |
Line 796 void scanner() { |
|
Line 800 void scanner() { |
|
|
|
|
|
for (;;) { |
for (;;) { |
|
#if defined(__CYGWIN__) |
|
if (jval=sigsetjmp(EnvOfStackMachine,1)) { |
|
#else |
if (jval=setjmp(EnvOfStackMachine)) { |
if (jval=setjmp(EnvOfStackMachine)) { |
|
#endif |
/* *** The following does not work properly. **** |
/* *** The following does not work properly. **** |
if (jval == 2) { |
if (jval == 2) { |
if (ErrorMessageMode == 1 || ErrorMessageMode == 2) { |
if (ErrorMessageMode == 1 || ErrorMessageMode == 2) { |
|
|
*/ |
*/ |
getokenSM(INIT); /* It might fix the bug above. 1992/11/14 */ |
getokenSM(INIT); /* It might fix the bug above. 1992/11/14 */ |
signal(SIGINT,ctrlC); |
signal(SIGINT,ctrlC); |
|
#if defined(__CYGWIN__) |
|
siglongjmp(EnvOfStackMachine,2); |
|
#else |
longjmp(EnvOfStackMachine,2); /* returns 2 for ctrl-C */ |
longjmp(EnvOfStackMachine,2); /* returns 2 for ctrl-C */ |
|
#endif |
} |
} |
|
|
int executeToken(token) |
int executeToken(token) |
Line 1083 KSexecuteString(s) |
|
Line 1095 KSexecuteString(s) |
|
|
|
if (KSPushEnvMode) { |
if (KSPushEnvMode) { |
*saved_EnvOfStackMachine = *EnvOfStackMachine; |
*saved_EnvOfStackMachine = *EnvOfStackMachine; |
|
#if defined(__CYGWIN__) |
|
if (jval = sigsetjmp(EnvOfStackMachine,1)) { |
|
#else |
if (jval = setjmp(EnvOfStackMachine)) { |
if (jval = setjmp(EnvOfStackMachine)) { |
|
#endif |
*EnvOfStackMachine = *saved_EnvOfStackMachine; |
*EnvOfStackMachine = *saved_EnvOfStackMachine; |
if (jval == 2) { |
if (jval == 2) { |
if (ErrorMessageMode == 1 || ErrorMessageMode == 2) { |
if (ErrorMessageMode == 1 || ErrorMessageMode == 2) { |
Line 1096 KSexecuteString(s) |
|
Line 1112 KSexecuteString(s) |
|
}else{ } |
}else{ } |
}else{ |
}else{ |
if (recursive == 0) { |
if (recursive == 0) { |
|
#if defined(__CYGWIN__) |
|
if (jval=sigsetjmp(EnvOfStackMachine,1)) { |
|
#else |
if (jval=setjmp(EnvOfStackMachine)) { |
if (jval=setjmp(EnvOfStackMachine)) { |
|
#endif |
if (jval == 2) { |
if (jval == 2) { |
if (ErrorMessageMode == 1 || ErrorMessageMode == 2) { |
if (ErrorMessageMode == 1 || ErrorMessageMode == 2) { |
pushErrorStack(KnewErrorPacket(SerialCurrent,-1,"User interrupt by ctrl-C.")); |
pushErrorStack(KnewErrorPacket(SerialCurrent,-1,"User interrupt by ctrl-C.")); |