--- capa/capa51/pProj/capaLexerDef.flex 1999/09/28 21:26:20 1.1 +++ capa/capa51/pProj/capaLexerDef.flex 2000/02/22 18:19:02 1.6 @@ -352,10 +352,10 @@ EndLine ([\r][\n]|[\n]) %k 10000 %p 10000 %n 1000 -%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_STRING S_ANSCONTINUE S_TRUE_FALSE_STMT S_IF_SKIP S_WHILE_SKIP -%x S_NEXT_LINE S_RANDOMORDER S_VERB +%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_STRING S_ANSCONTINUE S_TRUE_FALSE_STMT S_IF_SKIP S_WHILE_SKIP +%x S_NEXT_LINE S_RANDOMORDER S_VERB %array @@ -380,8 +380,8 @@ EndLine ([\r][\n]|[\n]) ^{Spaces}"/BEG" { LLDBUG_PRL1("[LET]"); Pcount = 0; init_funcstack(); BEGIN S_LET; RETURN(CAPA_LET); } ^{Spaces}"/VERB" { LLDBUG_PRL1("[VERBATIM]"); - Dynamic_buf = (char *)capa_malloc(sizeof(char),1); - Dynamic_buf_max = 1; + Dynamic_buf = (char *)capa_malloc(sizeof(char),10); + Dynamic_buf_max = 10; Dynamic_buf_cur = 0; Dynamic_buf[0] = '\0'; BEGIN S_VERB; @@ -789,7 +789,7 @@ EndLine ([\r][\n]|[\n]) } } -[:]{Number}+[EeFf] { char num[ONE_TWO_EIGHT], fmt[SIXTEEN]; +[:]{Number}+[EeFf] { char num[ONE_TWO_EIGHT], fmt[SMALL_LINE_BUFFER]; int i; LLDBUG_PR2("[FORMAT<%s>]",yytext); for(i=0;i{ -[\)] { LLDBUG_PR1("[) in TRUE_FALSE]"); Pcount--; if(Pcount == 0) BEGIN S_NEXT_LINE; return(yytext[0]); } +[\)] { LLDBUG_PRL1("[) in TRUE_FALSE]"); Pcount--; if(Pcount == 0) BEGIN S_NEXT_LINE; return(yytext[0]); } [\\]{Space}*{EndLine} { LLDBUG_PR2("[\\EoL continue in S_TRUE_FALSE_STMT](%s)",yytext); /* continuation on next line */ } {EndLine} { LLDBUG_PR1("[EoL within /IF()]\n"); RETURN(EoL); } . { char warn_msg[WARN_MSG_LENGTH]; @@ -949,7 +949,10 @@ EndLine ([\r][\n]|[\n]) [^\n]*$ { LLDBUG_PRL2("[SkipIF anything ]",IFcount); } } { -([.]*){EndLine} { /* this ignores everything until it hits an EoL */ BEGIN S_TEXT; } +([.]*){EndLine} { /* this ignores everything until it hits an EoL */ + LLDBUG_PRL2("[ skip \'%s\' until EoL]\n",yytext); + BEGIN S_TEXT; + } } { @@ -1135,6 +1138,7 @@ char * strsave(char *s) { char *p; + if (s==NULL) {return s;} p=capa_malloc(strlen(s)+1,1); strcpy(p,s); return (p); @@ -1194,7 +1198,7 @@ capa_msg(int type, char *p) } warn_msg[idx]=0; append_error(warn_msg); append_error(p); - break; + break; case MESSAGE_WARN: default: sprintf(tmp_line,", Line %d: WARNING:", Current_line[Input_idx]); @@ -1478,7 +1482,6 @@ void append_dynamic_buf(new_str) char *n if(new_str==NULL) return; len=strlen(new_str); -#define LEX_DBUG 1 #ifdef LEX_DBUG printf("before: len %d; Dynamic_buf_cur %d; Dynamic_buf_max %d\n", len,Dynamic_buf_cur,Dynamic_buf_max); @@ -1499,6 +1502,7 @@ void append_dynamic_buf(new_str) char *n #ifdef LEX_DBUG printf("after: len %d; Dynamic_buf_cur %d; Dynamic_buf_max %d\n", len,Dynamic_buf_cur,Dynamic_buf_max); + printf("Dyn_buf %s; added %s\n",Dynamic_buf,new_str); #endif /* LEX_DBUG */ } @@ -1525,8 +1529,9 @@ char* parser_status() void yyfatalerror(char*msg) { char warn_msg[WARN_MSG_LENGTH]; - sprintf(warn_msg,"Invalid character[%s]\n",yytext); + sprintf(warn_msg,"Invalid character[\'%s\']\n",yytext); capa_msg(MESSAGE_ERROR,warn_msg); + capa_msg(MESSAGE_ERROR,msg); } void yyerror(char* msg) {