ChangeLog 2001-05-03 19:35 UTC+0100

This commit is contained in:
Ryszard Glab
2001-05-03 17:21:12 +00:00
parent 15c9e85a2e
commit bfad60e180
3 changed files with 82 additions and 13 deletions

View File

@@ -1,3 +1,14 @@
2001-05-03 19:35 UTC+0100 Ryszard Glab <rglab@imid.med.pl>
*source/compiler/harbour.l
*fixed support for macro expressions
*tests/keywords.prg
*added some code to test compilation of macro expressions
*added HB_CLIPPER_COMPATIBLE to correctly report errors with
Harbour(flex)
2001-05-03 07:30 UTC-0800 Ron Pinkas <ron@profit-master.com>
* source/pp/ppcore.c
+ Added missing valid string prefix (|) in getExpReal()

View File

@@ -99,9 +99,14 @@ HexNumber 0x[0-9A-F]+
Identifier (([a-zA-Z])|([_a-zA-Z][_a-zA-Z0-9]+))
MacroVar \&{Identifier}[\.]?
MacroEnd \&{Identifier}\.({Identifier})|([0-9]+)
MacroId ({Identifier}\&(({Identifier}[\.]?)|({Identifier}\.({Identifier})|([0-9]+))))
MacroTxt ({MacroVar}|{MacroEnd}|{MacroId})+
MacroEnd \&{Identifier}\.([_a-zA-Z0-9]*)
%{
/*
MacroId ({Identifier}\&(({Identifier}[\.]?)|({Identifier}\.([_a-zA-Z0-9]*))))
*/
%}
MacroId ({Identifier}({MacroVar}|{MacroEnd}))
MacroTxt ([_]*({MacroVar}|{MacroEnd}|{MacroId}))+
TrueValue "."[t|y]"."
FalseValue "."[f|n]"."

View File

@@ -5,6 +5,14 @@
//DO NOT RUN THIS PROGRAM - ITS PURPOSE IS THE SYNTAX CHECK ONLY!
/* NOTE:
* Harbour compiled with the Flex version of lexical scanner is
* designed to stay Clipper compatible in keywords usage.
* Simplex version is extending their usage in some places.
* Use HB_CLIPPER_COMPATIBLE to check compilation in full compatibility mode
*/
//#define HB_CLIPPER_COMPATIBLE
#include "keywords.ch" //INCLUDE test
EXTERNAL __case, __begin
@@ -108,7 +116,9 @@ Local nExt, nExt7, nExtNEXT
//nExt[ nExt ] := next[ next ]
nExt :=next[ next ]
next->next :=next->next + next->next //NEXT does not match FOR
#ifndef HB_CLIPPER_COMPATIBLE
next->next :=next->next + next->next //NEXT does not match FOR in Clipper and Harbour(Flex)
#endif
next :=next->next
( next )->( next() )
@@ -239,8 +249,10 @@ case )
CASE 2+case
case =case +1
CASE case++
case-- //sorry -Clipper also doesn't compile this line - but SimpLex does
case++ //sorry -Clipper also doesn't compile this line - but SimpLex does
#ifndef HB_CLIPPER_COMPATIBLE
case-- //sorry -Clipper & Harbour(flex) doesn't compile this line - but SimpLex does
case++ //sorry -Clipper & harbour(flex) doesn't compile this line - but SimpLex does
#endif
( case++ )
( case-- )
CASE ++case
@@ -329,8 +341,10 @@ LOCAL with
ENDDO
while while
while++ //incomplete statement or unbalanced delimiter
while-- //incomplete statement or unbalanced delimiter
#ifndef HB_CLIPPER_COMPATIBLE
while++ //Clipper & harbour(flex) incomplete statement or unbalanced delimiter
while-- //Clipper & harbour(flex) incomplete statement or unbalanced delimiter
#endif
( while++ )
( while-- )
--while
@@ -425,13 +439,17 @@ LOCAL end, while
( end-- )
end :=end++
end->end +=1 //in Clipper; ENDIF does not match IF
#ifndef HB_CLIPPER_COMPATIBLE
end->end +=1 //in Clipper & Harbour(flex): ENDIF does not match IF
#endif
end :=end->end
DO end WITH end
DO end WITH end++
end->( end() ) //in Clipper: ENDIF does not match IF
#ifndef HB_CLIPPER_COMPATIBLE
end->( end() ) //in Clipper & harbour(flex): ENDIF does not match IF
#endif
( end )->( end() )
DO WHILE !end
@@ -582,9 +600,11 @@ FUNCTION FOR( for )
for[ for ] :=for
for[ for ][ for ] :=for [ for ]
for( for( for ) ) //incomplete statement or unbalanced delimiters
for( 0 ) //incomplete statement or unbalanced delimiters
#ifndef HB_CLIPPER_COMPATIBLE
for( for( for ) ) //in Clipper: incomplete statement or unbalanced delimiters
for( 0 ) //in Clipper: incomplete statement or unbalanced delimiters
for() //syntax error ')'
#endif
for :=for()
for :=for( for( for ) )
@@ -634,7 +654,7 @@ FIELD field IN field
EVAL( {|in| in}, in )
DO in
DO in WITH in //field cannot be passed be a reference
DO in WITH in //field cannot be passed by a reference
RETURN in
@@ -877,8 +897,10 @@ PRIVATE &return
return -1
return+2
return +2
#ifndef HB_CLIPPER_COMPATIBLE
return++ //Clipper fails on this
return-- //Clipper fails on this
#endif
( return++ )
( return-- )
++return
@@ -990,3 +1012,34 @@ PRIVATE &OTHERWISE
RETURN( OTHERWISE ) +2
/* Testing macro compilation */
PROCEDURE MACRO()
MEMVAR s
PRIVATE s
s = &s
s = &s.
s = &s.1
s = &s.123
s = &s._
s = &s._____
s = &s._1
s = &s.1_bo
s = _&s
s = _&s.
s = _&s.1
s = _&s.123
s = _&s._
s = _&s._____
s = _&s._1
s = _&s.1_bo
s = x_&s
s = x_&s_1
s = x_&s._1
s = x_&s._123
s = x_&s.123
s = x_&s.2_
s = x_&s.2_x
RETURN