Diff for /loncom/homework/CAPA-converter/capaLexerDef.flex between versions 1.3 and 1.4

version 1.3, 2000/05/15 20:33:33 version 1.4, 2000/07/06 21:06:22
Line 140  extern        Problem_t         *LexiPro Line 140  extern        Problem_t         *LexiPro
 extern        Problem_t         *LastProblem_p;  extern        Problem_t         *LastProblem_p;
 int           first_run=1;  int           first_run=1;
 int           Stop_Parser;  int           Stop_Parser;
   static        int dosend=1;
   static        int firstparam=1;
 #define  FLEX  #define  FLEX
   
 #define  YY_STACK_USED   1  /* for yy_push_state(), yy_pop_state() */  #define  YY_STACK_USED   1  /* for yy_push_state(), yy_pop_state() */
Line 360  EndLine    ([\r][\n]|[\n]) Line 362  EndLine    ([\r][\n]|[\n])
 %x  S_COMMENT   S_HINT S_HINTEXLAINX  S_IMPORT S_EXPLAIN S_ENDX    S_UNIT   S_IGNORE    %x  S_COMMENT   S_HINT S_HINTEXLAINX  S_IMPORT S_EXPLAIN S_ENDX    S_UNIT   S_IGNORE  
 %x  S_SKIP      S_VARIABLE S_LET  S_DEFINE     S_TEXT    S_MAP     S_FIGURE S_ANSWER   %x  S_SKIP      S_VARIABLE S_LET  S_DEFINE     S_TEXT    S_MAP     S_FIGURE S_ANSWER 
 %x  S_STRING    S_ANSCONTINUE     S_TRUE_FALSE_STMT      S_IF_SKIP S_WHILE_SKIP  %x  S_STRING    S_ANSCONTINUE     S_TRUE_FALSE_STMT      S_IF_SKIP S_WHILE_SKIP
 %x  S_NEXT_LINE S_VERB  %x  S_NEXT_LINE S_VERB   S_ECHO S_STRINGINANS
 %array  %array
   
   
