diff --git a/harbour/ChangeLog b/harbour/ChangeLog index c26463c496..2d25e47857 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,20 @@ +19990626-06:20 Ryszard Glab + +* source/compiler/harbour.l + * corrected line continuation bugs + - removed yy_lex_count_lf function since this is handled by + preprocessor now + * restored the END rule + +* tests/working/linecont.prg + * moved from tests/broken to tests/working + +* tests/working/Makefile + + added linecont.prg to BAD_PRG_SOURCES section + +* doc/gmake.txt + * updated list of supported compilers + 19990625-20:15 EDT David G. Holm * tests/working/inifiles.prg - Added an error message that displays when the specified section diff --git a/harbour/doc/gmake.txt b/harbour/doc/gmake.txt index e25df9e036..a3eea6d612 100644 --- a/harbour/doc/gmake.txt +++ b/harbour/doc/gmake.txt @@ -147,9 +147,19 @@ For MSVC on Win95/WinNT: For GCC on Linux: HB_ARCHITECTURE linux HB_COMPILER gcc - -These are the only two supported compilers right now (guess which ones -I own). + +For DJGPP (GCC port for DOS) + HB_ARCHITECTURE dos + HB_COMPILER djgpp + +For Watcom C/C++ 10.x (default Makefile creates DOS4G extender executables) + HB_ARCHITECTURE dos + HB_COMPILER watcom + Note: It is possible that you will have to increase the space reserved for + DOS environment variables in order to successfuly run make utility + (Add for example: + SHELL=C:\COMMAND.COM C:\ E=2048 /P + to your CONFIG.SYS ) If you issue a "make install", it will try to install your header, executable and library files into directories given by diff --git a/harbour/source/compiler/harbour.l b/harbour/source/compiler/harbour.l index da335ef0d3..a5c250a3a0 100644 --- a/harbour/source/compiler/harbour.l +++ b/harbour/source/compiler/harbour.l @@ -65,16 +65,6 @@ static int _iOpenBracket = 0; int iIndexSets = 0; int i_INDEX_STATE = 0; -void yy_lex_count_lf( void ) -{ - char * pTmp = yytext; - while( ( pTmp = strchr(pTmp, '\n') ) ) - { - ++iLine; - ++pTmp; - } -} - %} %{ @@ -205,27 +195,27 @@ Separator {SpaceTab} %{ /* ************************************************************************ */ %} -; BEGIN LINECONT_; +[\;]+ BEGIN LINECONT_; {Separator}*\n { - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; + ++iLine; if( ! _iQuiet ) printf( "\rline: %i", iLine ); _iState=LINECONT_; + return ';'; } {Separator}*("("|")") { GenError( ERR_INCOMPLETE_STMT, yytext, NULL ); } +{Separator}*";" ; /*Ignore any repeated ';' */ {Separator}*. { - yy_lex_count_lf(); - if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; unput( yytext[ yyleng-1 ] ); - if( _iOpenBracket == 0 && (_iState==SEPARATOR || _iState==IDENTIFIER) && i_INDEX_STATE==0 ) - { - _iState=LOOKUP; - return '\n'; - } + if( i_INDEX_STATE ) + BEGIN INDEX; else - _iState=LINECONT_; + { + BEGIN 0; + return ';'; + } } %{ /* ************************************************************************ */ @@ -236,8 +226,6 @@ Separator {SpaceTab} %} "break" BEGIN BREAK_; {Separator}*\n { /* at the end of line */ - yy_lex_count_lf(); - --iLine; if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; unput( yytext[ yyleng-1 ] ); if( _iState == LOOKUP ) @@ -251,14 +239,11 @@ Separator {SpaceTab} } } {Separator}*[\[] { /* array */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; /* Clipper does not like break[] at all */ GenError( ERR_SYNTAX, yytext, NULL ); } -{Separator}*;.*\n yy_lex_count_lf(); /* ignore any text after ';' */ {Separator}*[^_a-zA-Z\[] { /* there is no identifier after "break" */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; yylval.string = yy_strdup( "BREAK" ); _iState =IDENTIFIER; @@ -266,7 +251,6 @@ Separator {SpaceTab} return IDENTIFIER; } {Separator}*. { /* an identifier follows BREAK statement */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; unput( yytext[ yyleng-1 ] ); if( _iState == LOOKUP ) @@ -286,7 +270,6 @@ Separator {SpaceTab} %} "case" BEGIN CASE_; {Separator}*[\:\=\|\$\%\*\,\/\]\)\}\^] { /* there is an operator after "case" */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; yylval.string = yy_strdup( "CASE" ); _iState =IDENTIFIER; @@ -294,13 +277,11 @@ Separator {SpaceTab} return IDENTIFIER; } {Separator}*[\[] { /* array */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; /* Clipper does not like case[] at all */ GenError( ERR_SYNTAX, yytext, NULL ); } {Separator}*("+="|"-="|"->") { /* operators */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; yylval.string = yy_strdup( "CASE" ); _iState =IDENTIFIER; @@ -308,12 +289,8 @@ Separator {SpaceTab} unput( yytext[ yyleng-2 ] ); return IDENTIFIER; } -{Separator}*;.*\n yy_lex_count_lf(); /* ignore any text after ';' */ {Separator}*(\n|.) { /* not operator */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; - if( yytext[ yyleng-1 ] == '\n' ) - --iLine; unput( yytext[ yyleng-1 ] ); if( _iState == LOOKUP ) { /* it is first item in the line */ @@ -333,7 +310,6 @@ Separator {SpaceTab} "do" BEGIN DO_; {Separator}+"case" { /* DO CASE statement */ if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; - yy_lex_count_lf(); _iState =DOCASE; return DOCASE; } @@ -341,13 +317,11 @@ Separator {SpaceTab} /* NOTE: we cannot decide here if it is DO WHILE * or DO while [WITH ] */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; _iState =DO; yyless( yyleng-5 ); } {Separator}+[_a-zA-Z] { /* an identifier DO id WITH */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; unput( yytext[ yyleng-1 ] ); if( _iState == LOOKUP ) @@ -362,12 +336,8 @@ Separator {SpaceTab} return IDENTIFIER; } } -{Separator}*;.*\n yy_lex_count_lf(); /* ignore any text after ';' */ {Separator}*(.|\n) { /* end of line or any operator */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; - if( yytext[ yyleng-1 ] == '\n' ) - --iLine; unput( yytext[ yyleng-1 ] ); yylval.string = yy_strdup( "DO" ); _iState =IDENTIFIER; @@ -412,19 +382,63 @@ Separator {SpaceTab} GenError( ERR_ENDDO, NULL, NULL ); return ENDDO; } -"end" { /* END can be used in one context only */ - if( _wIfCounter == 0 && _wCaseCounter == 0 && _wWhileCounter == 0 ) - GenError( ERR_ENDIF, NULL, NULL ); +%{ +/* ************************************************************************ */ +%} +"end" { BEGIN END_; } +{Separator}*[\[\(] { /* array, function call */ + if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; + if( _iState == LOOKUP ) + { /* Clipper does not like end[] & end() at the begining of line */ + GenError( ERR_ENDIF, NULL, NULL ); + } + yylval.string = yy_strdup( "END" ); + _iState =IDENTIFIER; + unput( yytext[ yyleng-1 ] ); + return IDENTIFIER; + } +{Separator}*("->"|"++"|"--") { /* operators */ + if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; + if( _iState == LOOKUP ) + { /* Clipper does not like end-> & end++ at the begining of line */ + GenError( ERR_ENDIF, NULL, NULL ); + } + yylval.string = yy_strdup( "END" ); + _iState =IDENTIFIER; + unput( yytext[ yyleng-1 ] ); + unput( yytext[ yyleng-2 ] ); + return IDENTIFIER; + } +{Separator}*[\+\-\:\=\|\$\%\*\,\/\[\]\)\}\^] { /* there is an operator after "end" */ + if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; + yylval.string = yy_strdup( "END" ); + _iState =IDENTIFIER; + unput( yytext[ yyleng-1 ] ); + return IDENTIFIER; + } +{Separator}*(.|\n) { /* not operator */ + if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; + if( yytext[ yyleng-1 ] == '\n' ) + --iLine; + unput( yytext[ yyleng-1 ] ); + if( _iState == LOOKUP ) + { /* it is first item in the line */ + _iState =END; return END; } + else + { /* there is another item in line already */ + yylval.string = yy_strdup( "END" ); + _iState =IDENTIFIER; + return IDENTIFIER; + } + } %{ /* ************************************************************************ */ %} "exit" { BEGIN EXIT_; } {Separator}*[\n] { /* EXIT last item in the line */ - yy_lex_count_lf(); - --iLine; unput( yytext[ yyleng-1 ] ); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; if( _iState == LOOKUP ) @@ -442,7 +456,6 @@ Separator {SpaceTab} } } {Separator}+[fFpP] { /* FUNCTION or PROCEDURE after EXIT */ - yy_lex_count_lf(); unput( yytext[ yyleng-1 ] ); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; if( _iState == LOOKUP ) @@ -457,9 +470,7 @@ Separator {SpaceTab} return IDENTIFIER; } } -{Separator}*;.*\n yy_lex_count_lf(); /* ignore any text after ';' */ {Separator}*. { /* any character (not identifier) after EXIT */ - yy_lex_count_lf(); unput( yytext[ yyleng-1 ] ); yylval.string = yy_strdup( "EXIT" ); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; @@ -473,7 +484,6 @@ Separator {SpaceTab} yylval.string = yy_strupr( yy_strdup( yytext ) ); } {Separator}+[_a-zA-Z] { /* an identifier after the EXTERNAL */ - yy_lex_count_lf(); unput( yytext[ yyleng-1 ] ); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; if( _iState == LOOKUP ) @@ -488,11 +498,7 @@ Separator {SpaceTab} return IDENTIFIER; } } -{Separator}*;.*\n yy_lex_count_lf(); /* ignore any text after ';' */ {Separator}*[^_a-zA-Z] { - yy_lex_count_lf(); - if( yytext[ yyleng-1 ] == '\n' ) - --iLine; unput( yytext[ yyleng-1 ] ); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; _iState =IDENTIFIER; @@ -506,7 +512,6 @@ Separator {SpaceTab} yylval.string = yy_strupr( yy_strdup( yytext ) ); } {Separator}+[_a-zA-Z] { /* an identifier after the FIELD */ - yy_lex_count_lf(); unput( yytext[ yyleng-1 ] ); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; if( _iState == LOOKUP ) @@ -521,11 +526,7 @@ Separator {SpaceTab} return IDENTIFIER; } } -{Separator}*;.*\n yy_lex_count_lf(); /* ignore any text after ';' */ {Separator}*[^_a-zA-Z] { - yy_lex_count_lf(); - if( yytext[ yyleng-1 ] == '\n' ) - --iLine; unput( yytext[ yyleng-1 ] ); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; _iState =IDENTIFIER; @@ -537,7 +538,6 @@ Separator {SpaceTab} %} "for" { BEGIN FOR_; } {Separator}+[_a-zA-Z] { /* an identifier after the FOR */ - yy_lex_count_lf(); unput( yytext[ yyleng-1 ] ); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; if( _iState == LOOKUP ) @@ -553,7 +553,6 @@ Separator {SpaceTab} } } {Separator}*[\(] { /* function call */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; if( _iState == LOOKUP ) { /* Clipper does not like FOR() at the begining of line */ @@ -564,12 +563,8 @@ Separator {SpaceTab} unput( yytext[ yyleng-1 ] ); return IDENTIFIER; } -{Separator}*;.*\n yy_lex_count_lf(); /* ignore any text after ';' */ {Separator}*[^_a-zA-Z] { /* there is no identifier after "FOR" */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; - if( yytext[ yyleng-1 ] == '\n' ) - --iLine; yylval.string = yy_strdup( "FOR" ); unput( yytext[ yyleng-1 ] ); _iState =IDENTIFIER; @@ -580,13 +575,11 @@ Separator {SpaceTab} %} "func"|"funct"|"functi"|"functio"|"function" { BEGIN FUNCTION_; } {Separator}+[_a-zA-Z] { - yy_lex_count_lf(); BEGIN 0; /* we can don't care about INDEX_STATE here */ unput( yytext[ yyleng-1 ] ); _iState=FUNCTION; return FUNCTION; } -{Separator}*;.*\n yy_lex_count_lf(); /* ignore any text after ';' */ {Separator}*[^_a-zA-Z] { /* Clipper needs FUNCTION in one context only */ GenError( ERR_SYNTAX, ((yytext[ yyleng-1 ]=='\n')?"FUNCTION":yytext), NULL ); } @@ -606,13 +599,11 @@ Separator {SpaceTab} */ } {Separator}*"(" { - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; unput( yytext[ yyleng-1 ] ); _iState=IIF; return IIF; } -{Separator}*;.*\n yy_lex_count_lf(); /* ignore any text after ';' */ {Separator}*[^\(] { GenError( ERR_SYNTAX, ((yytext[ yyleng-1 ]=='\n')?"IIF":yytext), NULL ); } @@ -626,7 +617,6 @@ Separator {SpaceTab} BEGIN IF_; } {Separator}*"(" { - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; unput( yytext[ yyleng-1 ] ); if( _iState == LOOKUP ) @@ -647,9 +637,7 @@ Separator {SpaceTab} {Separator}*("++"|"--")/[\n] { GenError( ERR_SYNTAX2, yytext, "IF" ); } -{Separator}*;.*\n yy_lex_count_lf(); /* ignore any text after ';' */ {Separator}*. { - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; unput( yytext[ yyleng-1 ] ); _iState =IF; @@ -660,7 +648,6 @@ Separator {SpaceTab} %} "in" BEGIN IN_; {Separator}+[_a-zA-Z] { - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; unput( yytext[ yyleng-1 ] ); if( _iState == IDENTIFIER ) @@ -673,8 +660,6 @@ Separator {SpaceTab} } } {Separator}*\n { - yy_lex_count_lf(); - --iLine; if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; unput( yytext[ yyleng-1 ] ); yylval.string =yy_strdup( "IN" ); @@ -684,9 +669,7 @@ Separator {SpaceTab} {Separator}*[0-9] { GenError( ERR_SYNTAX, yytext, NULL ); } -{Separator}*;.*\n yy_lex_count_lf(); /* ignore any text after ';' */ {Separator}*. { - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; unput( yytext[ yyleng-1 ] ); yylval.string =yy_strdup( "IN" ); @@ -698,7 +681,6 @@ Separator {SpaceTab} %} "init" BEGIN INIT_; {Separator}+[fFpP] { /* FUNCTION or PROCEDURE after INIT */ - yy_lex_count_lf(); unput( yytext[ yyleng-1 ] ); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; if( _iState == LOOKUP ) @@ -713,11 +695,7 @@ Separator {SpaceTab} return IDENTIFIER; } } -{Separator}*;.*\n yy_lex_count_lf(); /* ignore any text after ';' */ {Separator}*[^fFpP] { /* any character (not identifier) after EXIT */ - yy_lex_count_lf(); - if( yytext[ yyleng-1 ] == '\n' ) - --iLine; unput( yytext[ yyleng-1 ] ); yylval.string = yy_strdup( "INIT" ); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; @@ -729,7 +707,6 @@ Separator {SpaceTab} %} "local" BEGIN LOCAL_; {Separator}+[_a-zA-Z] { /* an identifier after LOCAL */ - yy_lex_count_lf(); unput( yytext[ yyleng-1 ] ); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; if( _iState == LOOKUP ) @@ -744,11 +721,7 @@ Separator {SpaceTab} return IDENTIFIER; } } -{Separator}*;.*\n yy_lex_count_lf(); /* ignore any text after ';' */ {Separator}*[^a-zA-Z] { /* any character (not identifier) after LOCAL */ - yy_lex_count_lf(); - if( yytext[ yyleng-1 ] == '\n' ) - --iLine; unput( yytext[ yyleng-1 ] ); yylval.string = yy_strdup( "LOCAL" ); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; @@ -760,8 +733,6 @@ Separator {SpaceTab} %} "loop" BEGIN LOOP_; {Separator}*\n { /* at the end of the line */ - yy_lex_count_lf(); - --iLine; unput( yytext[ yyleng-1 ] ); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; if( _iState == LOOKUP ) @@ -779,7 +750,6 @@ Separator {SpaceTab} } } {Separator}*. { /* any character (not LF) after LOOP */ - yy_lex_count_lf(); unput( yytext[ yyleng-1 ] ); yylval.string = yy_strdup( "LOOP" ); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; @@ -796,8 +766,6 @@ Separator {SpaceTab} "next" BEGIN NEXT_; {Separator}*[\n\;] { /* at the end of line */ if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; - if( yytext[ yyleng-1 ] == '\n' ) - --iLine; unput( yytext[ yyleng-1 ] ); if( _iState == LOOKUP ) { /* it is first item in the line */ @@ -815,7 +783,6 @@ Separator {SpaceTab} } } {Separator}*[\[\(] { /* array, function call */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; if( _iState == LOOKUP ) { /* Clipper does not like NEXT[] & NEXT() at the begining of line */ @@ -827,7 +794,6 @@ Separator {SpaceTab} return IDENTIFIER; } {Separator}*("->"|"++"|"--") { /* operators */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; if( _iState == LOOKUP ) { /* Clipper does not like next-> & next++ at the begining of line */ @@ -840,14 +806,12 @@ Separator {SpaceTab} return IDENTIFIER; } {Separator}*[^_a-zA-Z] { /* there is no identifier after "next" */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; yylval.string = yy_strdup( "NEXT" ); unput( yytext[ yyleng-1 ] ); return IDENTIFIER; } {Separator}*. { /* an identifier follows NEXT statement */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; unput( yytext[ yyleng-1 ] ); if( _iState == LOOKUP ) @@ -867,7 +831,7 @@ Separator {SpaceTab} %{ /* ************************************************************************ */ %} -"nil" return NIL; +"nil" _iState =LITERAL; return NIL; "otherwise" return OTHERWISE; "parameters" _iState =PARAMETERS; return PARAMETERS; "private" _iState =PRIVATE; return PRIVATE; @@ -885,8 +849,6 @@ Separator {SpaceTab} %} "while" BEGIN WHILE_; {Separator}*\n { /* end of line */ - yy_lex_count_lf(); - --iLine; if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; unput( '\n' ); if( _iState == DO ) @@ -897,29 +859,24 @@ Separator {SpaceTab} return IDENTIFIER; } {Separator}*[\[] { /* array */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; /* Clipper does not like while[] at all */ GenError( ERR_SYNTAX, yytext, NULL ); } {Separator}*[\:\=\|\$\%\*\,\/\]\)\}\^] { /* there is an operator after "case" */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; yylval.string = yy_strdup( "WHILE" ); unput( yytext[ yyleng-1 ] ); return IDENTIFIER; } {Separator}*("+="|"-="|"->") { /* operators */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; yylval.string = yy_strdup( "WHILE" ); unput( yytext[ yyleng-1 ] ); unput( yytext[ yyleng-2 ] ); return IDENTIFIER; } -{Separator}*;.*\n yy_lex_count_lf(); /* ignore any text after ';' */ {Separator}*. { /* identifiers and literals */ - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; unput( yytext[ yyleng-1 ] ); if( _iState == LOOKUP || _iState == DO ) @@ -939,15 +896,12 @@ Separator {SpaceTab} %} "with" BEGIN WITH_; {Separator}*\n { /* at the end of line */ - yy_lex_count_lf(); - --iLine; if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; unput( '\n' ); yylval.string = yy_strdup( "WITH" ); return IDENTIFIER; } {Separator}*"with" { - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; yyless( yyleng-4 ); if( _iState == DO ) @@ -963,13 +917,10 @@ Separator {SpaceTab} } } {Separator}*[\[] { /* array */ - yy_lex_count_lf(); /* Clipper does not like with[] at all */ GenError( ERR_SYNTAX, yytext, NULL ); } -{Separator}*;.*\n yy_lex_count_lf(); /* ignore any text after ';' */ {Separator}*. { - yy_lex_count_lf(); if( i_INDEX_STATE ) BEGIN INDEX; else BEGIN 0; unput( yytext[ yyleng-1 ] ); if( _iState == WHILE || _iState == DO || _iState == IDENTIFIER ) diff --git a/harbour/tests/working/Makefile b/harbour/tests/working/Makefile index 8f9cb224d0..7396026cb9 100644 --- a/harbour/tests/working/Makefile +++ b/harbour/tests/working/Makefile @@ -4,6 +4,7 @@ ROOT = ../../ +ifeq ($(MAKECMDGOALS),) PRG_SOURCES=\ ainstest.prg \ and_or.prg \ @@ -109,11 +110,17 @@ PRG_SOURCES=\ version.prg \ while.prg \ +else +PRG_SOURCES:=$(MAKECMDGOALS) +endif + BAD_PRG_SOURCES=\ dupvars.prg \ keywords.prg \ spawn.prg \ spawn2.prg \ + keywords.prg \ + linecont.prg \ test10.prg \ testid.prg \ diff --git a/harbour/tests/broken/linecont.prg b/harbour/tests/working/linecont.prg similarity index 83% rename from harbour/tests/broken/linecont.prg rename to harbour/tests/working/linecont.prg index 7617d3e0c9..b9d98de10e 100644 --- a/harbour/tests/broken/linecont.prg +++ b/harbour/tests/working/linecont.prg @@ -64,12 +64,19 @@ b ; 1; ,; 2; -][ ; - 1 ] +]; +[ ; + 3 ] a :=TEST1(); TEST2() - a :=TEST1()+ ; TEST2() +// a :=TEST1()+ ; TEST2() //In Clipper: Incomplete statement ... + + a :=; +; /////// comment +; /* another comment */ +; + 55 RETURN nil