Diff for /capa/capa51/pProj/capaLexerDef.flex between versions 1.6 and 1.14

version 1.6, 2000/02/22 18:19:02 version 1.14, 2007/07/11 19:23:43
Line 1 Line 1
   /* main CAPA lexer
      Copyright (C) 1992-2000 Michigan State University
   
      The CAPA system is free software; you can redistribute it and/or
      modify it under the terms of the GNU General Public License as
      published by the Free Software Foundation; either version 2 of the
      License, or (at your option) any later version.
   
      The CAPA system is distributed in the hope that it will be useful,
      but WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      General Public License for more details.
   
      You should have received a copy of the GNU General Public
      License along with the CAPA system; see the file COPYING.  If not,
      write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
      Boston, MA 02111-1307, USA.
   
      As a special exception, you have permission to link this program
      with the TtH/TtM library and distribute executables, as long as you
      follow the requirements of the GNU GPL in regard to all of the
      software in the executable aside from TtH/TtM.
   */
   
 /*------------------------------------------------------------------------*/  /*------------------------------------------------------------------------*/
 /*         capaLexerDef.flex   created by Isaac Tsai Jul 15 1996          */  /*         capaLexerDef.flex   created by Isaac Tsai Jul 15 1996          */
 /*                             added /END(variable)                       */  /*                             added /END(variable)                       */