Line 380  EndLine    ([\r][\n]|[\n]) Line 382  EndLine    ([\r][\n]|[\n])
   
 <S_COMMENT>{  <S_COMMENT>{
 {EndLine}{Spaces}"//"[^\n]*$ {LLDBUG_PRL2("[COMMENT<%s>]\n",yytext);   {EndLine}{Spaces}"//"[^\n]*$ {LLDBUG_PRL2("[COMMENT<%s>]\n",yytext); 
       send("%s",yytext);        send("# %s",&yytext[2]);
                              }                               }
 [^\n]*{EndLine}      {  [^\n]*{EndLine}      {
                        send("\n"); BEGIN S_TEXT;                         send("\n"); BEGIN S_TEXT;
Line 394  EndLine    ([\r][\n]|[\n]) Line 396  EndLine    ([\r][\n]|[\n])
 }  }
 ^{Spaces}"/VERB"                 {   ^{Spaces}"/VERB"                 { 
                                    LLDBUG_PRL1("[VERBATIM]");                                     LLDBUG_PRL1("[VERBATIM]");
    Dynamic_buf = (char *)capa_malloc(sizeof(char),10);  
    Dynamic_buf_max = 10;  
    Dynamic_buf_cur = 0;  
    Dynamic_buf[0] = '\0';  
                                    BEGIN S_VERB;                                      BEGIN S_VERB; 
      start_mode(MODE_OUTTEXT,NULL);
      send("<PRE>\n");
                                  }                                   }
 ^{Spaces}"/HIN"{Alpha}*{Spaces}  { LLDBUG_PRL1("[HIN]");   ^{Spaces}"/HIN"{Alpha}*{Spaces}  { LLDBUG_PRL1("[HIN]"); 
                                    start_mode(MODE_BLOCK,                                     start_mode(MODE_BLOCK,
Line 407  EndLine    ([\r][\n]|[\n]) Line 407  EndLine    ([\r][\n]|[\n])
                                  }                                   }
 ^{Spaces}"/EXP"{Alpha}*{Spaces}  { start_mode(MODE_BLOCK,"condition=&explanation");  ^{Spaces}"/EXP"{Alpha}*{Spaces}  { start_mode(MODE_BLOCK,"condition=&explanation");
                                    LLDBUG_PRL1("[EXP]"); Current_char_p = String_buf;  BEGIN S_EXPLAIN; }                                     LLDBUG_PRL1("[EXP]"); Current_char_p = String_buf;  BEGIN S_EXPLAIN; }
 ^{Spaces}"/IMP"{Alpha}*{Space}+  { LLDBUG_PRL1("[IMP]"); BEGIN S_IMPORT; }  ^{Spaces}"/IMP"{Alpha}*{Space}+  { LLDBUG_PRL1("[IMP]"); BEGIN S_IMPORT; end_mode(); }
 ^{Spaces}"/END"                  { LLDBUG_PRL1("[END]");    ^{Spaces}"/END"                  { LLDBUG_PRL1("[END]");  
                                     if ( (LexiProblem_p !=NULL) &&                                       if ( (LexiProblem_p !=NULL) && 
  (LexiProblem_p->question != NULL) &&    (LexiProblem_p->question != NULL) && 
Line 417  EndLine    ([\r][\n]|[\n]) Line 417  EndLine    ([\r][\n]|[\n])
     } else {      } else {
       EndText_p=NULL;        EndText_p=NULL;
     }      }
     End_of_input = 1; BEGIN S_IGNORE;RETURN(CAPA_END);       End_of_input = 1; BEGIN S_IGNORE; 
                                   }                                    }
 ^{Spaces}"/START"[^\n]*          { LLDBUG_PRL1("[START]");    ^{Spaces}"/START"[^\n]*          { LLDBUG_PRL1("[START]");  
                                     if (LexiProblem_p !=NULL &&                                       if (LexiProblem_p !=NULL && 
Line 427  EndLine    ([\r][\n]|[\n]) Line 427  EndLine    ([\r][\n]|[\n])
       StartText_p=NULL;        StartText_p=NULL;
     }      }
     BEGIN S_TEXT;      BEGIN S_TEXT;
     RETURN(CAPA_START);   
                                   }                                    }
                                                                       
 ^{Spaces}"/END"{Spaces}[\(]{Spaces}      { LLDBUG_PRL1("[END()]"); BEGIN S_ENDX; }  ^{Spaces}"/END"{Spaces}[\(]{Spaces}      { LLDBUG_PRL1("[END()]"); BEGIN S_ENDX; }
 ^"/DEF"                       { Bcount = 0; BEGIN S_DEFINE; RETURN(CAPA_DEF); }  ^"/DEF"                       { Bcount = 0; BEGIN S_DEFINE; RETURN(CAPA_DEF); }
 ^{Spaces}"/ANS"               { LLDBUG_PRL2("[ANS(%s)]",yytext); Pcount = 0; BEGIN S_ANSWER; RETURN(CAPA_ANS); }  ^{Spaces}"/ANS"               { LLDBUG_PRL2("[ANS(%s)]",yytext); 
 ^{Spaces}"/SUBJECTIVE"        { LLDBUG_PRL1("[SUBJECTIVE ANSWER]"); Pcount = 0; BEGIN S_ANSWER; RETURN(CAPA_SUBJ); }                                  Pcount = 0; 
 ^{Spaces}"/MAP"               { LLDBUG_PRL1("[MAP]");  Pcount = 0; BEGIN S_MAP;   RETURN(CAPA_MAP); }                                  BEGIN S_ANSWER; 
 ^{Spaces}"/RMAP"              { LLDBUG_PRL1("[RMAP]"); Pcount = 0; BEGIN S_MAP;   RETURN(CAPA_RMAP); }                                  end_mode();
    start_mode(MODE_ANSWER,NULL);
                                   send("<caparesponse answer=\""); 
    dosend=1;
    firstparam=1;
                                 }
   ^{Spaces}"/SUBJECTIVE"        { LLDBUG_PRL1("[SUBJECTIVE ANSWER]"); 
                                   Pcount = 0; 
                                   BEGIN S_ANSWER;
                                   end_mode();
                                   send("<capasubjectiveresponse");
    dosend=1;    
    firstparam=1;                            
                                 }
   ^{Spaces}"/MAP"               { LLDBUG_PRL1("[MAP]");  Pcount = 0; BEGIN S_MAP; start_mode(MODE_SCRIPT,NULL);send("&map("); }
   ^{Spaces}"/RMAP"              { LLDBUG_PRL1("[RMAP]"); Pcount = 0; BEGIN S_MAP; start_mode(MODE_SCRIPT,NULL);send("&rmap("); }
 ^{Spaces}"/ENDWHILE"([^\n])*          { long int  file_pos;         ^{Spaces}"/ENDWHILE"([^\n])*          { long int  file_pos;       
                                 int   top_item, input_idx;                                  int   top_item, input_idx;
                                 LLDBUG_PRL2("[ENDWHILE While_idx=<%d>]\n",While_idx);                                  LLDBUG_PRL2("[ENDWHILE While_idx=<%d>]\n",While_idx);
Line 495  EndLine    ([\r][\n]|[\n]) Line 509  EndLine    ([\r][\n]|[\n])
                                 send("\n"); }                                  send("\n"); }
 [\\]{Space}*{EndLine}         { LLDBUG_PR2("[\\EoL continue](%s)",yytext); /* continuation on next line */ }                         [\\]{Space}*{EndLine}         { LLDBUG_PR2("[\\EoL continue](%s)",yytext); /* continuation on next line */ }                       
 ^{Spaces}"//"[^\n]*$      { LLDBUG_PRL2("[COMMENT<%s>]\n",yytext);  ^{Spaces}"//"[^\n]*$      { LLDBUG_PRL2("[COMMENT<%s>]\n",yytext);
                                         start_mode(MODE_COMMENT,NULL);                                           start_mode(MODE_SCRIPT,NULL); 
                                         send("%s\n",yytext);                                          send("# %s\n",&yytext[2]);
  BEGIN S_COMMENT;   BEGIN S_COMMENT;
                                       }                                        }
   
 [^/\n\\]+$  |  [^/\n\\]+$  |
 [/]         |   [/]         | 
 [\\]                          {  start_mode(MODE_OUTTEXT,NULL);  [\\]                          {  start_mode(MODE_OUTTEXT,NULL);
                                  yylval = (Symbol *) capa_malloc(1, sizeof(Symbol));  
                                 yylval->s_str = strsave(yytext);  
                                 LLDBUG_PR2("[TEXT_LINE<%s>]",yytext);                                  LLDBUG_PR2("[TEXT_LINE<%s>]",yytext);
         //RETURN(TEXT_LINE);    send(yytext);
       }        }
 ([^/\n])+[/] |  ([^/\n])+[/] |
 ([^/\n])+[\\]                 { /* matches anything until a '/' or a '\' */  ([^/\n])+[\\]                 { /* matches anything until a '/' or a '\' */
Line 638  EndLine    ([\r][\n]|[\n]) Line 650  EndLine    ([\r][\n]|[\n])
 }  }
 <S_EXPLAIN>{  <S_EXPLAIN>{
 {EndLine}                     {  LLDBUG_PR1("[CR explain]");  {EndLine}                     {  LLDBUG_PR1("[CR explain]");
                                  yylval = (Symbol *) capa_malloc(1, sizeof(Symbol));                                   send("\n"); 
                 *Current_char_p++ = '\n'; *Current_char_p = '\0';                                   BEGIN S_TEXT;
                          yylval->s_str = strsave(String_buf);  
                                  BEGIN S_TEXT; RETURN(EXPLAIN_LINE);   
                               }                                }
 }  }
   
Line 694  EndLine    ([\r][\n]|[\n]) Line 704  EndLine    ([\r][\n]|[\n])
 }  }
   
 <S_ANSWER>{  <S_ANSWER>{
 [Pp][Ll][Uu][Ss]             { LLDBUG_PR1("[PLUS]");  RETURN(ANS_PLUS); }  [Pp][Ll][Uu][Ss]             { LLDBUG_PR1("[PLUS]"); add_delayed("+");}
 [Mm][Ii][Nn][Uu][Ss]         { LLDBUG_PR1("[MINUS]"); RETURN(ANS_MINUS); }  [Mm][Ii][Nn][Uu][Ss]         { LLDBUG_PR1("[MINUS]"); add_delayed("-");}
 [Cc][Ss]                     { LLDBUG_PR1("[CS]");    RETURN(ANS_CS); }  
 [Cc][Ii]                     { LLDBUG_PR1("[CI]");    RETURN(ANS_CI); }  [Cc][Ss]                     { LLDBUG_PR1("[CS]"); send("cs");}
 [Mm][Cc]                     { LLDBUG_PR1("[MC]");    RETURN(ANS_MC); }  [Cc][Ii]                     { LLDBUG_PR1("[CI]"); send("ci");}
   [Mm][Cc]                     { LLDBUG_PR1("[MC]"); send("mc");}
   [Ff][Mm][Ll]                 { LLDBUG_PR1("[FORMULA]"); send("fml"); }
   
 [Oo][Nn]                     |  [Oo][Nn]                     |
 [Yy][Ee][Ss]                 { LLDBUG_PR1("[ON]");    RETURN(ANS_ON); }  [Yy][Ee][Ss]                 { LLDBUG_PR1("[ON]"); send("on");}
 [Oo][Ff][Ff]                 |  [Oo][Ff][Ff]                 |
 [Nn][Oo]                     { LLDBUG_PR1("[OFF]");   RETURN(ANS_OFF); }  [Nn][Oo]                     { LLDBUG_PR1("[OFF]"); send("off");}
 [Ff][Mm][Ll]                 { LLDBUG_PR1("[FORMULA]");   RETURN(ANS_FORMULA); }  [Ff][Mm][Tt]                 { LLDBUG_PR1("[FMT]"); }
 [Ff][Mm][Tt]                 { LLDBUG_PR1("[FMT]");   RETURN(ANS_FMT); }  [Uu][Nn][Ff][Mm][Tt]         { LLDBUG_PR1("[UNFMT]"); }
 [Uu][Nn][Ff][Mm][Tt]         { LLDBUG_PR1("[UNFMT]"); RETURN(ANS_UNFMT); }  
 [,:%=@#-]                  { LLDBUG_PR2("[symbol(%s)]",yytext); return(yytext[0]); }  [,=]                  { LLDBUG_PR2("[symbol(%s)]",yytext);}
 "<"                          { LLDBUG_PR2("[symbol(%s)]",yytext); return(yytext[0]); }  [%]                  { LLDBUG_PR2("[symbol(%s)]",yytext); 
 ">"                          { LLDBUG_PR2("[symbol(%s)]",yytext); return(yytext[0]); }                         if (dosend==1) send("%s",yytext);
 [Ss][Ii][Gg]                 { LLDBUG_PR2("[SIG(%s)]",yytext);  RETURN(ANS_SIG); }                         if (dosend==2) add_delayed("%s",yytext);
 [Tt][Oo][Ll]                 { LLDBUG_PR2("[tol(%s)]",yytext);  RETURN(ANS_TOLERANCE); }                       }
 [Ss][Tt][Rr]                 { LLDBUG_PR1("[STR]");   RETURN(ANS_COMPARE); }  [:@#-]                  { LLDBUG_PR2("[symbol(%s)]",yytext); 
 [Ww][Gg][Tt]                 { LLDBUG_PR1("[WGT]");   RETURN(ANS_WEIGHT); }                            if (dosend==1) send("%s",yytext);
                             if (dosend==2) add_delayed("%s",yytext);
                           }
   "<"                          { LLDBUG_PR2("[symbol(%s)]",yytext);
                                  if (dosend==1) send("%s",yytext);
                                  if (dosend==2) add_delayed("%s",yytext);
                                }
   ">"                          { LLDBUG_PR2("[symbol(%s)]",yytext);
                                  if (dosend==1) send("%s",yytext);
                                  if (dosend==2) add_delayed("%s",yytext);
                                }
   
 [Pp][Cc][Rr]                 |  [Pp][Cc][Rr]                 |
 [Hh][Gg][Rr]                 { RETURN(ANS_PCREDIT); }  [Hh][Gg][Rr]                 { if (firstparam) firstparam=0; else add_delayed("\">\n\t");
 [Pp][Aa][Tt][Hh]             { RETURN(ANS_PATH); }                                 add_delayed("<param type=\"hgr\" value=\"on|off\" default=\""); 
 [Cc][Aa][Ll][Cc]             { RETURN(ANS_CALC); }                                 dosend=2;
 [Tt][Rr][Yy]                 |                               }
 [Tt][Rr][Ii][Ee][Ss]         { LLDBUG_PR1("[TRY]");     RETURN(ANS_TRY); }  [Tt][Oo][Ll]                 { LLDBUG_PR2("[tol(%s)]",yytext);
 [Uu][Nn][Ii][Tt]             |                                 if (firstparam) firstparam=0; else add_delayed("\">\n\t");
 [Uu][Nn][Ii][Tt][Ss]         { LLDBUG_PR1("[UNIT]");    RETURN(ANS_UNIT); }         add_delayed("<param type=\"tol\" value=\"tolerance\" default=\""); 
 [Bb][Rr]                     { LLDBUG_PR1("[SHOW_BR]"); RETURN(ANS_SHOW_BR);  }                                 dosend=2;
 [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);  }  [Ss][Ii][Gg]                 { 
 [Hh][Ii][Nn][Tt]             { LLDBUG_PR1("[HINT]");    RETURN(ANS_HINT); }                                 LLDBUG_PR2("[SIG(%s)]",yytext); 
 [Ee][Xx][Pp][Ll][Aa][Ii][Nn] { LLDBUG_PR1("[EXPLAIN]"); RETURN(ANS_EXPLAIN); }                                 if (firstparam) firstparam=0; else add_delayed("\">\n\t");
 [Ee][Xx][Tt][Ee][Rr][Nn][Aa][Ll]  { LLDBUG_PR1("[EXTERNAL]"); RETURN(ANS_EXTERNAL); }         add_delayed("<param type=\"sig\" value=\"int,range,0-12\" default=\""); 
                                  dosend=2;
                                }
   
   [Ss][Tt][Rr]                 { LLDBUG_PR1("[STR]"); send("\" str="); dosend=1; }
 [Ee][Vv][Aa][Ll]             |  [Ee][Vv][Aa][Ll]             |
 [Ee][Vv][Aa][Ll][Uu][Aa][Tt][Ee]             { LLDBUG_PR1("[EVAL]"); RETURN(ANS_EVAL); }  [Ee][Vv][Aa][Ll][Uu][Aa][Tt][Ee] { LLDBUG_PR1("[EVAL]");send("\" eval="); dosend=1;}
   [Uu][Nn][Ii][Tt]             |
   [Uu][Nn][Ii][Tt][Ss]         { LLDBUG_PR1("[UNIT]"); send("\" units=\""); dosend=1;}
   
   [Ee][Xx][Tt][Ee][Rr][Nn][Aa][Ll]  { LLDBUG_PR1("[EXTERNAL]"); dosend=0; }
   [Aa][Nn][Ss][Bb][Oo][Xx]     { LLDBUG_PR1("[SHOW_ANS_BOX]"); dosend=0; }
   [Vv][Ee][Rr][Bb][Aa][Tt][Ii][Mm] { LLDBUG_PR1("[VERBATIM]"); dosend=0; }
   [Bb][Rr]                     { LLDBUG_PR1("[SHOW_BR]"); dosend=0; }
   [Pp][Aa][Tt][Hh]             { send("\" path=\""); dosend=0; }
   [Cc][Aa][Ll][Cc]             { send("\" calc=\""); dosend=0; }
   
   [Ee][Xx][Pp][Ll][Aa][Ii][Nn] { LLDBUG_PR1("[EXPLAIN]"); dosend=0; }
   [Hh][Ii][Nn][Tt]             { LLDBUG_PR1("[HINT]"); dosend=0; }
   [Tt][Rr][Yy]                 |
   [Tt][Rr][Ii][Ee][Ss]         { LLDBUG_PR1("[TRY]"); dosend=0; }
   [Ww][Gg][Tt]                 { LLDBUG_PR1("[WGT]"); dosend=0; }
   
 [\)]                         { LLDBUG_PR1("[)]"); Pcount--;   [\)]                         { LLDBUG_PR1("[)]"); Pcount--; 
                                if(Pcount==0) {                                 if(Pcount==0) {
                                    BEGIN S_ANSCONTINUE;                                      BEGIN S_ANSCONTINUE; 
                                }                                 }
                                return(yytext[0]);                                  send("\">\n\t");
          dosend=1;
          flush_delayed();
          if (!firstparam) send("\">");
          send("\n\t<textline></textline>\n</caparesponse>\n");
                              }                               }
 }  }
   
 <S_VARIABLE,S_TRUE_FALSE_STMT,S_LET,S_ANSWER,S_MAP>{  <S_VARIABLE,S_TRUE_FALSE_STMT,S_LET,S_MAP,S_ANSWER>{
 {Alpha}{AlphaNum}*             { LLDBUG_PR2("[ID<%s>]",yytext);LLDBUG_PR2("[SYMB CNT=<%d>]", Symb_count);   {Alpha}{AlphaNum}*             { LLDBUG_PR2("[ID<%s>]",yytext);
 send("$%s",yytext);                                    LLDBUG_PR2("[SYMB CNT=<%d>]", Symb_count); 
                                    if (dosend==1) send("$%s",yytext); 
                                    if (dosend==2) add_delayed("$%s",yytext); 
                                }                                 }
   
 {Alpha}{AlphaNum}*{Space}*[(]  { char aline[MAX_FUNC_NAME];  {Alpha}{AlphaNum}*{Space}*[(]  { if (dosend==1) send("&%s",yytext);
                                  int  i;                                             if (dosend==2) add_delayed("&%s",yytext);
  send("&%s",yytext);  
  Pcount++;   Pcount++;
                                }                                 }
 {Alpha}{AlphaNum}*{Space}*[\[]  {  char aline[MAX_FUNC_NAME];  {Alpha}{AlphaNum}*{Space}*[\[]  {  char aline[MAX_FUNC_NAME];
Line 771  send("$%s",yytext); Line 820  send("$%s",yytext);
 {Number}+[Ee]{Number}+    |  {Number}+[Ee]{Number}+    |
 {Number}+[Ee]"-"{Number}+ |  {Number}+[Ee]"-"{Number}+ |
 {Number}+"\."{Number}*    |  {Number}+"\."{Number}*    |
 "\."{Number}+             {    "\."{Number}+             {  LLDBUG_PR2("[REAL<%s>]",yytext);
                              LLDBUG_PR2("[REAL<%s>]",yytext);       if(dosend==1) send("%s",yytext);
      send(yytext);       if(dosend==2) add_delayed("%s",yytext);
   }    }
   
 {Number}+                 {    {Number}+                 {  LLDBUG_PR2("[INT<%s>]",yytext);
                              LLDBUG_PR2("[INT<%s>]",yytext);                               if (dosend==1) send("%s",yytext);
                              send(yytext);                               if (dosend==2) add_delayed("%s",yytext);
   }    }
 [\(]                      { LLDBUG_PR1("[dis let ans map (]"); Pcount++; if (Pcount > 1 ) {send(yytext);} }  
 [\[]                      { LLDBUG_PR1("[dis let ans map '[']");         return(yytext[0]); }  [\[]                      { LLDBUG_PR1("[dis let ans map '[']");         return(yytext[0]); }
 [\]]                      { LLDBUG_PR1("[dis let ans map ']']");         return(yytext[0]); }  [\]]                      { LLDBUG_PR1("[dis let ans map ']']");         return(yytext[0]); }
 {Space}+                  { /* LLDBUG_PR1("[SP ignored]");  Ignore Spaces */ }  {Space}+                  { /* LLDBUG_PR1("[SP ignored]");  Ignore Spaces */ }
 [\"]                      { LLDBUG_PR1("[TF,V,LET,ANS,MAP str\" ]");   }
   
   <S_VARIABLE,S_TRUE_FALSE_STMT,S_MAP,S_LET>{
   [\"]                      { LLDBUG_PR1("[TF,V,LET,MAP str\" ]"); 
                             Current_char_p = String_buf;                               Current_char_p = String_buf; 
     send("\"");      send("\"");
                             yy_push_state(S_STRING);                              yy_push_state(S_STRING);
                           }                            }
 }  }
   
 <S_VARIABLE,S_ANSWER>[:]{Number}+[EeFf]   {   <S_ANSWER>{
   [\"]                      { LLDBUG_PR1("[ANS str\" ]"); 
                               Current_char_p = String_buf; 
                               yy_push_state(S_STRINGINANS);
                             }
   }
   
   <S_VARIABLE,S_TRUE_FALSE_STMT,S_MAP,S_ANSWER>{
   [\(]                      { LLDBUG_PR1("[dis let ans map (]"); 
                               Pcount++; 
       if (Pcount > 1 ) {
         if (dosend==1) send(yytext);
         if (dosend==2) add_delayed(yytext);
       } 
                             }
   }
   
   <S_LET>{
   [\(]                      { LLDBUG_PR1("[dis let ans map (]"); 
                               Pcount++; 
       send(yytext);
                             }
   }
   
   <S_VARIABLE>[:]{Number}+[EeFf]   { 
                              end_delayed();                               end_delayed();
                              send("&format(");                               send("&format(");
                              flush_delayed();                               flush_delayed();
                              send(",\"%s\")",yytext+1);                               send(",\"%s\")",yytext+1);
                            }                             }
   <S_ANSWER>[:]{Number}+[EeFf]   { 
                                if (dosend) send("\" format=\"%s",yytext+1);
                              }
   
 <S_VARIABLE,S_TRUE_FALSE_STMT,S_LET,S_MAP>{  <S_VARIABLE,S_TRUE_FALSE_STMT,S_LET,S_MAP>{
 "=="                { LLDBUG_PR1("[==]"); RETURN(EQ_op);  }  "=="                { LLDBUG_PR1("[==]"); send(yytext);  }
 "!="                { LLDBUG_PR1("[!=]"); RETURN(NE_op);  }  "!="                { LLDBUG_PR1("[!=]"); send(yytext);  }
 ">"                 { LLDBUG_PR1("[>]");  RETURN(GT_op);  }  ">"                 { LLDBUG_PR1("[>]");  send(yytext);  }
 ">="                { LLDBUG_PR1("[>=]"); RETURN(GE_op);  }  ">="                { LLDBUG_PR1("[>=]"); send(yytext);  }
 "<"                 { LLDBUG_PR1("[<]");  RETURN(LT_op);  }  "<"                 { LLDBUG_PR1("[<]");  send(yytext);  }
 "<="                { LLDBUG_PR1("[<=]"); RETURN(LE_op);  }  "<="                { LLDBUG_PR1("[<=]"); send(yytext);  }
 "&&"                { LLDBUG_PR1("[&&]"); RETURN(AND_op); }  "&&"                { LLDBUG_PR1("[&&]"); send(yytext);  }
 "||"                { LLDBUG_PR1("[||]"); RETURN(OR_op);  }  "||"                { LLDBUG_PR1("[||]"); send(yytext);  }
 "//"                { if(Pcount==0) BEGIN S_SKIP;         }  "//"                { if(Pcount==0) {
    send("; #");
    BEGIN S_ECHO;
                         }
                       }
 {Operator}          { LLDBUG_PR2("[Op(%c) in VAR,TF_STMT,LET]",yytext[0]); send(yytext); }  {Operator}          { LLDBUG_PR2("[Op(%c) in VAR,TF_STMT,LET]",yytext[0]); send(yytext); }
 }  }
   
Line 865  send("$%s",yytext); Line 947  send("$%s",yytext);
                     }                      }
 }  }
   
   <S_STRINGINANS>{
   [\\][\\]            { /*char  *aptr = yytext;
    while( *aptr )   *Current_char_p++ = *aptr++;*/
                         if (dosend==1) send("%s",yytext);
         if (dosend==2) add_delayed("%s",yytext);
                       }
   [\\][\"]            { /**Current_char_p++ = '"';*/ 
                         if (dosend==1) send("%s",yytext);
         if (dosend==2) add_delayed("%s",yytext);
                       }
   [\\]{Space}*[\n]    { LLDBUG_PR2("[\\CR continue in S_STRING](%s)",yytext); /* continuation on next line */ }                       
   [\"]                { /* end of a string constant --   */
         yy_pop_state();
       }
   {EndLine}           { /* check for termination of string constant */
                         char warn_msg[WARN_MSG_LENGTH];
                         
                         sprintf(warn_msg,"STRING not terminated properly, an EoL encountered in the middle.\n%s\n",String_buf);
                         capa_msg(MESSAGE_ERROR,warn_msg);
                         yy_pop_state();
                       }
   .                   { /*char  *aptr = yytext;
    while( *aptr )   *Current_char_p++ = *aptr++;*/
                         if (dosend==1) send("%s",yytext);
         if (dosend==2) add_delayed("%s",yytext);
                       }
   }
   
 <S_LET>[\)]                  { LLDBUG_PR1("[) in LET]"); Pcount--;send(yytext); }  <S_LET>[\)]                  { LLDBUG_PR1("[) in LET]"); Pcount--;send(yytext); }
   
 <S_SKIP>{  <S_SKIP>{
Line 872  send("$%s",yytext); Line 982  send("$%s",yytext);
 {EndLine}                    { BEGIN S_TEXT; }  {EndLine}                    { BEGIN S_TEXT; }
 }  }
   
   <S_ECHO>{
   [^\n]+$                      { send(yytext); }
   {EndLine}                    { send(yytext); BEGIN S_TEXT; }
   }
   
 <S_LET,S_ANSWER,S_MAP>{  <S_LET,S_ANSWER,S_MAP>{
 [\\]{Space}*{EndLine}        { LLDBUG_PR1("[\\EoL let ans map]"); /* continuation */ }  [\\]{Space}*{EndLine}        { LLDBUG_PR1("[\\EoL let ans map]"); /* continuation */ }
 {EndLine}                    { LLDBUG_PR1("[EoL END let ans map]\n"); if(Pcount == 0) BEGIN S_TEXT; send(yytext); }  {EndLine}                    { LLDBUG_PR1("[EoL END let ans map]\n"); 
                                  if(Pcount == 0) BEGIN S_TEXT; 
                                  send(";%s",yytext); 
                                }
 }  }
   
 <S_MAP>{  <S_MAP>{
Line 953  send("$%s",yytext); Line 1071  send("$%s",yytext);
   
 <S_VERB>{  <S_VERB>{
 ^{Spaces}"/ENDVERB" { LLDBUG_PRL1("[END VERB]\n");   ^{Spaces}"/ENDVERB" { LLDBUG_PRL1("[END VERB]\n"); 
                       yylval = (Symbol *) capa_malloc(1, sizeof(Symbol));        BEGIN S_TEXT;
       yylval->s_str = strsave(Dynamic_buf);  /* ****   */        puts("\n</PRE>\n");
       yylval->s_type = S_CONSTANT;          end_mode();
       capa_mfree(Dynamic_buf);  
       Dynamic_buf_cur=-1;  
       Dynamic_buf_max=0;  
       BEGIN S_TEXT;   RETURN(VERBATIM);     
     }      }
 .*|{EndLine}         { append_dynamic_buf(yytext); }  .*|{EndLine}         { send(yytext); }
 }  }
   
 %%  %%
Line 1573  int capa_eof() Line 1687  int capa_eof()
     LexiProblem_p=NULL;      LexiProblem_p=NULL;
     /* printf("\nCAPA EOF\n"); fflush(stdout); */      /* printf("\nCAPA EOF\n"); fflush(stdout); */
   }    }
     end_mode();
   return (0);    return (0);
 #endif /*AVOIDYYINPUT*/  #endif /*AVOIDYYINPUT*/
 }  }

Removed from v.1.3  
changed lines
  Added in v.1.4


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