ChangeLog 2000-08-11 08-55 UTC+0100

This commit is contained in:
Ryszard Glab
2000-08-11 06:56:36 +00:00
parent 9e674b820d
commit f5a45f932b
2 changed files with 51 additions and 1 deletions

View File

@@ -1,3 +1,19 @@
2000-08-11 08:55 UTC+0100 Ryszard Glab <rglab@imid.med.pl>
*source/compiler/harbour.l
* added support for code generated by the preprocessed TEXT/ENDTEXT
NOTE: Since it is not implemented yet in harbour preprocessor
I have followed Clipper method here. Every line of TEXT/ENDTEXT
is preprocessed into
QOUT("...")<EndOfLine>
or
QOUT([...])<EndOfLine>
with no spaces. [] string delimiters are used if any combination
of "'[] are used inside a text.
Notice that during preprocessing of normal code when [] string
delimiters are used then Clipper uses the first closing ] character
as a string terminator.
2000-08-10 14:30 UTC-0400 David G. Holm <dholm@jsd-llc.com>
* source/rdd/dbcmd.c

View File

@@ -117,7 +117,7 @@ FalseValue "."[f|n]"."
Separator {SpaceTab}
%x STRING1 STRING2 STRING3
%x STRING1 STRING2 STRING3 STRING4START STRING4
%x NEXT_ BREAK_ CASE_ DO_ WHILE_ WITH_ END_ FIELD_
%x FOR_ FUNCTION_ IIF_ IF_ IN_ INIT_
%x RETURN_ RECOVER_
@@ -151,6 +151,25 @@ Separator {SpaceTab}
}
}
"QOUT([" {
/* preprocessed TEXT/ENDTEXT line
NOTE: Clipper preprocesses TEXT/ENDTEXT block into a series of QOUT calls
QOUT("...")<EndOfLine>
or
QOUT([...])<EndOfLine>
[] is used if text contains any string delimiters "'[]
NOTE: Clipper allows for [[nested]] only if it is preprocessed from
TEXT/ENDTEXT block - in normal code the preprocesor uses the first
closing ] as a string terminator.
*/
BEGIN STRING4START;
unput( '(' );
yylval.string = hb_compIdentifierNew( "QOUT", TRUE );
hb_comp_iState = IDENTIFIER;
return IDENTIFIER;
}
<STRING1>[^'\n]*\n { BEGIN 0;
unput( '\n' );
yytext[--yyleng] = '\0';
@@ -202,6 +221,21 @@ Separator {SpaceTab}
return LITERAL;
}
<STRING4START>\( { BEGIN STRING4; return( '(' ); }
<STRING4START>. { BEGIN 0; unput( yytext[ yyleng-1 ] ); }
<STRING4>.*\]\)\n { BEGIN 0;
unput( '\n' );
unput( ')' );
yyleng -= 3;
yytext[ yyleng ] = '\0';
yylval.string = hb_compIdentifierNew( yytext, TRUE );
hb_comp_iState = LITERAL;
return LITERAL;
}
<STRING4>. { BEGIN STRING3; unput( yytext[ yyleng-1 ] ); }
{SpaceTab} ;
\n {