Line 17 Line 41
 /*------------------------------------------------------------------------*/  /*------------------------------------------------------------------------*/
 /**************************************************************************/  /**************************************************************************/
   
   %option stack
   
 %{  %{
   
 #include <stdio.h>  #include <stdio.h>
Line 28 Line 54
 #include <unistd.h>       /* access() */  #include <unistd.h>       /* access() */
 #endif  #endif
   
 #include "capaToken.h"    /* from YACC -d capaGrammarDef.y */  #define YYSTYPE Symbol*
 #include "capaCommon.h"   /* capa_access() */  #include "capaCommon.h"   /* capa_access() */
 #include "capaParser.h"   /* _symbol structure def */  #include "capaParser.h"   /* _symbol structure def */
   #include "capaToken.h"    /* from YACC -d capaGrammarDef.y */
 #include "lex_debug.h"    /* defined RETURN(xxx) macro */  #include "lex_debug.h"    /* defined RETURN(xxx) macro */
   
   
Line 216  void newyy_input (char *buf,int *result, Line 243  void newyy_input (char *buf,int *result,
     if ( Lexi_buf[Input_idx] == NULL ) { \      if ( Lexi_buf[Input_idx] == NULL ) { \
       Lexi_buf[Input_idx] = (char *)capa_malloc(sizeof(char)*LEX_BUFLEN+1,1); out_of_char=1; \        Lexi_buf[Input_idx] = (char *)capa_malloc(sizeof(char)*LEX_BUFLEN+1,1); out_of_char=1; \
     } else { \      } else { \
       if (!Lexi_buf[Input_idx][Lexi_pos[Input_idx]]) { /* test if the line buffer is empty or at the end */ \        if (!Lexi_buf[Input_idx][Lexi_pos[Input_idx] ]) { /* test if the line buffer is empty or at the end */ \
         out_of_char=1; \          out_of_char=1; \
       } \        } \
     } \      } \
     if( out_of_char ) { \      if( out_of_char ) { \
       if (fgets(Lexi_buf[Input_idx],LEX_BUFLEN-1,Input_stream[Input_idx])==NULL) { /* read in one line */ \        if (fgets(Lexi_buf[Input_idx],LEX_BUFLEN-1,Input_stream[Input_idx])==NULL) { /* read in one line */ \
         LIDBUG_PR2("<<yy_input() fgets() returns NULL, input index=%d>>\n",Input_idx); \          LIDBUG_PR2("<<yy_input() fgets() returns NULL, input index=%d>>\n",Input_idx); \
         if( (Input_idx > 0) && ( Lexi_buf[Input_idx][Lexi_pos[Input_idx]] == '\0') ) { \          if( (Input_idx > 0) && ( Lexi_buf[Input_idx][Lexi_pos[Input_idx] ] == '\0') ) { \
           LIDBUG_PR2("<<yy_input() close an input stream, input index=%d>>\n",Input_idx); \            LIDBUG_PR2("<<yy_input() close an input stream, input index=%d>>\n",Input_idx); \
           fclose(Input_stream[Input_idx]); \            fclose(Input_stream[Input_idx]); \
           capa_mfree((char *)Lexi_buf[Input_idx]); \            capa_mfree((char *)Lexi_buf[Input_idx]); \
Line 279  void newyy_input (char *buf,int *result, Line 306  void newyy_input (char *buf,int *result,
        first_run=0; \         first_run=0; \
        yyin = Input_stream[Input_idx]; LIDBUG_PR1("<<yy_input() startup>>\n"); \         yyin = Input_stream[Input_idx]; LIDBUG_PR1("<<yy_input() startup>>\n"); \
     } \      } \
     if (!Lexi_buf[Input_idx][Lexi_pos[Input_idx]]) { /* test if the line buffer is empty or at the end */ \      if (!Lexi_buf[Input_idx][Lexi_pos[Input_idx] ]) { /* test if the line buffer is empty or at the end */ \
       if (fgets(Lexi_buf[Input_idx],LEX_BUFLEN-1,Input_stream[Input_idx])==NULL) { /* read in one line */ \        if (fgets(Lexi_buf[Input_idx],LEX_BUFLEN-1,Input_stream[Input_idx])==NULL) { /* read in one line */ \
         LIDBUG_PR2("<<yy_input() fgets() returns NULL, input index=%d>>\n",Input_idx); \          LIDBUG_PR2("<<yy_input() fgets() returns NULL, input index=%d>>\n",Input_idx); \
         if( (Input_idx > 0) && ( Lexi_buf[Input_idx][Lexi_pos[Input_idx]] == '\0') ) { \          if( (Input_idx > 0) && ( Lexi_buf[Input_idx][Lexi_pos[Input_idx] ] == '\0') ) { \
           LIDBUG_PR2("<<yy_input() close an input stream, input index=%d>>\n",Input_idx); \            LIDBUG_PR2("<<yy_input() close an input stream, input index=%d>>\n",Input_idx); \
           fclose(Input_stream[Input_idx]); \            fclose(Input_stream[Input_idx]); \
           Input_idx--; \            Input_idx--; \
Line 708  EndLine    ([\r][\n]|[\n]) Line 735  EndLine    ([\r][\n]|[\n])
 [Uu][Nn][Ii][Tt]             |  [Uu][Nn][Ii][Tt]             |
 [Uu][Nn][Ii][Tt][Ss]         { LLDBUG_PR1("[UNIT]");    RETURN(ANS_UNIT); }  [Uu][Nn][Ii][Tt][Ss]         { LLDBUG_PR1("[UNIT]");    RETURN(ANS_UNIT); }
 [Bb][Rr]                     { LLDBUG_PR1("[SHOW_BR]"); RETURN(ANS_SHOW_BR);  }  [Bb][Rr]                     { LLDBUG_PR1("[SHOW_BR]"); RETURN(ANS_SHOW_BR);  }
   [Vv][Ee][Rr][Bb][Aa][Tt][Ii][Mm] { LLDBUG_PR1("[VERBATIM]"); RETURN(ANS_VERBATIM); }
 [Aa][Nn][Ss][Bb][Oo][Xx]     { LLDBUG_PR1("[SHOW_ANS_BOX]"); RETURN(ANS_BOX_SHOW);  }  [Aa][Nn][Ss][Bb][Oo][Xx]     { LLDBUG_PR1("[SHOW_ANS_BOX]"); RETURN(ANS_BOX_SHOW);  }
 [Hh][Ii][Nn][Tt]             { LLDBUG_PR1("[HINT]");    RETURN(ANS_HINT); }  [Hh][Ii][Nn][Tt]             { LLDBUG_PR1("[HINT]");    RETURN(ANS_HINT); }
 [Ee][Xx][Pp][Ll][Aa][Ii][Nn] { LLDBUG_PR1("[EXPLAIN]"); RETURN(ANS_EXPLAIN); }  [Ee][Xx][Pp][Ll][Aa][Ii][Nn] { LLDBUG_PR1("[EXPLAIN]"); RETURN(ANS_EXPLAIN); }
Line 1021  begin_text() { BEGIN S_TEXT; } Line 1049  begin_text() { BEGIN S_TEXT; }
 extern void  extern void
 begin_question() { LLDBUG_PR1("[<S_TEXT>]");   begin_question() { LLDBUG_PR1("[<S_TEXT>]"); 
                    IFcount = 0; While_idx=0; /* initialize some stacks */                     IFcount = 0; While_idx=0; /* initialize some stacks */
                    End_of_input = 0; YY_FLUSH_BUFFER; BEGIN S_TEXT; }                     End_of_input = 0; yy_flush_buffer(YY_CURRENT_BUFFER ); BEGIN S_TEXT; }
   
 extern void  extern void
 end_problemset() { End_of_input = 0; YY_FLUSH_BUFFER; BEGIN S_TEXT; }  end_problemset() { End_of_input = 0; yy_flush_buffer(YY_CURRENT_BUFFER ); BEGIN S_TEXT; }
   
   
 /* ========================================================================================== */  /* ========================================================================================== */
Line 1098  input()                    /* ARGUMENTS: Line 1126  input()                    /* ARGUMENTS:
        startup=0;         startup=0;
        yyin = Input_stream[Input_idx];         yyin = Input_stream[Input_idx];
   }    }
   if (!Lexi_buf[Input_idx][Lexi_pos[Input_idx]]) {    if (!Lexi_buf[Input_idx][Lexi_pos[Input_idx] ]) {
     if (fgets(Lexi_buf[Input_idx],LEX_BUFLEN-1,Input_stream[Input_idx])==NULL) {       if (fgets(Lexi_buf[Input_idx],LEX_BUFLEN-1,Input_stream[Input_idx])==NULL) { 
       /* EOF? */        /* EOF? */
       /* no use in flex        /* no use in flex
Line 1556  void newyy_input (char *buf,int *result, Line 1584  void newyy_input (char *buf,int *result,
  if ( Lexi_buf[Input_idx] == NULL ) {    if ( Lexi_buf[Input_idx] == NULL ) { 
    Lexi_buf[Input_idx] = (char *)capa_malloc(sizeof(char)*LEX_BUFLEN+1,1); out_of_char=1;     Lexi_buf[Input_idx] = (char *)capa_malloc(sizeof(char)*LEX_BUFLEN+1,1); out_of_char=1;
  } else {    } else { 
    if (!Lexi_buf[Input_idx][Lexi_pos[Input_idx]]) {      if (!Lexi_buf[Input_idx][Lexi_pos[Input_idx] ]) { 
      /* test if the line buffer is empty or at the end */        /* test if the line buffer is empty or at the end */ 
      out_of_char=1;        out_of_char=1; 
    }      } 
Line 1565  void newyy_input (char *buf,int *result, Line 1593  void newyy_input (char *buf,int *result,
    if (fgets(Lexi_buf[Input_idx],LEX_BUFLEN-1,Input_stream[Input_idx])==NULL) {      if (fgets(Lexi_buf[Input_idx],LEX_BUFLEN-1,Input_stream[Input_idx])==NULL) { 
      /* read in one line */        /* read in one line */ 
      LIDBUG_PR2("<<yy_input() fgets() returns NULL, input index=%d>>\n",Input_idx);        LIDBUG_PR2("<<yy_input() fgets() returns NULL, input index=%d>>\n",Input_idx); 
      if( (Input_idx > 0) && ( Lexi_buf[Input_idx][Lexi_pos[Input_idx]] == '\0') ) {        if( (Input_idx > 0) && ( Lexi_buf[Input_idx][Lexi_pos[Input_idx] ] == '\0') ) { 
        LIDBUG_PR2("<<yy_input() close an input stream, input index=%d>>\n",Input_idx);          LIDBUG_PR2("<<yy_input() close an input stream, input index=%d>>\n",Input_idx); 
        fclose(Input_stream[Input_idx]);          fclose(Input_stream[Input_idx]); 
        capa_mfree((char *)Lexi_buf[Input_idx]);          capa_mfree((char *)Lexi_buf[Input_idx]); 

Removed from v.1.6  
changed lines
  Added in v.1.14


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>