| version 1.38, 2006/02/08 02:11:19 | 
version 1.45, 2010/04/16 07:13:42 | 
 | 
 | 
|   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, | 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, | 
|   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. | 
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. | 
|   * | 
  * | 
|   * $OpenXM: OpenXM_contrib2/asir2000/parse/lex.c,v 1.37 2005/12/10 14:14:16 noro Exp $ | 
  * $OpenXM: OpenXM_contrib2/asir2000/parse/lex.c,v 1.44 2007/08/06 08:15:26 saito Exp $ | 
|  */ | 
 */ | 
|  #include <ctype.h> | 
 #include <ctype.h> | 
|  #include "ca.h" | 
 #include "ca.h" | 
 | 
 | 
|  #else | 
 #else | 
|  #include "y.tab.h" | 
 #include "y.tab.h" | 
|  #endif | 
 #endif | 
|   | 
 #if FEP | 
|   | 
 #include <readline/readline.h> | 
|   | 
 #endif | 
|   | 
  | 
|  static int Getc(); | 
 static int Getc(); | 
|  static void Ungetc(int c); | 
 static void Ungetc(int c); | 
 | 
 | 
|   | 
  | 
|  void purge_stdin() | 
 void purge_stdin() | 
|  { | 
 { | 
|  #if defined(__FreeBSD__) | 
 #if defined(__FreeBSD__) || defined(__DARWIN__) | 
|          fpurge(stdin); | 
         fpurge(stdin); | 
|  #elif defined(linux) | 
 #elif defined(linux) | 
|          stdin->_IO_read_end = stdin->_IO_read_base; | 
         stdin->_IO_read_end = stdin->_IO_read_base; | 
| Line 537  int aftercomment() { | 
 
  | 
| Line 540  int aftercomment() { | 
 
 
 | 
|          int c,c1; | 
         int c,c1; | 
|   | 
  | 
|          for ( c = Getc(); ; ) { | 
         for ( c = Getc(); ; ) { | 
|   | 
                 if ( c == '\n' ) asir_infile->ln++; | 
|                  c1 = Getc(); | 
                 c1 = Getc(); | 
|                  if ( (c == '*') && (c1 == '/') ) | 
                 if ( (c == '*') && (c1 == '/') ) | 
|                          return Getc(); | 
                         return Getc(); | 
| Line 555  int myatoi(char *s) | 
 
  | 
| Line 559  int myatoi(char *s) | 
 
 
 | 
|  extern int ox_do_copy; | 
 extern int ox_do_copy; | 
|  extern int I_am_server; | 
 extern int I_am_server; | 
|  extern JMP_BUF main_env; | 
 extern JMP_BUF main_env; | 
|   | 
 extern int at_root; | 
|   | 
 extern LIST LastStackTrace; | 
|   | 
 extern char *CUR_FUNC; | 
|   | 
  | 
|  void yyerror(char *s) | 
 void yyerror(char *s) | 
|  { | 
 { | 
|   | 
         STRING fname,name,kwd; | 
|   | 
         USINT u; | 
|   | 
         NODE t; | 
|   | 
         LIST l,l2; | 
|   | 
  | 
|          if ( main_parser ) { | 
         if ( main_parser ) { | 
|                  if ( ox_do_copy ) { | 
                 if ( ox_do_copy ) { | 
|                          /* push errors to DebugStack */ | 
                         /* push errors to DebugStack */ | 
| Line 568  void yyerror(char *s) | 
 
  | 
| Line 580  void yyerror(char *s) | 
 
 
 | 
|                                  fprintf(stderr,"\"%s\", near line %d: %s\n",asir_infile->name,asir_infile->ln,s); | 
                                 fprintf(stderr,"\"%s\", near line %d: %s\n",asir_infile->name,asir_infile->ln,s); | 
|                  } | 
                 } | 
|                  if ( I_am_server ) { | 
                 if ( I_am_server ) { | 
|   | 
                         if ( NEXT(asir_infile) ) { | 
|   | 
                                 /* error in a file; record the position */ | 
|   | 
                                 MKSTR(fname,asir_infile->name); | 
|   | 
                                 if ( CPVS == GPVS ) | 
|   | 
                                         MKSTR(name,""); | 
|   | 
                                 else | 
|   | 
                                         MKSTR(name,CUR_FUNC); | 
|   | 
                                 MKUSINT(u,asir_infile->ln); | 
|   | 
                                 t = mknode(3,fname,name,u); MKLIST(l,t); | 
|   | 
                                 /* line number at the toplevel */ | 
|   | 
                                 MKSTR(fname,"toplevel"); MKUSINT(u,at_root); | 
|   | 
                                 t = mknode(2,fname,u); MKLIST(l2,t); | 
|   | 
                                 t = mknode(2,l2,l); | 
|   | 
                         } else { | 
|   | 
                                 MKSTR(fname,"toplevel"); MKUSINT(u,asir_infile->ln); | 
|   | 
                                 t = mknode(2,fname,u); MKLIST(l,t); | 
|   | 
                                 t = mknode(1,l); | 
|   | 
                         } | 
|   | 
                         MKLIST(l,t); | 
|   | 
                         MKSTR(kwd,"asir_where"); t = mknode(2,kwd,l); | 
|   | 
                         MKLIST(LastStackTrace,t); | 
|                          set_lasterror(s); | 
                         set_lasterror(s); | 
|                          LONGJMP(main_env,1); | 
                         LONGJMP(main_env,1); | 
|                  } | 
                 } | 
| Line 648  static int Getc() { | 
 
  | 
| Line 681  static int Getc() { | 
 
 
 | 
|                                          else | 
                                         else | 
|                                                  c = Getc(); | 
                                                 c = Getc(); | 
|                                          break; | 
                                         break; | 
|                                  } else if ( asir_infile->fp || do_file ) | 
                                 } else if ( asir_infile->fp || do_file ) { | 
|                                          asir_terminate(2); | 
  | 
|                                  else { | 
  | 
|                                          if ( asir_infile->fp ) | 
                                         if ( asir_infile->fp ) | 
|                                                  clearerr(asir_infile->fp); | 
                                                 clearerr(asir_infile->fp); | 
|   | 
                                         asir_terminate(2); | 
|   | 
                                 } else { | 
|   | 
                                         error("end-of-line detected during parsing"); | 
|                                  } | 
                                 } | 
|                          else | 
                         else | 
|                                  break; | 
                                 break; |