=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/lex.c,v retrieving revision 1.6 retrieving revision 1.10 diff -u -p -r1.6 -r1.10 --- OpenXM_contrib2/asir2000/parse/lex.c 2000/11/13 01:48:13 1.6 +++ OpenXM_contrib2/asir2000/parse/lex.c 2000/12/06 01:27:16 1.10 @@ -45,18 +45,20 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/parse/lex.c,v 1.5 2000/08/22 05:04:27 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/parse/lex.c,v 1.9 2000/12/05 01:51:35 noro Exp $ */ #include #include "ca.h" #include "al.h" #include "base.h" #include "parse.h" -#if !defined(THINK_C) #include #include -#endif +#if defined(VISUAL) +#include "ytab.h" +#else #include "y.tab.h" +#endif extern IN asir_infile; extern struct oTKWD kwd[]; @@ -401,16 +403,15 @@ yylex() void purge_stdin() { -#if defined(VISUAL) -#elif defined(__FreeBSD__) +#if defined(__FreeBSD__) fpurge(stdin); #elif defined(linux) stdin->_IO_read_end = stdin->_IO_read_base; stdin->_IO_read_ptr = stdin->_IO_read_base; -#elif defined(sparc) || defined(__alpha) || defined(__SVR4) || defined(mips) - stdin->_ptr = stdin->_base; stdin->_cnt = 0; -#elif defined(VISUAL) +#elif defined(VISUAL_LIB) w_purge_stdin(); +#elif defined(sparc) || defined(__alpha) || defined(__SVR4) || defined(mips) || defined(VISUAL) + stdin->_ptr = stdin->_base; stdin->_cnt = 0; #else --->FIXIT #endif @@ -558,7 +559,11 @@ static int Getc() { if ((c = Egetc(asir_infile->fp)) == EOF) if ( NEXT(asir_infile) ) { closecurrentinput(); - c = Getc(); + /* if the input is the top level, generate error */ + if ( !NEXT(asir_infile) ) + error("end-of-file detected during parsing"); + else + c = Getc(); break; } else if ( read_exec_file || do_file ) asir_terminate(2);